@meltemi/diagrams-player 1.9.0 → 1.10.17

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.
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
@@ -454,6 +454,8 @@ function phrase(doc, view, action, locale) {
454
454
  const ends = doc.views[view]?.ends[id];
455
455
  return t.trace(name(id), ends ? [name(ends[0]), name(ends[1])] : null, time);
456
456
  }
457
+ case "draw":
458
+ return t.draw(targets, time);
457
459
  case "hold":
458
460
  return t.hold(time);
459
461
  case "parallel":
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
@@ -126,6 +126,8 @@ export declare const en: {
126
126
  frameAll: string;
127
127
  /** A trace along a relation, from one end to the other when the view knows them. */
128
128
  trace: (relation: string, ends: readonly [string, string] | null, time: string) => string;
129
+ /** `draw`: strokes, lines and relations drawn one after another from their first point. */
130
+ draw: (targets: string, time: string) => string;
129
131
  hold: (time: string) => string;
130
132
  /** Actions that start together, already joined with semicolons. */
131
133
  parallel: (actions: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/messages/en.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,EAAE;IACb,+EAA+E;;QAE7E,yCAAyC;;;;QAIzC,iEAAiE;2BAC9C,MAAM;;;;;QAKzB,uBAAuB;;QAEvB,wBAAwB;;;;QAIxB,qEAAqE;yBACpD,MAAM,YAAY,MAAM;QACzC,2CAA2C;;;;;;;;;QAS3C,gFAAgF;6BAC3D,MAAM;;IAE7B,sEAAsE;;;mBAGzD,MAAM;wBACD,MAAM;;IAExB,wCAAwC;;QAEtC,0CAA0C;wBAC1B,MAAM;;;;;;;;;;;;;;;;QAgBtB,6EAA6E;uBAC9D,MAAM;QACrB,gEAAgE;uBACjD,MAAM;;;QAIrB,sEAAsE;qBACzD,MAAM;;QAEnB,uEAAuE;sBACzD,MAAM;QACpB,mDAAmD;;;IAGrD,4CAA4C;;QAE1C,oEAAoE;uBACrD,MAAM;QACrB,sEAAsE;yBACrD,MAAM;QACvB,kFAAkF;mBACvE,MAAM,SAAS,MAAM,MAAM,MAAM,SAAS,MAAM,GAAG,IAAI;QAElE,4EAA4E;;QAE5E,+EAA+E;6BAC1D,MAAM;QAC3B,oEAAoE;;QAEpE,+CAA+C;wBAC/B,MAAM;QACtB,2CAA2C;0BACzB,MAAM;QACxB,wDAAwD;0BACtC,MAAM;;QAExB,4DAA4D;yBAC3C,MAAM,QAAQ,MAAM,GAAG,IAAI;QAC5C,2DAA2D;yBAC1C,MAAM,MAAM,MAAM;QACnC,+CAA+C;uBAChC,MAAM;QACrB,yCAAyC;uBAC1B,MAAM;;IAEvB,4FAA4F;;QAE1F,2BAA2B;;QAE3B,6DAA6D;mBAClD,MAAM,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM;QAE3D,gEAAgE;sBAClD,SAAS,MAAM,EAAE;QAI/B,sFAAsF;2BACnE,KAAK,GAAG,MAAM,GAAG,OAAO,QAAQ,MAAM,QAAQ,MAAM,GAAG,IAAI;0BAI5D,MAAM,QAAQ,MAAM;wBACtB,MAAM,QAAQ,MAAM;6BACf,MAAM,QAAQ,MAAM;yBACxB,MAAM;QACvB,mBAAmB;;QAEnB,oCAAoC;yBACnB,MAAM;QACvB,oBAAoB;;QAEpB,oFAAoF;0BAClE,MAAM,QAAQ,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,QAAQ,MAAM;qBAEjE,MAAM;QACnB,mEAAmE;4BAC/C,MAAM;;IAE5B,+CAA+C;;;uBAG9B,MAAM;uBACN,MAAM;wBACL,MAAM;wBACN,MAAM;QACtB,kDAAkD;;QAElD,4CAA4C;mBACjC,MAAM;QACjB;;;WAGG;sBACW,MAAM,SAAS,MAAM,UAAU,MAAM,SAAS,MAAM,GAAG,IAAI;;CAG5E,CAAC"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/messages/en.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,EAAE;IACb,+EAA+E;;QAE7E,yCAAyC;;;;QAIzC,iEAAiE;2BAC9C,MAAM;;;;;QAKzB,uBAAuB;;QAEvB,wBAAwB;;;;QAIxB,qEAAqE;yBACpD,MAAM,YAAY,MAAM;QACzC,2CAA2C;;;;;;;;;QAS3C,gFAAgF;6BAC3D,MAAM;;IAE7B,sEAAsE;;;mBAGzD,MAAM;wBACD,MAAM;;IAExB,wCAAwC;;QAEtC,0CAA0C;wBAC1B,MAAM;;;;;;;;;;;;;;;;QAgBtB,6EAA6E;uBAC9D,MAAM;QACrB,gEAAgE;uBACjD,MAAM;;;QAIrB,sEAAsE;qBACzD,MAAM;;QAEnB,uEAAuE;sBACzD,MAAM;QACpB,mDAAmD;;;IAGrD,4CAA4C;;QAE1C,oEAAoE;uBACrD,MAAM;QACrB,sEAAsE;yBACrD,MAAM;QACvB,kFAAkF;mBACvE,MAAM,SAAS,MAAM,MAAM,MAAM,SAAS,MAAM,GAAG,IAAI;QAElE,4EAA4E;;QAE5E,+EAA+E;6BAC1D,MAAM;QAC3B,oEAAoE;;QAEpE,+CAA+C;wBAC/B,MAAM;QACtB,2CAA2C;0BACzB,MAAM;QACxB,wDAAwD;0BACtC,MAAM;;QAExB,4DAA4D;yBAC3C,MAAM,QAAQ,MAAM,GAAG,IAAI;QAC5C,2DAA2D;yBAC1C,MAAM,MAAM,MAAM;QACnC,+CAA+C;uBAChC,MAAM;QACrB,yCAAyC;uBAC1B,MAAM;;IAEvB,4FAA4F;;QAE1F,2BAA2B;;QAE3B,6DAA6D;mBAClD,MAAM,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM;QAE3D,gEAAgE;sBAClD,SAAS,MAAM,EAAE;QAI/B,sFAAsF;2BACnE,KAAK,GAAG,MAAM,GAAG,OAAO,QAAQ,MAAM,QAAQ,MAAM,GAAG,IAAI;0BAI5D,MAAM,QAAQ,MAAM;wBACtB,MAAM,QAAQ,MAAM;6BACf,MAAM,QAAQ,MAAM;yBACxB,MAAM;QACvB,mBAAmB;;QAEnB,oCAAoC;yBACnB,MAAM;QACvB,oBAAoB;;QAEpB,oFAAoF;0BAClE,MAAM,QAAQ,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,QAAQ,MAAM;QAE9E,2FAA2F;wBAC3E,MAAM,QAAQ,MAAM;qBACvB,MAAM;QACnB,mEAAmE;4BAC/C,MAAM;;IAE5B,+CAA+C;;;uBAG9B,MAAM;uBACN,MAAM;wBACL,MAAM;wBACN,MAAM;QACtB,kDAAkD;;QAElD,4CAA4C;mBACjC,MAAM;QACjB;;;WAGG;sBACW,MAAM,SAAS,MAAM,UAAU,MAAM,SAAS,MAAM,GAAG,IAAI;;CAG5E,CAAC"}
@@ -132,6 +132,8 @@ export const en = {
132
132
  frameAll: "Frame the whole view",
133
133
  /** A trace along a relation, from one end to the other when the view knows them. */
134
134
  trace: (relation, ends, time) => `Trace “${relation}”${ends ? ` from ${ends[0]} to ${ends[1]}` : ""} over ${time}`,
135
+ /** `draw`: strokes, lines and relations drawn one after another from their first point. */
136
+ draw: (targets, time) => `Draw ${targets} stroke by stroke over ${time}`,
135
137
  hold: (time) => `Hold ${time}`,
136
138
  /** Actions that start together, already joined with semicolons. */
137
139
  parallel: (actions) => `At the same time: ${actions}`,
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/messages/en.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/messages/en.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/messages/es.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,qCAAqC;AACrC,eAAO,MAAM,EAAE,EAAE,OAAO,EA0GvB,CAAC"}
1
+ {"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/messages/es.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,qCAAqC;AACrC,eAAO,MAAM,EAAE,EAAE,OAAO,EA2GvB,CAAC"}
@@ -88,6 +88,7 @@ export const es = {
88
88
  frame: (targets) => `Encuadrar ${targets}`,
89
89
  frameAll: "Encuadrar toda la vista",
90
90
  trace: (relation, ends, time) => `Recorrer “${relation}”${ends ? ` de ${ends[0]} a ${ends[1]}` : ""} en ${time}`,
91
+ draw: (targets, time) => `Dibujar ${targets} trazo a trazo en ${time}`,
91
92
  hold: (time) => `Esperar ${time}`,
92
93
  parallel: (actions) => `Al mismo tiempo: ${actions}`,
93
94
  },
@@ -1 +1 @@
1
- {"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/messages/es.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/messages/es.ts"],"names":[],"mappings":"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"}
@@ -87,6 +87,7 @@ export declare const messages: (locale?: import("@meltemi/diagrams-i18n").Locale
87
87
  frame: (targets: string) => string;
88
88
  frameAll: string;
89
89
  trace: (relation: string, ends: readonly [string, string] | null, time: string) => string;
90
+ draw: (targets: string, time: string) => string;
90
91
  hold: (time: string) => string;
91
92
  parallel: (actions: string) => string;
92
93
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAkB,CAAC"}
package/dist/player.js CHANGED
@@ -1,8 +1,9 @@
1
- "use strict";(()=>{function Kn(e){return e&&e.trim().toLowerCase().split(/[-_.@]/)[0]==="es"?"es":"en"}var So="en";function de(e,t){return(n=So)=>n==="es"?t:e}var Fn=new Map;function ce(e,t,n){let i=Fn.get(e);return i||(i=new Intl.PluralRules(e),Fn.set(e,i)),i.select(t)==="one"?n.one:n.other}function Q(e,t,n="conjunction"){return new Intl.ListFormat(e,{style:"long",type:n}).format(t)}function zn(e,t,n=1){return new Intl.NumberFormat(e,{maximumFractionDigits:n,useGrouping:!1}).format(t)}function _t(e,t){return new Intl.NumberFormat(e,{style:"percent",maximumFractionDigits:0}).format(t)}var Ut=["LR","RL","TB","BT"],st=["auto","assisted","manual"],ze=["north","south","east","west","auto"],qn=["flow","pulse","dash","trace"],$o=["forward","reverse"];var ge={minDuration:100,maxDuration:6e4,maxDelay:6e4,maxRepeat:1e3,maxParticles:8};var jt=["node","decision","data","group","note","tag"],qt=["box","text","icon","image","group"],at=["participant","actor","boundary","control","entity","database","collections","queue"],_n=[...at,"group"],lt=["person","system","container","datastore","component"],Eo=[...lt,"group"];var Vn=["context","container","component"];var Un=[...jt,"box","text","icon","image",...at,...lt],Ht=["alt","opt","loop","par","break","critical","region"];var To=["activate","deactivate","create","destroy","note",...Ht,"divider","delay"];var Hn=["solid","dashed","dotted"],Jt=["flow","sequence","c4","free"],Ro=["sync","async"],Jn=["none","hatch","dots","cross"],rt=["triangle","open","none","triangleOutline","diamond","diamondOutline","circle","circleOutline","bar","cross","many","oneOrMany","onlyOne","zeroOrOne","zeroOrMany"],Wt=["sharp","rounded"],Mo=[...Un,"relation","fragment"],Wn=["document","slide"],Gt=["left","right","top","bottom","center"],Gn=["top","bottom","left","right"],Yn={min:8,max:128},Yt=["auto","orthogonal","polyline","bezier"];var Qt=["align","row","column","order","distance"],Qn=["rounded","rectangle","square","ellipse","circle","diamond","cylinder","pill","triangle","parallelogram","trapezoid","pentagon","hexagon","octagon","star","cloud","document","callout","arrow","framed","flag","person","agent","icon"];var Ao={min:0,max:360};var Zn=["left","center","right"],Xn=[400,500,600,700];var Lo=["none","footer","header"],Io=["meltemi","none"];var Ae=["background","surface","ink","muted","line","connector","band","bandLine","tag","tagText","accent","accentEnd","success","warning","danger","info"],Do=["selection","guide"],he={kind:"number",min:6,max:48},ot={kind:"number",min:0,max:200},Vt={kind:"number",min:0,max:64},jn={kind:"number",min:0,max:8},Po={labelSize:he,descriptionSize:he,groupTitleSize:he,noteSize:he,tagSize:he,relationLabelSize:he,frameSize:he,labelWeight:{kind:"number",min:400,max:700,values:[400,500,600,700]},padding:ot,groupPadding:ot,groupHeader:ot,margin:ot,radius:Vt,groupRadius:Vt,strokeWidth:jn,connectorWidth:jn,arrowSize:{kind:"number",min:0,max:32},iconSize:{kind:"number",min:8,max:64}},ei={flow:"flowDuration",dash:"dashDuration",pulse:"pulseDuration",trace:"traceDuration"},Bo={extends:{kind:"string"},...Object.fromEntries(Ae.map(e=>[e,{kind:"color"}])),...Object.fromEntries(Do.map(e=>[e,{kind:"color"}])),font:{kind:"string"},mono:{kind:"string"},...Po,arrowhead:{kind:"enum",values:rt},corners:{kind:"enum",values:Wt},iconPosition:{kind:"enum",values:Gt},frame:{kind:"enum",values:Lo},brand:{kind:"string"},mark:{kind:"enum",values:Io},...Object.fromEntries(Object.values(ei).map(e=>[e,{kind:"time",min:ge.minDuration,max:ge.maxDuration}]))},ti={fontSize:{kind:"number",min:6,max:160},fontWeight:{kind:"number",min:400,max:700,values:Xn},textAlign:{kind:"enum",values:Zn}},Le={icon:{kind:"icon"},fill:{kind:"color",tokens:!0},stroke:{kind:"color",tokens:!0},color:{kind:"color",tokens:!0},line:{kind:"enum",values:Hn},width:{kind:"number",min:0,max:16},pattern:{kind:"enum",values:Jn},arrowhead:{kind:"enum",values:rt},arrowtail:{kind:"enum",values:rt},iconColor:{kind:"color",tokens:!0},iconPosition:{kind:"enum",values:Gt},labelPosition:{kind:"enum",values:Gn},iconSize:{kind:"keywordOrNumber",keywords:["auto"],...Yn},routing:{kind:"enum",values:Yt},corners:{kind:"enum",values:Wt},shape:{kind:"enum",values:Qn},radius:Vt,rotation:{kind:"number",...Ao},...ti},ni=["pattern","iconPosition","labelPosition","iconSize","shape","radius","rotation",...Object.keys(ti)];var Zt={direction:{kind:"enum",values:Ut,default:"LR"},layout:{kind:"enum",values:st,default:"auto"},theme:{kind:"string"},title:{kind:"string"},description:{kind:"string"},preset:{kind:"enum",values:Wn},canvas:{kind:"size",min:100,max:1e4},routing:{kind:"enum",values:Yt,default:"auto"}},dt={effect:{kind:"enum",values:qn},duration:{kind:"time",min:ge.minDuration,max:ge.maxDuration},repeat:{kind:"repeat",max:ge.maxRepeat},delay:{kind:"time",min:0,max:ge.maxDelay},direction:{kind:"enum",values:$o},particles:{kind:"number",min:1,max:ge.maxParticles,values:[1,2,3,4,5,6,7,8]},color:{kind:"color",tokens:!0}},Oo={name:"flow",status:"compiled",diagramProperties:{...Zt,layers:{kind:"names"}},elementKinds:jt,shorthand:{box:"node",data:"data"},implicitKind:"node",elementProperties:{description:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"},link:{kind:"link"},url:{kind:"url"}},groupProperties:{description:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"},link:{kind:"link"},url:{kind:"url"}},relationProperties:{description:{kind:"string"},layer:{kind:"name"},assumption:{kind:"string"},class:{kind:"classes"}},arrows:{"->":"solid","-->":"dashed","<->":"solid","<-->":"dashed"},diagramBlocks:["placement","style","animate","class","rule"],placementStatements:["place","size","route","label",...Qt],ports:ze,styleProperties:{...Le,class:{kind:"classes"}},animateProperties:dt,ruleKinds:[...jt,"relation"],events:[]},ii={name:"free",status:"compiled",diagramProperties:{...Zt,layout:{kind:"enum",values:st,default:"manual"},layers:{kind:"names"}},elementKinds:qt,shorthand:{box:"box",data:"box"},implicitKind:"box",elementProperties:{description:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"},link:{kind:"link"},url:{kind:"url"}},groupProperties:{description:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"},link:{kind:"link"},url:{kind:"url"}},relationProperties:{description:{kind:"string"},assumption:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"}},arrows:{"->":"solid","-->":"dashed","<->":"solid","<-->":"dashed"},diagramBlocks:["placement","style","animate","class","rule"],placementStatements:["place","size","route","label",...Qt],ports:ze,styleProperties:{...Le,class:{kind:"classes"}},animateProperties:dt,ruleKinds:[...qt,"relation"],events:[]},oi={name:"sequence",status:"compiled",diagramProperties:{theme:{kind:"string"},title:{kind:"string"},description:{kind:"string"},preset:{kind:"enum",values:Wn},canvas:{kind:"size",min:100,max:1e4},autonumber:{kind:"number",min:0,max:1e5}},elementKinds:_n,shorthand:{box:"participant",data:"database"},implicitKind:"participant",elementProperties:{description:{kind:"string"},class:{kind:"classes"},link:{kind:"link"},url:{kind:"url"}},groupProperties:{description:{kind:"string"},class:{kind:"classes"},link:{kind:"link"},url:{kind:"url"}},relationProperties:{description:{kind:"string"},assumption:{kind:"string"},class:{kind:"classes"},kind:{kind:"enum",values:Ro}},arrows:{"->":"solid","-->":"dashed","<->":"solid","<-->":"dashed"},diagramBlocks:["placement","style","animate","class","rule","scenario"],placementStatements:["space","gap","label"],ports:[],styleProperties:{...Le,class:{kind:"classes"}},animateProperties:dt,ruleKinds:[..._n,"relation","note","fragment"],events:To},Co={name:"c4",status:"compiled",diagramProperties:{...Zt,level:{kind:"enum",values:Vn},scope:{kind:"name"}},elementKinds:[],shorthand:{box:"container",data:"datastore"},implicitKind:"container",elementProperties:{},groupProperties:{},relationProperties:{description:{kind:"string"},technology:{kind:"string"},assumption:{kind:"string"}},arrows:{"->":"solid","-->":"dashed"},diagramBlocks:["placement","style","animate","class","rule"],placementStatements:["place","size","route","label",...Qt],ports:ze,styleProperties:{...Le,class:{kind:"classes"}},animateProperties:dt,ruleKinds:[...Eo,"relation"],events:[]};var ye=e=>`\`${e}\``,ri={diagnostics:{bom:"The file starts with a byte order mark; it is kept as is.",unterminatedComment:"Block comment is not closed with `*/` before the end of the file.",mixedLineEndings:(e,t)=>`This line ends with ${e} but the file started with ${t}.`,invalidEscape:e=>`Unknown escape sequence ${ye(e)} in string.`,unterminatedString:'String is not closed with `"` before the end of the line.',unexpectedCharacter:e=>`Unexpected character ${ye(e)}.`,unexpectedCharacters:e=>`Unexpected characters ${ye(e)}.`,expectedToken:(e,t)=>`Expected ${e} but found ${t}.`,unclosedBlock:e=>`Expected \`}\` to close the block opened on line ${e} but found end of file.`,expectedEndOfStatement:e=>`Unexpected ${e}; expected the end of the statement.`,unexpectedAtStatementStart:e=>`Unexpected ${e} at the start of a statement.`,chainedRelations:"Chained relations are not supported; write one relation per statement.",unexpectedTopLevel:e=>`Unexpected ${e} at the top level of the file.`,headerNotFirst:"The `language` header must be the first statement of the file.",nestingTooDeep:e=>`Blocks, tuples and lists are nested more than ${e} levels deep.`,invalidIndent:e=>`Indentation must be 1 to 8 spaces or "tab", not ${e}.`},expected:{versionString:'a version string such as `"0.2"` after `language`',namespaceAfterAs:"a namespace after `as`",asAndNamespace:"`as` and a namespace after the path",aliasAfterAs:"an alias after `as`",idAfterComma:"an id to import after `,`",pathOrIds:"a path string or the ids to import after `import`",pathAfterFrom:"a path string after `from`",fromAndPath:"`from` and a path after the imported ids",openBody:e=>`\`{\` to open the ${e} body`,diagramId:"a diagram id after `diagram`",colonAfterId:"`:` after the diagram id",diagramType:"a diagram type (`flow`, `sequence`, `c4` or `free`)",modelReference:"a model reference after `using`",idAfter:e=>`an id after ${ye(e)}`,forAndTarget:"`for` followed by the target",targetAfterFor:"a target after `for`",arrowAfter:e=>`an arrow (\`->\`, \`-->\`, \`<->\` or \`<-->\`) after ${ye(e)}`,identifierAfterDot:"an identifier after `.`",relationTarget:e=>`a relation target after ${ye(e)}`,labelAfterColon:"a label string after `:`",relationId:"a relation id after `as`",labelString:"a label string",blockAfter:e=>`\`{\` after ${ye(e)}`},tokens:{endOfLine:"end of line",endOfFile:"end of file",string:e=>`string ${e}`},hints:{bom:"UTF-8 without a byte order mark is the canonical encoding.",lineEndings:"Use one line ending style per file; edits follow the first one.",escapes:'Supported escapes are \\", \\\\, \\n and \\t.',multilineString:"Strings cannot span lines; use \\n for a line break inside a label.",arrows:"The supported arrows are `->`, `-->`, `<->` and `<-->`.",identifiers:"Identifiers use ASCII letters, digits and `_`; put other text in a quoted label.",minus:"A minus sign must be followed by a digit or `>`.",separateStatements:"Separate statements with a line break or `;`.",topLevel:"Top-level statements are `language`, `import`, `model`, `diagram`, `story`, `export` and `theme`.",insideDiagram:"Elements and relations belong inside a `diagram <id>: flow { ... }` block.",headerFirst:"Move it above every `import` and every block.",importNamespace:'Write `import "<path>" as <namespace>`.',importMembers:'Write `import <id>, <id> as <alias> from "<path>"`.',diagramShape:"Write `diagram <id>: <type> { ... }`, for example `diagram checkout: flow { ... }`.",targetedShape:e=>`Write \`${e} <id> for <target> { ... }\`.`,labelledElement:'Declare a labelled element with `id["Label"]`.',blockAfterWord:"A block must follow a statement word, for example `placement { ... }`.",quotedRelationLabel:'Labels are quoted: `a -> b: "Label"`.',quotedShorthandLabel:'Labels are quoted: `id["Label"]` or `id[("Label")]`.'},related:{blockOpened:"Block opened here."}};var ue=e=>`\`${e}\``,si={diagram:"del diagrama",model:"del modelo",theme:"del tema",story:"de la historia",export:"del perfil de exportaci\xF3n"},ai={diagnostics:{bom:"El archivo empieza con una marca de orden de bytes; se conserva tal cual.",unterminatedComment:"El comentario de bloque no se cierra con `*/` antes del final del archivo.",mixedLineEndings:(e,t)=>`Esta l\xEDnea termina con ${e}, pero el archivo empez\xF3 con ${t}.`,invalidEscape:e=>`Secuencia de escape desconocida ${ue(e)} en la cadena.`,unterminatedString:'La cadena no se cierra con `"` antes del final de la l\xEDnea.',unexpectedCharacter:e=>`Car\xE1cter inesperado ${ue(e)}.`,unexpectedCharacters:e=>`Caracteres inesperados ${ue(e)}.`,expectedToken:(e,t)=>`Se esperaba ${e}, pero se encontr\xF3 ${t}.`,unclosedBlock:e=>`Se esperaba \`}\` para cerrar el bloque abierto en la l\xEDnea ${e}, pero se encontr\xF3 el final del archivo.`,expectedEndOfStatement:e=>`No se esperaba ${e}; se esperaba el final de la instrucci\xF3n.`,unexpectedAtStatementStart:e=>`No se esperaba ${e} al comienzo de una instrucci\xF3n.`,chainedRelations:"Las relaciones encadenadas no se admiten; escribe una relaci\xF3n por instrucci\xF3n.",unexpectedTopLevel:e=>`No se esperaba ${e} en el nivel superior del archivo.`,headerNotFirst:"El encabezado `language` debe ser la primera instrucci\xF3n del archivo.",nestingTooDeep:e=>`Los bloques, las tuplas y las listas est\xE1n anidados en m\xE1s de ${e} niveles.`,invalidIndent:e=>`La sangr\xEDa debe ser de 1 a 8 espacios o "tab", no ${e}.`},expected:{versionString:'una cadena de versi\xF3n como `"0.2"` despu\xE9s de `language`',namespaceAfterAs:"un espacio de nombres despu\xE9s de `as`",asAndNamespace:"`as` y un espacio de nombres despu\xE9s de la ruta",aliasAfterAs:"un alias despu\xE9s de `as`",idAfterComma:"un id que importar despu\xE9s de `,`",pathOrIds:"una cadena con la ruta o los ids que importar despu\xE9s de `import`",pathAfterFrom:"una cadena con la ruta despu\xE9s de `from`",fromAndPath:"`from` y una ruta despu\xE9s de los ids importados",openBody:e=>`\`{\` para abrir el cuerpo ${Object.hasOwn(si,e)?si[e]:`de ${ue(e)}`}`,diagramId:"un id de diagrama despu\xE9s de `diagram`",colonAfterId:"`:` despu\xE9s del id del diagrama",diagramType:"un tipo de diagrama (`flow`, `sequence`, `c4` o `free`)",modelReference:"una referencia a un modelo despu\xE9s de `using`",idAfter:e=>`un id despu\xE9s de ${ue(e)}`,forAndTarget:"`for` seguido del destino",targetAfterFor:"un destino despu\xE9s de `for`",arrowAfter:e=>`una flecha (\`->\`, \`-->\`, \`<->\` o \`<-->\`) despu\xE9s de ${ue(e)}`,identifierAfterDot:"un identificador despu\xE9s de `.`",relationTarget:e=>`un destino de relaci\xF3n despu\xE9s de ${ue(e)}`,labelAfterColon:"una cadena de etiqueta despu\xE9s de `:`",relationId:"un id de relaci\xF3n despu\xE9s de `as`",labelString:"una cadena de etiqueta",blockAfter:e=>`\`{\` despu\xE9s de ${ue(e)}`},tokens:{endOfLine:"el final de la l\xEDnea",endOfFile:"el final del archivo",string:e=>`la cadena ${e}`},hints:{bom:"La codificaci\xF3n can\xF3nica es UTF-8 sin marca de orden de bytes.",lineEndings:"Usa un solo estilo de fin de l\xEDnea por archivo; las ediciones siguen el primero.",escapes:'Las secuencias de escape admitidas son \\", \\\\, \\n y \\t.',multilineString:"Las cadenas no pueden ocupar varias l\xEDneas; usa \\n para un salto de l\xEDnea dentro de una etiqueta.",arrows:"Las flechas admitidas son `->`, `-->`, `<->` y `<-->`.",identifiers:"Los identificadores usan letras ASCII, d\xEDgitos y `_`; escribe otros textos en una etiqueta entre comillas.",minus:"Un signo menos debe ir seguido de un d\xEDgito o de `>`.",separateStatements:"Separa las instrucciones con un salto de l\xEDnea o `;`.",topLevel:"Las instrucciones de nivel superior son `language`, `import`, `model`, `diagram`, `story`, `export` y `theme`.",insideDiagram:"Los elementos y las relaciones van dentro de un bloque `diagram <id>: flow { ... }`.",headerFirst:"Mu\xE9velo por encima de cada `import` y de cada bloque.",importNamespace:'Escribe `import "<path>" as <namespace>`.',importMembers:'Escribe `import <id>, <id> as <alias> from "<path>"`.',diagramShape:"Escribe `diagram <id>: <type> { ... }`, por ejemplo `diagram checkout: flow { ... }`.",targetedShape:e=>`Escribe \`${e} <id> for <target> { ... }\`.`,labelledElement:'Declara un elemento con etiqueta con `id["Label"]`.',blockAfterWord:"Un bloque debe seguir a una palabra de instrucci\xF3n, por ejemplo `placement { ... }`.",quotedRelationLabel:'Las etiquetas van entre comillas: `a -> b: "Label"`.',quotedShorthandLabel:'Las etiquetas van entre comillas: `id["Label"]` o `id[("Label")]`.'},related:{blockOpened:"El bloque se abri\xF3 aqu\xED."}};var ct=de(ri,ai);var U=e=>`\`${e}\``,di=e=>`${/^[aeiou]/i.test(e)?"an":"a"} ${e}`,Ko={person:"at the model's root",system:"at the model's root",container:"in a system",datastore:"in a system",component:"in a container"},ui={words:{tuple:"a tuple",list:"a list",spec:{oneOf:e=>`one of ${e.join(", ")}`,string:"a quoted string",color:"a quoted color",colorOrToken:"a quoted color or a color token",icon:'an icon such as "tabler:server"',timeRange:(e,t)=>`a time from ${e} ms to ${t!==void 0?`${t/1e3} s`:"any length"}, such as \`1200ms\``,time:"a time such as `1200ms`",repeatUpTo:e=>`\`forever\` or a whole number from 1 to ${e}`,repeat:"`forever` or a positive whole number",keywordOrNumber:(e,t,n)=>`${e.map(U).join(", ")} or a number from ${t} to ${n}`,numberRange:(e,t)=>`a number from ${e} to ${t}`,size:(e,t)=>`\`(width, height)\` with numbers from ${e} to ${t}`,classes:"one or more class ids",name:"a name",names:"one or more names",link:"a reference `<diagram>.<element>`",url:'a quoted URL such as "https://example.com"'},noteForm:'`note [<id>] over <p>[, <p>] "Text"`, `note [<id>] left of <p> "Text"` or `note [<id>] right of <p> "Text"`',chooseForm:'`choose <fragment> "<condition>"` or `choose <fragment> <n>`'},diagnostics:{common:{expected:e=>`Expected ${e}.`,singleBlock:e=>`\`${e}\` takes a single block.`,needsOneBlock:(e,t)=>`\`${e}\` needs one block: ${t}.`,takesNoBlock:e=>`\`${e}\` takes no block.`,takesNoBlockExpected:(e,t)=>`\`${e}\` takes no block; expected ${t}.`,doesNotTakeBlock:e=>`\`${e}\` does not take a block.`,takesNoValue:e=>`\`${e}\` takes no value.`,expectsString:e=>`\`${e}\` expects a quoted string.`,setMoreThanOnce:e=>`\`${e}\` is set more than once.`,unknownElement:e=>`Unknown element \`${e}\`.`,unknownEntity:(e,t)=>`Unknown entity \`${e}\` in the model \`${t}\`.`,unknownPort:(e,t)=>`\`${e}\` has no port \`${t}\`.`},compile:{duplicateTopLevelId:e=>`\`${e}\` is already used by another top-level block in this file.`,unsupportedVersion:(e,t)=>`Language version "${e}" is not supported; this compiler implements ${t}.`,unknownDiagramType:(e,t)=>`Unknown diagram type \`${e}\`; expected one of ${t.join(", ")}.`,viewWithoutModel:"A c4 view names its model: `diagram <id>: c4 using <model> { }`.",unknownModel:e=>`Unknown model \`${e}\`.`,tooComplex:(e,t,n,i)=>`\`${e}\` has ${t} ${n}; a diagram may have at most ${i}.`,tooLarge:(e,t)=>`The file has ${e} characters; a .meltemi file may have at most ${t}.`,linkNamesModel:e=>`\`${e}\` names a model; a link names one of its entities, such as \`link ${e}.<entity>\`.`,linkUnknownEntity:(e,t)=>`The model \`${e}\` has no entity \`${t}\`.`,linkDiagramShape:e=>`A link to a diagram names one element: \`link ${e}.<element>\`.`,linkToItself:e=>`\`${e}\` points to this diagram; links point to elements of other diagrams.`,linkUnknownElement:(e,t)=>`\`${e}\` has no element \`${t}\`.`,linkNamespace:e=>`\`${e}\` is a namespace; write \`link ${e}.<diagram>.<element>\` or \`link ${e}.<model>.<entity>\`.`,linkUnknownTarget:(e,t)=>`Unknown diagram or model \`${e}\` in the link \`${t}\`.`},flow:{missingProperty:(e,t,n)=>`${e} \`${t}\` needs \`${n}\`.`,relationNotAllowed:(e,t,n)=>`${e} diagrams do not allow relations from \`${t}\` to \`${n}\`.`,imageEmpty:"An image path cannot be empty.",imageAbsolute:e=>`Image paths are relative to the file; \`${e}\` is absolute.`,imageUrl:e=>`Image paths are files of the project; \`${e}\` is a URL.`,imageBackslash:e=>`Image paths use \`/\` between folders: \`${e}\`.`,unknownInGroup:e=>`Unknown statement \`${e}\` in a group.`,unknownInDiagram:(e,t)=>`Unknown statement \`${e}\` in a ${t} diagram.`,quotedSource:(e,t)=>`The ${e} of \`${t}\` must be a quoted string.`,needsSource:(e,t,n)=>`\`${e} ${t}\` needs ${e==="text"?"its text":e==="icon"?"an icon":"an image path"}; expected ${n}.`,valueAfter:(e,t)=>`Unexpected value after the ${e}; expected ${t}.`,duplicateElement:e=>`\`${e}\` is already declared in this diagram.`,builtInPort:e=>`\`${e}\` is a built-in port; name the port differently.`,portSide:(e,t)=>`The side of port \`${e}\` must be one of ${t.join(", ")}.`,portPosition:"The position of a port is a percentage from 0% to 100%.",unexpectedValue:e=>`Unexpected value; expected ${e}.`,duplicatePort:e=>`Port \`${e}\` is already declared here.`,setTwiceInGroup:e=>`\`${e}\` is set twice for this group.`,relationIdUsedByElement:e=>`\`${e}\` is already used by an element in this diagram.`,relationIdUsed:e=>`\`${e}\` is already used by another relation.`,arrowUnavailable:(e,t)=>`\`${e}\` is not available here; write ${t.slice(0,-1).map(U).join(", ")} or ${U(t[t.length-1])}.`,relationAsEndpoint:e=>`\`${e}\` is a relation, not an element; relation endpoints must be elements.`,setMoreThanOnceInDiagram:e=>`\`${e}\` is set more than once in this diagram.`,canvasConflict:(e,t)=>`\`${e}\` cannot be combined with \`${t}\`; a diagram has one canvas.`,layersEmpty:"`layers` needs one or more layer names, back to front.",invalidLayer:e=>`Invalid layer ${e}; expected a name.`,layerTwice:e=>`Layer \`${e}\` is listed twice.`,unknownLayer:e=>`Unknown layer \`${e}\`.`,placementArguments:"`placement` takes no arguments.",placementBlock:"`placement` needs one block: `placement { ... }`.",relationsInPlacement:"Relations are not allowed inside `placement`.",declarationsInPlacement:"Declarations are not allowed inside `placement`.",unknownPlacement:e=>`Unknown placement statement \`${e}\`.`,noBlock:(e,t)=>`\`${e}\` does not take a block; expected ${t}.`,duplicatePlacement:(e,t)=>`\`${e}\` already has a \`${t}\` statement.`,position:"Expected a position `(x, y)` with two plain numbers.",size:"Expected a size `(width, height)` with two positive numbers.",viaList:"Expected a list of points after `via`, such as `[(520, 180)]`.",waypoint:"Each waypoint must be a point `(x, y)` with two plain numbers.",routeStart:(e,t,n)=>`The route of \`${e}\` must start at \`${t}\`, the source of the relation, but starts at \`${n}\`.`,routeEnd:(e,t,n)=>`The route of \`${e}\` must end at \`${t}\`, the target of the relation, but ends at \`${n}\`.`,endpointShape:e=>`Expected \`<element>.<port>\` but found \`${e}\`.`,endPosition:(e,t)=>`A position goes after a compass side, such as \`${t}.east 50%\`; \`${e}\` is not one.`,endPositionRange:"The position of a route end is a percentage from 0% to 100%.",alignEdge:e=>`\`align\` needs an edge after the elements: one of ${e.join(", ")}.`,distanceGap:"`distance` needs a positive minimum gap in pixels after the two elements.",constraintGroup:e=>`\`${e}\` is a group; constraints apply to boxes, notes and tags.`,constraintTwice:e=>`\`${e}\` appears twice in this constraint.`,constraintCount:(e,t)=>`\`${e}\` needs ${t?"exactly two":"two or more"} elements.`,labelPosition:"Expected a position along the route as a percentage, such as `50%`.",labelOutside:e=>`Label position \`${e}\` is outside 0% to 100%.`,offset:"Expected an offset `(dx, dy)` with two plain numbers.",relationNotElement:(e,t)=>`\`${e}\` is a relation; \`${t}\` needs an element.`,elementNotRelation:(e,t)=>`\`${e}\` is an element; \`${t}\` needs a relation.`,unknownRelation:e=>`Unknown relation \`${e}\`.`,notForTargets:(e,t,n)=>`\`${e}\` does not apply to ${t?"relations":"elements"} such as \`${n}\`.`,effectConflict:(e,t)=>`\`${e}\` already has a \`${t}\` effect; one target takes one effect of each kind.`,alreadySetFor:(e,t)=>`\`${e}\` is already set for \`${t}\`.`,missingEffect:"An `animate` block needs an `effect`: `flow`, `pulse`, `dash` or `trace`.",effectProperty:(e,t,n)=>`\`${e}\` applies to ${t.map(U).join(" and ")} effects, not to \`${n}\`.`,flowTarget:"Flow particles run along relations; name the relation (`a -> b as r`) and animate it.",traceTarget:"A trace runs along relations; name the relation (`a -> b as r`) and animate it.",dashOnEvent:"A moving dash runs along relations and the outlines of boxes.",dashWithoutOutline:(e,t)=>`\`${e}\` is a ${t} without an outline; a moving dash needs a line or a box.`,unknownTarget:e=>`Unknown element or relation \`${e}\`.`},values:{invalidEnum:(e,t,n)=>`Invalid value ${e} for \`${t}\`; expected one of ${n.join(", ")}.`,notColorToken:e=>`\`${e}\` is not a color token.`,expects:(e,t)=>`\`${e}\` expects ${t}.`,expectsIcon:e=>`\`${e}\` expects an icon reference such as "tabler:server".`,timeUnit:e=>`\`${e}\` needs a time unit.`,expectsTime:e=>`\`${e}\` expects a positive time such as \`1200ms\` or \`1.2s\`.`,classNoBlock:"`class` here applies classes and takes no block.",classEmpty:"`class` needs one or more class ids.",invalidClass:e=>`Invalid class ${e}; expected a class id.`,needsValue:(e,t)=>`\`${e}\` needs a value: ${t}.`,oneValue:e=>`\`${e}\` takes one value; remove the extra value.`,onlyProperties:e=>`Only properties are allowed in ${di(e)} block.`,unknownProperty:(e,t)=>`Unknown property \`${e}\` in ${di(t)} block.`,freeOnly:e=>`\`${e}\` applies to free diagrams only.`,shapeNotFor:(e,t)=>`\`shape\` does not apply to ${e==="relation"?"relations":`\`${e}\` elements`}${t===null?"":` such as \`${t}\``}; it applies to \`node\` and \`box\` elements.`,rotationNotFor:(e,t)=>`\`rotation\` does not turn \`${e}\` elements${t===null?"":` such as \`${t}\``}; it turns the other elements of flow diagrams and free compositions.`,rotationInProfile:e=>`\`rotation\` turns the elements of flow diagrams and free compositions; ${e==="c4"?"C4 views draw":`${e} diagrams draw`} theirs upright.`,shapeInProfile:e=>`\`shape\` applies to \`node\` and \`box\` elements; ${e==="c4"?"C4 views draw":`${e} diagrams draw`} each kind with its own shape.`,duplicateClass:e=>`Class \`${e}\` is already declared here.`,ruleShape:"Expected `rule <kind> { ... }`.",invalidRuleKind:(e,t)=>`Invalid rule kind ${e}; expected one of ${t.join(", ")}.`,ruleBlock:e=>`\`rule ${e}\` needs one block.`,ruleProfile:(e,t,n)=>`\`${e}\` elements belong to ${t.join(" and ")} diagrams; this is a ${n} diagram.`,ruleNotFor:(e,t)=>`\`${e}\` does not apply to ${t==="relation"?"relations":`\`${t}\` elements`}.`,ruleAlreadySet:(e,t)=>`\`${e}\` is already set for \`${t}\` by another rule.`},theme:{onlyTokens:"Only tokens, classes and rules are allowed in a theme block.",unknownToken:e=>`Unknown theme token \`${e}\`.`,unknownBase:(e,t)=>`Theme \`${e}\` extends "${t}", which is neither built in nor defined in this file.`,cycle:e=>`Theme \`${e}\` inherits from itself through \`extends\`.`},c4:{notDrawn:e=>`\`${e}\` is not drawn in this view.`,invalidLevel:"Expected `level context`, `level container` or `level component`.",missingLevel:"A c4 view needs `level context`, `level container` or `level component`.",listTwice:e=>`\`${e}\` is written more than once; list every entity in one statement.`,listShape:e=>`Expected \`${e} <entity>, <entity>...\`.`,listByPath:e=>`\`${e}\` lists entities by their path, such as \`shop.api\`.`,listedTwice:(e,t)=>`\`${e}\` appears twice in \`${t}\`.`,scopeIncluded:(e,t)=>`\`${e}\` is the scope of this view; it is drawn as the boundary of its ${t==="container"?"containers":"components"}.`,outOfLevel:(e,t,n)=>`A ${e} view does not draw the ${t} \`${n}\`.`,viewDeclares:"Views draw the model's entities; they declare none.",unknownInView:e=>`Unknown statement \`${e}\` in a c4 view.`,scopeRequired:e=>`A ${e} view needs a scope: the ${e==="container"?"system":"container"} it opens.`,scopeShape:"Expected `scope <entity>`, such as `scope shop`.",datastoreScope:e=>`\`${e}\` is a datastore; datastores have no components.`,invalidScope:(e,t,n,i)=>`The scope of a ${e} view is a ${t}; \`${n}\` is a ${i}.`,alreadyCombined:(e,t)=>`\`${e} -> ${t}\` is already combined by another relation of this view.`,relationIdUsed:e=>`\`${e}\` is already used by a relation of the model or this view.`,unsupportedRelation:(e,t)=>`No relation of the model goes from \`${e}\` to \`${t}\`; a view draws no arrow for convenience.`,labelShape:'Expected `label <entity-or-relation> "Text"`; in `placement`, `label <relation> at <n>%` moves a label.',labelTwice:e=>`\`${e}\` already has a local label.`},model:{brackets:"Model entities are declared with their kind, not with brackets.",unknownStatement:(e,t)=>`Unknown statement \`${e}\` in ${t?`the ${t.kind} \`${t.path}\``:"a model"}.`,invalidNesting:(e,t)=>`A ${e} cannot be declared ${t?`in the ${t.kind} \`${t.path}\``:"at the model's root"}; ${e}s belong ${Ko[e]??""}.`,duplicateEntity:e=>`\`${e}\` is already declared in this model.`,external:"`external` marks persons and systems outside the organisation.",quotedExample:e=>`\`${e}\` expects a quoted string, such as \`${e} "${e==="technology"?"PostgreSQL":e==="url"?"https://example.com":"What it does"}"\`.`,url:"`url` takes an `https:`, `http:` or `mailto:` URL, or a relative one.",arrow:"Model relations are written with `->`.",selfRelation:e=>`A relation from \`${e}\` to itself says nothing in a model.`,nestedRelation:(e,t)=>`\`${e}\` and \`${t}\` are nested in each other; a relation connects separate entities.`,relationIdUsed:e=>`\`${e}\` is already used by another relation of the model.`,unknownInRelation:e=>`Unknown statement \`${e}\` in a model relation.`},sequence:{groupHoldsParticipants:"Participant groups hold participant declarations; events go at the diagram level or in fragments.",groupEnd:e=>`\`${e}\` is a participant group; messages go between participants.`,idUsed:e=>`\`${e}\` is already used in this diagram.`,unknownParticipant:e=>`Unknown participant \`${e}\`.`,participantGroup:e=>`\`${e}\` is a participant group.`,participantsAtTop:"Participants are declared at the diagram level, not inside fragments.",unknownInFragment:e=>`Unknown statement \`${e}\` in a fragment.`,divider:'Expected `divider "Label"`.',delay:'Expected `delay` or `delay "Label"`.',noteSide:e=>`Expected \`${e} of <participant>\`.`,noteText:e=>`A note needs its text; expected ${e}.`,noteParticipant:e=>`A note needs a participant; expected ${e}.`,oneParticipant:e=>`\`${e} of\` takes one participant.`,invalidParticipant:e=>`Invalid participant ${e}.`,branchKeyword:(e,t,n)=>`\`${e}\` continues with \`${t}\`, not \`${n}\`.`,needsBlock:e=>`\`${e}\` needs a block.`,destroyedBeforeMessage:e=>`\`${e}\` was destroyed before this message.`,destroyedBeforeEvent:e=>`\`${e}\` was destroyed before this event.`,destroyedBeforeNote:e=>`\`${e}\` was destroyed before this note.`,createdTwice:e=>`\`${e}\` is created twice.`,createAfterUse:e=>`\`${e}\` already took part in the sequence; \`create\` comes before its first event.`,destroyedTwice:e=>`\`${e}\` is destroyed twice.`,notActive:e=>`\`${e}\` is not active here.`,placementStatement:e=>`\`${e}\` does not apply to sequence diagrams.`,pixels:e=>`Expected ${e} with a number of pixels, 0 or more.`,unknownEvent:e=>`Unknown event \`${e}\`.`,duplicateScenario:e=>`Scenario \`${e}\` is already declared.`,scenarioStatements:"Scenarios hold `choose`, `repeat`, `skip` and `take`.",decidedTwice:e=>`\`${e}\` is already decided in this scenario.`,unknownFragment:e=>`Unknown fragment \`${e}\`.`,choiceOperator:(e,t,n,i)=>`\`${e}\` does not apply to the \`${t}\` fragment \`${n}\`; it decides ${i.map(U).join(" and ")} fragments.`,noBranch:(e,t)=>`\`${e}\` has no branch "${t}".`,branchCount:(e,t)=>`\`${e}\` has ${t} branches; choose 1 to ${t}.`,loopCount:"A loop repeats 1 to 100 times in a scenario."},story:{unknownDiagram:e=>`There is no diagram \`${e}\` to tell a story about.`,namesDiagram:"A story names its diagram: `story <id> for <diagram> { }`.",time:e=>`\`${e}\` takes a time from \`0ms\` to \`600s\`, such as \`800ms\`.`,contents:"A story holds `title`, `description` and `scene` blocks.",notStoryStatement:e=>`\`${e}\` is not a story statement; a story holds \`title\`, \`description\` and \`scene\` blocks.`,sceneShape:'A scene is `scene <id> ["Title"] { \u2026 }`.',duplicateScene:e=>`The story already has a scene \`${e}\`.`,sceneContents:"A scene holds `view`, `transition` and actions.",viewFirst:"`view <diagram>` comes first in a scene and names one diagram.",transitionFirst:"`transition cut|fade|morph [over <time>]` comes before the scene's actions, once.",notAction:e=>`\`${e}\` is not a story action.`,missingTransition:e=>`The scene changes to \`${e}\`; say how with \`transition cut\`, \`fade\` or \`morph\`.`,emptyScene:e=>`The scene \`${e}\` has no actions and takes no time.`,afterOver:"Nothing follows the time of `over`.",hold:"`hold` takes one time, such as `hold 1s`.",parallel:"`parallel { \u2026 }` holds actions that start together.",namesTargets:e=>`\`${e}\` names what it acts on, such as \`${e} api\`.`,traceOne:"`trace` follows one relation; use `parallel` to trace several.",ids:e=>`\`${e}\` takes ids separated by commas.`,unknownTarget:(e,t)=>`\`${e}\` has no element or named relation \`${t}\`.`,traceTarget:(e,t)=>`\`trace\` follows a relation; \`${e}\` is ${t?"an element":"a note or fragment"}.`,conflict:(e,t,n)=>`\`${e}\` overlaps an earlier action on the same ${t} of \`${n}\`.`},export:{namesTarget:"A profile names what it exports: `export <id> for <diagram-or-story> { }`.",unknownTarget:e=>`There is no diagram or story \`${e}\` to export.`,options:"An export profile holds options such as `format png`.",notOption:e=>`\`${e}\` is not an option of export profiles.`,oneValue:e=>`\`${e}\` takes one value.`,fps:"`fps` takes a whole number from 1 to 60.",file:"`file` takes a path relative to this file, inside its folder, with `/` between folders.",missingFormat:(e,t)=>`The profile \`${e}\` needs a \`format\`: ${t.join(", ")}.`,notForFormat:(e,t,n)=>`\`${e}\` does not apply to ${t} exports; it applies to ${n.join(", ")}.`,mp4Transparency:"MP4 has no transparency; choose a colour, or WebM for a transparent video.",atWithMotion:"`at` writes one frame; it does not go with `motion animated`.",extension:(e,t)=>`\`file\` of a ${e} export ends in \`.${t}\`.`,storyMotion:"A story's export draws its frames; `motion` applies to diagrams.",storyScenario:"A story shows its own views; `scenario` applies to sequence diagrams.",atPastEnd:e=>`The story lasts ${e} ms; \`at\` is within it.`,unknownScenario:(e,t,n)=>`\`${e}\` has no scenario \`${t}\`; its scenarios: ${n.join(", ")}.`,noScenarios:e=>`\`${e}\` has no scenarios.`,endless:(e,t)=>`The effects of \`${e}\` repeat forever; a ${t} export needs a \`duration\`.`,noEffects:(e,t)=>`\`${e}\` has no effects to time; a ${t} export needs a \`duration\`.`}},hints:{example:e=>`Example: \`${e}\`.`,didYouMean:e=>`Did you mean ${e.map(U).join(", ")}?`,compile:{version:e=>`Change the header to \`language "${e}"\`.`,declareModel:"Declare `model <id> { \u2026 }` in this file, or import the file that declares it.",models:(e,t,n)=>`Models: ${[...e,...t.map(i=>`${i} (imported)`),...n.map(i=>`${i}.<model>`)].join(", ")}.`,splitDiagram:"Split it into several diagrams; views of a model can share its entities.",splitFile:"Split it into several files that import each other.",elementsOf:(e,t)=>`Elements of \`${e}\`: ${t.join(", ")}.`,diagramsAndModels:e=>`Diagrams and models in this file: ${e.join(", ")}.`,linkTargets:"Link to a diagram or a model of this file, or of a file you import."},flow:{requiredProperty:(e,t,n)=>`${e} diagrams require \`${t}\` on every ${n}.`,allowedRelations:e=>`Allowed: ${e.join(", ")||"none"}.`,imagePath:'Write a path relative to this file inside the project, such as "logo.png".',diagramLevel:e=>`\`${e}\` belongs at the diagram level, not inside a group.`,groupContents:"Groups contain element declarations, relations, nested groups, `description` and `url`.",declareElement:(e,t)=>`Declare an element with \`${e}["Label"]\` or \`${t} ${e}\`.`,freeStatements:"Free diagrams accept `box`, `text`, `icon`, `image` and `group` declarations, relations, `direction`, `layout`, `theme`, `title`, `description`, `preset`, `canvas`, `routing`, `layers`, `placement`, `style`, `animate`, `class` and `rule`.",flowStatements:"Flow diagrams accept element declarations, relations, `direction`, `layout`, `theme`, `title`, `description`, `preset`, `canvas`, `routing`, `placement`, `style`, `animate`, `class` and `rule`.",freeDeclarations:"Free diagrams declare `box`, `text`, `icon`, `image` and `group`.",flowDeclarations:e=>`Flow diagrams declare \`node\`, \`decision\`, \`data\`, \`group\`, \`note\` and \`tag\`; \`${e}\` belongs to free diagrams.`,sharedNamespace:"Elements and relations share one namespace per diagram.",elementBlock:e=>ci("Element",e),relationBlock:e=>ci("Relation",e),compassPorts:"Compass ports (`north`, `south`, `east`, `west`) and `auto` need no declaration.",oneCanvas:"Keep either `preset` or `canvas (width, height)`.",qualifiedEndpoint:"Qualified references are not available in flow diagrams; use the element id. Ports belong in `route` statements.",layers:e=>`Layers: ${e.join(", ")}.`,declareLayer:e=>`Declare it with \`layers ${e.join(", ")}\`.`,placementAccepts:e=>`A \`placement\` block accepts ${e.map(U).join(", ")}.`,ports:(e,t)=>`Ports of \`${e}\`: ${t.join(", ")}.`,constraintElements:"Constraints apply to elements declared in this diagram.",form:e=>`Form: ${e}.`,declareFirst:e=>`Declare it first, for example \`${e}["Label"]\`.`,nameRelation:"Anonymous relations need `as <id>` before they can be referenced, for example `a -> b as save`.",styleAccepts:e=>`\`style\` blocks accept ${e.map(U).join(", ")}.`,animateAccepts:"`animate` blocks accept `effect`, `duration` and `repeat`.",mergeEffects:"Remove one of the statements, or merge their properties into one.",styleTargets:e=>`\`${e}\` targets an element or a relation named with \`as <id>\`.`},values:{colorTokens:e=>`Color tokens: ${e.join(", ")}.`,cssColor:(e,t)=>`Write \`${e} "${t}"\` for a CSS color.`,colorOrToken:e=>`Example: \`${e} "#1f6feb"\` or \`${e} accent\`.`,iconForm:'Icons are written as "<pack>:<name>".',timeUnit:"Add `ms` or `s`, for example `1200ms` or `1.2s`.",link:"Example: `link checkout.api`, or `link shop.checkout.api` through a namespace import.",url:"Links may use `https:`, `http:` or `mailto:`, or be relative to the exported file.",declareClasses:"Declare classes at the top level of a diagram or in a theme block.",appliesToElements:e=>`\`${e}\` applies to elements.`,appliesToRelations:e=>`\`${e}\` applies to relations.`,classesCannotApply:"Classes cannot apply other classes; list every class where it is used.",styleProperties:e=>`Classes and rules accept ${e.map(U).join(", ")}.`,freeProperties:"Flow, sequence and C4 diagrams set text in the theme's type scale; free diagrams choose its size, weight and alignment.",applyClasses:"Apply classes inside element, relation or `style` blocks.",kinds:e=>`Kinds: ${e.join(", ")}.`},theme:{tokens:e=>`Theme tokens: ${e.join(", ")}; theme blocks also accept \`class <id> { }\` and \`rule <kind> { }\`.`,builtIn:e=>`Built-in themes: ${e.join(", ")}.`,cycle:"Make one theme of the chain extend a built-in theme instead."},c4:{entityPath:"Entities are named by their path from the model's root, such as `shop.api`.",ports:e=>`Ports: ${e.join(", ")}.`,routeEnds:"Route ends are entities of the view, optionally with a port: `shop.api.east`.",nameEntity:"Name an entity of the view by its path, such as `shop.api`.",include:e=>`Add it with \`include ${e}\`, or remove it from \`exclude\`.`,notAtLevel:(e,t,n)=>`\`${e}\` is a ${t}, which a ${n} view does not draw.`,removeScope:e=>`Remove \`${e}\` from \`include\`.`,contextLevel:"Context views draw persons and software systems.",containerLevel:e=>`Container views draw the containers and datastores of \`${e??"the scope"}\`, persons and other systems.`,componentLevel:e=>`Component views draw the components of \`${e??"the scope"}\`, the other containers of its system, persons and other systems.`,declareInModel:(e,t)=>`Declare \`${e}\` in the model \`${t}\` and list it in \`include\`.`,entitiesInModel:e=>`Entities are declared in the model \`${e}\`; a view lists them in \`include\`.`,viewStatements:"C4 views accept `level`, `scope`, `include`, `exclude`, `label`, relations that combine model relations, `direction`, `layout`, `routing`, `theme`, `title`, `description`, `preset`, `canvas`, `placement`, `style`, `animate`, `class` and `rule`.",addLevel:"Add `level container` and `scope <system>` for a container view.",systemScope:"Add `scope <system>`, such as `scope shop`.",containerScope:"Add `scope <container>`, such as `scope shop.api`.",addToModel:"Add the relation to the model, or remove this one.",localLabel:"A local label names an entity or a relation drawn in this view."},model:{kindNotBrackets:e=>`Write \`container ${e} "Label"\` or another entity kind.`,blockAccepts:(e,t)=>`${e[0].toUpperCase()}${e.slice(1)} blocks accept ${t.map(U).join(", ")} and relations.`,modelAccepts:"Models declare `person` and `system` entities, with containers, datastores and components inside, and relations `a -> b`.",canDeclare:e=>`Here you can declare ${e.map(U).join(" and ")}.`,holdsNothing:e=>`A ${e} holds no entities.`,declareEntity:'Declare it in the model first, such as `container api "API"` inside a system.',dashed:"Replies and dashed lines belong to sequence and flow diagrams.",relationAccepts:"Model relations accept `technology`, `description` and `assumption`."},sequence:{otherDeclaration:(e,t,n)=>`\`${e}\` belongs to ${t} diagrams. Sequence diagrams declare ${n.map(U).join(", ")} and \`group\`.`,statements:"Sequence diagrams accept participants, `group`, messages, `activate`, `deactivate`, `create`, `destroy`, `note`, the fragments `alt`, `opt`, `loop`, `par`, `break`, `critical` and `region`, `divider`, `delay`, `title`, `description`, `theme`, `preset`, `canvas`, `autonumber`, `placement`, `style`, `animate`, `class`, `rule` and `scenario`.",sharedNamespace:"Elements, relations, notes and fragments share one namespace per diagram.",declareParticipant:e=>`Declare it first, for example \`participant ${e} "${e}"\`.`,fragmentContents:"Fragments hold messages and the other events, and nested fragments.",activate:e=>`Add \`activate ${e}\` before it, or remove this \`deactivate\`.`,placement:"Sequence diagrams keep the order of events: use `space <event> <n>`, `gap <participant> <n>` and `label <message> at <n>% offset (dx, dy)`.",spaceTarget:'`space` names a message with `as <id>`, or a note or fragment with an id, such as `alt check "OK" { }`.',namedFragments:e=>`Named fragments: ${e.map(t=>`\`${t.id}\` (${t.operator})`).join(", ")}.`,nameFragment:'Name a fragment to decide it, such as `alt check "Approved" { }`.',branches:e=>`Branches: ${e.map(t=>`"${t}"`).join(", ")}.`},story:{diagrams:e=>`Diagrams: ${e.join(", ")}.`,declareDiagram:"Declare a diagram or import one.",actionsInScene:"Actions such as `reveal` go inside `scene <id> { \u2026 }`.",actions:"Actions: reveal, hide, highlight, focus, camera, trace, hold and parallel.",transition:"A change of composition between scenes needs an explicit transition, matched by id.",conflict:"Two actions on one property of a target must not run at the same time; move one out of the `parallel` block."},export:{targets:e=>`Diagrams and stories: ${e.join(", ")}.`,declareTarget:"Declare a diagram or a story.",options:e=>`Options: ${e.join(", ")}.`,background:"`background transparent`, a quoted colour or a colour token.",duration:"Add `duration 5s`, or give every effect a `repeat` count."}},related:{firstUsed:"First used here.",firstDeclared:"First declared here.",firstSet:"First set here.",firstOne:"First one here.",elementDeclared:"Element declared here.",firstEffect:"The first effect.",firstWritten:"First written here.",firstDecided:"First decided here.",firstScene:"The first scene.",earlierAction:"The earlier action."},problems:{notObject:"A diagram type must be an object.",where:e=>`diagram type \`${e}\``,kindWhere:(e,t)=>`${e}, kind \`${t}\``,relationsWhere:e=>`${e}, relations`,styleObject:e=>`${e}: the style must be an object.`,styleWords:(e,t,n)=>`${e}: \`${t}\` takes ${n.join(", ")}.`,styleColor:(e,t)=>`${e}: \`${t}\` takes a colour token such as "@accent" or a CSS colour.`,styleNumber:(e,t)=>`${e}: \`${t}\` takes a number in range.`,styleIcon:e=>`${e}: \`icon\` takes a reference such as "tabler:table".`,styleUnknown:(e,t)=>`${e}: unknown style property \`${t}\`.`,propertiesObject:e=>`${e}: \`properties\` must be an object.`,propertyName:(e,t)=>`${e}: \`${t}\` cannot name a property.`,propertyKind:(e,t)=>`${e}: property \`${t}\` takes "string", "number", "boolean" or { "kind": "enum", "values": [...] }.`,enumValues:(e,t)=>`${e}: enum property \`${t}\` needs "values".`,typeWord:e=>`${e}: \`type\` must be a lower-case word that is not a word of the language.`,layoutValue:(e,t,n)=>`${e}: layout \`${t}\` takes ${n.join(", ")}.`,noKinds:e=>`${e}: \`elements\` must name at least one kind.`,kindWord:e=>`${e}: a kind must be a lower-case word that is not a word of the language.`,requiredUndeclared:(e,t)=>`${e}: required property \`${t}\` is not declared.`,allowedPairs:e=>`${e}: relations \`allowed\` must be a list of [from, to] pairs.`,unknownPair:(e,t)=>`${e}: relation pair ${t} names an unknown kind.`,unknownTool:(e,t)=>`${e}: tool for unknown kind \`${t}\`.`}};function ci(e,t){let n=t.map(U);return`${e} blocks accept ${n.slice(0,-1).join(", ")} and ${n[n.length-1]}.`}var a=e=>`\`${e}\``,Z=e=>zn("es",e,3),W=(e,t)=>Object.hasOwn(e,t)?e[t]:a(t),zo={flow:"un diagrama de flujo",free:"una composici\xF3n libre",sequence:"un diagrama de secuencia",c4:"una vista C4"},Ie={flow:"los diagramas de flujo",free:"las composiciones libres",sequence:"los diagramas de secuencia",c4:"las vistas C4"},pi={person:{a:"una persona",the:"la persona",many:"las personas",of:"de persona"},system:{a:"un sistema",the:"el sistema",many:"los sistemas",of:"de sistema"},container:{a:"un contenedor",the:"el contenedor",many:"los contenedores",of:"de contenedor"},datastore:{a:"un almac\xE9n de datos",the:"el almac\xE9n de datos",many:"los almacenes de datos",of:"de almac\xE9n de datos"},component:{a:"un componente",the:"el componente",many:"los componentes",of:"de componente"}},te=e=>Object.hasOwn(pi,e)?pi[e]:{a:a(e),the:a(e),many:a(e),of:a(e)},ut={context:"de contexto",container:"de contenedores",component:"de componentes"},_o={person:"en la ra\xEDz del modelo",system:"en la ra\xEDz del modelo",container:"en un sistema",datastore:"en un sistema",component:"en un contenedor"},jo={note:"una nota",text:"un texto",icon:"un icono",image:"una imagen",actor:"un actor",boundary:"un l\xEDmite",control:"un control",entity:"una entidad"},mi={element:"un bloque de elemento",relation:"un bloque de relaci\xF3n"},fi=e=>Object.hasOwn(mi,e)?mi[e]:`un bloque ${a(e)}`,qo={elements:"elementos",relations:"relaciones",events:"eventos"},Vo={icon:"El icono",image:"La imagen",label:"La etiqueta"},Uo={text:"del texto",icon:"del icono",image:"de la imagen",label:"de la etiqueta"},Ho={visibility:"la misma visibilidad",highlight:"el mismo resaltado",trace:"el mismo recorrido",focus:"el mismo foco",camera:"la misma c\xE1mara"},hi=e=>e===null?"del \xE1mbito":`de ${a(e)}`,gi={words:{tuple:"una tupla",list:"una lista",spec:{oneOf:e=>`uno de estos valores: ${e.join(", ")}`,string:"una cadena entre comillas",color:"un color entre comillas",colorOrToken:"un color entre comillas o un token de color",icon:'un icono como "tabler:server"',timeRange:(e,t)=>t!==void 0?`un tiempo de ${Z(e)} ms a ${Z(t/1e3)} s, como \`1200ms\``:`un tiempo de ${Z(e)} ms o m\xE1s, como \`1200ms\``,time:"un tiempo como `1200ms`",repeatUpTo:e=>`\`forever\` o un n\xFAmero entero de 1 a ${Z(e)}`,repeat:"`forever` o un n\xFAmero entero positivo",keywordOrNumber:(e,t,n)=>`${e.map(a).join(", ")} o un n\xFAmero de ${Z(t)} a ${Z(n)}`,numberRange:(e,t)=>`un n\xFAmero de ${Z(e)} a ${Z(t)}`,size:(e,t)=>`\`(width, height)\` con n\xFAmeros de ${Z(e)} a ${Z(t)}`,classes:"uno o m\xE1s ids de clase",name:"un nombre",names:"uno o m\xE1s nombres",link:"una referencia `<diagram>.<element>`",url:'una URL entre comillas como "https://example.com"'},noteForm:'`note [<id>] over <p>[, <p>] "Text"`, `note [<id>] left of <p> "Text"` o `note [<id>] right of <p> "Text"`',chooseForm:'`choose <fragment> "<condition>"` o `choose <fragment> <n>`'},diagnostics:{common:{expected:e=>`Se esperaba ${e}.`,singleBlock:e=>`${a(e)} admite un solo bloque.`,needsOneBlock:(e,t)=>`${a(e)} necesita un bloque: ${t}.`,takesNoBlock:e=>`${a(e)} no admite bloque.`,takesNoBlockExpected:(e,t)=>`${a(e)} no admite bloque; se esperaba ${t}.`,doesNotTakeBlock:e=>`${a(e)} no admite bloque.`,takesNoValue:e=>`${a(e)} no admite valor.`,expectsString:e=>`${a(e)} espera una cadena entre comillas.`,setMoreThanOnce:e=>`${a(e)} se asigna m\xE1s de una vez.`,unknownElement:e=>`Elemento desconocido ${a(e)}.`,unknownEntity:(e,t)=>`Entidad desconocida ${a(e)} en el modelo ${a(t)}.`,unknownPort:(e,t)=>`${a(e)} no tiene ning\xFAn puerto ${a(t)}.`},compile:{duplicateTopLevelId:e=>`${a(e)} ya lo usa otro bloque de nivel superior de este archivo.`,unsupportedVersion:(e,t)=>`La versi\xF3n del lenguaje "${e}" no es compatible; este compilador implementa la versi\xF3n ${t}.`,unknownDiagramType:(e,t)=>`Tipo de diagrama desconocido ${a(e)}; se esperaba uno de estos: ${t.join(", ")}.`,viewWithoutModel:"Una vista C4 nombra su modelo: `diagram <id>: c4 using <model> { }`.",unknownModel:e=>`Modelo desconocido ${a(e)}.`,tooComplex:(e,t,n,i)=>`${a(e)} tiene ${t} ${qo[n]??n}; un diagrama puede tener como m\xE1ximo ${i}.`,tooLarge:(e,t)=>`El archivo tiene ${e} caracteres; un archivo .meltemi puede tener como m\xE1ximo ${t}.`,linkNamesModel:e=>`${a(e)} nombra un modelo; un enlace nombra una de sus entidades, como \`link ${e}.<entity>\`.`,linkUnknownEntity:(e,t)=>`El modelo ${a(e)} no tiene ninguna entidad ${a(t)}.`,linkDiagramShape:e=>`Un enlace a un diagrama nombra un elemento: \`link ${e}.<element>\`.`,linkToItself:e=>`${a(e)} apunta a este diagrama; los enlaces apuntan a elementos de otros diagramas.`,linkUnknownElement:(e,t)=>`${a(e)} no tiene ning\xFAn elemento ${a(t)}.`,linkNamespace:e=>`${a(e)} es un espacio de nombres; escribe \`link ${e}.<diagram>.<element>\` o \`link ${e}.<model>.<entity>\`.`,linkUnknownTarget:(e,t)=>`Diagrama o modelo desconocido ${a(e)} en el enlace ${a(t)}.`},flow:{missingProperty:(e,t,n)=>`${e} ${a(t)} necesita ${a(n)}.`,relationNotAllowed:(e,t,n)=>`Los diagramas ${e} no permiten relaciones de ${a(t)} a ${a(n)}.`,imageEmpty:"La ruta de una imagen no puede estar vac\xEDa.",imageAbsolute:e=>`Las rutas de las im\xE1genes son relativas al archivo; ${a(e)} es absoluta.`,imageUrl:e=>`Las rutas de las im\xE1genes son archivos del proyecto; ${a(e)} es una URL.`,imageBackslash:e=>`Las rutas de las im\xE1genes usan \`/\` entre carpetas: ${a(e)}.`,unknownInGroup:e=>`Instrucci\xF3n desconocida ${a(e)} en un grupo.`,unknownInDiagram:(e,t)=>`Instrucci\xF3n desconocida ${a(e)} en ${W(zo,t)}.`,quotedSource:(e,t)=>`${Vo[e]??a(e)} de ${a(t)} debe ser una cadena entre comillas.`,needsSource:(e,t,n)=>`\`${e} ${t}\` necesita ${e==="text"?"su texto":e==="icon"?"un icono":"la ruta de una imagen"}; se esperaba ${n}.`,valueAfter:(e,t)=>`Valor inesperado despu\xE9s ${Uo[e]??`de ${a(e)}`}; se esperaba ${t}.`,duplicateElement:e=>`${a(e)} ya est\xE1 declarado en este diagrama.`,builtInPort:e=>`${a(e)} es un puerto integrado; dale otro nombre al puerto.`,portSide:(e,t)=>`El lado del puerto ${a(e)} debe ser uno de estos: ${t.join(", ")}.`,portPosition:"La posici\xF3n de un puerto es un porcentaje de `0%` a `100%`.",unexpectedValue:e=>`Valor inesperado; se esperaba ${e}.`,duplicatePort:e=>`El puerto ${a(e)} ya est\xE1 declarado aqu\xED.`,setTwiceInGroup:e=>`${a(e)} se asigna dos veces en este grupo.`,relationIdUsedByElement:e=>`${a(e)} ya lo usa un elemento de este diagrama.`,relationIdUsed:e=>`${a(e)} ya lo usa otra relaci\xF3n.`,arrowUnavailable:(e,t)=>`${a(e)} no est\xE1 disponible aqu\xED; escribe ${Q("es",t.map(a),"disjunction")}.`,relationAsEndpoint:e=>`${a(e)} es una relaci\xF3n, no un elemento; los extremos de una relaci\xF3n deben ser elementos.`,setMoreThanOnceInDiagram:e=>`${a(e)} se asigna m\xE1s de una vez en este diagrama.`,canvasConflict:(e,t)=>`${a(e)} no se puede combinar con ${a(t)}; un diagrama tiene un solo lienzo.`,layersEmpty:"`layers` necesita uno o m\xE1s nombres de capa, de atr\xE1s hacia adelante.",invalidLayer:e=>`Capa no v\xE1lida: ${e}; se esperaba un nombre.`,layerTwice:e=>`La capa ${a(e)} aparece dos veces.`,unknownLayer:e=>`Capa desconocida ${a(e)}.`,placementArguments:"`placement` no admite argumentos.",placementBlock:"`placement` necesita un bloque: `placement { ... }`.",relationsInPlacement:"No se permiten relaciones dentro de `placement`.",declarationsInPlacement:"No se permiten declaraciones dentro de `placement`.",unknownPlacement:e=>`Instrucci\xF3n desconocida ${a(e)} en \`placement\`.`,noBlock:(e,t)=>`${a(e)} no admite bloque; se esperaba ${t}.`,duplicatePlacement:(e,t)=>`${a(e)} ya tiene una instrucci\xF3n ${a(t)}.`,position:"Se esperaba una posici\xF3n `(x, y)` con dos n\xFAmeros sin unidad.",size:"Se esperaba un tama\xF1o `(width, height)` con dos n\xFAmeros positivos.",viaList:"Se esperaba una lista de puntos despu\xE9s de `via`, como `[(520, 180)]`.",waypoint:"Cada punto de paso debe ser un punto `(x, y)` con dos n\xFAmeros sin unidad.",routeStart:(e,t,n)=>`La ruta de ${a(e)} debe empezar en ${a(t)}, el origen de la relaci\xF3n, pero empieza en ${a(n)}.`,routeEnd:(e,t,n)=>`La ruta de ${a(e)} debe terminar en ${a(t)}, el destino de la relaci\xF3n, pero termina en ${a(n)}.`,endpointShape:e=>`Se esperaba \`<element>.<port>\`, pero se encontr\xF3 ${a(e)}.`,endPosition:(e,t)=>`Una posici\xF3n va despu\xE9s de un punto cardinal, como ${a(`${t}.east 50%`)}; ${a(e)} no lo es.`,endPositionRange:"La posici\xF3n del extremo de una ruta es un porcentaje de `0%` a `100%`.",alignEdge:e=>`\`align\` necesita, despu\xE9s de los elementos, uno de estos lados: ${e.join(", ")}.`,distanceGap:"`distance` necesita una separaci\xF3n m\xEDnima positiva en p\xEDxeles despu\xE9s de los dos elementos.",constraintGroup:e=>`${a(e)} es un grupo; las restricciones se aplican a cajas, notas y marcas.`,constraintTwice:e=>`${a(e)} aparece dos veces en esta restricci\xF3n.`,constraintCount:(e,t)=>`${a(e)} necesita ${t?"exactamente dos":"dos o m\xE1s"} elementos.`,labelPosition:"Se esperaba una posici\xF3n a lo largo de la ruta en porcentaje, como `50%`.",labelOutside:e=>`La posici\xF3n de la etiqueta ${a(e)} est\xE1 fuera del rango de \`0%\` a \`100%\`.`,offset:"Se esperaba un desplazamiento `(dx, dy)` con dos n\xFAmeros sin unidad.",relationNotElement:(e,t)=>`${a(e)} es una relaci\xF3n; ${a(t)} necesita un elemento.`,elementNotRelation:(e,t)=>`${a(e)} es un elemento; ${a(t)} necesita una relaci\xF3n.`,unknownRelation:e=>`Relaci\xF3n desconocida ${a(e)}.`,notForTargets:(e,t,n)=>`${a(e)} no se aplica a ${t?"relaciones":"elementos"} como ${a(n)}.`,effectConflict:(e,t)=>`${a(e)} ya tiene un efecto ${a(t)} y admite un solo efecto de cada tipo.`,alreadySetFor:(e,t)=>`${a(e)} ya est\xE1 asignado para ${a(t)}.`,missingEffect:"Un bloque `animate` necesita un `effect`: `flow`, `pulse`, `dash` o `trace`.",effectProperty:(e,t,n)=>`${a(e)} se aplica a los efectos ${Q("es",t.map(a))}, no a ${a(n)}.`,flowTarget:"Las part\xEDculas recorren relaciones; nombra la relaci\xF3n (`a -> b as r`) y an\xEDmala.",traceTarget:"Un recorrido avanza por relaciones; nombra la relaci\xF3n (`a -> b as r`) y an\xEDmala.",dashOnEvent:"Un trazo en movimiento recorre relaciones y los contornos de las cajas.",dashWithoutOutline:(e,t)=>`${a(e)} es ${W(jo,t)} sin contorno; un trazo en movimiento necesita una l\xEDnea o una caja.`,unknownTarget:e=>`Elemento o relaci\xF3n desconocidos ${a(e)}.`},values:{invalidEnum:(e,t,n)=>`Valor no v\xE1lido para ${a(t)}: ${e}; se esperaba uno de estos valores: ${n.join(", ")}.`,notColorToken:e=>`${a(e)} no es un token de color.`,expects:(e,t)=>`${a(e)} espera ${t}.`,expectsIcon:e=>`${a(e)} espera una referencia de icono como "tabler:server".`,timeUnit:e=>`${a(e)} necesita una unidad de tiempo.`,expectsTime:e=>`${a(e)} espera un tiempo positivo como \`1200ms\` o \`1.2s\`.`,classNoBlock:"Aqu\xED `class` aplica clases y no admite bloque.",classEmpty:"`class` necesita uno o m\xE1s ids de clase.",invalidClass:e=>`Clase no v\xE1lida: ${e}; se esperaba un id de clase.`,needsValue:(e,t)=>`${a(e)} necesita ${t}.`,oneValue:e=>`${a(e)} admite un solo valor; quita el valor de m\xE1s.`,onlyProperties:e=>`Solo se permiten propiedades en ${fi(e)}.`,unknownProperty:(e,t)=>`Propiedad desconocida ${a(e)} en ${fi(t)}.`,freeOnly:e=>`${a(e)} solo se aplica a las composiciones libres.`,shapeNotFor:(e,t)=>`\`shape\` no se aplica a ${e==="relation"?"las relaciones":`los elementos ${a(e)}`}${t===null?"":` como ${a(t)}`}; se aplica a los elementos \`node\` y \`box\`.`,rotationNotFor:(e,t)=>`\`rotation\` no gira los elementos ${a(e)}${t===null?"":` como ${a(t)}`}; gira los dem\xE1s elementos de los diagramas de flujo y las composiciones libres.`,rotationInProfile:e=>`\`rotation\` gira los elementos de los diagramas de flujo y las composiciones libres; ${W(Ie,e)} dibujan los suyos rectos.`,shapeInProfile:e=>`\`shape\` se aplica a los elementos \`node\` y \`box\`; ${W(Ie,e)} dibujan cada tipo con su propia forma.`,duplicateClass:e=>`La clase ${a(e)} ya est\xE1 declarada aqu\xED.`,ruleShape:"Se esperaba `rule <kind> { ... }`.",invalidRuleKind:(e,t)=>`Tipo de regla no v\xE1lido: ${e}; se esperaba uno de estos: ${t.join(", ")}.`,ruleBlock:e=>`\`rule ${e}\` necesita un bloque.`,ruleProfile:(e,t,n)=>t.length>0?`Los elementos ${a(e)} pertenecen a ${Q("es",t.map(i=>W(Ie,i)))}, no a ${W(Ie,n)}.`:`Los elementos ${a(e)} no pertenecen a ${W(Ie,n)}.`,ruleNotFor:(e,t)=>`${a(e)} no se aplica a ${t==="relation"?"las relaciones":`los elementos ${a(t)}`}.`,ruleAlreadySet:(e,t)=>`Otra regla ya asigna ${a(e)} para ${a(t)}.`},theme:{onlyTokens:"Solo se permiten tokens, clases y reglas en un bloque de tema.",unknownToken:e=>`Token de tema desconocido ${a(e)}.`,unknownBase:(e,t)=>`El tema ${a(e)} extiende "${t}", que no es un tema integrado ni est\xE1 definido en este archivo.`,cycle:e=>`El tema ${a(e)} hereda de s\xED mismo a trav\xE9s de \`extends\`.`},c4:{notDrawn:e=>`${a(e)} no se dibuja en esta vista.`,invalidLevel:"Se esperaba `level context`, `level container` o `level component`.",missingLevel:"Una vista C4 necesita `level context`, `level container` o `level component`.",listTwice:e=>`${a(e)} se escribe m\xE1s de una vez; lista todas las entidades en una sola instrucci\xF3n.`,listShape:e=>`Se esperaba \`${e} <entity>, <entity>...\`.`,listByPath:e=>`${a(e)} lista entidades por su ruta, como \`shop.api\`.`,listedTwice:(e,t)=>`${a(e)} aparece dos veces en ${a(t)}.`,scopeIncluded:(e,t)=>`${a(e)} es el \xE1mbito de esta vista; se dibuja como el l\xEDmite de sus ${t==="container"?"contenedores":"componentes"}.`,outOfLevel:(e,t,n)=>`Una vista ${W(ut,e)} no dibuja ${te(t).the} ${a(n)}.`,viewDeclares:"Las vistas dibujan las entidades del modelo; no declaran ninguna.",unknownInView:e=>`Instrucci\xF3n desconocida ${a(e)} en una vista C4.`,scopeRequired:e=>`Una vista ${W(ut,e)} necesita un \xE1mbito: ${e==="container"?"el sistema":"el contenedor"} que abre.`,scopeShape:"Se esperaba `scope <entity>`, como `scope shop`.",datastoreScope:e=>`${a(e)} es un almac\xE9n de datos; los almacenes de datos no tienen componentes.`,invalidScope:(e,t,n,i)=>`El \xE1mbito de una vista ${W(ut,e)} es ${te(t).a}; ${a(n)} es ${te(i).a}.`,alreadyCombined:(e,t)=>`Otra relaci\xF3n de esta vista ya combina \`${e} -> ${t}\`.`,relationIdUsed:e=>`${a(e)} ya lo usa una relaci\xF3n del modelo o de esta vista.`,unsupportedRelation:(e,t)=>`Ninguna relaci\xF3n del modelo va de ${a(e)} a ${a(t)}; una vista no dibuja flechas por conveniencia.`,labelShape:'Se esperaba `label <entity-or-relation> "Text"`; en `placement`, `label <relation> at <n>%` mueve una etiqueta.',labelTwice:e=>`${a(e)} ya tiene una etiqueta local.`},model:{brackets:"Las entidades del modelo se declaran con su tipo, no con corchetes.",unknownStatement:(e,t)=>`Instrucci\xF3n desconocida ${a(e)} en ${t?`${te(t.kind).the} ${a(t.path)}`:"un modelo"}.`,invalidNesting:(e,t)=>`No se puede declarar ${te(e).a} ${t?`en ${te(t.kind).the} ${a(t.path)}`:"en la ra\xEDz del modelo"}; ${te(e).many} van ${_o[e]??""}.`,duplicateEntity:e=>`La entidad ${a(e)} ya est\xE1 declarada en este modelo.`,external:"`external` marca personas y sistemas ajenos a la organizaci\xF3n.",quotedExample:e=>`${a(e)} espera una cadena entre comillas, como \`${e} "${e==="technology"?"PostgreSQL":e==="url"?"https://example.com":"Qu\xE9 hace"}"\`.`,url:"`url` admite una URL `https:`, `http:` o `mailto:`, o una relativa.",arrow:"Las relaciones del modelo se escriben con `->`.",selfRelation:e=>`Una relaci\xF3n de ${a(e)} consigo misma no dice nada en un modelo.`,nestedRelation:(e,t)=>`${a(e)} y ${a(t)} est\xE1n anidadas una en otra; una relaci\xF3n conecta entidades separadas.`,relationIdUsed:e=>`${a(e)} ya lo usa otra relaci\xF3n del modelo.`,unknownInRelation:e=>`Instrucci\xF3n desconocida ${a(e)} en una relaci\xF3n del modelo.`},sequence:{groupHoldsParticipants:"Los grupos de participantes contienen declaraciones de participantes; los eventos van en el nivel del diagrama o en fragmentos.",groupEnd:e=>`${a(e)} es un grupo de participantes; los mensajes van entre participantes.`,idUsed:e=>`${a(e)} ya se usa en este diagrama.`,unknownParticipant:e=>`Participante desconocido ${a(e)}.`,participantGroup:e=>`${a(e)} es un grupo de participantes.`,participantsAtTop:"Los participantes se declaran en el nivel del diagrama, no dentro de fragmentos.",unknownInFragment:e=>`Instrucci\xF3n desconocida ${a(e)} en un fragmento.`,divider:'Se esperaba `divider "Label"`.',delay:'Se esperaba `delay` o `delay "Label"`.',noteSide:e=>`Se esperaba \`${e} of <participant>\`.`,noteText:e=>`Una nota necesita su texto; se esperaba ${e}.`,noteParticipant:e=>`Una nota necesita un participante; se esperaba ${e}.`,oneParticipant:e=>`\`${e} of\` admite un solo participante.`,invalidParticipant:e=>`Participante no v\xE1lido: ${e}.`,branchKeyword:(e,t,n)=>`${a(e)} contin\xFAa con ${a(t)}, no con ${a(n)}.`,needsBlock:e=>`${a(e)} necesita un bloque.`,destroyedBeforeMessage:e=>`${a(e)} se destruy\xF3 antes de este mensaje.`,destroyedBeforeEvent:e=>`${a(e)} se destruy\xF3 antes de este evento.`,destroyedBeforeNote:e=>`${a(e)} se destruy\xF3 antes de esta nota.`,createdTwice:e=>`${a(e)} se crea dos veces.`,createAfterUse:e=>`${a(e)} ya particip\xF3 en la secuencia; \`create\` va antes de su primer evento.`,destroyedTwice:e=>`${a(e)} se destruye dos veces.`,notActive:e=>`${a(e)} no est\xE1 activo aqu\xED.`,placementStatement:e=>`${a(e)} no se aplica a los diagramas de secuencia.`,pixels:e=>`Se esperaba ${e} con un n\xFAmero de p\xEDxeles, 0 o m\xE1s.`,unknownEvent:e=>`Evento desconocido ${a(e)}.`,duplicateScenario:e=>`El escenario ${a(e)} ya est\xE1 declarado.`,scenarioStatements:"Los escenarios contienen `choose`, `repeat`, `skip` y `take`.",decidedTwice:e=>`${a(e)} ya se decide en este escenario.`,unknownFragment:e=>`Fragmento desconocido ${a(e)}.`,choiceOperator:(e,t,n,i)=>`${a(e)} no se aplica al fragmento ${a(t)} ${a(n)}; decide los fragmentos ${Q("es",i.map(a))}.`,noBranch:(e,t)=>`${a(e)} no tiene ninguna rama "${t}".`,branchCount:(e,t)=>`${a(e)} tiene ${t} ${ce("es",t,{one:"rama",other:"ramas"})}; elige de 1 a ${t}.`,loopCount:"Un bucle se repite de 1 a 100 veces en un escenario."},story:{unknownDiagram:e=>`No hay ning\xFAn diagrama ${a(e)} sobre el que contar una historia.`,namesDiagram:"Una historia nombra su diagrama: `story <id> for <diagram> { }`.",time:e=>`${a(e)} admite un tiempo de \`0ms\` a \`600s\`, como \`800ms\`.`,contents:"Una historia contiene `title`, `description` y bloques `scene`.",notStoryStatement:e=>`${a(e)} no es una instrucci\xF3n de historia; una historia contiene \`title\`, \`description\` y bloques \`scene\`.`,sceneShape:'Una escena es `scene <id> ["Title"] { \u2026 }`.',duplicateScene:e=>`La historia ya tiene una escena ${a(e)}.`,sceneContents:"Una escena contiene `view`, `transition` y acciones.",viewFirst:"`view <diagram>` va primero en una escena y nombra un diagrama.",transitionFirst:"`transition cut|fade|morph [over <time>]` va antes de las acciones de la escena, una sola vez.",notAction:e=>`${a(e)} no es una acci\xF3n de historia.`,missingTransition:e=>`La escena cambia a ${a(e)}; indica c\xF3mo con \`transition cut\`, \`fade\` o \`morph\`.`,emptyScene:e=>`La escena ${a(e)} no tiene acciones y no dura nada.`,afterOver:"Nada puede seguir al tiempo de `over`.",hold:"`hold` admite un tiempo, como `hold 1s`.",parallel:"`parallel { \u2026 }` contiene acciones que empiezan a la vez.",namesTargets:e=>`${a(e)} nombra aquello sobre lo que act\xFAa, como \`${e} api\`.`,traceOne:"`trace` sigue una sola relaci\xF3n; usa `parallel` para recorrer varias.",ids:e=>`${a(e)} admite ids separados por comas.`,unknownTarget:(e,t)=>`${a(e)} no tiene ning\xFAn elemento ni relaci\xF3n con nombre ${a(t)}.`,traceTarget:(e,t)=>`\`trace\` sigue una relaci\xF3n; ${a(e)} es ${t?"un elemento":"una nota o un fragmento"}.`,conflict:(e,t,n)=>`${a(e)} se superpone a una acci\xF3n anterior sobre ${Ho[t]??a(t)} de ${a(n)}.`},export:{namesTarget:"Un perfil nombra lo que exporta: `export <id> for <diagram-or-story> { }`.",unknownTarget:e=>`No hay ning\xFAn diagrama ni historia ${a(e)} que exportar.`,options:"Un perfil de exportaci\xF3n contiene opciones como `format png`.",notOption:e=>`${a(e)} no es una opci\xF3n de los perfiles de exportaci\xF3n.`,oneValue:e=>`${a(e)} admite un solo valor.`,fps:"`fps` admite un n\xFAmero entero de 1 a 60.",file:"`file` admite una ruta relativa a este archivo, dentro de su carpeta, con `/` entre carpetas.",missingFormat:(e,t)=>`El perfil ${a(e)} necesita un \`format\`: ${t.join(", ")}.`,notForFormat:(e,t,n)=>`${a(e)} no se aplica a las exportaciones ${t}; se aplica a ${n.join(", ")}.`,mp4Transparency:"MP4 no admite transparencia; elige un color, o WebM para un video transparente.",atWithMotion:"`at` escribe un solo fotograma; no va con `motion animated`.",extension:(e,t)=>`\`file\` de una exportaci\xF3n ${e} termina en \`.${t}\`.`,storyMotion:"La exportaci\xF3n de una historia dibuja sus fotogramas; `motion` se aplica a los diagramas.",storyScenario:"Una historia muestra sus propias vistas; `scenario` se aplica a los diagramas de secuencia.",atPastEnd:e=>`La historia dura ${Z(e)} ms; \`at\` debe estar dentro de ese tiempo.`,unknownScenario:(e,t,n)=>`${a(e)} no tiene ning\xFAn escenario ${a(t)}; sus escenarios: ${n.join(", ")}.`,noScenarios:e=>`${a(e)} no tiene escenarios.`,endless:(e,t)=>`Los efectos de ${a(e)} se repiten indefinidamente; una exportaci\xF3n ${t} necesita una \`duration\`.`,noEffects:(e,t)=>`${a(e)} no tiene efectos que medir; una exportaci\xF3n ${t} necesita una \`duration\`.`}},hints:{example:e=>`Ejemplo: ${a(e)}.`,didYouMean:e=>`\xBFQuisiste decir ${e.map(a).join(", ")}?`,compile:{version:e=>`Cambia el encabezado a \`language "${e}"\`.`,declareModel:"Declara `model <id> { \u2026 }` en este archivo o importa el archivo que lo declara.",models:(e,t,n)=>`Modelos: ${[...e,...t.map(i=>`${i} (importado)`),...n.map(i=>`${i}.<model>`)].join(", ")}.`,splitDiagram:"Div\xEDdelo en varios diagramas; las vistas de un modelo pueden compartir sus entidades.",splitFile:"Div\xEDdelo en varios archivos que se importen entre s\xED.",elementsOf:(e,t)=>`Elementos de ${a(e)}: ${t.join(", ")}.`,diagramsAndModels:e=>`Diagramas y modelos de este archivo: ${e.join(", ")}.`,linkTargets:"Enlaza a un diagrama o a un modelo de este archivo, o de un archivo que importes."},flow:{requiredProperty:(e,t,n)=>`Los diagramas ${e} exigen ${a(t)} en cada ${a(n)}.`,allowedRelations:e=>`Permitidas: ${e.join(", ")||"ninguna"}.`,imagePath:'Escribe una ruta relativa a este archivo dentro del proyecto, como "logo.png".',diagramLevel:e=>`${a(e)} va en el nivel del diagrama, no dentro de un grupo.`,groupContents:"Los grupos contienen declaraciones de elementos, relaciones, grupos anidados, `description` y `url`.",declareElement:(e,t)=>`Declara un elemento con \`${e}["Label"]\` o \`${t} ${e}\`.`,freeStatements:"Las composiciones libres aceptan declaraciones `box`, `text`, `icon`, `image` y `group`, relaciones, `direction`, `layout`, `theme`, `title`, `description`, `preset`, `canvas`, `routing`, `layers`, `placement`, `style`, `animate`, `class` y `rule`.",flowStatements:"Los diagramas de flujo aceptan declaraciones de elementos, relaciones, `direction`, `layout`, `theme`, `title`, `description`, `preset`, `canvas`, `routing`, `placement`, `style`, `animate`, `class` y `rule`.",freeDeclarations:"Las composiciones libres declaran `box`, `text`, `icon`, `image` y `group`.",flowDeclarations:e=>`Los diagramas de flujo declaran \`node\`, \`decision\`, \`data\`, \`group\`, \`note\` y \`tag\`; ${a(e)} pertenece a las composiciones libres.`,sharedNamespace:"Los elementos y las relaciones comparten un espacio de nombres por diagrama.",elementBlock:e=>`Los bloques de elemento aceptan ${Q("es",e.map(a))}.`,relationBlock:e=>`Los bloques de relaci\xF3n aceptan ${Q("es",e.map(a))}.`,compassPorts:"Los puertos cardinales (`north`, `south`, `east`, `west`) y `auto` no necesitan declaraci\xF3n.",oneCanvas:"Conserva solo `preset` o solo `canvas (width, height)`.",qualifiedEndpoint:"Las referencias calificadas no est\xE1n disponibles en los diagramas de flujo; usa el id del elemento. Los puertos van en las instrucciones `route`.",layers:e=>`Capas: ${e.join(", ")}.`,declareLayer:e=>`Decl\xE1rala con \`layers ${e.join(", ")}\`.`,placementAccepts:e=>`Un bloque \`placement\` acepta ${e.map(a).join(", ")}.`,ports:(e,t)=>`Puertos de ${a(e)}: ${t.join(", ")}.`,constraintElements:"Las restricciones se aplican a elementos declarados en este diagrama.",form:e=>`Forma: ${e}.`,declareFirst:e=>`Decl\xE1ralo primero, por ejemplo \`${e}["Label"]\`.`,nameRelation:"Las relaciones an\xF3nimas necesitan `as <id>` para poder nombrarlas, por ejemplo `a -> b as save`.",styleAccepts:e=>`Los bloques \`style\` aceptan ${e.map(a).join(", ")}.`,animateAccepts:"Los bloques `animate` aceptan `effect`, `duration` y `repeat`.",mergeEffects:"Quita una de las instrucciones o junta sus propiedades en una sola.",styleTargets:e=>`${a(e)} se aplica a un elemento o a una relaci\xF3n nombrada con \`as <id>\`.`},values:{colorTokens:e=>`Tokens de color: ${e.join(", ")}.`,cssColor:(e,t)=>`Escribe \`${e} "${t}"\` para un color CSS.`,colorOrToken:e=>`Ejemplo: \`${e} "#1f6feb"\` o \`${e} accent\`.`,iconForm:'Los iconos se escriben como "<pack>:<name>".',timeUnit:"Agrega `ms` o `s`, por ejemplo `1200ms` o `1.2s`.",link:"Ejemplo: `link checkout.api`, o `link shop.checkout.api` a trav\xE9s de una importaci\xF3n con espacio de nombres.",url:"Los enlaces pueden usar `https:`, `http:` o `mailto:`, o ser relativos al archivo exportado.",declareClasses:"Declara las clases en el nivel superior de un diagrama o en un bloque de tema.",appliesToElements:e=>`${a(e)} se aplica a elementos.`,appliesToRelations:e=>`${a(e)} se aplica a relaciones.`,classesCannotApply:"Las clases no pueden aplicar otras clases; lista cada clase donde se use.",styleProperties:e=>`Las clases y las reglas aceptan ${e.map(a).join(", ")}.`,freeProperties:"Los diagramas de flujo y de secuencia y las vistas C4 escriben el texto con la escala tipogr\xE1fica del tema; las composiciones libres eligen su tama\xF1o, su peso y su alineaci\xF3n.",applyClasses:"Aplica las clases dentro de bloques de elemento, de relaci\xF3n o `style`.",kinds:e=>`Tipos: ${e.join(", ")}.`},theme:{tokens:e=>`Tokens de tema: ${e.join(", ")}; los bloques de tema tambi\xE9n aceptan \`class <id> { }\` y \`rule <kind> { }\`.`,builtIn:e=>`Temas integrados: ${e.join(", ")}.`,cycle:"Haz que un tema de la cadena extienda un tema integrado."},c4:{entityPath:"Las entidades se nombran por su ruta desde la ra\xEDz del modelo, como `shop.api`.",ports:e=>`Puertos: ${e.join(", ")}.`,routeEnds:"Los extremos de una ruta son entidades de la vista, con un puerto opcional: `shop.api.east`.",nameEntity:"Nombra una entidad de la vista por su ruta, como `shop.api`.",include:e=>`Agr\xE9gala con \`include ${e}\` o qu\xEDtala de \`exclude\`.`,notAtLevel:(e,t,n)=>`${a(e)} es ${te(t).a}, que una vista ${W(ut,n)} no dibuja.`,removeScope:e=>`Quita ${a(e)} de \`include\`.`,contextLevel:"Las vistas de contexto dibujan personas y sistemas de software.",containerLevel:e=>`Las vistas de contenedores dibujan los contenedores y almacenes de datos ${hi(e)}, personas y otros sistemas.`,componentLevel:e=>`Las vistas de componentes dibujan los componentes ${hi(e)}, los dem\xE1s contenedores de su sistema, personas y otros sistemas.`,declareInModel:(e,t)=>`Declara la entidad ${a(e)} en el modelo ${a(t)} y l\xEDstala en \`include\`.`,entitiesInModel:e=>`Las entidades se declaran en el modelo ${a(e)}; una vista las lista en \`include\`.`,viewStatements:"Las vistas C4 aceptan `level`, `scope`, `include`, `exclude`, `label`, relaciones que combinan relaciones del modelo, `direction`, `layout`, `routing`, `theme`, `title`, `description`, `preset`, `canvas`, `placement`, `style`, `animate`, `class` y `rule`.",addLevel:"Agrega `level container` y `scope <system>` para una vista de contenedores.",systemScope:"Agrega `scope <system>`, como `scope shop`.",containerScope:"Agrega `scope <container>`, como `scope shop.api`.",addToModel:"Agrega la relaci\xF3n al modelo o quita esta.",localLabel:"Una etiqueta local nombra una entidad o una relaci\xF3n dibujada en esta vista."},model:{kindNotBrackets:e=>`Escribe \`container ${e} "Label"\` u otro tipo de entidad.`,blockAccepts:(e,t)=>`Los bloques ${te(e).of} aceptan ${Q("es",[...t.map(a),"relaciones"])}.`,modelAccepts:"Los modelos declaran entidades `person` y `system`, con contenedores, almacenes de datos y componentes dentro, y relaciones `a -> b`.",canDeclare:e=>`Aqu\xED puedes declarar ${Q("es",e.map(a))}.`,holdsNothing:e=>{let t=te(e).a;return`${t[0].toUpperCase()}${t.slice(1)} no contiene entidades.`},declareEntity:'Declara la entidad primero en el modelo, como `container api "API"` dentro de un sistema.',dashed:"Las respuestas y las l\xEDneas discontinuas pertenecen a los diagramas de secuencia y de flujo.",relationAccepts:"Las relaciones del modelo aceptan `technology`, `description` y `assumption`."},sequence:{otherDeclaration:(e,t,n)=>`${a(e)} pertenece a ${W(Ie,t)}. Los diagramas de secuencia declaran ${n.map(a).join(", ")} y \`group\`.`,statements:"Los diagramas de secuencia aceptan participantes, `group`, mensajes, `activate`, `deactivate`, `create`, `destroy`, `note`, los fragmentos `alt`, `opt`, `loop`, `par`, `break`, `critical` y `region`, `divider`, `delay`, `title`, `description`, `theme`, `preset`, `canvas`, `autonumber`, `placement`, `style`, `animate`, `class`, `rule` y `scenario`.",sharedNamespace:"Los elementos, las relaciones, las notas y los fragmentos comparten un espacio de nombres por diagrama.",declareParticipant:e=>`Decl\xE1ralo primero, por ejemplo \`participant ${e} "${e}"\`.`,fragmentContents:"Los fragmentos contienen mensajes, los dem\xE1s eventos y fragmentos anidados.",activate:e=>`Agrega \`activate ${e}\` antes o quita este \`deactivate\`.`,placement:"Los diagramas de secuencia mantienen el orden de los eventos: usa `space <event> <n>`, `gap <participant> <n>` y `label <message> at <n>% offset (dx, dy)`.",spaceTarget:'`space` nombra un mensaje con `as <id>`, o una nota o un fragmento con id, como `alt check "OK" { }`.',namedFragments:e=>`Fragmentos con nombre: ${e.map(t=>`${a(t.id)} (${t.operator})`).join(", ")}.`,nameFragment:'Nombra un fragmento para decidirlo, como `alt check "Approved" { }`.',branches:e=>`Ramas: ${e.map(t=>`"${t}"`).join(", ")}.`},story:{diagrams:e=>`Diagramas: ${e.join(", ")}.`,declareDiagram:"Declara un diagrama o importa uno.",actionsInScene:"Las acciones como `reveal` van dentro de `scene <id> { \u2026 }`.",actions:"Acciones: reveal, hide, highlight, focus, camera, trace, hold y parallel.",transition:"Un cambio de composici\xF3n entre escenas necesita una transici\xF3n expl\xEDcita, que relaciona los elementos por id.",conflict:"Dos acciones sobre una misma propiedad de un elemento no deben ejecutarse a la vez; saca una del bloque `parallel`."},export:{targets:e=>`Diagramas e historias: ${e.join(", ")}.`,declareTarget:"Declara un diagrama o una historia.",options:e=>`Opciones: ${e.join(", ")}.`,background:"`background transparent`, un color entre comillas o un token de color.",duration:"Agrega `duration 5s` o da a cada efecto un n\xFAmero de `repeat`."}},related:{firstUsed:"Se us\xF3 por primera vez aqu\xED.",firstDeclared:"Se declar\xF3 por primera vez aqu\xED.",firstSet:"Se asign\xF3 por primera vez aqu\xED.",firstOne:"Aqu\xED est\xE1 la primera.",elementDeclared:"El elemento se declar\xF3 aqu\xED.",firstEffect:"El primer efecto.",firstWritten:"Se escribi\xF3 por primera vez aqu\xED.",firstDecided:"Se decidi\xF3 por primera vez aqu\xED.",firstScene:"La primera escena.",earlierAction:"La acci\xF3n anterior."},problems:{notObject:"Un tipo de diagrama debe ser un objeto.",where:e=>`tipo de diagrama ${a(e)}`,kindWhere:(e,t)=>`${e}, tipo ${a(t)}`,relationsWhere:e=>`${e}, relaciones`,styleObject:e=>`${e}: el estilo debe ser un objeto.`,styleWords:(e,t,n)=>`${e}: ${a(t)} admite ${n.join(", ")}.`,styleColor:(e,t)=>`${e}: ${a(t)} admite un token de color como "@accent" o un color CSS.`,styleNumber:(e,t)=>`${e}: ${a(t)} admite un n\xFAmero dentro del rango.`,styleIcon:e=>`${e}: \`icon\` admite una referencia como "tabler:table".`,styleUnknown:(e,t)=>`${e}: propiedad de estilo desconocida ${a(t)}.`,propertiesObject:e=>`${e}: \`properties\` debe ser un objeto.`,propertyName:(e,t)=>`${e}: ${a(t)} no puede nombrar una propiedad.`,propertyKind:(e,t)=>`${e}: la propiedad ${a(t)} admite "string", "number", "boolean" o { "kind": "enum", "values": [...] }.`,enumValues:(e,t)=>`${e}: la propiedad enum ${a(t)} necesita "values".`,typeWord:e=>`${e}: \`type\` debe ser una palabra en min\xFAsculas que no sea una palabra del lenguaje.`,layoutValue:(e,t,n)=>`${e}: ${a(t)} de \`layout\` admite ${n.join(", ")}.`,noKinds:e=>`${e}: \`elements\` debe nombrar al menos un tipo.`,kindWord:e=>`${e}: un tipo debe ser una palabra en min\xFAsculas que no sea una palabra del lenguaje.`,requiredUndeclared:(e,t)=>`${e}: la propiedad obligatoria ${a(t)} no est\xE1 declarada.`,allowedPairs:e=>`${e}: \`allowed\` de las relaciones debe ser una lista de pares [from, to].`,unknownPair:(e,t)=>`${e}: el par de relaci\xF3n ${t} nombra un tipo desconocido.`,unknownTool:(e,t)=>`${e}: herramienta para un tipo desconocido ${a(t)}.`}};var ne=de(ui,gi);var Jo=new Set([...Jt,"model","story","theme","export","import","language","diagram","using","placement","style","animate","class","rule","layers","scenario","relation","text","icon","image","group","box","note","tag"]);var Xs=new Set(Ae);var or=["box","text","icon","image","group"],yi=["direction","layout","theme","title","description","preset","canvas","routing","placement","style","animate","class","rule"],ba=[...or,...yi.slice(0,8),"layers",...yi.slice(8)];var Ma=new Set(lt);var Va=new Set(oi.events),Ua=new Set(Ht),Ha=new Set(at);var ar=new Set(["reveal","hide","highlight","focus","camera","trace"]),nl=new Set([...ar,"hold","parallel"]);var dr=["transparent",...Ae];var cr={characters:2*1024*1024,elements:5e3,relations:1e4,events:1e4};var ur={subjects:{diagram:"diagram",element:"element",relation:"relation",model:"model",entity:"entity",story:"story",scene:"scene",theme:"theme",export:"export"},none:"none",fields:{kind:"kind",type:"type",classes:"classes",view:"view"},changed:{description:"description changed",style:"style changed",effects:"effects changed",canvas:"canvas changed",layers:"layers changed",includedEntities:"included entities changed",constraints:"constraints changed",transition:"transition changed",actions:"actions changed",assumption:"assumption changed",ends:"ends changed"},states:{external:"now external",notExternal:"no longer external",placed:"placed",unplaced:"unplaced",moved:"moved",resized:"resized",twoWay:"now two-way",oneWay:"now one-way",async:"now asynchronous",sync:"now synchronous",confirmed:"confirmed",assumed:"now an assumption",rerouted:"rerouted",labelMoved:"label moved",messagesReordered:"messages reordered",scenesReordered:"scenes reordered"},movedOutOf:e=>`moved out of ${e}`,movedInto:e=>`moved into ${e}`,movedToRoot:"moved to the model's root",scenario:(e,t)=>`scenario ${e} ${t?"added":"removed"}`,duration:(e,t)=>`duration ${e} ms \u2192 ${t} ms`},pr={subjects:{diagram:"diagrama",element:"elemento",relation:"relaci\xF3n",model:"modelo",entity:"entidad",story:"historia",scene:"escena",theme:"tema",export:"perfil de exportaci\xF3n"},none:"ninguno",fields:{kind:"tipo",type:"tipo",classes:"clases",view:"vista"},changed:{description:"cambi\xF3 la descripci\xF3n",style:"cambi\xF3 el estilo",effects:"cambiaron los efectos",canvas:"cambi\xF3 el lienzo",layers:"cambiaron las capas",includedEntities:"cambiaron las entidades incluidas",constraints:"cambiaron las restricciones",transition:"cambi\xF3 la transici\xF3n",actions:"cambiaron las acciones",assumption:"cambi\xF3 la suposici\xF3n",ends:"cambiaron los extremos"},states:{external:"ahora es externo",notExternal:"ya no es externo",placed:"colocado",unplaced:"sin colocar",moved:"movido",resized:"redimensionado",twoWay:"ahora en ambos sentidos",oneWay:"ahora en un sentido",async:"ahora as\xEDncrono",sync:"ahora s\xEDncrono",confirmed:"confirmado",assumed:"ahora es una suposici\xF3n",rerouted:"con otra ruta",labelMoved:"etiqueta movida",messagesReordered:"mensajes reordenados",scenesReordered:"escenas reordenadas"},movedOutOf:e=>`sacado de ${e}`,movedInto:e=>`movido a ${e}`,movedToRoot:"movido a la ra\xEDz del modelo",scenario:(e,t)=>`escenario ${e} ${t?"agregado":"quitado"}`,duration:(e,t)=>`duraci\xF3n ${e} ms \u2192 ${t} ms`},mr=de(ur,pr);var Pe=[8,6],mt=Pe[0]+Pe[1],Be={scale:.15,opacity:.7,width:2},je={extra:6,opacity:.5},pe={fill:.8,extra:2,dot:3};function Oe(e,t=[]){for(let n of e)n.kind==="group"&&(t.push(n),Oe(n.items,t));return t}function tn(e,t){let n=t-e.delayMs;if(n<0)return null;let i=Math.floor(n/e.durationMs);return e.repeat!=="forever"&&i>=e.repeat?null:(n-i*e.durationMs)/e.durationMs}var g=e=>{let t=Math.round(e*100)/100;return Object.is(t,-0)?0:t};function ve(e){let t=0;for(let n=1;n<e.length;n++)t+=Math.hypot(e[n].x-e[n-1].x,e[n].y-e[n-1].y);return t}function ft(e,t){let n=ve(e);if(n===0)return e[0];let i=Math.min(1,Math.max(0,t))*n;for(let o=1;o<e.length;o++){let l=e[o-1],r=e[o],d=Math.hypot(r.x-l.x,r.y-l.y);if(i<=d||o===e.length-1){let c=d===0?0:Math.min(1,i/d);return{x:l.x+(r.x-l.x)*c,y:l.y+(r.y-l.y)*c}}i-=d}return e[e.length-1]}function Ce(e,t,n){let i=g(n);return`M${g(e-n)} ${g(t)} a${i} ${i} 0 1 0 ${g(2*n)} 0 a${i} ${i} 0 1 0 ${g(-2*n)} 0 Z`}function qe(e,t=1){let n=e.x+e.width/2,i=e.y+e.height/2,o=e.width*t,l=e.height*t,r=n-o/2,d=i-l/2,c=Math.min(e.radius*t,o/2,l/2);return c<=0?`M${g(r)} ${g(d)} H${g(r+o)} V${g(d+l)} H${g(r)} Z`:[`M${g(r+c)} ${g(d)}`,`H${g(r+o-c)}`,`A${g(c)} ${g(c)} 0 0 1 ${g(r+o)} ${g(d+c)}`,`V${g(d+l-c)}`,`A${g(c)} ${g(c)} 0 0 1 ${g(r+o-c)} ${g(d+l)}`,`H${g(r+c)}`,`A${g(c)} ${g(c)} 0 0 1 ${g(r)} ${g(d+l-c)}`,`V${g(d+c)}`,`A${g(c)} ${g(c)} 0 0 1 ${g(r+c)} ${g(d)}`,"Z"].join(" ")}function nn(e){return Math.max(3,e+1.5)}function rn(e,t){return e.map(n=>{if(n.kind!=="group")return n;let i=rn(n.items,t),o=t({...n,items:i});return o?{...n,items:o}:i.every((l,r)=>l===n.items[r])?n:{...n,items:i}})}function vi(e){return e.findIndex(t=>(t.kind==="rect"||t.kind==="path"||t.kind==="polyline")&&t.stroke!=="none")}var on=(e,t)=>`${e}\0${t}`;function xi(e){let t=e.track.map(n=>({x:g(n.x),y:g(n.y)}));return e.reverse?t.reverse():t}function fr(e){let t=Math.min(1,e/pe.fill),n=e<=pe.fill?1:(1-e)/(1-pe.fill);return{grown:t,opacity:n}}function hr(e,t){let n=xi(e),i=g(ve(n)),{grown:o,opacity:l}=fr(t),r=ft(n,o);return[{kind:"polyline",points:n,stroke:e.color,strokeWidth:g(e.width+pe.extra),dashed:!1,dash:{array:[i,i],offset:g(i*(1-o))},opacity:g(l)},{kind:"path",d:Ce(r.x,r.y,e.width+pe.dot),fill:e.color,stroke:"none",strokeWidth:0,dashed:!1,opacity:g(l)}]}function bi(e,t){let n=e.findIndex(o=>o.kind==="group"&&o.role==="label"),i=n<0?e.length:n;return[...e.slice(0,i),...t,...e.slice(i)]}function ki(e,t){if(e.effect==="pulse")return e.bounds?[{kind:"path",d:qe(e.bounds,1+Be.scale*t),fill:"none",stroke:e.color,strokeWidth:Be.width,dashed:!1,opacity:g(Be.opacity*(1-t))}]:[{kind:"polyline",points:e.track.map(n=>({x:g(n.x),y:g(n.y)})),stroke:e.color,strokeWidth:e.width+je.extra,dashed:!1,opacity:g(je.opacity*(1-t))}];if(e.effect==="flow"){let n=[],i=nn(e.width);for(let o=0;o<e.particles;o++){let l=t+o/e.particles;l>1&&(l-=1),e.reverse&&(l=1-l);let r=ft(e.track,l);n.push({kind:"path",d:Ce(r.x,r.y,i),fill:e.color,stroke:"none",strokeWidth:0,dashed:!1})}return n}return[]}function Ve(e,t,n){let i=t.effects.map(c=>({effect:c,phase:tn(c,n)})).filter(c=>c.phase!==null);if(i.length===0)return e;let o=new Map,l=new Map;for(let{effect:c,phase:f}of i){let p=on(c.role,c.target);c.effect==="dash"&&o.set(p,{phase:f,reverse:c.reverse}),c.effect==="trace"&&l.set(p,hr(c,f))}let r=rn(e.items,c=>{let f=on(c.role,c.id),p=o.get(f),m=l.get(f);if(!p&&!m)return null;let b=c.items,S=p?vi(b):-1;if(p&&S>=0){let x=g((p.reverse?1:-1)*mt*p.phase);b=b.map(($,k)=>k===S&&$.kind!=="group"&&$.kind!=="text"&&$.kind!=="image"?{...$,dash:{array:Pe,offset:x}}:$)}return m&&(b=bi(b,m)),b===c.items?null:[...b]}),d=[];for(let{effect:c,phase:f}of i)c.effect==="pulse"&&d.push(...ki(c,f));for(let{effect:c,phase:f}of i)c.effect==="flow"&&d.push(...ki(c,f));return d.length>0&&r.push({kind:"group",id:"motion",role:"motion",items:d}),{...e,items:r}}var gr=e=>`${g(e*100)}%`;var Cd=["@keyframes mdg-trace-dot {"," 0% { offset-distance: 0%; opacity: 1; }",` ${gr(pe.fill)} { offset-distance: 100%; opacity: 1; }`," 100% { offset-distance: 100%; opacity: 0; }","}"].join(`
2
- `);function Ei(e,t,n=[]){for(let i of e)i.kind==="parallel"?Ei(i.children,t,n):n.push({action:i,scene:t});return n}var Ti=(e,t,n)=>n<=0?e>=t?1:0:Math.min(1,Math.max(0,(e-t)/n)),G=(e,t,n)=>e+(t-e)*n;function ht(e,t){let n=null,i=l=>{if(!n){n={...l};return}let r=Math.min(n.x,l.x),d=Math.min(n.y,l.y);n={x:r,y:d,width:Math.max(n.x+n.width,l.x+l.width)-r,height:Math.max(n.y+n.height,l.y+l.height)-d}},o=l=>{for(let r of l)if(r.kind==="group"){if(t.includes(r.id)){if(r.bounds)i(r.bounds);else if(r.track&&r.track.length>0){let d=r.track.map(f=>f.x),c=r.track.map(f=>f.y);i({x:Math.min(...d),y:Math.min(...c),width:Math.max(...d)-Math.min(...d),height:Math.max(...c)-Math.min(...c)})}}o(r.items)}};return o(e.items),n}function gt(e,t){let i=t.width+80,o=t.height+80,l=e.width/e.height;if(i/o>l?o=i/l:i=o*l,i>=e.width&&o>=e.height)return{x:0,y:0,width:e.width,height:e.height};let r=t.x+t.width/2,d=t.y+t.height/2;return{x:r-i/2,y:d-o/2,width:i,height:o}}function vr(e,t,n){let i=e.scenes,o=0;for(let x=0;x<i.length;x++)i[x].startMs<=t&&(o=x);let l=i.flatMap((x,$)=>Ei(x.actions,$));l.sort((x,$)=>x.action.startMs-$.action.startMs);let r=new Map,d=new Map;for(let{action:x}of l)if(!(x.kind!=="reveal"&&x.kind!=="hide"))for(let $ of x.targets)d.has($.id)||d.set($.id,x.kind);for(let[x,$]of d)r.set(x,$==="reveal"?0:1);let c=[],f=[],p=null,m=null,b=null,S=null;for(let{action:x,scene:$}of l){if(x.startMs>t)break;let k=Ti(t,x.startMs,x.durationMs),N=i[$].view;switch(x.kind){case"reveal":case"hide":for(let L of x.targets){let D=r.get(L.id)??1;r.set(L.id,G(D,x.kind==="reveal"?1:0,k))}break;case"highlight":if(k<1){let L=Math.min(200,x.durationMs/4),D=t-x.startMs,I=x.startMs+x.durationMs-t,O=L<=0?1:Math.min(1,D/L,I/L);for(let V of x.targets)c.push({id:V.id,intensity:O})}break;case"trace":if(k<1)for(let L of x.targets)f.push({id:L.id,progress:k});break;case"focus":if($===o){let L=new Set(x.targets.map(O=>O.id)),D=p,I=D?.level??0;p=x.all?{ids:D?.ids??new Set,level:G(I,0,k)}:{ids:L,level:G(I,1,k)}}break;case"camera":{let L=n(N);if(!L)break;S!==N&&(b=null,S=N);let D=x.all?null:(()=>{let I=ht(L.scene,x.targets.map(O=>O.id));return I?gt(L.scene,I):null})();m={from:b,to:D,progress:k},k>=1?b=D:b=Ri(L.scene,b,D,k);break}}}return m&&S!==i[o]?.view&&(m=null),{scene:o,opacity:r,highlights:c,traces:f,focus:p,camera:m}}function wi(e){return{x:0,y:0,width:e.width,height:e.height}}function Ri(e,t,n,i){let o=t??wi(e),l=n??wi(e);return{x:G(o.x,l.x,i),y:G(o.y,l.y,i),width:G(o.width,l.width,i),height:G(o.height,l.height,i)}}function Mi(e,t){return e.map(n=>{if(n.kind!=="group")return n;let i=Mi(n.items,t),o=n.role==="element"||n.role==="relation"||n.role==="event"?t(n):1,l=i.some((d,c)=>d!==n.items[c]);if(o>=1&&!l)return n;let r={...n,items:i};return o<1?{...r,opacity:g(o)}:r})}function xr(e,t){let i=ve(e)*t,o=[e[0]];for(let l=1;l<e.length&&i>0;l++){let r=e[l-1],d=e[l],c=Math.hypot(d.x-r.x,d.y-r.y);if(c>=i){let f=c===0?0:i/c;o.push({x:r.x+(d.x-r.x)*f,y:r.y+(d.y-r.y)*f});break}o.push(d),i-=c}return o}function sn(e,t,n){for(let i of e){if(i.kind!=="group")continue;if(i.id===t&&n.includes(i.role))return i;let o=sn(i.items,t,n);if(o)return o}}function Si(e){let t=e.items.find(n=>n.kind==="polyline"||n.kind==="path");return t&&(t.kind==="polyline"||t.kind==="path")?t.strokeWidth:1.5}function br(e,t,n){let i=[],o=new Map;for(let{id:l,intensity:r}of t.highlights){let d=sn(e.items,l,["element","event","relation"]);d&&(d.bounds?i.push({kind:"path",d:qe(wr(d.bounds,4)),fill:"none",stroke:n,strokeWidth:3,dashed:!1,opacity:g(r)}):d.track&&i.push({kind:"polyline",points:d.track,stroke:n,strokeWidth:Si(d)+6,dashed:!1,opacity:g(.6*r)}))}for(let{id:l,progress:r}of t.traces){let d=sn(e.items,l,["relation"]);if(!d?.track||d.track.length<2)continue;let c=Si(d),f=xr(d.track,r).map(m=>({x:g(m.x),y:g(m.y)})),p=f[f.length-1];o.set(l,[{kind:"polyline",points:f,stroke:n,strokeWidth:c+2,dashed:!1},{kind:"path",d:Ce(p.x,p.y,c+3),fill:n,stroke:"none",strokeWidth:0,dashed:!1}])}return{highlights:i,traces:o}}function Ai(e,t){return t.size===0?[...e]:e.map(n=>{if(n.kind!=="group")return n;let i=n.role==="relation"?t.get(n.id):void 0;if(!i)return{...n,items:Ai(n.items,t)};let o=n.items.findIndex(r=>r.kind==="group"&&r.role==="label"),l=o<0?n.items.length:o;return{...n,items:[...n.items.slice(0,l),...i,...n.items.slice(l)]}})}function wr(e,t){return{x:e.x-t,y:e.y-t,width:e.width+t*2,height:e.height+t*2,radius:e.radius+t}}function $i(e,t,n,i){let o=new Set(t.traces.map(m=>m.id)),l={effects:e.plan.effects.filter(m=>!(m.role==="relation"&&o.has(m.target)))},r=Ve(e.scene,l,n),d=t.focus,c=(m,b)=>{if(!d||d.ids.has(m))return!0;if(b==="relation"){let S=e.ends[m];return S!==void 0&&d.ids.has(S[0])&&d.ids.has(S[1])}return!1},f=br(e.scene,t,i),p=Mi(Ai(r.items,f.traces),m=>{let b=m.role==="relation"?e.ends[m.id]:void 0,S=Math.min(t.opacity.get(m.id)??1,...(b??[]).map($=>t.opacity.get($)??1)),x=d&&!c(m.id,m.role)?G(1,.25,d.level):1;return S*x});return f.highlights.length>0&&p.push({kind:"group",id:"story",role:"motion",items:f.highlights}),{...r,items:p}}function Ue(e,t,n,i={}){let o=i.accent??"#1f6feb",l=Math.min(Math.max(0,n),e.durationMs),r=vr(e,l,t),d=e.scenes[r.scene],c=d?.view??e.views[0],f=c!==void 0?t(c):void 0;if(!f)return null;let p=$i(f,r,l,o);if(r.camera){let _=Ri(f.scene,r.camera.from,r.camera.to,r.camera.progress);p={...p,viewBox:{x:g(_.x),y:g(_.y),width:g(_.width),height:g(_.height)}}}let m=d?.transition,b=r.scene>0?e.scenes[r.scene-1]:void 0;if(!m||!b||b.view===d.view||m.kind==="cut")return p;let S=Ti(l,m.startMs,m.durationMs);if(S>=1)return p;let x=t(b.view);if(!x)return p;let $=$i(x,r,l,o),k=Math.max($.width,p.width),N=Math.max($.height,p.height);if(m.kind==="fade")return{...p,width:k,height:N,items:[{kind:"group",id:"before",role:"motion",items:$.items,opacity:g(1-S)},{kind:"group",id:"after",role:"motion",items:p.items,opacity:g(S)}]};let L=new Map,D=_=>{for(let E of _)E.kind==="group"&&(E.role==="element"&&E.bounds&&L.set(E.id,E.bounds),D(E.items))};D($.items);let I=new Set,O=_=>_.map(E=>{if(E.kind!=="group")return E;let ee=E.role==="element"&&E.bounds?L.get(E.id):void 0;if(ee&&E.bounds){I.add(E.id);let J=E.bounds,Je=G(ee.x,J.x,S),It=G(ee.y,J.y,S),xe=G(ee.width,J.width,S)/J.width,be=G(ee.height,J.height,S)/J.height,we=`translate(${g(Je-J.x*xe)} ${g(It-J.y*be)}) scale(${g(xe*1e3)/1e3} ${g(be*1e3)/1e3})`;return{kind:"group",id:`${E.id}#morph`,role:"motion",items:[E],transform:we}}return E.role==="element"||E.role==="relation"||E.role==="event"?{...E,opacity:g((E.opacity??1)*S)}:{...E,items:O(E.items)}}),V=O(p.items),ae=_=>_.flatMap(E=>E.kind!=="group"?[E]:E.role==="frame"||E.role==="element"&&I.has(E.id)?[]:E.role==="element"||E.role==="relation"||E.role==="event"?[{...E,opacity:g((E.opacity??1)*(1-S))}]:[{...E,items:ae(E.items)}]);return{...p,width:k,height:N,items:[...ae($.items),...V]}}var He={cameraMs:320,transitionMs:480};function Li(e){return e.direction==="down"?{parent:e.from,child:e.to}:{parent:e.to,child:e.from}}function Ii(e){let{parent:t,child:n}=Li(e),i=Math.max(0,e.cameraMs),o=Math.max(0,e.transitionMs);return{id:"drill",title:null,durationMs:i+o,views:[t,n],scenes:[{id:"from",title:null,view:t,transition:null,startMs:0,durationMs:i,line:0,actions:[{kind:"camera",path:[0,0],targets:[{id:e.element,kind:"element"}],all:!1,startMs:0,durationMs:i,children:[],line:0}]},{id:"to",title:null,view:n,transition:{kind:o>0?e.transition:"cut",startMs:i,durationMs:o},startMs:i,durationMs:o,line:0,actions:[]}]}}var yt=(e,t,n)=>e+(t-e)*n,an=e=>({x:0,y:0,width:e.width,height:e.height});function ln(e,t,n,i={}){let{parent:o,child:l}=Li(e),r=t(o),d=t(l);if(!r||!d||!kt(r.scene.items,e.element))return null;let c=ht(r.scene,[e.element]);if(!c)return null;let f=Ii(e),p=f.durationMs,m=Math.min(Math.max(0,n),p),b=e.direction==="down"?m:p-m,S=Math.max(0,e.cameraMs),x=Ue(f,t,b,i);if(!x)return null;let $=Math.max(r.scene.width,d.scene.width),k=Math.max(r.scene.height,d.scene.height),N;if(b<S||p===0)N=p===0?an(d.scene):x.viewBox??an(r.scene);else{let L=p-S,D=L<=0?1:Math.min(1,(b-S)/L),I=gt(r.scene,c),O=an(d.scene);N={x:yt(I.x,O.x,D),y:yt(I.y,O.y,D),width:yt(I.width,O.width,D),height:yt(I.height,O.height,D)}}return{...x,width:$,height:k,viewBox:{x:g(N.x),y:g(N.y),width:g(N.width),height:g(N.height)}}}function kt(e,t){for(let n of e)if(n.kind==="group"&&(n.role==="element"&&n.id===t&&n.bounds||kt(n.items,t)))return!0;return!1}function dn(e,t,n){return kt(e.items,n)&&kt(t.items,n)?"morph":"fade"}var Sr="http://www.w3.org/2000/svg";function h(e,t={},...n){let i=document.createElement(e);for(let[o,l]of Object.entries(t))l!==!1&&i.setAttribute(o,l===!0?"":l);return i.append(...n),i}function X(e,t={}){let n=document.createElementNS(Sr,e);for(let[i,o]of Object.entries(t))n.setAttribute(i,String(o));return n}function Y(e){let t=X("svg",{viewBox:"0 0 16 16","aria-hidden":"true"});for(let n of e.split("|"))t.append(X("path",{d:n}));return t}var cn=e=>`"${e.replace(/["\\]/g,"\\$&")}"`,un=e=>e!==null&&/^(https?:|mailto:)/i.test(e.trim())?e.trim():null;function Di(e){try{let t=new URL(e);return t.protocol==="mailto:"?t.pathname:t.host}catch{return e}}var H={play:"M5 3.5l8 4.5-8 4.5z",pause:"M5.5 3.5v9|M10.5 3.5v9",previous:"M4 3.5v9|M12.5 3.5L6.5 8l6 4.5z",next:"M12 3.5v9|M3.5 3.5l6 4.5-6 4.5z",static:"M2.5 3.5h11v9h-11z|M5 6.5h6|M5 9.5h4",zoomIn:"M8 4v8|M4 8h8",zoomOut:"M4 8h8",fit:"M3 6V3h3|M10 3h3v3|M13 10v3h-3|M6 13H3v-3",close:"M4 4l8 8|M12 4l-8 8",up:"M8 12.5v-9|M4 7.5l4-4 4 4",open:"M8 4v8|M4 8h8",external:"M9 3h4v4|M13 3L7.5 8.5|M11 9.5V13H3V5h3.5"};var vt=class{element=h("div",{class:"card",role:"tooltip","aria-hidden":"true",hidden:!0});get visible(){return!this.element.hidden}show(t,n,i){let o=this.element,l=[h("div",{class:"title"},t.title)];t.meta&&l.push(h("div",{class:"meta"},t.meta)),t.ends&&l.push(h("div",{class:"meta"},t.ends)),t.text&&l.push(h("p",{class:"text"},t.text)),t.note&&l.push(h("div",{class:"meta"},t.note));let r=un(t.url);r&&l.push(h("div",{class:"link"},Di(r))),o.replaceChildren(...l),o.hidden=!1;let d=o.offsetWidth,c=o.offsetHeight,f={width:window.innerWidth,height:window.innerHeight},p,m,b="bottom";n&&n.height<=f.height*.6?(p=n.left+n.width/2-d/2,m=n.bottom+6,m+c>f.height-4&&(m=n.top-6-c,b="top")):(p=i.x+14,m=i.y+14,p+d>f.width-4&&(p=i.x-14-d),m+c>f.height-4&&(m=i.y-14-c,b="top")),p=Math.max(4,Math.min(f.width-d-4,p)),m=Math.max(4,Math.min(f.height-c-4,m)),o.style.left=`${Math.round(p)}px`,o.style.top=`${Math.round(m)}px`,o.dataset.side=b}hide(){this.element.hidden=!0}},xt=class{element=h("aside",{class:"details",role:"region",tabindex:"-1",hidden:!0});heading=h("h3",{class:"title",tabindex:"-1"});kind=h("p",{class:"type"});content=h("div",{class:"bodytext"});close;shown="";constructor(t,n){this.close=h("button",{type:"button",class:"close","aria-label":t.close,title:t.closeTitle},Y(H.close)),this.close.addEventListener("click",n),this.element.append(h("div",{class:"head"},this.heading,this.close),this.kind,this.content)}get open(){return!this.element.hidden}show(t,n){this.element.setAttribute("aria-label",t.name),this.heading.textContent=t.title,this.kind.textContent=t.type??"",this.kind.hidden=!t.type;let i=[];if(t.open){let o=t.open,l=h("button",{type:"button",class:"action",title:o.title},Y(H.open),o.label);l.addEventListener("click",()=>o.run()),i.push(l)}if(t.facts.length>0){let o=h("dl");for(let l of t.facts){let r=l.href===void 0?null:un(l.href);o.append(h("dt",{},l.term),h("dd",{},r?h("a",{href:r,target:"_blank",rel:"noopener noreferrer"},l.linkText??l.value):l.value))}i.push(o)}t.description&&i.push(h("p",{class:"description"},t.description));for(let o of t.sections){if(i.push(h("h4",{},o.heading)),o.items.length===0){o.empty&&i.push(h("p",{},o.empty));continue}let l=h("ul");for(let r of o.items)if(r.href!==void 0)l.append(h("li",{},h("a",{href:r.href},r.label)));else{let d=h("button",{type:"button"},r.label);r.action&&d.addEventListener("click",r.action),l.append(h("li",{},d))}i.push(l)}if(n!==this.shown){let o=h("div",{class:"bodytext"},...i);this.content.replaceWith(o),this.content=o}else this.content.replaceChildren(...i);this.shown=n,this.element.hidden=!1}hide(){this.element.hidden=!0,this.shown=""}focus(){this.heading.focus({preventScroll:!0})}},bt=class{element;upButton;list=h("ol");up=null;constructor(t){this.upButton=h("button",{type:"button",class:"up"},Y(H.up)),this.upButton.addEventListener("click",()=>this.up?.()),this.element=h("nav",{class:"trail","aria-label":t,hidden:!0},this.upButton,this.list)}show(t,n,i){this.element.hidden=t.length===0;let o=t[t.length-1];this.up=o?.go??null,this.upButton.disabled=!o,i&&(this.upButton.setAttribute("aria-label",i.up),this.upButton.title=i.upTitle);let l=t.map(r=>{let d=h("button",{type:"button"},r.title);return d.addEventListener("click",r.go),h("li",{},d)});l.push(h("li",{},h("span",{"aria-current":"page"},n))),this.list.replaceChildren(...l)}goUp(){return this.up?(this.up(),!0):!1}};var Pi={controls:{group:"Player controls",play:"Play",pause:"Pause",playTitle:e=>`${e} (Space)`,previous:"Previous scene",previousTitle:"Previous scene (Page Up)",next:"Next scene",nextTitle:"Next scene (Page Down)",progress:"Progress",scene:"Scene",staticView:"Static view",staticTitle:"Static view (S)",position:(e,t)=>`${e} of ${t}`,zoomGroup:"Zoom",zoomIn:"Zoom in",zoomInTitle:"Zoom in (+)",zoomOut:"Zoom out",zoomOutTitle:"Zoom out (\u2212)",fit:"Fit the drawing",fitTitle:"Fit the drawing (0)",actualSizeTitle:"Actual size (1)",zoomLevel:e=>`Zoom ${e}. Actual size (1)`},trail:{label:"Path",up:e=>`Up to ${e}`,upTitle:e=>`Up to ${e} (Backspace)`},details:{region:e=>`Details of ${e}`,close:"Close details",closeTitle:"Close (Escape)",kind:"Kind",technology:"Technology",description:"Description",link:"Link",openLink:"Open link",external:"external",relations:"Relations",outgoing:"Outgoing",incoming:"Incoming",noRelations:"No relations.",from:"From",to:"To",assumption:"Assumption",assumed:e=>`Assumption: ${e}`,standsFor:e=>`Stands for ${e} model ${ce("en",e,{one:"relation",other:"relations"})}`,lifted:"lifted",async:"Asynchronous",open:e=>`Open ${e}`,openTitle:"Open (double click or Enter)",opens:e=>`opens ${e}`,elements:"Elements"},player:{story:e=>`Story: ${e}`,diagram:e=>`Diagram: ${e}`,scene:(e,t,n,i)=>`Scene ${e} of ${t}: ${n}${i?`, ${i}`:""}`,unreadable:"This player cannot read its data.",interactive:e=>`${e}. Interactive drawing`,hint:"Up and Down walk the elements, Enter shows their details, Escape clears.",zoom:e=>`Zoom ${e}`,fitted:e=>`Whole drawing, ${e}`,selected:e=>`Selected: ${e}`,cleared:"Selection cleared",focused:(e,t)=>t?`${e}, ${t}`:e,relation:(e,t)=>`${e} \u2192 ${t}`,opened:e=>`Opened ${e}`,wentUp:e=>`Back in ${e}`},story:{summary:"Text summary",scene:(e,t,n,i)=>`Scene ${e}: ${t} (${n} to ${i})`,list:e=>e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`,transition:(e,t,n)=>`${{cut:"Cut",fade:"Fade",morph:"Morph"}[e]} to ${t}${n===null?"":` over ${n}`}`,reveal:(e,t)=>`Reveal ${e} over ${t}`,hide:(e,t)=>`Hide ${e} over ${t}`,highlight:(e,t)=>`Highlight ${e} for ${t}`,focus:e=>`Focus on ${e}`,clearFocus:"Clear the focus",frame:e=>`Frame ${e}`,frameAll:"Frame the whole view",trace:(e,t,n)=>`Trace \u201C${e}\u201D${t?` from ${t[0]} to ${t[1]}`:""} over ${n}`,hold:e=>`Hold ${e}`,parallel:e=>`At the same time: ${e}`},effects:{none:"No effects.",flow:e=>`Flow particles along \u201C${e}\u201D`,dash:e=>`A moving dash along \u201C${e}\u201D`,trace:e=>`A trace along \u201C${e}\u201D`,pulse:e=>`A pulse on \u201C${e}\u201D`,forever:"without end",times:e=>`${e} ${ce("en",e,{one:"time",other:"times"})}`,cycle:(e,t,n,i)=>`${e}: ${t} a cycle, ${n}${i===null?"":` after ${i}`}`}};var Bi={controls:{group:"Controles del reproductor",play:"Reproducir",pause:"Pausar",playTitle:e=>`${e} (Espacio)`,previous:"Escena anterior",previousTitle:"Escena anterior (Re P\xE1g)",next:"Escena siguiente",nextTitle:"Escena siguiente (Av P\xE1g)",progress:"Progreso",scene:"Escena",staticView:"Vista est\xE1tica",staticTitle:"Vista est\xE1tica (S)",position:(e,t)=>`${e} de ${t}`,zoomGroup:"Zoom",zoomIn:"Acercar",zoomInTitle:"Acercar (+)",zoomOut:"Alejar",zoomOutTitle:"Alejar (\u2212)",fit:"Ajustar el dibujo",fitTitle:"Ajustar el dibujo (0)",actualSizeTitle:"Tama\xF1o real (1)",zoomLevel:e=>`Zoom ${e}. Tama\xF1o real (1)`},trail:{label:"Ruta",up:e=>`Subir a ${e}`,upTitle:e=>`Subir a ${e} (Retroceso)`},details:{region:e=>`Detalles de ${e}`,close:"Cerrar los detalles",closeTitle:"Cerrar (Esc)",kind:"Tipo",technology:"Tecnolog\xEDa",description:"Descripci\xF3n",link:"Enlace",openLink:"Abrir el enlace",external:"externo",relations:"Relaciones",outgoing:"Salientes",incoming:"Entrantes",noRelations:"Sin relaciones.",from:"Desde",to:"Hacia",assumption:"Supuesto",assumed:e=>`Supuesto: ${e}`,standsFor:e=>`Representa ${e} ${ce("es",e,{one:"relaci\xF3n",other:"relaciones"})} del modelo`,lifted:"derivada",async:"As\xEDncrona",open:e=>`Abrir ${e}`,openTitle:"Abrir (doble clic o Entrar)",opens:e=>`abre ${e}`,elements:"Elementos"},player:{story:e=>`Historia: ${e}`,diagram:e=>`Diagrama: ${e}`,scene:(e,t,n,i)=>`Escena ${e} de ${t}: ${n}${i?`, ${i}`:""}`,unreadable:"Este reproductor no puede leer sus datos.",interactive:e=>`${e}. Dibujo interactivo`,hint:"Arriba y Abajo recorren los elementos, Entrar muestra sus detalles, Esc borra la selecci\xF3n.",zoom:e=>`Zoom ${e}`,fitted:e=>`Dibujo completo, ${e}`,selected:e=>`Seleccionado: ${e}`,cleared:"Selecci\xF3n borrada",focused:(e,t)=>t?`${e}, ${t}`:e,relation:(e,t)=>`${e} \u2192 ${t}`,opened:e=>`Se abri\xF3 ${e}`,wentUp:e=>`De vuelta en ${e}`},story:{summary:"Resumen en texto",scene:(e,t,n,i)=>`Escena ${e}: ${t} (de ${n} a ${i})`,list:e=>Q("es",e),transition:(e,t,n)=>{let i={cut:"un corte",fade:"un fundido",morph:"una transformaci\xF3n"}[e];return`Cambiar a ${t} con ${i}${n===null?"":` de ${n}`}`},reveal:(e,t)=>`Mostrar ${e} en ${t}`,hide:(e,t)=>`Ocultar ${e} en ${t}`,highlight:(e,t)=>`Resaltar ${e} durante ${t}`,focus:e=>`Enfocar ${e}`,clearFocus:"Quitar el foco",frame:e=>`Encuadrar ${e}`,frameAll:"Encuadrar toda la vista",trace:(e,t,n)=>`Recorrer \u201C${e}\u201D${t?` de ${t[0]} a ${t[1]}`:""} en ${n}`,hold:e=>`Esperar ${e}`,parallel:e=>`Al mismo tiempo: ${e}`},effects:{none:"No hay efectos.",flow:e=>`Part\xEDculas a lo largo de \u201C${e}\u201D`,dash:e=>`Un trazo en movimiento a lo largo de \u201C${e}\u201D`,trace:e=>`Un recorrido a lo largo de \u201C${e}\u201D`,pulse:e=>`Un pulso en \u201C${e}\u201D`,forever:"sin fin",times:e=>`${e} ${ce("es",e,{one:"vez",other:"veces"})}`,cycle:(e,t,n,i)=>`${e}: ${t} por ciclo, ${n}${i===null?"":` tras ${i}`}`}};var re=de(Pi,Bi);var $r=32,Er=1e3,Tr=100,Rr=.01;function Ci(e){switch(e){case" ":case"k":case"K":return"toggle";case"ArrowLeft":return"back";case"ArrowRight":return"forward";case",":return"backSmall";case".":return"forwardSmall";case"Home":return"start";case"End":return"end";case"PageUp":case"p":case"P":return"previousScene";case"PageDown":case"n":case"N":return"nextScene";case"s":case"S":return"toggleStatic";default:return}}var Oi=new Map;function Mr(e){let t=Oi.get(e);return t||(t=new Intl.NumberFormat(e,{maximumFractionDigits:3,useGrouping:!1}),Oi.set(e,t)),t}function se(e,t="en"){return e===0?"0 s":e>=1e3?`${Mr(t).format(Math.round(e)/1e3)} s`:`${Math.round(e)} ms`}var wt=class{constructor(t,n={}){this.document=t;this.effectsView=t.kind==="effects"?t.key:"",this.reducedMotion=n.reducedMotion===!0,this.staticView=n.static===!0||n.reducedMotion===!0,this.loop=n.loop===!0,this.locale=n.locale??"en",n.autoplay&&!n.reducedMotion&&!this.staticView&&(this.playing=!0),this.staticView&&(this.time=this.sceneEnd(0))}document;time=0;playing=!1;staticView;loop;locale;effectsView;selection=null;focused=null;trail=[];drill=null;reducedMotion;settled=null;get view(){return this.document.kind==="effects"?this.effectsView:this.scenes[this.sceneIndex]?.view??this.document.timeline.views[0]??""}get duration(){return this.document.kind==="story"?this.document.timeline.durationMs:this.document.views[this.effectsView]?.durationMs??null}get scenes(){return this.document.kind==="story"?this.document.timeline.scenes:[]}sceneIndexAt(t){let n=this.scenes,i=0;for(let o=0;o<n.length;o++)n[o].startMs<=t&&(i=o);return i}get sceneIndex(){return this.sceneIndexAt(this.time)}sceneEnd(t){let n=this.scenes[t];if(!n)return 0;let i=n.startMs+n.durationMs;return t===this.scenes.length-1?i:Math.max(n.startMs,i-Rr)}get canPlay(){return!(this.staticView&&this.document.kind==="story")}play(){if(!this.canPlay)return;let t=this.duration;t!==null&&this.time>=t&&(this.time=0),this.playing=!0}pause(){this.playing=!1}toggle(){this.playing?this.pause():this.play()}tick(t){let n=this.drill;if(n)return n.time+=Math.max(0,t),n.time>=this.drillDuration&&this.settle(),!1;if(!this.playing)return!1;let i=this.duration,o=this.time+Math.max(0,t);return i===null?(this.time=o,!1):o<i?(this.time=o,!1):this.loop&&i>0?(this.time=o%i,!1):(this.time=i,this.playing=!1,!0)}seek(t){let n=this.duration,i=Math.max(0,n===null?t:Math.min(n,t));this.time=this.staticView&&this.scenes.length>0?this.sceneEnd(this.sceneIndexAt(i)):i}goToScene(t){let n=this.scenes;if(n.length===0)return;let i=Math.max(0,Math.min(n.length-1,t));this.time=this.staticView?this.sceneEnd(i):n[i].startMs}setStatic(t){this.staticView=t,t&&(this.playing=!1,this.scenes.length>0&&(this.time=this.sceneEnd(this.sceneIndex)))}get frameTime(){return this.time}run(t){switch(t){case"toggle":this.toggle();break;case"back":case"forward":case"backSmall":case"forwardSmall":{if(this.staticView&&this.scenes.length>0){this.goToScene(this.sceneIndex+(t.startsWith("back")?-1:1));break}let n=t.endsWith("Small")?Tr:Er;this.pause(),this.seek(this.time+(t.startsWith("back")?-n:n));break}case"start":this.pause(),this.seek(0);break;case"end":this.pause(),this.seek(this.duration??this.time);break;case"previousScene":{let n=this.sceneIndex,i=this.scenes[n]?.startMs??0;this.goToScene(!this.staticView&&this.time>i+250?n:n-1);break}case"nextScene":this.goToScene(this.sceneIndex+1);break;case"toggleStatic":this.setStatic(!this.staticView);break}}titleOf(t){return this.document.names[t]?.title??t}items(t=this.view){let n=this.document.views[t]?.scene;if(!n)return[];let i=[],o=[],l=new Set;for(let r of Oe(n.items)){let d=`${r.role}:${r.id}`;if(!l.has(d)){if(r.role==="element"&&r.bounds)i.push({role:"element",id:r.id});else if(r.role==="relation"&&r.track&&r.track.length>1)o.push({role:"relation",id:r.id});else continue;l.add(d)}}return[...i,...o]}moveFocus(t,n=()=>!0){let i=this.items().filter(n);if(i.length===0)return this.focused=null;let o=this.focused,l=o?i.findIndex(d=>d.role===o.role&&d.id===o.id):-1,r=l<0?t>0?0:i.length-1:(l+t+i.length)%i.length;return this.focused=i[r]}select(t){return t===null?(this.selection=null,!0):this.items().some(n=>n.role===t.role&&n.id===t.id)?(this.selection=t,!0):!1}canOpen(t){if(this.document.kind!=="effects"||this.drill)return null;let n=this.document.details[this.view]?.elements[t]?.opens??null;return n&&this.document.views[n.view]?n:null}durations(){return this.reducedMotion?{cameraMs:0,transitionMs:0}:{...He}}get drillDuration(){let t=this.drill?.spec;return t?t.cameraMs+t.transitionMs:0}start(t,n,i={}){this.drill={spec:t,time:0,extra:i,select:n,resume:this.playing},this.playing=!1,this.selection=null,this.focused=null,this.drillDuration<=0&&this.settle()}settle(){let t=this.drill;if(!t)return;this.drill=null,this.effectsView=t.spec.to,this.time=0,this.playing=t.resume&&!this.staticView,this.selection=t.select?{role:"element",id:t.select}:null;let n=this.titleOf(t.spec.to),i=re(this.locale).player;this.settled=t.spec.direction==="down"?i.opened(n):i.wentUp(n)}open(t){let n=this.canOpen(t);if(!n)return!1;let i=this.view;return this.trail.push({view:i,element:t}),this.trail.length>$r&&this.trail.shift(),this.start({from:i,to:n.view,element:t,transition:n.transition,direction:"down",...this.durations()},n.element),!0}enter(t,n,i,o,l=null){if(this.document.kind!=="effects")return;this.effectsView=t.key;let r=this.durations();i==="down"&&(r.cameraMs=0),this.start({from:t.key,to:this.document.key,element:n,transition:o,direction:i,...r},l,{[t.key]:t.view})}up(t=this.trail.length-1){if(this.document.kind!=="effects"||this.drill)return!1;let n=this.trail[t];if(!n)return!1;let i=this.document.views[n.view],o=this.document.views[this.view];if(!i||!o)return!1;this.trail.length=t;let l=this.document.details[n.view]?.elements[n.element]?.opens,r=l&&l.view===this.view?l.transition:dn(i.scene,o.scene,n.element);return this.start({from:this.view,to:n.view,element:n.element,transition:r,direction:"up",...this.durations()},n.element),!0}takeSettled(){let t=this.settled;return this.settled=null,t}announcement(){let t=this.scenes,n=t[this.sceneIndex];return n?re(this.locale).player.scene(this.sceneIndex+1,t.length,n.id,n.title):""}};function Ni(e,t,n,i){let o=re(i).story,l=e.names[t]?.labels??{},r=f=>l[f]??f,d=o.list(n.targets.map(f=>r(f.id))),c=se(n.durationMs,i);switch(n.kind){case"reveal":return o.reveal(d,c);case"hide":return o.hide(d,c);case"highlight":return o.highlight(d,c);case"focus":return n.all?o.clearFocus:o.focus(d);case"camera":return n.all?o.frameAll:o.frame(d);case"trace":{let f=n.targets[0]?.id??"",p=e.views[t]?.ends[f];return o.trace(r(f),p?[r(p[0]),r(p[1])]:null,c)}case"hold":return o.hold(c);case"parallel":return o.parallel(n.children.map(f=>Ni(e,t,f,i)).join("; "))}}function Fi(e,t="en"){let n=re(t).story,i;return e.timeline.scenes.map((o,l)=>{let r=[],d=e.names[o.view]?.title??o.view.split("#").pop();if(o.transition&&i!==void 0&&i!==o.view){let{kind:f,durationMs:p}=o.transition;r.push(n.transition(f,d,p>0?se(p,t):null))}i=o.view;for(let f of o.actions)r.push(Ni(e,o.view,f,t));let c=o.startMs+o.durationMs;return{heading:n.scene(l+1,o.title??o.id,se(o.startMs,t),se(c,t)),items:r}})}function Ki(e,t="en",n=e.key){let i=re(t).effects,o=e.names[n]?.labels??{};return(e.views[n]?.plan.effects??[]).map(l=>{let r=o[l.target]??l.target,d=l.effect==="flow"?i.flow(r):l.effect==="dash"?i.dash(r):l.effect==="trace"?i.trace(r):i.pulse(r);return i.cycle(d,se(l.durationMs,t),l.repeat==="forever"?i.forever:i.times(l.repeat),l.delayMs>0?se(l.delayMs,t):null)})}function Ar(e,t,n,i){let o=(r,d,c)=>3*r*c*(1-c)*(1-c)+3*d*c*c*(1-c)+c*c*c,l=(r,d,c)=>3*r*(1-c)*(1-c)+6*(d-r)*c*(1-c)+3*(1-d)*c*c;return r=>{if(r<=0)return 0;if(r>=1)return 1;let d=r;for(let p=0;p<8;p++){let m=o(e,n,d)-r;if(Math.abs(m)<1e-6)return o(t,i,d);let b=l(e,n,d);if(Math.abs(b)<1e-6)break;d-=m/b}let c=0,f=1;d=r;for(let p=0;p<30;p++){let m=o(e,n,d);if(Math.abs(m-r)<1e-6)break;m<r?c=d:f=d,d=(c+f)/2}return o(t,i,d)}}var zi=Ar(.2,.7,.3,1);function pn(e,t){let n=e.cameraMs,i=e.transitionMs;return t<=0?0:t>=n+i?n+i:t<n?n*zi(t/n):n+i*zi((t-n)/Math.max(1e-9,i))}var Lr="meltemi-player";function _i(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.format===Lr&&t.version===2&&(t.kind==="story"||t.kind==="effects")}var Ir={woff2:"font/woff2",woff:"font/woff",truetype:"font/ttf",opentype:"font/otf"};function T(e){let t=Math.round(e*100)/100;return String(Object.is(t,-0)?0:t)}function A(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Tt(e,t={}){let n=t.fonts??"system";if(n!=="system"&&!t.provider)throw new Error(`The "${n}" font policy needs a font provider.`);let i=n==="system"?null:{policy:n,provider:t.provider},o=[],l=T(e.width),r=T(e.height),d=e.viewBox?`${T(e.viewBox.x)} ${T(e.viewBox.y)} ${T(e.viewBox.width)} ${T(e.viewBox.height)}`:`0 0 ${l} ${r}`;if(o.push(`<svg xmlns="http://www.w3.org/2000/svg" width="${l}" height="${r}" viewBox="${d}" font-family="${A(e.fonts.body)}">`),e.title!==null&&o.push(` <title>${A(e.title)}</title>`),e.description!==null&&o.push(` <desc>${A(e.description)}</desc>`),e.styleSheet){o.push(" <style><![CDATA[");for(let p of e.styleSheet.split(`
3
- `))o.push(p===""?"":` ${p}`);o.push(" ]]></style>")}let c=i?.policy==="embedded"?Ji(e,i.provider):[];if(e.gradients.length>0||e.patterns.length>0||c.length>0){if(o.push(" <defs>"),c.length>0){o.push(" <style>");for(let p of c)o.push(` ${p}`);o.push(" </style>")}for(let p of e.gradients)o.push(...Pr(p));for(let p of e.patterns)o.push(...Br(p));o.push(" </defs>")}o.push(` <rect x="0" y="0" width="${l}" height="${r}" fill="${A(e.background)}"/>`);let f=i?.policy==="outlined"?i.provider:null;if(e.link){o.push(` <a href="${A(e.link)}">`);for(let p of e.items)Et(p,o," ",e,f);o.push(" </a>")}else for(let p of e.items)Et(p,o," ",e,f);return o.push("</svg>"),`${o.join(`
1
+ "use strict";(()=>{function Zn(e){return e&&e.trim().toLowerCase().split(/[-_.@]/)[0]==="es"?"es":"en"}var Yo="en";function he(e,t){return(n=Yo)=>n==="es"?t:e}var Qn=new Map;function ge(e,t,n){let i=Qn.get(e);return i||(i=new Intl.PluralRules(e),Qn.set(e,i)),i.select(t)==="one"?n.one:n.other}function q(e,t,n="conjunction"){return new Intl.ListFormat(e,{style:"long",type:n}).format(t)}function Xn(e,t,n=1){return new Intl.NumberFormat(e,{maximumFractionDigits:n,useGrouping:!1}).format(t)}function Wt(e,t){return new Intl.NumberFormat(e,{style:"percent",maximumFractionDigits:0}).format(t)}var Qt=["LR","RL","TB","BT"],ft=["auto","assisted","manual"],He=["north","south","east","west","auto"],ni=["flow","pulse","dash","trace"],Qo=["forward","reverse"];var $e={minDuration:100,maxDuration:6e4,maxDelay:6e4,maxRepeat:1e3,maxParticles:8};var Jt=["node","decision","data","group","note","tag"],Gt=["box","text","icon","image","note","sticky","line","pen","group"],ht=["participant","actor","boundary","control","entity","database","collections","queue"],ei=[...ht,"group"],gt=["person","system","container","datastore","component"],Zo=[...gt,"group"];var ii=["context","container","component"];var oi=[...Jt,"box","text","icon","image","sticky","line","pen",...ht,...gt],Zt=["alt","opt","loop","par","break","critical","region"];var Xo=["activate","deactivate","create","destroy","note",...Zt,"divider","delay","return"];var ri=["solid","dashed","dotted"];var Xt=["flow","sequence","c4","free"],er=["sync","async"],si=["none","hatch","dots","cross"],mt=["triangle","open","none","triangleOutline","diamond","diamondOutline","circle","circleOutline","bar","cross","many","oneOrMany","onlyOne","zeroOrOne","zeroOrMany"],en=["sharp","rounded"],tr=["none","light","rough"],nr=[...oi,"relation","fragment"],ai=["document","slide","board"],li=["column","row"],ir=["start","center","end","stretch"],or={min:0,max:400};var tn=["left","right","top","bottom","center"],di=["top","bottom","left","right"],ci={min:8,max:128},nn=["auto","orthogonal","polyline","bezier"];var on=["align","row","column","order","distance"],ui=["rounded","rectangle","square","ellipse","circle","diamond","cylinder","pill","triangle","parallelogram","trapezoid","pentagon","hexagon","octagon","star","cloud","document","callout","arrow","framed","flag","person","agent","icon"];var rr={min:0,max:360};var pi=["left","center","right"],mi=["top","middle","bottom"],fi=[400,500,600,700];var sr=["none","footer","header"],ar=["meltemi","none"];var lr=["highlight","sticky","stickyText"],Be=["background","surface","ink","muted","line","connector","band","bandLine","tag","tagText","accent","accentEnd","success","warning","danger","info",...lr],dr=["selection","guide"],Se={kind:"number",min:6,max:48},pt={kind:"number",min:0,max:200},Yt={kind:"number",min:0,max:64},ti={kind:"number",min:0,max:8},cr={labelSize:Se,descriptionSize:Se,groupTitleSize:Se,noteSize:Se,tagSize:Se,relationLabelSize:Se,frameSize:Se,labelWeight:{kind:"number",min:400,max:700,values:[400,500,600,700]},padding:pt,groupPadding:pt,groupHeader:pt,margin:pt,radius:Yt,groupRadius:Yt,strokeWidth:ti,connectorWidth:ti,arrowSize:{kind:"number",min:0,max:32},iconSize:{kind:"number",min:8,max:64}},hi={flow:"flowDuration",dash:"dashDuration",pulse:"pulseDuration",trace:"traceDuration"},ur={extends:{kind:"string"},...Object.fromEntries(Be.map(e=>[e,{kind:"color"}])),...Object.fromEntries(dr.map(e=>[e,{kind:"color"}])),font:{kind:"string"},mono:{kind:"string"},...cr,arrowhead:{kind:"enum",values:mt},corners:{kind:"enum",values:en},sketch:{kind:"enum",values:tr},iconPosition:{kind:"enum",values:tn},frame:{kind:"enum",values:sr},brand:{kind:"string"},mark:{kind:"enum",values:ar},...Object.fromEntries(Object.values(hi).map(e=>[e,{kind:"time",min:$e.minDuration,max:$e.maxDuration}]))},gi={font:{kind:"string",nonEmpty:!0},fontSize:{kind:"number",min:6,max:160},fontWeight:{kind:"number",min:400,max:700,values:fi}},yi=Object.keys(gi);var ki={textAlign:{kind:"enum",values:pi},verticalAlign:{kind:"enum",values:mi},opacity:{kind:"number",min:0,max:1}},ye={icon:{kind:"icon"},fill:{kind:"color",tokens:!0},stroke:{kind:"color",tokens:!0},color:{kind:"color",tokens:!0},line:{kind:"enum",values:ri},width:{kind:"number",min:0,max:64},pattern:{kind:"enum",values:si},arrowhead:{kind:"enum",values:mt},arrowtail:{kind:"enum",values:mt},iconColor:{kind:"color",tokens:!0},iconPosition:{kind:"enum",values:tn},labelPosition:{kind:"enum",values:di},iconSize:{kind:"keywordOrNumber",keywords:["auto"],...ci},routing:{kind:"enum",values:nn},corners:{kind:"enum",values:en},shape:{kind:"enum",values:ui},radius:Yt,rotation:{kind:"number",...rr},...gi,...ki},rn=["pattern","iconPosition","labelPosition","iconSize","shape","radius","rotation",...Object.keys(ki)];var pr=rn.filter(e=>e!=="opacity"),sn=["stroke","width","line","opacity","arrowhead","arrowtail"],xi=Object.keys(ye).filter(e=>!sn.includes(e)&&e!=="rotation");var an=["fill","stroke","color","line","width","font","fontSize","fontWeight","textAlign","verticalAlign","radius","rotation","opacity","icon","iconColor","iconSize"],bi=Object.keys(ye).filter(e=>!an.includes(e)&&e!=="shape");var ln={direction:{kind:"enum",values:Qt,default:"LR"},layout:{kind:"enum",values:ft,default:"auto"},theme:{kind:"string"},title:{kind:"string"},description:{kind:"string"},preset:{kind:"enum",values:ai},canvas:{kind:"size",min:100,max:1e4},routing:{kind:"enum",values:nn,default:"auto"}},yt={effect:{kind:"enum",values:ni},duration:{kind:"time",min:$e.minDuration,max:$e.maxDuration},repeat:{kind:"repeat",max:$e.maxRepeat},delay:{kind:"time",min:0,max:$e.maxDelay},direction:{kind:"enum",values:Qo},particles:{kind:"number",min:1,max:$e.maxParticles,values:[1,2,3,4,5,6,7,8]},color:{kind:"color",tokens:!0}},vi={name:"flow",status:"compiled",diagramProperties:{...ln,layers:{kind:"names"}},elementKinds:Jt,shorthand:{box:"node",data:"data"},implicitKind:"node",elementProperties:{description:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"},link:{kind:"link"},url:{kind:"url"}},groupProperties:{description:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"},link:{kind:"link"},url:{kind:"url"}},relationProperties:{description:{kind:"string"},layer:{kind:"name"},assumption:{kind:"string"},class:{kind:"classes"}},arrows:{"->":"solid","-->":"dashed","--":"solid","---":"dashed","<->":"solid","<-->":"dashed"},diagramBlocks:["placement","style","animate","class","rule"],placementStatements:["place","size","route","label",...on],ports:He,styleProperties:{...ye,class:{kind:"classes"}},animateProperties:yt,ruleKinds:[...Jt,"relation"],events:[]},wi={name:"free",status:"compiled",diagramProperties:{...ln,layout:{kind:"enum",values:ft,default:"manual"},layers:{kind:"names"}},elementKinds:Gt,shorthand:{box:"box",data:"box"},implicitKind:"box",elementProperties:{description:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"},link:{kind:"link"},url:{kind:"url"}},groupProperties:{description:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"},link:{kind:"link"},url:{kind:"url"},layout:{kind:"enum",values:li},spacing:{kind:"number",...or},align:{kind:"enum",values:ir}},relationProperties:{description:{kind:"string"},assumption:{kind:"string"},class:{kind:"classes"},layer:{kind:"name"}},arrows:{"->":"solid","-->":"dashed","--":"solid","---":"dashed","<->":"solid","<-->":"dashed"},diagramBlocks:["placement","style","animate","class","rule"],placementStatements:["place","size","route","label",...on],ports:He,styleProperties:{...ye,class:{kind:"classes"}},animateProperties:yt,ruleKinds:[...Gt,"relation"],events:[]},dn={name:"sequence",status:"compiled",diagramProperties:{theme:{kind:"string"},title:{kind:"string"},description:{kind:"string"},preset:{kind:"enum",values:ai},canvas:{kind:"size",min:100,max:1e4},autonumber:{kind:"number",min:0,max:1e5},spacing:{kind:"number",min:0,max:400}},elementKinds:ei,shorthand:{box:"participant",data:"database"},implicitKind:"participant",elementProperties:{description:{kind:"string"},class:{kind:"classes"},link:{kind:"link"},url:{kind:"url"},tag:{kind:"tag"}},groupProperties:{description:{kind:"string"},class:{kind:"classes"},link:{kind:"link"},url:{kind:"url"}},relationProperties:{description:{kind:"string"},assumption:{kind:"string"},class:{kind:"classes"},kind:{kind:"enum",values:er},tag:{kind:"tag"}},arrows:{"->":"solid","-->":"dashed","<->":"solid","<-->":"dashed"},diagramBlocks:["placement","style","animate","class","rule","scenario"],placementStatements:["space","gap","label"],ports:[],styleProperties:{...ye,class:{kind:"classes"}},animateProperties:yt,ruleKinds:[...ei,"relation","note","fragment"],events:Xo},mr={name:"c4",status:"compiled",diagramProperties:{...ln,level:{kind:"enum",values:ii},scope:{kind:"name"}},elementKinds:["note"],shorthand:{box:"container",data:"datastore"},implicitKind:"container",elementProperties:{class:{kind:"classes"},url:{kind:"url"}},groupProperties:{},relationProperties:{description:{kind:"string"},technology:{kind:"string"},assumption:{kind:"string"}},arrows:{"->":"solid","-->":"dashed"},diagramBlocks:["placement","style","animate","class","rule"],placementStatements:["place","size","route","label",...on],ports:He,styleProperties:{...ye,class:{kind:"classes"}},animateProperties:yt,ruleKinds:[...Zo,"note","relation"],events:[]};var Te=e=>`\`${e}\``,Si={diagnostics:{bom:"The file starts with a byte order mark; it is kept as is.",unterminatedComment:"Block comment is not closed with `*/` before the end of the file.",mixedLineEndings:(e,t)=>`This line ends with ${e} but the file started with ${t}.`,invalidEscape:e=>`Unknown escape sequence ${Te(e)} in string.`,unterminatedString:'String is not closed with `"` before the end of the line.',unexpectedCharacter:e=>`Unexpected character ${Te(e)}.`,unexpectedCharacters:e=>`Unexpected characters ${Te(e)}.`,expectedToken:(e,t)=>`Expected ${e} but found ${t}.`,unclosedBlock:e=>`Expected \`}\` to close the block opened on line ${e} but found end of file.`,expectedEndOfStatement:e=>`Unexpected ${e}; expected the end of the statement.`,unexpectedAtStatementStart:e=>`Unexpected ${e} at the start of a statement.`,chainedRelations:"Chained relations are not supported; write one relation per statement.",unexpectedTopLevel:e=>`Unexpected ${e} at the top level of the file.`,headerNotFirst:"The `language` header must be the first statement of the file.",nestingTooDeep:e=>`Blocks, tuples and lists are nested more than ${e} levels deep.`,invalidIndent:e=>`Indentation must be 1 to 8 spaces or "tab", not ${e}.`},expected:{versionString:'a version string such as `"0.2"` after `language`',namespaceAfterAs:"a namespace after `as`",asAndNamespace:"`as` and a namespace after the path",aliasAfterAs:"an alias after `as`",idAfterComma:"an id to import after `,`",pathOrIds:"a path string or the ids to import after `import`",pathAfterFrom:"a path string after `from`",fromAndPath:"`from` and a path after the imported ids",openBody:e=>`\`{\` to open the ${e} body`,diagramId:"a diagram id after `diagram`",colonAfterId:"`:` after the diagram id",diagramType:"a diagram type (`flow`, `sequence`, `c4` or `free`)",modelReference:"a model reference after `using`",idAfter:e=>`an id after ${Te(e)}`,forAndTarget:"`for` followed by the target",targetAfterFor:"a target after `for`",arrowAfter:e=>`an arrow (\`->\`, \`-->\`, \`<->\` or \`<-->\`) after ${Te(e)}`,identifierAfterDot:"an identifier after `.`",relationTarget:e=>`a relation target after ${Te(e)}`,labelAfterColon:"a label string after `:`",relationId:"a relation id after `as`",labelString:"a label string",blockAfter:e=>`\`{\` after ${Te(e)}`},tokens:{endOfLine:"end of line",endOfFile:"end of file",string:e=>`string ${e}`},hints:{bom:"UTF-8 without a byte order mark is the canonical encoding.",lineEndings:"Use one line ending style per file; edits follow the first one.",escapes:'Supported escapes are \\", \\\\, \\n and \\t.',multilineString:"Strings cannot span lines; use \\n for a line break inside a label.",arrows:"The relation tokens are `->`, `-->`, `--`, `---`, `<->` and `<-->`.",identifiers:"Identifiers use ASCII letters, digits and `_`; put other text in a quoted label.",minus:"A minus sign must be followed by a digit, `-` or `>`.",separateStatements:"Separate statements with a line break or `;`.",topLevel:"Top-level statements are `language`, `import`, `model`, `diagram`, `story`, `export` and `theme`.",insideDiagram:"Elements and relations belong inside a `diagram <id>: flow { ... }` block.",headerFirst:"Move it above every `import` and every block.",importNamespace:'Write `import "<path>" as <namespace>`.',importMembers:'Write `import <id>, <id> as <alias> from "<path>"`.',diagramShape:"Write `diagram <id>: <type> { ... }`, for example `diagram checkout: flow { ... }`.",targetedShape:e=>`Write \`${e} <id> for <target> { ... }\`.`,labelledElement:'Declare a labelled element with `id["Label"]`.',blockAfterWord:"A block must follow a statement word, for example `placement { ... }`.",quotedRelationLabel:'Labels are quoted: `a -> b: "Label"`.',quotedShorthandLabel:'Labels are quoted: `id["Label"]` or `id[("Label")]`.'},related:{blockOpened:"Block opened here."}};var ke=e=>`\`${e}\``,$i={diagram:"del diagrama",model:"del modelo",theme:"del tema",story:"de la historia",export:"del perfil de exportaci\xF3n"},Ti={diagnostics:{bom:"El archivo empieza con una marca de orden de bytes; se conserva tal cual.",unterminatedComment:"El comentario de bloque no se cierra con `*/` antes del final del archivo.",mixedLineEndings:(e,t)=>`Esta l\xEDnea termina con ${e}, pero el archivo empez\xF3 con ${t}.`,invalidEscape:e=>`Secuencia de escape desconocida ${ke(e)} en la cadena.`,unterminatedString:'La cadena no se cierra con `"` antes del final de la l\xEDnea.',unexpectedCharacter:e=>`Car\xE1cter inesperado ${ke(e)}.`,unexpectedCharacters:e=>`Caracteres inesperados ${ke(e)}.`,expectedToken:(e,t)=>`Se esperaba ${e}, pero se encontr\xF3 ${t}.`,unclosedBlock:e=>`Se esperaba \`}\` para cerrar el bloque abierto en la l\xEDnea ${e}, pero se encontr\xF3 el final del archivo.`,expectedEndOfStatement:e=>`No se esperaba ${e}; se esperaba el final de la instrucci\xF3n.`,unexpectedAtStatementStart:e=>`No se esperaba ${e} al comienzo de una instrucci\xF3n.`,chainedRelations:"Las relaciones encadenadas no se admiten; escribe una relaci\xF3n por instrucci\xF3n.",unexpectedTopLevel:e=>`No se esperaba ${e} en el nivel superior del archivo.`,headerNotFirst:"El encabezado `language` debe ser la primera instrucci\xF3n del archivo.",nestingTooDeep:e=>`Los bloques, las tuplas y las listas est\xE1n anidados en m\xE1s de ${e} niveles.`,invalidIndent:e=>`La sangr\xEDa debe ser de 1 a 8 espacios o "tab", no ${e}.`},expected:{versionString:'una cadena de versi\xF3n como `"0.2"` despu\xE9s de `language`',namespaceAfterAs:"un espacio de nombres despu\xE9s de `as`",asAndNamespace:"`as` y un espacio de nombres despu\xE9s de la ruta",aliasAfterAs:"un alias despu\xE9s de `as`",idAfterComma:"un id que importar despu\xE9s de `,`",pathOrIds:"una cadena con la ruta o los ids que importar despu\xE9s de `import`",pathAfterFrom:"una cadena con la ruta despu\xE9s de `from`",fromAndPath:"`from` y una ruta despu\xE9s de los ids importados",openBody:e=>`\`{\` para abrir el cuerpo ${Object.hasOwn($i,e)?$i[e]:`de ${ke(e)}`}`,diagramId:"un id de diagrama despu\xE9s de `diagram`",colonAfterId:"`:` despu\xE9s del id del diagrama",diagramType:"un tipo de diagrama (`flow`, `sequence`, `c4` o `free`)",modelReference:"una referencia a un modelo despu\xE9s de `using`",idAfter:e=>`un id despu\xE9s de ${ke(e)}`,forAndTarget:"`for` seguido del destino",targetAfterFor:"un destino despu\xE9s de `for`",arrowAfter:e=>`una flecha (\`->\`, \`-->\`, \`<->\` o \`<-->\`) despu\xE9s de ${ke(e)}`,identifierAfterDot:"un identificador despu\xE9s de `.`",relationTarget:e=>`un destino de relaci\xF3n despu\xE9s de ${ke(e)}`,labelAfterColon:"una cadena de etiqueta despu\xE9s de `:`",relationId:"un id de relaci\xF3n despu\xE9s de `as`",labelString:"una cadena de etiqueta",blockAfter:e=>`\`{\` despu\xE9s de ${ke(e)}`},tokens:{endOfLine:"el final de la l\xEDnea",endOfFile:"el final del archivo",string:e=>`la cadena ${e}`},hints:{bom:"La codificaci\xF3n can\xF3nica es UTF-8 sin marca de orden de bytes.",lineEndings:"Usa un solo estilo de fin de l\xEDnea por archivo; las ediciones siguen el primero.",escapes:'Las secuencias de escape admitidas son \\", \\\\, \\n y \\t.',multilineString:"Las cadenas no pueden ocupar varias l\xEDneas; usa \\n para un salto de l\xEDnea dentro de una etiqueta.",arrows:"Los s\xEDmbolos de relaci\xF3n son `->`, `-->`, `--`, `---`, `<->` y `<-->`.",identifiers:"Los identificadores usan letras ASCII, d\xEDgitos y `_`; escribe otros textos en una etiqueta entre comillas.",minus:"Un signo menos debe ir seguido de un d\xEDgito, de `-` o de `>`.",separateStatements:"Separa las instrucciones con un salto de l\xEDnea o `;`.",topLevel:"Las instrucciones de nivel superior son `language`, `import`, `model`, `diagram`, `story`, `export` y `theme`.",insideDiagram:"Los elementos y las relaciones van dentro de un bloque `diagram <id>: flow { ... }`.",headerFirst:"Mu\xE9velo por encima de cada `import` y de cada bloque.",importNamespace:'Escribe `import "<path>" as <namespace>`.',importMembers:'Escribe `import <id>, <id> as <alias> from "<path>"`.',diagramShape:"Escribe `diagram <id>: <type> { ... }`, por ejemplo `diagram checkout: flow { ... }`.",targetedShape:e=>`Escribe \`${e} <id> for <target> { ... }\`.`,labelledElement:'Declara un elemento con etiqueta con `id["Label"]`.',blockAfterWord:"Un bloque debe seguir a una palabra de instrucci\xF3n, por ejemplo `placement { ... }`.",quotedRelationLabel:'Las etiquetas van entre comillas: `a -> b: "Label"`.',quotedShorthandLabel:'Las etiquetas van entre comillas: `id["Label"]` o `id[("Label")]`.'},related:{blockOpened:"El bloque se abri\xF3 aqu\xED."}};var kt=he(Si,Ti);var _=e=>`\`${e}\``,Ri=e=>`${/^[aeiou]/i.test(e)?"an":"a"} ${e}`,Ee=e=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} and ${e.at(-1)}`,gr={person:"at the model's root",system:"at the model's root",container:"in a system",datastore:"in a system",component:"in a container"},Pi={words:{tuple:"a tuple",list:"a list",spec:{oneOf:e=>`one of ${e.join(", ")}`,string:"a quoted string",fontStack:'a non-empty quoted font stack such as "Roboto"',color:"a quoted color",colorOrToken:"a quoted color or a color token",icon:'an icon such as "tabler:server"',timeRange:(e,t)=>`a time from ${e} ms to ${t!==void 0?`${t/1e3} s`:"any length"}, such as \`1200ms\``,time:"a time such as `1200ms`",repeatUpTo:e=>`\`forever\` or a whole number from 1 to ${e}`,repeat:"`forever` or a positive whole number",keywordOrNumber:(e,t,n)=>`${e.map(_).join(", ")} or a number from ${t} to ${n}`,numberRange:(e,t)=>`a number from ${e} to ${t}`,size:(e,t)=>`\`(width, height)\` with numbers from ${e} to ${t}`,classes:"one or more class ids",name:"a name",names:"one or more names",link:"a reference `<diagram>.<element>`",url:'a quoted URL such as "https://example.com"',tag:'one line of quoted text such as "PKCE"'},noteForm:'`note [<id>] over <p>[, <p>] "Text"`, `note [<id>] left of <p> "Text"` or `note [<id>] right of <p> "Text"`',chooseForm:'`choose <fragment> "<condition>"` or `choose <fragment> <n>`'},diagnostics:{common:{expected:e=>`Expected ${e}.`,singleBlock:e=>`\`${e}\` takes a single block.`,needsOneBlock:(e,t)=>`\`${e}\` needs one block: ${t}.`,takesNoBlock:e=>`\`${e}\` takes no block.`,takesNoBlockExpected:(e,t)=>`\`${e}\` takes no block; expected ${t}.`,doesNotTakeBlock:e=>`\`${e}\` does not take a block.`,takesNoValue:e=>`\`${e}\` takes no value.`,expectsString:e=>`\`${e}\` expects a quoted string.`,setMoreThanOnce:e=>`\`${e}\` is set more than once.`,unknownElement:e=>`Unknown element \`${e}\`.`,unknownEntity:(e,t)=>`Unknown entity \`${e}\` in the model \`${t}\`.`,unknownPort:(e,t)=>`\`${e}\` has no port \`${t}\`.`},compile:{duplicateTopLevelId:e=>`\`${e}\` is already used by another top-level block in this file.`,unsupportedVersion:(e,t)=>`Language version "${e}" is not supported; this compiler implements ${t}.`,unknownDiagramType:(e,t)=>`Unknown diagram type \`${e}\`; expected one of ${t.join(", ")}.`,viewWithoutModel:"A c4 view names its model: `diagram <id>: c4 using <model> { }`.",unknownModel:e=>`Unknown model \`${e}\`.`,tooComplex:(e,t,n,i)=>`\`${e}\` has ${t} ${n}; a diagram may have at most ${i}.`,tooLarge:(e,t)=>`The file has ${e} characters; a .meltemi file may have at most ${t}.`,linkNamesModel:e=>`\`${e}\` names a model; a link names one of its entities, such as \`link ${e}.<entity>\`.`,linkUnknownEntity:(e,t)=>`The model \`${e}\` has no entity \`${t}\`.`,linkDiagramShape:e=>`A link to a diagram names one element: \`link ${e}.<element>\`.`,linkToItself:e=>`\`${e}\` points to this diagram; links point to elements of other diagrams.`,linkUnknownElement:(e,t)=>`\`${e}\` has no element \`${t}\`.`,linkNamespace:e=>`\`${e}\` is a namespace; write \`link ${e}.<diagram>.<element>\` or \`link ${e}.<model>.<entity>\`.`,linkUnknownTarget:(e,t)=>`Unknown diagram or model \`${e}\` in the link \`${t}\`.`},flow:{missingProperty:(e,t,n)=>`${e} \`${t}\` needs \`${n}\`.`,relationNotAllowed:(e,t,n)=>`${e} diagrams do not allow relations from \`${t}\` to \`${n}\`.`,imageEmpty:"An image path cannot be empty.",imageAbsolute:e=>`Image paths are relative to the file; \`${e}\` is absolute.`,imageUrl:e=>`Image paths are files of the project; \`${e}\` is a URL.`,imageBackslash:e=>`Image paths use \`/\` between folders: \`${e}\`.`,unknownInGroup:e=>`Unknown statement \`${e}\` in a group.`,unknownInDiagram:(e,t)=>`Unknown statement \`${e}\` in a ${t} diagram.`,quotedSource:(e,t)=>`The ${e} of \`${t}\` must be a quoted string.`,needsSource:(e,t,n)=>`\`${e} ${t}\` needs ${e==="text"||e==="note"||e==="sticky"?"its text":e==="icon"?"an icon":"an image path"}; expected ${n}.`,attachSelf:e=>`A note cannot be attached to itself: \`${e}\`.`,valueAfter:(e,t)=>`Unexpected value after the ${e}; expected ${t}.`,duplicateElement:e=>`\`${e}\` is already declared in this diagram.`,builtInPort:e=>`\`${e}\` is a built-in port; name the port differently.`,portSide:(e,t)=>`The side of port \`${e}\` must be one of ${t.join(", ")}.`,portPosition:"The position of a port is a percentage from 0% to 100%.",unexpectedValue:e=>`Unexpected value; expected ${e}.`,duplicatePort:e=>`Port \`${e}\` is already declared here.`,setTwiceInGroup:e=>`\`${e}\` is set twice for this group.`,relationIdUsedByElement:e=>`\`${e}\` is already used by an element in this diagram.`,relationIdUsed:e=>`\`${e}\` is already used by another relation.`,arrowUnavailable:(e,t)=>`\`${e}\` is not available here; write ${t.slice(0,-1).map(_).join(", ")} or ${_(t[t.length-1])}.`,relationAsEndpoint:e=>`\`${e}\` is a relation, not an element; relation endpoints must be elements.`,setMoreThanOnceInDiagram:e=>`\`${e}\` is set more than once in this diagram.`,canvasConflict:(e,t)=>`\`${e}\` cannot be combined with \`${t}\`; a diagram has one canvas.`,layersEmpty:"`layers` needs one or more layer names, back to front.",invalidLayer:e=>`Invalid layer ${e}; expected a name.`,layerTwice:e=>`Layer \`${e}\` is listed twice.`,unknownLayer:e=>`Unknown layer \`${e}\`.`,placementArguments:"`placement` takes no arguments.",placementBlock:"`placement` needs one block: `placement { ... }`.",relationsInPlacement:"Relations are not allowed inside `placement`.",declarationsInPlacement:"Declarations are not allowed inside `placement`.",unknownPlacement:e=>`Unknown placement statement \`${e}\`.`,noBlock:(e,t)=>`\`${e}\` does not take a block; expected ${t}.`,duplicatePlacement:(e,t)=>`\`${e}\` already has a \`${t}\` statement.`,position:"Expected a position `(x, y)` with two plain numbers.",size:"Expected a size `(width, height)` with two positive numbers.",viaList:"Expected a list of points after `via`, such as `[(520, 180)]`.",waypoint:"Each waypoint must be a point `(x, y)` with two plain numbers.",routeStart:(e,t,n)=>`The route of \`${e}\` must start at \`${t}\`, the source of the relation, but starts at \`${n}\`.`,routeEnd:(e,t,n)=>`The route of \`${e}\` must end at \`${t}\`, the target of the relation, but ends at \`${n}\`.`,endpointShape:e=>`Expected \`<element>.<port>\` but found \`${e}\`.`,endPosition:(e,t)=>`A position goes after a compass side, such as \`${t}.east 50%\`; \`${e}\` is not one.`,endPositionRange:"The position of a route end is a percentage from 0% to 100%.",alignEdge:e=>`\`align\` needs an edge after the elements: one of ${e.join(", ")}.`,distanceGap:"`distance` needs a positive minimum gap in pixels after the two elements.",constraintGroup:e=>`\`${e}\` is a group; constraints apply to boxes, notes and tags.`,constraintTwice:e=>`\`${e}\` appears twice in this constraint.`,constraintCount:(e,t)=>`\`${e}\` needs ${t?"exactly two":"two or more"} elements.`,labelPosition:"Expected a position along the route as a percentage, such as `50%`.",labelOutside:e=>`Label position \`${e}\` is outside 0% to 100%.`,offset:"Expected an offset `(dx, dy)` with two plain numbers.",relationNotElement:(e,t)=>`\`${e}\` is a relation; \`${t}\` needs an element.`,lineHasPoints:(e,t)=>`\`${e}\` is a line; \`${t}\` does not apply to it.`,linePoints:"A line takes a point `(x, y)` after `from` and after `to`, and its bends in a list after `via`.",notForLines:(e,t)=>`\`${e}\` does not apply to lines such as \`${t}\`.`,penHasPoints:(e,t)=>`\`${e}\` is a pen; \`${t}\` does not apply to it.`,penPoints:"A pen takes a list of points `(x, y)` after its id, at least one.",penNoLabel:e=>`\`${e}\` is a pen, which has no label; its points follow its id.`,notForPens:(e,t,n)=>`\`${e}\` does not apply to pens such as \`${t}\`; a pen takes ${Ee(n.map(_))}.`,notForStickies:(e,t)=>`\`${e}\` does not apply to stickies such as \`${t}\`.`,listInProfile:(e,t)=>`A group's \`${e}\` belongs to the lists of free diagrams; this is a ${t} diagram.`,listNeedsLayout:e=>`\`${e}\` arranges the children of a list; this group writes no \`layout\`.`,elementNotRelation:(e,t)=>`\`${e}\` is an element; \`${t}\` needs a relation.`,unknownRelation:e=>`Unknown relation \`${e}\`.`,notForTargets:(e,t,n)=>`\`${e}\` does not apply to ${t?"relations":"elements"} such as \`${n}\`.`,effectConflict:(e,t)=>`\`${e}\` already has a \`${t}\` effect; one target takes one effect of each kind.`,alreadySetFor:(e,t)=>`\`${e}\` is already set for \`${t}\`.`,missingEffect:"An `animate` block needs an `effect`: `flow`, `pulse`, `dash` or `trace`.",effectProperty:(e,t,n)=>`\`${e}\` applies to ${t.map(_).join(" and ")} effects, not to \`${n}\`.`,flowTarget:"Flow particles run along relations, lines and pens; name the relation (`a -> b as r`) and animate it.",traceTarget:"A trace runs along relations, lines and pens; name the relation (`a -> b as r`) and animate it.",dashOnEvent:"A moving dash runs along relations and the outlines of boxes.",dashNeedsOutline:(e,t)=>`\`${e}\` is ${t==="note"?"a note":t==="sticky"?"a sticky":"a text"} without an outline; a moving dash follows a line or a box.`,dashWithoutOutline:(e,t)=>`\`${e}\` is a ${t} without an outline; a moving dash needs a line or a box.`,unknownTarget:e=>`Unknown element or relation \`${e}\`.`},values:{invalidEnum:(e,t,n)=>`Invalid value ${e} for \`${t}\`; expected one of ${n.join(", ")}.`,notColorToken:e=>`\`${e}\` is not a color token.`,expects:(e,t)=>`\`${e}\` expects ${t}.`,expectsIcon:e=>`\`${e}\` expects an icon reference such as "tabler:server".`,timeUnit:e=>`\`${e}\` needs a time unit.`,expectsTime:e=>`\`${e}\` expects a positive time such as \`1200ms\` or \`1.2s\`.`,classNoBlock:"`class` here applies classes and takes no block.",classEmpty:"`class` needs one or more class ids.",invalidClass:e=>`Invalid class ${e}; expected a class id.`,needsValue:(e,t)=>`\`${e}\` needs a value: ${t}.`,oneValue:e=>`\`${e}\` takes one value; remove the extra value.`,onlyProperties:e=>`Only properties are allowed in ${Ri(e)} block.`,unknownProperty:(e,t)=>`Unknown property \`${e}\` in ${Ri(t)} block.`,freeOnly:e=>`\`${e}\` applies to free diagrams only.`,shapeNotFor:(e,t)=>`\`shape\` does not apply to ${e==="relation"?"relations":`\`${e}\` elements`}${t===null?"":` such as \`${t}\``}; it applies to \`node\` and \`box\` elements.`,rotationNotFor:(e,t)=>`\`rotation\` does not turn \`${e}\` elements${t===null?"":` such as \`${t}\``}; it turns the other elements of flow diagrams and free compositions.`,rotationInProfile:e=>`\`rotation\` turns the elements of flow diagrams and free compositions; ${e==="c4"?"C4 views draw":`${e} diagrams draw`} theirs upright.`,shapeInProfile:e=>`\`shape\` applies to \`node\` and \`box\` elements; ${e==="c4"?"C4 views draw":`${e} diagrams draw`} each kind with its own shape.`,duplicateClass:e=>`Class \`${e}\` is already declared here.`,ruleShape:"Expected `rule <kind> { ... }`.",invalidRuleKind:(e,t)=>`Invalid rule kind ${e}; expected one of ${t.join(", ")}.`,ruleBlock:e=>`\`rule ${e}\` needs one block.`,ruleProfile:(e,t,n)=>`\`${e}\` elements belong to ${t.join(" and ")} diagrams; this is a ${n} diagram.`,ruleNotFor:(e,t)=>`\`${e}\` does not apply to ${t==="relation"?"relations":`\`${t}\` elements`}.`,ruleAlreadySet:(e,t)=>`\`${e}\` is already set for \`${t}\` by another rule.`},theme:{onlyTokens:"Only tokens, classes and rules are allowed in a theme block.",unknownToken:e=>`Unknown theme token \`${e}\`.`,unknownBase:(e,t)=>`Theme \`${e}\` extends "${t}", which is neither built in nor defined in this file.`,cycle:e=>`Theme \`${e}\` inherits from itself through \`extends\`.`},c4:{notDrawn:e=>`\`${e}\` is not drawn in this view.`,invalidLevel:"Expected `level context`, `level container` or `level component`.",missingLevel:"A c4 view needs `level context`, `level container` or `level component`.",listTwice:e=>`\`${e}\` is written more than once; list every entity in one statement.`,listShape:e=>`Expected \`${e} <entity>, <entity>...\`.`,listByPath:e=>`\`${e}\` lists entities by their path, such as \`shop.api\`.`,listedTwice:(e,t)=>`\`${e}\` appears twice in \`${t}\`.`,scopeIncluded:(e,t)=>`\`${e}\` is the scope of this view; it is drawn as the boundary of its ${t==="container"?"containers":"components"}.`,outOfLevel:(e,t,n)=>`A ${e} view does not draw the ${t} \`${n}\`.`,viewDeclares:"Views draw the model's entities; they declare none.",unknownInView:e=>`Unknown statement \`${e}\` in a c4 view.`,scopeRequired:e=>`A ${e} view needs a scope: the ${e==="container"?"system":"container"} it opens.`,scopeShape:"Expected `scope <entity>`, such as `scope shop`.",datastoreScope:e=>`\`${e}\` is a datastore; datastores have no components.`,invalidScope:(e,t,n,i)=>`The scope of a ${e} view is a ${t}; \`${n}\` is a ${i}.`,alreadyCombined:(e,t)=>`\`${e} -> ${t}\` is already combined by another relation of this view.`,relationIdUsed:e=>`\`${e}\` is already used by a relation of the model or this view.`,unsupportedRelation:(e,t)=>`No relation of the model goes from \`${e}\` to \`${t}\`; a view draws no arrow for convenience.`,labelShape:'Expected `label <entity-or-relation> "Text"`; in `placement`, `label <relation> at <n>%` moves a label.',labelTwice:e=>`\`${e}\` already has a local label.`},model:{brackets:"Model entities are declared with their kind, not with brackets.",unknownStatement:(e,t)=>`Unknown statement \`${e}\` in ${t?`the ${t.kind} \`${t.path}\``:"a model"}.`,invalidNesting:(e,t)=>`A ${e} cannot be declared ${t?`in the ${t.kind} \`${t.path}\``:"at the model's root"}; ${e}s belong ${gr[e]??""}.`,duplicateEntity:e=>`\`${e}\` is already declared in this model.`,external:"`external` marks persons and systems outside the organisation.",quotedExample:e=>`\`${e}\` expects a quoted string, such as \`${e} "${e==="technology"?"PostgreSQL":e==="url"?"https://example.com":"What it does"}"\`.`,url:"`url` takes an `https:`, `http:` or `mailto:` URL, or a relative one.",arrow:"Model relations are written with `->`.",selfRelation:e=>`A relation from \`${e}\` to itself says nothing in a model.`,nestedRelation:(e,t)=>`\`${e}\` and \`${t}\` are nested in each other; a relation connects separate entities.`,relationIdUsed:e=>`\`${e}\` is already used by another relation of the model.`,unknownInRelation:e=>`Unknown statement \`${e}\` in a model relation.`},sequence:{groupHoldsParticipants:"Participant groups hold participant declarations; events go at the diagram level or in fragments.",groupEnd:e=>`\`${e}\` is a participant group; messages go between participants.`,idUsed:e=>`\`${e}\` is already used in this diagram.`,unknownParticipant:e=>`Unknown participant \`${e}\`.`,participantGroup:e=>`\`${e}\` is a participant group.`,participantsAtTop:"Participants are declared at the diagram level, not inside fragments.",unknownInFragment:e=>`Unknown statement \`${e}\` in a fragment.`,returnOutsideCall:"`return` answers a call: write it inside the call's block.",afterReturn:e=>`\`${e}\` already returned; move this event before the \`return\`.`,activeForCall:(e,t)=>`\`${e}\` is active for the call \`${t}\`; its bar ends with the block.`,tagOneLine:"A tag is one line of text; it cannot be empty or hold a line break.",tagRepeated:e=>`The tag "${e}" is already written in this block.`,divider:'Expected `divider "Label"`.',delay:'Expected `delay` or `delay "Label"`.',noteSide:e=>`Expected \`${e} of <participant>\`.`,noteText:e=>`A note needs its text; expected ${e}.`,noteParticipant:e=>`A note needs a participant; expected ${e}.`,oneParticipant:e=>`\`${e} of\` takes one participant.`,invalidParticipant:e=>`Invalid participant ${e}.`,branchKeyword:(e,t,n)=>`\`${e}\` continues with \`${t}\`, not \`${n}\`.`,needsBlock:e=>`\`${e}\` needs a block.`,destroyedBeforeMessage:e=>`\`${e}\` was destroyed before this message.`,destroyedBeforeEvent:e=>`\`${e}\` was destroyed before this event.`,destroyedBeforeNote:e=>`\`${e}\` was destroyed before this note.`,createdTwice:e=>`\`${e}\` is created twice.`,createAfterUse:e=>`\`${e}\` already took part in the sequence; \`create\` comes before its first event.`,destroyedTwice:e=>`\`${e}\` is destroyed twice.`,notActive:e=>`\`${e}\` is not active here.`,placementStatement:e=>`\`${e}\` does not apply to sequence diagrams.`,pixels:e=>`Expected ${e} with a number of pixels, 0 or more.`,signedPixels:e=>`Expected ${e} with a number of pixels.`,side:e=>`Expected ${e}: the side is \`before\` or \`after\`.`,outerGap:(e,t)=>t==="before"?`\`${e}\` is the first participant: a gap before it is 0 or more.`:`\`${e}\` is the last participant: a gap after it is 0 or more.`,unknownEvent:e=>`Unknown event \`${e}\`.`,duplicateScenario:e=>`Scenario \`${e}\` is already declared.`,scenarioStatements:"Scenarios hold `choose`, `repeat`, `skip` and `take`.",decidedTwice:e=>`\`${e}\` is already decided in this scenario.`,unknownFragment:e=>`Unknown fragment \`${e}\`.`,choiceOperator:(e,t,n,i)=>`\`${e}\` does not apply to the \`${t}\` fragment \`${n}\`; it decides ${i.map(_).join(" and ")} fragments.`,noBranch:(e,t)=>`\`${e}\` has no branch "${t}".`,branchCount:(e,t)=>`\`${e}\` has ${t} branches; choose 1 to ${t}.`,loopCount:"A loop repeats 1 to 100 times in a scenario."},story:{unknownDiagram:e=>`There is no diagram \`${e}\` to tell a story about.`,namesDiagram:"A story names its diagram: `story <id> for <diagram> { }`.",time:e=>`\`${e}\` takes a time from \`0ms\` to \`600s\`, such as \`800ms\`.`,contents:"A story holds `title`, `description` and `scene` blocks.",notStoryStatement:e=>`\`${e}\` is not a story statement; a story holds \`title\`, \`description\` and \`scene\` blocks.`,sceneShape:'A scene is `scene <id> ["Title"] { \u2026 }`.',duplicateScene:e=>`The story already has a scene \`${e}\`.`,sceneContents:"A scene holds `view`, `transition` and actions.",viewFirst:"`view <diagram>` comes first in a scene and names one diagram.",transitionFirst:"`transition cut|fade|morph [over <time>]` comes before the scene's actions, once.",notAction:e=>`\`${e}\` is not a story action.`,missingTransition:e=>`The scene changes to \`${e}\`; say how with \`transition cut\`, \`fade\` or \`morph\`.`,emptyScene:e=>`The scene \`${e}\` has no actions and takes no time.`,afterOver:"Nothing follows the time of `over`.",hold:"`hold` takes one time, such as `hold 1s`.",parallel:"`parallel { \u2026 }` holds actions that start together.",namesTargets:e=>`\`${e}\` names what it acts on, such as \`${e} api\`.`,traceOne:"`trace` follows one relation; use `parallel` to trace several.",ids:e=>`\`${e}\` takes ids separated by commas.`,unknownTarget:(e,t)=>`\`${e}\` has no element or named relation \`${t}\`.`,traceTarget:(e,t)=>`\`trace\` follows a relation; \`${e}\` is ${t?"an element":"a note or fragment"}.`,drawTarget:(e,t)=>`\`draw\` takes pens, lines and relations; \`${e}\` is ${t===null?"a note or fragment":`${/^[aeiou]/i.test(t)?"an":"a"} \`${t}\` element`}.`,conflict:(e,t,n)=>`\`${e}\` overlaps an earlier action on the same ${t} of \`${n}\`.`},export:{namesTarget:"A profile names what it exports: `export <id> for <diagram-or-story> { }`.",unknownTarget:e=>`There is no diagram or story \`${e}\` to export.`,options:"An export profile holds options such as `format png`.",notOption:e=>`\`${e}\` is not an option of export profiles.`,oneValue:e=>`\`${e}\` takes one value.`,fps:"`fps` takes a whole number from 1 to 60.",file:"`file` takes a path relative to this file, inside its folder, with `/` between folders.",missingFormat:(e,t)=>`The profile \`${e}\` needs a \`format\`: ${t.join(", ")}.`,notForFormat:(e,t,n)=>`\`${e}\` does not apply to ${t} exports; it applies to ${n.join(", ")}.`,atWithMotion:"`at` writes one frame; it does not go with `motion animated`.",extension:(e,t)=>`\`file\` of a ${e} export ends in \`.${t}\`.`,storyMotion:"A story's export draws its frames; `motion` applies to diagrams.",storyScenario:"A story shows its own views; `scenario` applies to sequence diagrams.",atPastEnd:e=>`The story lasts ${e} ms; \`at\` is within it.`,unknownScenario:(e,t,n)=>`\`${e}\` has no scenario \`${t}\`; its scenarios: ${n.join(", ")}.`,noScenarios:e=>`\`${e}\` has no scenarios.`}},hints:{example:e=>`Example: \`${e}\`.`,didYouMean:e=>`Did you mean ${e.map(_).join(", ")}?`,compile:{version:e=>`Change the header to \`language "${e}"\`.`,declareModel:"Declare `model <id> { \u2026 }` in this file, or import the file that declares it.",models:(e,t,n)=>`Models: ${[...e,...t.map(i=>`${i} (imported)`),...n.map(i=>`${i}.<model>`)].join(", ")}.`,splitDiagram:"Split it into several diagrams; views of a model can share its entities.",splitFile:"Split it into several files that import each other.",elementsOf:(e,t)=>`Elements of \`${e}\`: ${t.join(", ")}.`,diagramsAndModels:e=>`Diagrams and models in this file: ${e.join(", ")}.`,linkTargets:"Link to a diagram or a model of this file, or of a file you import."},flow:{requiredProperty:(e,t,n)=>`${e} diagrams require \`${t}\` on every ${n}.`,allowedRelations:e=>`Allowed: ${e.join(", ")||"none"}.`,imagePath:'Write a path relative to this file inside the project, such as "logo.png".',diagramLevel:e=>`\`${e}\` belongs at the diagram level, not inside a group.`,groupContents:"Groups contain element declarations, relations, nested groups, `description` and `url`.",declareElement:(e,t)=>`Declare an element with \`${e}["Label"]\` or \`${t} ${e}\`.`,freeStatements:e=>`Free diagrams accept ${Ee(e.map(_))} declarations, relations, \`direction\`, \`layout\`, \`theme\`, \`title\`, \`description\`, \`preset\`, \`canvas\`, \`routing\`, \`layers\`, \`placement\`, \`style\`, \`animate\`, \`class\` and \`rule\`.`,flowStatements:"Flow diagrams accept element declarations, relations, `direction`, `layout`, `theme`, `title`, `description`, `preset`, `canvas`, `routing`, `placement`, `style`, `animate`, `class` and `rule`.",freeDeclarations:e=>`Free diagrams declare ${Ee(e.map(_))}.`,attachTarget:e=>`Attach \`${e}\` to an element of this diagram: \`note ${e} "Text" on <element>\`.`,flowDeclarations:e=>`Flow diagrams declare \`node\`, \`decision\`, \`data\`, \`group\`, \`note\` and \`tag\`; \`${e}\` belongs to free diagrams.`,sharedNamespace:"Elements and relations share one namespace per diagram.",elementBlock:e=>Mi("Element",e),relationBlock:e=>Mi("Relation",e),compassPorts:"Compass ports (`north`, `south`, `east`, `west`) and `auto` need no declaration.",oneCanvas:"Keep either `preset` or `canvas (width, height)`.",qualifiedEndpoint:"Qualified references are not available in flow diagrams; use the element id. Ports belong in `route` statements.",layers:e=>`Layers: ${e.join(", ")}.`,declareLayer:e=>`Declare it with \`layers ${e.join(", ")}\`.`,placementAccepts:e=>`A \`placement\` block accepts ${e.map(_).join(", ")}.`,ports:(e,t)=>`Ports of \`${e}\`: ${t.join(", ")}.`,constraintElements:"Constraints apply to elements declared in this diagram.",dashOutline:"Give it a `fill`, a `stroke` or a `pattern` in a `style`, a class or a `rule` of this diagram, or use a pulse.",dashStroke:"Give it a `stroke` in a `style`, a class or a `rule` of this diagram, or use a pulse.",form:e=>`Form: ${e}.`,linePointsWritten:"A line's points are written in its statement: `line <id> from (x, y) to (x, y)`.",penPointsWritten:"A pen's points are written in its statement: `pen <id> [(x, y), (x, y), ...]`.",listsInFree:"Free diagrams arrange a group's children in a column or a row with `layout column` or `layout row`.",listLayout:"Write `layout column` or `layout row` in the group's block.",groupLayout:e=>`\`layout ${e}\` is a statement of the diagram; a group block takes \`layout column\` or \`layout row\`.`,declareFirst:e=>`Declare it first, for example \`${e}["Label"]\`.`,nameRelation:"Anonymous relations need `as <id>` before they can be referenced, for example `a -> b as save`.",styleAccepts:e=>`\`style\` blocks accept ${e.map(_).join(", ")}.`,animateAccepts:"`animate` blocks accept `effect`, `duration` and `repeat`.",mergeEffects:"Remove one of the statements, or merge their properties into one.",styleTargets:e=>`\`${e}\` targets an element or a relation named with \`as <id>\`.`},values:{colorTokens:e=>`Color tokens: ${e.join(", ")}.`,cssColor:(e,t)=>`Write \`${e} "${t}"\` for a CSS color.`,colorOrToken:e=>`Example: \`${e} "#1f6feb"\` or \`${e} accent\`.`,iconForm:'Icons are written as "<pack>:<name>".',timeUnit:"Add `ms` or `s`, for example `1200ms` or `1.2s`.",link:"Example: `link checkout.api`, or `link shop.checkout.api` through a namespace import.",url:"Links may use `https:`, `http:` or `mailto:`, or be relative to the exported file.",declareClasses:"Declare classes at the top level of a diagram or in a theme block.",appliesToElements:e=>`\`${e}\` applies to elements.`,appliesToRelations:e=>`\`${e}\` applies to relations.`,classesCannotApply:"Classes cannot apply other classes; list every class where it is used.",styleProperties:e=>`Classes and rules accept ${e.map(_).join(", ")}.`,freeProperties:"Flow, sequence and C4 diagrams place text where its shape puts it; free diagrams choose its alignment with `textAlign` and `verticalAlign`.",textTargets:"`font`, `fontSize` and `fontWeight` apply to what draws text: boxes, nodes, groups, notes, tags, stickies, texts, participants, entities, relations and lines, not icons, images or pens.",freeOpacity:"Flow, sequence and C4 diagrams draw every element opaque; free diagrams fade elements, groups, lines and pens with `opacity`.",opacityTargets:"`opacity` applies to elements, groups, lines and pens.",penProperties:e=>`A pen takes ${Ee(e.map(_))}.`,penWidth:"A pen is drawn one pixel wide at least; remove the pen to hide its stroke.",stickyProperties:e=>`A sticky takes ${Ee(e.map(_))}.`,applyClasses:"Apply classes inside element, relation or `style` blocks.",kinds:e=>`Kinds: ${e.join(", ")}.`},theme:{tokens:e=>`Theme tokens: ${e.join(", ")}; theme blocks also accept \`class <id> { }\` and \`rule <kind> { }\`.`,builtIn:e=>`Built-in themes: ${e.join(", ")}.`,cycle:"Make one theme of the chain extend a built-in theme instead."},c4:{entityPath:"Entities are named by their path from the model's root, such as `shop.api`.",ports:e=>`Ports: ${e.join(", ")}.`,routeEnds:"Route ends are entities of the view, optionally with a port: `shop.api.east`.",nameEntity:"Name an entity of the view by its path, such as `shop.api`.",include:e=>`Add it with \`include ${e}\`, or remove it from \`exclude\`.`,notAtLevel:(e,t,n)=>`\`${e}\` is a ${t}, which a ${n} view does not draw.`,removeScope:e=>`Remove \`${e}\` from \`include\`.`,contextLevel:"Context views draw persons and software systems.",containerLevel:e=>`Container views draw the containers and datastores of \`${e??"the scope"}\`, persons and other systems.`,componentLevel:e=>`Component views draw the components of \`${e??"the scope"}\`, the other containers of its system, persons and other systems.`,declareInModel:(e,t)=>`Declare \`${e}\` in the model \`${t}\` and list it in \`include\`.`,entitiesInModel:e=>`Entities are declared in the model \`${e}\`; a view lists them in \`include\`.`,viewStatements:"C4 views accept `level`, `scope`, `include`, `exclude`, `label`, relations that combine model relations, `direction`, `layout`, `routing`, `theme`, `title`, `description`, `preset`, `canvas`, `placement`, `style`, `animate`, `class` and `rule`.",addLevel:"Add `level container` and `scope <system>` for a container view.",systemScope:"Add `scope <system>`, such as `scope shop`.",containerScope:"Add `scope <container>`, such as `scope shop.api`.",addToModel:"Add the relation to the model, or remove this one.",localLabel:"A local label names an entity or a relation drawn in this view."},model:{kindNotBrackets:e=>`Write \`container ${e} "Label"\` or another entity kind.`,blockAccepts:(e,t)=>`${e[0].toUpperCase()}${e.slice(1)} blocks accept ${t.map(_).join(", ")} and relations.`,modelAccepts:"Models declare `person` and `system` entities, with containers, datastores and components inside, and relations `a -> b`.",canDeclare:e=>`Here you can declare ${e.map(_).join(" and ")}.`,holdsNothing:e=>`A ${e} holds no entities.`,declareEntity:'Declare it in the model first, such as `container api "API"` inside a system.',dashed:"Replies and dashed lines belong to sequence and flow diagrams.",relationAccepts:"Model relations accept `technology`, `description` and `assumption`."},sequence:{otherDeclaration:(e,t,n)=>`\`${e}\` belongs to ${t} diagrams. Sequence diagrams declare ${n.map(_).join(", ")} and \`group\`.`,statements:"Sequence diagrams accept participants, `group`, messages, `activate`, `deactivate`, `create`, `destroy`, `note`, the fragments `alt`, `opt`, `loop`, `par`, `break`, `critical` and `region`, `divider`, `delay`, `title`, `description`, `theme`, `preset`, `canvas`, `autonumber`, `placement`, `style`, `animate`, `class`, `rule` and `scenario`.",sharedNamespace:"Elements, relations, notes and fragments share one namespace per diagram.",declareParticipant:e=>`Declare it first, for example \`participant ${e} "${e}"\`.`,fragmentContents:"Fragments hold messages and the other events, and nested fragments.",tagPlace:'A tag goes in the block of a message or a participant, such as `api -> bank: "Authorize" { tag "PKCE" }` or `participant bank "Bank" { tag "external" }`.',messageBlock:(e,t)=>`Message blocks accept ${Ee(e.map(_))}; a call's block also holds messages and the events ${Ee(t.map(_))}.`,returnInCall:'Write it inside the call\'s block: `a -> b: "Pay" { return "OK" }`.',activate:e=>`Add \`activate ${e}\` before it, or remove this \`deactivate\`.`,placement:"Sequence diagrams keep the order of events: use `space <event> <n>`, `gap <participant> <n>` and `label <message> at <n>% offset (dx, dy)`.",outerGap:e=>`There is nothing left of \`${e}\` to tighten; a gap on the outer side is 0 or more.`,spaceTarget:'`space` names a message with `as <id>`, or a note or fragment with an id, such as `alt check "OK" { }`.',namedFragments:e=>`Named fragments: ${e.map(t=>`\`${t.id}\` (${t.operator})`).join(", ")}.`,nameFragment:'Name a fragment to decide it, such as `alt check "Approved" { }`.',branches:e=>`Branches: ${e.map(t=>`"${t}"`).join(", ")}.`},story:{diagrams:e=>`Diagrams: ${e.join(", ")}.`,declareDiagram:"Declare a diagram or import one.",actionsInScene:"Actions such as `reveal` go inside `scene <id> { \u2026 }`.",actions:"Actions: reveal, hide, highlight, focus, camera, trace, draw, hold and parallel.",transition:"A change of composition between scenes needs an explicit transition, matched by id.",conflict:"Two actions on one property of a target must not run at the same time; move one out of the `parallel` block."},export:{targets:e=>`Diagrams and stories: ${e.join(", ")}.`,declareTarget:"Declare a diagram or a story.",options:e=>`Options: ${e.join(", ")}.`,background:"`background transparent`, a quoted colour or a colour token."}},related:{firstUsed:"First used here.",firstDeclared:"First declared here.",firstSet:"First set here.",firstOne:"First one here.",elementDeclared:"Element declared here.",firstEffect:"The first effect.",firstWritten:"First written here.",firstDecided:"First decided here.",firstScene:"The first scene.",earlierAction:"The earlier action."},problems:{notObject:"A diagram type must be an object.",where:e=>`diagram type \`${e}\``,kindWhere:(e,t)=>`${e}, kind \`${t}\``,relationsWhere:e=>`${e}, relations`,styleObject:e=>`${e}: the style must be an object.`,styleWords:(e,t,n)=>`${e}: \`${t}\` takes ${n.join(", ")}.`,styleColor:(e,t)=>`${e}: \`${t}\` takes a colour token such as "@accent" or a CSS colour.`,styleNumber:(e,t)=>`${e}: \`${t}\` takes a number in range.`,styleIcon:e=>`${e}: \`icon\` takes a reference such as "tabler:table".`,styleFont:e=>`${e}: \`font\` takes a font stack such as "Roboto".`,styleUnknown:(e,t)=>`${e}: unknown style property \`${t}\`.`,propertiesObject:e=>`${e}: \`properties\` must be an object.`,propertyName:(e,t)=>`${e}: \`${t}\` cannot name a property.`,propertyKind:(e,t)=>`${e}: property \`${t}\` takes "string", "number", "boolean" or { "kind": "enum", "values": [...] }.`,enumValues:(e,t)=>`${e}: enum property \`${t}\` needs "values".`,typeWord:e=>`${e}: \`type\` must be a lower-case word that is not a word of the language.`,layoutValue:(e,t,n)=>`${e}: layout \`${t}\` takes ${n.join(", ")}.`,noKinds:e=>`${e}: \`elements\` must name at least one kind.`,kindWord:e=>`${e}: a kind must be a lower-case word that is not a word of the language.`,requiredUndeclared:(e,t)=>`${e}: required property \`${t}\` is not declared.`,allowedPairs:e=>`${e}: relations \`allowed\` must be a list of [from, to] pairs.`,unknownPair:(e,t)=>`${e}: relation pair ${t} names an unknown kind.`,unknownTool:(e,t)=>`${e}: tool for unknown kind \`${t}\`.`}};function Mi(e,t){let n=t.map(_);return`${e} blocks accept ${n.slice(0,-1).join(", ")} and ${n[n.length-1]}.`}var a=e=>`\`${e}\``,re=e=>Xn("es",e,3),Y=(e,t)=>Object.hasOwn(e,t)?e[t]:a(t),Li={flow:"un diagrama de flujo",free:"una composici\xF3n libre",sequence:"un diagrama de secuencia",c4:"una vista C4"},Ne={flow:"los diagramas de flujo",free:"las composiciones libres",sequence:"los diagramas de secuencia",c4:"las vistas C4"},Ii={person:{a:"una persona",the:"la persona",many:"las personas",of:"de persona"},system:{a:"un sistema",the:"el sistema",many:"los sistemas",of:"de sistema"},container:{a:"un contenedor",the:"el contenedor",many:"los contenedores",of:"de contenedor"},datastore:{a:"un almac\xE9n de datos",the:"el almac\xE9n de datos",many:"los almacenes de datos",of:"de almac\xE9n de datos"},component:{a:"un componente",the:"el componente",many:"los componentes",of:"de componente"}},ae=e=>Object.hasOwn(Ii,e)?Ii[e]:{a:a(e),the:a(e),many:a(e),of:a(e)},xt={context:"de contexto",container:"de contenedores",component:"de componentes"},yr={person:"en la ra\xEDz del modelo",system:"en la ra\xEDz del modelo",container:"en un sistema",datastore:"en un sistema",component:"en un contenedor"},kr={note:"una nota",text:"un texto",icon:"un icono",image:"una imagen",actor:"un actor",boundary:"un l\xEDmite",control:"un control",entity:"una entidad"},Ai={element:"un bloque de elemento",relation:"un bloque de relaci\xF3n"},Di=e=>Object.hasOwn(Ai,e)?Ai[e]:`un bloque ${a(e)}`,xr={elements:"elementos",relations:"relaciones",events:"eventos"},br={icon:"El icono",image:"La imagen",label:"La etiqueta",text:"El texto"},vr={text:"del texto",icon:"del icono",image:"de la imagen",label:"de la etiqueta"},wr={visibility:"la misma visibilidad",highlight:"el mismo resaltado",trace:"el mismo recorrido",focus:"el mismo foco",camera:"la misma c\xE1mara"},Oi=e=>e===null?"del \xE1mbito":`de ${a(e)}`,Ci={words:{tuple:"una tupla",list:"una lista",spec:{oneOf:e=>`uno de estos valores: ${e.join(", ")}`,string:"una cadena entre comillas",fontStack:'una pila de fuentes no vac\xEDa entre comillas, como "Roboto"',color:"un color entre comillas",colorOrToken:"un color entre comillas o un token de color",icon:'un icono como "tabler:server"',timeRange:(e,t)=>t!==void 0?`un tiempo de ${re(e)} ms a ${re(t/1e3)} s, como \`1200ms\``:`un tiempo de ${re(e)} ms o m\xE1s, como \`1200ms\``,time:"un tiempo como `1200ms`",repeatUpTo:e=>`\`forever\` o un n\xFAmero entero de 1 a ${re(e)}`,repeat:"`forever` o un n\xFAmero entero positivo",keywordOrNumber:(e,t,n)=>`${e.map(a).join(", ")} o un n\xFAmero de ${re(t)} a ${re(n)}`,numberRange:(e,t)=>`un n\xFAmero de ${re(e)} a ${re(t)}`,size:(e,t)=>`\`(width, height)\` con n\xFAmeros de ${re(e)} a ${re(t)}`,classes:"uno o m\xE1s ids de clase",name:"un nombre",names:"uno o m\xE1s nombres",link:"una referencia `<diagram>.<element>`",url:'una URL entre comillas como "https://example.com"',tag:'una l\xEDnea de texto entre comillas como "PKCE"'},noteForm:'`note [<id>] over <p>[, <p>] "Text"`, `note [<id>] left of <p> "Text"` o `note [<id>] right of <p> "Text"`',chooseForm:'`choose <fragment> "<condition>"` o `choose <fragment> <n>`'},diagnostics:{common:{expected:e=>`Se esperaba ${e}.`,singleBlock:e=>`${a(e)} admite un solo bloque.`,needsOneBlock:(e,t)=>`${a(e)} necesita un bloque: ${t}.`,takesNoBlock:e=>`${a(e)} no admite bloque.`,takesNoBlockExpected:(e,t)=>`${a(e)} no admite bloque; se esperaba ${t}.`,doesNotTakeBlock:e=>`${a(e)} no admite bloque.`,takesNoValue:e=>`${a(e)} no admite valor.`,expectsString:e=>`${a(e)} espera una cadena entre comillas.`,setMoreThanOnce:e=>`${a(e)} se asigna m\xE1s de una vez.`,unknownElement:e=>`Elemento desconocido ${a(e)}.`,unknownEntity:(e,t)=>`Entidad desconocida ${a(e)} en el modelo ${a(t)}.`,unknownPort:(e,t)=>`${a(e)} no tiene ning\xFAn puerto ${a(t)}.`},compile:{duplicateTopLevelId:e=>`${a(e)} ya lo usa otro bloque de nivel superior de este archivo.`,unsupportedVersion:(e,t)=>`La versi\xF3n del lenguaje "${e}" no es compatible; este compilador implementa la versi\xF3n ${t}.`,unknownDiagramType:(e,t)=>`Tipo de diagrama desconocido ${a(e)}; se esperaba uno de estos: ${t.join(", ")}.`,viewWithoutModel:"Una vista C4 nombra su modelo: `diagram <id>: c4 using <model> { }`.",unknownModel:e=>`Modelo desconocido ${a(e)}.`,tooComplex:(e,t,n,i)=>`${a(e)} tiene ${t} ${xr[n]??n}; un diagrama puede tener como m\xE1ximo ${i}.`,tooLarge:(e,t)=>`El archivo tiene ${e} caracteres; un archivo .meltemi puede tener como m\xE1ximo ${t}.`,linkNamesModel:e=>`${a(e)} nombra un modelo; un enlace nombra una de sus entidades, como \`link ${e}.<entity>\`.`,linkUnknownEntity:(e,t)=>`El modelo ${a(e)} no tiene ninguna entidad ${a(t)}.`,linkDiagramShape:e=>`Un enlace a un diagrama nombra un elemento: \`link ${e}.<element>\`.`,linkToItself:e=>`${a(e)} apunta a este diagrama; los enlaces apuntan a elementos de otros diagramas.`,linkUnknownElement:(e,t)=>`${a(e)} no tiene ning\xFAn elemento ${a(t)}.`,linkNamespace:e=>`${a(e)} es un espacio de nombres; escribe \`link ${e}.<diagram>.<element>\` o \`link ${e}.<model>.<entity>\`.`,linkUnknownTarget:(e,t)=>`Diagrama o modelo desconocido ${a(e)} en el enlace ${a(t)}.`},flow:{missingProperty:(e,t,n)=>`${e} ${a(t)} necesita ${a(n)}.`,relationNotAllowed:(e,t,n)=>`Los diagramas ${e} no permiten relaciones de ${a(t)} a ${a(n)}.`,imageEmpty:"La ruta de una imagen no puede estar vac\xEDa.",imageAbsolute:e=>`Las rutas de las im\xE1genes son relativas al archivo; ${a(e)} es absoluta.`,imageUrl:e=>`Las rutas de las im\xE1genes son archivos del proyecto; ${a(e)} es una URL.`,imageBackslash:e=>`Las rutas de las im\xE1genes usan \`/\` entre carpetas: ${a(e)}.`,unknownInGroup:e=>`Instrucci\xF3n desconocida ${a(e)} en un grupo.`,unknownInDiagram:(e,t)=>`Instrucci\xF3n desconocida ${a(e)} en ${Y(Li,t)}.`,quotedSource:(e,t)=>`${br[e]??a(e)} de ${a(t)} debe ser una cadena entre comillas.`,needsSource:(e,t,n)=>`\`${e} ${t}\` necesita ${e==="text"||e==="note"||e==="sticky"?"su texto":e==="icon"?"un icono":"la ruta de una imagen"}; se esperaba ${n}.`,attachSelf:e=>`Una nota no puede estar unida a s\xED misma: ${a(e)}.`,valueAfter:(e,t)=>`Valor inesperado despu\xE9s ${vr[e]??`de ${a(e)}`}; se esperaba ${t}.`,duplicateElement:e=>`${a(e)} ya est\xE1 declarado en este diagrama.`,builtInPort:e=>`${a(e)} es un puerto integrado; dale otro nombre al puerto.`,portSide:(e,t)=>`El lado del puerto ${a(e)} debe ser uno de estos: ${t.join(", ")}.`,portPosition:"La posici\xF3n de un puerto es un porcentaje de `0%` a `100%`.",unexpectedValue:e=>`Valor inesperado; se esperaba ${e}.`,duplicatePort:e=>`El puerto ${a(e)} ya est\xE1 declarado aqu\xED.`,setTwiceInGroup:e=>`${a(e)} se asigna dos veces en este grupo.`,relationIdUsedByElement:e=>`${a(e)} ya lo usa un elemento de este diagrama.`,relationIdUsed:e=>`${a(e)} ya lo usa otra relaci\xF3n.`,arrowUnavailable:(e,t)=>`${a(e)} no est\xE1 disponible aqu\xED; escribe ${q("es",t.map(a),"disjunction")}.`,relationAsEndpoint:e=>`${a(e)} es una relaci\xF3n, no un elemento; los extremos de una relaci\xF3n deben ser elementos.`,setMoreThanOnceInDiagram:e=>`${a(e)} se asigna m\xE1s de una vez en este diagrama.`,canvasConflict:(e,t)=>`${a(e)} no se puede combinar con ${a(t)}; un diagrama tiene un solo lienzo.`,layersEmpty:"`layers` necesita uno o m\xE1s nombres de capa, de atr\xE1s hacia adelante.",invalidLayer:e=>`Capa no v\xE1lida: ${e}; se esperaba un nombre.`,layerTwice:e=>`La capa ${a(e)} aparece dos veces.`,unknownLayer:e=>`Capa desconocida ${a(e)}.`,placementArguments:"`placement` no admite argumentos.",placementBlock:"`placement` necesita un bloque: `placement { ... }`.",relationsInPlacement:"No se permiten relaciones dentro de `placement`.",declarationsInPlacement:"No se permiten declaraciones dentro de `placement`.",unknownPlacement:e=>`Instrucci\xF3n desconocida ${a(e)} en \`placement\`.`,noBlock:(e,t)=>`${a(e)} no admite bloque; se esperaba ${t}.`,duplicatePlacement:(e,t)=>`${a(e)} ya tiene una instrucci\xF3n ${a(t)}.`,position:"Se esperaba una posici\xF3n `(x, y)` con dos n\xFAmeros sin unidad.",size:"Se esperaba un tama\xF1o `(width, height)` con dos n\xFAmeros positivos.",viaList:"Se esperaba una lista de puntos despu\xE9s de `via`, como `[(520, 180)]`.",waypoint:"Cada punto de paso debe ser un punto `(x, y)` con dos n\xFAmeros sin unidad.",routeStart:(e,t,n)=>`La ruta de ${a(e)} debe empezar en ${a(t)}, el origen de la relaci\xF3n, pero empieza en ${a(n)}.`,routeEnd:(e,t,n)=>`La ruta de ${a(e)} debe terminar en ${a(t)}, el destino de la relaci\xF3n, pero termina en ${a(n)}.`,endpointShape:e=>`Se esperaba \`<element>.<port>\`, pero se encontr\xF3 ${a(e)}.`,endPosition:(e,t)=>`Una posici\xF3n va despu\xE9s de un punto cardinal, como ${a(`${t}.east 50%`)}; ${a(e)} no lo es.`,endPositionRange:"La posici\xF3n del extremo de una ruta es un porcentaje de `0%` a `100%`.",alignEdge:e=>`\`align\` necesita, despu\xE9s de los elementos, uno de estos lados: ${e.join(", ")}.`,distanceGap:"`distance` necesita una separaci\xF3n m\xEDnima positiva en p\xEDxeles despu\xE9s de los dos elementos.",constraintGroup:e=>`${a(e)} es un grupo; las restricciones se aplican a cajas, notas y marcas.`,constraintTwice:e=>`${a(e)} aparece dos veces en esta restricci\xF3n.`,constraintCount:(e,t)=>`${a(e)} necesita ${t?"exactamente dos":"dos o m\xE1s"} elementos.`,labelPosition:"Se esperaba una posici\xF3n a lo largo de la ruta en porcentaje, como `50%`.",labelOutside:e=>`La posici\xF3n de la etiqueta ${a(e)} est\xE1 fuera del rango de \`0%\` a \`100%\`.`,offset:"Se esperaba un desplazamiento `(dx, dy)` con dos n\xFAmeros sin unidad.",relationNotElement:(e,t)=>`${a(e)} es una relaci\xF3n; ${a(t)} necesita un elemento.`,lineHasPoints:(e,t)=>`${a(e)} es una l\xEDnea; ${a(t)} no se aplica a ella.`,linePoints:"Una l\xEDnea lleva un punto `(x, y)` tras `from` y tras `to`, y sus quiebres en una lista tras `via`.",notForLines:(e,t)=>`${a(e)} no se aplica a l\xEDneas como ${a(t)}.`,penHasPoints:(e,t)=>`${a(e)} es un trazo de l\xE1piz; ${a(t)} no se aplica a \xE9l.`,penPoints:"Un trazo de l\xE1piz lleva, despu\xE9s de su id, una lista de puntos `(x, y)`, al menos uno.",penNoLabel:e=>`${a(e)} es un trazo de l\xE1piz, que no lleva etiqueta; sus puntos van despu\xE9s de su id.`,notForPens:(e,t,n)=>`${a(e)} no se aplica a trazos de l\xE1piz como ${a(t)}; un trazo de l\xE1piz admite ${q("es",n.map(a))}.`,notForStickies:(e,t)=>`${a(e)} no se aplica a notas adhesivas como ${a(t)}.`,listInProfile:(e,t)=>`${a(e)} en un grupo pertenece a las listas de las composiciones libres; este es ${Y(Li,t)}.`,listNeedsLayout:e=>`${a(e)} ordena los hijos de una lista; este grupo no escribe \`layout\`.`,elementNotRelation:(e,t)=>`${a(e)} es un elemento; ${a(t)} necesita una relaci\xF3n.`,unknownRelation:e=>`Relaci\xF3n desconocida ${a(e)}.`,notForTargets:(e,t,n)=>`${a(e)} no se aplica a ${t?"relaciones":"elementos"} como ${a(n)}.`,effectConflict:(e,t)=>`${a(e)} ya tiene un efecto ${a(t)} y admite un solo efecto de cada tipo.`,alreadySetFor:(e,t)=>`${a(e)} ya est\xE1 asignado para ${a(t)}.`,missingEffect:"Un bloque `animate` necesita un `effect`: `flow`, `pulse`, `dash` o `trace`.",effectProperty:(e,t,n)=>`${a(e)} se aplica a los efectos ${q("es",t.map(a))}, no a ${a(n)}.`,flowTarget:"Las part\xEDculas recorren relaciones, l\xEDneas y trazos de l\xE1piz; nombra la relaci\xF3n (`a -> b as r`) y an\xEDmala.",traceTarget:"Un recorrido avanza por relaciones, l\xEDneas y trazos de l\xE1piz; nombra la relaci\xF3n (`a -> b as r`) y an\xEDmala.",dashOnEvent:"Un trazo en movimiento recorre relaciones y los contornos de las cajas.",dashNeedsOutline:(e,t)=>`${a(e)} es ${t==="note"?"una nota":t==="sticky"?"una nota adhesiva":"un texto"} sin contorno; un trazo en movimiento sigue una l\xEDnea o una caja.`,dashWithoutOutline:(e,t)=>`${a(e)} es ${Y(kr,t)} sin contorno; un trazo en movimiento necesita una l\xEDnea o una caja.`,unknownTarget:e=>`Elemento o relaci\xF3n desconocidos ${a(e)}.`},values:{invalidEnum:(e,t,n)=>`Valor no v\xE1lido para ${a(t)}: ${e}; se esperaba uno de estos valores: ${n.join(", ")}.`,notColorToken:e=>`${a(e)} no es un token de color.`,expects:(e,t)=>`${a(e)} espera ${t}.`,expectsIcon:e=>`${a(e)} espera una referencia de icono como "tabler:server".`,timeUnit:e=>`${a(e)} necesita una unidad de tiempo.`,expectsTime:e=>`${a(e)} espera un tiempo positivo como \`1200ms\` o \`1.2s\`.`,classNoBlock:"Aqu\xED `class` aplica clases y no admite bloque.",classEmpty:"`class` necesita uno o m\xE1s ids de clase.",invalidClass:e=>`Clase no v\xE1lida: ${e}; se esperaba un id de clase.`,needsValue:(e,t)=>`${a(e)} necesita ${t}.`,oneValue:e=>`${a(e)} admite un solo valor; quita el valor de m\xE1s.`,onlyProperties:e=>`Solo se permiten propiedades en ${Di(e)}.`,unknownProperty:(e,t)=>`Propiedad desconocida ${a(e)} en ${Di(t)}.`,freeOnly:e=>`${a(e)} solo se aplica a las composiciones libres.`,shapeNotFor:(e,t)=>`\`shape\` no se aplica a ${e==="relation"?"las relaciones":`los elementos ${a(e)}`}${t===null?"":` como ${a(t)}`}; se aplica a los elementos \`node\` y \`box\`.`,rotationNotFor:(e,t)=>`\`rotation\` no gira los elementos ${a(e)}${t===null?"":` como ${a(t)}`}; gira los dem\xE1s elementos de los diagramas de flujo y las composiciones libres.`,rotationInProfile:e=>`\`rotation\` gira los elementos de los diagramas de flujo y las composiciones libres; ${Y(Ne,e)} dibujan los suyos rectos.`,shapeInProfile:e=>`\`shape\` se aplica a los elementos \`node\` y \`box\`; ${Y(Ne,e)} dibujan cada tipo con su propia forma.`,duplicateClass:e=>`La clase ${a(e)} ya est\xE1 declarada aqu\xED.`,ruleShape:"Se esperaba `rule <kind> { ... }`.",invalidRuleKind:(e,t)=>`Tipo de regla no v\xE1lido: ${e}; se esperaba uno de estos: ${t.join(", ")}.`,ruleBlock:e=>`\`rule ${e}\` necesita un bloque.`,ruleProfile:(e,t,n)=>t.length>0?`Los elementos ${a(e)} pertenecen a ${q("es",t.map(i=>Y(Ne,i)))}, no a ${Y(Ne,n)}.`:`Los elementos ${a(e)} no pertenecen a ${Y(Ne,n)}.`,ruleNotFor:(e,t)=>`${a(e)} no se aplica a ${t==="relation"?"las relaciones":`los elementos ${a(t)}`}.`,ruleAlreadySet:(e,t)=>`Otra regla ya asigna ${a(e)} para ${a(t)}.`},theme:{onlyTokens:"Solo se permiten tokens, clases y reglas en un bloque de tema.",unknownToken:e=>`Token de tema desconocido ${a(e)}.`,unknownBase:(e,t)=>`El tema ${a(e)} extiende "${t}", que no es un tema integrado ni est\xE1 definido en este archivo.`,cycle:e=>`El tema ${a(e)} hereda de s\xED mismo a trav\xE9s de \`extends\`.`},c4:{notDrawn:e=>`${a(e)} no se dibuja en esta vista.`,invalidLevel:"Se esperaba `level context`, `level container` o `level component`.",missingLevel:"Una vista C4 necesita `level context`, `level container` o `level component`.",listTwice:e=>`${a(e)} se escribe m\xE1s de una vez; lista todas las entidades en una sola instrucci\xF3n.`,listShape:e=>`Se esperaba \`${e} <entity>, <entity>...\`.`,listByPath:e=>`${a(e)} lista entidades por su ruta, como \`shop.api\`.`,listedTwice:(e,t)=>`${a(e)} aparece dos veces en ${a(t)}.`,scopeIncluded:(e,t)=>`${a(e)} es el \xE1mbito de esta vista; se dibuja como el l\xEDmite de sus ${t==="container"?"contenedores":"componentes"}.`,outOfLevel:(e,t,n)=>`Una vista ${Y(xt,e)} no dibuja ${ae(t).the} ${a(n)}.`,viewDeclares:"Las vistas dibujan las entidades del modelo; no declaran ninguna.",unknownInView:e=>`Instrucci\xF3n desconocida ${a(e)} en una vista C4.`,scopeRequired:e=>`Una vista ${Y(xt,e)} necesita un \xE1mbito: ${e==="container"?"el sistema":"el contenedor"} que abre.`,scopeShape:"Se esperaba `scope <entity>`, como `scope shop`.",datastoreScope:e=>`${a(e)} es un almac\xE9n de datos; los almacenes de datos no tienen componentes.`,invalidScope:(e,t,n,i)=>`El \xE1mbito de una vista ${Y(xt,e)} es ${ae(t).a}; ${a(n)} es ${ae(i).a}.`,alreadyCombined:(e,t)=>`Otra relaci\xF3n de esta vista ya combina \`${e} -> ${t}\`.`,relationIdUsed:e=>`${a(e)} ya lo usa una relaci\xF3n del modelo o de esta vista.`,unsupportedRelation:(e,t)=>`Ninguna relaci\xF3n del modelo va de ${a(e)} a ${a(t)}; una vista no dibuja flechas por conveniencia.`,labelShape:'Se esperaba `label <entity-or-relation> "Text"`; en `placement`, `label <relation> at <n>%` mueve una etiqueta.',labelTwice:e=>`${a(e)} ya tiene una etiqueta local.`},model:{brackets:"Las entidades del modelo se declaran con su tipo, no con corchetes.",unknownStatement:(e,t)=>`Instrucci\xF3n desconocida ${a(e)} en ${t?`${ae(t.kind).the} ${a(t.path)}`:"un modelo"}.`,invalidNesting:(e,t)=>`No se puede declarar ${ae(e).a} ${t?`en ${ae(t.kind).the} ${a(t.path)}`:"en la ra\xEDz del modelo"}; ${ae(e).many} van ${yr[e]??""}.`,duplicateEntity:e=>`La entidad ${a(e)} ya est\xE1 declarada en este modelo.`,external:"`external` marca personas y sistemas ajenos a la organizaci\xF3n.",quotedExample:e=>`${a(e)} espera una cadena entre comillas, como \`${e} "${e==="technology"?"PostgreSQL":e==="url"?"https://example.com":"Qu\xE9 hace"}"\`.`,url:"`url` admite una URL `https:`, `http:` o `mailto:`, o una relativa.",arrow:"Las relaciones del modelo se escriben con `->`.",selfRelation:e=>`Una relaci\xF3n de ${a(e)} consigo misma no dice nada en un modelo.`,nestedRelation:(e,t)=>`${a(e)} y ${a(t)} est\xE1n anidadas una en otra; una relaci\xF3n conecta entidades separadas.`,relationIdUsed:e=>`${a(e)} ya lo usa otra relaci\xF3n del modelo.`,unknownInRelation:e=>`Instrucci\xF3n desconocida ${a(e)} en una relaci\xF3n del modelo.`},sequence:{groupHoldsParticipants:"Los grupos de participantes contienen declaraciones de participantes; los eventos van en el nivel del diagrama o en fragmentos.",groupEnd:e=>`${a(e)} es un grupo de participantes; los mensajes van entre participantes.`,idUsed:e=>`${a(e)} ya se usa en este diagrama.`,unknownParticipant:e=>`Participante desconocido ${a(e)}.`,participantGroup:e=>`${a(e)} es un grupo de participantes.`,participantsAtTop:"Los participantes se declaran en el nivel del diagrama, no dentro de fragmentos.",unknownInFragment:e=>`Instrucci\xF3n desconocida ${a(e)} en un fragmento.`,returnOutsideCall:"`return` responde a una llamada: escr\xEDbelo dentro del bloque de la llamada.",afterReturn:e=>`\`${e}\` ya respondi\xF3; mueve este evento antes del \`return\`.`,activeForCall:(e,t)=>`\`${e}\` est\xE1 activo durante la llamada \`${t}\`; su barra termina con el bloque.`,tagOneLine:"Una marca es una l\xEDnea de texto; no puede estar vac\xEDa ni contener un salto de l\xEDnea.",tagRepeated:e=>`La marca "${e}" ya est\xE1 escrita en este bloque.`,divider:'Se esperaba `divider "Label"`.',delay:'Se esperaba `delay` o `delay "Label"`.',noteSide:e=>`Se esperaba \`${e} of <participant>\`.`,noteText:e=>`Una nota necesita su texto; se esperaba ${e}.`,noteParticipant:e=>`Una nota necesita un participante; se esperaba ${e}.`,oneParticipant:e=>`\`${e} of\` admite un solo participante.`,invalidParticipant:e=>`Participante no v\xE1lido: ${e}.`,branchKeyword:(e,t,n)=>`${a(e)} contin\xFAa con ${a(t)}, no con ${a(n)}.`,needsBlock:e=>`${a(e)} necesita un bloque.`,destroyedBeforeMessage:e=>`${a(e)} se destruy\xF3 antes de este mensaje.`,destroyedBeforeEvent:e=>`${a(e)} se destruy\xF3 antes de este evento.`,destroyedBeforeNote:e=>`${a(e)} se destruy\xF3 antes de esta nota.`,createdTwice:e=>`${a(e)} se crea dos veces.`,createAfterUse:e=>`${a(e)} ya particip\xF3 en la secuencia; \`create\` va antes de su primer evento.`,destroyedTwice:e=>`${a(e)} se destruye dos veces.`,notActive:e=>`${a(e)} no est\xE1 activo aqu\xED.`,placementStatement:e=>`${a(e)} no se aplica a los diagramas de secuencia.`,pixels:e=>`Se esperaba ${e} con un n\xFAmero de p\xEDxeles, 0 o m\xE1s.`,signedPixels:e=>`Se esperaba ${e} con un n\xFAmero de p\xEDxeles.`,side:e=>`Se esperaba ${e}: el lado es \`before\` o \`after\`.`,outerGap:(e,t)=>t==="before"?`\`${e}\` es el primer participante: un espacio antes de \xE9l es 0 o m\xE1s.`:`\`${e}\` es el \xFAltimo participante: un espacio despu\xE9s de \xE9l es 0 o m\xE1s.`,unknownEvent:e=>`Evento desconocido ${a(e)}.`,duplicateScenario:e=>`El escenario ${a(e)} ya est\xE1 declarado.`,scenarioStatements:"Los escenarios contienen `choose`, `repeat`, `skip` y `take`.",decidedTwice:e=>`${a(e)} ya se decide en este escenario.`,unknownFragment:e=>`Fragmento desconocido ${a(e)}.`,choiceOperator:(e,t,n,i)=>`${a(e)} no se aplica al fragmento ${a(t)} ${a(n)}; decide los fragmentos ${q("es",i.map(a))}.`,noBranch:(e,t)=>`${a(e)} no tiene ninguna rama "${t}".`,branchCount:(e,t)=>`${a(e)} tiene ${t} ${ge("es",t,{one:"rama",other:"ramas"})}; elige de 1 a ${t}.`,loopCount:"Un bucle se repite de 1 a 100 veces en un escenario."},story:{unknownDiagram:e=>`No hay ning\xFAn diagrama ${a(e)} sobre el que contar una historia.`,namesDiagram:"Una historia nombra su diagrama: `story <id> for <diagram> { }`.",time:e=>`${a(e)} admite un tiempo de \`0ms\` a \`600s\`, como \`800ms\`.`,contents:"Una historia contiene `title`, `description` y bloques `scene`.",notStoryStatement:e=>`${a(e)} no es una instrucci\xF3n de historia; una historia contiene \`title\`, \`description\` y bloques \`scene\`.`,sceneShape:'Una escena es `scene <id> ["Title"] { \u2026 }`.',duplicateScene:e=>`La historia ya tiene una escena ${a(e)}.`,sceneContents:"Una escena contiene `view`, `transition` y acciones.",viewFirst:"`view <diagram>` va primero en una escena y nombra un diagrama.",transitionFirst:"`transition cut|fade|morph [over <time>]` va antes de las acciones de la escena, una sola vez.",notAction:e=>`${a(e)} no es una acci\xF3n de historia.`,missingTransition:e=>`La escena cambia a ${a(e)}; indica c\xF3mo con \`transition cut\`, \`fade\` o \`morph\`.`,emptyScene:e=>`La escena ${a(e)} no tiene acciones y no dura nada.`,afterOver:"Nada puede seguir al tiempo de `over`.",hold:"`hold` admite un tiempo, como `hold 1s`.",parallel:"`parallel { \u2026 }` contiene acciones que empiezan a la vez.",namesTargets:e=>`${a(e)} nombra aquello sobre lo que act\xFAa, como \`${e} api\`.`,traceOne:"`trace` sigue una sola relaci\xF3n; usa `parallel` para recorrer varias.",ids:e=>`${a(e)} admite ids separados por comas.`,unknownTarget:(e,t)=>`${a(e)} no tiene ning\xFAn elemento ni relaci\xF3n con nombre ${a(t)}.`,traceTarget:(e,t)=>`\`trace\` sigue una relaci\xF3n; ${a(e)} es ${t?"un elemento":"una nota o un fragmento"}.`,drawTarget:(e,t)=>`\`draw\` admite trazos de l\xE1piz, l\xEDneas y relaciones; ${a(e)} es ${t===null?"una nota o un fragmento":`un elemento ${a(t)}`}.`,conflict:(e,t,n)=>`${a(e)} se superpone a una acci\xF3n anterior sobre ${wr[t]??a(t)} de ${a(n)}.`},export:{namesTarget:"Un perfil nombra lo que exporta: `export <id> for <diagram-or-story> { }`.",unknownTarget:e=>`No hay ning\xFAn diagrama ni historia ${a(e)} que exportar.`,options:"Un perfil de exportaci\xF3n contiene opciones como `format png`.",notOption:e=>`${a(e)} no es una opci\xF3n de los perfiles de exportaci\xF3n.`,oneValue:e=>`${a(e)} admite un solo valor.`,fps:"`fps` admite un n\xFAmero entero de 1 a 60.",file:"`file` admite una ruta relativa a este archivo, dentro de su carpeta, con `/` entre carpetas.",missingFormat:(e,t)=>`El perfil ${a(e)} necesita un \`format\`: ${t.join(", ")}.`,notForFormat:(e,t,n)=>`${a(e)} no se aplica a las exportaciones ${t}; se aplica a ${n.join(", ")}.`,atWithMotion:"`at` escribe un solo fotograma; no va con `motion animated`.",extension:(e,t)=>`\`file\` de una exportaci\xF3n ${e} termina en \`.${t}\`.`,storyMotion:"La exportaci\xF3n de una historia dibuja sus fotogramas; `motion` se aplica a los diagramas.",storyScenario:"Una historia muestra sus propias vistas; `scenario` se aplica a los diagramas de secuencia.",atPastEnd:e=>`La historia dura ${re(e)} ms; \`at\` debe estar dentro de ese tiempo.`,unknownScenario:(e,t,n)=>`${a(e)} no tiene ning\xFAn escenario ${a(t)}; sus escenarios: ${n.join(", ")}.`,noScenarios:e=>`${a(e)} no tiene escenarios.`}},hints:{example:e=>`Ejemplo: ${a(e)}.`,didYouMean:e=>`\xBFQuisiste decir ${e.map(a).join(", ")}?`,compile:{version:e=>`Cambia el encabezado a \`language "${e}"\`.`,declareModel:"Declara `model <id> { \u2026 }` en este archivo o importa el archivo que lo declara.",models:(e,t,n)=>`Modelos: ${[...e,...t.map(i=>`${i} (importado)`),...n.map(i=>`${i}.<model>`)].join(", ")}.`,splitDiagram:"Div\xEDdelo en varios diagramas; las vistas de un modelo pueden compartir sus entidades.",splitFile:"Div\xEDdelo en varios archivos que se importen entre s\xED.",elementsOf:(e,t)=>`Elementos de ${a(e)}: ${t.join(", ")}.`,diagramsAndModels:e=>`Diagramas y modelos de este archivo: ${e.join(", ")}.`,linkTargets:"Enlaza a un diagrama o a un modelo de este archivo, o de un archivo que importes."},flow:{requiredProperty:(e,t,n)=>`Los diagramas ${e} exigen ${a(t)} en cada ${a(n)}.`,allowedRelations:e=>`Permitidas: ${e.join(", ")||"ninguna"}.`,imagePath:'Escribe una ruta relativa a este archivo dentro del proyecto, como "logo.png".',diagramLevel:e=>`${a(e)} va en el nivel del diagrama, no dentro de un grupo.`,groupContents:"Los grupos contienen declaraciones de elementos, relaciones, grupos anidados, `description` y `url`.",declareElement:(e,t)=>`Declara un elemento con \`${e}["Label"]\` o \`${t} ${e}\`.`,freeStatements:e=>`Las composiciones libres aceptan declaraciones ${q("es",e.map(a))}, relaciones, \`direction\`, \`layout\`, \`theme\`, \`title\`, \`description\`, \`preset\`, \`canvas\`, \`routing\`, \`layers\`, \`placement\`, \`style\`, \`animate\`, \`class\` y \`rule\`.`,flowStatements:"Los diagramas de flujo aceptan declaraciones de elementos, relaciones, `direction`, `layout`, `theme`, `title`, `description`, `preset`, `canvas`, `routing`, `placement`, `style`, `animate`, `class` y `rule`.",freeDeclarations:e=>`Las composiciones libres declaran ${q("es",e.map(a))}.`,attachTarget:e=>`Une ${a(e)} a un elemento de este diagrama: \`note ${e} "Texto" on <element>\`.`,flowDeclarations:e=>`Los diagramas de flujo declaran \`node\`, \`decision\`, \`data\`, \`group\`, \`note\` y \`tag\`; ${a(e)} pertenece a las composiciones libres.`,sharedNamespace:"Los elementos y las relaciones comparten un espacio de nombres por diagrama.",elementBlock:e=>`Los bloques de elemento aceptan ${q("es",e.map(a))}.`,relationBlock:e=>`Los bloques de relaci\xF3n aceptan ${q("es",e.map(a))}.`,compassPorts:"Los puertos cardinales (`north`, `south`, `east`, `west`) y `auto` no necesitan declaraci\xF3n.",oneCanvas:"Conserva solo `preset` o solo `canvas (width, height)`.",qualifiedEndpoint:"Las referencias calificadas no est\xE1n disponibles en los diagramas de flujo; usa el id del elemento. Los puertos van en las instrucciones `route`.",layers:e=>`Capas: ${e.join(", ")}.`,declareLayer:e=>`Decl\xE1rala con \`layers ${e.join(", ")}\`.`,placementAccepts:e=>`Un bloque \`placement\` acepta ${e.map(a).join(", ")}.`,ports:(e,t)=>`Puertos de ${a(e)}: ${t.join(", ")}.`,constraintElements:"Las restricciones se aplican a elementos declarados en este diagrama.",dashOutline:"Dale un `fill`, un `stroke` o un `pattern` en un `style`, una clase o una `rule` de este diagrama, o usa un pulso.",dashStroke:"Dale un `stroke` en un `style`, una clase o una `rule` de este diagrama, o usa un pulso.",form:e=>`Forma: ${e}.`,linePointsWritten:"Los puntos de una l\xEDnea se escriben en su instrucci\xF3n: `line <id> from (x, y) to (x, y)`.",penPointsWritten:"Los puntos de un trazo de l\xE1piz se escriben en su instrucci\xF3n: `pen <id> [(x, y), (x, y), ...]`.",listsInFree:"Las composiciones libres colocan los hijos de un grupo en una columna o una fila con `layout column` o `layout row`.",listLayout:"Escribe `layout column` o `layout row` en el bloque del grupo.",groupLayout:e=>`\`layout ${e}\` es una instrucci\xF3n del diagrama; un bloque de grupo admite \`layout column\` o \`layout row\`.`,declareFirst:e=>`Decl\xE1ralo primero, por ejemplo \`${e}["Label"]\`.`,nameRelation:"Las relaciones an\xF3nimas necesitan `as <id>` para poder nombrarlas, por ejemplo `a -> b as save`.",styleAccepts:e=>`Los bloques \`style\` aceptan ${e.map(a).join(", ")}.`,animateAccepts:"Los bloques `animate` aceptan `effect`, `duration` y `repeat`.",mergeEffects:"Quita una de las instrucciones o junta sus propiedades en una sola.",styleTargets:e=>`${a(e)} se aplica a un elemento o a una relaci\xF3n nombrada con \`as <id>\`.`},values:{colorTokens:e=>`Tokens de color: ${e.join(", ")}.`,cssColor:(e,t)=>`Escribe \`${e} "${t}"\` para un color CSS.`,colorOrToken:e=>`Ejemplo: \`${e} "#1f6feb"\` o \`${e} accent\`.`,iconForm:'Los iconos se escriben como "<pack>:<name>".',timeUnit:"Agrega `ms` o `s`, por ejemplo `1200ms` o `1.2s`.",link:"Ejemplo: `link checkout.api`, o `link shop.checkout.api` a trav\xE9s de una importaci\xF3n con espacio de nombres.",url:"Los enlaces pueden usar `https:`, `http:` o `mailto:`, o ser relativos al archivo exportado.",declareClasses:"Declara las clases en el nivel superior de un diagrama o en un bloque de tema.",appliesToElements:e=>`${a(e)} se aplica a elementos.`,appliesToRelations:e=>`${a(e)} se aplica a relaciones.`,classesCannotApply:"Las clases no pueden aplicar otras clases; lista cada clase donde se use.",styleProperties:e=>`Las clases y las reglas aceptan ${e.map(a).join(", ")}.`,freeProperties:"Los diagramas de flujo y de secuencia y las vistas C4 colocan el texto donde lo pone su forma; las composiciones libres eligen su alineaci\xF3n con `textAlign` y `verticalAlign`.",textTargets:"`font`, `fontSize` y `fontWeight` se aplican a lo que dibuja texto: cajas, nodos, grupos, notas, etiquetas, notas adhesivas, textos, participantes, entidades, relaciones y l\xEDneas, no a iconos, im\xE1genes ni trazos de l\xE1piz.",freeOpacity:"Los diagramas de flujo y de secuencia y las vistas C4 dibujan cada elemento opaco; las composiciones libres aten\xFAan elementos, grupos, l\xEDneas y trazos de l\xE1piz con `opacity`.",opacityTargets:"`opacity` se aplica a elementos, grupos, l\xEDneas y trazos de l\xE1piz.",penProperties:e=>`Un trazo de l\xE1piz admite ${q("es",e.map(a))}.`,penWidth:"Un trazo de l\xE1piz mide al menos un p\xEDxel de ancho; quita el trazo para ocultarlo.",stickyProperties:e=>`Una nota adhesiva admite ${q("es",e.map(a))}.`,applyClasses:"Aplica las clases dentro de bloques de elemento, de relaci\xF3n o `style`.",kinds:e=>`Tipos: ${e.join(", ")}.`},theme:{tokens:e=>`Tokens de tema: ${e.join(", ")}; los bloques de tema tambi\xE9n aceptan \`class <id> { }\` y \`rule <kind> { }\`.`,builtIn:e=>`Temas integrados: ${e.join(", ")}.`,cycle:"Haz que un tema de la cadena extienda un tema integrado."},c4:{entityPath:"Las entidades se nombran por su ruta desde la ra\xEDz del modelo, como `shop.api`.",ports:e=>`Puertos: ${e.join(", ")}.`,routeEnds:"Los extremos de una ruta son entidades de la vista, con un puerto opcional: `shop.api.east`.",nameEntity:"Nombra una entidad de la vista por su ruta, como `shop.api`.",include:e=>`Agr\xE9gala con \`include ${e}\` o qu\xEDtala de \`exclude\`.`,notAtLevel:(e,t,n)=>`${a(e)} es ${ae(t).a}, que una vista ${Y(xt,n)} no dibuja.`,removeScope:e=>`Quita ${a(e)} de \`include\`.`,contextLevel:"Las vistas de contexto dibujan personas y sistemas de software.",containerLevel:e=>`Las vistas de contenedores dibujan los contenedores y almacenes de datos ${Oi(e)}, personas y otros sistemas.`,componentLevel:e=>`Las vistas de componentes dibujan los componentes ${Oi(e)}, los dem\xE1s contenedores de su sistema, personas y otros sistemas.`,declareInModel:(e,t)=>`Declara la entidad ${a(e)} en el modelo ${a(t)} y l\xEDstala en \`include\`.`,entitiesInModel:e=>`Las entidades se declaran en el modelo ${a(e)}; una vista las lista en \`include\`.`,viewStatements:"Las vistas C4 aceptan `level`, `scope`, `include`, `exclude`, `label`, relaciones que combinan relaciones del modelo, `direction`, `layout`, `routing`, `theme`, `title`, `description`, `preset`, `canvas`, `placement`, `style`, `animate`, `class` y `rule`.",addLevel:"Agrega `level container` y `scope <system>` para una vista de contenedores.",systemScope:"Agrega `scope <system>`, como `scope shop`.",containerScope:"Agrega `scope <container>`, como `scope shop.api`.",addToModel:"Agrega la relaci\xF3n al modelo o quita esta.",localLabel:"Una etiqueta local nombra una entidad o una relaci\xF3n dibujada en esta vista."},model:{kindNotBrackets:e=>`Escribe \`container ${e} "Label"\` u otro tipo de entidad.`,blockAccepts:(e,t)=>`Los bloques ${ae(e).of} aceptan ${q("es",[...t.map(a),"relaciones"])}.`,modelAccepts:"Los modelos declaran entidades `person` y `system`, con contenedores, almacenes de datos y componentes dentro, y relaciones `a -> b`.",canDeclare:e=>`Aqu\xED puedes declarar ${q("es",e.map(a))}.`,holdsNothing:e=>{let t=ae(e).a;return`${t[0].toUpperCase()}${t.slice(1)} no contiene entidades.`},declareEntity:'Declara la entidad primero en el modelo, como `container api "API"` dentro de un sistema.',dashed:"Las respuestas y las l\xEDneas discontinuas pertenecen a los diagramas de secuencia y de flujo.",relationAccepts:"Las relaciones del modelo aceptan `technology`, `description` y `assumption`."},sequence:{otherDeclaration:(e,t,n)=>`${a(e)} pertenece a ${Y(Ne,t)}. Los diagramas de secuencia declaran ${n.map(a).join(", ")} y \`group\`.`,statements:"Los diagramas de secuencia aceptan participantes, `group`, mensajes, `activate`, `deactivate`, `create`, `destroy`, `note`, los fragmentos `alt`, `opt`, `loop`, `par`, `break`, `critical` y `region`, `divider`, `delay`, `title`, `description`, `theme`, `preset`, `canvas`, `autonumber`, `placement`, `style`, `animate`, `class`, `rule` y `scenario`.",sharedNamespace:"Los elementos, las relaciones, las notas y los fragmentos comparten un espacio de nombres por diagrama.",declareParticipant:e=>`Decl\xE1ralo primero, por ejemplo \`participant ${e} "${e}"\`.`,fragmentContents:"Los fragmentos contienen mensajes, los dem\xE1s eventos y fragmentos anidados.",tagPlace:'Una marca va en el bloque de un mensaje o de un participante, como `api -> bank: "Authorize" { tag "PKCE" }` o `participant bank "Bank" { tag "external" }`.',messageBlock:(e,t)=>`Los bloques de mensaje aceptan ${q("es",e.map(a))}; el bloque de una llamada tambi\xE9n contiene mensajes y los eventos ${q("es",t.map(a))}.`,returnInCall:'Escr\xEDbelo dentro del bloque de la llamada: `a -> b: "Pagar" { return "OK" }`.',activate:e=>`Agrega \`activate ${e}\` antes o quita este \`deactivate\`.`,placement:"Los diagramas de secuencia mantienen el orden de los eventos: usa `space <event> <n>`, `gap <participant> <n>` y `label <message> at <n>% offset (dx, dy)`.",outerGap:e=>`No queda nada de \`${e}\` que acercar; un espacio en el lado exterior es 0 o m\xE1s.`,spaceTarget:'`space` nombra un mensaje con `as <id>`, o una nota o un fragmento con id, como `alt check "OK" { }`.',namedFragments:e=>`Fragmentos con nombre: ${e.map(t=>`${a(t.id)} (${t.operator})`).join(", ")}.`,nameFragment:'Nombra un fragmento para decidirlo, como `alt check "Approved" { }`.',branches:e=>`Ramas: ${e.map(t=>`"${t}"`).join(", ")}.`},story:{diagrams:e=>`Diagramas: ${e.join(", ")}.`,declareDiagram:"Declara un diagrama o importa uno.",actionsInScene:"Las acciones como `reveal` van dentro de `scene <id> { \u2026 }`.",actions:"Acciones: reveal, hide, highlight, focus, camera, trace, draw, hold y parallel.",transition:"Un cambio de composici\xF3n entre escenas necesita una transici\xF3n expl\xEDcita, que relaciona los elementos por id.",conflict:"Dos acciones sobre una misma propiedad de un elemento no deben ejecutarse a la vez; saca una del bloque `parallel`."},export:{targets:e=>`Diagramas e historias: ${e.join(", ")}.`,declareTarget:"Declara un diagrama o una historia.",options:e=>`Opciones: ${e.join(", ")}.`,background:"`background transparent`, un color entre comillas o un token de color."}},related:{firstUsed:"Se us\xF3 por primera vez aqu\xED.",firstDeclared:"Se declar\xF3 por primera vez aqu\xED.",firstSet:"Se asign\xF3 por primera vez aqu\xED.",firstOne:"Aqu\xED est\xE1 la primera.",elementDeclared:"El elemento se declar\xF3 aqu\xED.",firstEffect:"El primer efecto.",firstWritten:"Se escribi\xF3 por primera vez aqu\xED.",firstDecided:"Se decidi\xF3 por primera vez aqu\xED.",firstScene:"La primera escena.",earlierAction:"La acci\xF3n anterior."},problems:{notObject:"Un tipo de diagrama debe ser un objeto.",where:e=>`tipo de diagrama ${a(e)}`,kindWhere:(e,t)=>`${e}, tipo ${a(t)}`,relationsWhere:e=>`${e}, relaciones`,styleObject:e=>`${e}: el estilo debe ser un objeto.`,styleWords:(e,t,n)=>`${e}: ${a(t)} admite ${n.join(", ")}.`,styleColor:(e,t)=>`${e}: ${a(t)} admite un token de color como "@accent" o un color CSS.`,styleNumber:(e,t)=>`${e}: ${a(t)} admite un n\xFAmero dentro del rango.`,styleIcon:e=>`${e}: \`icon\` admite una referencia como "tabler:table".`,styleFont:e=>`${e}: \`font\` admite una pila de fuentes como "Roboto".`,styleUnknown:(e,t)=>`${e}: propiedad de estilo desconocida ${a(t)}.`,propertiesObject:e=>`${e}: \`properties\` debe ser un objeto.`,propertyName:(e,t)=>`${e}: ${a(t)} no puede nombrar una propiedad.`,propertyKind:(e,t)=>`${e}: la propiedad ${a(t)} admite "string", "number", "boolean" o { "kind": "enum", "values": [...] }.`,enumValues:(e,t)=>`${e}: la propiedad enum ${a(t)} necesita "values".`,typeWord:e=>`${e}: \`type\` debe ser una palabra en min\xFAsculas que no sea una palabra del lenguaje.`,layoutValue:(e,t,n)=>`${e}: ${a(t)} de \`layout\` admite ${n.join(", ")}.`,noKinds:e=>`${e}: \`elements\` debe nombrar al menos un tipo.`,kindWord:e=>`${e}: un tipo debe ser una palabra en min\xFAsculas que no sea una palabra del lenguaje.`,requiredUndeclared:(e,t)=>`${e}: la propiedad obligatoria ${a(t)} no est\xE1 declarada.`,allowedPairs:e=>`${e}: \`allowed\` de las relaciones debe ser una lista de pares [from, to].`,unknownPair:(e,t)=>`${e}: el par de relaci\xF3n ${t} nombra un tipo desconocido.`,unknownTool:(e,t)=>`${e}: herramienta para un tipo desconocido ${a(t)}.`}};var le=he(Pi,Ci);var Sr=new Set([...Xt,"model","story","theme","export","import","language","diagram","using","placement","style","animate","class","rule","layers","scenario","relation","text","icon","image","group","box","note","tag"]);var ll=new Set(Be);var Kr=["box","text","icon","image","note","sticky","line","pen","group"],Bi=["direction","layout","theme","title","description","preset","canvas","routing","placement","style","animate","class","rule"],Bl=[...Kr,...Bi.slice(0,8),"layers",...Bi.slice(8)];var ql=new Set(gt);var rd=new Set(dn.events),sd=new Set(Zt),ad=new Set(ht);var zr=new Set(["reveal","hide","highlight","focus","camera","trace","draw"]),yd=new Set([...zr,"hold","parallel"]);var qr=["transparent",...Be];var Ur={characters:2*1024*1024,elements:5e3,relations:1e4,events:1e4};var Vr={subjects:{diagram:"diagram",element:"element",relation:"relation",model:"model",entity:"entity",story:"story",scene:"scene",theme:"theme",export:"export"},none:"none",fields:{kind:"kind",type:"type",classes:"classes",view:"view"},changed:{description:"description changed",style:"style changed",effects:"effects changed",canvas:"canvas changed",layers:"layers changed",includedEntities:"included entities changed",constraints:"constraints changed",transition:"transition changed",actions:"actions changed",assumption:"assumption changed",ends:"ends changed",heads:"heads changed",tags:"tags changed"},states:{external:"now external",notExternal:"no longer external",placed:"placed",unplaced:"unplaced",moved:"moved",resized:"resized",twoWay:"now two-way",oneWay:"now one-way",async:"now asynchronous",sync:"now synchronous",confirmed:"confirmed",assumed:"now an assumption",rerouted:"rerouted",labelMoved:"label moved",messagesReordered:"messages reordered",scenesReordered:"scenes reordered"},movedOutOf:e=>`moved out of ${e}`,movedInto:e=>`moved into ${e}`,movedToRoot:"moved to the model's root",scenario:(e,t)=>`scenario ${e} ${t?"added":"removed"}`,duration:(e,t)=>`duration ${e} ms \u2192 ${t} ms`},Hr={subjects:{diagram:"diagrama",element:"elemento",relation:"relaci\xF3n",model:"modelo",entity:"entidad",story:"historia",scene:"escena",theme:"tema",export:"perfil de exportaci\xF3n"},none:"ninguno",fields:{kind:"tipo",type:"tipo",classes:"clases",view:"vista"},changed:{description:"cambi\xF3 la descripci\xF3n",style:"cambi\xF3 el estilo",effects:"cambiaron los efectos",canvas:"cambi\xF3 el lienzo",layers:"cambiaron las capas",includedEntities:"cambiaron las entidades incluidas",constraints:"cambiaron las restricciones",transition:"cambi\xF3 la transici\xF3n",actions:"cambiaron las acciones",assumption:"cambi\xF3 la suposici\xF3n",ends:"cambiaron los extremos",heads:"cambiaron las puntas",tags:"cambiaron las marcas"},states:{external:"ahora es externo",notExternal:"ya no es externo",placed:"colocado",unplaced:"sin colocar",moved:"movido",resized:"redimensionado",twoWay:"ahora en ambos sentidos",oneWay:"ahora en un sentido",async:"ahora as\xEDncrono",sync:"ahora s\xEDncrono",confirmed:"confirmado",assumed:"ahora es una suposici\xF3n",rerouted:"con otra ruta",labelMoved:"etiqueta movida",messagesReordered:"mensajes reordenados",scenesReordered:"escenas reordenadas"},movedOutOf:e=>`sacado de ${e}`,movedInto:e=>`movido a ${e}`,movedToRoot:"movido a la ra\xEDz del modelo",scenario:(e,t)=>`escenario ${e} ${t?"agregado":"quitado"}`,duration:(e,t)=>`duraci\xF3n ${e} ms \u2192 ${t} ms`},Wr=he(Vr,Hr);var k=e=>{let t=Math.round(e*100)/100;return Object.is(t,-0)?0:t};function ue(e){let t=0;for(let n=1;n<e.length;n++)t+=Math.hypot(e[n].x-e[n-1].x,e[n].y-e[n-1].y);return t}function bt(e,t){let n=ue(e);if(n===0)return e[0];let i=Math.min(1,Math.max(0,t))*n;for(let o=1;o<e.length;o++){let s=e[o-1],r=e[o],l=Math.hypot(r.x-s.x,r.y-s.y);if(i<=l||o===e.length-1){let p=l===0?0:Math.min(1,i/l);return{x:s.x+(r.x-s.x)*p,y:s.y+(r.y-s.y)*p}}i-=l}return e[e.length-1]}function Ni(e){let t=o=>({x:k(o.x),y:k(o.y)});if(e.length<3)return e.map(t);let n=[t(e[0])],i=e[0];for(let o=1;o<e.length-1;o++){let s=e[o],r=e[o+1],l={x:(s.x+r.x)/2,y:(s.y+r.y)/2},p=Math.hypot(s.x-i.x,s.y-i.y)+Math.hypot(l.x-s.x,l.y-s.y),c=Math.min(12,Math.max(1,Math.ceil(p/4)));for(let u=1;u<=c;u++){let m=u/c,h=1-m;n.push(t({x:h*h*i.x+2*h*m*s.x+m*m*l.x,y:h*h*i.y+2*h*m*s.y+m*m*l.y}))}i=l}return n.push(t(e[e.length-1])),n}function Fe(e,t,n){let i=k(n);return`M${k(e-n)} ${k(t)} a${i} ${i} 0 1 0 ${k(2*n)} 0 a${i} ${i} 0 1 0 ${k(-2*n)} 0 Z`}function Ge(e,t=1){let n=e.x+e.width/2,i=e.y+e.height/2,o=e.width*t,s=e.height*t,r=n-o/2,l=i-s/2,p=Math.min(e.radius*t,o/2,s/2);return p<=0?`M${k(r)} ${k(l)} H${k(r+o)} V${k(l+s)} H${k(r)} Z`:[`M${k(r+p)} ${k(l)}`,`H${k(r+o-p)}`,`A${k(p)} ${k(p)} 0 0 1 ${k(r+o)} ${k(l+p)}`,`V${k(l+s-p)}`,`A${k(p)} ${k(p)} 0 0 1 ${k(r+o-p)} ${k(l+s)}`,`H${k(r+p)}`,`A${k(p)} ${k(p)} 0 0 1 ${k(r)} ${k(l+s-p)}`,`V${k(l+p)}`,`A${k(p)} ${k(p)} 0 0 1 ${k(r+p)} ${k(l)}`,"Z"].join(" ")}function pn(e){return Math.max(4,1.5*e)}var _e=[8,6],vt=_e[0]+_e[1],ze={scale:.15,opacity:.7,width:2},Ye={extra:6,opacity:.5},xe={fill:.8,extra:2,dot:3};function je(e,t=[]){for(let n of e)n.kind==="group"&&(t.push(n),je(n.items,t));return t}function mn(e){return!e.track||e.track.length<2?null:e.freehand?Ni(e.track):e.track}function fn(e,t){let n=t-e.delayMs;if(n<0)return null;let i=Math.floor(n/e.durationMs);return e.repeat!=="forever"&&i>=e.repeat?null:(n-i*e.durationMs)/e.durationMs}function Qe(e,t){return e.map(n=>{if(n.kind!=="group")return n;let i=Qe(n.items,t),o=t({...n,items:i});return o?{...n,items:o}:i.every((s,r)=>s===n.items[r])?n:{...n,items:i}})}function Fi(e){return e.findIndex(t=>(t.kind==="rect"||t.kind==="path"||t.kind==="polyline")&&t.stroke!=="none")}var Me=(e,t)=>`${e}\0${t}`;function _i(e){let t=e.track.map(n=>({x:k(n.x),y:k(n.y)}));return e.reverse?t.reverse():t}function Jr(e){let t=Math.min(1,e/xe.fill),n=e<=xe.fill?1:(1-e)/(1-xe.fill);return{grown:t,opacity:n}}function Gr(e,t){let n=_i(e),i=k(ue(n)),{grown:o,opacity:s}=Jr(t),r=bt(n,o);return[{kind:"polyline",points:n,stroke:e.color,strokeWidth:k(e.width+xe.extra),dashed:!1,dash:{array:[i,i],offset:k(i*(1-o))},opacity:k(s)},{kind:"path",d:Fe(r.x,r.y,e.width+xe.dot),fill:e.color,stroke:"none",strokeWidth:0,dashed:!1,opacity:k(s)}]}function hn(e,t){let n=e.findIndex(o=>o.kind==="group"&&(o.role==="label"||o.role==="tag")),i=n<0?e.length:n;return[...e.slice(0,i),...t,...e.slice(i)]}function Ki(e,t){if(e.effect==="pulse")return e.bounds?[{kind:"path",d:Ge(e.bounds,1+ze.scale*t),fill:"none",stroke:e.color,strokeWidth:ze.width,dashed:!1,opacity:k(ze.opacity*(1-t))}]:[{kind:"polyline",points:e.track.map(n=>({x:k(n.x),y:k(n.y)})),stroke:e.color,strokeWidth:e.width+Ye.extra,dashed:!1,opacity:k(Ye.opacity*(1-t))}];if(e.effect==="flow"){let n=[],i=pn(e.width);for(let o=0;o<e.particles;o++){let s=t+o/e.particles;s>1&&(s-=1),e.reverse&&(s=1-s);let r=bt(e.track,s);n.push({kind:"path",d:Fe(r.x,r.y,i),fill:e.color,stroke:"none",strokeWidth:0,dashed:!1})}return n}return[]}function Ze(e,t,n){let i=t.effects.map(c=>({effect:c,phase:fn(c,n)})).filter(c=>c.phase!==null);if(i.length===0)return e;let o=new Map,s=new Map,r=new Map;for(let{effect:c,phase:u}of i){let m=Me(c.role,c.target);c.effect==="dash"&&o.set(m,{phase:u,reverse:c.reverse}),c.effect==="trace"&&s.set(m,Gr(c,u)),c.effect==="flow"&&r.set(m,Ki(c,u))}let l=Qe(e.items,c=>{let u=Me(c.role,c.id),m=o.get(u),h=s.get(u),v=r.get(u);if(!m&&!h&&!v)return null;let x=c.items,g=m?Fi(x):-1;if(m&&g>=0){let y=k((m.reverse?1:-1)*vt*m.phase);x=x.map((T,A)=>A===g&&T.kind!=="group"&&T.kind!=="text"&&T.kind!=="image"?{...T,dash:{array:_e,offset:y}}:T)}return h&&(x=hn(x,h)),v&&(x=hn(x,v)),x===c.items?null:[...x]}),p=[];for(let{effect:c,phase:u}of i)c.effect==="pulse"&&p.push(...Ki(c,u));return p.length>0&&l.push({kind:"group",id:"motion",role:"motion",items:p}),{...e,items:l}}var Yr=e=>`${k(e*100)}%`;var ou=["@keyframes mdg-trace-dot {"," 0% { offset-distance: 0%; opacity: 1; }",` ${Yr(xe.fill)} { offset-distance: 100%; opacity: 1; }`," 100% { offset-distance: 100%; opacity: 0; }","}"].join(`
2
+ `);function Ui(e,t,n=[]){for(let i of e)i.kind==="parallel"?Ui(i.children,t,n):n.push({action:i,scene:t});return n}var Vi=(e,t,n)=>n<=0?e>=t?1:0:Math.min(1,Math.max(0,(e-t)/n)),ne=(e,t,n)=>e+(t-e)*n;function St(e,t){let n=null,i=s=>{if(!n){n={...s};return}let r=Math.min(n.x,s.x),l=Math.min(n.y,s.y);n={x:r,y:l,width:Math.max(n.x+n.width,s.x+s.width)-r,height:Math.max(n.y+n.height,s.y+s.height)-l}},o=s=>{for(let r of s)if(r.kind==="group"){if(t.includes(r.id)){if(r.bounds)i(r.bounds);else if(r.track&&r.track.length>0){let l=1/0,p=1/0,c=-1/0,u=-1/0;for(let m of r.track)m.x<l&&(l=m.x),m.y<p&&(p=m.y),m.x>c&&(c=m.x),m.y>u&&(u=m.y);i({x:l,y:p,width:c-l,height:u-p})}}o(r.items)}};return o(e.items),n}function $t(e,t){let i=t.width+80,o=t.height+80,s=e.width/e.height;if(i/o>s?o=i/s:i=o*s,i>=e.width&&o>=e.height)return{x:0,y:0,width:e.width,height:e.height};let r=t.x+t.width/2,l=t.y+t.height/2;return{x:r-i/2,y:l-o/2,width:i,height:o}}function Xr(e,t,n){let i=e.scenes,o=0;for(let g=0;g<i.length;g++)i[g].startMs<=t&&(o=g);let s=i.flatMap((g,y)=>Ui(g.actions,y));s.sort((g,y)=>g.action.startMs-y.action.startMs);let r=new Map,l=new Map;for(let{action:g}of s)if(!(g.kind!=="reveal"&&g.kind!=="hide"&&g.kind!=="draw"))for(let y of g.targets)l.has(y.id)||l.set(y.id,g.kind);for(let[g,y]of l)r.set(g,y==="hide"?1:0);let p=[],c=[],u=new Map,m=null,h=null,v=null,x=null;for(let{action:g,scene:y}of s){if(g.startMs>t)break;let T=Vi(t,g.startMs,g.durationMs),A=i[y].view;switch(g.kind){case"reveal":case"hide":for(let $ of g.targets){let E=r.get($.id)??1;r.set($.id,ne(E,g.kind==="reveal"?1:0,T))}break;case"highlight":if(T<1){let $=Math.min(200,g.durationMs/4),E=t-g.startMs,D=g.startMs+g.durationMs-t,K=$<=0?1:Math.min(1,E/$,D/$);for(let Z of g.targets)p.push({id:Z.id,intensity:K})}break;case"trace":if(T<1)for(let $ of g.targets)c.push({id:$.id,progress:T});break;case"draw":for(let $ of g.targets)r.set($.id,1);if(T>=1)break;for(let[$,E]of ts(g,T,n(A)?.scene))E<1?u.set($,E):u.delete($);break;case"focus":if(y===o){let $=new Set(g.targets.map(K=>K.id)),E=m,D=E?.level??0;m=g.all?{ids:E?.ids??new Set,level:ne(D,0,T)}:{ids:$,level:ne(D,1,T)}}break;case"camera":{let $=n(A);if(!$)break;x!==A&&(v=null,x=A);let E=g.all?null:(()=>{let D=St($.scene,g.targets.map(K=>K.id));return D?$t($.scene,D):null})();h={from:v,to:E,progress:T},T>=1?v=E:v=Hi($.scene,v,E,T);break}}}return h&&x!==i[o]?.view&&(h=null),{scene:o,opacity:r,highlights:p,traces:c,draws:u,focus:m,camera:h}}function es(e,t){return wt(e.items,t.id,[t.kind])}function ts(e,t,n){let i=e.targets.map(l=>{let p=n&&es(n,l),c=p?mn(p):null;return c?ue(c):0}),o=i.reduce((l,p)=>l+p,0),s=new Map,r=0;return e.targets.forEach((l,p)=>{let c=o>0?i[p]/o:1/i.length,u=c>0?Math.min(1,Math.max(0,(t-r)/c)):t>=r?1:0;r+=c;let m=Me(l.kind,l.id);(u>0||!s.has(m))&&s.set(m,u)}),s}function zi(e){return{x:0,y:0,width:e.width,height:e.height}}function Hi(e,t,n,i){let o=t??zi(e),s=n??zi(e);return{x:ne(o.x,s.x,i),y:ne(o.y,s.y,i),width:ne(o.width,s.width,i),height:ne(o.height,s.height,i)}}function Wi(e,t,n){return e.map(i=>{if(i.kind!=="group")return i;let o=Wi(i.items,t,i.role==="lifeline"?i.id:n),s=i.role==="element"||i.role==="relation"||i.role==="event"?t(i,n):1,r=o.some((p,c)=>p!==i.items[c]);if(s>=1&&!r)return i;let l={...i,items:o};return s<1?{...l,opacity:k(s)}:l})}function Ji(e,t){let i=ue(e)*t,o=[e[0]];for(let s=1;s<e.length&&i>0;s++){let r=e[s-1],l=e[s],p=Math.hypot(l.x-r.x,l.y-r.y);if(p>=i){let c=p===0?0:i/p;o.push({x:r.x+(l.x-r.x)*c,y:r.y+(l.y-r.y)*c});break}o.push(l),i-=p}return o}function wt(e,t,n){for(let i of e){if(i.kind!=="group")continue;if(i.id===t&&n.includes(i.role))return i;let o=wt(i.items,t,n);if(o)return o}}function ji(e){let t=e.items.find(n=>n.kind==="polyline"||n.kind==="path");return t&&(t.kind==="polyline"||t.kind==="path")?t.strokeWidth:1.5}function ns(e,t,n){let i=[],o=new Map;for(let{id:s,intensity:r}of t.highlights){let l=wt(e.items,s,["element","event","relation"]);l&&(l.bounds?i.push({kind:"path",d:Ge(rs(l.bounds,4)),fill:"none",stroke:n,strokeWidth:3,dashed:!1,opacity:k(r)}):l.track&&i.push({kind:"polyline",points:l.track,stroke:n,strokeWidth:ji(l)+6,dashed:!1,opacity:k(.6*r)}))}for(let{id:s,progress:r}of t.traces){let l=wt(e.items,s,["relation"]);if(!l?.track||l.track.length<2)continue;let p=ji(l),c=Ji(l.track,r).map(m=>({x:k(m.x),y:k(m.y)})),u=c[c.length-1];o.set(s,[{kind:"polyline",points:c,stroke:n,strokeWidth:p+2,dashed:!1},{kind:"path",d:Fe(u.x,u.y,p+3),fill:n,stroke:"none",strokeWidth:0,dashed:!1}])}return{highlights:i,traces:o}}function is(e,t){let n=mn(e),i=e.items.find(r=>(r.kind==="polyline"||r.kind==="path")&&r.stroke!=="none");if(t<=0||!n||!i)return[];let o={kind:"polyline",stroke:i.stroke,strokeWidth:i.strokeWidth,dashed:i.dashed,...i.opacity!==void 0?{opacity:i.opacity}:{}};if(i.dashed!==!1)return[{...o,points:Ji(n,t).map(r=>({x:k(r.x),y:k(r.y)}))}];let s=k(ue(n));return[{...o,points:n,dash:{array:[s,k(s+i.strokeWidth+1)],offset:k(s*(1-t))}}]}function os(e,t){return t.size===0?[...e]:Qe(e,n=>{let i=t.get(Me(n.role,n.id));return i===void 0?null:is(n,i)})}function Gi(e,t){return t.size===0?[...e]:e.map(n=>{if(n.kind!=="group")return n;let i=n.role==="relation"?t.get(n.id):void 0;if(!i)return{...n,items:Gi(n.items,t)};let o=n.items.findIndex(r=>r.kind==="group"&&r.role==="label"),s=o<0?n.items.length:o;return{...n,items:[...n.items.slice(0,s),...i,...n.items.slice(s)]}})}function rs(e,t){return{x:e.x-t,y:e.y-t,width:e.width+t*2,height:e.height+t*2,radius:e.radius+t}}function qi(e,t,n,i){let o=new Set(t.traces.map(h=>h.id)),s={effects:e.plan.effects.filter(h=>!(h.role==="relation"&&o.has(h.target))&&!t.draws.has(Me(h.role,h.target)))},r=Ze(e.scene,s,n),l=t.focus,p=(h,v)=>{if(!l||l.ids.has(h))return!0;if(v==="relation"){let x=e.ends[h];return x!==void 0&&l.ids.has(x[0])&&l.ids.has(x[1])}return!1},c=ns(e.scene,t,i),u=os(Gi(r.items,c.traces),t.draws),m=Wi(u,(h,v)=>{let x=h.role==="relation"?e.ends[h.id]:void 0,g=Math.min(t.opacity.get(h.id)??1,...(x??[]).map(A=>t.opacity.get(A)??1)),y=h.role==="event"&&v!==void 0,T=l&&!p(h.id,h.role)&&!(y&&l.ids.has(v))?ne(1,.25,l.level):1;return g*T});return c.highlights.length>0&&m.push({kind:"group",id:"story",role:"motion",items:c.highlights}),{...r,items:m}}function Xe(e,t,n,i={}){let o=i.accent??"#1f6feb",s=Math.min(Math.max(0,n),e.durationMs),r=Xr(e,s,t),l=e.scenes[r.scene],p=l?.view??e.views[0],c=p!==void 0?t(p):void 0;if(!c)return null;let u=qi(c,r,s,o);if(r.camera){let j=Hi(c.scene,r.camera.from,r.camera.to,r.camera.progress);u={...u,viewBox:{x:k(j.x),y:k(j.y),width:k(j.width),height:k(j.height)}}}let m=l?.transition,h=r.scene>0?e.scenes[r.scene-1]:void 0;if(!m||!h||h.view===l.view||m.kind==="cut")return u;let v=Vi(s,m.startMs,m.durationMs);if(v>=1)return u;let x=t(h.view);if(!x)return u;let g=qi(x,r,s,o),y=Math.max(g.width,u.width),T=Math.max(g.height,u.height);if(m.kind==="fade")return{...u,width:y,height:T,items:[{kind:"group",id:"before",role:"motion",items:g.items,opacity:k(1-v)},{kind:"group",id:"after",role:"motion",items:u.items,opacity:k(v)}]};let A=new Map,$=j=>{for(let P of j)P.kind==="group"&&(P.role==="element"&&P.bounds&&A.set(P.id,P.bounds),$(P.items))};$(g.items);let E=new Set,D=j=>j.map(P=>{if(P.kind!=="group")return P;let U=P.role==="element"&&P.bounds?A.get(P.id):void 0;if(U&&P.bounds){E.add(P.id);let W=P.bounds,be=ne(U.x,W.x,v),oe=ne(U.y,W.y,v),X=ne(U.width,W.width,v)/W.width,ee=ne(U.height,W.height,v)/W.height,te=`translate(${k(be-W.x*X)} ${k(oe-W.y*ee)}) scale(${k(X*1e3)/1e3} ${k(ee*1e3)/1e3})`;return{kind:"group",id:`${P.id}#morph`,role:"motion",items:[P],transform:te}}return P.role==="element"||P.role==="relation"||P.role==="event"?{...P,opacity:k((P.opacity??1)*v)}:{...P,items:D(P.items)}}),K=D(u.items),Z=j=>j.flatMap(P=>P.kind!=="group"?[P]:P.role==="frame"||P.role==="element"&&E.has(P.id)?[]:P.role==="element"||P.role==="relation"||P.role==="event"?[{...P,opacity:k((P.opacity??1)*(1-v))}]:[{...P,items:Z(P.items)}]);return{...u,width:y,height:T,items:[...Z(g.items),...K]}}var et={cameraMs:320,transitionMs:480};function Yi(e){return e.direction==="down"?{parent:e.from,child:e.to}:{parent:e.to,child:e.from}}function Qi(e){let{parent:t,child:n}=Yi(e),i=Math.max(0,e.cameraMs),o=Math.max(0,e.transitionMs);return{id:"drill",title:null,durationMs:i+o,views:[t,n],scenes:[{id:"from",title:null,view:t,transition:null,startMs:0,durationMs:i,line:0,actions:[{kind:"camera",path:[0,0],targets:[{id:e.element,kind:"element"}],all:!1,startMs:0,durationMs:i,children:[],line:0}]},{id:"to",title:null,view:n,transition:{kind:o>0?e.transition:"cut",startMs:i,durationMs:o},startMs:i,durationMs:o,line:0,actions:[]}]}}var Tt=(e,t,n)=>e+(t-e)*n,gn=e=>({x:0,y:0,width:e.width,height:e.height});function yn(e,t,n,i={}){let{parent:o,child:s}=Yi(e),r=t(o),l=t(s);if(!r||!l||!Et(r.scene.items,e.element))return null;let p=St(r.scene,[e.element]);if(!p)return null;let c=Qi(e),u=c.durationMs,m=Math.min(Math.max(0,n),u),h=e.direction==="down"?m:u-m,v=Math.max(0,e.cameraMs),x=Xe(c,t,h,i);if(!x)return null;let g=Math.max(r.scene.width,l.scene.width),y=Math.max(r.scene.height,l.scene.height),T;if(h<v||u===0)T=u===0?gn(l.scene):x.viewBox??gn(r.scene);else{let A=u-v,$=A<=0?1:Math.min(1,(h-v)/A),E=$t(r.scene,p),D=gn(l.scene);T={x:Tt(E.x,D.x,$),y:Tt(E.y,D.y,$),width:Tt(E.width,D.width,$),height:Tt(E.height,D.height,$)}}return{...x,width:g,height:y,viewBox:{x:k(T.x),y:k(T.y),width:k(T.width),height:k(T.height)}}}function Et(e,t){for(let n of e)if(n.kind==="group"&&(n.role==="element"&&n.id===t&&n.bounds||Et(n.items,t)))return!0;return!1}function kn(e,t,n){return Et(e.items,n)&&Et(t.items,n)?"morph":"fade"}var ss="http://www.w3.org/2000/svg";function b(e,t={},...n){let i=document.createElement(e);for(let[o,s]of Object.entries(t))s!==!1&&i.setAttribute(o,s===!0?"":s);return i.append(...n),i}function se(e,t={}){let n=document.createElementNS(ss,e);for(let[i,o]of Object.entries(t))n.setAttribute(i,String(o));return n}function ie(e){let t=se("svg",{viewBox:"0 0 16 16","aria-hidden":"true"});for(let n of e.split("|"))t.append(se("path",{d:n}));return t}var xn=e=>`"${e.replace(/["\\]/g,"\\$&")}"`,bn=e=>e!==null&&/^(https?:|mailto:)/i.test(e.trim())?e.trim():null;function Zi(e){try{let t=new URL(e);return t.protocol==="mailto:"?t.pathname:t.host}catch{return e}}var Q={play:"M5 3.5l8 4.5-8 4.5z",pause:"M5.5 3.5v9|M10.5 3.5v9",previous:"M4 3.5v9|M12.5 3.5L6.5 8l6 4.5z",next:"M12 3.5v9|M3.5 3.5l6 4.5-6 4.5z",static:"M2.5 3.5h11v9h-11z|M5 6.5h6|M5 9.5h4",zoomIn:"M8 4v8|M4 8h8",zoomOut:"M4 8h8",fit:"M3 6V3h3|M10 3h3v3|M13 10v3h-3|M6 13H3v-3",close:"M4 4l8 8|M12 4l-8 8",up:"M8 12.5v-9|M4 7.5l4-4 4 4",open:"M8 4v8|M4 8h8",external:"M9 3h4v4|M13 3L7.5 8.5|M11 9.5V13H3V5h3.5"};var Rt=class{element=b("div",{class:"card",role:"tooltip","aria-hidden":"true",hidden:!0});get visible(){return!this.element.hidden}show(t,n,i){let o=this.element,s=[b("div",{class:"title"},t.title)];t.meta&&s.push(b("div",{class:"meta"},t.meta)),t.ends&&s.push(b("div",{class:"meta"},t.ends)),t.text&&s.push(b("p",{class:"text"},t.text)),t.note&&s.push(b("div",{class:"meta"},t.note));let r=bn(t.url);r&&s.push(b("div",{class:"link"},Zi(r))),o.replaceChildren(...s),o.hidden=!1;let l=o.offsetWidth,p=o.offsetHeight,c={width:window.innerWidth,height:window.innerHeight},u,m,h="bottom";n&&n.height<=c.height*.6?(u=n.left+n.width/2-l/2,m=n.bottom+6,m+p>c.height-4&&(m=n.top-6-p,h="top")):(u=i.x+14,m=i.y+14,u+l>c.width-4&&(u=i.x-14-l),m+p>c.height-4&&(m=i.y-14-p,h="top")),u=Math.max(4,Math.min(c.width-l-4,u)),m=Math.max(4,Math.min(c.height-p-4,m)),o.style.left=`${Math.round(u)}px`,o.style.top=`${Math.round(m)}px`,o.dataset.side=h}hide(){this.element.hidden=!0}},Mt=class{element=b("aside",{class:"details",role:"region",tabindex:"-1",hidden:!0});heading=b("h3",{class:"title",tabindex:"-1"});kind=b("p",{class:"type"});content=b("div",{class:"bodytext"});close;shown="";constructor(t,n){this.close=b("button",{type:"button",class:"close","aria-label":t.close,title:t.closeTitle},ie(Q.close)),this.close.addEventListener("click",n),this.element.append(b("div",{class:"head"},this.heading,this.close),this.kind,this.content)}get open(){return!this.element.hidden}show(t,n){this.element.setAttribute("aria-label",t.name),this.heading.textContent=t.title,this.kind.textContent=t.type??"",this.kind.hidden=!t.type;let i=[];if(t.open){let o=t.open,s=b("button",{type:"button",class:"action",title:o.title},ie(Q.open),o.label);s.addEventListener("click",()=>o.run()),i.push(s)}if(t.facts.length>0){let o=b("dl");for(let s of t.facts){let r=s.href===void 0?null:bn(s.href);o.append(b("dt",{},s.term),b("dd",{},r?b("a",{href:r,target:"_blank",rel:"noopener noreferrer"},s.linkText??s.value):s.value))}i.push(o)}t.description&&i.push(b("p",{class:"description"},t.description));for(let o of t.sections){if(i.push(b("h4",{},o.heading)),o.items.length===0){o.empty&&i.push(b("p",{},o.empty));continue}let s=b("ul");for(let r of o.items)if(r.href!==void 0)s.append(b("li",{},b("a",{href:r.href},r.label)));else{let l=b("button",{type:"button"},r.label);r.action&&l.addEventListener("click",r.action),s.append(b("li",{},l))}i.push(s)}if(n!==this.shown){let o=b("div",{class:"bodytext"},...i);this.content.replaceWith(o),this.content=o}else this.content.replaceChildren(...i);this.shown=n,this.element.hidden=!1}hide(){this.element.hidden=!0,this.shown=""}focus(){this.heading.focus({preventScroll:!0})}},Pt=class{element;upButton;list=b("ol");up=null;constructor(t){this.upButton=b("button",{type:"button",class:"up"},ie(Q.up)),this.upButton.addEventListener("click",()=>this.up?.()),this.element=b("nav",{class:"trail","aria-label":t,hidden:!0},this.upButton,this.list)}show(t,n,i){this.element.hidden=t.length===0;let o=t[t.length-1];this.up=o?.go??null,this.upButton.disabled=!o,i&&(this.upButton.setAttribute("aria-label",i.up),this.upButton.title=i.upTitle);let s=t.map(r=>{let l=b("button",{type:"button"},r.title);return l.addEventListener("click",r.go),b("li",{},l)});s.push(b("li",{},b("span",{"aria-current":"page"},n))),this.list.replaceChildren(...s)}goUp(){return this.up?(this.up(),!0):!1}};var Xi={controls:{group:"Player controls",play:"Play",pause:"Pause",playTitle:e=>`${e} (Space)`,previous:"Previous scene",previousTitle:"Previous scene (Page Up)",next:"Next scene",nextTitle:"Next scene (Page Down)",progress:"Progress",scene:"Scene",staticView:"Static view",staticTitle:"Static view (S)",position:(e,t)=>`${e} of ${t}`,zoomGroup:"Zoom",zoomIn:"Zoom in",zoomInTitle:"Zoom in (+)",zoomOut:"Zoom out",zoomOutTitle:"Zoom out (\u2212)",fit:"Fit the drawing",fitTitle:"Fit the drawing (0)",actualSizeTitle:"Actual size (1)",zoomLevel:e=>`Zoom ${e}. Actual size (1)`},trail:{label:"Path",up:e=>`Up to ${e}`,upTitle:e=>`Up to ${e} (Backspace)`},details:{region:e=>`Details of ${e}`,close:"Close details",closeTitle:"Close (Escape)",kind:"Kind",technology:"Technology",description:"Description",link:"Link",openLink:"Open link",external:"external",relations:"Relations",outgoing:"Outgoing",incoming:"Incoming",noRelations:"No relations.",from:"From",to:"To",assumption:"Assumption",assumed:e=>`Assumption: ${e}`,standsFor:e=>`Stands for ${e} model ${ge("en",e,{one:"relation",other:"relations"})}`,lifted:"lifted",async:"Asynchronous",open:e=>`Open ${e}`,openTitle:"Open (double click or Enter)",opens:e=>`opens ${e}`,elements:"Elements"},player:{story:e=>`Story: ${e}`,diagram:e=>`Diagram: ${e}`,scene:(e,t,n,i)=>`Scene ${e} of ${t}: ${n}${i?`, ${i}`:""}`,unreadable:"This player cannot read its data.",interactive:e=>`${e}. Interactive drawing`,hint:"Up and Down walk the elements, Enter shows their details, Escape clears.",zoom:e=>`Zoom ${e}`,fitted:e=>`Whole drawing, ${e}`,selected:e=>`Selected: ${e}`,cleared:"Selection cleared",focused:(e,t)=>t?`${e}, ${t}`:e,relation:(e,t)=>`${e} \u2192 ${t}`,opened:e=>`Opened ${e}`,wentUp:e=>`Back in ${e}`},story:{summary:"Text summary",scene:(e,t,n,i)=>`Scene ${e}: ${t} (${n} to ${i})`,list:e=>e.length<=1?e.join(""):`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`,transition:(e,t,n)=>`${{cut:"Cut",fade:"Fade",morph:"Morph"}[e]} to ${t}${n===null?"":` over ${n}`}`,reveal:(e,t)=>`Reveal ${e} over ${t}`,hide:(e,t)=>`Hide ${e} over ${t}`,highlight:(e,t)=>`Highlight ${e} for ${t}`,focus:e=>`Focus on ${e}`,clearFocus:"Clear the focus",frame:e=>`Frame ${e}`,frameAll:"Frame the whole view",trace:(e,t,n)=>`Trace \u201C${e}\u201D${t?` from ${t[0]} to ${t[1]}`:""} over ${n}`,draw:(e,t)=>`Draw ${e} stroke by stroke over ${t}`,hold:e=>`Hold ${e}`,parallel:e=>`At the same time: ${e}`},effects:{none:"No effects.",flow:e=>`Flow particles along \u201C${e}\u201D`,dash:e=>`A moving dash along \u201C${e}\u201D`,trace:e=>`A trace along \u201C${e}\u201D`,pulse:e=>`A pulse on \u201C${e}\u201D`,forever:"without end",times:e=>`${e} ${ge("en",e,{one:"time",other:"times"})}`,cycle:(e,t,n,i)=>`${e}: ${t} a cycle, ${n}${i===null?"":` after ${i}`}`}};var eo={controls:{group:"Controles del reproductor",play:"Reproducir",pause:"Pausar",playTitle:e=>`${e} (Espacio)`,previous:"Escena anterior",previousTitle:"Escena anterior (Re P\xE1g)",next:"Escena siguiente",nextTitle:"Escena siguiente (Av P\xE1g)",progress:"Progreso",scene:"Escena",staticView:"Vista est\xE1tica",staticTitle:"Vista est\xE1tica (S)",position:(e,t)=>`${e} de ${t}`,zoomGroup:"Zoom",zoomIn:"Acercar",zoomInTitle:"Acercar (+)",zoomOut:"Alejar",zoomOutTitle:"Alejar (\u2212)",fit:"Ajustar el dibujo",fitTitle:"Ajustar el dibujo (0)",actualSizeTitle:"Tama\xF1o real (1)",zoomLevel:e=>`Zoom ${e}. Tama\xF1o real (1)`},trail:{label:"Ruta",up:e=>`Subir a ${e}`,upTitle:e=>`Subir a ${e} (Retroceso)`},details:{region:e=>`Detalles de ${e}`,close:"Cerrar los detalles",closeTitle:"Cerrar (Esc)",kind:"Tipo",technology:"Tecnolog\xEDa",description:"Descripci\xF3n",link:"Enlace",openLink:"Abrir el enlace",external:"externo",relations:"Relaciones",outgoing:"Salientes",incoming:"Entrantes",noRelations:"Sin relaciones.",from:"Desde",to:"Hacia",assumption:"Supuesto",assumed:e=>`Supuesto: ${e}`,standsFor:e=>`Representa ${e} ${ge("es",e,{one:"relaci\xF3n",other:"relaciones"})} del modelo`,lifted:"derivada",async:"As\xEDncrona",open:e=>`Abrir ${e}`,openTitle:"Abrir (doble clic o Entrar)",opens:e=>`abre ${e}`,elements:"Elementos"},player:{story:e=>`Historia: ${e}`,diagram:e=>`Diagrama: ${e}`,scene:(e,t,n,i)=>`Escena ${e} de ${t}: ${n}${i?`, ${i}`:""}`,unreadable:"Este reproductor no puede leer sus datos.",interactive:e=>`${e}. Dibujo interactivo`,hint:"Arriba y Abajo recorren los elementos, Entrar muestra sus detalles, Esc borra la selecci\xF3n.",zoom:e=>`Zoom ${e}`,fitted:e=>`Dibujo completo, ${e}`,selected:e=>`Seleccionado: ${e}`,cleared:"Selecci\xF3n borrada",focused:(e,t)=>t?`${e}, ${t}`:e,relation:(e,t)=>`${e} \u2192 ${t}`,opened:e=>`Se abri\xF3 ${e}`,wentUp:e=>`De vuelta en ${e}`},story:{summary:"Resumen en texto",scene:(e,t,n,i)=>`Escena ${e}: ${t} (de ${n} a ${i})`,list:e=>q("es",e),transition:(e,t,n)=>{let i={cut:"un corte",fade:"un fundido",morph:"una transformaci\xF3n"}[e];return`Cambiar a ${t} con ${i}${n===null?"":` de ${n}`}`},reveal:(e,t)=>`Mostrar ${e} en ${t}`,hide:(e,t)=>`Ocultar ${e} en ${t}`,highlight:(e,t)=>`Resaltar ${e} durante ${t}`,focus:e=>`Enfocar ${e}`,clearFocus:"Quitar el foco",frame:e=>`Encuadrar ${e}`,frameAll:"Encuadrar toda la vista",trace:(e,t,n)=>`Recorrer \u201C${e}\u201D${t?` de ${t[0]} a ${t[1]}`:""} en ${n}`,draw:(e,t)=>`Dibujar ${e} trazo a trazo en ${t}`,hold:e=>`Esperar ${e}`,parallel:e=>`Al mismo tiempo: ${e}`},effects:{none:"No hay efectos.",flow:e=>`Part\xEDculas a lo largo de \u201C${e}\u201D`,dash:e=>`Un trazo en movimiento a lo largo de \u201C${e}\u201D`,trace:e=>`Un recorrido a lo largo de \u201C${e}\u201D`,pulse:e=>`Un pulso en \u201C${e}\u201D`,forever:"sin fin",times:e=>`${e} ${ge("es",e,{one:"vez",other:"veces"})}`,cycle:(e,t,n,i)=>`${e}: ${t} por ciclo, ${n}${i===null?"":` tras ${i}`}`}};var pe=he(Xi,eo);var as=32,ls=1e3,ds=100,cs=.01;function no(e){switch(e){case" ":case"k":case"K":return"toggle";case"ArrowLeft":return"back";case"ArrowRight":return"forward";case",":return"backSmall";case".":return"forwardSmall";case"Home":return"start";case"End":return"end";case"PageUp":case"p":case"P":return"previousScene";case"PageDown":case"n":case"N":return"nextScene";case"s":case"S":return"toggleStatic";default:return}}var to=new Map;function us(e){let t=to.get(e);return t||(t=new Intl.NumberFormat(e,{maximumFractionDigits:3,useGrouping:!1}),to.set(e,t)),t}function me(e,t="en"){return e===0?"0 s":e>=1e3?`${us(t).format(Math.round(e)/1e3)} s`:`${Math.round(e)} ms`}var Lt=class{constructor(t,n={}){this.document=t;this.effectsView=t.kind==="effects"?t.key:"",this.reducedMotion=n.reducedMotion===!0,this.staticView=n.static===!0||n.reducedMotion===!0,this.loop=n.loop===!0,this.locale=n.locale??"en",n.autoplay&&!n.reducedMotion&&!this.staticView&&(this.playing=!0),this.staticView&&(this.time=this.sceneEnd(0))}document;time=0;playing=!1;staticView;loop;locale;effectsView;selection=null;focused=null;trail=[];drill=null;reducedMotion;settled=null;get view(){return this.document.kind==="effects"?this.effectsView:this.scenes[this.sceneIndex]?.view??this.document.timeline.views[0]??""}get duration(){return this.document.kind==="story"?this.document.timeline.durationMs:this.document.views[this.effectsView]?.durationMs??null}get scenes(){return this.document.kind==="story"?this.document.timeline.scenes:[]}sceneIndexAt(t){let n=this.scenes,i=0;for(let o=0;o<n.length;o++)n[o].startMs<=t&&(i=o);return i}get sceneIndex(){return this.sceneIndexAt(this.time)}sceneEnd(t){let n=this.scenes[t];if(!n)return 0;let i=n.startMs+n.durationMs;return t===this.scenes.length-1?i:Math.max(n.startMs,i-cs)}get canPlay(){return!(this.staticView&&this.document.kind==="story")}play(){if(!this.canPlay)return;let t=this.duration;t!==null&&this.time>=t&&(this.time=0),this.playing=!0}pause(){this.playing=!1}toggle(){this.playing?this.pause():this.play()}tick(t){let n=this.drill;if(n)return n.time+=Math.max(0,t),n.time>=this.drillDuration&&this.settle(),!1;if(!this.playing)return!1;let i=this.duration,o=this.time+Math.max(0,t);return i===null?(this.time=o,!1):o<i?(this.time=o,!1):this.loop&&i>0?(this.time=o%i,!1):(this.time=i,this.playing=!1,!0)}seek(t){let n=this.duration,i=Math.max(0,n===null?t:Math.min(n,t));this.time=this.staticView&&this.scenes.length>0?this.sceneEnd(this.sceneIndexAt(i)):i}goToScene(t){let n=this.scenes;if(n.length===0)return;let i=Math.max(0,Math.min(n.length-1,t));this.time=this.staticView?this.sceneEnd(i):n[i].startMs}setStatic(t){this.staticView=t,t&&(this.playing=!1,this.scenes.length>0&&(this.time=this.sceneEnd(this.sceneIndex)))}get frameTime(){return this.time}run(t){switch(t){case"toggle":this.toggle();break;case"back":case"forward":case"backSmall":case"forwardSmall":{if(this.staticView&&this.scenes.length>0){this.goToScene(this.sceneIndex+(t.startsWith("back")?-1:1));break}let n=t.endsWith("Small")?ds:ls;this.pause(),this.seek(this.time+(t.startsWith("back")?-n:n));break}case"start":this.pause(),this.seek(0);break;case"end":this.pause(),this.seek(this.duration??this.time);break;case"previousScene":{let n=this.sceneIndex,i=this.scenes[n]?.startMs??0;this.goToScene(!this.staticView&&this.time>i+250?n:n-1);break}case"nextScene":this.goToScene(this.sceneIndex+1);break;case"toggleStatic":this.setStatic(!this.staticView);break}}titleOf(t){return this.document.names[t]?.title??t}items(t=this.view){let n=this.document.views[t]?.scene;if(!n)return[];let i=[],o=[],s=new Set;for(let r of je(n.items)){let l=`${r.role}:${r.id}`;if(!s.has(l)){if(r.role==="element"&&r.bounds)i.push({role:"element",id:r.id});else if(r.role==="relation"&&r.track&&r.track.length>1)o.push({role:"relation",id:r.id});else continue;s.add(l)}}return[...i,...o]}moveFocus(t,n=()=>!0){let i=this.items().filter(n);if(i.length===0)return this.focused=null;let o=this.focused,s=o?i.findIndex(l=>l.role===o.role&&l.id===o.id):-1,r=s<0?t>0?0:i.length-1:(s+t+i.length)%i.length;return this.focused=i[r]}select(t){return t===null?(this.selection=null,!0):this.items().some(n=>n.role===t.role&&n.id===t.id)?(this.selection=t,!0):!1}canOpen(t){if(this.document.kind!=="effects"||this.drill)return null;let n=this.document.details[this.view]?.elements[t]?.opens??null;return n&&this.document.views[n.view]?n:null}durations(){return this.reducedMotion?{cameraMs:0,transitionMs:0}:{...et}}get drillDuration(){let t=this.drill?.spec;return t?t.cameraMs+t.transitionMs:0}start(t,n,i={}){this.drill={spec:t,time:0,extra:i,select:n,resume:this.playing},this.playing=!1,this.selection=null,this.focused=null,this.drillDuration<=0&&this.settle()}settle(){let t=this.drill;if(!t)return;this.drill=null,this.effectsView=t.spec.to,this.time=0,this.playing=t.resume&&!this.staticView,this.selection=t.select?{role:"element",id:t.select}:null;let n=this.titleOf(t.spec.to),i=pe(this.locale).player;this.settled=t.spec.direction==="down"?i.opened(n):i.wentUp(n)}open(t){let n=this.canOpen(t);if(!n)return!1;let i=this.view;return this.trail.push({view:i,element:t}),this.trail.length>as&&this.trail.shift(),this.start({from:i,to:n.view,element:t,transition:n.transition,direction:"down",...this.durations()},n.element),!0}enter(t,n,i,o,s=null){if(this.document.kind!=="effects")return;this.effectsView=t.key;let r=this.durations();i==="down"&&(r.cameraMs=0),this.start({from:t.key,to:this.document.key,element:n,transition:o,direction:i,...r},s,{[t.key]:t.view})}up(t=this.trail.length-1){if(this.document.kind!=="effects"||this.drill)return!1;let n=this.trail[t];if(!n)return!1;let i=this.document.views[n.view],o=this.document.views[this.view];if(!i||!o)return!1;this.trail.length=t;let s=this.document.details[n.view]?.elements[n.element]?.opens,r=s&&s.view===this.view?s.transition:kn(i.scene,o.scene,n.element);return this.start({from:this.view,to:n.view,element:n.element,transition:r,direction:"up",...this.durations()},n.element),!0}takeSettled(){let t=this.settled;return this.settled=null,t}announcement(){let t=this.scenes,n=t[this.sceneIndex];return n?pe(this.locale).player.scene(this.sceneIndex+1,t.length,n.id,n.title):""}};function io(e,t,n,i){let o=pe(i).story,s=e.names[t]?.labels??{},r=c=>s[c]??c,l=o.list(n.targets.map(c=>r(c.id))),p=me(n.durationMs,i);switch(n.kind){case"reveal":return o.reveal(l,p);case"hide":return o.hide(l,p);case"highlight":return o.highlight(l,p);case"focus":return n.all?o.clearFocus:o.focus(l);case"camera":return n.all?o.frameAll:o.frame(l);case"trace":{let c=n.targets[0]?.id??"",u=e.views[t]?.ends[c];return o.trace(r(c),u?[r(u[0]),r(u[1])]:null,p)}case"draw":return o.draw(l,p);case"hold":return o.hold(p);case"parallel":return o.parallel(n.children.map(c=>io(e,t,c,i)).join("; "))}}function oo(e,t="en"){let n=pe(t).story,i;return e.timeline.scenes.map((o,s)=>{let r=[],l=e.names[o.view]?.title??o.view.split("#").pop();if(o.transition&&i!==void 0&&i!==o.view){let{kind:c,durationMs:u}=o.transition;r.push(n.transition(c,l,u>0?me(u,t):null))}i=o.view;for(let c of o.actions)r.push(io(e,o.view,c,t));let p=o.startMs+o.durationMs;return{heading:n.scene(s+1,o.title??o.id,me(o.startMs,t),me(p,t)),items:r}})}function ro(e,t="en",n=e.key){let i=pe(t).effects,o=e.names[n]?.labels??{};return(e.views[n]?.plan.effects??[]).map(s=>{let r=o[s.target]??s.target,l=s.effect==="flow"?i.flow(r):s.effect==="dash"?i.dash(r):s.effect==="trace"?i.trace(r):i.pulse(r);return i.cycle(l,me(s.durationMs,t),s.repeat==="forever"?i.forever:i.times(s.repeat),s.delayMs>0?me(s.delayMs,t):null)})}function ps(e,t,n,i){let o=(r,l,p)=>3*r*p*(1-p)*(1-p)+3*l*p*p*(1-p)+p*p*p,s=(r,l,p)=>3*r*(1-p)*(1-p)+6*(l-r)*p*(1-p)+3*(1-l)*p*p;return r=>{if(r<=0)return 0;if(r>=1)return 1;let l=r;for(let u=0;u<8;u++){let m=o(e,n,l)-r;if(Math.abs(m)<1e-6)return o(t,i,l);let h=s(e,n,l);if(Math.abs(h)<1e-6)break;l-=m/h}let p=0,c=1;l=r;for(let u=0;u<30;u++){let m=o(e,n,l);if(Math.abs(m-r)<1e-6)break;m<r?p=l:c=l,l=(p+c)/2}return o(t,i,l)}}var so=ps(.2,.7,.3,1);function vn(e,t){let n=e.cameraMs,i=e.transitionMs;return t<=0?0:t>=n+i?n+i:t<n?n*so(t/n):n+i*so((t-n)/Math.max(1e-9,i))}var ms="meltemi-player";function ao(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.format===ms&&t.version===2&&(t.kind==="story"||t.kind==="effects")}var fs={light:{step:16,jitter:.6},rough:{step:12,jitter:1.4}},hs=new Set(["element","relation","label","frame","lifeline","event","tag"]),mo=Math.PI/6,$n=2;function Tn(e,t){return e.map(n=>n.kind==="group"?fo(n,t):n)}function fo(e,t){if(!hs.has(e.role)||e.freehand)return e;let n=e.tag===void 0?e.id:`${e.id}\0tag\0${e.tag}`,i=[po(uo(`${n}\x000`)),po(uo(`${n}\x001`))],o=[];for(let s of e.items){if(s.kind==="group"){o.push(fo(s,t));continue}if(!gs(s)){o.push(s);continue}let r=xs(s);if(r.length===0){o.push(s);continue}let l=ys(s);l&&o.push(l);for(let p of i)o.push(ks(s,Rs(r,fs[t],p)))}return{...e,items:o}}function gs(e){return e.kind!=="rect"&&e.kind!=="path"&&e.kind!=="polyline"||e.stroke==="none"||e.stroke.startsWith("url(")||!(e.strokeWidth>0)||e.opacity===0?!1:!(e.kind==="path"&&e.transform)}function ys(e){if(e.kind==="polyline"||e.fill==="none")return;let{className:t,dash:n,...i}=e;return{...i,stroke:"none",strokeWidth:0,dashed:!1}}function ks(e,t){return{kind:"path",d:t,fill:"none",stroke:e.stroke,strokeWidth:e.strokeWidth,dashed:e.dashed,rounded:!0,...e.dash?{dash:e.dash}:{},...e.opacity!==void 0?{opacity:e.opacity}:{},...e.kind==="path"&&e.strokeOpacity!==void 0?{strokeOpacity:e.strokeOpacity}:{},...e.className?{className:e.className}:{}}}function xs(e){return e.kind==="polyline"?e.points.length>=2?[{points:[...e.points],closed:!1}]:[]:e.kind==="rect"?[bs(e)]:Ss(e.d)}function bs(e){let{x:t,y:n,width:i,height:o}=e,s=Math.max(0,Math.min(e.radius,i/2,o/2)),r=[],l=(p,c,u)=>{let m=Math.max(2,Math.ceil(s*Math.PI/2/$n));for(let h=0;h<=m;h++){let v=u+h/m*(Math.PI/2);r.push({x:p+s*Math.cos(v),y:c+s*Math.sin(v)})}};return s===0?r.push({x:t,y:n},{x:t+i,y:n},{x:t+i,y:n+o},{x:t,y:n+o}):(l(t+i-s,n+s,-Math.PI/2),l(t+i-s,n+o-s,0),l(t+s,n+o-s,Math.PI/2),l(t+s,n+s,Math.PI)),{points:r,closed:!0}}var vs=/[MmLlHhVvCcSsQqTtAaZz]/,wn=/[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y;function ws(e){let t=[],n=0;for(;n<e.length;){let i=e[n];if(vs.test(i)){t.push(i),n++;continue}if(i===" "||i===","||i===`
3
+ `||i===" "||i==="\r"){n++;continue}wn.lastIndex=n;let o=wn.exec(e);if(!o)return t;t.push(Number(o[0])),n=wn.lastIndex}return t}function Ss(e){let t=ws(e),n=[],i,o={x:0,y:0},s={x:0,y:0},r,l="",p=0,c=()=>{let h=t[p];return p++,typeof h=="number"?h:NaN},u=h=>{i&&i.length>=2&&n.push({points:i,closed:h}),i=void 0},m=h=>{i||(i=[s]),i.push(h),s=h};for(;p<t.length;){let h=t[p];if(typeof h=="string"){if(l=h,p++,l==="Z"||l==="z"){i&&u(!0),s=o,r=void 0;continue}}else if(l==="")return n;let v=l===l.toLowerCase(),x=v?s:{x:0,y:0};switch(l.toUpperCase()){case"M":{u(!1);let g={x:x.x+c(),y:x.y+c()};s=g,o=g,i=[g],l=v?"l":"L",r=void 0;break}case"L":m({x:x.x+c(),y:x.y+c()}),r=void 0;break;case"H":m({x:(v?s.x:0)+c(),y:s.y}),r=void 0;break;case"V":m({x:s.x,y:(v?s.y:0)+c()}),r=void 0;break;case"C":case"S":{let g=l.toUpperCase()==="C"?{x:x.x+c(),y:x.y+c()}:r?{x:2*s.x-r.x,y:2*s.y-r.y}:s,y={x:x.x+c(),y:x.y+c()},T={x:x.x+c(),y:x.y+c()},A=s,$=lo([A,g,y,T]);for(let E=1;E<=$;E++)m($s(A,g,y,T,E/$));r=y;break}case"Q":case"T":{let g=l.toUpperCase()==="Q"?{x:x.x+c(),y:x.y+c()}:r?{x:2*s.x-r.x,y:2*s.y-r.y}:s,y={x:x.x+c(),y:x.y+c()},T=s,A=lo([T,g,y]);for(let $=1;$<=A;$++)m(Ts(T,g,y,$/A));r=g;break}case"A":{let g=c(),y=c(),T=c(),A=c()!==0,$=c()!==0,E={x:x.x+c(),y:x.y+c()};for(let D of Es(s,E,g,y,T,A,$))m(D);r=void 0;break}default:return n}if([s.x,s.y].some(g=>!Number.isFinite(g)))return n}return u(!1),n}function lo(e){let t=0;for(let n=1;n<e.length;n++)t+=Pe(e[n-1],e[n]);return Math.max(4,Math.min(64,Math.ceil(t/$n)))}function $s(e,t,n,i,o){let s=1-o;return{x:s*s*s*e.x+3*s*s*o*t.x+3*s*o*o*n.x+o*o*o*i.x,y:s*s*s*e.y+3*s*s*o*t.y+3*s*o*o*n.y+o*o*o*i.y}}function Ts(e,t,n,i){let o=1-i;return{x:o*o*e.x+2*o*i*t.x+i*i*n.x,y:o*o*e.y+2*o*i*t.y+i*i*n.y}}function Es(e,t,n,i,o,s,r){let l=Math.abs(n),p=Math.abs(i);if(l===0||p===0||e.x===t.x&&e.y===t.y)return[t];let c=o*Math.PI/180,u=Math.cos(c),m=Math.sin(c),h=(e.x-t.x)/2,v=(e.y-t.y)/2,x=u*h+m*v,g=-m*h+u*v,y=x*x/(l*l)+g*g/(p*p);y>1&&(l*=Math.sqrt(y),p*=Math.sqrt(y));let T=l*l*p*p-l*l*g*g-p*p*x*x,A=l*l*g*g+p*p*x*x,$=(s===r?-1:1)*Math.sqrt(Math.max(0,T/A)),E=$*l*g/p,D=-$*p*x/l,K=u*E-m*D+(e.x+t.x)/2,Z=m*E+u*D+(e.y+t.y)/2,j=(oe,X,ee,te)=>Math.atan2(oe*te-X*ee,oe*ee+X*te),P=j(1,0,(x-E)/l,(g-D)/p),U=j((x-E)/l,(g-D)/p,(-x-E)/l,(-g-D)/p);!r&&U>0&&(U-=2*Math.PI),r&&U<0&&(U+=2*Math.PI);let W=Math.max(4,Math.min(96,Math.ceil(Math.abs(U)*Math.max(l,p)/$n))),be=[];for(let oe=1;oe<=W;oe++){let X=P+U*oe/W,ee=l*Math.cos(X),te=p*Math.sin(X);be.push(oe===W?t:{x:u*ee-m*te+K,y:m*ee+u*te+Z})}return be}function Rs(e,t,n){let i=[];for(let o of e){let s=Ds(o.points,o.closed);if(s.length<2)continue;let r=Is(s,o.closed,t.step);if(o.closed&&r.length===1&&!Ls(s)){let c=r[0].slice(0,-1).map(u=>({x:u.point.x+u.normal.x*t.jitter*(2*n()-1),y:u.point.y+u.normal.y*t.jitter*(2*n()-1)}));i.push(...Ps(c,t.jitter*(1+n())));continue}let l=r.map(c=>c.map(u=>({x:u.point.x+u.normal.x*t.jitter*(2*n()-1),y:u.point.y+u.normal.y*t.jitter*(2*n()-1)})));for(let c=1;c<l.length;c++)l[c][0]=l[c-1][l[c-1].length-1];if(o.closed&&l.length>0){let c=l[0][0],u=l[l.length-1],m=l[0][1]??c,h=Pe(c,m)||1,v=t.jitter*(1+n());u[u.length-1]={x:c.x+(m.x-c.x)/h*v,y:c.y+(m.y-c.y)/h*v}}let p=l[0][0];i.push(`M${z(p.x)} ${z(p.y)}`);for(let c of l)i.push(...Ms(c))}return i.join(" ")}function Ms(e){if(e.length===2)return[`L${z(e[1].x)} ${z(e[1].y)}`];let t=[],n=(o,s)=>({x:(o.x+s.x)/2,y:(o.y+s.y)/2}),i=n(e[0],e[1]);t.push(`L${z(i.x)} ${z(i.y)}`);for(let o=1;o<e.length-1;o++){let s=o===e.length-2?e[o+1]:n(e[o],e[o+1]);t.push(`Q${z(e[o].x)} ${z(e[o].y)} ${z(s.x)} ${z(s.y)}`)}return t}function Ps(e,t){let n=e.length;if(n<3)return e.map((c,u)=>`${u===0?"M":"L"}${z(c.x)} ${z(c.y)}`).concat("Z");let i=c=>e[c%n],o=c=>({x:(i(c).x+i(c+1).x)/2,y:(i(c).y+i(c+1).y)/2}),s=o(0),r=[`M${z(s.x)} ${z(s.y)}`];for(let c=1;c<=n;c++){let u=o(c);r.push(`Q${z(i(c).x)} ${z(i(c).y)} ${z(u.x)} ${z(u.y)}`)}let l=i(1),p=Pe(s,l)||1;return r.push(`L${z(s.x+(l.x-s.x)/p*t)} ${z(s.y+(l.y-s.y)/p*t)}`),r}function Ls(e){let t=e.length;for(let n=0;n<t;n++){let i=e[(n+t-1)%t],o=e[n],s=e[(n+1)%t];if(Math.abs(Math.atan2((o.x-i.x)*(s.y-o.y)-(o.y-i.y)*(s.x-o.x),(o.x-i.x)*(s.x-o.x)+(o.y-i.y)*(s.y-o.y)))>mo)return!0}return!1}function Is(e,t,n){let i=e.length,o=c=>e[(c%i+i)%i],s=c=>{if(!t&&(c===0||c===i-1))return!0;let u=o(c-1),m=o(c),h=o(c+1);return Math.abs(Math.atan2((m.x-u.x)*(h.y-m.y)-(m.y-u.y)*(h.x-m.x),(m.x-u.x)*(h.x-m.x)+(m.y-u.y)*(h.y-m.y)))>mo},r=[];for(let c=0;c<i;c++)s(c)&&r.push(c);t&&r.length===0&&r.push(0);let l=t?[...r,r[0]+i]:r,p=[];for(let c=0;c<l.length-1;c++){let u=l[c],m=l[c+1],h=[];for(let v=u;v<=m;v++)h.push(o(v));p.push(As(h,n,t||c>0?o(u-1):void 0,t||c<l.length-2?o(m+1):void 0))}return p}function As(e,t,n,i){let o=[0];for(let m=1;m<e.length;m++)o.push(o[m-1]+Pe(e[m-1],e[m]));let s=o[o.length-1],r=Math.max(1,Math.ceil(s/t)),l=[],p=e[0],c=e[e.length-1];l.push({point:p,normal:co(n,p,e[1])});let u=1;for(let m=1;m<r;m++){let h=s*m/r;for(;u<e.length-1&&o[u]<h;)u++;let v=e[u-1],x=e[u],g=o[u]-o[u-1],y=g===0?0:(h-o[u-1])/g;l.push({point:{x:v.x+(x.x-v.x)*y,y:v.y+(x.y-v.y)*y},normal:Sn(v,x)})}return l.push({point:c,normal:co(e[e.length-2],c,i)}),l}function Sn(e,t){let n=Pe(e,t);return n===0?{x:0,y:0}:{x:-(t.y-e.y)/n,y:(t.x-e.x)/n}}function co(e,t,n){let i=e?Sn(e,t):void 0,o=n?Sn(t,n):void 0;if(!i)return o??{x:0,y:0};if(!o)return i;let s={x:i.x+o.x,y:i.y+o.y},r=Math.hypot(s.x,s.y);return r<1e-6?i:{x:s.x/r,y:s.y/r}}function Ds(e,t){let n=[];for(let i of e){let o=n[n.length-1];(!o||Pe(o,i)>1e-6)&&n.push(i)}return t&&n.length>1&&Pe(n[0],n[n.length-1])<=1e-6&&n.pop(),n}function Pe(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function z(e){let t=Math.round(e*100)/100;return String(Object.is(t,-0)?0:t)}function uo(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function po(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let n=t;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}}var Os="5 4",Cs={woff2:"font/woff2",woff:"font/woff",truetype:"font/ttf",opentype:"font/otf"};function M(e){let t=Math.round(e*100)/100;return String(Object.is(t,-0)?0:t)}function I(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Ot(e,t={}){let n=t.fonts??"system";if(n!=="system"&&!t.provider)throw new Error(`The "${n}" font policy needs a font provider.`);let i=n==="system"?null:{policy:n,provider:t.provider},o=[],s=M(e.width),r=M(e.height),l=e.viewBox?`${M(e.viewBox.x)} ${M(e.viewBox.y)} ${M(e.viewBox.width)} ${M(e.viewBox.height)}`:`0 0 ${s} ${r}`;if(o.push(`<svg xmlns="http://www.w3.org/2000/svg" width="${s}" height="${r}" viewBox="${l}" font-family="${I(e.fonts.body)}">`),e.title!==null&&o.push(` <title>${I(e.title)}</title>`),e.description!==null&&o.push(` <desc>${I(e.description)}</desc>`),e.styleSheet){o.push(" <style><![CDATA[");for(let m of e.styleSheet.split(`
4
+ `))o.push(m===""?"":` ${m}`);o.push(" ]]></style>")}let p=i?.policy==="embedded"?vo(e,i.provider):[];if(e.gradients.length>0||e.patterns.length>0||p.length>0){if(o.push(" <defs>"),p.length>0){o.push(" <style>");for(let m of p)o.push(` ${m}`);o.push(" </style>")}for(let m of e.gradients)o.push(...Fs(m));for(let m of e.patterns)o.push(..._s(m));o.push(" </defs>")}o.push(` <rect x="0" y="0" width="${s}" height="${r}" fill="${I(e.background)}"/>`);let c=i?.policy==="outlined"?i.provider:null,u=e.sketch?Tn(e.items,e.sketch):e.items;if(e.link){o.push(` <a href="${I(e.link)}">`);for(let m of u)Dt(m,o," ",e,c);o.push(" </a>")}else for(let m of u)Dt(m,o," ",e,c);return o.push("</svg>"),`${o.join(`
4
5
  `)}
5
- `}function mn(e,t=!1){if(e.dash)return` stroke-dasharray="${e.dash.array.map(T).join(" ")}" stroke-dashoffset="${T(e.dash.offset)}"`;if(e.dashed==="dotted"){let n=t?"":' stroke-linecap="round"';return` stroke-dasharray="0 ${T(1.5*e.strokeWidth+3)}"${n}`}return e.dashed?' stroke-dasharray="5 4"':""}function fn(e){return e!==void 0?` opacity="${T(e)}"`:""}function $t(e){return e.className?` class="${A(e.className)}"`:""}var Dr=e=>typeof e=="number"?T(e):A(e);function Pr(e){let t=e.kind==="linear"?"linearGradient":"radialGradient",n=[`id="${A(e.id)}"`];e.units&&n.push(`gradientUnits="${e.units}"`);let i=e.kind==="linear"?["x1","y1","x2","y2"]:["cx","cy","r","fx","fy"];for(let l of i){let r=e[l];r!==void 0&&n.push(`${l}="${Dr(r)}"`)}e.transform&&n.push(`gradientTransform="${A(e.transform)}"`),e.spread&&n.push(`spreadMethod="${e.spread}"`);let o=[` <${t} ${n.join(" ")}>`];for(let l of e.stops){let r=l.opacity!==void 0?` stop-opacity="${T(l.opacity)}"`:"";o.push(` <stop offset="${T(l.offset)}" stop-color="${A(l.color)}"${r}/>`)}return o.push(` </${t}>`),o}var ji=.35;function Br(e){let t=T(e.size),n=A(e.color),i=e.kind==="dots"?"":' patternTransform="rotate(45)"',o=` <pattern id="${A(e.id)}" patternUnits="userSpaceOnUse" width="${t}" height="${t}"${i}>`,l;if(e.kind==="dots"){let r=T(e.size/2);l=` <circle cx="${r}" cy="${r}" r="${T(e.size*.15)}" fill="${n}" fill-opacity="${ji}"/>`}else l=` <path d="${e.kind==="hatch"?`M0 0V${t}`:`M0 0V${t}M0 0H${t}`}" stroke="${n}" stroke-width="1.5" stroke-opacity="${ji}" fill="none"/>`;return[o,l," </pattern>"]}function qi(e,t){return e.font==="mono"?t.fonts.mono:t.fonts.body}function Vi(e){return e.flatMap(t=>t.kind==="text"?[t]:t.kind==="group"?Vi(t.items):[])}function Ui(e,t){let n=new Map;for(let o of e)for(let l of Vi(o.items)){let r=t.family(qi(l,o));if(!r)continue;let d=`${r}|${l.weight}`,c=n.get(d)??{family:r,weight:l.weight,text:""};c.text+=l.text,n.set(d,c)}return[...n.values()].flatMap(o=>t.faces(o.family,o.weight,o.text)).sort((o,l)=>(o.family<l.family?-1:o.family>l.family?1:0)||o.weight-l.weight||(o.subset<l.subset?-1:o.subset>l.subset?1:0))}function Hi(e){let t=e.unicodeRange===""?"":`;unicode-range:${e.unicodeRange}`;return`@font-face{font-family:"${e.family}";font-weight:${e.weight};src:url(data:${Ir[e.format]};base64,${Or(e.data)}) format("${e.format}")${t}}`}function Ji(e,t){return Ui([e],t).map(Hi)}function Or(e){let t="";for(let i=0;i<e.length;i+=32768)t+=String.fromCharCode(...e.subarray(i,i+32768));return btoa(t)}function Et(e,t,n,i,o){switch(e.kind){case"group":{let l=e.transform?` transform="${A(e.transform)}"`:"",r=e.layer?` data-layer="${A(e.layer)}"`:"";if(t.push(`${n}<g data-id="${A(e.id)}" data-role="${e.role}"${r}${l}${fn(e.opacity)}${$t(e)}>`),e.href){t.push(`${n} <a href="${A(e.href)}">`);for(let d of e.items)Et(d,t,`${n} `,i,o);t.push(`${n} </a>`)}else for(let d of e.items)Et(d,t,`${n} `,i,o);t.push(`${n}</g>`);return}case"rect":t.push(`${n}<rect x="${T(e.x)}" y="${T(e.y)}" width="${T(e.width)}" height="${T(e.height)}" rx="${T(e.radius)}" fill="${A(e.fill)}" stroke="${A(e.stroke)}" stroke-width="${T(e.strokeWidth)}"${mn(e)}${fn(e.opacity)}${$t(e)}/>`);return;case"path":{let l=e.rounded?' stroke-linecap="round" stroke-linejoin="round"':"",r=[e.transform?` transform="${A(e.transform)}"`:"",e.opacity!==void 0?` opacity="${T(e.opacity)}"`:"",e.fillOpacity!==void 0?` fill-opacity="${T(e.fillOpacity)}"`:"",e.strokeOpacity!==void 0?` stroke-opacity="${T(e.strokeOpacity)}"`:"",e.fillRule==="evenodd"?' fill-rule="evenodd"':""].join("");t.push(`${n}<path d="${A(e.d)}"${r} fill="${A(e.fill)}" stroke="${A(e.stroke)}" stroke-width="${T(e.strokeWidth)}"${l}${mn(e,!!e.rounded)}${$t(e)}/>`);return}case"image":{let l=`${n}<image x="${T(e.x)}" y="${T(e.y)}" width="${T(e.width)}" height="${T(e.height)}" href="${A(e.href)}" preserveAspectRatio="xMidYMid meet"`;t.push(e.title===null?`${l}/>`:`${l}><title>${A(e.title)}</title></image>`);return}case"polyline":t.push(`${n}<polyline points="${e.points.map(l=>`${T(l.x)},${T(l.y)}`).join(" ")}" fill="none" stroke="${A(e.stroke)}" stroke-width="${T(e.strokeWidth)}" stroke-linejoin="round" stroke-linecap="round"${mn(e,!0)}${fn(e.opacity)}${$t(e)}/>`);return;case"text":{let l=o?.family(qi(e,i));if(o&&l&&(o.embeddable?.(l)??!0)){let d=o.outline(e.text,l,e.weight,e.size);if(d.d==="")return;let c=e.anchor==="start"?0:e.anchor==="middle"?d.width/2:d.width;t.push(`${n}<path transform="translate(${T(e.x-c)} ${T(e.baseline)})" d="${d.d}" fill="${A(e.fill)}" aria-label="${A(e.text)}"/>`);return}let r=e.font==="mono"?` font-family="${A(i.fonts.mono)}"`:"";t.push(`${n}<text x="${T(e.x)}" y="${T(e.baseline)}" text-anchor="${e.anchor}" font-size="${T(e.size)}" font-weight="${e.weight}"${r} fill="${A(e.fill)}">${A(e.text)}</text>`);return}}}function Cr(e,t,n={}){let i;if(e.kind==="story")i=Ue(e.timeline,o=>e.views[o],t,{accent:e.accent});else{let o=e.views[n.view??e.key];i=o?n.static?o.scene:Ve(o.scene,o.plan,t):null}return i?(n.background&&(i={...i,background:n.background==="transparent"?"none":n.background}),i):null}function Rt(e,t,n={}){let i=Cr(e,t,n);return i?Tt(i,{fonts:"system"}):""}function Nr(e,t,n,i={}){return ln(t,o=>i[o]??e.views[o],n,{accent:e.accent})}function hn(e,t,n,i={}){let o=Nr(e,t,n,i);return o?Tt(o,{fonts:"system"}):""}var Wi=[.1,.25,.5,.75,1,1.25,1.5,2,3,4,8],Yi=24,gn={min:.1,max:8};var Qi=(e,t=gn)=>Math.min(t.max,Math.max(t.min,e));function Gi(e,t,n){return{x:e.x+e.zoom*(n.x+t.x),y:e.y+e.zoom*(n.y+t.y)}}function yn(e,t,n,i=gn){let o=Qi(t,i),l=(n.x-e.x)/e.zoom,r=(n.y-e.y)/e.zoom;return{x:n.x-o*l,y:n.y-o*r,zoom:o}}function kn(e,t,n,i=gn){let o=e.zoom,l=t>0?Wi.find(r=>r>o+1e-9)??i.max:[...Wi].reverse().find(r=>r<o-1e-9)??i.min;return yn(e,l,n,i)}function Fr(e,t,n={}){let i=n.margin??Yi,o=Math.max(1,t.width-2*i),l=Math.max(1,t.height-2*i),r=Qi(Math.min(n.maxZoom??1,o/Math.max(1,e.width),l/Math.max(1,e.height)),{min:n.minZoom??.1,max:Math.max(8,n.maxZoom??1)});return{x:t.width/2-r*(e.x+e.width/2),y:t.height/2-r*(e.y+e.height/2),zoom:r}}function Zi(e,t,n={}){return Fr({x:0,y:0,...e},t,n)}function Mt(e,t,n){let i=(o,l,r)=>{let d=l*e.zoom;return d<=r?(r-d)/2:Math.min(0,Math.max(r-d,o))};return{x:i(e.x,t.width,n.width),y:i(e.y,t.height,n.height),zoom:e.zoom}}function Xi(e,t,n,i,o){let l=Mt({x:e.x+i,y:e.y+o,zoom:e.zoom},t,n),r=Mt(e,t,n);return Math.abs(l.x-r.x)>1e-6||Math.abs(l.y-r.y)>1e-6}function vn(e,t){let n=Math.min(e.width/Math.max(1e-9,t.width),e.height/Math.max(1e-9,t.height));return{scale:n,x:(e.width-t.width*n)/2-t.x*n,y:(e.height-t.height*n)/2-t.y*n}}function eo(e,t,n,i,o=Yi){let l=Gi(e,t,n),r=Gi(e,t,{x:n.x+n.width,y:n.y+n.height}),{x:d,y:c}=e;return l.x<o?d+=o-l.x:r.x>i.width-o&&(d-=r.x-(i.width-o)),l.y<o?c+=o-l.y:r.y>i.height-o&&(c-=r.y-(i.height-o)),{x:d,y:c,zoom:e.zoom}}var io=.002,oo=3,to=1/8,ro=16;function so(e,t){switch(e){case"+":case"=":return"zoomIn";case"-":return"zoomOut";case"0":return"zoomFit";case"1":return"zoomActual";case"ArrowLeft":return t?"panLeft":void 0;case"ArrowRight":return t?"panRight":void 0;case"ArrowUp":return t?"panUp":void 0;case"ArrowDown":return t?"panDown":void 0;default:return}}var no=(e,t)=>Math.abs(e.x-t.x)<.01&&Math.abs(e.y-t.y)<.01&&Math.abs(e.zoom-t.zoom)<1e-6,At=class{content;stage;viewport;fitted=!0;constructor(t,n=t){this.content=t,this.stage=n,this.viewport=this.fitted?this.fitView():{x:0,y:0,zoom:1}}fitView(){return Zi(this.content,this.stage,{margin:0,maxZoom:1,minZoom:.001})}get fitZoom(){return this.fitView().zoom}get limits(){return{min:Math.min(.1,this.fitZoom),max:8}}get zoom(){return this.viewport.zoom}get percent(){return Math.round(this.viewport.zoom*100)}get pannable(){let t=this.viewport.zoom;return this.content.width*t>this.stage.width+.5||this.content.height*t>this.stage.height+.5}get atFit(){return no(this.viewport,this.fitView())}get atMin(){return this.viewport.zoom<=this.limits.min+1e-9}get atMax(){return this.viewport.zoom>=this.limits.max-1e-9}centre(){return{x:this.stage.width/2,y:this.stage.height/2}}set(t,n=!1){this.viewport=Mt(t,this.content,this.stage),this.fitted=n}resize(t){if(t.width<=0||t.height<=0)return;if(this.fitted){this.stage=t,this.viewport=this.fitView();return}let n=this.toContent(this.centre());this.stage=t;let i=Math.max(this.limits.min,this.viewport.zoom);this.set({x:t.width/2-n.x*i,y:t.height/2-n.y*i,zoom:i})}setContent(t){this.content=t,this.fitted?this.viewport=this.fitView():this.set(this.viewport)}fit(){this.viewport=this.fitView(),this.fitted=!0}actualSize(t=this.centre()){this.setZoom(1,t)}setZoom(t,n=this.centre()){this.set(yn(this.viewport,t,n,this.limits))}zoomBy(t,n){this.setZoom(this.viewport.zoom*t,n)}zoomIn(t=this.centre()){this.set(kn(this.viewport,1,t,this.limits))}zoomOut(t=this.centre()){this.set(kn(this.viewport,-1,t,this.limits))}panBy(t,n){this.set({...this.viewport,x:this.viewport.x+t,y:this.viewport.y+n})}canPan(t,n){return Xi(this.viewport,this.content,this.stage,t,n)}reveal(t,n=16){let i=eo(this.viewport,{x:0,y:0},t,this.stage,n);no(i,this.viewport)||this.set(i)}run(t,n){let i={x:this.stage.width*to,y:this.stage.height*to};switch(t){case"zoomIn":return this.zoomIn(n);case"zoomOut":return this.zoomOut(n);case"zoomFit":return this.fit();case"zoomActual":return this.actualSize(n);case"panLeft":return this.panBy(i.x,0);case"panRight":return this.panBy(-i.x,0);case"panUp":return this.panBy(0,i.y);case"panDown":return this.panBy(0,-i.y)}}toScreen(t){return{x:this.viewport.x+this.viewport.zoom*t.x,y:this.viewport.y+this.viewport.zoom*t.y}}toContent(t){return{x:(t.x-this.viewport.x)/this.viewport.zoom,y:(t.y-this.viewport.y)/this.viewport.zoom}}};var ao=32,_r=10,jr=e=>e==="element"||e==="relation"||e==="lifeline";function qr(e,t){let n=t?.match(/rotate\(\s*([-\d.]+)[\s,]+([-\d.]+)[\s,]+([-\d.]+)\s*\)/);if(!n)return e;let i=Number(n[1])*Math.PI/180,o=Number(n[2]),l=Number(n[3]),r=e.x-o,d=e.y-l;return{x:o+r*Math.cos(i)-d*Math.sin(i),y:l+r*Math.sin(i)+d*Math.cos(i)}}var M=e=>String(Math.round(e*100)/100),Lt=class{constructor(t,n,i){this.root=t;this.interactive=n;this.handlers=i;this.picture=h("div",{class:"picture"}),this.overlay=X("svg",{class:"overlay","aria-hidden":"true"}),this.layers={hits:X("g",{class:"hits"}),rings:X("g",{class:"rings"}),badges:X("g",{class:"badges"})},this.overlay.append(this.layers.hits,this.layers.rings,this.layers.badges),this.content=h("div",{class:"content"},this.picture),n&&this.content.append(this.overlay),this.frame=h("div",{class:n?"frame interactive":"frame",role:"img",tabindex:"0"},this.content),this.body=h("div",{class:"body"},this.frame),typeof ResizeObserver=="function"&&(this.observer=new ResizeObserver(()=>this.measure()),this.observer.observe(this.body)),n&&this.listen()}root;interactive;handlers;body;frame;content;picture;overlay;viewer=new At({width:1,height:1});markup="";size={width:1,height:1};viewBox={x:0,y:0,width:1,height:1};measured=0;layers;nodes=new Map;state=null;observer;pointers=new Map;press=null;pinch=null;suppressClick=!1;setSize(t,n="direct"){let i=Math.max(1,t.width),o=Math.max(1,t.height);i===this.size.width&&o===this.size.height||(this.size={width:i,height:o},this.body.style.setProperty("--meltemi-w",`${M(i)}px`),this.body.style.setProperty("--meltemi-ratio",`${M(i)} / ${M(o)}`),this.body.style.setProperty("--meltemi-cw",`${M(i)}px`),this.body.style.setProperty("--meltemi-ch",`${M(o)}px`),this.viewer.setContent(this.size),this.measure(!0),this.apply(n))}measure(t=!1){let n=this.body.clientWidth;if(n<=0||!t&&Math.abs(n-this.measured)<.5)return;this.measured=n;let i={width:n,height:n*this.size.height/this.size.width};this.viewer.resize(i),this.apply("direct"),this.handlers.resized(i)}draw(t){if(t===this.markup)return!1;this.markup=t,this.picture.innerHTML=t;let n=this.picture.firstElementChild;if(n){if(n.setAttribute("aria-hidden","true"),this.interactive)for(let o of n.querySelectorAll("title, desc"))o.remove();let i=n.getAttribute("viewBox")?.split(/[\s,]+/).map(Number);i&&i.length===4&&i.every(o=>Number.isFinite(o))&&(this.viewBox={x:i[0],y:i[1],width:i[2],height:i[3]},this.overlay.setAttribute("viewBox",i.join(" ")))}return this.state&&this.render(this.state),!0}apply(t="animate"){let n=this.viewer.viewport;this.frame.classList.toggle("direct",t==="direct"),this.frame.classList.toggle("slow",t==="slow"),this.content.style.transform=`translate(${M(n.x)}px, ${M(n.y)}px) scale(${n.zoom})`,this.frame.classList.toggle("pannable",this.viewer.pannable),this.state&&this.render(this.state)}px(){let t=vn(this.size,this.viewBox);return 1/Math.max(1e-9,t.scale*this.viewer.zoom)}toContent(t){let n=vn(this.size,this.viewBox);return{x:n.x+t.x*n.scale,y:n.y+t.y*n.scale,width:t.width*n.scale,height:t.height*n.scale}}render(t){if(this.state=t,!this.interactive)return;let n=t.scene,i=new Set;if(n){let o=this.px(),l=Oe(n.items),r=new Map,d=new Map;for(let p of l)p.role==="element"&&p.bounds&&!r.has(p.id)?r.set(p.id,p):p.role==="relation"&&p.track&&p.track.length>1&&!d.has(p.id)&&d.set(p.id,p);let c=p=>p.track.map(m=>`${M(m.x)},${M(m.y)}`).join(" ");for(let[p,m]of d){let b=`hit:${p}`;i.add(b),this.node(b,"hits","polyline",{class:"hit",points:c(m),"stroke-width":M(10*o),"data-id":p,"data-role":"relation"})}let f=(p,m)=>{if(!m)return;let b=`${p}:${m.role}:${m.id}`;if(m.role==="element"){let S=r.get(m.id);if(!S?.bounds)return;let x=S.bounds;i.add(b);let $=p==="selected"?3:1.5;this.node(b,"rings","rect",{class:`ring ${p}`,x:M(x.x-4),y:M(x.y-4),width:M(x.width+8),height:M(x.height+8),rx:M(x.radius+4),"stroke-width":M($*o),"stroke-dasharray":p==="focus"?`${M(4*o)} ${M(3*o)}`:"none",transform:S.transform??""})}else{let S=d.get(m.id);if(!S)return;i.add(b);let x=p==="selected"?8:p==="hover"?6:2;this.node(b,"rings","polyline",{class:p==="focus"?`ring ${p}`:`ring line ${p}`,points:c(S),"stroke-width":M(x*o),"stroke-dasharray":p==="focus"?`${M(4*o)} ${M(3*o)}`:"none"})}};f("hover",t.hover),f("selected",t.selection),f("focus",t.focus);for(let[p,m]of t.badges){let b=r.get(p);if(!b?.bounds)continue;let S=b.bounds;if(S.width/o<ao||S.height/o<ao)continue;let x=`badge:${p}`;i.add(x);let $=qr({x:S.x+S.width+4,y:S.y-4},b.transform),k=t.selection?.role==="element"&&t.selection.id===p,N=_r*o,L=4.5*o,D=this.node(x,"badges","g",{class:k?"badge selected":"badge","data-open":p}),I=D.querySelector("circle"),O=D.querySelector("path"),V=D.querySelector("title");(!I||!O||!V)&&(I=X("circle"),O=X("path"),V=X("title"),D.replaceChildren(V,I,O)),V.textContent=m;for(let[ae,_]of Object.entries({cx:M($.x),cy:M($.y),r:M(N),"stroke-width":M(1.5*o)}))I.setAttribute(ae,_);O.setAttribute("d",`M${M($.x-L)} ${M($.y)}H${M($.x+L)}M${M($.x)} ${M($.y-L)}V${M($.y+L)}`),O.setAttribute("stroke-width",M(1.75*o))}}for(let[o,l]of this.nodes)i.has(o)||(l.remove(),this.nodes.delete(o))}node(t,n,i,o){let l=this.nodes.get(t);(!l||l.localName!==i)&&(l?.remove(),l=X(i),this.nodes.set(t,l),this.layers[n].append(l));for(let[r,d]of Object.entries(o))d===""?l.removeAttribute(r):l.setAttribute(r,d);return l}local(t){let n=this.frame.getBoundingClientRect();return{x:t.clientX-n.left,y:t.clientY-n.top}}itemAt(t){for(let n of t.composedPath()){if(n===this.frame)break;if(!(n instanceof Element))continue;let i=n.getAttribute("data-role"),o=n.getAttribute("data-id");if(!(i==="motion"||o===null||!jr(i))){if(this.hidden(n))return null;if(i==="relation"&&this.overlay.contains(n)){let l=this.elementUnder(t.clientX,t.clientY);if(l!==null)return{role:"element",id:l}}return{role:i==="relation"?"relation":"element",id:o}}}return null}hidden(t){for(let n=t;n&&n!==this.picture;n=n.parentElement)if(n.getAttribute("opacity")==="0")return!0;return!1}elementUnder(t,n){for(let i of this.root.elementsFromPoint(t,n)){if(!this.picture.contains(i))continue;let o=i.closest('[data-role="element"], [data-role="lifeline"]'),l=o?.getAttribute("data-id");if(o&&l&&!this.hidden(o)&&!this.handlers.container(l))return l}return null}listen(){let t=this.frame;t.addEventListener("pointerdown",n=>this.down(n)),t.addEventListener("pointermove",n=>this.move(n)),t.addEventListener("pointerup",n=>this.up(n)),t.addEventListener("pointercancel",n=>this.up(n,!0)),t.addEventListener("pointerleave",n=>{this.press||this.handlers.hover(null,n)}),t.addEventListener("wheel",n=>this.wheel(n),{passive:!1}),t.addEventListener("dragstart",n=>n.preventDefault()),t.addEventListener("click",n=>{if(this.suppressClick){this.suppressClick=!1,n.preventDefault(),n.stopPropagation();return}let i=n.target.closest?.("[data-open]");if(i&&this.overlay.contains(i)){n.preventDefault(),n.stopPropagation(),this.handlers.open(i.getAttribute("data-open"));return}let o=n.composedPath().find(l=>l instanceof Element&&l.localName==="a");o&&!(n.ctrlKey||n.metaKey||n.shiftKey)&&n.preventDefault(),!(o&&(n.ctrlKey||n.metaKey||n.shiftKey))&&this.handlers.click(this.itemAt(n),n)},{capture:!0}),t.addEventListener("dblclick",n=>{if(n.target.closest?.("[data-open]"))return;let i=this.itemAt(n);i?.role==="element"&&(n.preventDefault(),this.handlers.open(i.id))})}down(t){if(!(t.button!==0&&t.button!==1)&&!t.target.closest?.("[data-open]")){if(this.suppressClick=!1,this.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY}),t.button===1&&t.preventDefault(),this.pointers.size===2){let[n,i]=[...this.pointers.values()];this.pinch={distance:Math.max(1,Math.hypot(n.x-i.x,n.y-i.y)),middle:this.local({clientX:(n.x+i.x)/2,clientY:(n.y+i.y)/2}),origin:this.viewer.viewport},this.press=null;for(let o of this.pointers.keys())this.frame.hasPointerCapture(o)||this.frame.setPointerCapture(o);this.frame.classList.add("pannable");return}this.press={id:t.pointerId,start:{x:t.clientX,y:t.clientY},origin:this.viewer.viewport,moved:!1}}}move(t){this.pointers.has(t.pointerId)&&this.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY});let n=this.pinch;if(n&&this.pointers.size>=2){let[o,l]=[...this.pointers.values()],r=this.local({clientX:(o.x+l.x)/2,clientY:(o.y+l.y)/2});this.viewer.viewport=n.origin,this.viewer.zoomBy(Math.hypot(o.x-l.x,o.y-l.y)/n.distance,n.middle),this.viewer.panBy(r.x-n.middle.x,r.y-n.middle.y),this.apply("direct"),this.handlers.moved();return}let i=this.press;if(i&&i.id===t.pointerId){let o=t.clientX-i.start.x,l=t.clientY-i.start.y;if(!i.moved&&Math.hypot(o,l)<oo)return;i.moved||(i.moved=!0,this.frame.setPointerCapture(t.pointerId),this.frame.classList.add("panning"),this.handlers.hover(null,t)),this.viewer.viewport=i.origin,this.viewer.panBy(o,l),this.apply("direct"),this.handlers.moved();return}t.pointerType!=="touch"&&this.handlers.hover(this.itemAt(t),t)}up(t,n=!1){if(this.pointers.delete(t.pointerId),this.frame.hasPointerCapture(t.pointerId)&&this.frame.releasePointerCapture(t.pointerId),this.pinch){this.pointers.size<2&&(this.pinch=null,this.suppressClick=!0,this.frame.classList.toggle("pannable",this.viewer.pannable));return}let i=this.press;i&&i.id===t.pointerId&&(i.moved&&!n&&(this.suppressClick=!0),this.press=null,this.frame.classList.remove("panning"))}wheel(t){let n=t.deltaMode===1?ro:t.deltaMode===2?this.viewer.stage.height:1,i=t.deltaX*n,o=t.deltaY*n;if(t.ctrlKey||t.metaKey){t.preventDefault(),this.viewer.zoomBy(Math.exp(-o*io),this.local(t)),this.apply("direct"),this.handlers.moved();return}t.shiftKey&&i===0&&(i=o,o=0),this.viewer.canPan(-i,-o)&&(t.preventDefault(),this.viewer.panBy(-i,-o),this.apply("direct"),this.handlers.moved())}destroy(){this.observer?.disconnect()}};var lo=`
6
+ `}function Bs(e){return`${M(Math.max(5,2*e))} ${M(Math.max(4,e)+e)}`}function En(e,t=!1,n=!1){if(e.dash)return` stroke-dasharray="${e.dash.array.map(M).join(" ")}" stroke-dashoffset="${M(e.dash.offset)}"`;if(e.dashed==="dotted"){let i=t?"":' stroke-linecap="round"';return` stroke-dasharray="0 ${M(1.5*e.strokeWidth+3)}"${i}`}return e.dashed?` stroke-dasharray="${n?Bs(e.strokeWidth):Os}"`:""}function Rn(e){return e!==void 0?` opacity="${M(e)}"`:""}function Ns(e){return e.opacity===void 0?e.styleOpacity:e.styleOpacity===void 0?e.opacity:e.opacity*e.styleOpacity}function At(e){return e.className?` class="${I(e.className)}"`:""}var Ks=e=>typeof e=="number"?M(e):I(e);function Fs(e){let t=e.kind==="linear"?"linearGradient":"radialGradient",n=[`id="${I(e.id)}"`];e.units&&n.push(`gradientUnits="${e.units}"`);let i=e.kind==="linear"?["x1","y1","x2","y2"]:["cx","cy","r","fx","fy"];for(let s of i){let r=e[s];r!==void 0&&n.push(`${s}="${Ks(r)}"`)}e.transform&&n.push(`gradientTransform="${I(e.transform)}"`),e.spread&&n.push(`spreadMethod="${e.spread}"`);let o=[` <${t} ${n.join(" ")}>`];for(let s of e.stops){let r=s.opacity!==void 0?` stop-opacity="${M(s.opacity)}"`:"";o.push(` <stop offset="${M(s.offset)}" stop-color="${I(s.color)}"${r}/>`)}return o.push(` </${t}>`),o}var ho=.35;function _s(e){let t=M(e.size),n=I(e.color),i=e.kind==="dots"?"":' patternTransform="rotate(45)"',o=` <pattern id="${I(e.id)}" patternUnits="userSpaceOnUse" width="${t}" height="${t}"${i}>`,s;if(e.kind==="dots"){let r=M(e.size/2);s=` <circle cx="${r}" cy="${r}" r="${M(e.size*.15)}" fill="${n}" fill-opacity="${ho}"/>`}else s=` <path d="${e.kind==="hatch"?`M0 0V${t}`:`M0 0V${t}M0 0H${t}`}" stroke="${n}" stroke-width="1.5" stroke-opacity="${ho}" fill="none"/>`;return[o,s," </pattern>"]}function go(e,t){return e.font==="mono"?t.fonts.mono:t.fonts.body}function yo(e,t){return e.stack??go(e,t)}function ko(e){return e.flatMap(t=>t.kind==="text"?[t]:t.kind==="group"?ko(t.items):[])}function xo(e,t){let n=new Map;for(let s of e)for(let r of ko(s.items)){let l=t.family(yo(r,s));if(!l)continue;let p=`${l}|${r.weight}`,c=n.get(p)??{family:l,weight:r.weight,text:""};c.text+=r.text,n.set(p,c)}let i=new Map;for(let s of[...n.values()].flatMap(r=>t.faces(r.family,r.weight,r.text))){let r=`${s.family}|${s.weight}|${s.subset}`,l=i.get(r);i.set(r,l?{...l,unicodeRange:l.unicodeRange===""||s.unicodeRange===""?"":`${l.unicodeRange},${s.unicodeRange}`}:s)}return[...i.values()].sort((s,r)=>(s.family<r.family?-1:s.family>r.family?1:0)||s.weight-r.weight||(s.subset<r.subset?-1:s.subset>r.subset?1:0))}function bo(e){let t=e.unicodeRange===""?"":`;unicode-range:${e.unicodeRange}`,n=e.weightTo!==void 0&&e.weightTo>e.weight?`${e.weight} ${e.weightTo}`:String(e.weight);return`@font-face{font-family:"${e.family}";font-weight:${n};src:url(data:${Cs[e.format]};base64,${zs(e.data)}) format("${e.format}")${t}}`}function vo(e,t){return xo([e],t).map(bo)}function zs(e){let t="";for(let i=0;i<e.length;i+=32768)t+=String.fromCharCode(...e.subarray(i,i+32768));return btoa(t)}function Dt(e,t,n,i,o,s,r=!1){switch(e.kind){case"group":{let l=e.transform?` transform="${I(e.transform)}"`:"",p=e.layer?` data-layer="${I(e.layer)}"`:"",c=e.tag!==void 0?` data-tag="${e.tag}"`:"";t.push(`${n}<g data-id="${I(e.id)}" data-role="${e.role}"${c}${p}${l}${Rn(Ns(e))}${At(e)}>`);let u=e.textClip?.id,m=r||e.freehand===!0;if(e.textClip){let{x:h,y:v,width:x,height:g,radius:y}=e.textClip;t.push(`${n} <clipPath id="${I(e.textClip.id)}"><rect x="${M(h)}" y="${M(v)}" width="${M(x)}" height="${M(g)}" rx="${M(y)}"/></clipPath>`)}if(e.href){t.push(`${n} <a href="${I(e.href)}">`);for(let h of e.items)Dt(h,t,`${n} `,i,o,u,m);t.push(`${n} </a>`)}else for(let h of e.items)Dt(h,t,`${n} `,i,o,u,m);t.push(`${n}</g>`);return}case"rect":t.push(`${n}<rect x="${M(e.x)}" y="${M(e.y)}" width="${M(e.width)}" height="${M(e.height)}" rx="${M(e.radius)}" fill="${I(e.fill)}" stroke="${I(e.stroke)}" stroke-width="${M(e.strokeWidth)}"${En(e)}${Rn(e.opacity)}${At(e)}/>`);return;case"path":{let l=e.rounded?' stroke-linecap="round" stroke-linejoin="round"':"",p=[e.transform?` transform="${I(e.transform)}"`:"",e.opacity!==void 0?` opacity="${M(e.opacity)}"`:"",e.fillOpacity!==void 0?` fill-opacity="${M(e.fillOpacity)}"`:"",e.strokeOpacity!==void 0?` stroke-opacity="${M(e.strokeOpacity)}"`:"",e.fillRule==="evenodd"?' fill-rule="evenodd"':""].join("");t.push(`${n}<path d="${I(e.d)}"${p} fill="${I(e.fill)}" stroke="${I(e.stroke)}" stroke-width="${M(e.strokeWidth)}"${l}${En(e,!!e.rounded,r)}${At(e)}/>`);return}case"image":{let l=`${n}<image x="${M(e.x)}" y="${M(e.y)}" width="${M(e.width)}" height="${M(e.height)}" href="${I(e.href)}" preserveAspectRatio="xMidYMid meet"`;t.push(e.title===null?`${l}/>`:`${l}><title>${I(e.title)}</title></image>`);return}case"polyline":t.push(`${n}<polyline points="${e.points.map(l=>`${M(l.x)},${M(l.y)}`).join(" ")}" fill="none" stroke="${I(e.stroke)}" stroke-width="${M(e.strokeWidth)}" stroke-linejoin="round" stroke-linecap="round"${En(e,!0,r)}${Rn(e.opacity)}${At(e)}/>`);return;case"text":{let l=s===void 0?"":` clip-path="url(#${I(s)})"`,p=o?.family(yo(e,i));if(o&&p&&(o.embeddable?.(p)??!0)){let u=o.outline(e.text,p,e.weight,e.size);if(u.d==="")return;let m=e.anchor==="start"?0:e.anchor==="middle"?u.width/2:u.width;l&&t.push(`${n}<g${l}>`),t.push(`${l?`${n} `:n}<path transform="translate(${M(e.x-m)} ${M(e.baseline)})" d="${u.d}" fill="${I(e.fill)}" aria-label="${I(e.text)}"/>`),l&&t.push(`${n}</g>`);return}let c=e.stack!==void 0?` font-family="${I(`${e.stack}, ${go(e,i)}`)}"`:e.font==="mono"?` font-family="${I(i.fonts.mono)}"`:"";t.push(`${n}<text x="${M(e.x)}" y="${M(e.baseline)}" text-anchor="${e.anchor}" font-size="${M(e.size)}" font-weight="${e.weight}"${c} fill="${I(e.fill)}"${l}>${I(e.text)}</text>`);return}}}function js(e,t,n={}){let i;if(e.kind==="story")i=Xe(e.timeline,o=>e.views[o],t,{accent:e.accent});else{let o=e.views[n.view??e.key];i=o?n.static?o.scene:Ze(o.scene,o.plan,t):null}return i?(n.background&&(i={...i,background:n.background==="transparent"?"none":n.background}),i):null}function Ct(e,t,n={}){let i=js(e,t,n);return i?Ot(i,{fonts:"system"}):""}function qs(e,t,n,i={}){return yn(t,o=>i[o]??e.views[o],n,{accent:e.accent})}function Mn(e,t,n,i={}){let o=qs(e,t,n,i);return o?Ot(o,{fonts:"system"}):""}var wo=[.1,.25,.5,.75,1,1.25,1.5,2,3,4,8],$o=24,Pn={min:.1,max:8};var To=(e,t=Pn)=>Math.min(t.max,Math.max(t.min,e));function So(e,t,n){return{x:e.x+e.zoom*(n.x+t.x),y:e.y+e.zoom*(n.y+t.y)}}function Ln(e,t,n,i=Pn){let o=To(t,i),s=(n.x-e.x)/e.zoom,r=(n.y-e.y)/e.zoom;return{x:n.x-o*s,y:n.y-o*r,zoom:o}}function In(e,t,n,i=Pn){let o=e.zoom,s=t>0?wo.find(r=>r>o+1e-9)??i.max:[...wo].reverse().find(r=>r<o-1e-9)??i.min;return Ln(e,s,n,i)}function Us(e,t,n={}){let i=n.margin??$o,o=Math.max(1,t.width-2*i),s=Math.max(1,t.height-2*i),r=To(Math.min(n.maxZoom??1,o/Math.max(1,e.width),s/Math.max(1,e.height)),{min:n.minZoom??.1,max:Math.max(8,n.maxZoom??1)});return{x:t.width/2-r*(e.x+e.width/2),y:t.height/2-r*(e.y+e.height/2),zoom:r}}function Eo(e,t,n={}){return Us({x:0,y:0,...e},t,n)}function Bt(e,t,n){let i=(o,s,r)=>{let l=s*e.zoom;return l<=r?(r-l)/2:Math.min(0,Math.max(r-l,o))};return{x:i(e.x,t.width,n.width),y:i(e.y,t.height,n.height),zoom:e.zoom}}function Ro(e,t,n,i,o){let s=Bt({x:e.x+i,y:e.y+o,zoom:e.zoom},t,n),r=Bt(e,t,n);return Math.abs(s.x-r.x)>1e-6||Math.abs(s.y-r.y)>1e-6}function An(e,t){let n=Math.min(e.width/Math.max(1e-9,t.width),e.height/Math.max(1e-9,t.height));return{scale:n,x:(e.width-t.width*n)/2-t.x*n,y:(e.height-t.height*n)/2-t.y*n}}function Mo(e,t,n,i,o=$o){let s=So(e,t,n),r=So(e,t,{x:n.x+n.width,y:n.y+n.height}),{x:l,y:p}=e;return s.x<o?l+=o-s.x:r.x>i.width-o&&(l-=r.x-(i.width-o)),s.y<o?p+=o-s.y:r.y>i.height-o&&(p-=r.y-(i.height-o)),{x:l,y:p,zoom:e.zoom}}var Io=.002,Ao=3,Po=1/8,Do=16;function Oo(e,t){switch(e){case"+":case"=":return"zoomIn";case"-":return"zoomOut";case"0":return"zoomFit";case"1":return"zoomActual";case"ArrowLeft":return t?"panLeft":void 0;case"ArrowRight":return t?"panRight":void 0;case"ArrowUp":return t?"panUp":void 0;case"ArrowDown":return t?"panDown":void 0;default:return}}var Lo=(e,t)=>Math.abs(e.x-t.x)<.01&&Math.abs(e.y-t.y)<.01&&Math.abs(e.zoom-t.zoom)<1e-6,Nt=class{content;stage;viewport;fitted=!0;constructor(t,n=t){this.content=t,this.stage=n,this.viewport=this.fitted?this.fitView():{x:0,y:0,zoom:1}}fitView(){return Eo(this.content,this.stage,{margin:0,maxZoom:1,minZoom:.001})}get fitZoom(){return this.fitView().zoom}get limits(){return{min:Math.min(.1,this.fitZoom),max:8}}get zoom(){return this.viewport.zoom}get percent(){return Math.round(this.viewport.zoom*100)}get pannable(){let t=this.viewport.zoom;return this.content.width*t>this.stage.width+.5||this.content.height*t>this.stage.height+.5}get atFit(){return Lo(this.viewport,this.fitView())}get atMin(){return this.viewport.zoom<=this.limits.min+1e-9}get atMax(){return this.viewport.zoom>=this.limits.max-1e-9}centre(){return{x:this.stage.width/2,y:this.stage.height/2}}set(t,n=!1){this.viewport=Bt(t,this.content,this.stage),this.fitted=n}resize(t){if(t.width<=0||t.height<=0)return;if(this.fitted){this.stage=t,this.viewport=this.fitView();return}let n=this.toContent(this.centre());this.stage=t;let i=Math.max(this.limits.min,this.viewport.zoom);this.set({x:t.width/2-n.x*i,y:t.height/2-n.y*i,zoom:i})}setContent(t){this.content=t,this.fitted?this.viewport=this.fitView():this.set(this.viewport)}fit(){this.viewport=this.fitView(),this.fitted=!0}actualSize(t=this.centre()){this.setZoom(1,t)}setZoom(t,n=this.centre()){this.set(Ln(this.viewport,t,n,this.limits))}zoomBy(t,n){this.setZoom(this.viewport.zoom*t,n)}zoomIn(t=this.centre()){this.set(In(this.viewport,1,t,this.limits))}zoomOut(t=this.centre()){this.set(In(this.viewport,-1,t,this.limits))}panBy(t,n){this.set({...this.viewport,x:this.viewport.x+t,y:this.viewport.y+n})}canPan(t,n){return Ro(this.viewport,this.content,this.stage,t,n)}reveal(t,n=16){let i=Mo(this.viewport,{x:0,y:0},t,this.stage,n);Lo(i,this.viewport)||this.set(i)}run(t,n){let i={x:this.stage.width*Po,y:this.stage.height*Po};switch(t){case"zoomIn":return this.zoomIn(n);case"zoomOut":return this.zoomOut(n);case"zoomFit":return this.fit();case"zoomActual":return this.actualSize(n);case"panLeft":return this.panBy(i.x,0);case"panRight":return this.panBy(-i.x,0);case"panUp":return this.panBy(0,i.y);case"panDown":return this.panBy(0,-i.y)}}toScreen(t){return{x:this.viewport.x+this.viewport.zoom*t.x,y:this.viewport.y+this.viewport.zoom*t.y}}toContent(t){return{x:(t.x-this.viewport.x)/this.viewport.zoom,y:(t.y-this.viewport.y)/this.viewport.zoom}}};var Co=32,Ws=10,Js=e=>e==="element"||e==="relation"||e==="lifeline";function Gs(e,t){let n=t?.match(/rotate\(\s*([-\d.]+)[\s,]+([-\d.]+)[\s,]+([-\d.]+)\s*\)/);if(!n)return e;let i=Number(n[1])*Math.PI/180,o=Number(n[2]),s=Number(n[3]),r=e.x-o,l=e.y-s;return{x:o+r*Math.cos(i)-l*Math.sin(i),y:s+r*Math.sin(i)+l*Math.cos(i)}}var O=e=>String(Math.round(e*100)/100),Kt=class{constructor(t,n,i){this.root=t;this.interactive=n;this.handlers=i;this.picture=b("div",{class:"picture"}),this.overlay=se("svg",{class:"overlay","aria-hidden":"true"}),this.layers={hits:se("g",{class:"hits"}),rings:se("g",{class:"rings"}),badges:se("g",{class:"badges"})},this.overlay.append(this.layers.hits,this.layers.rings,this.layers.badges),this.content=b("div",{class:"content"},this.picture),n&&this.content.append(this.overlay),this.frame=b("div",{class:n?"frame interactive":"frame",role:"img",tabindex:"0"},this.content),this.body=b("div",{class:"body"},this.frame),typeof ResizeObserver=="function"&&(this.observer=new ResizeObserver(()=>this.measure()),this.observer.observe(this.body)),n&&this.listen()}root;interactive;handlers;body;frame;content;picture;overlay;viewer=new Nt({width:1,height:1});markup="";size={width:1,height:1};viewBox={x:0,y:0,width:1,height:1};measured=0;layers;nodes=new Map;state=null;observer;pointers=new Map;press=null;pinch=null;suppressClick=!1;setSize(t,n="direct"){let i=Math.max(1,t.width),o=Math.max(1,t.height);i===this.size.width&&o===this.size.height||(this.size={width:i,height:o},this.body.style.setProperty("--meltemi-w",`${O(i)}px`),this.body.style.setProperty("--meltemi-ratio",`${O(i)} / ${O(o)}`),this.body.style.setProperty("--meltemi-cw",`${O(i)}px`),this.body.style.setProperty("--meltemi-ch",`${O(o)}px`),this.viewer.setContent(this.size),this.measure(!0),this.apply(n))}measure(t=!1){let n=this.body.clientWidth;if(n<=0||!t&&Math.abs(n-this.measured)<.5)return;this.measured=n;let i={width:n,height:n*this.size.height/this.size.width};this.viewer.resize(i),this.apply("direct"),this.handlers.resized(i)}draw(t){if(t===this.markup)return!1;this.markup=t,this.picture.innerHTML=t;let n=this.picture.firstElementChild;if(n){if(n.setAttribute("aria-hidden","true"),this.interactive)for(let o of n.querySelectorAll("title, desc"))o.remove();let i=n.getAttribute("viewBox")?.split(/[\s,]+/).map(Number);i&&i.length===4&&i.every(o=>Number.isFinite(o))&&(this.viewBox={x:i[0],y:i[1],width:i[2],height:i[3]},this.overlay.setAttribute("viewBox",i.join(" ")))}return this.state&&this.render(this.state),!0}apply(t="animate"){let n=this.viewer.viewport;this.frame.classList.toggle("direct",t==="direct"),this.frame.classList.toggle("slow",t==="slow"),this.content.style.transform=`translate(${O(n.x)}px, ${O(n.y)}px) scale(${n.zoom})`,this.frame.classList.toggle("pannable",this.viewer.pannable),this.state&&this.render(this.state)}px(){let t=An(this.size,this.viewBox);return 1/Math.max(1e-9,t.scale*this.viewer.zoom)}toContent(t){let n=An(this.size,this.viewBox);return{x:n.x+t.x*n.scale,y:n.y+t.y*n.scale,width:t.width*n.scale,height:t.height*n.scale}}render(t){if(this.state=t,!this.interactive)return;let n=t.scene,i=new Set;if(n){let o=this.px(),s=je(n.items),r=new Map,l=new Map;for(let u of s)u.role==="element"&&u.bounds&&!r.has(u.id)?r.set(u.id,u):u.role==="relation"&&u.track&&u.track.length>1&&!l.has(u.id)&&l.set(u.id,u);let p=u=>u.track.map(m=>`${O(m.x)},${O(m.y)}`).join(" ");for(let[u,m]of l){let h=`hit:${u}`;i.add(h),this.node(h,"hits","polyline",{class:"hit",points:p(m),"stroke-width":O(10*o),"data-id":u,"data-role":"relation"})}let c=(u,m)=>{if(!m)return;let h=`${u}:${m.role}:${m.id}`;if(m.role==="element"){let v=r.get(m.id);if(!v?.bounds)return;let x=v.bounds;i.add(h);let g=u==="selected"?3:1.5;this.node(h,"rings","rect",{class:`ring ${u}`,x:O(x.x-4),y:O(x.y-4),width:O(x.width+8),height:O(x.height+8),rx:O(x.radius+4),"stroke-width":O(g*o),"stroke-dasharray":u==="focus"?`${O(4*o)} ${O(3*o)}`:"none",transform:v.transform??""})}else{let v=l.get(m.id);if(!v)return;i.add(h);let x=u==="selected"?8:u==="hover"?6:2;this.node(h,"rings","polyline",{class:u==="focus"?`ring ${u}`:`ring line ${u}`,points:p(v),"stroke-width":O(x*o),"stroke-dasharray":u==="focus"?`${O(4*o)} ${O(3*o)}`:"none"})}};c("hover",t.hover),c("selected",t.selection),c("focus",t.focus);for(let[u,m]of t.badges){let h=r.get(u);if(!h?.bounds)continue;let v=h.bounds;if(v.width/o<Co||v.height/o<Co)continue;let x=`badge:${u}`;i.add(x);let g=Gs({x:v.x+v.width+4,y:v.y-4},h.transform),y=t.selection?.role==="element"&&t.selection.id===u,T=Ws*o,A=4.5*o,$=this.node(x,"badges","g",{class:y?"badge selected":"badge","data-open":u}),E=$.querySelector("circle"),D=$.querySelector("path"),K=$.querySelector("title");(!E||!D||!K)&&(E=se("circle"),D=se("path"),K=se("title"),$.replaceChildren(K,E,D)),K.textContent=m;for(let[Z,j]of Object.entries({cx:O(g.x),cy:O(g.y),r:O(T),"stroke-width":O(1.5*o)}))E.setAttribute(Z,j);D.setAttribute("d",`M${O(g.x-A)} ${O(g.y)}H${O(g.x+A)}M${O(g.x)} ${O(g.y-A)}V${O(g.y+A)}`),D.setAttribute("stroke-width",O(1.75*o))}}for(let[o,s]of this.nodes)i.has(o)||(s.remove(),this.nodes.delete(o))}node(t,n,i,o){let s=this.nodes.get(t);(!s||s.localName!==i)&&(s?.remove(),s=se(i),this.nodes.set(t,s),this.layers[n].append(s));for(let[r,l]of Object.entries(o))l===""?s.removeAttribute(r):s.setAttribute(r,l);return s}local(t){let n=this.frame.getBoundingClientRect();return{x:t.clientX-n.left,y:t.clientY-n.top}}itemAt(t){for(let n of t.composedPath()){if(n===this.frame)break;if(!(n instanceof Element))continue;let i=n.getAttribute("data-role"),o=n.getAttribute("data-id");if(!(i==="motion"||o===null||!Js(i))){if(this.hidden(n))return null;if(i==="relation"&&this.overlay.contains(n)){let s=this.elementUnder(t.clientX,t.clientY);if(s!==null)return{role:"element",id:s}}return{role:i==="relation"?"relation":"element",id:o}}}return null}hidden(t){for(let n=t;n&&n!==this.picture;n=n.parentElement)if(n.getAttribute("opacity")==="0")return!0;return!1}elementUnder(t,n){for(let i of this.root.elementsFromPoint(t,n)){if(!this.picture.contains(i))continue;let o=i.closest('[data-role="element"], [data-role="lifeline"]'),s=o?.getAttribute("data-id");if(o&&s&&!this.hidden(o)&&!this.handlers.container(s))return s}return null}listen(){let t=this.frame;t.addEventListener("pointerdown",n=>this.down(n)),t.addEventListener("pointermove",n=>this.move(n)),t.addEventListener("pointerup",n=>this.up(n)),t.addEventListener("pointercancel",n=>this.up(n,!0)),t.addEventListener("pointerleave",n=>{this.press||this.handlers.hover(null,n)}),t.addEventListener("wheel",n=>this.wheel(n),{passive:!1}),t.addEventListener("dragstart",n=>n.preventDefault()),t.addEventListener("click",n=>{if(this.suppressClick){this.suppressClick=!1,n.preventDefault(),n.stopPropagation();return}let i=n.target.closest?.("[data-open]");if(i&&this.overlay.contains(i)){n.preventDefault(),n.stopPropagation(),this.handlers.open(i.getAttribute("data-open"));return}let o=n.composedPath().find(s=>s instanceof Element&&s.localName==="a");o&&!(n.ctrlKey||n.metaKey||n.shiftKey)&&n.preventDefault(),!(o&&(n.ctrlKey||n.metaKey||n.shiftKey))&&this.handlers.click(this.itemAt(n),n)},{capture:!0}),t.addEventListener("dblclick",n=>{if(n.target.closest?.("[data-open]"))return;let i=this.itemAt(n);i?.role==="element"&&(n.preventDefault(),this.handlers.open(i.id))})}down(t){if(!(t.button!==0&&t.button!==1)&&!t.target.closest?.("[data-open]")){if(this.suppressClick=!1,this.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY}),t.button===1&&t.preventDefault(),this.pointers.size===2){let[n,i]=[...this.pointers.values()];this.pinch={distance:Math.max(1,Math.hypot(n.x-i.x,n.y-i.y)),middle:this.local({clientX:(n.x+i.x)/2,clientY:(n.y+i.y)/2}),origin:this.viewer.viewport},this.press=null;for(let o of this.pointers.keys())this.frame.hasPointerCapture(o)||this.frame.setPointerCapture(o);this.frame.classList.add("pannable");return}this.press={id:t.pointerId,start:{x:t.clientX,y:t.clientY},origin:this.viewer.viewport,moved:!1}}}move(t){this.pointers.has(t.pointerId)&&this.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY});let n=this.pinch;if(n&&this.pointers.size>=2){let[o,s]=[...this.pointers.values()],r=this.local({clientX:(o.x+s.x)/2,clientY:(o.y+s.y)/2});this.viewer.viewport=n.origin,this.viewer.zoomBy(Math.hypot(o.x-s.x,o.y-s.y)/n.distance,n.middle),this.viewer.panBy(r.x-n.middle.x,r.y-n.middle.y),this.apply("direct"),this.handlers.moved();return}let i=this.press;if(i&&i.id===t.pointerId){let o=t.clientX-i.start.x,s=t.clientY-i.start.y;if(!i.moved&&Math.hypot(o,s)<Ao)return;i.moved||(i.moved=!0,this.frame.setPointerCapture(t.pointerId),this.frame.classList.add("panning"),this.handlers.hover(null,t)),this.viewer.viewport=i.origin,this.viewer.panBy(o,s),this.apply("direct"),this.handlers.moved();return}t.pointerType!=="touch"&&this.handlers.hover(this.itemAt(t),t)}up(t,n=!1){if(this.pointers.delete(t.pointerId),this.frame.hasPointerCapture(t.pointerId)&&this.frame.releasePointerCapture(t.pointerId),this.pinch){this.pointers.size<2&&(this.pinch=null,this.suppressClick=!0,this.frame.classList.toggle("pannable",this.viewer.pannable));return}let i=this.press;i&&i.id===t.pointerId&&(i.moved&&!n&&(this.suppressClick=!0),this.press=null,this.frame.classList.remove("panning"))}wheel(t){let n=t.deltaMode===1?Do:t.deltaMode===2?this.viewer.stage.height:1,i=t.deltaX*n,o=t.deltaY*n;if(t.ctrlKey||t.metaKey){t.preventDefault(),this.viewer.zoomBy(Math.exp(-o*Io),this.local(t)),this.apply("direct"),this.handlers.moved();return}t.shiftKey&&i===0&&(i=o,o=0),this.viewer.canPan(-i,-o)&&(t.preventDefault(),this.viewer.panBy(-i,-o),this.apply("direct"),this.handlers.moved())}destroy(){this.observer?.disconnect()}};var Bo=`
6
7
  :host { display: block; color-scheme: light dark; font: 14px/1.4 system-ui, sans-serif;
7
8
  --meltemi-motion-fast: 120ms; --meltemi-motion: 160ms; --meltemi-motion-slow: 220ms;
8
9
  --meltemi-ease: cubic-bezier(0.2, 0.7, 0.3, 1); --meltemi-ease-in: cubic-bezier(0.4, 0, 1, 1);
@@ -145,5 +146,5 @@ details ul { margin: 2px 0 6px; padding-left: 1.2em; }
145
146
  @media (hover: none), (pointer: coarse) {
146
147
  .details li button, .details .action, .details button.close, .trail li button { min-height: 44px; }
147
148
  }
148
- `;function Vr(e){if(e.length===0)return;let t=e.join(`
149
- `),n=0;for(let o=0;o<t.length;o++)n=n*31+t.charCodeAt(o)|0;let i=`meltemi-${(n>>>0).toString(36)}`;document.head.querySelector(`style[data-meltemi-fonts="${i}"]`)||document.head.append(h("style",{"data-meltemi-fonts":i},t))}function Ur(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}function uo(e){return Kn(e.closest("[lang]")?.getAttribute("lang"))}var co=(e,t)=>e===t||e!==null&&t!==null&&e.role===t.role&&e.id===t.id,Hr=400,Jr=300;function po(e,t,n={}){let i=n.locale??uo(e),o=re(i),l=n.reducedMotion??Ur(),r=new wt(t,{...n,locale:i,reducedMotion:l}),d=n.interactive!==!1;Vr(t.fontFaces);let c=e.shadowRoot??e.attachShadow({mode:"open"});c.replaceChildren();let f=t.kind==="story",p=new vt,m=new xt(o.details,()=>Ye(!0)),b=new bt(o.trail.label),S=h("div",{class:"sr","aria-live":"polite",role:"status"}),x=h("span",{class:"sr",id:"hint"},o.player.hint),$=null,k=new Lt(c,d,{hover:(s,u)=>ho(s,u),click:s=>go(s),open:s=>{Xe(s)},moved:()=>{p.hide(),ie()},resized:s=>{Se.dataset.details=s.width<720||s.height<280?"below":"side"},container:s=>t.details[r.view]?.elements[s]?.kind==="group"});k.frame.style.setProperty("--meltemi-accent",t.accent),d&&(k.frame.setAttribute("aria-describedby","hint"),k.body.append(m.element));let N=h("button",{type:"button",class:"play"}),L=h("button",{type:"button","aria-label":o.controls.previous,title:o.controls.previousTitle},Y(H.previous)),D=h("button",{type:"button","aria-label":o.controls.next,title:o.controls.nextTitle},Y(H.next)),I=h("input",{type:"range",min:"0",step:"100","aria-label":o.controls.progress});I.style.accentColor=t.accent;let O=h("span",{class:"time","aria-hidden":"true"}),V=h("select",{"aria-label":o.controls.scene}),ae=h("button",{type:"button","aria-label":o.controls.staticView,title:o.controls.staticTitle},Y(H.static)),_=h("span",{class:"playback"},N,...f?[L,D]:[],I,O,...f?[V]:[],ae),E=h("button",{type:"button","aria-label":o.controls.zoomOut,title:o.controls.zoomOutTitle},Y(H.zoomOut)),ee=h("button",{type:"button",class:"level",title:o.controls.actualSizeTitle}),J=h("button",{type:"button","aria-label":o.controls.zoomIn,title:o.controls.zoomInTitle},Y(H.zoomIn)),Je=h("button",{type:"button","aria-label":o.controls.fit,title:o.controls.fitTitle},Y(H.fit)),It=h("div",{class:"zoom",role:"group","aria-label":o.controls.zoomGroup},E,ee,J,Je),xe=h("div",{class:"controls",role:"group","aria-label":o.controls.group},_,...d?[It]:[]);n.controls===!1&&(xe.hidden=!0);for(let[s,u]of r.scenes.entries())V.append(h("option",{value:String(s)},`${s+1}. ${u.title??u.id}`));let be=h("details",{class:"summary"},h("summary",{},o.story.summary)),we=h("div"),Dt=h("ul",{class:"elements","aria-label":o.details.elements});be.append(we),d&&be.append(Dt);let Se=h("figure",{class:"player","aria-label":f?o.player.story(t.title??t.id):o.player.diagram(t.title??t.id)});Se.append(...d?[b.element]:[],k.body,xe,S,...d?[x,p.element]:[],...n.summary===!1?[]:[be]),c.append(h("style",{},lo),Se);let $e=s=>r.drill?.extra[s]??t.views[s],Pt=s=>{let u=$e(s)?.scene;return u?{width:u.width,height:u.height}:{width:1,height:1}},mo=f?Object.values(t.views).reduce((s,u)=>({width:Math.max(s.width,u.scene.width),height:Math.max(s.height,u.scene.height)}),{width:1,height:1}):null,Ne=s=>t.kind==="story"||s===t.key?t.title??t.names[s]?.title??t.id:r.titleOf(s),j=(s,u)=>t.names[s]?.labels[u]??u,Ee=s=>t.details[s],Bt=(s,u)=>t.kind==="effects"&&!r.canOpen(u)?n.targets?.(s,u)??null:null,Ot=(s,u)=>{let v=r.canOpen(u);return v?r.titleOf(v.view):Bt(s,u)?.label??null},We=(s,u)=>{let v=Ee(s)?.relations[u]?.label;if(v)return v;let y=$e(s)?.ends[u];return y?o.player.relation(j(s,y[0]),j(s,y[1])):u},bn=(s,u)=>u.role==="element"?j(s,u.id):We(s,u.id),fo=(s,u)=>{let v=Ee(s);if(!v)return null;if(u.role==="element"){let w=v.elements[u.id];if(!w)return null;let P=[w.type,w.technology,w.external&&!w.type?o.details.external:null].filter(z=>!!z).join(" \xB7 ");return{title:j(s,u.id),meta:P||null,ends:null,text:w.description,note:null,url:w.url}}let y=v.relations[u.id];if(!y)return null;let R=$e(s)?.ends[u.id],B=R?o.player.relation(j(s,R[0]),j(s,R[1])):null;return{title:We(s,u.id),meta:[y.technology,y.async?o.details.async:null].filter(Boolean).join(" \xB7 ")||null,ends:y.label?B:null,text:y.description,note:y.assumption?o.details.assumed(y.assumption):null,url:null}},Ge=0,wn=0,Sn=(s,u)=>{let v=fo(r.view,s);if(!v||r.drill)return;let y=s.role==="element"?k.picture.querySelector(`[data-id=${cn(s.id)}][data-role="element"]`):null;p.show(v,y?.getBoundingClientRect()??null,u)},me=()=>{clearTimeout(Ge),p.visible&&(wn=performance.now()+Jr),p.hide()},ho=(s,u)=>{if(co(s,$))return;if($=s,clearTimeout(Ge),Qe(),!s||u.pointerType==="touch"){me();return}let v={x:u.clientX,y:u.clientY};p.visible||performance.now()<wn?Sn(s,v):Ge=window.setTimeout(()=>Sn(s,v),Hr)},$n=(s,u)=>{let v=Ee(s),y=$e(s)?.ends??{};if(!v)return null;let R={...u,view:s},B=(n.sections?.(R)??[]).map(F=>({heading:F.heading,items:F.items.map(q=>({label:q.label,href:q.href}))}));if(u.role==="element"){let F=v.elements[u.id];if(!F)return null;let q=[];F.technology&&q.push({term:o.details.technology,value:F.technology}),F.url&&q.push({term:o.details.link,value:F.url,href:F.url,linkText:F.url});let Me=[],tt=[];for(let[On,[Kt,zt]]of Object.entries(y)){let Cn=v.relations[On],it=[Cn?.label,Cn?.technology].filter(Boolean).join(" \xB7 "),Nn=()=>fe({role:"relation",id:On});Kt===u.id&&Me.push({label:it?`${j(s,zt)} \xB7 ${it}`:j(s,zt),action:Nn}),zt===u.id&&tt.push({label:it?`${j(s,Kt)} \xB7 ${it}`:j(s,Kt),action:Nn})}let Pn=r.canOpen(u.id),bo=Bt(s,u.id),Bn=Pn?r.titleOf(Pn.view):bo?.label??null,wo=[F.type,F.external&&!F.type?o.details.external:null].filter(Boolean).join(" \xB7 "),nt=[];return Me.length>0&&nt.push({heading:o.details.outgoing,items:Me}),tt.length>0&&nt.push({heading:o.details.incoming,items:tt}),Me.length===0&&tt.length===0&&nt.push({heading:o.details.relations,items:[],empty:o.details.noRelations}),{name:o.details.region(j(s,u.id)),title:j(s,u.id),type:wo||null,facts:q,description:F.description,open:Bn===null?null:{label:o.details.open(Bn),title:o.details.openTitle,run:()=>Xe(u.id)},sections:[...nt,...B]}}let w=v.relations[u.id];if(!w)return null;let P=y[u.id],z=[];w.technology&&z.push({term:o.details.technology,value:w.technology}),w.assumption&&z.push({term:o.details.assumption,value:w.assumption});let le=[w.sources.length>0&&t.details[s]?.c4?`${o.details.standsFor(w.sources.length)}${w.derived?` \xB7 ${o.details.lifted}`:""}`:null,w.async?o.details.async:null].filter(Boolean).join(" \xB7 "),Ke=F=>({label:j(s,F),action:()=>fe({role:"element",id:F})});return{name:o.details.region(We(s,u.id)),title:We(s,u.id),type:le||null,facts:z,description:w.description,open:null,sections:[...P?[{heading:o.details.from,items:[Ke(P[0])]},{heading:o.details.to,items:[Ke(P[1])]}]:[],...B]}},Fe=(s,u)=>e.dispatchEvent(new CustomEvent(s,{detail:u,bubbles:!0,composed:!0})),Ye=s=>{m.hide(),s&&k.frame.focus({preventScroll:!0})},Te=(s,u,v=!1)=>{if(!d||!r.select(s))return!1;Qe();let y=r.view;if(s===null)return m.hide(),Re(o.player.cleared),Fe("meltemi-select",null),!0;if(u){let R=$n(y,s);R&&m.show(R,`${y}|${s.role}|${s.id}`),v&&m.focus()}else if(m.open){let R=$n(y,s);R&&m.show(R,`${y}|${s.role}|${s.id}`)}return Re(o.player.selected(bn(y,s))),Fe("meltemi-select",{view:y,role:s.role,id:s.id}),!0},fe=(s,u=!1)=>Te(s,!0,u),go=s=>{if(me(),!(r.drill||C)){if(s===null){r.selection&&Te(null,!1);return}fe(s)}},Qe=()=>{if(!d)return;let s=r.view,u=new Map;if(!r.drill&&t.kind==="effects")for(let v of Object.keys(Ee(s)?.elements??{})){let y=Ot(s,v);y!==null&&u.set(v,`${o.details.open(y)} (${o.details.openTitle})`)}k.render({scene:r.drill?null:$e(s)?.scene??null,hover:$,selection:r.selection,focus:r.focused,badges:u})},En="",yo=()=>{let s=r.view;if(s===En||r.drill)return;if(En=s,d){let y=[...(n.trail??[]).map(w=>({title:w.title,go:()=>w.go()})),...r.trail.map((w,P)=>({title:Ne(w.view),go:()=>{Ze()&&(r.up(P),K())}}))],R=y[y.length-1];b.show(y,Ne(s),R?{up:o.trail.up(R.title),upTitle:o.trail.upTitle(R.title)}:null);let B=Object.keys(Ee(s)?.elements??{}).map(w=>{let P=Ot(s,w),z=P?`${j(s,w)}, ${o.details.opens(P)}`:j(s,w),le=h("button",{type:"button"},z);return le.addEventListener("click",()=>fe({role:"element",id:w})),h("li",{},le)});Dt.replaceChildren(...B),Dt.hidden=B.length===0}if(t.kind==="story"){if(we.childElementCount===0){let y=h("ol");for(let R of Fi(t,i))y.append(h("li",{},R.heading,h("ul",{},...R.items.map(B=>h("li",{},B)))));we.replaceChildren(y)}}else{let y=Ki(t,i,s);we.replaceChildren(h("ul",{},...(y.length>0?y:[o.effects.none]).map(R=>h("li",{},R))))}let u=!f&&(t.views[s]?.plan.effects.length??0)>0;_.hidden=!f&&!u,xe.hidden=n.controls===!1||!d&&_.hidden;let v=r.duration===null;I.hidden=v,O.hidden=v,k.frame.dataset.view=s},ie=()=>{if(!d)return;let s=k.viewer,u=_t(i,s.zoom);ee.textContent=u,ee.setAttribute("aria-label",o.controls.zoomLevel(u)),E.disabled=s.atMin,J.disabled=s.atMax},oe=(s,u=!0)=>{me();let v=r.focused,y=v&&s.startsWith("zoom")&&s!=="zoomFit"?ko(v):void 0;if(k.viewer.run(s,y),k.apply(s==="zoomFit"||s==="zoomActual"?"slow":"animate"),ie(),u&&s.startsWith("zoom")){let R=_t(i,k.viewer.zoom);Re(k.viewer.atFit?o.player.fitted(R):o.player.zoom(R))}},ko=s=>{let u=Ct(s);if(!u)return;let v=k.toContent(u);return k.viewer.toScreen({x:v.x+v.width/2,y:v.y+v.height/2})},Ct=s=>{let u=$e(r.view)?.scene;if(!u)return null;let v=[...u.items];for(;v.length>0;){let y=v.shift();if(y.kind==="group"){if(y.id===s.id&&y.role===s.role){if(y.bounds)return y.bounds;if(y.track&&y.track.length>0){let R=y.track.map(z=>z.x),B=y.track.map(z=>z.y),w=Math.min(...R),P=Math.min(...B);return{x:w,y:P,width:Math.max(...R)-w,height:Math.max(...B)-P}}}v.push(...y.items)}}return null},C=null,Ze=()=>r.drill||C?!1:(me(),m.hide(),k.viewer.fit(),k.apply("animate"),ie(),!0),Xe=s=>{if(!d||r.drill||C||t.kind!=="effects")return!1;if(r.canOpen(s))return Ze(),r.open(s),K(),!0;let u=Bt(r.view,s);if(!u)return Te({role:"element",id:s},!1),!1;Ze();let v=r.view,y=l||u.transition==="none"?0:He.cameraMs;return C={spec:{from:v,to:v,element:s,transition:"fade",direction:"down",cameraMs:y,transitionMs:0},time:0,target:u,id:s,done:!1},K(),!0},Tn=()=>{let s=C;if(!s||s.done)return;s.done=!0;let u={view:r.view,id:s.id};n.onNavigate?.(s.target,u),Fe("meltemi-navigate",{target:s.target,origin:u}),window.setTimeout(()=>{C===s&&(C=null,Ft())},1e3)},Rn=()=>!d||r.drill||C?!1:r.trail.length>0?(Ze(),r.up(),K(),!0):b.goUp(),Mn="",An=-1,et=0,Nt=0,Re=s=>{s&&(S.textContent=s)},vo=(s,u)=>{let v=s.direction==="down",y=Pt(v?s.from:s.to),R=Pt(v?s.to:s.from),B=s.cameraMs+s.transitionMs,w=v?u:B-u;if(w<=s.cameraMs||s.transitionMs<=0)return y;let P=Math.min(1,(w-s.cameraMs)/s.transitionMs);return{width:y.width+(R.width-y.width)*P,height:y.height+(R.height-y.height)*P}},Ft=()=>{let s=r.drill,u;if(s){let q=pn(s.spec,s.time);u=hn(t,s.spec,q,s.extra),k.setSize(vo(s.spec,q))}else if(C){let q=C.spec.cameraMs,Me=q<=0?0:Math.min(q-.01,pn(C.spec,C.time));u=hn(t,C.spec,Math.max(0,Me))}else u=Rt(t,r.frameTime,{static:r.staticView,view:r.view}),Mn=u,k.setSize(mo??Pt(r.view));let v=r.takeSettled();if(yo(),(k.draw(u)||v)&&Qe(),v){Re(v),k.viewer.fit(),k.apply("direct"),ie(),Fe("meltemi-view",{view:r.view,title:Ne(r.view)});let q=r.selection;q&&Fe("meltemi-select",{view:r.view,...q})}let y=r.playing;N.replaceChildren(Y(y?H.pause:H.play));let R=y?o.controls.pause:o.controls.play;N.setAttribute("aria-label",R),N.title=o.controls.playTitle(R),N.disabled=!r.canPlay;let B=r.duration??0;I.max=String(B),I.value=String(Math.round(r.time));let w=se(r.time,i),P=se(B,i);I.setAttribute("aria-valuetext",o.controls.position(w,P)),O.textContent=`${w} / ${P}`;let z=r.sceneIndex;V.value=String(z),L.disabled=z===0&&(r.staticView||r.time===0),D.disabled=z>=r.scenes.length-1,ae.setAttribute("aria-pressed",String(r.staticView));let le=r.announcement(),Ke=Ne(r.view),F=le?`${Ke}. ${le}`:Ke;k.frame.setAttribute("aria-label",d?o.player.interactive(F):F),f&&z!==An&&(An=z,Re(le))},Ln=()=>r.playing||r.drill!==null||C!==null&&!C.done,In=s=>{let u=s-Nt;Nt=s,C&&!C.done?(C.time+=u,C.time>=C.spec.cameraMs&&Tn()):r.tick(u),Ft(),Ln()&&(et=requestAnimationFrame(In))},K=()=>{cancelAnimationFrame(et),C&&!C.done&&C.spec.cameraMs<=0&&Tn(),Ln()&&(Nt=performance.now(),et=requestAnimationFrame(In)),Ft()};N.addEventListener("click",()=>{r.toggle(),K()}),L.addEventListener("click",()=>{r.run("previousScene"),K()}),D.addEventListener("click",()=>{r.run("nextScene"),K()}),ae.addEventListener("click",()=>{r.setStatic(!r.staticView),K()}),I.addEventListener("input",()=>{r.pause(),r.seek(Number(I.value)),K()}),V.addEventListener("change",()=>{r.pause(),r.goToScene(Number(V.value)),K()}),J.addEventListener("click",()=>oe("zoomIn")),E.addEventListener("click",()=>oe("zoomOut")),ee.addEventListener("click",()=>oe("zoomActual")),Je.addEventListener("click",()=>oe("zoomFit"));let xo=s=>{let u=r.moveFocus(s,B=>{let w=k.picture.querySelector(`[data-id=${cn(B.id)}][data-role="${B.role}"]`);if(!w)return!1;for(let P=w;P&&P!==k.picture;P=P.parentElement)if(P.getAttribute("opacity")==="0")return!1;return!0});if(Qe(),!u)return;let v=Ct(u);v&&(k.viewer.reveal(k.toContent(v)),k.apply("animate"),ie());let y=r.view,R=u.role==="element"?Ee(y)?.elements[u.id]?.type??null:null;Re(o.player.focused(bn(y,u),R))};if(Se.addEventListener("pointerdown",()=>me(),{capture:!0}),Se.addEventListener("wheel",()=>me(),{capture:!0,passive:!0}),Se.addEventListener("keydown",s=>{me();let u=s.target;if(u instanceof HTMLSelectElement||u instanceof HTMLInputElement&&/^(Arrow|Home|End)/.test(s.key)||u instanceof HTMLButtonElement&&(s.key===" "||s.key==="Enter")||s.ctrlKey||s.metaKey||s.altKey)return;if(d&&m.element.contains(u)){s.key==="Escape"&&(s.preventDefault(),Ye(!0));return}if(d){let y=u===k.frame,R=so(s.key,s.shiftKey);if(R){s.preventDefault(),oe(R);return}if(y&&(s.key==="ArrowUp"||s.key==="ArrowDown")){s.preventDefault(),xo(s.key==="ArrowDown"?1:-1);return}if(y&&s.key==="Enter"){s.preventDefault();let B=r.focused,w=r.selection;B&&!co(B,w)?fe(B,!0):w?.role==="element"&&Ot(r.view,w.id)!==null?Xe(w.id):w&&fe(w,!0);return}if(y&&s.key==="Backspace"){Rn()&&s.preventDefault();return}if(s.key==="Escape"){m.open?(s.preventDefault(),Ye(!0)):(r.selection||r.focused)&&(s.preventDefault(),r.focused=null,Te(null,!1));return}}let v=Ci(s.key);v&&(s.preventDefault(),r.run(v),K())}),n.enter&&t.kind==="effects"&&d){let s=n.enter;r.enter({key:s.fromKey,view:s.from},s.element,s.direction,s.transition,s.select??null)}if(K(),ie(),n.select&&!r.drill&&Te({role:"element",id:n.select},!1)){let s=Ct({role:"element",id:n.select});s&&(k.viewer.reveal(k.toContent(s)),k.apply("direct"))}let Dn=s=>typeof s=="string"?{role:"element",id:s}:s;return{controller:r,get svg(){let s=r.drill;return s?Rt(t,0,{static:r.staticView,view:s.spec.to}):Mn},get viewport(){return k.viewer.viewport},get zoom(){return k.viewer.zoom},get view(){return r.view},get trail(){return[...(n.trail??[]).map(s=>s.title),...r.trail.map(s=>Ne(s.view))]},get selection(){let s=r.selection;return s?{...s,view:r.view}:null},play:()=>{r.play(),K()},pause:()=>{r.pause(),K()},seek:s=>{r.seek(s),K()},goToScene:s=>{r.goToScene(s),K()},setStatic:s=>{r.setStatic(s),K()},zoomIn:()=>oe("zoomIn",!1),zoomOut:()=>oe("zoomOut",!1),fit:()=>oe("zoomFit",!1),actualSize:()=>oe("zoomActual",!1),setZoom:(s,u)=>{k.viewer.setZoom(s,u),k.apply("animate"),ie()},zoomTo:(s,u)=>{k.viewer.setZoom(s,u),k.apply("animate"),ie()},panBy:(s,u)=>{k.viewer.panBy(s,u),k.apply("direct"),ie()},project:s=>{let u=k.toContent({...s,width:0,height:0});return k.viewer.toScreen(u)},select:s=>Te(s===null?null:Dn(s),m.open),showDetails:s=>fe(Dn(s)),closeDetails:()=>Ye(!1),open:s=>Xe(s),up:()=>Rn(),destroy:()=>{cancelAnimationFrame(et),clearTimeout(Ge),k.destroy(),c.replaceChildren()}}}var xn=class extends HTMLElement{player;connectedCallback(){if(this.player)return;if(document.readyState==="loading"&&!this.querySelector("script")){document.addEventListener("DOMContentLoaded",()=>this.connectedCallback(),{once:!0});return}let t=uo(this),n;try{n=JSON.parse(this.querySelector('script[type="application/json"]')?.textContent??"")}catch{n=void 0}if(!_i(n)){let i=this.shadowRoot??this.attachShadow({mode:"open"});i.textContent=re(t).player.unreadable;return}this.player=po(this,n,{autoplay:this.hasAttribute("autoplay"),loop:this.hasAttribute("loop"),static:this.hasAttribute("static"),controls:this.getAttribute("controls")!=="false",interactive:this.getAttribute("interactive")!=="false",locale:t})}disconnectedCallback(){this.player?.pause()}};customElements.get("meltemi-player")||customElements.define("meltemi-player",xn);globalThis.MeltemiPlayer={mountPlayer:po,frameSvg:Rt,version:2};})();
149
+ `;function Ys(e){if(e.length===0)return;let t=e.join(`
150
+ `),n=0;for(let o=0;o<t.length;o++)n=n*31+t.charCodeAt(o)|0;let i=`meltemi-${(n>>>0).toString(36)}`;document.head.querySelector(`style[data-meltemi-fonts="${i}"]`)||document.head.append(b("style",{"data-meltemi-fonts":i},t))}function Qs(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}function Ko(e){return Zn(e.closest("[lang]")?.getAttribute("lang"))}var No=(e,t)=>e===t||e!==null&&t!==null&&e.role===t.role&&e.id===t.id,Zs=400,Xs=300;function Fo(e,t,n={}){let i=n.locale??Ko(e),o=pe(i),s=n.reducedMotion??Qs(),r=new Lt(t,{...n,locale:i,reducedMotion:s}),l=n.interactive!==!1;Ys(t.fontFaces);let p=e.shadowRoot??e.attachShadow({mode:"open"});p.replaceChildren();let c=t.kind==="story",u=new Rt,m=new Mt(o.details,()=>ot(!0)),h=new Pt(o.trail.label),v=b("div",{class:"sr","aria-live":"polite",role:"status"}),x=b("span",{class:"sr",id:"hint"},o.player.hint),g=null,y=new Kt(p,l,{hover:(d,f)=>jo(d,f),click:d=>qo(d),open:d=>{at(d)},moved:()=>{u.hide(),de()},resized:d=>{Le.dataset.details=d.width<720||d.height<280?"below":"side"},container:d=>t.details[r.view]?.elements[d]?.kind==="group"});y.frame.style.setProperty("--meltemi-accent",t.accent),l&&(y.frame.setAttribute("aria-describedby","hint"),y.body.append(m.element));let T=b("button",{type:"button",class:"play"}),A=b("button",{type:"button","aria-label":o.controls.previous,title:o.controls.previousTitle},ie(Q.previous)),$=b("button",{type:"button","aria-label":o.controls.next,title:o.controls.nextTitle},ie(Q.next)),E=b("input",{type:"range",min:"0",step:"100","aria-label":o.controls.progress});E.style.accentColor=t.accent;let D=b("span",{class:"time","aria-hidden":"true"}),K=b("select",{"aria-label":o.controls.scene}),Z=b("button",{type:"button","aria-label":o.controls.staticView,title:o.controls.staticTitle},ie(Q.static)),j=b("span",{class:"playback"},T,...c?[A,$]:[],E,D,...c?[K]:[],Z),P=b("button",{type:"button","aria-label":o.controls.zoomOut,title:o.controls.zoomOutTitle},ie(Q.zoomOut)),U=b("button",{type:"button",class:"level",title:o.controls.actualSizeTitle}),W=b("button",{type:"button","aria-label":o.controls.zoomIn,title:o.controls.zoomInTitle},ie(Q.zoomIn)),be=b("button",{type:"button","aria-label":o.controls.fit,title:o.controls.fitTitle},ie(Q.fit)),oe=b("div",{class:"zoom",role:"group","aria-label":o.controls.zoomGroup},P,U,W,be),X=b("div",{class:"controls",role:"group","aria-label":o.controls.group},j,...l?[oe]:[]);n.controls===!1&&(X.hidden=!0);for(let[d,f]of r.scenes.entries())K.append(b("option",{value:String(d)},`${d+1}. ${f.title??f.id}`));let ee=b("details",{class:"summary"},b("summary",{},o.story.summary)),te=b("div"),tt=b("ul",{class:"elements","aria-label":o.details.elements});ee.append(te),l&&ee.append(tt);let Le=b("figure",{class:"player","aria-label":c?o.player.story(t.title??t.id):o.player.diagram(t.title??t.id)});Le.append(...l?[h.element]:[],y.body,X,v,...l?[x,u.element]:[],...n.summary===!1?[]:[ee]),p.append(b("style",{},Bo),Le);let Ie=d=>r.drill?.extra[d]??t.views[d],Ft=d=>{let f=Ie(d)?.scene;return f?{width:f.width,height:f.height}:{width:1,height:1}},_o=c?Object.values(t.views).reduce((d,f)=>({width:Math.max(d.width,f.scene.width),height:Math.max(d.height,f.scene.height)}),{width:1,height:1}):null,qe=d=>t.kind==="story"||d===t.key?t.title??t.names[d]?.title??t.id:r.titleOf(d),J=(d,f)=>t.names[d]?.labels[f]??f,Ae=d=>t.details[d],_t=(d,f)=>t.kind==="effects"&&!r.canOpen(f)?n.targets?.(d,f)??null:null,zt=(d,f)=>{let S=r.canOpen(f);return S?r.titleOf(S.view):_t(d,f)?.label??null},nt=(d,f)=>{let S=Ae(d)?.relations[f]?.label;if(S)return S;let w=Ie(d)?.ends[f];return w?o.player.relation(J(d,w[0]),J(d,w[1])):f},On=(d,f)=>f.role==="element"?J(d,f.id):nt(d,f.id),zo=(d,f)=>{let S=Ae(d);if(!S)return null;if(f.role==="element"){let R=S.elements[f.id];if(!R)return null;let C=[R.type,R.technology,R.external&&!R.type?o.details.external:null].filter(H=>!!H).join(" \xB7 ");return{title:J(d,f.id),meta:C||null,ends:null,text:R.description,note:null,url:R.url}}let w=S.relations[f.id];if(!w)return null;let L=Ie(d)?.ends[f.id],B=L?o.player.relation(J(d,L[0]),J(d,L[1])):null;return{title:nt(d,f.id),meta:[w.technology,w.async?o.details.async:null].filter(Boolean).join(" \xB7 ")||null,ends:w.label?B:null,text:w.description,note:w.assumption?o.details.assumed(w.assumption):null,url:null}},it=0,Cn=0,Bn=(d,f)=>{let S=zo(r.view,d);if(!S||r.drill)return;let w=d.role==="element"?y.picture.querySelector(`[data-id=${xn(d.id)}][data-role="element"]`):null;u.show(S,w?.getBoundingClientRect()??null,f)},ve=()=>{clearTimeout(it),u.visible&&(Cn=performance.now()+Xs),u.hide()},jo=(d,f)=>{if(No(d,g))return;if(g=d,clearTimeout(it),rt(),!d||f.pointerType==="touch"){ve();return}let S={x:f.clientX,y:f.clientY};u.visible||performance.now()<Cn?Bn(d,S):it=window.setTimeout(()=>Bn(d,S),Zs)},Nn=(d,f)=>{let S=Ae(d),w=Ie(d)?.ends??{};if(!S)return null;let L={...f,view:d},B=(n.sections?.(L)??[]).map(F=>({heading:F.heading,items:F.items.map(G=>({label:G.label,href:G.href}))}));if(f.role==="element"){let F=S.elements[f.id];if(!F)return null;let G=[];F.technology&&G.push({term:o.details.technology,value:F.technology}),F.url&&G.push({term:o.details.link,value:F.url,href:F.url,linkText:F.url});let Ce=[],dt=[];for(let[Jn,[Vt,Ht]]of Object.entries(w)){let Gn=S.relations[Jn],ut=[Gn?.label,Gn?.technology].filter(Boolean).join(" \xB7 "),Yn=()=>we({role:"relation",id:Jn});Vt===f.id&&Ce.push({label:ut?`${J(d,Ht)} \xB7 ${ut}`:J(d,Ht),action:Yn}),Ht===f.id&&dt.push({label:ut?`${J(d,Vt)} \xB7 ${ut}`:J(d,Vt),action:Yn})}let Hn=r.canOpen(f.id),Jo=_t(d,f.id),Wn=Hn?r.titleOf(Hn.view):Jo?.label??null,Go=[F.type,F.external&&!F.type?o.details.external:null].filter(Boolean).join(" \xB7 "),ct=[];return Ce.length>0&&ct.push({heading:o.details.outgoing,items:Ce}),dt.length>0&&ct.push({heading:o.details.incoming,items:dt}),Ce.length===0&&dt.length===0&&ct.push({heading:o.details.relations,items:[],empty:o.details.noRelations}),{name:o.details.region(J(d,f.id)),title:J(d,f.id),type:Go||null,facts:G,description:F.description,open:Wn===null?null:{label:o.details.open(Wn),title:o.details.openTitle,run:()=>at(f.id)},sections:[...ct,...B]}}let R=S.relations[f.id];if(!R)return null;let C=w[f.id],H=[];R.technology&&H.push({term:o.details.technology,value:R.technology}),R.assumption&&H.push({term:o.details.assumption,value:R.assumption});let fe=[R.sources.length>0&&t.details[d]?.c4?`${o.details.standsFor(R.sources.length)}${R.derived?` \xB7 ${o.details.lifted}`:""}`:null,R.async?o.details.async:null].filter(Boolean).join(" \xB7 "),Ve=F=>({label:J(d,F),action:()=>we({role:"element",id:F})});return{name:o.details.region(nt(d,f.id)),title:nt(d,f.id),type:fe||null,facts:H,description:R.description,open:null,sections:[...C?[{heading:o.details.from,items:[Ve(C[0])]},{heading:o.details.to,items:[Ve(C[1])]}]:[],...B]}},Ue=(d,f)=>e.dispatchEvent(new CustomEvent(d,{detail:f,bubbles:!0,composed:!0})),ot=d=>{m.hide(),d&&y.frame.focus({preventScroll:!0})},De=(d,f,S=!1)=>{if(!l||!r.select(d))return!1;rt();let w=r.view;if(d===null)return m.hide(),Oe(o.player.cleared),Ue("meltemi-select",null),!0;if(f){let L=Nn(w,d);L&&m.show(L,`${w}|${d.role}|${d.id}`),S&&m.focus()}else if(m.open){let L=Nn(w,d);L&&m.show(L,`${w}|${d.role}|${d.id}`)}return Oe(o.player.selected(On(w,d))),Ue("meltemi-select",{view:w,role:d.role,id:d.id}),!0},we=(d,f=!1)=>De(d,!0,f),qo=d=>{if(ve(),!(r.drill||N)){if(d===null){r.selection&&De(null,!1);return}we(d)}},rt=()=>{if(!l)return;let d=r.view,f=new Map;if(!r.drill&&t.kind==="effects")for(let S of Object.keys(Ae(d)?.elements??{})){let w=zt(d,S);w!==null&&f.set(S,`${o.details.open(w)} (${o.details.openTitle})`)}y.render({scene:r.drill?null:Ie(d)?.scene??null,hover:g,selection:r.selection,focus:r.focused,badges:f})},Kn="",Uo=()=>{let d=r.view;if(d===Kn||r.drill)return;if(Kn=d,l){let w=[...(n.trail??[]).map(R=>({title:R.title,go:()=>R.go()})),...r.trail.map((R,C)=>({title:qe(R.view),go:()=>{st()&&(r.up(C),V())}}))],L=w[w.length-1];h.show(w,qe(d),L?{up:o.trail.up(L.title),upTitle:o.trail.upTitle(L.title)}:null);let B=Object.keys(Ae(d)?.elements??{}).map(R=>{let C=zt(d,R),H=C?`${J(d,R)}, ${o.details.opens(C)}`:J(d,R),fe=b("button",{type:"button"},H);return fe.addEventListener("click",()=>we({role:"element",id:R})),b("li",{},fe)});tt.replaceChildren(...B),tt.hidden=B.length===0}if(t.kind==="story"){if(te.childElementCount===0){let w=b("ol");for(let L of oo(t,i))w.append(b("li",{},L.heading,b("ul",{},...L.items.map(B=>b("li",{},B)))));te.replaceChildren(w)}}else{let w=ro(t,i,d);te.replaceChildren(b("ul",{},...(w.length>0?w:[o.effects.none]).map(L=>b("li",{},L))))}let f=!c&&(t.views[d]?.plan.effects.length??0)>0;j.hidden=!c&&!f,X.hidden=n.controls===!1||!l&&j.hidden;let S=r.duration===null;E.hidden=S,D.hidden=S,y.frame.dataset.view=d},de=()=>{if(!l)return;let d=y.viewer,f=Wt(i,d.zoom);U.textContent=f,U.setAttribute("aria-label",o.controls.zoomLevel(f)),P.disabled=d.atMin,W.disabled=d.atMax},ce=(d,f=!0)=>{ve();let S=r.focused,w=S&&d.startsWith("zoom")&&d!=="zoomFit"?Vo(S):void 0;if(y.viewer.run(d,w),y.apply(d==="zoomFit"||d==="zoomActual"?"slow":"animate"),de(),f&&d.startsWith("zoom")){let L=Wt(i,y.viewer.zoom);Oe(y.viewer.atFit?o.player.fitted(L):o.player.zoom(L))}},Vo=d=>{let f=jt(d);if(!f)return;let S=y.toContent(f);return y.viewer.toScreen({x:S.x+S.width/2,y:S.y+S.height/2})},jt=d=>{let f=Ie(r.view)?.scene;if(!f)return null;let S=[...f.items];for(;S.length>0;){let w=S.shift();if(w.kind==="group"){if(w.id===d.id&&w.role===d.role){if(w.bounds)return w.bounds;if(w.track&&w.track.length>0){let L=w.track.map(H=>H.x),B=w.track.map(H=>H.y),R=Math.min(...L),C=Math.min(...B);return{x:R,y:C,width:Math.max(...L)-R,height:Math.max(...B)-C}}}S.push(...w.items)}}return null},N=null,st=()=>r.drill||N?!1:(ve(),m.hide(),y.viewer.fit(),y.apply("animate"),de(),!0),at=d=>{if(!l||r.drill||N||t.kind!=="effects")return!1;if(r.canOpen(d))return st(),r.open(d),V(),!0;let f=_t(r.view,d);if(!f)return De({role:"element",id:d},!1),!1;st();let S=r.view,w=s||f.transition==="none"?0:et.cameraMs;return N={spec:{from:S,to:S,element:d,transition:"fade",direction:"down",cameraMs:w,transitionMs:0},time:0,target:f,id:d,done:!1},V(),!0},Fn=()=>{let d=N;if(!d||d.done)return;d.done=!0;let f={view:r.view,id:d.id};n.onNavigate?.(d.target,f),Ue("meltemi-navigate",{target:d.target,origin:f}),window.setTimeout(()=>{N===d&&(N=null,Ut())},1e3)},_n=()=>!l||r.drill||N?!1:r.trail.length>0?(st(),r.up(),V(),!0):h.goUp(),zn="",jn=-1,lt=0,qt=0,Oe=d=>{d&&(v.textContent=d)},Ho=(d,f)=>{let S=d.direction==="down",w=Ft(S?d.from:d.to),L=Ft(S?d.to:d.from),B=d.cameraMs+d.transitionMs,R=S?f:B-f;if(R<=d.cameraMs||d.transitionMs<=0)return w;let C=Math.min(1,(R-d.cameraMs)/d.transitionMs);return{width:w.width+(L.width-w.width)*C,height:w.height+(L.height-w.height)*C}},Ut=()=>{let d=r.drill,f;if(d){let G=vn(d.spec,d.time);f=Mn(t,d.spec,G,d.extra),y.setSize(Ho(d.spec,G))}else if(N){let G=N.spec.cameraMs,Ce=G<=0?0:Math.min(G-.01,vn(N.spec,N.time));f=Mn(t,N.spec,Math.max(0,Ce))}else f=Ct(t,r.frameTime,{static:r.staticView,view:r.view}),zn=f,y.setSize(_o??Ft(r.view));let S=r.takeSettled();if(Uo(),(y.draw(f)||S)&&rt(),S){Oe(S),y.viewer.fit(),y.apply("direct"),de(),Ue("meltemi-view",{view:r.view,title:qe(r.view)});let G=r.selection;G&&Ue("meltemi-select",{view:r.view,...G})}let w=r.playing;T.replaceChildren(ie(w?Q.pause:Q.play));let L=w?o.controls.pause:o.controls.play;T.setAttribute("aria-label",L),T.title=o.controls.playTitle(L),T.disabled=!r.canPlay;let B=r.duration??0;E.max=String(B),E.value=String(Math.round(r.time));let R=me(r.time,i),C=me(B,i);E.setAttribute("aria-valuetext",o.controls.position(R,C)),D.textContent=`${R} / ${C}`;let H=r.sceneIndex;K.value=String(H),A.disabled=H===0&&(r.staticView||r.time===0),$.disabled=H>=r.scenes.length-1,Z.setAttribute("aria-pressed",String(r.staticView));let fe=r.announcement(),Ve=qe(r.view),F=fe?`${Ve}. ${fe}`:Ve;y.frame.setAttribute("aria-label",l?o.player.interactive(F):F),c&&H!==jn&&(jn=H,Oe(fe))},qn=()=>r.playing||r.drill!==null||N!==null&&!N.done,Un=d=>{let f=d-qt;qt=d,N&&!N.done?(N.time+=f,N.time>=N.spec.cameraMs&&Fn()):r.tick(f),Ut(),qn()&&(lt=requestAnimationFrame(Un))},V=()=>{cancelAnimationFrame(lt),N&&!N.done&&N.spec.cameraMs<=0&&Fn(),qn()&&(qt=performance.now(),lt=requestAnimationFrame(Un)),Ut()};T.addEventListener("click",()=>{r.toggle(),V()}),A.addEventListener("click",()=>{r.run("previousScene"),V()}),$.addEventListener("click",()=>{r.run("nextScene"),V()}),Z.addEventListener("click",()=>{r.setStatic(!r.staticView),V()}),E.addEventListener("input",()=>{r.pause(),r.seek(Number(E.value)),V()}),K.addEventListener("change",()=>{r.pause(),r.goToScene(Number(K.value)),V()}),W.addEventListener("click",()=>ce("zoomIn")),P.addEventListener("click",()=>ce("zoomOut")),U.addEventListener("click",()=>ce("zoomActual")),be.addEventListener("click",()=>ce("zoomFit"));let Wo=d=>{let f=r.moveFocus(d,B=>{let R=y.picture.querySelector(`[data-id=${xn(B.id)}][data-role="${B.role}"]`);if(!R)return!1;for(let C=R;C&&C!==y.picture;C=C.parentElement)if(C.getAttribute("opacity")==="0")return!1;return!0});if(rt(),!f)return;let S=jt(f);S&&(y.viewer.reveal(y.toContent(S)),y.apply("animate"),de());let w=r.view,L=f.role==="element"?Ae(w)?.elements[f.id]?.type??null:null;Oe(o.player.focused(On(w,f),L))};if(Le.addEventListener("pointerdown",()=>ve(),{capture:!0}),Le.addEventListener("wheel",()=>ve(),{capture:!0,passive:!0}),Le.addEventListener("keydown",d=>{ve();let f=d.target;if(f instanceof HTMLSelectElement||f instanceof HTMLInputElement&&/^(Arrow|Home|End)/.test(d.key)||f instanceof HTMLButtonElement&&(d.key===" "||d.key==="Enter")||d.ctrlKey||d.metaKey||d.altKey)return;if(l&&m.element.contains(f)){d.key==="Escape"&&(d.preventDefault(),ot(!0));return}if(l){let w=f===y.frame,L=Oo(d.key,d.shiftKey);if(L){d.preventDefault(),ce(L);return}if(w&&(d.key==="ArrowUp"||d.key==="ArrowDown")){d.preventDefault(),Wo(d.key==="ArrowDown"?1:-1);return}if(w&&d.key==="Enter"){d.preventDefault();let B=r.focused,R=r.selection;B&&!No(B,R)?we(B,!0):R?.role==="element"&&zt(r.view,R.id)!==null?at(R.id):R&&we(R,!0);return}if(w&&d.key==="Backspace"){_n()&&d.preventDefault();return}if(d.key==="Escape"){m.open?(d.preventDefault(),ot(!0)):(r.selection||r.focused)&&(d.preventDefault(),r.focused=null,De(null,!1));return}}let S=no(d.key);S&&(d.preventDefault(),r.run(S),V())}),n.enter&&t.kind==="effects"&&l){let d=n.enter;r.enter({key:d.fromKey,view:d.from},d.element,d.direction,d.transition,d.select??null)}if(V(),de(),n.select&&!r.drill&&De({role:"element",id:n.select},!1)){let d=jt({role:"element",id:n.select});d&&(y.viewer.reveal(y.toContent(d)),y.apply("direct"))}let Vn=d=>typeof d=="string"?{role:"element",id:d}:d;return{controller:r,get svg(){let d=r.drill;return d?Ct(t,0,{static:r.staticView,view:d.spec.to}):zn},get viewport(){return y.viewer.viewport},get zoom(){return y.viewer.zoom},get view(){return r.view},get trail(){return[...(n.trail??[]).map(d=>d.title),...r.trail.map(d=>qe(d.view))]},get selection(){let d=r.selection;return d?{...d,view:r.view}:null},play:()=>{r.play(),V()},pause:()=>{r.pause(),V()},seek:d=>{r.seek(d),V()},goToScene:d=>{r.goToScene(d),V()},setStatic:d=>{r.setStatic(d),V()},zoomIn:()=>ce("zoomIn",!1),zoomOut:()=>ce("zoomOut",!1),fit:()=>ce("zoomFit",!1),actualSize:()=>ce("zoomActual",!1),setZoom:(d,f)=>{y.viewer.setZoom(d,f),y.apply("animate"),de()},zoomTo:(d,f)=>{y.viewer.setZoom(d,f),y.apply("animate"),de()},panBy:(d,f)=>{y.viewer.panBy(d,f),y.apply("direct"),de()},project:d=>{let f=y.toContent({...d,width:0,height:0});return y.viewer.toScreen(f)},select:d=>De(d===null?null:Vn(d),m.open),showDetails:d=>we(Vn(d)),closeDetails:()=>ot(!1),open:d=>at(d),up:()=>_n(),destroy:()=>{cancelAnimationFrame(lt),clearTimeout(it),y.destroy(),p.replaceChildren()}}}var Dn=class extends HTMLElement{player;connectedCallback(){if(this.player)return;if(document.readyState==="loading"&&!this.querySelector("script")){document.addEventListener("DOMContentLoaded",()=>this.connectedCallback(),{once:!0});return}let t=Ko(this),n;try{n=JSON.parse(this.querySelector('script[type="application/json"]')?.textContent??"")}catch{n=void 0}if(!ao(n)){let i=this.shadowRoot??this.attachShadow({mode:"open"});i.textContent=pe(t).player.unreadable;return}this.player=Fo(this,n,{autoplay:this.hasAttribute("autoplay"),loop:this.hasAttribute("loop"),static:this.hasAttribute("static"),controls:this.getAttribute("controls")!=="false",interactive:this.getAttribute("interactive")!=="false",locale:t})}disconnectedCallback(){this.player?.pause()}};customElements.get("meltemi-player")||customElements.define("meltemi-player",Dn);globalThis.MeltemiPlayer={mountPlayer:Fo,frameSvg:Ct,version:2};})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meltemi/diagrams-player",
3
- "version": "1.9.0",
3
+ "version": "1.10.17",
4
4
  "description": "The embeddable HTML player of Meltemi stories and effects: one offline script, pages and fragments.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,16 +33,16 @@
33
33
  "dist"
34
34
  ],
35
35
  "dependencies": {
36
- "@meltemi/diagrams-layout": "1.9.0",
37
- "@meltemi/diagrams-model": "1.9.0",
38
- "@meltemi/diagrams-motion": "1.9.0",
39
- "@meltemi/diagrams-render": "1.9.0",
40
- "@meltemi/diagrams-i18n": "1.9.0"
36
+ "@meltemi/diagrams-layout": "1.10.17",
37
+ "@meltemi/diagrams-render": "1.10.17",
38
+ "@meltemi/diagrams-model": "1.10.17",
39
+ "@meltemi/diagrams-motion": "1.10.17",
40
+ "@meltemi/diagrams-i18n": "1.10.17"
41
41
  },
42
42
  "devDependencies": {
43
43
  "esbuild": "0.28.2",
44
44
  "playwright-core": "1.63.0",
45
- "@meltemi/diagrams-layout-elk": "1.9.0"
45
+ "@meltemi/diagrams-layout-elk": "1.10.17"
46
46
  },
47
47
  "publishConfig": {
48
48
  "access": "public"