state-machine-cat 12.0.17 → 12.0.19

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,6 +1,5 @@
1
1
  import smcatRendererAsImported from "./smcat.mjs";
2
2
  import renderDot from "./dot/index.mjs";
3
- import renderNDot from "./ndot/index.mjs";
4
3
  import vector from "./vector/vector-native-dot-with-fallback.mjs";
5
4
  import oldVector from "./vector/vector-with-wasm.mjs";
6
5
  import scjson from "./scjson/index.mjs";
@@ -10,8 +9,8 @@ export default function getRenderFunction(pOutputType) {
10
9
  const lOutputType2RenderFunctionMap = new Map([
11
10
  ["smcat", smcat],
12
11
  ["dot", renderDot],
13
- ["ndot", renderNDot],
14
12
  ["svg", vector],
13
+ ["dot", renderDot],
15
14
  ["eps", vector],
16
15
  ["ps", vector],
17
16
  ["ps2", vector],
@@ -1,21 +1,18 @@
1
- function flattenStates(pStates, pHasParent = false) {
2
- let lReturnValue = [];
1
+ function flattenStatesToMap(pStates, pMap, pParent = "") {
3
2
  pStates
4
3
  .filter((pState) => Boolean(pState.statemachine))
5
4
  .forEach((pState) => {
6
5
  if (Object.hasOwn(pState.statemachine, "states")) {
7
- lReturnValue = lReturnValue.concat(
8
- flattenStates(pState.statemachine.states, true),
9
- );
6
+ flattenStatesToMap(pState.statemachine.states, pMap, pState.name);
10
7
  }
11
8
  });
12
- return lReturnValue.concat(
13
- pStates.map((pState) => ({
9
+ pStates.forEach((pState) =>
10
+ pMap.set(pState.name, {
14
11
  name: pState.name,
15
12
  type: pState.type,
16
13
  statemachine: Boolean(pState.statemachine),
17
- hasParent: pHasParent,
18
- })),
14
+ parent: pParent,
15
+ }),
19
16
  );
20
17
  }
21
18
  function flattenTransitions(pStateMachine) {
@@ -38,17 +35,18 @@ export default class StateMachineModel {
38
35
  _flattenedTransitions;
39
36
  _flattenedStates;
40
37
  constructor(pStateMachine) {
41
- this._flattenedStates = flattenStates(pStateMachine.states || []);
38
+ this._flattenedStates = new Map();
39
+ flattenStatesToMap(pStateMachine.states ?? [], this._flattenedStates);
42
40
  this._flattenedTransitions = flattenTransitions(pStateMachine);
43
41
  }
44
42
  get flattenedTransitions() {
45
43
  return this._flattenedTransitions;
46
44
  }
47
45
  findStateByName(pName) {
48
- return this._flattenedStates.find((pState) => pState.name === pName);
46
+ return this._flattenedStates.get(pName);
49
47
  }
50
48
  findStatesByTypes(pTypes) {
51
- return this._flattenedStates.filter((pState) =>
49
+ return Array.from(this._flattenedStates.values()).filter((pState) =>
52
50
  pTypes.includes(pState.type),
53
51
  );
54
52
  }
@@ -70,4 +68,13 @@ export default class StateMachineModel {
70
68
  (pTransition) => pTransition.to === pToStateName,
71
69
  );
72
70
  }
71
+ findTransitionsToSiblings(pStateName, pExcludeIds) {
72
+ return this._flattenedTransitions.filter(
73
+ (pTransition) =>
74
+ !pExcludeIds.has(pTransition.id) &&
75
+ pTransition.from === pStateName &&
76
+ this._flattenedStates.get(pTransition.to)?.parent ===
77
+ this._flattenedStates.get(pStateName)?.parent,
78
+ );
79
+ }
73
80
  }
package/dist/version.mjs CHANGED
@@ -1 +1 @@
1
- export const version = "12.0.17";
1
+ export const version = "12.0.19";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "state-machine-cat",
3
- "version": "12.0.17",
3
+ "version": "12.0.19",
4
4
  "description": "write beautiful state charts",
5
5
  "main": "./dist/index.mjs",
6
6
  "module": "./dist/index.mjs",
@@ -16,10 +16,6 @@
16
16
  "imports": {
17
17
  "#*": "./src/*"
18
18
  },
19
- "sideEffects": [
20
- "dist/render/dot/dot.states.template.cjs",
21
- "dist/render/dot/dot.template.cjs"
22
- ],
23
19
  "files": [
24
20
  "dist/",
25
21
  "types/",
@@ -47,10 +43,8 @@
47
43
  "@hpcc-js/wasm-graphviz": "1.7.0",
48
44
  "ajv": "8.17.1",
49
45
  "fast-xml-parser": "4.5.1",
50
- "handlebars": "4.7.8",
51
46
  "he": "1.2.0",
52
- "semver": "^7.6.2",
53
- "traverse": "0.6.8"
47
+ "neotraverse": "0.6.18"
54
48
  },
55
49
  "engines": {
56
50
  "node": "^18.17||>=20"
@@ -1 +0,0 @@
1
- var Handlebars=require("handlebars/dist/handlebars.runtime"),template=Handlebars.template,templates=Handlebars.templates=Handlebars.templates||{};templates["dot.states.template.hbs"]=template({1:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},r="",c=null!=(c=t(e,"nestedExternalSelfTransitions")||(null!=n?t(n,"nestedExternalSelfTransitions"):n))?c:l.hooks.helperMissing,o={name:"nestedExternalSelfTransitions",hash:{},fn:l.program(2,o,0),inverse:l.noop,data:o,loc:{start:{line:2,column:2},end:{line:4,column:36}}},c="function"==typeof c?c.call(null!=n?n:l.nullContext||{},o):c;return null!=(c=t(e,"nestedExternalSelfTransitions")?c:l.hooks.blockHelperMissing.call(n,c,o))&&(r+=c),r},2:function(l,n,e,a,o){return' "self_'+(null!=(l=l.lambda(n,n))?l:"")+'" [shape=point style=invis width=0 height=0 fixedsize=true]\n'},4:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(t=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:u)==i?r.call(c,{name:"name",hash:{},data:o,loc:{start:{line:7,column:3},end:{line:7,column:13}}}):r)?t:"")+'" [shape=circle style=filled class="'+(null!=(t=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:u)==i?r.call(c,{name:"class",hash:{},data:o,loc:{start:{line:7,column:49},end:{line:7,column:60}}}):r)?t:"")+'" '+(null!=(t=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(5,o,0),inverse:l.program(7,o,0),data:o,loc:{start:{line:7,column:62},end:{line:7,column:166}}}))?t:"")+(null!=(t=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,o,0),inverse:l.noop,data:o,loc:{start:{line:7,column:166},end:{line:7,column:200}}}))?t:"")+'fixedsize=true height=0.15 label=""]\n'},5:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",l=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return'color="'+(null!=(t=typeof(r=null!=(r=l(e,"color")||(null!=n?l(n,"color"):n))?r:u)==i?r.call(c,{name:"color",hash:{},data:o,loc:{start:{line:7,column:82},end:{line:7,column:93}}}):r)?t:"")+'" fillcolor="'+(null!=(t=typeof(r=null!=(r=l(e,"color")||(null!=n?l(n,"color"):n))?r:u)==i?r.call(c,{name:"color",hash:{},data:o,loc:{start:{line:7,column:106},end:{line:7,column:117}}}):r)?t:"")+'" '},7:function(l,n,e,a,o){return'color="black" fillcolor="black" '},9:function(l,n,e,a,o){return"penwidth=3.0 "},11:function(l,n,e,a,o){var t=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,c="function",u=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},i=' "'+(null!=(m=typeof(s=null!=(s=u(e,"name")||(null!=n?u(n,"name"):n))?s:r)==c?s.call(t,{name:"name",hash:{},data:o,loc:{start:{line:10,column:3},end:{line:10,column:13}}}):s)?m:"")+'" [margin=0 class="'+(null!=(m=typeof(s=null!=(s=u(e,"class")||(null!=n?u(n,"class"):n))?s:r)==c?s.call(t,{name:"class",hash:{},data:o,loc:{start:{line:10,column:32},end:{line:10,column:43}}}):s)?m:"")+'" '+(null!=(m=u(e,"if").call(t,null!=n?u(n,"color"):n,{name:"if",hash:{},fn:l.program(12,o,0),inverse:l.program(14,o,0),data:o,loc:{start:{line:10,column:45},end:{line:10,column:107}}}))?m:"")+(null!=(m=u(e,"if").call(t,null!=n?u(n,"active"):n,{name:"if",hash:{},fn:l.program(16,o,0),inverse:l.noop,data:o,loc:{start:{line:10,column:107},end:{line:10,column:156}}}))?m:"")+'label= <\n <table align="center" cellborder="0" border="2" style="rounded" width="48">\n <tr><td width="48"'+(null!=(m=u(e,"if").call(t,null!=n?u(n,"actionStrings"):n,{name:"if",hash:{},fn:l.program(18,o,0),inverse:l.program(20,o,0),data:o,loc:{start:{line:12,column:24},end:{line:12,column:92}}}))?m:"")+">"+(null!=(m=u(e,"if").call(t,null!=n?u(n,"active"):n,{name:"if",hash:{},fn:l.program(22,o,0),inverse:l.program(24,o,0),data:o,loc:{start:{line:12,column:93},end:{line:12,column:147}}}))?m:"")+"</td></tr>\n",s=null!=(s=u(e,"actionStrings")||(null!=n?u(n,"actionStrings"):n))?s:r,r={name:"actionStrings",hash:{},fn:l.program(26,o,0),inverse:l.noop,data:o,loc:{start:{line:13,column:6},end:{line:16,column:24}}},m=typeof s==c?s.call(t,r):s;return null!=(m=u(e,"actionStrings")?m:l.hooks.blockHelperMissing.call(n,m,r))&&(i+=m),i+" </table>\n >]\n"},12:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return'color="'+(null!=(t="function"==typeof(e=null!=(e=t(e,"color")||(null!=n?t(n,"color"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"color",hash:{},data:o,loc:{start:{line:10,column:65},end:{line:10,column:76}}}):e)?t:"")+'" '},14:function(l,n,e,a,o){return'color="black" '},16:function(l,n,e,a,o){return"peripheries=1 style=rounded "},18:function(l,n,e,a,o){return' cellpadding="2"'},20:function(l,n,e,a,o){return' cellpadding="7"'},22:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return"<i>"+l.escapeExpression("function"==typeof(e=null!=(e=t(e,"label")||(null!=n?t(n,"label"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"label",hash:{},data:o,loc:{start:{line:12,column:110},end:{line:12,column:119}}}):e)+"</i>"},24:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return l.escapeExpression("function"==typeof(e=null!=(e=t(e,"label")||(null!=n?t(n,"label"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"label",hash:{},data:o,loc:{start:{line:12,column:131},end:{line:12,column:140}}}):e)},26:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return" "+(null!=(e=t(e,"if").call(null!=n?n:l.nullContext||{},o&&t(o,"first"),{name:"if",hash:{},fn:l.program(27,o,0),inverse:l.noop,data:o,loc:{start:{line:14,column:8},end:{line:14,column:35}}}))?e:"")+'<tr><td align="left" cellpadding="2">'+l.escapeExpression(l.lambda(n,n))+"</td></tr>\n"},27:function(l,n,e,a,o){return"<hr/>"},29:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(t=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:u)==i?r.call(c,{name:"name",hash:{},data:o,loc:{start:{line:21,column:3},end:{line:21,column:13}}}):r)?t:"")+'" [shape=circle class="'+(null!=(t=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:u)==i?r.call(c,{name:"class",hash:{},data:o,loc:{start:{line:21,column:36},end:{line:21,column:47}}}):r)?t:"")+'" '+(null!=(t=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(12,o,0),inverse:l.program(14,o,0),data:o,loc:{start:{line:21,column:49},end:{line:21,column:111}}}))?t:"")+(null!=(t=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,o,0),inverse:l.noop,data:o,loc:{start:{line:21,column:111},end:{line:21,column:145}}}))?t:"")+'label="H"]\n'},31:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(t=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:u)==i?r.call(c,{name:"name",hash:{},data:o,loc:{start:{line:24,column:3},end:{line:24,column:13}}}):r)?t:"")+'" [shape=circle class="'+(null!=(t=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:u)==i?r.call(c,{name:"class",hash:{},data:o,loc:{start:{line:24,column:36},end:{line:24,column:47}}}):r)?t:"")+'" '+(null!=(t=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(12,o,0),inverse:l.program(14,o,0),data:o,loc:{start:{line:24,column:49},end:{line:24,column:111}}}))?t:"")+(null!=(t=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,o,0),inverse:l.noop,data:o,loc:{start:{line:24,column:111},end:{line:24,column:145}}}))?t:"")+'label="H*"]\n'},33:function(l,n,e,a,o,t,r){var c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},m=' "'+(null!=(f=typeof(p=null!=(p=s(e,"name")||(null!=n?s(n,"name"):n))?p:u)==i?p.call(c,{name:"name",hash:{},data:o,loc:{start:{line:27,column:3},end:{line:27,column:13}}}):p)?f:"")+'" [shape=diamond fixedsize=true width=0.35 height=0.35 fontsize=10 label=" " class="'+(null!=(f=typeof(p=null!=(p=s(e,"class")||(null!=n?s(n,"class"):n))?p:u)==i?p.call(c,{name:"class",hash:{},data:o,loc:{start:{line:27,column:97},end:{line:27,column:108}}}):p)?f:"")+'" '+(null!=(f=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(34,o,0,t,r),inverse:l.program(36,o,0,t,r),data:o,loc:{start:{line:27,column:110},end:{line:27,column:170}}}))?f:"")+(null!=(f=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(38,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:27,column:170},end:{line:27,column:204}}}))?f:"")+']\n "'+(null!=(f=typeof(p=null!=(p=s(e,"name")||(null!=n?s(n,"name"):n))?p:u)==i?p.call(c,{name:"name",hash:{},data:o,loc:{start:{line:28,column:3},end:{line:28,column:13}}}):p)?f:"")+'" -> "'+(null!=(f=typeof(p=null!=(p=s(e,"name")||(null!=n?s(n,"name"):n))?p:u)==i?p.call(c,{name:"name",hash:{},data:o,loc:{start:{line:28,column:19},end:{line:28,column:29}}}):p)?f:"")+'" [color="#FFFFFF01"'+(null!=(f=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(40,o,0,t,r),inverse:l.program(42,o,0,t,r),data:o,loc:{start:{line:28,column:49},end:{line:28,column:119}}}))?f:"")+' class="'+(null!=(f=typeof(p=null!=(p=s(e,"class")||(null!=n?s(n,"class"):n))?p:u)==i?p.call(c,{name:"class",hash:{},data:o,loc:{start:{line:28,column:127},end:{line:28,column:138}}}):p)?f:"")+'" label=<',p=null!=(p=s(e,"actionStrings")||(null!=n?s(n,"actionStrings"):n))?p:u,u={name:"actionStrings",hash:{},fn:l.program(44,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:28,column:147},end:{line:28,column:264}}},f=typeof p==i?p.call(c,u):p;return null!=(f=s(e,"actionStrings")?f:l.hooks.blockHelperMissing.call(n,f,u))&&(m+=f),m+">]\n"},34:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return'color="'+(null!=(t="function"==typeof(e=null!=(e=t(e,"color")||(null!=n?t(n,"color"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"color",hash:{},data:o,loc:{start:{line:27,column:130},end:{line:27,column:141}}}):e)?t:"")+'"'},36:function(l,n,e,a,o){return'color="black"'},38:function(l,n,e,a,o){return" penwidth=3.0"},40:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' fontcolor="'+(null!=(t="function"==typeof(e=null!=(e=t(e,"color")||(null!=n?t(n,"color"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"color",hash:{},data:o,loc:{start:{line:28,column:74},end:{line:28,column:85}}}):e)?t:"")+'"'},42:function(l,n,e,a,o){return' fontcolor="black"'},44:function(l,n,e,a,o,t,r){var c,n=null!=n?n:l.nullContext||{},u=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return(null!=(c=u(e,"if").call(n,o&&u(o,"first"),{name:"if",hash:{},fn:l.program(45,o,0,t,r),inverse:l.program(47,o,0,t,r),data:o,loc:{start:{line:28,column:165},end:{line:28,column:196}}}))?c:"")+(null!=(c=u(e,"if").call(n,null!=r[1]?u(r[1],"active"):r[1],{name:"if",hash:{},fn:l.program(49,o,0,t,r),inverse:l.program(51,o,0,t,r),data:o,loc:{start:{line:28,column:196},end:{line:28,column:245}}}))?c:"")},45:function(l,n,e,a,o){return""},47:function(l,n,e,a,o){return"\\n"},49:function(l,n,e,a,o){return"<i>"+l.escapeExpression(l.lambda(n,n))+"</i>"},51:function(l,n,e,a,o){return l.escapeExpression(l.lambda(n,n))},53:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(t=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:u)==i?r.call(c,{name:"name",hash:{},data:o,loc:{start:{line:31,column:3},end:{line:31,column:13}}}):r)?t:"")+'" [shape=rect fixedsize=true label=" " style=filled class="'+(null!=(t=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:u)==i?r.call(c,{name:"class",hash:{},data:o,loc:{start:{line:31,column:72},end:{line:31,column:83}}}):r)?t:"")+'" '+(null!=(t=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(54,o,0),inverse:l.program(56,o,0),data:o,loc:{start:{line:31,column:85},end:{line:31,column:187}}}))?t:"")+(null!=(t=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(38,o,0),inverse:l.noop,data:o,loc:{start:{line:31,column:187},end:{line:31,column:221}}}))?t:"")+(null!=(t=typeof(r=null!=(r=s(e,"sizingExtras")||(null!=n?s(n,"sizingExtras"):n))?r:u)==i?r.call(c,{name:"sizingExtras",hash:{},data:o,loc:{start:{line:31,column:221},end:{line:31,column:239}}}):r)?t:"")+"]\n"},54:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",l=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return'color="'+(null!=(t=typeof(r=null!=(r=l(e,"color")||(null!=n?l(n,"color"):n))?r:u)==i?r.call(c,{name:"color",hash:{},data:o,loc:{start:{line:31,column:105},end:{line:31,column:116}}}):r)?t:"")+'" fillcolor="'+(null!=(t=typeof(r=null!=(r=l(e,"color")||(null!=n?l(n,"color"):n))?r:u)==i?r.call(c,{name:"color",hash:{},data:o,loc:{start:{line:31,column:129},end:{line:31,column:140}}}):r)?t:"")+'"'},56:function(l,n,e,a,o){return'color="black" fillcolor="black"'},58:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(t=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:u)==i?r.call(c,{name:"name",hash:{},data:o,loc:{start:{line:34,column:3},end:{line:34,column:13}}}):r)?t:"")+'" [shape=circle fixedsize=true height=0.15 label="" style=filled class="'+(null!=(t=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:u)==i?r.call(c,{name:"class",hash:{},data:o,loc:{start:{line:34,column:85},end:{line:34,column:96}}}):r)?t:"")+'" '+(null!=(t=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(54,o,0),inverse:l.program(56,o,0),data:o,loc:{start:{line:34,column:98},end:{line:34,column:200}}}))?t:"")+(null!=(t=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(38,o,0),inverse:l.noop,data:o,loc:{start:{line:34,column:200},end:{line:34,column:234}}}))?t:"")+"]\n"},60:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(t=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:u)==i?r.call(c,{name:"name",hash:{},data:o,loc:{start:{line:37,column:3},end:{line:37,column:13}}}):r)?t:"")+'" [label= <\n <table align="center" cellborder="0" border="0">\n <tr><td cellpadding="0"><font '+(null!=(t=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(12,o,0),inverse:l.program(14,o,0),data:o,loc:{start:{line:39,column:38},end:{line:39,column:100}}}))?t:"")+'point-size="20">X</font></td></tr>\n <tr><td cellpadding="0"><font '+(null!=(t=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(34,o,0),inverse:l.program(36,o,0),data:o,loc:{start:{line:40,column:38},end:{line:40,column:98}}}))?t:"")+">"+l.escapeExpression(typeof(r=null!=(r=s(e,"label")||(null!=n?s(n,"label"):n))?r:u)==i?r.call(c,{name:"label",hash:{},data:o,loc:{start:{line:40,column:99},end:{line:40,column:108}}}):r)+'</font></td></tr>\n </table>\n > class="'+(null!=(t=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:u)==i?r.call(c,{name:"class",hash:{},data:o,loc:{start:{line:42,column:13},end:{line:42,column:24}}}):r)?t:"")+'"]\n'},62:function(l,n,e,a,o){var t,r,c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(t=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:u)==i?r.call(c,{name:"name",hash:{},data:o,loc:{start:{line:45,column:3},end:{line:45,column:13}}}):r)?t:"")+'" [shape=circle style=filled class="'+(null!=(t=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:u)==i?r.call(c,{name:"class",hash:{},data:o,loc:{start:{line:45,column:49},end:{line:45,column:60}}}):r)?t:"")+'" '+(null!=(t=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(5,o,0),inverse:l.program(7,o,0),data:o,loc:{start:{line:45,column:62},end:{line:45,column:166}}}))?t:"")+"fixedsize=true height=0.15 peripheries=2 "+(null!=(t=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,o,0),inverse:l.noop,data:o,loc:{start:{line:45,column:207},end:{line:45,column:241}}}))?t:"")+'label=""]\n'},64:function(l,n,e,a,o){var t=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,c="function",u=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},i=' subgraph "cluster_'+(null!=(p=typeof(s=null!=(s=u(e,"name")||(null!=n?u(n,"name"):n))?s:r)==c?s.call(t,{name:"name",hash:{},data:o,loc:{start:{line:48,column:20},end:{line:48,column:30}}}):s)?p:"")+'" {\n class="'+(null!=(p=typeof(s=null!=(s=u(e,"class")||(null!=n?u(n,"class"):n))?s:r)==c?s.call(t,{name:"class",hash:{},data:o,loc:{start:{line:49,column:11},end:{line:49,column:22}}}):s)?p:"")+'" '+(null!=(p=u(e,"if").call(t,null!=n?u(n,"color"):n,{name:"if",hash:{},fn:l.program(12,o,0),inverse:l.program(14,o,0),data:o,loc:{start:{line:49,column:24},end:{line:49,column:86}}}))?p:"")+'label= <\n <table cellborder="0" border="0">\n <tr><td>'+(null!=(p=u(e,"if").call(t,null!=n?u(n,"active"):n,{name:"if",hash:{},fn:l.program(22,o,0),inverse:l.program(24,o,0),data:o,loc:{start:{line:51,column:14},end:{line:51,column:68}}}))?p:"")+"</td></tr>\n",s=null!=(s=u(e,"actionStrings")||(null!=n?u(n,"actionStrings"):n))?s:r,m={name:"actionStrings",hash:{},fn:l.program(65,o,0),inverse:l.noop,data:o,loc:{start:{line:52,column:6},end:{line:55,column:24}}},p=typeof s==c?s.call(t,m):s;return null!=(p=u(e,"actionStrings")?p:l.hooks.blockHelperMissing.call(n,p,m))&&(i+=p),i+" </table>\n > "+(null!=(p=u(e,"if").call(t,null!=n?u(n,"parentIsParallel"):n,{name:"if",hash:{},fn:l.program(67,o,0),inverse:l.program(69,o,0),data:o,loc:{start:{line:57,column:6},end:{line:57,column:137}}}))?p:"")+'\n "'+(null!=(p=typeof(s=null!=(s=u(e,"name")||(null!=n?u(n,"name"):n))?s:r)==c?s.call(t,{name:"name",hash:{},data:o,loc:{start:{line:58,column:5},end:{line:58,column:15}}}):s)?p:"")+'" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]\n '+(null!=(p=(u(e,"stateSection")||n&&u(n,"stateSection")||r).call(t,null!=n?u(n,"statemachine"):n,{name:"stateSection",hash:{},fn:l.program(45,o,0),inverse:l.noop,data:o,loc:{start:{line:59,column:4},end:{line:59,column:51}}}))?p:"")+"\n }\n"},65:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return" "+(null!=(e=t(e,"if").call(null!=n?n:l.nullContext||{},o&&t(o,"first"),{name:"if",hash:{},fn:l.program(27,o,0),inverse:l.noop,data:o,loc:{start:{line:53,column:8},end:{line:53,column:35}}}))?e:"")+'<tr><td align="left">'+l.escapeExpression(l.lambda(n,n))+"</td></tr>\n"},67:function(l,n,e,a,o){return"style=dashed penwidth=1.0"},69:function(l,n,e,a,o){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return"style=rounded "+(null!=(e=t(e,"if").call(null!=n?n:l.nullContext||{},null!=n?t(n,"active"):n,{name:"if",hash:{},fn:l.program(70,o,0),inverse:l.program(72,o,0),data:o,loc:{start:{line:57,column:77},end:{line:57,column:130}}}))?e:"")},70:function(l,n,e,a,o){return"penwidth=3.0"},72:function(l,n,e,a,o){return"penwidth=2.0"},74:function(l,n,e,a,o,t,r){var c=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},u="",i=null!=(i=c(e,"noteName")||(null!=n?c(n,"noteName"):n))?i:l.hooks.helperMissing,t={name:"noteName",hash:{},fn:l.program(75,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:63,column:4},end:{line:66,column:17}}},r="function"==typeof i?i.call(null!=n?n:l.nullContext||{},t):i;return null!=(r=c(e,"noteName")?r:l.hooks.blockHelperMissing.call(n,r,t))&&(u+=r),u},75:function(l,n,e,a,o,t,r){var c,u=l.lambda,l=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(c=u(n,n))?c:"")+'" [color=black fontcolor=black label="'+(null!=(c=u(null!=r[1]?l(r[1],"noteFlattened"):r[1],n))?c:"")+'" shape=note fontsize=10 fillcolor="#ffffcc" penwidth=1.0]\n "'+(null!=(c=u(null!=r[1]?l(r[1],"name"):r[1],n))?c:"")+'" -> "'+(null!=(c=u(n,n))?c:"")+'" [style=dashed arrowtail=none arrowhead=none]\n'},compiler:[8,">= 4.3.0"],main:function(l,n,e,a,o,t,r){var c=null!=n?n:l.nullContext||{},u=l.hooks.helperMissing,i="function",s=l.hooks.blockHelperMissing,m=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},p="",f=null!=(f=m(e,"compositeStates")||(null!=n?m(n,"compositeStates"):n))?f:u,h={name:"compositeStates",hash:{},fn:l.program(1,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:1,column:0},end:{line:5,column:20}}},d=typeof f==i?f.call(c,h):f;return null!=(d=m(e,"compositeStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"initialStates")||(null!=n?m(n,"initialStates"):n))?f:u,h={name:"initialStates",hash:{},fn:l.program(4,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:6,column:0},end:{line:8,column:18}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"initialStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"regularStates")||(null!=n?m(n,"regularStates"):n))?f:u,h={name:"regularStates",hash:{},fn:l.program(11,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:9,column:0},end:{line:19,column:18}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"regularStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"historyStates")||(null!=n?m(n,"historyStates"):n))?f:u,h={name:"historyStates",hash:{},fn:l.program(29,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:20,column:0},end:{line:22,column:18}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"historyStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"deepHistoryStates")||(null!=n?m(n,"deepHistoryStates"):n))?f:u,h={name:"deepHistoryStates",hash:{},fn:l.program(31,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:23,column:0},end:{line:25,column:22}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"deepHistoryStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"choiceStates")||(null!=n?m(n,"choiceStates"):n))?f:u,h={name:"choiceStates",hash:{},fn:l.program(33,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:26,column:0},end:{line:29,column:17}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"choiceStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"forkjoinStates")||(null!=n?m(n,"forkjoinStates"):n))?f:u,h={name:"forkjoinStates",hash:{},fn:l.program(53,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:30,column:0},end:{line:32,column:19}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"forkjoinStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"junctionStates")||(null!=n?m(n,"junctionStates"):n))?f:u,h={name:"junctionStates",hash:{},fn:l.program(58,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:33,column:0},end:{line:35,column:19}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"junctionStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"terminateStates")||(null!=n?m(n,"terminateStates"):n))?f:u,h={name:"terminateStates",hash:{},fn:l.program(60,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:36,column:0},end:{line:43,column:20}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"terminateStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"finalStates")||(null!=n?m(n,"finalStates"):n))?f:u,h={name:"finalStates",hash:{},fn:l.program(62,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:44,column:0},end:{line:46,column:16}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"finalStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"compositeStates")||(null!=n?m(n,"compositeStates"):n))?f:u,h={name:"compositeStates",hash:{},fn:l.program(64,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:47,column:0},end:{line:61,column:20}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"compositeStates")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(e,"states")||(null!=n?m(n,"states"):n))?f:u,h={name:"states",hash:{},fn:l.program(74,o,0,t,r),inverse:l.noop,data:o,loc:{start:{line:62,column:0},end:{line:67,column:11}}},d=typeof f==i?f.call(c,h):f,null!=(d=m(e,"states")?d:s.call(n,d,h))&&(p+=d),p},useData:!0,useDepths:!0});
@@ -1 +0,0 @@
1
- var Handlebars=require("handlebars/dist/handlebars.runtime"),template=Handlebars.template,templates=Handlebars.templates=Handlebars.templates||{};templates["dot.template.hbs"]=template({1:function(l,n,o,e,t,a,r){var u=null!=n?n:l.nullContext||{},c=l.hooks.helperMissing,i="function",s=l.hooks.blockHelperMissing,m=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},p="",f=null!=(f=m(o,"noteName")||(null!=n?m(n,"noteName"):n))?f:c,h={name:"noteName",hash:{},fn:l.noop,inverse:l.program(2,t,0,a,r),data:t,loc:{start:{line:9,column:2},end:{line:26,column:15}}},d=typeof f==i?f.call(u,h):f;return null!=(d=m(o,"noteName")?d:s.call(n,d,h))&&(p+=d),f=null!=(f=m(o,"noteName")||(null!=n?m(n,"noteName"):n))?f:c,h={name:"noteName",hash:{},fn:l.program(23,t,0,a,r),inverse:l.noop,data:t,loc:{start:{line:27,column:2},end:{line:37,column:15}}},d=typeof f==i?f.call(u,h):f,null!=(d=m(o,"noteName")?d:s.call(n,d,h))&&(p+=d),p},2:function(l,n,o,e,t){var a=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",c=l.hooks.blockHelperMissing,i=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},s="",m=null!=(m=i(o,"isCompositeSelf")||(null!=n?i(n,"isCompositeSelf"):n))?m:r,p={name:"isCompositeSelf",hash:{},fn:l.noop,inverse:l.program(3,t,0),data:t,loc:{start:{line:10,column:4},end:{line:16,column:24}}},f=typeof m==u?m.call(a,p):m;return null!=(f=i(o,"isCompositeSelf")?f:c.call(n,f,p))&&(s+=f),m=null!=(m=i(o,"isCompositeSelf")||(null!=n?i(n,"isCompositeSelf"):n))?m:r,p={name:"isCompositeSelf",hash:{},fn:l.program(16,t,0),inverse:l.noop,data:t,loc:{start:{line:17,column:4},end:{line:25,column:24}}},f=typeof m==u?m.call(a,p):m,null!=(f=i(o,"isCompositeSelf")?f:c.call(n,f,p))&&(s+=f),s},3:function(l,n,o,e,t){var a=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",c=l.hooks.blockHelperMissing,i=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},s=' "'+(null!=(f=typeof(m=null!=(m=i(o,"from")||(null!=n?i(n,"from"):n))?m:r)==u?m.call(a,{name:"from",hash:{},data:t,loc:{start:{line:11,column:5},end:{line:11,column:15}}}):m)?f:"")+'" -> "'+(null!=(f=typeof(m=null!=(m=i(o,"to")||(null!=n?i(n,"to"):n))?m:r)==u?m.call(a,{name:"to",hash:{},data:t,loc:{start:{line:11,column:21},end:{line:11,column:29}}}):m)?f:"")+'" [label="',m=null!=(m=i(o,"label")||(null!=n?i(n,"label"):n))?m:r,p={name:"label",hash:{},fn:l.noop,inverse:l.program(4,t,0),data:t,loc:{start:{line:11,column:39},end:{line:11,column:60}}},f=typeof m==u?m.call(a,p):m;return null!=(f=i(o,"label")?f:c.call(n,f,p))&&(s+=f),s+=(null!=(f=typeof(m=null!=(m=i(o,"label")||(null!=n?i(n,"label"):n))?m:r)==u?m.call(a,{name:"label",hash:{},data:t,loc:{start:{line:11,column:60},end:{line:11,column:71}}}):m)?f:"")+'"',m=null!=(m=i(o,"fromComposite")||(null!=n?i(n,"fromComposite"):n))?m:r,p={name:"fromComposite",hash:{},fn:l.program(6,t,0),inverse:l.noop,data:t,loc:{start:{line:12,column:28},end:{line:12,column:92}}},f=typeof m==u?m.call(a,p):m,null!=(f=i(o,"fromComposite")?f:c.call(n,f,p))&&(s+=f),m=null!=(m=i(o,"toComposite")||(null!=n?i(n,"toComposite"):n))?m:r,p={name:"toComposite",hash:{},fn:l.program(8,t,0),inverse:l.noop,data:t,loc:{start:{line:13,column:28},end:{line:13,column:86}}},f=typeof m==u?m.call(a,p):m,null!=(f=i(o,"toComposite")?f:c.call(n,f,p))&&(s+=f),s+=null!=(f=i(o,"if").call(a,null!=n?i(n,"color"):n,{name:"if",hash:{},fn:l.program(10,t,0),inverse:l.program(12,t,0),data:t,loc:{start:{line:14,column:28},end:{line:14,column:133}}}))?f:"",m=null!=(m=i(o,"width")||(null!=n?i(n,"width"):n))?m:r,p={name:"width",hash:{},fn:l.program(14,t,0),inverse:l.noop,data:t,loc:{start:{line:15,column:28},end:{line:15,column:68}}},f=typeof m==u?m.call(a,p):m,null!=(f=i(o,"width")?f:c.call(n,f,p))&&(s+=f),s+' class="'+(null!=(f=typeof(m=null!=(m=i(o,"class")||(null!=n?i(n,"class"):n))?m:r)==u?m.call(a,{name:"class",hash:{},data:t,loc:{start:{line:15,column:76},end:{line:15,column:87}}}):m)?f:"")+'"]\n'},4:function(l,n,o,e,t){return" "},6:function(l,n,o,e,t){var a=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' ltail="cluster_'+(null!=(a="function"==typeof(o=null!=(o=a(o,"from")||(null!=n?a(n,"from"):n))?o:l.hooks.helperMissing)?o.call(null!=n?n:l.nullContext||{},{name:"from",hash:{},data:t,loc:{start:{line:12,column:63},end:{line:12,column:73}}}):o)?a:"")+'"'},8:function(l,n,o,e,t){var a=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' lhead="cluster_'+(null!=(a="function"==typeof(o=null!=(o=a(o,"to")||(null!=n?a(n,"to"):n))?o:l.hooks.helperMissing)?o.call(null!=n?n:l.nullContext||{},{name:"to",hash:{},data:t,loc:{start:{line:13,column:61},end:{line:13,column:69}}}):o)?a:"")+'"'},10:function(l,n,o,e,t){var a,r,u=null!=n?n:l.nullContext||{},c=l.hooks.helperMissing,i="function",l=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' color="'+(null!=(a=typeof(r=null!=(r=l(o,"color")||(null!=n?l(n,"color"):n))?r:c)==i?r.call(u,{name:"color",hash:{},data:t,loc:{start:{line:14,column:50},end:{line:14,column:61}}}):r)?a:"")+'" fontcolor="'+(null!=(a=typeof(r=null!=(r=l(o,"color")||(null!=n?l(n,"color"):n))?r:c)==i?r.call(u,{name:"color",hash:{},data:t,loc:{start:{line:14,column:74},end:{line:14,column:85}}}):r)?a:"")+'"'},12:function(l,n,o,e,t){return' color="black" fontcolor="black"'},14:function(l,n,o,e,t){return' penwidth="'+(null!=(l=l.lambda(n,n))?l:"")+'"'},16:function(l,n,o,e,t){var a=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",c=l.hooks.blockHelperMissing,i=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},s=' "'+(null!=(f=typeof(m=null!=(m=i(o,"from")||(null!=n?i(n,"from"):n))?m:r)==u?m.call(a,{name:"from",hash:{},data:t,loc:{start:{line:18,column:7},end:{line:18,column:17}}}):m)?f:"")+'" -> "self_'+(null!=(f=typeof(m=null!=(m=i(o,"name")||(null!=n?i(n,"name"):n))?m:r)==u?m.call(a,{name:"name",hash:{},data:t,loc:{start:{line:18,column:28},end:{line:18,column:38}}}):m)?f:"")+'" [label="',m=null!=(m=i(o,"label")||(null!=n?i(n,"label"):n))?m:r,p={name:"label",hash:{},fn:l.noop,inverse:l.program(4,t,0),data:t,loc:{start:{line:18,column:48},end:{line:18,column:69}}},f=typeof m==u?m.call(a,p):m;return null!=(f=i(o,"label")?f:c.call(n,f,p))&&(s+=f),s+=(null!=(f=typeof(m=null!=(m=i(o,"label")||(null!=n?i(n,"label"):n))?m:r)==u?m.call(a,{name:"label",hash:{},data:t,loc:{start:{line:18,column:69},end:{line:18,column:80}}}):m)?f:"")+'" arrowhead=none',m=null!=(m=i(o,"tailportflags")||(null!=n?i(n,"tailportflags"):n))?m:r,p={name:"tailportflags",hash:{},fn:l.program(17,t,0),inverse:l.noop,data:t,loc:{start:{line:19,column:28},end:{line:19,column:73}}},f=typeof m==u?m.call(a,p):m,null!=(f=i(o,"tailportflags")?f:c.call(n,f,p))&&(s+=f),s+=' ltail="cluster_'+(null!=(f=typeof(m=null!=(m=i(o,"from")||(null!=n?i(n,"from"):n))?m:r)==u?m.call(a,{name:"from",hash:{},data:t,loc:{start:{line:19,column:89},end:{line:19,column:99}}}):m)?f:"")+'"'+(null!=(f=i(o,"if").call(a,null!=n?i(n,"color"):n,{name:"if",hash:{},fn:l.program(10,t,0),inverse:l.program(12,t,0),data:t,loc:{start:{line:20,column:28},end:{line:20,column:133}}}))?f:"")+' class="'+(null!=(f=typeof(m=null!=(m=i(o,"class")||(null!=n?i(n,"class"):n))?m:r)==u?m.call(a,{name:"class",hash:{},data:t,loc:{start:{line:20,column:141},end:{line:20,column:152}}}):m)?f:"")+'"]\n "self_'+(null!=(f=typeof(m=null!=(m=i(o,"name")||(null!=n?i(n,"name"):n))?m:r)==u?m.call(a,{name:"name",hash:{},data:t,loc:{start:{line:21,column:12},end:{line:21,column:22}}}):m)?f:"")+'" -> "'+(null!=(f=typeof(m=null!=(m=i(o,"from")||(null!=n?i(n,"from"):n))?m:r)==u?m.call(a,{name:"from",hash:{},data:t,loc:{start:{line:21,column:28},end:{line:21,column:38}}}):m)?f:"")+'" [lhead="cluster_'+(null!=(f=typeof(m=null!=(m=i(o,"from")||(null!=n?i(n,"from"):n))?m:r)==u?m.call(a,{name:"from",hash:{},data:t,loc:{start:{line:21,column:56},end:{line:21,column:66}}}):m)?f:"")+'"',m=null!=(m=i(o,"headportflags")||(null!=n?i(n,"headportflags"):n))?m:r,p={name:"headportflags",hash:{},fn:l.program(17,t,0),inverse:l.noop,data:t,loc:{start:{line:22,column:28},end:{line:22,column:73}}},f=typeof m==u?m.call(a,p):m,null!=(f=i(o,"headportflags")?f:c.call(n,f,p))&&(s+=f),s+=null!=(f=i(o,"if").call(a,null!=n?i(n,"color"):n,{name:"if",hash:{},fn:l.program(19,t,0),inverse:l.program(21,t,0),data:t,loc:{start:{line:23,column:28},end:{line:23,column:91}}}))?f:"",m=null!=(m=i(o,"width")||(null!=n?i(n,"width"):n))?m:r,p={name:"width",hash:{},fn:l.program(14,t,0),inverse:l.noop,data:t,loc:{start:{line:24,column:28},end:{line:24,column:68}}},f=typeof m==u?m.call(a,p):m,null!=(f=i(o,"width")?f:c.call(n,f,p))&&(s+=f),s+' class="'+(null!=(f=typeof(m=null!=(m=i(o,"class")||(null!=n?i(n,"class"):n))?m:r)==u?m.call(a,{name:"class",hash:{},data:t,loc:{start:{line:24,column:76},end:{line:24,column:87}}}):m)?f:"")+'"]\n'},17:function(l,n,o,e,t){return" "+(null!=(l=l.lambda(n,n))?l:"")},19:function(l,n,o,e,t){var a=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' color="'+(null!=(a="function"==typeof(o=null!=(o=a(o,"color")||(null!=n?a(n,"color"):n))?o:l.hooks.helperMissing)?o.call(null!=n?n:l.nullContext||{},{name:"color",hash:{},data:t,loc:{start:{line:23,column:50},end:{line:23,column:61}}}):o)?a:"")+'"'},21:function(l,n,o,e,t){return' color="black"'},23:function(l,n,o,e,t,a,r){var u,c=l.lambda,i=l.hooks.blockHelperMissing,s=null!=n?n:l.nullContext||{},m=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "i_'+(null!=(u=c(n,n))?u:"")+'" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]\n "'+(null!=(u=c(null!=r[1]?m(r[1],"from"):r[1],n))?u:"")+'" -> "i_'+(null!=(u=c(n,n))?u:"")+'" [arrowhead=none'+(null!=(u=i.call(n,c(null!=r[1]?m(r[1],"fromComposite"):r[1],n),{name:"../fromComposite",hash:{},fn:l.program(24,t,0,a,r),inverse:l.noop,data:t,loc:{start:{line:30,column:32},end:{line:30,column:105}}}))?u:"")+(null!=(u=m(o,"if").call(s,null!=r[1]?m(r[1],"color"):r[1],{name:"if",hash:{},fn:l.program(26,t,0,a,r),inverse:l.program(21,t,0,a,r),data:t,loc:{start:{line:31,column:32},end:{line:31,column:101}}}))?u:"")+']\n "i_'+(null!=(u=c(n,n))?u:"")+'" -> "'+(null!=(u=c(null!=r[1]?m(r[1],"to"):r[1],n))?u:"")+'" [label="'+(null!=(u=i.call(n,c(null!=r[1]?m(r[1],"label"):r[1],n),{name:"../label",hash:{},fn:l.noop,inverse:l.program(4,t,0,a,r),data:t,loc:{start:{line:32,column:43},end:{line:32,column:70}}}))?u:"")+(null!=(u=c(null!=r[1]?m(r[1],"label"):r[1],n))?u:"")+'"'+(null!=(u=i.call(n,c(null!=r[1]?m(r[1],"toComposite"):r[1],n),{name:"../toComposite",hash:{},fn:l.program(28,t,0,a,r),inverse:l.noop,data:t,loc:{start:{line:33,column:32},end:{line:33,column:99}}}))?u:"")+(null!=(u=m(o,"if").call(s,null!=r[1]?m(r[1],"color"):r[1],{name:"if",hash:{},fn:l.program(30,t,0,a,r),inverse:l.program(12,t,0,a,r),data:t,loc:{start:{line:34,column:32},end:{line:34,column:146}}}))?u:"")+']\n "i_'+(null!=(u=c(n,n))?u:"")+'" -> "'+(null!=(u=c(n,n))?u:"")+'" [style=dashed arrowtail=none arrowhead=none weight=0]\n "'+(null!=(u=c(n,n))?u:"")+'" [label="'+(null!=(u=c(null!=r[1]?m(r[1],"noteFlattened"):r[1],n))?u:"")+'" shape=note fontsize=10 color=black fontcolor=black fillcolor="#ffffcc" penwidth=1.0]\n'},24:function(l,n,o,e,t,a,r){var u=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' ltail="cluster_'+(null!=(l=l.lambda(null!=r[1]?u(r[1],"from"):r[1],n))?l:"")+'"'},26:function(l,n,o,e,t,a,r){var u=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' color="'+(null!=(l=l.lambda(null!=r[1]?u(r[1],"color"):r[1],n))?l:"")+'"'},28:function(l,n,o,e,t,a,r){var u=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' lhead="cluster_'+(null!=(l=l.lambda(null!=r[1]?u(r[1],"to"):r[1],n))?l:"")+'"'},30:function(l,n,o,e,t,a,r){var u,c=l.lambda,l=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' color="'+(null!=(u=c(null!=r[1]?l(r[1],"color"):r[1],n))?u:"")+'" fontcolor="'+(null!=(u=c(null!=r[1]?l(r[1],"color"):r[1],n))?u:"")+'"'},compiler:[8,">= 4.3.0"],main:function(l,n,o,e,t,a,r){var u=null!=n?n:l.nullContext||{},c=l.hooks.helperMissing,i="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},e='digraph "state transitions" {\n '+(null!=(p=typeof(m=null!=(m=s(o,"graphAttributes")||(null!=n?s(n,"graphAttributes"):n))?m:c)==i?m.call(u,{name:"graphAttributes",hash:{},data:t,loc:{start:{line:2,column:2},end:{line:2,column:23}}}):m)?p:"")+"\n node ["+(null!=(p=typeof(m=null!=(m=s(o,"nodeAttributes")||(null!=n?s(n,"nodeAttributes"):n))?m:c)==i?m.call(u,{name:"nodeAttributes",hash:{},data:t,loc:{start:{line:3,column:8},end:{line:3,column:28}}}):m)?p:"")+"]\n edge ["+(null!=(p=typeof(m=null!=(m=s(o,"edgeAttributes")||(null!=n?s(n,"edgeAttributes"):n))?m:c)==i?m.call(u,{name:"edgeAttributes",hash:{},data:t,loc:{start:{line:4,column:8},end:{line:4,column:28}}}):m)?p:"")+"]\n\n"+(null!=(p=l.invokePartial(s(e,"dot.states.template.hbs"),n,{name:"dot.states.template.hbs",data:t,indent:" ",helpers:o,partials:e,decorators:l.decorators}))?p:"")+"\n",m=null!=(m=s(o,"transitions")||(null!=n?s(n,"transitions"):n))?m:c,c={name:"transitions",hash:{},fn:l.program(1,t,0,a,r),inverse:l.noop,data:t,loc:{start:{line:8,column:2},end:{line:38,column:18}}},p=typeof m==i?m.call(u,c):m;return null!=(p=s(o,"transitions")?p:l.hooks.blockHelperMissing.call(n,p,c))&&(e+=p),e+"}\n"},usePartial:!0,useData:!0,useDepths:!0});
@@ -1,44 +0,0 @@
1
- import Handlebars from "handlebars/dist/handlebars.runtime.js";
2
- await import("./dot.template.cjs");
3
- await import("./dot.states.template.cjs");
4
- Handlebars.registerPartial(
5
- "dot.states.template.hbs",
6
- Handlebars.templates["dot.states.template.hbs"],
7
- );
8
- Handlebars.registerHelper("stateSection", (pStateMachine) =>
9
- Handlebars.templates["dot.states.template.hbs"](splitStates(pStateMachine)),
10
- );
11
- function isType(pString) {
12
- return (pState) => pState.type === pString;
13
- }
14
- function isOneOfTypes(pStringArray) {
15
- return (pState) => pStringArray.includes(pState.type);
16
- }
17
- function splitStates(pStateMachine) {
18
- pStateMachine.initialStates = pStateMachine.states.filter(isType("initial"));
19
- pStateMachine.regularStates = pStateMachine.states.filter(
20
- (pState) => isType("regular")(pState) && !pState.statemachine,
21
- );
22
- pStateMachine.historyStates = pStateMachine.states.filter(isType("history"));
23
- pStateMachine.deepHistoryStates = pStateMachine.states.filter(
24
- isType("deephistory"),
25
- );
26
- pStateMachine.choiceStates = pStateMachine.states.filter(isType("choice"));
27
- pStateMachine.forkjoinStates = pStateMachine.states.filter(
28
- isOneOfTypes(["fork", "join", "forkjoin"]),
29
- );
30
- pStateMachine.junctionStates = pStateMachine.states.filter(
31
- isType("junction"),
32
- );
33
- pStateMachine.terminateStates = pStateMachine.states.filter(
34
- isType("terminate"),
35
- );
36
- pStateMachine.finalStates = pStateMachine.states.filter(isType("final"));
37
- pStateMachine.compositeStates = pStateMachine.states.filter(
38
- (pState) => pState.statemachine,
39
- );
40
- return pStateMachine;
41
- }
42
- export default function renderDotFromAST(pStateMachine) {
43
- return Handlebars.templates["dot.template.hbs"](pStateMachine);
44
- }
@@ -1,119 +0,0 @@
1
- import utl from "./utl.mjs";
2
- function isType(pString) {
3
- return (pState) => pState.type === pString;
4
- }
5
- function isOneOfTypes(pStringArray) {
6
- return (pState) => pStringArray.includes(pState.type);
7
- }
8
- function setLabel(pState) {
9
- const lState = structuredClone(pState);
10
- lState.label = pState.label ?? pState.name;
11
- return lState;
12
- }
13
- function nameNote(pState) {
14
- if (pState.note) {
15
- return {
16
- noteName: `note_${pState.name}`,
17
- ...pState,
18
- };
19
- }
20
- return pState;
21
- }
22
- function classifyState(pState) {
23
- const lState = { ...pState };
24
- const lClasses = ["state", pState.type];
25
- if (pState.class) {
26
- lClasses.push(pState.class.trim().replace(/[ ]{2,}/g, " "));
27
- }
28
- lState.class = lClasses.join(" ");
29
- return lState;
30
- }
31
- function formatActionType(pString) {
32
- return pString === "activity" ? "" : `${pString}/ `;
33
- }
34
- function flattenActions(pState) {
35
- if (pState.actions) {
36
- return {
37
- ...pState,
38
- actionStrings: pState.actions.map(
39
- (pAction) => `${formatActionType(pAction.type)}${pAction.body}`,
40
- ),
41
- };
42
- }
43
- return pState;
44
- }
45
- function flattenNote(pState) {
46
- if (pState.note) {
47
- return {
48
- ...pState,
49
- noteFlattened: pState.note.join(""),
50
- };
51
- }
52
- return pState;
53
- }
54
- function recolor(pNodeAttributes) {
55
- return (pState) => {
56
- const lNodeColor = (pNodeAttributes || []).find(
57
- (pAttribute) => pAttribute.name === "color",
58
- )?.value;
59
- if (
60
- lNodeColor &&
61
- !pState.color &&
62
- isOneOfTypes([
63
- "initial",
64
- "fork",
65
- "join",
66
- "junction",
67
- "forkjoin",
68
- "final",
69
- ])(pState)
70
- ) {
71
- pState.color = lNodeColor;
72
- }
73
- return pState;
74
- };
75
- }
76
- function escapeStateStrings(pState) {
77
- if (pState.note) {
78
- return {
79
- ...pState,
80
- note: pState.note.map(utl.escapeString),
81
- };
82
- }
83
- return pState;
84
- }
85
- function tipForkJoinStates(pDirection) {
86
- return (pState) => {
87
- if (isOneOfTypes(["fork", "join", "forkjoin"])(pState)) {
88
- return {
89
- sizingExtras: utl.isVertical(pDirection) ? " height=0.1" : " width=0.1",
90
- ...pState,
91
- };
92
- }
93
- return pState;
94
- };
95
- }
96
- function flagParallelChildren(pState) {
97
- if (pState.type === "parallel" && pState.statemachine?.states) {
98
- pState.statemachine.states = pState.statemachine.states.map(
99
- (pChildState) =>
100
- isType("regular")(pChildState)
101
- ? { ...pChildState, parentIsParallel: true }
102
- : pChildState,
103
- );
104
- }
105
- return pState;
106
- }
107
- export default {
108
- isType,
109
- isOneOfTypes,
110
- setLabel,
111
- classifyState,
112
- nameNote,
113
- flattenActions,
114
- flattenNote,
115
- recolor,
116
- escapeStateStrings,
117
- tipForkJoinStates,
118
- flagParallelChildren,
119
- };
@@ -1,45 +0,0 @@
1
- import utl from "./utl.mjs";
2
- function escapeTransitionStrings(pTransition) {
3
- const lTransition = { ...pTransition };
4
- if (lTransition.note) {
5
- lTransition.note = lTransition.note.map(utl.escapeString);
6
- }
7
- lTransition.label = utl.escapeLabelString(lTransition.label ?? " ");
8
- return lTransition;
9
- }
10
- function addPorts(pDirection) {
11
- return (pTransition) => {
12
- let lAdditionalAttributes = {};
13
- if (pTransition.isCompositeSelf) {
14
- if (utl.isVertical(pDirection)) {
15
- lAdditionalAttributes = {
16
- tailportflags: `tailport="e" headport="e"`,
17
- headportflags: `tailport="w"`,
18
- };
19
- } else if (pTransition.hasParent) {
20
- lAdditionalAttributes = {
21
- tailportflags: `tailport="n" headport="n"`,
22
- headportflags: `tailport="s"`,
23
- };
24
- } else {
25
- lAdditionalAttributes = {
26
- tailportflags: `tailport="s" headport="s"`,
27
- headportflags: `tailport="n"`,
28
- };
29
- }
30
- }
31
- return { ...pTransition, ...lAdditionalAttributes };
32
- };
33
- }
34
- function classifyTransition(pTransition) {
35
- const lClasses = ["transition"];
36
- if (pTransition.type) {
37
- lClasses.push(pTransition.type);
38
- }
39
- if (pTransition.class) {
40
- lClasses.push(pTransition.class.trim().replace(/[ ]{2,}/g, " "));
41
- }
42
- pTransition.class = lClasses.join(" ");
43
- return pTransition;
44
- }
45
- export default { escapeTransitionStrings, addPorts, classifyTransition };
@@ -1,60 +0,0 @@
1
- const GENERIC_GRAPH_ATTRIBUTES = [
2
- { name: "fontname", value: '"Helvetica"' },
3
- { name: "fontsize", value: "12" },
4
- { name: "penwidth", value: "2.0" },
5
- ];
6
- const GRAPH_ATTRIBUTES = {
7
- dot: [
8
- { name: "splines", value: "true" },
9
- { name: "ordering", value: "out" },
10
- { name: "compound", value: "true" },
11
- { name: "overlap", value: "scale" },
12
- { name: "nodesep", value: "0.3" },
13
- { name: "ranksep", value: "0.1" },
14
- ],
15
- fdp: [{ name: "K", value: "0.9" }],
16
- osage: [{ name: "pack", value: "42" }],
17
- neato: [{ name: "epsilon", value: "0.9" }],
18
- };
19
- const DIRECTION_ATTRIBUTES = {
20
- "bottom-top": [{ name: "rankdir", value: "BT" }],
21
- "left-right": [{ name: "rankdir", value: "LR" }],
22
- "right-left": [{ name: "rankdir", value: "RL" }],
23
- };
24
- const NODE_ATTRIBUTES = [
25
- { name: "shape", value: "plaintext" },
26
- { name: "style", value: "filled" },
27
- { name: "fillcolor", value: '"#FFFFFF01"' },
28
- { name: "fontname", value: "Helvetica" },
29
- { name: "fontsize", value: 12 },
30
- { name: "penwidth", value: "2.0" },
31
- ];
32
- const EDGE_ATTRIBUTES = [
33
- { name: "fontname", value: "Helvetica" },
34
- { name: "fontsize", value: 10 },
35
- ];
36
- function toNameValueString(pAttribute) {
37
- return `${pAttribute.name}=${pAttribute.value}`;
38
- }
39
- export function buildGraphAttributes(pEngine, pDirection, pDotGraphAttributes) {
40
- return GENERIC_GRAPH_ATTRIBUTES.concat(GRAPH_ATTRIBUTES[pEngine] || [])
41
- .concat(DIRECTION_ATTRIBUTES[pDirection] || [])
42
- .concat(pDotGraphAttributes || [])
43
- .map(toNameValueString)
44
- .join(" ");
45
- }
46
- export function buildNodeAttributes(pDotNodeAttributes) {
47
- return NODE_ATTRIBUTES.concat(pDotNodeAttributes || [])
48
- .map(toNameValueString)
49
- .join(" ");
50
- }
51
- export function buildEdgeAttributes(pDotEdgeAttributes) {
52
- return EDGE_ATTRIBUTES.concat(pDotEdgeAttributes || [])
53
- .map(toNameValueString)
54
- .join(" ");
55
- }
56
- export default {
57
- buildGraphAttributes,
58
- buildNodeAttributes,
59
- buildEdgeAttributes,
60
- };