state-machine-cat 12.0.15 → 12.0.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.
- package/dist/cli/actions.mjs +1 -1
- package/dist/cli/normalize.mjs +3 -3
- package/dist/options.mjs +3 -2
- package/dist/parse/parser-helpers.mjs +13 -5
- package/dist/parse/scxml/index.mjs +1 -3
- package/dist/parse/smcat/smcat-parser.mjs +3 -1
- package/dist/parse/smcat-ast.schema.mjs +3 -0
- package/dist/render/dot/dot.states.template.cjs +1 -1
- package/dist/render/dot/dot.template.cjs +1 -1
- package/dist/render/dot/index.mjs +6 -8
- package/dist/render/dot/state-transformers.mjs +3 -7
- package/dist/render/dot/transition-transformers.mjs +1 -3
- package/dist/render/dot/utl.mjs +1 -1
- package/dist/render/index-node.mjs +3 -1
- package/dist/render/index.mjs +1 -1
- package/dist/render/ndot/attributebuilder.mjs +60 -0
- package/dist/render/ndot/index.mjs +243 -0
- package/dist/render/ndot/utl.mjs +77 -0
- package/dist/render/scjson/make-valid-event-names.mjs +1 -1
- package/dist/render/smcat.mjs +114 -0
- package/dist/state-machine-model.mjs +4 -4
- package/dist/version.mjs +1 -1
- package/package.json +3 -4
- package/types/state-machine-cat.d.mts +4 -0
- package/dist/render/dot/counter.mjs +0 -16
- package/dist/render/smcat/index.mjs +0 -75
- package/dist/render/smcat/smcat.template.cjs +0 -1
package/dist/cli/actions.mjs
CHANGED
|
@@ -64,7 +64,7 @@ export function transform(pOptions) {
|
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
export function formatError(pError) {
|
|
67
|
-
if (
|
|
67
|
+
if (pError.location) {
|
|
68
68
|
return `\n syntax error on line ${pError.location.start.line}, column ${pError.location.start.column}:\n ${pError.message}\n\n`;
|
|
69
69
|
}
|
|
70
70
|
return pError.message;
|
package/dist/cli/normalize.mjs
CHANGED
|
@@ -49,7 +49,7 @@ function deriveOutputFromInput(pInputFrom, pOutputType) {
|
|
|
49
49
|
.concat(lExtension);
|
|
50
50
|
}
|
|
51
51
|
function determineOutputTo(pOutputTo, pInputFrom, pOutputType) {
|
|
52
|
-
return pOutputTo
|
|
52
|
+
return pOutputTo ?? deriveOutputFromInput(pInputFrom, pOutputType);
|
|
53
53
|
}
|
|
54
54
|
function determineInputType(pInputFrom, pInputType) {
|
|
55
55
|
if (pInputType) {
|
|
@@ -75,12 +75,12 @@ function determineOutputType(pOutputTo, pOutputType) {
|
|
|
75
75
|
return options.getAllowedValues().outputType.default;
|
|
76
76
|
}
|
|
77
77
|
function determineParameter(pOptions, pParameter) {
|
|
78
|
-
return Object.
|
|
78
|
+
return Object.hasOwn(pOptions, pParameter)
|
|
79
79
|
? pOptions[pParameter]
|
|
80
80
|
: options.getAllowedValues()[pParameter].default;
|
|
81
81
|
}
|
|
82
82
|
function determineDotAttributes(pOptions, pDotAttributes) {
|
|
83
|
-
return
|
|
83
|
+
return pOptions?.[pDotAttributes] &&
|
|
84
84
|
typeof pOptions[pDotAttributes] === "string"
|
|
85
85
|
? parseAttributes(pOptions[pDotAttributes])
|
|
86
86
|
: [];
|
package/dist/options.mjs
CHANGED
|
@@ -8,6 +8,7 @@ const ALLOWED_VALUES = Object.freeze({
|
|
|
8
8
|
values: [
|
|
9
9
|
{ name: "ast" },
|
|
10
10
|
{ name: "dot" },
|
|
11
|
+
{ name: "ndot" },
|
|
11
12
|
{ name: "eps" },
|
|
12
13
|
{ name: "json" },
|
|
13
14
|
{ name: "oldeps" },
|
|
@@ -49,10 +50,10 @@ const ALLOWED_VALUES = Object.freeze({
|
|
|
49
50
|
values: [{ name: true }, { name: false }],
|
|
50
51
|
},
|
|
51
52
|
});
|
|
52
|
-
function getOptionValue(pOptions, pOptionName) {
|
|
53
|
+
export function getOptionValue(pOptions, pOptionName) {
|
|
53
54
|
return pOptions?.[pOptionName] ?? ALLOWED_VALUES[pOptionName].default;
|
|
54
55
|
}
|
|
55
|
-
function getAllowedValues() {
|
|
56
|
+
export function getAllowedValues() {
|
|
56
57
|
return ALLOWED_VALUES;
|
|
57
58
|
}
|
|
58
59
|
export default {
|
|
@@ -2,6 +2,7 @@ import StateMachineModel from "../state-machine-model.mjs";
|
|
|
2
2
|
const TRIGGER_RE_AS_A_STRING =
|
|
3
3
|
"^(entry|activity|exit)\\s*/\\s*([^\\n$]*)(\\n|$)";
|
|
4
4
|
const TRIGGER_RE = new RegExp(TRIGGER_RE_AS_A_STRING);
|
|
5
|
+
let gTransitionIdHwm = 0;
|
|
5
6
|
function stateExists(pKnownStateNames, pName) {
|
|
6
7
|
return pKnownStateNames.includes(pName);
|
|
7
8
|
}
|
|
@@ -60,9 +61,8 @@ function getAlreadyDeclaredStates(pStateMachine) {
|
|
|
60
61
|
);
|
|
61
62
|
}
|
|
62
63
|
function extractUndeclaredStates(pStateMachine, pKnownStateNames) {
|
|
63
|
-
pKnownStateNames =
|
|
64
|
-
|
|
65
|
-
: getAlreadyDeclaredStates(pStateMachine);
|
|
64
|
+
pKnownStateNames =
|
|
65
|
+
pKnownStateNames ?? getAlreadyDeclaredStates(pStateMachine);
|
|
66
66
|
pStateMachine.states = pStateMachine?.states ?? [];
|
|
67
67
|
const lTransitions = pStateMachine?.transitions ?? [];
|
|
68
68
|
pStateMachine.states.filter(isComposite).forEach((pState) => {
|
|
@@ -135,7 +135,7 @@ function uniq(pArray, pEqualFunction) {
|
|
|
135
135
|
function parseTransitionExpression(pString) {
|
|
136
136
|
const lTransitionExpressionRe = /([^[/]+)?(\[[^\]]+\])?[^/]*(\/.+)?/;
|
|
137
137
|
const lReturnValue = {};
|
|
138
|
-
const lMatchResult =
|
|
138
|
+
const lMatchResult = lTransitionExpressionRe.exec(pString);
|
|
139
139
|
const lEventPos = 1;
|
|
140
140
|
const lConditionPos = 2;
|
|
141
141
|
const lActionPos = 3;
|
|
@@ -161,7 +161,7 @@ function setIfNotEmpty(pObject, pProperty, pValue) {
|
|
|
161
161
|
setIf(pObject, pProperty, pValue, (pX) => pX && pX.length > 0);
|
|
162
162
|
}
|
|
163
163
|
function extractAction(pActivityCandidate) {
|
|
164
|
-
const lMatch =
|
|
164
|
+
const lMatch = TRIGGER_RE.exec(pActivityCandidate);
|
|
165
165
|
const lTypePos = 1;
|
|
166
166
|
const lBodyPos = 2;
|
|
167
167
|
if (lMatch) {
|
|
@@ -181,6 +181,12 @@ function extractActions(pString) {
|
|
|
181
181
|
.map((pActivityCandidate) => pActivityCandidate.trim())
|
|
182
182
|
.map(extractAction);
|
|
183
183
|
}
|
|
184
|
+
function nextTransitionId() {
|
|
185
|
+
return ++gTransitionIdHwm;
|
|
186
|
+
}
|
|
187
|
+
function resetTransitionId() {
|
|
188
|
+
gTransitionIdHwm = 0;
|
|
189
|
+
}
|
|
184
190
|
export default {
|
|
185
191
|
initState,
|
|
186
192
|
extractUndeclaredStates,
|
|
@@ -192,4 +198,6 @@ export default {
|
|
|
192
198
|
extractActions,
|
|
193
199
|
setIf,
|
|
194
200
|
setIfNotEmpty,
|
|
201
|
+
nextTransitionId,
|
|
202
|
+
resetTransitionId,
|
|
195
203
|
};
|
|
@@ -112,9 +112,7 @@ function reduceTransition(pState) {
|
|
|
112
112
|
}
|
|
113
113
|
function extractTransitions(pStates) {
|
|
114
114
|
return pStates
|
|
115
|
-
.filter((pState) =>
|
|
116
|
-
Object.prototype.hasOwnProperty.call(pState, "transition"),
|
|
117
|
-
)
|
|
115
|
+
.filter((pState) => Object.hasOwn(pState, "transition"))
|
|
118
116
|
.reduce((pAllTransitions, pThisState) => {
|
|
119
117
|
const lTransitionAsArray = castArray(pThisState.transition);
|
|
120
118
|
return pAllTransitions.concat(
|
|
@@ -321,6 +321,7 @@ function peg$parse(input, options) {
|
|
|
321
321
|
var peg$e78 = peg$classExpectation(["\r", "\n"], true, false);
|
|
322
322
|
var peg$e79 = peg$otherExpectation("comment");
|
|
323
323
|
var peg$f0 = function (statemachine) {
|
|
324
|
+
parserHelpers.resetTransitionId();
|
|
324
325
|
statemachine.states = parserHelpers.extractUndeclaredStates(statemachine);
|
|
325
326
|
return parserHelpers.classifyForkJoins(statemachine);
|
|
326
327
|
};
|
|
@@ -375,7 +376,7 @@ function peg$parse(input, options) {
|
|
|
375
376
|
);
|
|
376
377
|
parserHelpers.setIf(lState, "statemachine", statemachine);
|
|
377
378
|
parserHelpers.setIfNotEmpty(lState, "note", notes);
|
|
378
|
-
if (
|
|
379
|
+
if (actions) {
|
|
379
380
|
parserHelpers.setIfNotEmpty(
|
|
380
381
|
lState,
|
|
381
382
|
"actions",
|
|
@@ -430,6 +431,7 @@ function peg$parse(input, options) {
|
|
|
430
431
|
),
|
|
431
432
|
);
|
|
432
433
|
parserHelpers.setIfNotEmpty(trans, "note", notes);
|
|
434
|
+
trans.id = parserHelpers.nextTransitionId();
|
|
433
435
|
return trans;
|
|
434
436
|
};
|
|
435
437
|
var peg$f20 = function (from_, to) {
|
|
@@ -1 +1 @@
|
|
|
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,t){var o=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},r="",c=null!=(c=o(e,"nestedExternalSelfTransitions")||(null!=n?o(n,"nestedExternalSelfTransitions"):n))?c:l.hooks.helperMissing,t={name:"nestedExternalSelfTransitions",hash:{},fn:l.program(2,t,0),inverse:l.noop,data:t,loc:{start:{line:2,column:2},end:{line:4,column:36}}},c="function"==typeof c?c.call(null!=n?n:l.nullContext||{},t):c;return null!=(c=o(e,"nestedExternalSelfTransitions")?c:l.hooks.blockHelperMissing.call(n,c,t))&&(r+=c),r},2:function(l,n,e,a,t){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,t){var o,r,c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(o=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:i)==u?r.call(c,{name:"name",hash:{},data:t,loc:{start:{line:7,column:3},end:{line:7,column:13}}}):r)?o:"")+'" [shape=circle style=filled class="'+(null!=(o=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:i)==u?r.call(c,{name:"class",hash:{},data:t,loc:{start:{line:7,column:49},end:{line:7,column:60}}}):r)?o:"")+'" '+(null!=(o=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(5,t,0),inverse:l.program(7,t,0),data:t,loc:{start:{line:7,column:62},end:{line:7,column:150}}}))?o:"")+(null!=(o=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,t,0),inverse:l.noop,data:t,loc:{start:{line:7,column:150},end:{line:7,column:184}}}))?o:"")+'fixedsize=true height=0.15 label=""]\n'},5:function(l,n,e,a,t){var o,r,c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="function",l=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return'color="'+(null!=(o=typeof(r=null!=(r=l(e,"color")||(null!=n?l(n,"color"):n))?r:i)==u?r.call(c,{name:"color",hash:{},data:t,loc:{start:{line:7,column:82},end:{line:7,column:93}}}):r)?o:"")+'" fillcolor="'+(null!=(o=typeof(r=null!=(r=l(e,"color")||(null!=n?l(n,"color"):n))?r:i)==u?r.call(c,{name:"color",hash:{},data:t,loc:{start:{line:7,column:106},end:{line:7,column:117}}}):r)?o:"")+'" '},7:function(l,n,e,a,t){return"fillcolor=black "},9:function(l,n,e,a,t){return"penwidth=3.0 "},11:function(l,n,e,a,t){var o=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,c="function",i=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},u=' "'+(null!=(m=typeof(s=null!=(s=i(e,"name")||(null!=n?i(n,"name"):n))?s:r)==c?s.call(o,{name:"name",hash:{},data:t,loc:{start:{line:10,column:3},end:{line:10,column:13}}}):s)?m:"")+'" [margin=0 class="'+(null!=(m=typeof(s=null!=(s=i(e,"class")||(null!=n?i(n,"class"):n))?s:r)==c?s.call(o,{name:"class",hash:{},data:t,loc:{start:{line:10,column:32},end:{line:10,column:43}}}):s)?m:"")+'" '+(null!=(m=i(e,"if").call(o,null!=n?i(n,"color"):n,{name:"if",hash:{},fn:l.program(12,t,0),inverse:l.noop,data:t,loc:{start:{line:10,column:45},end:{line:10,column:85}}}))?m:"")+(null!=(m=i(e,"if").call(o,null!=n?i(n,"active"):n,{name:"if",hash:{},fn:l.program(14,t,0),inverse:l.noop,data:t,loc:{start:{line:10,column:85},end:{line:10,column:134}}}))?m:"")+'label= < \n <table align="center" cellborder="0" border="2" style="rounded" width="48">\n <tr><td width="48"'+(null!=(m=i(e,"if").call(o,null!=n?i(n,"actionStrings"):n,{name:"if",hash:{},fn:l.program(16,t,0),inverse:l.program(18,t,0),data:t,loc:{start:{line:12,column:24},end:{line:12,column:92}}}))?m:"")+">"+(null!=(m=i(e,"if").call(o,null!=n?i(n,"active"):n,{name:"if",hash:{},fn:l.program(20,t,0),inverse:l.program(22,t,0),data:t,loc:{start:{line:12,column:93},end:{line:12,column:147}}}))?m:"")+"</td></tr>\n",s=null!=(s=i(e,"actionStrings")||(null!=n?i(n,"actionStrings"):n))?s:r,r={name:"actionStrings",hash:{},fn:l.program(24,t,0),inverse:l.noop,data:t,loc:{start:{line:13,column:6},end:{line:16,column:24}}},m=typeof s==c?s.call(o,r):s;return null!=(m=i(e,"actionStrings")?m:l.hooks.blockHelperMissing.call(n,m,r))&&(u+=m),u+" </table>\n >]\n"},12:function(l,n,e,a,t){var o=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return'color="'+(null!=(o="function"==typeof(e=null!=(e=o(e,"color")||(null!=n?o(n,"color"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"color",hash:{},data:t,loc:{start:{line:10,column:65},end:{line:10,column:76}}}):e)?o:"")+'" '},14:function(l,n,e,a,t){return"peripheries=1 style=rounded "},16:function(l,n,e,a,t){return' cellpadding="2"'},18:function(l,n,e,a,t){return' cellpadding="7"'},20:function(l,n,e,a,t){var o=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return"<i>"+l.escapeExpression("function"==typeof(e=null!=(e=o(e,"label")||(null!=n?o(n,"label"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"label",hash:{},data:t,loc:{start:{line:12,column:110},end:{line:12,column:119}}}):e)+"</i>"},22:function(l,n,e,a,t){var o=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return l.escapeExpression("function"==typeof(e=null!=(e=o(e,"label")||(null!=n?o(n,"label"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"label",hash:{},data:t,loc:{start:{line:12,column:131},end:{line:12,column:140}}}):e)},24:function(l,n,e,a,t){var o=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return" "+(null!=(e=o(e,"if").call(null!=n?n:l.nullContext||{},t&&o(t,"first"),{name:"if",hash:{},fn:l.program(25,t,0),inverse:l.noop,data:t,loc:{start:{line:14,column:8},end:{line:14,column:34}}}))?e:"")+'\n <tr><td align="left" cellpadding="2">'+l.escapeExpression(l.lambda(n,n))+"</td></tr>\n"},25:function(l,n,e,a,t){return"<hr/>"},27:function(l,n,e,a,t){var o,r,c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(o=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:i)==u?r.call(c,{name:"name",hash:{},data:t,loc:{start:{line:21,column:3},end:{line:21,column:13}}}):r)?o:"")+'" [shape=circle class="'+(null!=(o=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:i)==u?r.call(c,{name:"class",hash:{},data:t,loc:{start:{line:21,column:36},end:{line:21,column:47}}}):r)?o:"")+'" '+(null!=(o=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(12,t,0),inverse:l.noop,data:t,loc:{start:{line:21,column:49},end:{line:21,column:89}}}))?o:"")+(null!=(o=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,t,0),inverse:l.noop,data:t,loc:{start:{line:21,column:89},end:{line:21,column:123}}}))?o:"")+'label="H"]\n'},29:function(l,n,e,a,t){var o,r,c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(o=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:i)==u?r.call(c,{name:"name",hash:{},data:t,loc:{start:{line:24,column:3},end:{line:24,column:13}}}):r)?o:"")+'" [shape=circle class="'+(null!=(o=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:i)==u?r.call(c,{name:"class",hash:{},data:t,loc:{start:{line:24,column:36},end:{line:24,column:47}}}):r)?o:"")+'" '+(null!=(o=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(12,t,0),inverse:l.noop,data:t,loc:{start:{line:24,column:49},end:{line:24,column:89}}}))?o:"")+(null!=(o=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,t,0),inverse:l.noop,data:t,loc:{start:{line:24,column:89},end:{line:24,column:123}}}))?o:"")+'label="H*"]\n'},31:function(l,n,e,a,t,o,r){var c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="function",s=l.hooks.blockHelperMissing,m=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},p=' "'+(null!=(d=typeof(f=null!=(f=m(e,"name")||(null!=n?m(n,"name"):n))?f:i)==u?f.call(c,{name:"name",hash:{},data:t,loc:{start:{line:27,column:3},end:{line:27,column:13}}}):f)?d:"")+'" [shape=diamond fixedsize=true width=0.35 height=0.35 fontsize=10 class="'+(null!=(d=typeof(f=null!=(f=m(e,"class")||(null!=n?m(n,"class"):n))?f:i)==u?f.call(c,{name:"class",hash:{},data:t,loc:{start:{line:27,column:87},end:{line:27,column:98}}}):f)?d:"")+'" '+(null!=(d=m(e,"if").call(c,null!=n?m(n,"color"):n,{name:"if",hash:{},fn:l.program(12,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:27,column:100},end:{line:27,column:140}}}))?d:"")+(null!=(d=m(e,"if").call(c,null!=n?m(n,"active"):n,{name:"if",hash:{},fn:l.program(9,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:27,column:140},end:{line:27,column:174}}}))?d:"")+'label=" "]\n "'+(null!=(d=typeof(f=null!=(f=m(e,"name")||(null!=n?m(n,"name"):n))?f:i)==u?f.call(c,{name:"name",hash:{},data:t,loc:{start:{line:28,column:3},end:{line:28,column:13}}}):f)?d:"")+'" -> "'+(null!=(d=typeof(f=null!=(f=m(e,"name")||(null!=n?m(n,"name"):n))?f:i)==u?f.call(c,{name:"name",hash:{},data:t,loc:{start:{line:28,column:19},end:{line:28,column:29}}}):f)?d:"")+'" [label=<',f=null!=(f=m(e,"actionStrings")||(null!=n?m(n,"actionStrings"):n))?f:i,h={name:"actionStrings",hash:{},fn:l.program(32,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:28,column:39},end:{line:28,column:156}}},d=typeof f==u?f.call(c,h):f;return null!=(d=m(e,"actionStrings")?d:s.call(n,d,h))&&(p+=d),p+='> color="#FFFFFF01"',f=null!=(f=m(e,"color")||(null!=n?m(n,"color"):n))?f:i,h={name:"color",hash:{},fn:l.program(41,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:28,column:175},end:{line:28,column:215}}},d=typeof f==u?f.call(c,h):f,null!=(d=m(e,"color")?d:s.call(n,d,h))&&(p+=d),p+' class="'+(null!=(d=typeof(f=null!=(f=m(e,"class")||(null!=n?m(n,"class"):n))?f:i)==u?f.call(c,{name:"class",hash:{},data:t,loc:{start:{line:28,column:223},end:{line:28,column:234}}}):f)?d:"")+'"];\n'},32:function(l,n,e,a,t,o,r){var c,n=null!=n?n:l.nullContext||{},i=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return(null!=(c=i(e,"if").call(n,t&&i(t,"first"),{name:"if",hash:{},fn:l.program(33,t,0,o,r),inverse:l.program(35,t,0,o,r),data:t,loc:{start:{line:28,column:57},end:{line:28,column:88}}}))?c:"")+(null!=(c=i(e,"if").call(n,null!=r[1]?i(r[1],"active"):r[1],{name:"if",hash:{},fn:l.program(37,t,0,o,r),inverse:l.program(39,t,0,o,r),data:t,loc:{start:{line:28,column:88},end:{line:28,column:137}}}))?c:"")},33:function(l,n,e,a,t){return""},35:function(l,n,e,a,t){return"\\n"},37:function(l,n,e,a,t){return"<i>"+l.escapeExpression(l.lambda(n,n))+"</i>"},39:function(l,n,e,a,t){return l.escapeExpression(l.lambda(n,n))},41:function(l,n,e,a,t){return' fontcolor="'+(null!=(l=l.lambda(n,n))?l:"")+'"'},43:function(l,n,e,a,t){var o,r,c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(o=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:i)==u?r.call(c,{name:"name",hash:{},data:t,loc:{start:{line:31,column:3},end:{line:31,column:13}}}):r)?o:"")+'" [shape=rect class="'+(null!=(o=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:i)==u?r.call(c,{name:"class",hash:{},data:t,loc:{start:{line:31,column:34},end:{line:31,column:45}}}):r)?o:"")+'" '+(null!=(o=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(5,t,0),inverse:l.program(7,t,0),data:t,loc:{start:{line:31,column:47},end:{line:31,column:135}}}))?o:"")+(null!=(o=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,t,0),inverse:l.noop,data:t,loc:{start:{line:31,column:135},end:{line:31,column:169}}}))?o:"")+'label=" " fixedsize=true style=filled '+(null!=(o=typeof(r=null!=(r=s(e,"sizingExtras")||(null!=n?s(n,"sizingExtras"):n))?r:i)==u?r.call(c,{name:"sizingExtras",hash:{},data:t,loc:{start:{line:31,column:207},end:{line:31,column:225}}}):r)?o:"")+"]\n"},45:function(l,n,e,a,t){var o,r,c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(o=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:i)==u?r.call(c,{name:"name",hash:{},data:t,loc:{start:{line:37,column:3},end:{line:37,column:13}}}):r)?o:"")+'" [label= < \n <table align="center" cellborder="0" border="0">\n <tr><td cellpadding="0"><font '+(null!=(o=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(12,t,0),inverse:l.noop,data:t,loc:{start:{line:39,column:38},end:{line:39,column:78}}}))?o:"")+'point-size="20">X</font></td></tr>\n <tr><td cellpadding="0"><font '+(null!=(o=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(46,t,0),inverse:l.noop,data:t,loc:{start:{line:40,column:38},end:{line:40,column:77}}}))?o:"")+">"+l.escapeExpression(typeof(r=null!=(r=s(e,"label")||(null!=n?s(n,"label"):n))?r:i)==u?r.call(c,{name:"label",hash:{},data:t,loc:{start:{line:40,column:78},end:{line:40,column:87}}}):r)+'</font></td></tr>\n </table>\n > class="'+(null!=(o=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:i)==u?r.call(c,{name:"class",hash:{},data:t,loc:{start:{line:42,column:13},end:{line:42,column:24}}}):r)?o:"")+'"]\n'},46:function(l,n,e,a,t){var o=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return'color="'+(null!=(o="function"==typeof(e=null!=(e=o(e,"color")||(null!=n?o(n,"color"):n))?e:l.hooks.helperMissing)?e.call(null!=n?n:l.nullContext||{},{name:"color",hash:{},data:t,loc:{start:{line:40,column:58},end:{line:40,column:69}}}):e)?o:"")+'"'},48:function(l,n,e,a,t){var o,r,c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="function",s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(o=typeof(r=null!=(r=s(e,"name")||(null!=n?s(n,"name"):n))?r:i)==u?r.call(c,{name:"name",hash:{},data:t,loc:{start:{line:45,column:3},end:{line:45,column:13}}}):r)?o:"")+'" [shape=circle style=filled class="'+(null!=(o=typeof(r=null!=(r=s(e,"class")||(null!=n?s(n,"class"):n))?r:i)==u?r.call(c,{name:"class",hash:{},data:t,loc:{start:{line:45,column:49},end:{line:45,column:60}}}):r)?o:"")+'" '+(null!=(o=s(e,"if").call(c,null!=n?s(n,"color"):n,{name:"if",hash:{},fn:l.program(5,t,0),inverse:l.program(7,t,0),data:t,loc:{start:{line:45,column:62},end:{line:45,column:150}}}))?o:"")+"fixedsize=true height=0.15 peripheries=2 "+(null!=(o=s(e,"if").call(c,null!=n?s(n,"active"):n,{name:"if",hash:{},fn:l.program(9,t,0),inverse:l.noop,data:t,loc:{start:{line:45,column:191},end:{line:45,column:225}}}))?o:"")+'label=""]\n'},50:function(l,n,e,a,t){var o=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,c="function",i=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},u=' subgraph "cluster_'+(null!=(p=typeof(s=null!=(s=i(e,"name")||(null!=n?i(n,"name"):n))?s:r)==c?s.call(o,{name:"name",hash:{},data:t,loc:{start:{line:48,column:20},end:{line:48,column:30}}}):s)?p:"")+'" {\n class="'+(null!=(p=typeof(s=null!=(s=i(e,"class")||(null!=n?i(n,"class"):n))?s:r)==c?s.call(o,{name:"class",hash:{},data:t,loc:{start:{line:49,column:11},end:{line:49,column:22}}}):s)?p:"")+'" '+(null!=(p=i(e,"if").call(o,null!=n?i(n,"color"):n,{name:"if",hash:{},fn:l.program(12,t,0),inverse:l.noop,data:t,loc:{start:{line:49,column:24},end:{line:49,column:64}}}))?p:"")+'label= <\n <table cellborder="0" border="0">\n <tr><td>'+(null!=(p=i(e,"if").call(o,null!=n?i(n,"active"):n,{name:"if",hash:{},fn:l.program(20,t,0),inverse:l.program(22,t,0),data:t,loc:{start:{line:51,column:14},end:{line:51,column:68}}}))?p:"")+"</td></tr>\n",s=null!=(s=i(e,"actionStrings")||(null!=n?i(n,"actionStrings"):n))?s:r,m={name:"actionStrings",hash:{},fn:l.program(51,t,0),inverse:l.noop,data:t,loc:{start:{line:52,column:6},end:{line:55,column:24}}},p=typeof s==c?s.call(o,m):s;return null!=(p=i(e,"actionStrings")?p:l.hooks.blockHelperMissing.call(n,p,m))&&(u+=p),u+" </table>\n > "+(null!=(p=i(e,"if").call(o,null!=n?i(n,"parentIsParallel"):n,{name:"if",hash:{},fn:l.program(53,t,0),inverse:l.program(55,t,0),data:t,loc:{start:{line:57,column:6},end:{line:57,column:137}}}))?p:"")+'\n "'+(null!=(p=typeof(s=null!=(s=i(e,"name")||(null!=n?i(n,"name"):n))?s:r)==c?s.call(o,{name:"name",hash:{},data:t,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=(i(e,"stateSection")||n&&i(n,"stateSection")||r).call(o,null!=n?i(n,"statemachine"):n,{name:"stateSection",hash:{},fn:l.program(33,t,0),inverse:l.noop,data:t,loc:{start:{line:59,column:4},end:{line:59,column:51}}}))?p:"")+"\n }\n"},51:function(l,n,e,a,t){var o=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return" "+(null!=(e=o(e,"if").call(null!=n?n:l.nullContext||{},t&&o(t,"first"),{name:"if",hash:{},fn:l.program(25,t,0),inverse:l.noop,data:t,loc:{start:{line:53,column:8},end:{line:53,column:34}}}))?e:"")+'\n <tr><td align="left">'+l.escapeExpression(l.lambda(n,n))+"</td></tr>\n"},53:function(l,n,e,a,t){return'style="dashed" penwidth=1'},55:function(l,n,e,a,t){var o=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return"style=rounded "+(null!=(e=o(e,"if").call(null!=n?n:l.nullContext||{},null!=n?o(n,"active"):n,{name:"if",hash:{},fn:l.program(56,t,0),inverse:l.program(58,t,0),data:t,loc:{start:{line:57,column:77},end:{line:57,column:130}}}))?e:"")},56:function(l,n,e,a,t){return"penwidth=3.0"},58:function(l,n,e,a,t){return"penwidth=2.0"},60:function(l,n,e,a,t,o,r){var c=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},i="",u=null!=(u=c(e,"noteName")||(null!=n?c(n,"noteName"):n))?u:l.hooks.helperMissing,o={name:"noteName",hash:{},fn:l.program(61,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:63,column:4},end:{line:66,column:17}}},r="function"==typeof u?u.call(null!=n?n:l.nullContext||{},o):u;return null!=(r=c(e,"noteName")?r:l.hooks.blockHelperMissing.call(n,r,o))&&(i+=r),i},61:function(l,n,e,a,t,o,r){var c,i=l.lambda,l=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' "'+(null!=(c=i(n,n))?c:"")+'" [color=black fontcolor=black label="'+(null!=(c=i(null!=r[1]?l(r[1],"noteFlattened"):r[1],n))?c:"")+'" shape=note fontsize=10 fillcolor="#ffffcc" penwidth=1.0]\n "'+(null!=(c=i(null!=r[1]?l(r[1],"name"):r[1],n))?c:"")+'" -> "'+(null!=(c=i(n,n))?c:"")+'" [style=dashed arrowtail=none arrowhead=none]\n'},compiler:[8,">= 4.3.0"],main:function(l,n,e,a,t,o,r){var c=null!=n?n:l.nullContext||{},i=l.hooks.helperMissing,u="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:i,h={name:"compositeStates",hash:{},fn:l.program(1,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:1,column:0},end:{line:5,column:20}}},d=typeof f==u?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:i,h={name:"initialStates",hash:{},fn:l.program(4,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:6,column:0},end:{line:8,column:18}}},d=typeof f==u?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:i,h={name:"regularStates",hash:{},fn:l.program(11,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:9,column:0},end:{line:19,column:18}}},d=typeof f==u?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:i,h={name:"historyStates",hash:{},fn:l.program(27,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:20,column:0},end:{line:22,column:18}}},d=typeof f==u?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:i,h={name:"deepHistoryStates",hash:{},fn:l.program(29,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:23,column:0},end:{line:25,column:22}}},d=typeof f==u?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:i,h={name:"choiceStates",hash:{},fn:l.program(31,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:26,column:0},end:{line:29,column:17}}},d=typeof f==u?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:i,h={name:"forkjoinStates",hash:{},fn:l.program(43,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:30,column:0},end:{line:32,column:19}}},d=typeof f==u?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:i,h={name:"junctionStates",hash:{},fn:l.program(4,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:33,column:0},end:{line:35,column:19}}},d=typeof f==u?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:i,h={name:"terminateStates",hash:{},fn:l.program(45,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:36,column:0},end:{line:43,column:20}}},d=typeof f==u?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:i,h={name:"finalStates",hash:{},fn:l.program(48,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:44,column:0},end:{line:46,column:16}}},d=typeof f==u?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:i,h={name:"compositeStates",hash:{},fn:l.program(50,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:47,column:0},end:{line:61,column:20}}},d=typeof f==u?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:i,h={name:"states",hash:{},fn:l.program(60,t,0,o,r),inverse:l.noop,data:t,loc:{start:{line:62,column:0},end:{line:67,column:11}}},d=typeof f==u?f.call(c,h):f,null!=(d=m(e,"states")?d:s.call(n,d,h))&&(p+=d),p},useData:!0,useDepths:!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 +1 @@
|
|
|
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,a,t,r){var u=null!=n?n:l.nullContext||{},c=l.hooks.helperMissing,s="function",i=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,a,0,t,r),data:a,loc:{start:{line:9,column:2},end:{line:26,column:15}}},d=typeof f==s?f.call(u,h):f;return null!=(d=m(o,"noteName")?d:i.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(19,a,0,t,r),inverse:l.noop,data:a,loc:{start:{line:27,column:2},end:{line:37,column:15}}},d=typeof f==s?f.call(u,h):f,null!=(d=m(o,"noteName")?d:i.call(n,d,h))&&(p+=d),p},2:function(l,n,o,e,a){var t=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",c=l.hooks.blockHelperMissing,s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},i="",m=null!=(m=s(o,"isCompositeSelf")||(null!=n?s(n,"isCompositeSelf"):n))?m:r,p={name:"isCompositeSelf",hash:{},fn:l.noop,inverse:l.program(3,a,0),data:a,loc:{start:{line:10,column:4},end:{line:16,column:24}}},f=typeof m==u?m.call(t,p):m;return null!=(f=s(o,"isCompositeSelf")?f:c.call(n,f,p))&&(i+=f),m=null!=(m=s(o,"isCompositeSelf")||(null!=n?s(n,"isCompositeSelf"):n))?m:r,p={name:"isCompositeSelf",hash:{},fn:l.program(14,a,0),inverse:l.noop,data:a,loc:{start:{line:17,column:4},end:{line:25,column:24}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"isCompositeSelf")?f:c.call(n,f,p))&&(i+=f),i},3:function(l,n,o,e,a){var t=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",c=l.hooks.blockHelperMissing,s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},i=' "'+(null!=(f=typeof(m=null!=(m=s(o,"from")||(null!=n?s(n,"from"):n))?m:r)==u?m.call(t,{name:"from",hash:{},data:a,loc:{start:{line:11,column:5},end:{line:11,column:15}}}):m)?f:"")+'" -> "'+(null!=(f=typeof(m=null!=(m=s(o,"to")||(null!=n?s(n,"to"):n))?m:r)==u?m.call(t,{name:"to",hash:{},data:a,loc:{start:{line:11,column:21},end:{line:11,column:29}}}):m)?f:"")+'" [label="',m=null!=(m=s(o,"label")||(null!=n?s(n,"label"):n))?m:r,p={name:"label",hash:{},fn:l.noop,inverse:l.program(4,a,0),data:a,loc:{start:{line:11,column:39},end:{line:11,column:60}}},f=typeof m==u?m.call(t,p):m;return null!=(f=s(o,"label")?f:c.call(n,f,p))&&(i+=f),i+=(null!=(f=typeof(m=null!=(m=s(o,"label")||(null!=n?s(n,"label"):n))?m:r)==u?m.call(t,{name:"label",hash:{},data:a,loc:{start:{line:11,column:60},end:{line:11,column:71}}}):m)?f:"")+'"',m=null!=(m=s(o,"fromComposite")||(null!=n?s(n,"fromComposite"):n))?m:r,p={name:"fromComposite",hash:{},fn:l.program(6,a,0),inverse:l.noop,data:a,loc:{start:{line:12,column:28},end:{line:12,column:92}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"fromComposite")?f:c.call(n,f,p))&&(i+=f),m=null!=(m=s(o,"toComposite")||(null!=n?s(n,"toComposite"):n))?m:r,p={name:"toComposite",hash:{},fn:l.program(8,a,0),inverse:l.noop,data:a,loc:{start:{line:13,column:28},end:{line:13,column:86}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"toComposite")?f:c.call(n,f,p))&&(i+=f),m=null!=(m=s(o,"color")||(null!=n?s(n,"color"):n))?m:r,p={name:"color",hash:{},fn:l.program(10,a,0),inverse:l.noop,data:a,loc:{start:{line:14,column:28},end:{line:14,column:85}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"color")?f:c.call(n,f,p))&&(i+=f),m=null!=(m=s(o,"width")||(null!=n?s(n,"width"):n))?m:r,p={name:"width",hash:{},fn:l.program(12,a,0),inverse:l.noop,data:a,loc:{start:{line:15,column:28},end:{line:15,column:68}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"width")?f:c.call(n,f,p))&&(i+=f),i+' class="'+(null!=(f=typeof(m=null!=(m=s(o,"class")||(null!=n?s(n,"class"):n))?m:r)==u?m.call(t,{name:"class",hash:{},data:a,loc:{start:{line:15,column:76},end:{line:15,column:87}}}):m)?f:"")+'"]\n'},4:function(l,n,o,e,a){return" "},6:function(l,n,o,e,a){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' ltail="cluster_'+(null!=(t="function"==typeof(o=null!=(o=t(o,"from")||(null!=n?t(n,"from"):n))?o:l.hooks.helperMissing)?o.call(null!=n?n:l.nullContext||{},{name:"from",hash:{},data:a,loc:{start:{line:12,column:63},end:{line:12,column:73}}}):o)?t:"")+'"'},8:function(l,n,o,e,a){var t=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return' lhead="cluster_'+(null!=(t="function"==typeof(o=null!=(o=t(o,"to")||(null!=n?t(n,"to"):n))?o:l.hooks.helperMissing)?o.call(null!=n?n:l.nullContext||{},{name:"to",hash:{},data:a,loc:{start:{line:13,column:61},end:{line:13,column:69}}}):o)?t:"")+'"'},10:function(l,n,o,e,a){var t,l=l.lambda;return' color="'+(null!=(t=l(n,n))?t:"")+'" fontcolor="'+(null!=(t=l(n,n))?t:"")+'"'},12:function(l,n,o,e,a){return' penwidth="'+(null!=(l=l.lambda(n,n))?l:"")+'"'},14:function(l,n,o,e,a){var t=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",c=l.hooks.blockHelperMissing,s=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},i=' "'+(null!=(f=typeof(m=null!=(m=s(o,"from")||(null!=n?s(n,"from"):n))?m:r)==u?m.call(t,{name:"from",hash:{},data:a,loc:{start:{line:18,column:7},end:{line:18,column:17}}}):m)?f:"")+'" -> "self_'+(null!=(f=typeof(m=null!=(m=s(o,"name")||(null!=n?s(n,"name"):n))?m:r)==u?m.call(t,{name:"name",hash:{},data:a,loc:{start:{line:18,column:28},end:{line:18,column:38}}}):m)?f:"")+'" [label="',m=null!=(m=s(o,"label")||(null!=n?s(n,"label"):n))?m:r,p={name:"label",hash:{},fn:l.noop,inverse:l.program(4,a,0),data:a,loc:{start:{line:18,column:48},end:{line:18,column:69}}},f=typeof m==u?m.call(t,p):m;return null!=(f=s(o,"label")?f:c.call(n,f,p))&&(i+=f),i+=(null!=(f=typeof(m=null!=(m=s(o,"label")||(null!=n?s(n,"label"):n))?m:r)==u?m.call(t,{name:"label",hash:{},data:a,loc:{start:{line:18,column:69},end:{line:18,column:80}}}):m)?f:"")+'" arrowhead=none',m=null!=(m=s(o,"tailportflags")||(null!=n?s(n,"tailportflags"):n))?m:r,p={name:"tailportflags",hash:{},fn:l.program(15,a,0),inverse:l.noop,data:a,loc:{start:{line:19,column:28},end:{line:19,column:73}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"tailportflags")?f:c.call(n,f,p))&&(i+=f),i+=' ltail="cluster_'+(null!=(f=typeof(m=null!=(m=s(o,"from")||(null!=n?s(n,"from"):n))?m:r)==u?m.call(t,{name:"from",hash:{},data:a,loc:{start:{line:19,column:89},end:{line:19,column:99}}}):m)?f:"")+'"',m=null!=(m=s(o,"color")||(null!=n?s(n,"color"):n))?m:r,p={name:"color",hash:{},fn:l.program(10,a,0),inverse:l.noop,data:a,loc:{start:{line:20,column:28},end:{line:20,column:85}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"color")?f:c.call(n,f,p))&&(i+=f),i+=' class="'+(null!=(f=typeof(m=null!=(m=s(o,"class")||(null!=n?s(n,"class"):n))?m:r)==u?m.call(t,{name:"class",hash:{},data:a,loc:{start:{line:20,column:93},end:{line:20,column:104}}}):m)?f:"")+'"]\n "self_'+(null!=(f=typeof(m=null!=(m=s(o,"name")||(null!=n?s(n,"name"):n))?m:r)==u?m.call(t,{name:"name",hash:{},data:a,loc:{start:{line:21,column:12},end:{line:21,column:22}}}):m)?f:"")+'" -> "'+(null!=(f=typeof(m=null!=(m=s(o,"from")||(null!=n?s(n,"from"):n))?m:r)==u?m.call(t,{name:"from",hash:{},data:a,loc:{start:{line:21,column:28},end:{line:21,column:38}}}):m)?f:"")+'" [lhead="cluster_'+(null!=(f=typeof(m=null!=(m=s(o,"from")||(null!=n?s(n,"from"):n))?m:r)==u?m.call(t,{name:"from",hash:{},data:a,loc:{start:{line:21,column:56},end:{line:21,column:66}}}):m)?f:"")+'"',m=null!=(m=s(o,"headportflags")||(null!=n?s(n,"headportflags"):n))?m:r,p={name:"headportflags",hash:{},fn:l.program(15,a,0),inverse:l.noop,data:a,loc:{start:{line:22,column:28},end:{line:22,column:73}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"headportflags")?f:c.call(n,f,p))&&(i+=f),m=null!=(m=s(o,"color")||(null!=n?s(n,"color"):n))?m:r,p={name:"color",hash:{},fn:l.program(17,a,0),inverse:l.noop,data:a,loc:{start:{line:23,column:28},end:{line:23,column:65}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"color")?f:c.call(n,f,p))&&(i+=f),m=null!=(m=s(o,"width")||(null!=n?s(n,"width"):n))?m:r,p={name:"width",hash:{},fn:l.program(12,a,0),inverse:l.noop,data:a,loc:{start:{line:24,column:28},end:{line:24,column:68}}},f=typeof m==u?m.call(t,p):m,null!=(f=s(o,"width")?f:c.call(n,f,p))&&(i+=f),i+' class="'+(null!=(f=typeof(m=null!=(m=s(o,"class")||(null!=n?s(n,"class"):n))?m:r)==u?m.call(t,{name:"class",hash:{},data:a,loc:{start:{line:24,column:76},end:{line:24,column:87}}}):m)?f:"")+'"]\n'},15:function(l,n,o,e,a){return" "+(null!=(l=l.lambda(n,n))?l:"")},17:function(l,n,o,e,a){return' color="'+(null!=(l=l.lambda(n,n))?l:"")+'"'},19:function(l,n,o,e,a,t,r){var u,c=l.lambda,s=l.hooks.blockHelperMissing,i=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]?i(r[1],"from"):r[1],n))?u:"")+'" -> "i_'+(null!=(u=c(n,n))?u:"")+'" [arrowhead=none'+(null!=(u=s.call(n,c(null!=r[1]?i(r[1],"fromComposite"):r[1],n),{name:"../fromComposite",hash:{},fn:l.program(20,a,0,t,r),inverse:l.noop,data:a,loc:{start:{line:30,column:32},end:{line:30,column:105}}}))?u:"")+(null!=(u=s.call(n,c(null!=r[1]?i(r[1],"color"):r[1],n),{name:"../color",hash:{},fn:l.program(17,a,0,t,r),inverse:l.noop,data:a,loc:{start:{line:31,column:32},end:{line:31,column:75}}}))?u:"")+']\n "i_'+(null!=(u=c(n,n))?u:"")+'" -> "'+(null!=(u=c(null!=r[1]?i(r[1],"to"):r[1],n))?u:"")+'" [label="'+(null!=(u=s.call(n,c(null!=r[1]?i(r[1],"label"):r[1],n),{name:"../label",hash:{},fn:l.noop,inverse:l.program(4,a,0,t,r),data:a,loc:{start:{line:32,column:43},end:{line:32,column:70}}}))?u:"")+(null!=(u=c(null!=r[1]?i(r[1],"label"):r[1],n))?u:"")+'"'+(null!=(u=s.call(n,c(null!=r[1]?i(r[1],"toComposite"):r[1],n),{name:"../toComposite",hash:{},fn:l.program(22,a,0,t,r),inverse:l.noop,data:a,loc:{start:{line:33,column:32},end:{line:33,column:99}}}))?u:"")+(null!=(u=s.call(n,c(null!=r[1]?i(r[1],"color"):r[1],n),{name:"../color",hash:{},fn:l.program(10,a,0,t,r),inverse:l.noop,data:a,loc:{start:{line:34,column:32},end:{line:34,column:95}}}))?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]?i(r[1],"noteFlattened"):r[1],n))?u:"")+'" shape=note fontsize=10 color=black fontcolor=black fillcolor="#ffffcc" penwidth=1.0]\n'},20:function(l,n,o,e,a,t,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:"")+'"'},22:function(l,n,o,e,a,t,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:"")+'"'},compiler:[8,">= 4.3.0"],main:function(l,n,o,e,a,t,r){var u=null!=n?n:l.nullContext||{},c=l.hooks.helperMissing,s="function",i=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=i(o,"graphAttributes")||(null!=n?i(n,"graphAttributes"):n))?m:c)==s?m.call(u,{name:"graphAttributes",hash:{},data:a,loc:{start:{line:2,column:2},end:{line:2,column:23}}}):m)?p:"")+"\n node ["+(null!=(p=typeof(m=null!=(m=i(o,"nodeAttributes")||(null!=n?i(n,"nodeAttributes"):n))?m:c)==s?m.call(u,{name:"nodeAttributes",hash:{},data:a,loc:{start:{line:3,column:8},end:{line:3,column:28}}}):m)?p:"")+"]\n edge ["+(null!=(p=typeof(m=null!=(m=i(o,"edgeAttributes")||(null!=n?i(n,"edgeAttributes"):n))?m:c)==s?m.call(u,{name:"edgeAttributes",hash:{},data:a,loc:{start:{line:4,column:8},end:{line:4,column:28}}}):m)?p:"")+"]\n\n"+(null!=(p=l.invokePartial(i(e,"dot.states.template.hbs"),n,{name:"dot.states.template.hbs",data:a,indent:" ",helpers:o,partials:e,decorators:l.decorators}))?p:"")+"\n",m=null!=(m=i(o,"transitions")||(null!=n?i(n,"transitions"):n))?m:c,c={name:"transitions",hash:{},fn:l.program(1,a,0,t,r),inverse:l.noop,data:a,loc:{start:{line:8,column:2},end:{line:38,column:18}}},p=typeof m==s?m.call(u,c):m;return null!=(p=i(o,"transitions")?p:l.hooks.blockHelperMissing.call(n,p,c))&&(e+=p),e+"}\n"},usePartial:!0,useData:!0,useDepths:!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});
|
|
@@ -3,12 +3,11 @@ import StateMachineModel from "../../state-machine-model.mjs";
|
|
|
3
3
|
import attributebuilder from "./attributebuilder.mjs";
|
|
4
4
|
import stateTransformers from "./state-transformers.mjs";
|
|
5
5
|
import transitionTransformers from "./transition-transformers.mjs";
|
|
6
|
-
import Counter from "./counter.mjs";
|
|
7
6
|
import renderDotFromAST from "./render-dot-from-ast.mjs";
|
|
8
7
|
import utl from "./utl.mjs";
|
|
9
8
|
function addExternalSelfTransitions(pStateMachineModel) {
|
|
10
9
|
return (pState) => {
|
|
11
|
-
if (Object.
|
|
10
|
+
if (Object.hasOwn(pState, "statemachine")) {
|
|
12
11
|
pState.nestedExternalSelfTransitions = pStateMachineModel
|
|
13
12
|
.findExternalSelfTransitions(pState.name)
|
|
14
13
|
.map((pTransition) => pTransition.name);
|
|
@@ -102,18 +101,18 @@ function addCompositeSelfFlag(pStateMachineModel) {
|
|
|
102
101
|
return { ...pTransition, ...lAdditionalAttributes };
|
|
103
102
|
};
|
|
104
103
|
}
|
|
105
|
-
function nameTransition(
|
|
104
|
+
function nameTransition() {
|
|
106
105
|
return (pTransition) => {
|
|
107
|
-
pTransition.name = `tr_${pTransition.from}_${pTransition.to}_${
|
|
108
|
-
if (
|
|
106
|
+
pTransition.name = `tr_${pTransition.from}_${pTransition.to}_${pTransition.id}`;
|
|
107
|
+
if (pTransition.note) {
|
|
109
108
|
pTransition.noteName = `note_${pTransition.name}`;
|
|
110
109
|
}
|
|
111
110
|
return pTransition;
|
|
112
111
|
};
|
|
113
112
|
}
|
|
114
|
-
function transformTransitions(pStateMachineModel, pDirection
|
|
113
|
+
function transformTransitions(pStateMachineModel, pDirection) {
|
|
115
114
|
return pStateMachineModel.flattenedTransitions
|
|
116
|
-
.map(nameTransition(
|
|
115
|
+
.map(nameTransition())
|
|
117
116
|
.map(transitionTransformers.escapeTransitionStrings)
|
|
118
117
|
.map(transitionTransformers.classifyTransition)
|
|
119
118
|
.map(stateTransformers.flattenNote)
|
|
@@ -128,7 +127,6 @@ export default (pStateMachine, pOptions) => {
|
|
|
128
127
|
lStateMachine.transitions = transformTransitions(
|
|
129
128
|
lStateMachineModel,
|
|
130
129
|
pOptions.direction,
|
|
131
|
-
new Counter(),
|
|
132
130
|
);
|
|
133
131
|
lStateMachine.states = transformStates(
|
|
134
132
|
lStateMachine.states,
|
|
@@ -7,7 +7,7 @@ function isOneOfTypes(pStringArray) {
|
|
|
7
7
|
}
|
|
8
8
|
function setLabel(pState) {
|
|
9
9
|
const lState = structuredClone(pState);
|
|
10
|
-
lState.label = pState.label
|
|
10
|
+
lState.label = pState.label ?? pState.name;
|
|
11
11
|
return lState;
|
|
12
12
|
}
|
|
13
13
|
function nameNote(pState) {
|
|
@@ -86,7 +86,7 @@ function tipForkJoinStates(pDirection) {
|
|
|
86
86
|
return (pState) => {
|
|
87
87
|
if (isOneOfTypes(["fork", "join", "forkjoin"])(pState)) {
|
|
88
88
|
return {
|
|
89
|
-
sizingExtras: utl.isVertical(pDirection) ? "height=0.1" : "width=0.1",
|
|
89
|
+
sizingExtras: utl.isVertical(pDirection) ? " height=0.1" : " width=0.1",
|
|
90
90
|
...pState,
|
|
91
91
|
};
|
|
92
92
|
}
|
|
@@ -94,11 +94,7 @@ function tipForkJoinStates(pDirection) {
|
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
96
|
function flagParallelChildren(pState) {
|
|
97
|
-
if (
|
|
98
|
-
pState.type === "parallel" &&
|
|
99
|
-
pState.statemachine &&
|
|
100
|
-
pState.statemachine.states
|
|
101
|
-
) {
|
|
97
|
+
if (pState.type === "parallel" && pState.statemachine?.states) {
|
|
102
98
|
pState.statemachine.states = pState.statemachine.states.map(
|
|
103
99
|
(pChildState) =>
|
|
104
100
|
isType("regular")(pChildState)
|
|
@@ -4,9 +4,7 @@ function escapeTransitionStrings(pTransition) {
|
|
|
4
4
|
if (lTransition.note) {
|
|
5
5
|
lTransition.note = lTransition.note.map(utl.escapeString);
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
lTransition.label = utl.escapeLabelString(lTransition.label);
|
|
9
|
-
}
|
|
7
|
+
lTransition.label = utl.escapeLabelString(lTransition.label ?? " ");
|
|
10
8
|
return lTransition;
|
|
11
9
|
}
|
|
12
10
|
function addPorts(pDirection) {
|
package/dist/render/dot/utl.mjs
CHANGED
|
@@ -20,7 +20,7 @@ function isCompositeSelf(pStateMachineModel, pTransition) {
|
|
|
20
20
|
return (
|
|
21
21
|
pTransition.from === pTransition.to &&
|
|
22
22
|
pStateMachineModel.findStateByName(pTransition.from).statemachine &&
|
|
23
|
-
|
|
23
|
+
pTransition.type !== "internal"
|
|
24
24
|
);
|
|
25
25
|
}
|
|
26
26
|
export default {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import smcatRendererAsImported from "./smcat
|
|
1
|
+
import smcatRendererAsImported from "./smcat.mjs";
|
|
2
2
|
import renderDot from "./dot/index.mjs";
|
|
3
|
+
import renderNDot from "./ndot/index.mjs";
|
|
3
4
|
import vector from "./vector/vector-native-dot-with-fallback.mjs";
|
|
4
5
|
import oldVector from "./vector/vector-with-wasm.mjs";
|
|
5
6
|
import scjson from "./scjson/index.mjs";
|
|
@@ -9,6 +10,7 @@ export default function getRenderFunction(pOutputType) {
|
|
|
9
10
|
const lOutputType2RenderFunctionMap = new Map([
|
|
10
11
|
["smcat", smcat],
|
|
11
12
|
["dot", renderDot],
|
|
13
|
+
["ndot", renderNDot],
|
|
12
14
|
["svg", vector],
|
|
13
15
|
["eps", vector],
|
|
14
16
|
["ps", vector],
|
package/dist/render/index.mjs
CHANGED
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import he from "he";
|
|
2
|
+
import { getOptionValue } from "../../options.mjs";
|
|
3
|
+
import StateMachineModel from "../../state-machine-model.mjs";
|
|
4
|
+
import {
|
|
5
|
+
buildGraphAttributes,
|
|
6
|
+
buildNodeAttributes,
|
|
7
|
+
buildEdgeAttributes,
|
|
8
|
+
} from "./attributebuilder.mjs";
|
|
9
|
+
import {
|
|
10
|
+
escapeLabelString,
|
|
11
|
+
formatActionType,
|
|
12
|
+
getTransitionPorts,
|
|
13
|
+
isCompositeSelf,
|
|
14
|
+
isVertical,
|
|
15
|
+
noteToLabel,
|
|
16
|
+
normalizeState,
|
|
17
|
+
stateNote,
|
|
18
|
+
} from "./utl.mjs";
|
|
19
|
+
function initial(pState, pIndent) {
|
|
20
|
+
const lActiveAttribute = pState.active ? " penwidth=3.0" : "";
|
|
21
|
+
return `${pIndent} "${pState.name}" [shape=circle style=filled class="${pState.class}" color="${pState.color}" fillcolor="${pState.color}" fixedsize=true height=0.15 label=""${lActiveAttribute}]${pState.noteText}`;
|
|
22
|
+
}
|
|
23
|
+
function regularStateActions(pActions, pIndent) {
|
|
24
|
+
return pActions
|
|
25
|
+
.map((pAction) =>
|
|
26
|
+
he.escape(`${formatActionType(pAction.type)}${pAction.body}`),
|
|
27
|
+
)
|
|
28
|
+
.map((pActionString, pIndex) => {
|
|
29
|
+
let lReturnValue = `<tr><td align="left" cellpadding="2">${pActionString}</td></tr>`;
|
|
30
|
+
if (pIndex === 0) {
|
|
31
|
+
lReturnValue = `<hr/>${lReturnValue}`;
|
|
32
|
+
}
|
|
33
|
+
return `\n${pIndent} ${lReturnValue}`;
|
|
34
|
+
})
|
|
35
|
+
.join("");
|
|
36
|
+
}
|
|
37
|
+
function compositeStateActions(pActions, pIndent) {
|
|
38
|
+
return pActions
|
|
39
|
+
.map((pAction) =>
|
|
40
|
+
he.escape(`${formatActionType(pAction.type)}${pAction.body}`),
|
|
41
|
+
)
|
|
42
|
+
.map((pActionString, pIndex) => {
|
|
43
|
+
let lReturnValue = `<tr><td align="left">${pActionString}</td></tr>`;
|
|
44
|
+
if (pIndex === 0) {
|
|
45
|
+
lReturnValue = `<hr/>${lReturnValue}`;
|
|
46
|
+
}
|
|
47
|
+
return `\n${pIndent} ${lReturnValue}`;
|
|
48
|
+
})
|
|
49
|
+
.join("");
|
|
50
|
+
}
|
|
51
|
+
function atomicRegular(pState, pIndent) {
|
|
52
|
+
const lActiveAttribute = pState.active ? " peripheries=2 penwidth=3.0" : "";
|
|
53
|
+
const lCellPadding = (pState.actions?.length ?? 0) > 0 ? 2 : 7;
|
|
54
|
+
const lActions = regularStateActions(pState?.actions ?? [], pIndent);
|
|
55
|
+
const lLabel = pState.active ? `<i>${pState.label}</i>` : pState.label;
|
|
56
|
+
const lLabelTag = `
|
|
57
|
+
${pIndent} <table align="center" cellborder="0" border="2" style="rounded" width="48">
|
|
58
|
+
${pIndent} <tr><td width="48" cellpadding="${lCellPadding}">${lLabel}</td></tr>${lActions}
|
|
59
|
+
${pIndent} </table>`;
|
|
60
|
+
return `${pIndent} "${pState.name}" [margin=0 class="${pState.class}" color="${pState.color}"${lActiveAttribute} label= <${lLabelTag}
|
|
61
|
+
${pIndent} >]${pState.noteText}`;
|
|
62
|
+
}
|
|
63
|
+
function compositeRegular(pState, pIndent, pOptions, pModel) {
|
|
64
|
+
const lPenWidth = pState.isParallelArea
|
|
65
|
+
? "1.0"
|
|
66
|
+
: pState.active
|
|
67
|
+
? "3.0"
|
|
68
|
+
: "2.0";
|
|
69
|
+
const lStyle = pState.isParallelArea ? "dashed" : "rounded";
|
|
70
|
+
const lActions = compositeStateActions(pState?.actions ?? [], pIndent);
|
|
71
|
+
const lLabel = pState.active ? `<i>${pState.label}</i>` : pState.label;
|
|
72
|
+
const lLabelTag = `${pIndent} <table cellborder="0" border="0">
|
|
73
|
+
${pIndent} <tr><td>${lLabel}</td></tr>${lActions}
|
|
74
|
+
${pIndent} </table>`;
|
|
75
|
+
const lSelfTransitionHelperPoints = pModel
|
|
76
|
+
.findExternalSelfTransitions(pState.name)
|
|
77
|
+
.map(
|
|
78
|
+
(pTransition) =>
|
|
79
|
+
`${pIndent} "self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}" [shape=point style=invis width=0 height=0 fixedsize=true]\n`,
|
|
80
|
+
)
|
|
81
|
+
.join("");
|
|
82
|
+
return `${lSelfTransitionHelperPoints}${pIndent} subgraph "cluster_${pState.name}" {
|
|
83
|
+
${pIndent} class="${pState.class}" color="${pState.color}" label= <
|
|
84
|
+
${lLabelTag}
|
|
85
|
+
${pIndent} > style=${lStyle} penwidth=${lPenWidth}
|
|
86
|
+
${pIndent} "${pState.name}" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]
|
|
87
|
+
${machine(pState.statemachine ?? { states: [] }, `${pIndent} `, pOptions, pModel)}
|
|
88
|
+
${pIndent} }${pState.noteText}`;
|
|
89
|
+
}
|
|
90
|
+
function regular(pState, pIndent, pOptions, pModel) {
|
|
91
|
+
if (pState.statemachine) {
|
|
92
|
+
return compositeRegular(pState, pIndent, pOptions, pModel);
|
|
93
|
+
}
|
|
94
|
+
return atomicRegular(pState, pIndent);
|
|
95
|
+
}
|
|
96
|
+
function history(pState, pIndent) {
|
|
97
|
+
const lActiveAttribute = pState.active ? " peripheries=2 penwidth=3.0" : "";
|
|
98
|
+
return `${pIndent} "${pState.name}" [shape=circle class="${pState.class}" color="${pState.color}" label="H"${lActiveAttribute}]${pState.noteText}`;
|
|
99
|
+
}
|
|
100
|
+
function deepHistory(pState, pIndent) {
|
|
101
|
+
const lActiveAttribute = pState.active ? " peripheries=2 penwidth=3.0" : "";
|
|
102
|
+
return `${pIndent} "${pState.name}" [shape=circle class="${pState.class}" color="${pState.color}" label="H*"${lActiveAttribute}]${pState.noteText}`;
|
|
103
|
+
}
|
|
104
|
+
function choiceActions(pActions, pActive) {
|
|
105
|
+
return pActions
|
|
106
|
+
.map((pAction) => {
|
|
107
|
+
let lReturnValue = he.escape(
|
|
108
|
+
`${formatActionType(pAction.type)}${pAction.body}`,
|
|
109
|
+
);
|
|
110
|
+
if (pActive) {
|
|
111
|
+
lReturnValue = `<i>${lReturnValue}</i>`;
|
|
112
|
+
}
|
|
113
|
+
return lReturnValue;
|
|
114
|
+
})
|
|
115
|
+
.join("\\n");
|
|
116
|
+
}
|
|
117
|
+
function choice(pState, pIndent) {
|
|
118
|
+
const lActiveAttribute = pState.active ? "penwidth=3.0 " : "";
|
|
119
|
+
const lActions = choiceActions(
|
|
120
|
+
pState?.actions ?? [],
|
|
121
|
+
pState?.active ?? false,
|
|
122
|
+
);
|
|
123
|
+
const lLabelTag = lActions;
|
|
124
|
+
const lDiamond = `${pIndent} "${pState.name}" [shape=diamond fixedsize=true width=0.35 height=0.35 fontsize=10 label=" " class="${pState.class}" color="${pState.color}"${lActiveAttribute}]`;
|
|
125
|
+
const lLabelConstruct = `${pIndent} "${pState.name}" -> "${pState.name}" [color="#FFFFFF01" fontcolor="${pState.color}" class="${pState.class}" label=<${lLabelTag}>]`;
|
|
126
|
+
return `${lDiamond}\n${lLabelConstruct}${pState.noteText}`;
|
|
127
|
+
}
|
|
128
|
+
function forkjoin(pState, pIndent, pOptions) {
|
|
129
|
+
const lActiveAttribute = pState.active ? "penwidth=3.0 " : "";
|
|
130
|
+
const lDirection = getOptionValue(pOptions, "direction");
|
|
131
|
+
const lSizingExtras = isVertical(lDirection) ? " height=0.1" : " width=0.1";
|
|
132
|
+
return `${pIndent} "${pState.name}" [shape=rect fixedsize=true label=" " style=filled class="${pState.class}" color="${pState.color}" fillcolor="${pState.color}"${lActiveAttribute}${lSizingExtras}]${pState.noteText}`;
|
|
133
|
+
}
|
|
134
|
+
function junction(pState, pIndent) {
|
|
135
|
+
const lActiveAttribute = pState.active ? " penwidth=3.0" : "";
|
|
136
|
+
const lNote = stateNote(pState, pIndent);
|
|
137
|
+
return `${pIndent} "${pState.name}" [shape=circle fixedsize=true height=0.15 label="" style=filled class="${pState.class}" color="${pState.color}" fillcolor="${pState.color}"${lActiveAttribute}]${lNote}`;
|
|
138
|
+
}
|
|
139
|
+
function terminate(pState, pIndent) {
|
|
140
|
+
const lLabelTag = `
|
|
141
|
+
${pIndent} <table align="center" cellborder="0" border="0">
|
|
142
|
+
${pIndent} <tr><td cellpadding="0"><font color="${pState.color}" point-size="20">X</font></td></tr>
|
|
143
|
+
${pIndent} <tr><td cellpadding="0"><font color="${pState.color}">${pState.label}</font></td></tr>
|
|
144
|
+
${pIndent} </table>`;
|
|
145
|
+
return `${pIndent} "${pState.name}" [label= <${lLabelTag}
|
|
146
|
+
${pIndent} > class="${pState.class}"]${pState.noteText}`;
|
|
147
|
+
}
|
|
148
|
+
function final(pState, pIndent) {
|
|
149
|
+
const lActiveAttribute = pState.active ? " peripheries=2 penwidth=3.0" : "";
|
|
150
|
+
return `${pIndent} "${pState.name}" [shape=circle style=filled class="${pState.class}" color="${pState.color}" fillcolor="${pState.color}" fixedsize=true height=0.15 peripheries=2 label=""${lActiveAttribute}]${pState.noteText}`;
|
|
151
|
+
}
|
|
152
|
+
const STATE_TYPE2FUNCTION = new Map([
|
|
153
|
+
["initial", initial],
|
|
154
|
+
["regular", regular],
|
|
155
|
+
["history", history],
|
|
156
|
+
["deephistory", deepHistory],
|
|
157
|
+
["choice", choice],
|
|
158
|
+
["fork", forkjoin],
|
|
159
|
+
["forkjoin", forkjoin],
|
|
160
|
+
["join", forkjoin],
|
|
161
|
+
["junction", junction],
|
|
162
|
+
["terminate", terminate],
|
|
163
|
+
["final", final],
|
|
164
|
+
]);
|
|
165
|
+
function state(pState, pIndent, pOptions, pModel) {
|
|
166
|
+
const lState = normalizeState(pState, pIndent);
|
|
167
|
+
return (
|
|
168
|
+
(STATE_TYPE2FUNCTION.get(pState.type) ?? regular)(
|
|
169
|
+
lState,
|
|
170
|
+
pIndent,
|
|
171
|
+
pOptions,
|
|
172
|
+
pModel,
|
|
173
|
+
) + "\n"
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
function states(pStates, pIndent, pOptions, pModel) {
|
|
177
|
+
return pStates
|
|
178
|
+
.map((pState) => state(pState, pIndent, pOptions, pModel))
|
|
179
|
+
.join("");
|
|
180
|
+
}
|
|
181
|
+
function transition(pTransition, pIndent, pOptions, pModel) {
|
|
182
|
+
const lLabel = `${escapeLabelString(pTransition.label ?? " ")}`;
|
|
183
|
+
const lColor = pTransition.color ?? "black";
|
|
184
|
+
const lPenWidth = pTransition.width ? ` penwidth=${pTransition.width}` : "";
|
|
185
|
+
const lClass = pTransition.class
|
|
186
|
+
? `transition${pTransition.type ? " " + pTransition.type + " " : " "}${pTransition.class}`
|
|
187
|
+
: `transition${pTransition.type ? " " + pTransition.type : ""}`;
|
|
188
|
+
const lTail = pModel.findStateByName(pTransition.from)?.statemachine
|
|
189
|
+
? `ltail="cluster_${pTransition.from}" `
|
|
190
|
+
: "";
|
|
191
|
+
const lHead = pModel.findStateByName(pTransition.to)?.statemachine
|
|
192
|
+
? `lhead="cluster_${pTransition.to}" `
|
|
193
|
+
: "";
|
|
194
|
+
const lTransitionName = `tr_${pTransition.from}_${pTransition.to}_${pTransition.id}`;
|
|
195
|
+
if (pTransition.note) {
|
|
196
|
+
const lNoteName = `note_${lTransitionName}`;
|
|
197
|
+
const lNoteNodeName = `i_${lNoteName}`;
|
|
198
|
+
const lNoteNode = `\n${pIndent} "${lNoteNodeName}" [shape=point style=invis margin=0 width=0 height=0 fixedsize=true]`;
|
|
199
|
+
const lTransitionFrom = `\n${pIndent} "${pTransition.from}" -> "${lNoteNodeName}" [arrowhead=none ${lTail}color="${lColor}"]`;
|
|
200
|
+
const lTransitionTo = `\n${pIndent} "${lNoteNodeName}" -> "${pTransition.to}" [label="${lLabel}" ${lHead}color="${lColor}" fontcolor="${lColor}"]`;
|
|
201
|
+
const lLineToNote = `\n${pIndent} "${lNoteNodeName}" -> "${lNoteName}" [style=dashed arrowtail=none arrowhead=none weight=0]`;
|
|
202
|
+
const lNote = `\n${pIndent} "${lNoteName}" [label="${noteToLabel(pTransition.note)}" shape=note fontsize=10 color=black fontcolor=black fillcolor="#ffffcc" penwidth=1.0]`;
|
|
203
|
+
return lNoteNode + lTransitionFrom + lTransitionTo + lLineToNote + lNote;
|
|
204
|
+
}
|
|
205
|
+
if (isCompositeSelf(pModel, pTransition)) {
|
|
206
|
+
const { lTailPorts, lHeadPorts } = getTransitionPorts(
|
|
207
|
+
pOptions,
|
|
208
|
+
pModel,
|
|
209
|
+
pTransition,
|
|
210
|
+
);
|
|
211
|
+
const lTransitionFrom = `\n${pIndent} "${pTransition.from}" -> "self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}" [label="${lLabel}" arrowhead=none ${lTailPorts}${lTail}color="${lColor}" fontcolor="${lColor}" class="${lClass}"]`;
|
|
212
|
+
const lTransitionTo = `\n${pIndent} "self_tr_${pTransition.from}_${pTransition.to}_${pTransition.id}" -> "${pTransition.to}" [${lHead}${lHeadPorts}color="${lColor}" ${lPenWidth}class="${lClass}"]`;
|
|
213
|
+
return lTransitionFrom + lTransitionTo;
|
|
214
|
+
}
|
|
215
|
+
return `\n${pIndent} "${pTransition.from}" -> "${pTransition.to}" [label="${lLabel}" ${lTail}${lHead}color="${lColor}" fontcolor="${lColor}"${lPenWidth} class="${lClass}"]`;
|
|
216
|
+
}
|
|
217
|
+
function transitions(pTransitions, pIndent, pOptions, pModel) {
|
|
218
|
+
return pTransitions
|
|
219
|
+
.map((pTransition) => transition(pTransition, pIndent, pOptions, pModel))
|
|
220
|
+
.join("");
|
|
221
|
+
}
|
|
222
|
+
function machine(pStateMachine, pIndent, pOptions, pModel) {
|
|
223
|
+
return `${states(pStateMachine.states, pIndent, pOptions, pModel)}${transitions(pStateMachine.transitions || [], pIndent, pOptions, pModel)}`;
|
|
224
|
+
}
|
|
225
|
+
export default function renderDot(pStateMachine, pOptions = {}, pIndent = "") {
|
|
226
|
+
const lGraphAttributes = buildGraphAttributes(
|
|
227
|
+
getOptionValue(pOptions, "engine"),
|
|
228
|
+
getOptionValue(pOptions, "direction"),
|
|
229
|
+
pOptions?.dotGraphAttrs || [],
|
|
230
|
+
);
|
|
231
|
+
const lNodeAttributes = buildNodeAttributes(pOptions.dotNodeAttrs || []);
|
|
232
|
+
const lEdgeAttributes = buildEdgeAttributes(pOptions.dotNodeAttrs || []);
|
|
233
|
+
const lModel = new StateMachineModel(pStateMachine);
|
|
234
|
+
const lMachine = machine(pStateMachine, pIndent, pOptions, lModel);
|
|
235
|
+
return `digraph "state transitions" {
|
|
236
|
+
${lGraphAttributes}
|
|
237
|
+
node [${lNodeAttributes}]
|
|
238
|
+
edge [${lEdgeAttributes}]
|
|
239
|
+
|
|
240
|
+
${lMachine}
|
|
241
|
+
}
|
|
242
|
+
`;
|
|
243
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import he from "he";
|
|
2
|
+
import { getOptionValue } from "../../options.mjs";
|
|
3
|
+
export function escapeString(pString) {
|
|
4
|
+
return pString
|
|
5
|
+
.replace(/\\/g, "\\\\")
|
|
6
|
+
.replace(/\n\s*/g, "\\l")
|
|
7
|
+
.replace(/"/g, '\\"')
|
|
8
|
+
.concat("\\l");
|
|
9
|
+
}
|
|
10
|
+
export function escapeLabelString(pString) {
|
|
11
|
+
return pString
|
|
12
|
+
.replace(/\\/g, "\\\\")
|
|
13
|
+
.replace(/\n\s*/g, " \\l")
|
|
14
|
+
.replace(/"/g, '\\"')
|
|
15
|
+
.concat(" \\l");
|
|
16
|
+
}
|
|
17
|
+
export function isVertical(pDirection) {
|
|
18
|
+
const lDirection = pDirection || "top-down";
|
|
19
|
+
return lDirection === "top-down" || lDirection === "bottom-top";
|
|
20
|
+
}
|
|
21
|
+
export function isCompositeSelf(pStateMachineModel, pTransition) {
|
|
22
|
+
return (
|
|
23
|
+
pTransition.from === pTransition.to &&
|
|
24
|
+
pStateMachineModel.findStateByName(pTransition.from).statemachine &&
|
|
25
|
+
pTransition.type !== "internal"
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
export function noteToLabel(pNote) {
|
|
29
|
+
return pNote.map(escapeString).join("");
|
|
30
|
+
}
|
|
31
|
+
export function stateNote(pState, pIndent) {
|
|
32
|
+
if (pState.note) {
|
|
33
|
+
const lNoteName = `note_${pState.name}`;
|
|
34
|
+
let lReturnValue = `\n${pIndent} "${lNoteName}" [color=black fontcolor=black label="${noteToLabel(pState.note)}" shape=note fontsize=10 fillcolor="#ffffcc" penwidth=1.0]`;
|
|
35
|
+
lReturnValue += `\n${pIndent} "${pState.name}" -> "${lNoteName}" [style=dashed arrowtail=none arrowhead=none]`;
|
|
36
|
+
return lReturnValue;
|
|
37
|
+
}
|
|
38
|
+
return "";
|
|
39
|
+
}
|
|
40
|
+
export function normalizeState(pState, pIndent) {
|
|
41
|
+
const lReturnValue = structuredClone(pState);
|
|
42
|
+
lReturnValue.color = pState.color ?? "black";
|
|
43
|
+
lReturnValue.class = pState.class
|
|
44
|
+
? `state ${pState.type} ${pState.class}`
|
|
45
|
+
: `state ${pState.type}`;
|
|
46
|
+
lReturnValue.label = he.escape(pState.label ?? pState.name);
|
|
47
|
+
lReturnValue.noteText = stateNote(pState, pIndent);
|
|
48
|
+
if (
|
|
49
|
+
!pState.isParallelArea &&
|
|
50
|
+
pState.type === "parallel" &&
|
|
51
|
+
(pState.statemachine?.states ?? []).length > 0
|
|
52
|
+
) {
|
|
53
|
+
lReturnValue.statemachine.states = pState.statemachine.states.map(
|
|
54
|
+
(pChildState) => ({
|
|
55
|
+
...pChildState,
|
|
56
|
+
isParallelArea: pChildState.type === "regular",
|
|
57
|
+
}),
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
return lReturnValue;
|
|
61
|
+
}
|
|
62
|
+
export function formatActionType(pString) {
|
|
63
|
+
return pString === "activity" ? "" : `${pString}/ `;
|
|
64
|
+
}
|
|
65
|
+
export function getTransitionPorts(pOptions, pModel, pTransition) {
|
|
66
|
+
let lTailPorts = 'tailport="n" headport="n" ';
|
|
67
|
+
let lHeadPorts = 'tailport="n" ';
|
|
68
|
+
const lDirection = getOptionValue(pOptions, "direction");
|
|
69
|
+
if (isVertical(lDirection)) {
|
|
70
|
+
lTailPorts = 'tailport="e" headport="e" ';
|
|
71
|
+
lHeadPorts = 'tailport="w" ';
|
|
72
|
+
} else if (pModel.findStateByName(pTransition.from).hasParent) {
|
|
73
|
+
lTailPorts = 'tailport="n" headport="n" ';
|
|
74
|
+
lHeadPorts = 'tailport="s" ';
|
|
75
|
+
}
|
|
76
|
+
return { lTailPorts, lHeadPorts };
|
|
77
|
+
}
|
|
@@ -18,7 +18,7 @@ function makeValidEventName(pCandidateEventName) {
|
|
|
18
18
|
);
|
|
19
19
|
}
|
|
20
20
|
export default (pCandidateEventNames) => {
|
|
21
|
-
const lCandidateEventNames = pCandidateEventNames
|
|
21
|
+
const lCandidateEventNames = pCandidateEventNames ?? "";
|
|
22
22
|
if (lCandidateEventNames.length === 0) {
|
|
23
23
|
return "empty";
|
|
24
24
|
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
const NAME_QUOTABLE = /[;,{[ ]/;
|
|
2
|
+
const ACTIONS_QUOTABLE = /[;,{}]/;
|
|
3
|
+
const LABEL_QUOTABLE = /[;{]/;
|
|
4
|
+
const RENDERABLE_STATE_ATTRIBUTES = [
|
|
5
|
+
"label",
|
|
6
|
+
"type",
|
|
7
|
+
"color",
|
|
8
|
+
"active",
|
|
9
|
+
"class",
|
|
10
|
+
];
|
|
11
|
+
const RENDERABLE_TRANSITION_ATTRIBUTES = ["type", "color", "class"];
|
|
12
|
+
function quoteIfNecessary(pRegExp, pString) {
|
|
13
|
+
return pRegExp.test(pString) ? `"${pString}"` : pString;
|
|
14
|
+
}
|
|
15
|
+
function stateHasExtendedAttributes(pState) {
|
|
16
|
+
return (
|
|
17
|
+
Object.hasOwn(pState, "label") ||
|
|
18
|
+
Object.hasOwn(pState, "typeExplicitlySet") ||
|
|
19
|
+
Object.hasOwn(pState, "color") ||
|
|
20
|
+
Object.hasOwn(pState, "active") ||
|
|
21
|
+
Object.hasOwn(pState, "class")
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
function note(pNote, pIndent = "") {
|
|
25
|
+
return pNote.map((pNoteLine) => `${pIndent}# ${pNoteLine}`).join("\n");
|
|
26
|
+
}
|
|
27
|
+
function extendedAttribute(pKey, pValue) {
|
|
28
|
+
if (pKey === "type") {
|
|
29
|
+
return `${pKey}=${pValue}`;
|
|
30
|
+
}
|
|
31
|
+
if (pKey === "active") {
|
|
32
|
+
return pValue ? pKey : "";
|
|
33
|
+
}
|
|
34
|
+
return `${pKey}="${pValue}"`;
|
|
35
|
+
}
|
|
36
|
+
function extendedStateAttributes(pState) {
|
|
37
|
+
return Object.entries(pState)
|
|
38
|
+
.filter(([pKey]) => RENDERABLE_STATE_ATTRIBUTES.includes(pKey))
|
|
39
|
+
.filter(([pKey]) => pKey !== "type" || pState.typeExplicitlySet)
|
|
40
|
+
.map(([pKey, pValue]) => extendedAttribute(pKey, pValue))
|
|
41
|
+
.join(" ");
|
|
42
|
+
}
|
|
43
|
+
function actions(pActions) {
|
|
44
|
+
return pActions
|
|
45
|
+
.map(
|
|
46
|
+
(pAction) =>
|
|
47
|
+
`${pAction.type === "activity" ? "" : `${pAction.type}/ `}${pAction.body}`,
|
|
48
|
+
)
|
|
49
|
+
.map((pAction) => quoteIfNecessary(ACTIONS_QUOTABLE, pAction))
|
|
50
|
+
.join("\n ");
|
|
51
|
+
}
|
|
52
|
+
function state(pState, pIndent = "") {
|
|
53
|
+
let lReturnValue = pIndent + quoteIfNecessary(NAME_QUOTABLE, pState.name);
|
|
54
|
+
if (pState.note) {
|
|
55
|
+
lReturnValue = `${note(pState.note, pIndent)}\n${lReturnValue}`;
|
|
56
|
+
}
|
|
57
|
+
if (stateHasExtendedAttributes(pState)) {
|
|
58
|
+
lReturnValue += ` [${extendedStateAttributes(pState)}]`;
|
|
59
|
+
}
|
|
60
|
+
if (pState.actions) {
|
|
61
|
+
lReturnValue += `: ${actions(pState.actions)}`;
|
|
62
|
+
}
|
|
63
|
+
if (pState.statemachine) {
|
|
64
|
+
lReturnValue += " {\n";
|
|
65
|
+
lReturnValue += renderSmcat(pState.statemachine, null, `${pIndent} `);
|
|
66
|
+
lReturnValue += `${pIndent}}`;
|
|
67
|
+
}
|
|
68
|
+
return lReturnValue;
|
|
69
|
+
}
|
|
70
|
+
function states(pStates, pIndent = "") {
|
|
71
|
+
return pStates
|
|
72
|
+
.map((pState) => state(pState, pIndent))
|
|
73
|
+
.join(",\n")
|
|
74
|
+
.concat(pStates.length > 0 ? ";\n\n" : "");
|
|
75
|
+
}
|
|
76
|
+
function transitionHasExtendedAttributes(pTransition) {
|
|
77
|
+
return Object.entries(pTransition).some(([pKey]) =>
|
|
78
|
+
RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey),
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
function extendedTransitionAttributes(pTransition) {
|
|
82
|
+
return Object.entries(pTransition)
|
|
83
|
+
.filter(([pKey]) => RENDERABLE_TRANSITION_ATTRIBUTES.includes(pKey))
|
|
84
|
+
.map(([pKey, pValue]) => extendedAttribute(pKey, pValue))
|
|
85
|
+
.join(" ");
|
|
86
|
+
}
|
|
87
|
+
function transition(pTransition, pIndent = "") {
|
|
88
|
+
let lReturnValue = `${pIndent}${quoteIfNecessary(NAME_QUOTABLE, pTransition.from)} => ${quoteIfNecessary(NAME_QUOTABLE, pTransition.to)}`;
|
|
89
|
+
if (pTransition.note) {
|
|
90
|
+
lReturnValue = `${note(pTransition.note, pIndent)}\n${lReturnValue}`;
|
|
91
|
+
}
|
|
92
|
+
if (transitionHasExtendedAttributes(pTransition)) {
|
|
93
|
+
lReturnValue += ` [${extendedTransitionAttributes(pTransition)}]`;
|
|
94
|
+
}
|
|
95
|
+
if (pTransition.label) {
|
|
96
|
+
lReturnValue += `: ${quoteIfNecessary(LABEL_QUOTABLE, pTransition.label)}`;
|
|
97
|
+
}
|
|
98
|
+
return lReturnValue;
|
|
99
|
+
}
|
|
100
|
+
function transitions(pTransitions, pIndent = "") {
|
|
101
|
+
return pTransitions
|
|
102
|
+
.map((pTransition) => `${transition(pTransition, pIndent)};\n`)
|
|
103
|
+
.join("");
|
|
104
|
+
}
|
|
105
|
+
export default function renderSmcat(
|
|
106
|
+
pStateMachine,
|
|
107
|
+
_pOptions = {},
|
|
108
|
+
pIndent = "",
|
|
109
|
+
) {
|
|
110
|
+
return (
|
|
111
|
+
states(pStateMachine.states, pIndent) +
|
|
112
|
+
transitions(pStateMachine.transitions || [], pIndent)
|
|
113
|
+
);
|
|
114
|
+
}
|
|
@@ -3,7 +3,7 @@ function flattenStates(pStates, pHasParent = false) {
|
|
|
3
3
|
pStates
|
|
4
4
|
.filter((pState) => Boolean(pState.statemachine))
|
|
5
5
|
.forEach((pState) => {
|
|
6
|
-
if (Object.
|
|
6
|
+
if (Object.hasOwn(pState.statemachine, "states")) {
|
|
7
7
|
lReturnValue = lReturnValue.concat(
|
|
8
8
|
flattenStates(pState.statemachine.states, true),
|
|
9
9
|
);
|
|
@@ -20,10 +20,10 @@ function flattenStates(pStates, pHasParent = false) {
|
|
|
20
20
|
}
|
|
21
21
|
function flattenTransitions(pStateMachine) {
|
|
22
22
|
let lTransitions = [];
|
|
23
|
-
if (Object.
|
|
24
|
-
lTransitions = pStateMachine.transitions;
|
|
23
|
+
if (Object.hasOwn(pStateMachine, "transitions")) {
|
|
24
|
+
lTransitions = structuredClone(pStateMachine.transitions);
|
|
25
25
|
}
|
|
26
|
-
if (Object.
|
|
26
|
+
if (Object.hasOwn(pStateMachine, "states")) {
|
|
27
27
|
pStateMachine.states
|
|
28
28
|
.filter((pState) => Boolean(pState.statemachine))
|
|
29
29
|
.forEach((pState) => {
|
package/dist/version.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = "12.0.
|
|
1
|
+
export const version = "12.0.17";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "state-machine-cat",
|
|
3
|
-
"version": "12.0.
|
|
3
|
+
"version": "12.0.17",
|
|
4
4
|
"description": "write beautiful state charts",
|
|
5
5
|
"main": "./dist/index.mjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
"#*": "./src/*"
|
|
18
18
|
},
|
|
19
19
|
"sideEffects": [
|
|
20
|
-
"dist/render/smcat/smcat.template.cjs",
|
|
21
20
|
"dist/render/dot/dot.states.template.cjs",
|
|
22
21
|
"dist/render/dot/dot.template.cjs"
|
|
23
22
|
],
|
|
@@ -45,9 +44,9 @@
|
|
|
45
44
|
"state-machine-cat": "dist/cli/main.mjs"
|
|
46
45
|
},
|
|
47
46
|
"dependencies": {
|
|
48
|
-
"@hpcc-js/wasm-graphviz": "1.
|
|
47
|
+
"@hpcc-js/wasm-graphviz": "1.7.0",
|
|
49
48
|
"ajv": "8.17.1",
|
|
50
|
-
"fast-xml-parser": "4.5.
|
|
49
|
+
"fast-xml-parser": "4.5.1",
|
|
51
50
|
"handlebars": "4.7.8",
|
|
52
51
|
"he": "1.2.0",
|
|
53
52
|
"semver": "^7.6.2",
|
|
@@ -91,6 +91,10 @@ export interface ITransition {
|
|
|
91
91
|
* The name of the IState the transition is to
|
|
92
92
|
*/
|
|
93
93
|
to: string;
|
|
94
|
+
/**
|
|
95
|
+
* The id of the transition. Unique within the root state machine.
|
|
96
|
+
*/
|
|
97
|
+
id: number;
|
|
94
98
|
/**
|
|
95
99
|
* A display label to represent this transition. Parsers can parse this
|
|
96
100
|
* label into events conditions and actions.
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export default class Counter {
|
|
2
|
-
COUNTER = 0;
|
|
3
|
-
constructor() {
|
|
4
|
-
this.reset();
|
|
5
|
-
}
|
|
6
|
-
reset() {
|
|
7
|
-
this.COUNTER = 0;
|
|
8
|
-
}
|
|
9
|
-
next() {
|
|
10
|
-
return ++this.COUNTER;
|
|
11
|
-
}
|
|
12
|
-
nextAsString() {
|
|
13
|
-
const lBase = 10;
|
|
14
|
-
return this.next().toString(lBase);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import Handlebars from "handlebars/dist/handlebars.runtime.js";
|
|
2
|
-
await import("./smcat.template.cjs");
|
|
3
|
-
const NAME_QUOTABLE = /;|,|{| |\[/;
|
|
4
|
-
const ACTIONS_QUOTABLE = /;|,|{/;
|
|
5
|
-
const LABEL_QUOTABLE = /;|{/;
|
|
6
|
-
function quoteIfNecessary(pRegExp, pString) {
|
|
7
|
-
return pRegExp.test(pString) ? `"${pString}"` : pString;
|
|
8
|
-
}
|
|
9
|
-
Handlebars.registerPartial(
|
|
10
|
-
"smcat.template.hbs",
|
|
11
|
-
Handlebars.templates["smcat.template.hbs"],
|
|
12
|
-
);
|
|
13
|
-
function formatActionType(pString) {
|
|
14
|
-
return pString === "activity" ? "" : `${pString}/ `;
|
|
15
|
-
}
|
|
16
|
-
function flattenActions(pState) {
|
|
17
|
-
return {
|
|
18
|
-
...pState,
|
|
19
|
-
actions: (pState.actions || [])
|
|
20
|
-
.map((pAction) => `${formatActionType(pAction.type)}${pAction.body}`)
|
|
21
|
-
.join("\n "),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
function flagExtendedStateAttributes(pState) {
|
|
25
|
-
if (
|
|
26
|
-
Object.prototype.hasOwnProperty.call(pState, "label") ||
|
|
27
|
-
Object.prototype.hasOwnProperty.call(pState, "typeExplicitlySet") ||
|
|
28
|
-
Object.prototype.hasOwnProperty.call(pState, "color") ||
|
|
29
|
-
Object.prototype.hasOwnProperty.call(pState, "active") ||
|
|
30
|
-
Object.prototype.hasOwnProperty.call(pState, "class")
|
|
31
|
-
) {
|
|
32
|
-
pState.hasExtendedAttributes = true;
|
|
33
|
-
}
|
|
34
|
-
return pState;
|
|
35
|
-
}
|
|
36
|
-
function transformStates(pStates) {
|
|
37
|
-
pStates
|
|
38
|
-
.map(flagExtendedStateAttributes)
|
|
39
|
-
.filter((pState) => pState.statemachine)
|
|
40
|
-
.forEach((pState) => {
|
|
41
|
-
pState.statemachine.states = transformStates(pState.statemachine.states);
|
|
42
|
-
});
|
|
43
|
-
return pStates.map(flattenActions);
|
|
44
|
-
}
|
|
45
|
-
function flagExtendedTransitionAttributes(pTransition) {
|
|
46
|
-
if (
|
|
47
|
-
Object.prototype.hasOwnProperty.call(pTransition, "type") ||
|
|
48
|
-
Object.prototype.hasOwnProperty.call(pTransition, "color") ||
|
|
49
|
-
Object.prototype.hasOwnProperty.call(pTransition, "class")
|
|
50
|
-
) {
|
|
51
|
-
pTransition.hasExtendedAttributes = true;
|
|
52
|
-
}
|
|
53
|
-
return pTransition;
|
|
54
|
-
}
|
|
55
|
-
function transformTransitions(pTransitions) {
|
|
56
|
-
return pTransitions.map(flagExtendedTransitionAttributes);
|
|
57
|
-
}
|
|
58
|
-
Handlebars.registerHelper("quotifyState", (pItem) =>
|
|
59
|
-
quoteIfNecessary(NAME_QUOTABLE, pItem),
|
|
60
|
-
);
|
|
61
|
-
Handlebars.registerHelper("quotifyLabel", (pItem) =>
|
|
62
|
-
quoteIfNecessary(LABEL_QUOTABLE, pItem),
|
|
63
|
-
);
|
|
64
|
-
Handlebars.registerHelper("quotifyActions", (pItem) =>
|
|
65
|
-
quoteIfNecessary(ACTIONS_QUOTABLE, pItem),
|
|
66
|
-
);
|
|
67
|
-
export default function renderSmcat(pStateMachine) {
|
|
68
|
-
return Handlebars.templates["smcat.template.hbs"]({
|
|
69
|
-
...pStateMachine,
|
|
70
|
-
states: transformStates(structuredClone(pStateMachine.states)),
|
|
71
|
-
transitions: transformTransitions(
|
|
72
|
-
structuredClone(pStateMachine.transitions || []),
|
|
73
|
-
),
|
|
74
|
-
});
|
|
75
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var Handlebars=require("handlebars/dist/handlebars.runtime"),template=Handlebars.template,templates=Handlebars.templates=Handlebars.templates||{};templates["smcat.template.hbs"]=template({1:function(l,n,e,t,o){var a=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",i=l.hooks.blockHelperMissing,c=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},s="",p=null!=(p=c(e,"note")||(null!=n?c(n,"note"):n))?p:r,m={name:"note",hash:{},fn:l.program(2,o,0),inverse:l.noop,data:o,loc:{start:{line:2,column:0},end:{line:4,column:9}}},f=typeof p==u?p.call(a,m):p;return null!=(f=c(e,"note")?f:i.call(n,f,m))&&(s+=f),s+=null!=(f=(c(e,"quotifyState")||n&&c(n,"quotifyState")||r).call(a,null!=n?c(n,"name"):n,{name:"quotifyState",hash:{},fn:l.program(4,o,0),inverse:l.noop,data:o,loc:{start:{line:5,column:0},end:{line:5,column:40}}}))?f:"",p=null!=(p=c(e,"hasExtendedAttributes")||(null!=n?c(n,"hasExtendedAttributes"):n))?p:r,m={name:"hasExtendedAttributes",hash:{},fn:l.program(6,o,0),inverse:l.noop,data:o,loc:{start:{line:6,column:4},end:{line:6,column:270}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"hasExtendedAttributes")?f:i.call(n,f,m))&&(s+=f),s+=null!=(f=c(e,"if").call(a,null!=n?c(n,"actions"):n,{name:"if",hash:{},fn:l.program(18,o,0),inverse:l.noop,data:o,loc:{start:{line:7,column:4},end:{line:7,column:28}}}))?f:"",p=null!=(p=c(e,"actions")||(null!=n?c(n,"actions"):n))?p:r,m={name:"actions",hash:{},fn:l.program(20,o,0),inverse:l.noop,data:o,loc:{start:{line:7,column:28},end:{line:7,column:93}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"actions")?f:i.call(n,f,m))&&(s+=f),p=null!=(p=c(e,"statemachine")||(null!=n?c(n,"statemachine"):n))?p:r,m={name:"statemachine",hash:{},fn:l.program(22,o,0),inverse:l.noop,data:o,loc:{start:{line:8,column:4},end:{line:10,column:19}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"statemachine")?f:i.call(n,f,m))&&(s+=f),s+(null!=(f=c(e,"if").call(a,o&&c(o,"last"),{name:"if",hash:{},fn:l.program(24,o,0),inverse:l.program(26,o,0),data:o,loc:{start:{line:11,column:0},end:{line:11,column:30}}}))?f:"")+"\n"},2:function(l,n,e,t,o){return"# "+(null!=(l=l.lambda(n,n))?l:"")+"\n"},4:function(l,n,e,t,o){return""},6:function(l,n,e,t,o){var a=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",i=l.hooks.blockHelperMissing,c=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},s=" [",p=null!=(p=c(e,"typeExplicitlySet")||(null!=n?c(n,"typeExplicitlySet"):n))?p:r,m={name:"typeExplicitlySet",hash:{},fn:l.program(7,o,0),inverse:l.noop,data:o,loc:{start:{line:6,column:32},end:{line:6,column:107}}},f=typeof p==u?p.call(a,m):p;return null!=(f=c(e,"typeExplicitlySet")?f:i.call(n,f,m))&&(s+=f),p=null!=(p=c(e,"label")||(null!=n?c(n,"label"):n))?p:r,m={name:"label",hash:{},fn:l.program(10,o,0),inverse:l.noop,data:o,loc:{start:{line:6,column:107},end:{line:6,column:142}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"label")?f:i.call(n,f,m))&&(s+=f),p=null!=(p=c(e,"color")||(null!=n?c(n,"color"):n))?p:r,m={name:"color",hash:{},fn:l.program(12,o,0),inverse:l.noop,data:o,loc:{start:{line:6,column:142},end:{line:6,column:178}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"color")?f:i.call(n,f,m))&&(s+=f),p=null!=(p=c(e,"class")||(null!=n?c(n,"class"):n))?p:r,m={name:"class",hash:{},fn:l.program(14,o,0),inverse:l.noop,data:o,loc:{start:{line:6,column:178},end:{line:6,column:214}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"class")?f:i.call(n,f,m))&&(s+=f),s+(null!=(f=c(e,"if").call(a,null!=n?c(n,"active"):n,{name:"if",hash:{},fn:l.program(16,o,0),inverse:l.noop,data:o,loc:{start:{line:6,column:214},end:{line:6,column:242}}}))?f:"")+"]"},7:function(l,n,e,t,o){var a=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},r=null!=(r=a(e,"type")||(null!=n?a(n,"type"):n))?r:l.hooks.helperMissing,o={name:"type",hash:{},fn:l.program(8,o,0),inverse:l.noop,data:o,loc:{start:{line:6,column:54},end:{line:6,column:85}}},r="function"==typeof r?r.call(null!=n?n:l.nullContext||{},o):r;return null!=(r=a(e,"type")?r:l.hooks.blockHelperMissing.call(n,r,o))?r:""},8:function(l,n,e,t,o){return"type="+(null!=(l=l.lambda(n,n))?l:"")+" "},10:function(l,n,e,t,o){return'label="'+(null!=(l=l.lambda(n,n))?l:"")+'"'},12:function(l,n,e,t,o){return' color="'+(null!=(l=l.lambda(n,n))?l:"")+'"'},14:function(l,n,e,t,o){return' class="'+(null!=(l=l.lambda(n,n))?l:"")+'"'},16:function(l,n,e,t,o){return" active"},18:function(l,n,e,t,o){return": "},20:function(l,n,e,t,o){var a=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return null!=(e=(a(e,"quotifyActions")||n&&a(n,"quotifyActions")||l.hooks.helperMissing).call(null!=n?n:l.nullContext||{},n,{name:"quotifyActions",hash:{},fn:l.program(4,o,0),inverse:l.noop,data:o,loc:{start:{line:7,column:40},end:{line:7,column:80}}}))?e:""},22:function(l,n,e,t,o){var a=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return" {\n"+(null!=(a=l.invokePartial(a(t,"smcat.template.hbs"),n,{name:"smcat.template.hbs",data:o,indent:" ",helpers:e,partials:t,decorators:l.decorators}))?a:"")+"}"},24:function(l,n,e,t,o){return";"},26:function(l,n,e,t,o){return","},28:function(l,n,e,t,o){var a=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",i=l.hooks.blockHelperMissing,c=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},s="",p=null!=(p=c(e,"note")||(null!=n?c(n,"note"):n))?p:r,m={name:"note",hash:{},fn:l.program(2,o,0),inverse:l.noop,data:o,loc:{start:{line:15,column:0},end:{line:17,column:9}}},f=typeof p==u?p.call(a,m):p;return null!=(f=c(e,"note")?f:i.call(n,f,m))&&(s+=f),s+=(null!=(f=(c(e,"quotifyState")||n&&c(n,"quotifyState")||r).call(a,null!=n?c(n,"from"):n,{name:"quotifyState",hash:{},fn:l.program(4,o,0),inverse:l.noop,data:o,loc:{start:{line:18,column:0},end:{line:18,column:39}}}))?f:"")+" => "+(null!=(f=(c(e,"quotifyState")||n&&c(n,"quotifyState")||r).call(a,null!=n?c(n,"to"):n,{name:"quotifyState",hash:{},fn:l.program(4,o,0),inverse:l.noop,data:o,loc:{start:{line:18,column:43},end:{line:18,column:81}}}))?f:""),p=null!=(p=c(e,"hasExtendedAttributes")||(null!=n?c(n,"hasExtendedAttributes"):n))?p:r,m={name:"hasExtendedAttributes",hash:{},fn:l.program(29,o,0),inverse:l.noop,data:o,loc:{start:{line:19,column:4},end:{line:19,column:130}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"hasExtendedAttributes")?f:i.call(n,f,m))&&(s+=f),p=null!=(p=c(e,"label")||(null!=n?c(n,"label"):n))?p:r,m={name:"label",hash:{},fn:l.program(34,o,0),inverse:l.noop,data:o,loc:{start:{line:20,column:4},end:{line:20,column:62}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"label")?f:i.call(n,f,m))&&(s+=f),s+";\n"},29:function(l,n,e,t,o){var a=null!=n?n:l.nullContext||{},r=l.hooks.helperMissing,u="function",i=l.hooks.blockHelperMissing,c=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},s=" [",p=null!=(p=c(e,"color")||(null!=n?c(n,"color"):n))?p:r,m={name:"color",hash:{},fn:l.program(30,o,0),inverse:l.noop,data:o,loc:{start:{line:19,column:32},end:{line:19,column:68}}},f=typeof p==u?p.call(a,m):p;return null!=(f=c(e,"color")?f:i.call(n,f,m))&&(s+=f),p=null!=(p=c(e,"type")||(null!=n?c(n,"type"):n))?p:r,m={name:"type",hash:{},fn:l.program(32,o,0),inverse:l.noop,data:o,loc:{start:{line:19,column:69},end:{line:19,column:102}}},f=typeof p==u?p.call(a,m):p,null!=(f=c(e,"type")?f:i.call(n,f,m))&&(s+=f),s+"]"},30:function(l,n,e,t,o){return'color="'+(null!=(l=l.lambda(n,n))?l:"")+'"'},32:function(l,n,e,t,o){return" type="+(null!=(l=l.lambda(n,n))?l:"")},34:function(l,n,e,t,o){var a=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]};return": "+(null!=(e=(a(e,"quotifyLabel")||n&&a(n,"quotifyLabel")||l.hooks.helperMissing).call(null!=n?n:l.nullContext||{},n,{name:"quotifyLabel",hash:{},fn:l.program(4,o,0),inverse:l.noop,data:o,loc:{start:{line:20,column:16},end:{line:20,column:52}}}))?e:"")},compiler:[8,">= 4.3.0"],main:function(l,n,e,t,o){var a=null!=n?n:l.nullContext||{},r=l.lookupProperty||function(l,n){if(Object.prototype.hasOwnProperty.call(l,n))return l[n]},u=(null!=(c=r(e,"each").call(a,null!=n?r(n,"states"):n,{name:"each",hash:{},fn:l.program(1,o,0),inverse:l.noop,data:o,loc:{start:{line:1,column:0},end:{line:12,column:9}}}))?c:"")+"\n",i=null!=(i=r(e,"transitions")||(null!=n?r(n,"transitions"):n))?i:l.hooks.helperMissing,o={name:"transitions",hash:{},fn:l.program(28,o,0),inverse:l.noop,data:o,loc:{start:{line:14,column:0},end:{line:21,column:16}}},c="function"==typeof i?i.call(a,o):i;return null!=(c=r(e,"transitions")?c:l.hooks.blockHelperMissing.call(n,c,o))&&(u+=c),u},usePartial:!0,useData:!0});
|