@statewalker/fsm-charts 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -1
- package/dist/StateChart-cXyVRcs-.d.ts +94 -0
- package/dist/StateChart-cXyVRcs-.d.ts.map +1 -0
- package/dist/StateChartIndex-BK2315qj.d.ts +142 -0
- package/dist/StateChartIndex-BK2315qj.d.ts.map +1 -0
- package/dist/StateChartIndex-BOIrc_nq.js +355 -0
- package/dist/StateChartIndex-BOIrc_nq.js.map +1 -0
- package/dist/buildStatechartsPanel-BX7e0GzA.js +494 -0
- package/dist/buildStatechartsPanel-BX7e0GzA.js.map +1 -0
- package/dist/buildStatechartsPanel-hCtZbdiF.d.ts +79 -0
- package/dist/buildStatechartsPanel-hCtZbdiF.d.ts.map +1 -0
- package/dist/defineProperty-C0rC37pP.js +39 -0
- package/dist/description-panels-DI2MNlbK.js +184 -0
- package/dist/description-panels-DI2MNlbK.js.map +1 -0
- package/dist/getLabelDimensions-BY0q7j3D.d.ts +79 -0
- package/dist/getLabelDimensions-BY0q7j3D.d.ts.map +1 -0
- package/dist/getPadding-Cw0e7G2v.js +25 -0
- package/dist/getPadding-Cw0e7G2v.js.map +1 -0
- package/dist/index-config.d.ts +3 -12
- package/dist/index-config.js +2 -2
- package/dist/index-dom.d.ts +2 -49
- package/dist/index-dom.js +2 -2
- package/dist/index-html.d.ts +3 -2
- package/dist/index-html.js +2 -3
- package/dist/index-layout.d.ts +3 -77
- package/dist/index-layout.js +2 -3
- package/dist/index-runtime.d.ts +3 -141
- package/dist/index-runtime.js +2 -2
- package/dist/index.d.ts +11 -10
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -7
- package/dist/layout-Dp671N6q.js +2465 -0
- package/dist/layout-Dp671N6q.js.map +1 -0
- package/dist/newTreeBuilder-CvtLDjGj.d.ts +54 -0
- package/dist/newTreeBuilder-CvtLDjGj.d.ts.map +1 -0
- package/dist/toFsmStateConfig-DlJkyZni.js +135 -0
- package/dist/toFsmStateConfig-DlJkyZni.js.map +1 -0
- package/dist/toFsmStateConfig-DmOlTRjv.d.ts +15 -0
- package/dist/toFsmStateConfig-DmOlTRjv.d.ts.map +1 -0
- package/package.json +52 -27
- package/src/config/concatTransitionsToString.ts +2 -2
- package/src/config/splitTransitionString.ts +1 -3
- package/src/config/toFsmStateConfig.ts +2 -9
- package/src/dom/buildSections.ts +3 -11
- package/src/dom/description-panels.ts +2 -4
- package/src/dom/getStatesDescriptions.ts +3 -9
- package/src/html/buildStatechartStyles.ts +4 -14
- package/src/html/buildStatechartSvg.ts +2 -14
- package/src/html/buildStatechartsPanel.ts +1 -3
- package/src/layout/buildCharts.ts +1 -2
- package/src/layout/buildFlatCharts.ts +6 -8
- package/src/layout/getGraphParamsProvider.ts +3 -12
- package/src/runtime/RuntimeStatechartApi.ts +10 -32
- package/src/runtime/StateChartIndex.ts +6 -23
- package/src/types/GraphParamsProvider.ts +1 -4
- package/src/utils/BasisCurve.ts +5 -14
- package/src/utils/domToText.ts +2 -6
- package/src/utils/getPadding.ts +1 -2
- package/src/utils/newId.ts +2 -1
- package/src/utils/newRegistry.ts +12 -12
- package/src/utils/serializeAttrs.ts +3 -13
- package/src/utils/serializeCss.ts +1 -5
- package/src/utils/serializeStyle.ts +1 -4
- package/src/utils/toKebabCase.ts +1 -4
- package/dist/StateChart-BYBjTmC2.d.ts +0 -82
- package/dist/chunk-2LFUT2C6.js +0 -2691
- package/dist/chunk-ARZYBFNA.js +0 -133
- package/dist/chunk-CR2M4445.js +0 -608
- package/dist/chunk-FIQDLBWD.js +0 -9
- package/dist/chunk-GW2Z65BN.js +0 -429
- package/dist/chunk-PKBMQBKP.js +0 -5
- package/dist/chunk-RZ4FP6JB.js +0 -233
- package/dist/index-html-BBQqYoST.d.ts +0 -75
- package/src/full/index.ts +0 -1
- package/src/full/toFsmStateCharts.ts +0 -119
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.152.0/helpers/esm/typeof.js
|
|
2
|
+
function _typeof(o) {
|
|
3
|
+
"@babel/helpers - typeof";
|
|
4
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
5
|
+
return typeof o;
|
|
6
|
+
} : function(o) {
|
|
7
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
8
|
+
}, _typeof(o);
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region \0@oxc-project+runtime@0.152.0/helpers/esm/toPrimitive.js
|
|
12
|
+
function toPrimitive(t, r) {
|
|
13
|
+
if ("object" != _typeof(t) || !t) return t;
|
|
14
|
+
var e = t[Symbol.toPrimitive];
|
|
15
|
+
if (void 0 !== e) {
|
|
16
|
+
var i = e.call(t, r || "default");
|
|
17
|
+
if ("object" != _typeof(i)) return i;
|
|
18
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
19
|
+
}
|
|
20
|
+
return ("string" === r ? String : Number)(t);
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region \0@oxc-project+runtime@0.152.0/helpers/esm/toPropertyKey.js
|
|
24
|
+
function toPropertyKey(t) {
|
|
25
|
+
var i = toPrimitive(t, "string");
|
|
26
|
+
return "symbol" == _typeof(i) ? i : i + "";
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region \0@oxc-project+runtime@0.152.0/helpers/esm/defineProperty.js
|
|
30
|
+
function _defineProperty(e, r, t) {
|
|
31
|
+
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
32
|
+
value: t,
|
|
33
|
+
enumerable: !0,
|
|
34
|
+
configurable: !0,
|
|
35
|
+
writable: !0
|
|
36
|
+
}) : e[r] = t, e;
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { _defineProperty as t };
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
//#region src/dom/newTreeBuilder.ts
|
|
2
|
+
function newTreeBuilder(context) {
|
|
3
|
+
let level = -1;
|
|
4
|
+
return (newLevel, ...params) => {
|
|
5
|
+
while (level >= 0 && level >= newLevel) context.exit(level--, ...params);
|
|
6
|
+
while (level < newLevel) context.enter(++level, ...params);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/dom/buildSections.ts
|
|
11
|
+
function buildSections(root) {
|
|
12
|
+
const nodes = toDomNodesIterator(root);
|
|
13
|
+
let top = null;
|
|
14
|
+
let peek = null;
|
|
15
|
+
const stack = [];
|
|
16
|
+
const aligner = newTreeBuilder({
|
|
17
|
+
enter(_level, header) {
|
|
18
|
+
const section = {
|
|
19
|
+
header,
|
|
20
|
+
content: [],
|
|
21
|
+
children: []
|
|
22
|
+
};
|
|
23
|
+
top = top || section;
|
|
24
|
+
peek?.children.push(section);
|
|
25
|
+
peek = section;
|
|
26
|
+
stack.push(section);
|
|
27
|
+
},
|
|
28
|
+
exit() {
|
|
29
|
+
stack.pop();
|
|
30
|
+
peek = stack[stack.length - 1];
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
aligner(0);
|
|
34
|
+
const headerLevels = [];
|
|
35
|
+
for (const node of nodes) if (isDomElement(node)) {
|
|
36
|
+
if (/^H[1-6]$/i.test(node.tagName)) {
|
|
37
|
+
const headerLevel = +node.tagName.replace(/^H/, "");
|
|
38
|
+
while (headerLevels.length > 0 && headerLevels[headerLevels.length - 1] >= headerLevel) headerLevels.pop();
|
|
39
|
+
headerLevels.push(headerLevel);
|
|
40
|
+
aligner(headerLevels.length, node);
|
|
41
|
+
} else peek.content.push(node);
|
|
42
|
+
} else peek.content.push(node);
|
|
43
|
+
return top.content.length === 0 && top.children.length === 1 && !top.header ? top.children[0] : top;
|
|
44
|
+
}
|
|
45
|
+
function* visitSectionNodes(section) {
|
|
46
|
+
if (section.header) yield section.header;
|
|
47
|
+
yield* section.content;
|
|
48
|
+
for (const s of vistSections(section, true)) yield* visitSectionNodes(s);
|
|
49
|
+
}
|
|
50
|
+
function* vistSections(root, ignoreRoot = false) {
|
|
51
|
+
!ignoreRoot && (yield root);
|
|
52
|
+
for (const child of root.children) yield* vistSections(child, false);
|
|
53
|
+
}
|
|
54
|
+
function findSection(section, accept) {
|
|
55
|
+
for (const s of vistSections(section)) if (accept(s) === true) return s;
|
|
56
|
+
}
|
|
57
|
+
function isDomElement(node) {
|
|
58
|
+
return node.nodeType === Node.ELEMENT_NODE;
|
|
59
|
+
}
|
|
60
|
+
function* toDomNodesIterator(root) {
|
|
61
|
+
yield* root instanceof Node ? visitDom(root) : root;
|
|
62
|
+
}
|
|
63
|
+
function* visitDom(elm) {
|
|
64
|
+
if (isDomElement(elm) && elm.tagName === "TEMPLATE") elm = elm.content;
|
|
65
|
+
for (let node = elm.firstChild; node; node = node.nextSibling) if (isDomElement(node)) {
|
|
66
|
+
if (node.tagName === "DIV" || node.tagName === "TEMPLATE") yield* visitDom(node);
|
|
67
|
+
else yield node;
|
|
68
|
+
} else yield node;
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
//#region src/dom/getStatesDescriptions.ts
|
|
72
|
+
function* visitStateDescriptions({ element, rootStateKey, removeFromDom = true, splitHeader = (header) => {
|
|
73
|
+
if (!header) return [void 0, ""];
|
|
74
|
+
const text = header.innerText.trim();
|
|
75
|
+
let key;
|
|
76
|
+
let label = text;
|
|
77
|
+
text.replace(/^\s*\[(.*)\]\s*(.*)$/, (_, k, l) => {
|
|
78
|
+
key = k.trim();
|
|
79
|
+
label = l.trim() || key;
|
|
80
|
+
return "";
|
|
81
|
+
});
|
|
82
|
+
return [key, label];
|
|
83
|
+
} }) {
|
|
84
|
+
const rootDescription = findSection(buildSections(element), (section) => {
|
|
85
|
+
if (!section.header) return false;
|
|
86
|
+
const [key] = splitHeader(section.header);
|
|
87
|
+
return key === rootStateKey;
|
|
88
|
+
});
|
|
89
|
+
if (!rootDescription) return;
|
|
90
|
+
if (removeFromDom) for (const node of visitSectionNodes(rootDescription)) {
|
|
91
|
+
if (node.nodeName[0] === "#") continue;
|
|
92
|
+
node.parentElement?.removeChild(node);
|
|
93
|
+
}
|
|
94
|
+
for (const section of vistSections(rootDescription, false)) {
|
|
95
|
+
if (!section.header) continue;
|
|
96
|
+
const [state, title] = splitHeader(section.header);
|
|
97
|
+
if (state) yield {
|
|
98
|
+
state,
|
|
99
|
+
title,
|
|
100
|
+
...section
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function getStatesDescriptions(options) {
|
|
105
|
+
const index = {};
|
|
106
|
+
for (const description of visitStateDescriptions(options)) index[description.state] = description;
|
|
107
|
+
return index;
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/dom/description-panels.ts
|
|
111
|
+
function getStateDescriptionRenderer(options) {
|
|
112
|
+
const descriptionsIndex = getStatesDescriptions(options);
|
|
113
|
+
return (statesStack) => {
|
|
114
|
+
const stateKey = [...statesStack].pop();
|
|
115
|
+
if (!stateKey) return;
|
|
116
|
+
const section = descriptionsIndex[stateKey];
|
|
117
|
+
if (!section) return;
|
|
118
|
+
const elm = renderSections({
|
|
119
|
+
section,
|
|
120
|
+
deep: (_section) => false,
|
|
121
|
+
header: (section) => {
|
|
122
|
+
if (section.state === stateKey) return section.title || section.state;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
const details = elm?.querySelector("details");
|
|
126
|
+
if (details) details.open = true;
|
|
127
|
+
return elm;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function renderSections({ section, deep = (_s) => true, header = (section) => section.header?.cloneNode(true) }) {
|
|
131
|
+
const container = document.createElement("div");
|
|
132
|
+
const id = `id-${String(Math.random()).split(".")[1]}-${Date.now()}`;
|
|
133
|
+
container.setAttribute("id", id);
|
|
134
|
+
if (!section) return container;
|
|
135
|
+
const sectionView = renderSection(section);
|
|
136
|
+
container.append(sectionView);
|
|
137
|
+
const style = renderSectionStyles(id);
|
|
138
|
+
container.append(style);
|
|
139
|
+
return container;
|
|
140
|
+
function renderSectionStyles(id) {
|
|
141
|
+
const prefix = id ? `#${id}` : "";
|
|
142
|
+
const style = document.createElement("style");
|
|
143
|
+
container.appendChild(style);
|
|
144
|
+
style.innerHTML = `
|
|
145
|
+
${prefix} details {
|
|
146
|
+
border: 1px solid #aaa;
|
|
147
|
+
border-radius: 4px;
|
|
148
|
+
padding: 0.5em 0.5em 0;
|
|
149
|
+
margin-bottom: 0.5em;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
${prefix} details > summary {
|
|
153
|
+
font-weight: bold;
|
|
154
|
+
margin: -0.5em -0.5em 0;
|
|
155
|
+
padding: 0.5em;
|
|
156
|
+
cursor: pointer;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
${prefix} details[open] {
|
|
160
|
+
padding: 0.5em;
|
|
161
|
+
}
|
|
162
|
+
`;
|
|
163
|
+
return style;
|
|
164
|
+
}
|
|
165
|
+
function renderSection(section) {
|
|
166
|
+
const details = document.createElement("details");
|
|
167
|
+
const summary = document.createElement("summary");
|
|
168
|
+
details.appendChild(summary);
|
|
169
|
+
const content = document.createElement("div");
|
|
170
|
+
details.appendChild(content);
|
|
171
|
+
const headerElm = header(section);
|
|
172
|
+
headerElm && summary.append(headerElm);
|
|
173
|
+
for (const node of section.content) {
|
|
174
|
+
if (node.nodeName[0] === "#") continue;
|
|
175
|
+
content.append(node.cloneNode(true));
|
|
176
|
+
}
|
|
177
|
+
if (deep(section)) for (const child of section.children) content.append(renderSection(child));
|
|
178
|
+
return details;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//#endregion
|
|
182
|
+
export { buildSections as a, toDomNodesIterator as c, vistSections as d, newTreeBuilder as f, visitStateDescriptions as i, visitDom as l, renderSections as n, findSection as o, getStatesDescriptions as r, isDomElement as s, getStateDescriptionRenderer as t, visitSectionNodes as u };
|
|
183
|
+
|
|
184
|
+
//# sourceMappingURL=description-panels-DI2MNlbK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description-panels-DI2MNlbK.js","names":[],"sources":["../src/dom/newTreeBuilder.ts","../src/dom/buildSections.ts","../src/dom/getStatesDescriptions.ts","../src/dom/description-panels.ts"],"sourcesContent":["export function newTreeBuilder<T extends unknown[] = []>(context: {\n enter: (level: number, ...params: T) => void;\n exit: (level: number, ...params: T) => void;\n}) {\n let level = -1;\n return (newLevel: number, ...params: T) => {\n while (level >= 0 && level >= newLevel) {\n context.exit(level--, ...params);\n }\n while (level < newLevel) {\n context.enter(++level, ...params);\n }\n };\n}\n","import { newTreeBuilder } from \"./newTreeBuilder.js\";\n\nexport type DomSection = {\n header?: HTMLElement;\n content: Node[];\n children: DomSection[];\n};\n\nexport function buildSections(root: HTMLElement | Iterable<Node>): DomSection {\n const nodes = toDomNodesIterator(root);\n let top: DomSection = null!;\n let peek: DomSection = null!;\n const stack: DomSection[] = [];\n const aligner = newTreeBuilder<[HTMLElement?]>({\n enter(_level, header) {\n const section: DomSection = {\n header,\n content: [],\n children: [],\n };\n top = top || section;\n peek?.children.push(section);\n peek = section;\n stack.push(section);\n },\n exit() {\n stack.pop();\n peek = stack[stack.length - 1];\n },\n });\n aligner(0);\n // Track the actual header magnitudes of the open ancestor sections. A header of\n // level L closes every open header at its level or deeper, then opens at the\n // resulting depth. Deriving depth from the real magnitudes (not a ±1 delta) keeps\n // nesting correct for any header sequence and never goes negative.\n const headerLevels: number[] = [];\n for (const node of nodes) {\n if (isDomElement(node)) {\n if (/^H[1-6]$/i.test(node.tagName)) {\n const headerLevel = +node.tagName.replace(/^H/, \"\");\n while (headerLevels.length > 0 && headerLevels[headerLevels.length - 1] >= headerLevel) {\n headerLevels.pop();\n }\n headerLevels.push(headerLevel);\n aligner(headerLevels.length, node);\n } else {\n peek.content.push(node);\n }\n } else {\n peek.content.push(node);\n }\n }\n return top.content.length === 0 && top.children.length === 1 && !top.header\n ? top.children[0]\n : top;\n}\n\nexport function* visitSectionNodes(section: DomSection): Iterable<Node> {\n if (section.header) yield section.header;\n yield* section.content;\n for (const s of vistSections(section, true)) {\n yield* visitSectionNodes(s);\n }\n}\n\nexport function* vistSections(\n root: DomSection,\n ignoreRoot: boolean = false,\n): Generator<DomSection> {\n !ignoreRoot && (yield root);\n for (const child of root.children) {\n yield* vistSections(child, false);\n }\n}\n\nexport function findSection(section: DomSection, accept: (section: DomSection) => boolean) {\n for (const s of vistSections(section)) {\n if (accept(s) === true) return s;\n }\n return undefined;\n}\n\n// --------------------------------------------\n// DOM Iterator utilities\n\nexport function isDomElement(node: Node): node is HTMLElement {\n return node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function* toDomNodesIterator(root: Node | Iterable<Node>): Iterable<Node> {\n yield* root instanceof Node ? visitDom(root) : root;\n}\n\nexport function* visitDom(elm: Node): Iterable<Node> {\n if (isDomElement(elm) && elm.tagName === \"TEMPLATE\") {\n elm = (elm as HTMLTemplateElement).content;\n }\n for (let node = elm.firstChild; node; node = node.nextSibling) {\n if (isDomElement(node)) {\n if (node.tagName === \"DIV\" || node.tagName === \"TEMPLATE\") {\n yield* visitDom(node);\n } else {\n yield node;\n }\n } else {\n yield node;\n }\n }\n}\n","import {\n buildSections,\n type DomSection,\n findSection,\n visitSectionNodes,\n vistSections,\n} from \"./buildSections.js\";\n\nexport type StateDescriptionSection = DomSection & {\n state: string;\n title?: string;\n};\nexport function* visitStateDescriptions({\n element,\n rootStateKey,\n removeFromDom = true,\n splitHeader = (header?: HTMLElement): [stateKey: undefined | string, label: string] => {\n if (!header) return [undefined, \"\"];\n const text = header.innerText.trim();\n let key: string | undefined;\n let label: string = text;\n text.replace(/^\\s*\\[(.*)\\]\\s*(.*)$/, (_, k, l) => {\n key = k.trim();\n label = l.trim() || key;\n return \"\";\n });\n return [key, label];\n },\n}: {\n element: HTMLElement;\n rootStateKey: string;\n removeFromDom?: boolean; // If true - removes state description nodes from the DOM\n splitHeader?: (header?: HTMLElement) => [stateKey: undefined | string, label: string];\n}): Generator<StateDescriptionSection> {\n const docSections = buildSections(element);\n const rootDescription = findSection(docSections, (section: DomSection) => {\n if (!section.header) return false;\n const [key] = splitHeader(section.header);\n return key === rootStateKey;\n });\n if (!rootDescription) return;\n\n // Remove description nodes from DOM\n if (removeFromDom) {\n for (const node of visitSectionNodes(rootDescription)) {\n if (node.nodeName[0] === \"#\") continue;\n node.parentElement?.removeChild(node);\n }\n }\n\n for (const section of vistSections(rootDescription, false)) {\n if (!section.header) continue;\n const [state, title] = splitHeader(section.header);\n if (state)\n yield {\n state,\n title,\n ...section,\n };\n }\n}\n\nexport function getStatesDescriptions(options: {\n element: HTMLElement;\n rootStateKey: string;\n removeFromDom?: boolean; // If true - removes state description nodes from the DOM\n splitHeader?: (header?: HTMLElement) => [stateKey: undefined | string, label: string];\n}): { [state: string]: StateDescriptionSection } {\n const index: { [state: string]: StateDescriptionSection } = {};\n for (const description of visitStateDescriptions(options)) {\n index[description.state] = description;\n }\n return index;\n}\n","import type { DomSection } from \"./buildSections.js\";\nimport { getStatesDescriptions } from \"./getStatesDescriptions.js\";\n\nexport function getStateDescriptionRenderer(options: {\n element: HTMLElement;\n rootStateKey: string;\n splitHeader?: (header?: HTMLElement) => [stateKey: undefined | string, label: string];\n}) {\n const descriptionsIndex = getStatesDescriptions(options);\n\n return (statesStack: string[]) => {\n const stateKey: string | undefined = [...statesStack].pop();\n if (!stateKey) return;\n\n const section = descriptionsIndex[stateKey];\n if (!section) return;\n\n const elm = renderSections({\n section,\n deep: (_section) => false, // section.state !== options.rootStateKey, // ???\n header: (section) => {\n if (section.state === stateKey) {\n return section.title || section.state;\n }\n return;\n },\n });\n const details = elm?.querySelector(\"details\");\n if (details) details.open = true;\n return elm;\n };\n}\n\nexport function renderSections<T extends DomSection>({\n section,\n deep = (_s) => true,\n header = (section) => section.header?.cloneNode(true) as Node,\n}: {\n section: T;\n deep?: (s: T) => boolean;\n header?: (section: T) => undefined | string | Node;\n}) {\n const container = document.createElement(\"div\");\n const id = `id-${String(Math.random()).split(\".\")[1]}-${Date.now()}`;\n container.setAttribute(\"id\", id);\n if (!section) return container;\n\n const sectionView = renderSection(section);\n container.append(sectionView);\n const style = renderSectionStyles(id);\n container.append(style);\n return container;\n\n function renderSectionStyles(id?: string) {\n const prefix = id ? `#${id}` : \"\";\n const style = document.createElement(\"style\");\n container.appendChild(style);\n style.innerHTML = `\n ${prefix} details {\n border: 1px solid #aaa;\n border-radius: 4px;\n padding: 0.5em 0.5em 0;\n margin-bottom: 0.5em;\n }\n \n ${prefix} details > summary {\n font-weight: bold;\n margin: -0.5em -0.5em 0;\n padding: 0.5em;\n cursor: pointer;\n }\n \n ${prefix} details[open] {\n padding: 0.5em;\n }\n `;\n return style;\n }\n function renderSection(section: T) {\n const details = document.createElement(\"details\");\n const summary = document.createElement(\"summary\");\n details.appendChild(summary);\n const content = document.createElement(\"div\");\n details.appendChild(content);\n const headerElm = header(section);\n headerElm && summary.append(headerElm);\n for (const node of section.content) {\n if (node.nodeName[0] === \"#\") continue;\n content.append(node.cloneNode(true));\n }\n if (deep(section)) {\n for (const child of section.children) {\n content.append(renderSection(child as T));\n }\n }\n return details;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { l as FsmStateConfig, n as TransitionsGraph, o as Padding, s as GraphParamsProvider, t as StateChart, u as Transition } from "./StateChart-cXyVRcs-.js";
|
|
2
|
+
//#region src/layout/buildCharts.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Build graphs corresponding to the specified transitions.
|
|
5
|
+
* @param config - State configuration with transitions and sub-states.
|
|
6
|
+
* @param newId - A function that generates unique ids for nodes and edges.
|
|
7
|
+
* @param getStateParams - A function that returns the dimensions of a state node.
|
|
8
|
+
* @param getTransitionParams - A function that returns the dimensions of a transition edge.
|
|
9
|
+
* @param initialStateKey - The key for the initial state.
|
|
10
|
+
* @param finalStateKey - The key for the final state.
|
|
11
|
+
* @returns {StateChart} - The graph with nodes and edges.
|
|
12
|
+
*/
|
|
13
|
+
declare function buildCharts({ lodash, config, newId, getStateParams, getStateLabel, getTransitionParams, padding, vertical, initialStateKey, finalStateKey, direction }: {
|
|
14
|
+
config: FsmStateConfig;
|
|
15
|
+
lodash: any;
|
|
16
|
+
newId: (prefix: string) => string;
|
|
17
|
+
initialStateKey?: string;
|
|
18
|
+
finalStateKey?: string;
|
|
19
|
+
padding?: Padding;
|
|
20
|
+
vertical?: boolean;
|
|
21
|
+
direction?: "tb" | "bt" | "lr" | "rl";
|
|
22
|
+
getStateLabel?: (stateKey: string) => string | undefined;
|
|
23
|
+
} & GraphParamsProvider): StateChart;
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/layout/buildFlatCharts.d.ts
|
|
26
|
+
/**
|
|
27
|
+
* Build graphs corresponding to the specified transitions.
|
|
28
|
+
* @param transitions - The transitions between states.
|
|
29
|
+
* @param newId - A function that generates unique ids for nodes and edges.
|
|
30
|
+
* @param getStateParams - A function that returns the dimensions of a state node.
|
|
31
|
+
* @param getTransitionParams - A function that returns the dimensions of a transition edge.
|
|
32
|
+
* @param initialStateKey - The key for the initial state.
|
|
33
|
+
* @param finalStateKey - The key for the final state.
|
|
34
|
+
* @param vertical - Whether the graph should be vertical.
|
|
35
|
+
* @returns {TransitionsGraph} - The graph with nodes and edges.
|
|
36
|
+
*/
|
|
37
|
+
declare function buildFlatCharts({ lodash, transitions, newId, getStateParams, getTransitionParams, padding, initialStateKey, finalStateKey, vertical, direction }: {
|
|
38
|
+
transitions?: Transition[];
|
|
39
|
+
lodash: any;
|
|
40
|
+
newId: (prefix: string) => string;
|
|
41
|
+
initialStateKey?: string;
|
|
42
|
+
finalStateKey?: string;
|
|
43
|
+
vertical?: boolean;
|
|
44
|
+
padding?: Padding;
|
|
45
|
+
direction?: "tb" | "bt" | "lr" | "rl";
|
|
46
|
+
} & GraphParamsProvider): TransitionsGraph;
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region src/layout/getGraphParamsProvider.d.ts
|
|
49
|
+
/**
|
|
50
|
+
* Provides default functions measuring dimensions for state nodes and transition edges in the graph.
|
|
51
|
+
* @param fontSize - The font size for the state and transition labels.
|
|
52
|
+
* @param stateFontSize - The font size for the state labels.
|
|
53
|
+
* @param stateTextPadding - The padding around the state labels.
|
|
54
|
+
* @param transitionsFontSize - The font size for the transition labels.
|
|
55
|
+
* @param transitionsTextPadding - The padding around the transition labels.
|
|
56
|
+
*/
|
|
57
|
+
declare function getGraphParamsProvider({ fontSize, stateFontSize, stateTextPadding, transitionsFontSize, transitionsTextPadding, getStateLabel, getTransitionLabel }?: {
|
|
58
|
+
fontSize?: number;
|
|
59
|
+
stateFontSize?: number;
|
|
60
|
+
stateTextPadding?: Padding;
|
|
61
|
+
transitionsFontSize?: number;
|
|
62
|
+
transitionsTextPadding?: Padding;
|
|
63
|
+
getStateLabel?: (state: string) => string;
|
|
64
|
+
getTransitionLabel?: (fromState: string, event: string, toState: string) => string;
|
|
65
|
+
}): GraphParamsProvider;
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region src/layout/getLabelDimensions.d.ts
|
|
68
|
+
declare function getLabelDimensions(label: string, { padding, fontSize, getCharWidth, lineGap }?: {
|
|
69
|
+
padding?: Padding;
|
|
70
|
+
fontSize?: number;
|
|
71
|
+
getCharWidth?: (char: string) => number;
|
|
72
|
+
lineGap?: number;
|
|
73
|
+
}): {
|
|
74
|
+
width: number;
|
|
75
|
+
height: number;
|
|
76
|
+
};
|
|
77
|
+
//#endregion
|
|
78
|
+
export { buildCharts as i, getGraphParamsProvider as n, buildFlatCharts as r, getLabelDimensions as t };
|
|
79
|
+
//# sourceMappingURL=getLabelDimensions-BY0q7j3D.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLabelDimensions-BY0q7j3D.d.ts","names":[],"sources":["../src/layout/buildCharts.ts","../src/layout/buildFlatCharts.ts","../src/layout/getGraphParamsProvider.ts","../src/layout/getLabelDimensions.ts"],"mappings":";;;;;;;;;;;;iBAgBgB,cACd,QACA,QACA,OACA,gBACA,eACA,qBACA,SACA,UACA,iBACA,eACA;EAEA,QAAQ;EACR;EACA,QAAQ;EACR;EACA;EACA,UAAU;EACV;EACA;EACA,iBAAiB;IACf,sBAAsB;;;;;;;;;;;;;;iBCbV,kBACd,QACA,aACA,OACA,gBACA,qBACA,SACA,iBACA,eACA,UACA;EAEA,cAAc;EACd;EACA,QAAQ;EACR;EACA;EACA;EACA,UAAU;EACV;IACE,sBAAsB;;;;;;;;;;;iBChCV,yBACd,UACA,eACA,kBACA,qBACA,wBACA,eACA;EAEA;EACA;EACA,mBAAmB;EACnB;EACA,yBAAyB;EACzB,iBAAiB;EACjB,sBAAsB,mBAAmB,eAAe;IACjD;;;iBCzBO,mBACd,iBAEE,SACA,UACA,cACA;EAEA,UAAU;EACV;EACA,gBAAgB;EAChB;;EAmBA;EACA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/utils/getPadding.ts
|
|
2
|
+
/**
|
|
3
|
+
* Expands a padding value to a 4-element array: [top, right, bottom, left].
|
|
4
|
+
* @param padding padding value to expand
|
|
5
|
+
* @returns a 4-element array representing the padding
|
|
6
|
+
*/
|
|
7
|
+
function getPadding(padding) {
|
|
8
|
+
if (typeof padding === "number") return [
|
|
9
|
+
padding,
|
|
10
|
+
padding,
|
|
11
|
+
padding,
|
|
12
|
+
padding
|
|
13
|
+
];
|
|
14
|
+
if (padding.length === 2) return [
|
|
15
|
+
padding[0],
|
|
16
|
+
padding[1],
|
|
17
|
+
padding[0],
|
|
18
|
+
padding[1]
|
|
19
|
+
];
|
|
20
|
+
return padding;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { getPadding as t };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=getPadding-Cw0e7G2v.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPadding-Cw0e7G2v.js","names":[],"sources":["../src/utils/getPadding.ts"],"sourcesContent":["import type { Padding } from \"../types/Padding.js\";\n\n/**\n * Expands a padding value to a 4-element array: [top, right, bottom, left].\n * @param padding padding value to expand\n * @returns a 4-element array representing the padding\n */\nexport function getPadding(padding: Padding): [number, number, number, number] {\n if (typeof padding === \"number\") return [padding, padding, padding, padding];\n if (padding.length === 2) return [padding[0], padding[1], padding[0], padding[1]];\n return padding;\n}\n"],"mappings":";;;;;;AAOA,SAAgB,WAAW,SAAoD;CAC7E,IAAI,OAAO,YAAY,UAAU,OAAO;EAAC;EAAS;EAAS;EAAS;CAAO;CAC3E,IAAI,QAAQ,WAAW,GAAG,OAAO;EAAC,QAAQ;EAAI,QAAQ;EAAI,QAAQ;EAAI,QAAQ;CAAE;CAChF,OAAO;AACT"}
|
package/dist/index-config.d.ts
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
declare function concatTransitionsToString(transitions: Transition[]): string[];
|
|
5
|
-
|
|
6
|
-
declare function serializeProcessConfig(config: FsmStateConfig | undefined): string;
|
|
7
|
-
|
|
8
|
-
declare function splitTransitionString(str: string): Transition[];
|
|
9
|
-
|
|
10
|
-
declare function toFsmStateConfig(json: any): FsmStateConfig | undefined;
|
|
11
|
-
|
|
12
|
-
export { FsmStateConfig, Transition, concatTransitionsToString, serializeProcessConfig, splitTransitionString, toFsmStateConfig };
|
|
1
|
+
import { a as Position, c as Label, d as Dimensions, i as StateGraphNode, l as FsmStateConfig, n as TransitionsGraph, o as Padding, r as StateGraphEdge, s as GraphParamsProvider, t as StateChart, u as Transition } from "./StateChart-cXyVRcs-.js";
|
|
2
|
+
import { i as concatTransitionsToString, n as splitTransitionString, r as serializeProcessConfig, t as toFsmStateConfig } from "./toFsmStateConfig-DmOlTRjv.js";
|
|
3
|
+
export { type Dimensions, type FsmStateConfig, type GraphParamsProvider, type Label, type Padding, type Position, type StateChart, type StateGraphEdge, type StateGraphNode, type Transition, type TransitionsGraph, concatTransitionsToString, serializeProcessConfig, splitTransitionString, toFsmStateConfig };
|
package/dist/index-config.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { i as concatTransitionsToString, n as splitTransitionString, r as serializeProcessConfig, t as toFsmStateConfig } from "./toFsmStateConfig-DlJkyZni.js";
|
|
2
|
+
export { concatTransitionsToString, serializeProcessConfig, splitTransitionString, toFsmStateConfig };
|
package/dist/index-dom.d.ts
CHANGED
|
@@ -1,49 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
content: Node[];
|
|
4
|
-
children: DomSection[];
|
|
5
|
-
};
|
|
6
|
-
declare function buildSections(root: HTMLElement | Iterable<Node>): DomSection;
|
|
7
|
-
declare function visitSectionNodes(section: DomSection): Iterable<Node>;
|
|
8
|
-
declare function vistSections(root: DomSection, ignoreRoot?: boolean): Generator<DomSection>;
|
|
9
|
-
declare function findSection(section: DomSection, accept: (section: DomSection) => boolean): DomSection | undefined;
|
|
10
|
-
declare function isDomElement(node: Node): node is HTMLElement;
|
|
11
|
-
declare function toDomNodesIterator(root: Node | Iterable<Node>): Iterable<Node>;
|
|
12
|
-
declare function visitDom(elm: Node): Iterable<Node>;
|
|
13
|
-
|
|
14
|
-
declare function getStateDescriptionRenderer(options: {
|
|
15
|
-
element: HTMLElement;
|
|
16
|
-
rootStateKey: string;
|
|
17
|
-
splitHeader?: (header?: HTMLElement) => [stateKey: undefined | string, label: string];
|
|
18
|
-
}): (statesStack: string[]) => HTMLDivElement | undefined;
|
|
19
|
-
declare function renderSections<T extends DomSection>({ section, deep, header, }: {
|
|
20
|
-
section: T;
|
|
21
|
-
deep?: (s: T) => boolean;
|
|
22
|
-
header?: (section: T) => undefined | string | Node;
|
|
23
|
-
}): HTMLDivElement;
|
|
24
|
-
|
|
25
|
-
type StateDescriptionSection = DomSection & {
|
|
26
|
-
state: string;
|
|
27
|
-
title?: string;
|
|
28
|
-
};
|
|
29
|
-
declare function visitStateDescriptions({ element, rootStateKey, removeFromDom, splitHeader, }: {
|
|
30
|
-
element: HTMLElement;
|
|
31
|
-
rootStateKey: string;
|
|
32
|
-
removeFromDom?: boolean;
|
|
33
|
-
splitHeader?: (header?: HTMLElement) => [stateKey: undefined | string, label: string];
|
|
34
|
-
}): Generator<StateDescriptionSection>;
|
|
35
|
-
declare function getStatesDescriptions(options: {
|
|
36
|
-
element: HTMLElement;
|
|
37
|
-
rootStateKey: string;
|
|
38
|
-
removeFromDom?: boolean;
|
|
39
|
-
splitHeader?: (header?: HTMLElement) => [stateKey: undefined | string, label: string];
|
|
40
|
-
}): {
|
|
41
|
-
[state: string]: StateDescriptionSection;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
declare function newTreeBuilder<T extends unknown[] = []>(context: {
|
|
45
|
-
enter: (level: number, ...params: T) => void;
|
|
46
|
-
exit: (level: number, ...params: T) => void;
|
|
47
|
-
}): (newLevel: number, ...params: T) => void;
|
|
48
|
-
|
|
49
|
-
export { type DomSection, type StateDescriptionSection, buildSections, findSection, getStateDescriptionRenderer, getStatesDescriptions, isDomElement, newTreeBuilder, renderSections, toDomNodesIterator, visitDom, visitSectionNodes, visitStateDescriptions, vistSections };
|
|
1
|
+
import { a as getStateDescriptionRenderer, c as buildSections, d as toDomNodesIterator, f as visitDom, i as visitStateDescriptions, l as findSection, m as vistSections, n as StateDescriptionSection, o as renderSections, p as visitSectionNodes, r as getStatesDescriptions, s as DomSection, t as newTreeBuilder, u as isDomElement } from "./newTreeBuilder-CvtLDjGj.js";
|
|
2
|
+
export { DomSection, StateDescriptionSection, buildSections, findSection, getStateDescriptionRenderer, getStatesDescriptions, isDomElement, newTreeBuilder, renderSections, toDomNodesIterator, visitDom, visitSectionNodes, visitStateDescriptions, vistSections };
|
package/dist/index-dom.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { a as buildSections, c as toDomNodesIterator, d as vistSections, f as newTreeBuilder, i as visitStateDescriptions, l as visitDom, n as renderSections, o as findSection, r as getStatesDescriptions, s as isDomElement, t as getStateDescriptionRenderer, u as visitSectionNodes } from "./description-panels-DI2MNlbK.js";
|
|
2
|
+
export { buildSections, findSection, getStateDescriptionRenderer, getStatesDescriptions, isDomElement, newTreeBuilder, renderSections, toDomNodesIterator, visitDom, visitSectionNodes, visitStateDescriptions, vistSections };
|
package/dist/index-html.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { a as Position, c as Label, d as Dimensions, i as StateGraphNode, l as FsmStateConfig, n as TransitionsGraph, o as Padding, r as StateGraphEdge, s as GraphParamsProvider, t as StateChart, u as Transition } from "./StateChart-cXyVRcs-.js";
|
|
2
|
+
import { a as buildStateDetailsStyle, c as buildStatechartStylesWithModifier, i as activeTransitionsStyle, l as selectedStatesStyle, n as buildStatechartSvg, o as buildStateDetailsStyleWithModifier, p as buildStatechartCss, r as activeStatesStyle, s as buildStatechartStyles, t as buildStatechartsPanel, u as selectedTransitionsStyle } from "./buildStatechartsPanel-hCtZbdiF.js";
|
|
3
|
+
export { type Dimensions, type FsmStateConfig, type GraphParamsProvider, type Label, type Padding, type Position, type StateChart, type StateGraphEdge, type StateGraphNode, type Transition, type TransitionsGraph, activeStatesStyle, activeTransitionsStyle, buildStateDetailsStyle, buildStateDetailsStyleWithModifier, buildStatechartCss, buildStatechartStyles, buildStatechartStylesWithModifier, buildStatechartSvg, buildStatechartsPanel, selectedStatesStyle, selectedTransitionsStyle };
|
package/dist/index-html.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import './chunk-PKBMQBKP.js';
|
|
1
|
+
import { a as activeTransitionsStyle, c as buildStatechartStyles, d as selectedTransitionsStyle, i as activeStatesStyle, l as buildStatechartStylesWithModifier, n as buildStatechartSvg, o as buildStateDetailsStyle, r as buildStatechartCss, s as buildStateDetailsStyleWithModifier, t as buildStatechartsPanel, u as selectedStatesStyle } from "./buildStatechartsPanel-BX7e0GzA.js";
|
|
2
|
+
export { activeStatesStyle, activeTransitionsStyle, buildStateDetailsStyle, buildStateDetailsStyleWithModifier, buildStatechartCss, buildStatechartStyles, buildStatechartStylesWithModifier, buildStatechartSvg, buildStatechartsPanel, selectedStatesStyle, selectedTransitionsStyle };
|
package/dist/index-layout.d.ts
CHANGED
|
@@ -1,77 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Build graphs corresponding to the specified transitions.
|
|
6
|
-
* @param config - State configuration with transitions and sub-states.
|
|
7
|
-
* @param newId - A function that generates unique ids for nodes and edges.
|
|
8
|
-
* @param getStateParams - A function that returns the dimensions of a state node.
|
|
9
|
-
* @param getTransitionParams - A function that returns the dimensions of a transition edge.
|
|
10
|
-
* @param initialStateKey - The key for the initial state.
|
|
11
|
-
* @param finalStateKey - The key for the final state.
|
|
12
|
-
* @returns {StateChart} - The graph with nodes and edges.
|
|
13
|
-
*/
|
|
14
|
-
declare function buildCharts({ lodash, config, newId, getStateParams, getStateLabel, getTransitionParams, padding, vertical, initialStateKey, finalStateKey, direction, }: {
|
|
15
|
-
config: FsmStateConfig;
|
|
16
|
-
lodash: any;
|
|
17
|
-
newId: (prefix: string) => string;
|
|
18
|
-
initialStateKey?: string;
|
|
19
|
-
finalStateKey?: string;
|
|
20
|
-
padding?: Padding;
|
|
21
|
-
vertical?: boolean;
|
|
22
|
-
direction?: "tb" | "bt" | "lr" | "rl";
|
|
23
|
-
getStateLabel?: (stateKey: string) => string | undefined;
|
|
24
|
-
} & GraphParamsProvider): StateChart;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Build graphs corresponding to the specified transitions.
|
|
28
|
-
* @param transitions - The transitions between states.
|
|
29
|
-
* @param newId - A function that generates unique ids for nodes and edges.
|
|
30
|
-
* @param getStateParams - A function that returns the dimensions of a state node.
|
|
31
|
-
* @param getTransitionParams - A function that returns the dimensions of a transition edge.
|
|
32
|
-
* @param initialStateKey - The key for the initial state.
|
|
33
|
-
* @param finalStateKey - The key for the final state.
|
|
34
|
-
* @param vertical - Whether the graph should be vertical.
|
|
35
|
-
* @returns {TransitionsGraph} - The graph with nodes and edges.
|
|
36
|
-
*/
|
|
37
|
-
declare function buildFlatCharts({ lodash, transitions, newId, getStateParams, getTransitionParams, padding, initialStateKey, finalStateKey, vertical, direction, }: {
|
|
38
|
-
transitions?: Transition[];
|
|
39
|
-
lodash: any;
|
|
40
|
-
newId: (prefix: string) => string;
|
|
41
|
-
initialStateKey?: string;
|
|
42
|
-
finalStateKey?: string;
|
|
43
|
-
vertical?: boolean;
|
|
44
|
-
padding?: Padding;
|
|
45
|
-
direction?: "tb" | "bt" | "lr" | "rl";
|
|
46
|
-
} & GraphParamsProvider): TransitionsGraph;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Provides default functions measuring dimensions for state nodes and transition edges in the graph.
|
|
50
|
-
* @param fontSize - The font size for the state and transition labels.
|
|
51
|
-
* @param stateFontSize - The font size for the state labels.
|
|
52
|
-
* @param stateTextPadding - The padding around the state labels.
|
|
53
|
-
* @param transitionsFontSize - The font size for the transition labels.
|
|
54
|
-
* @param transitionsTextPadding - The padding around the transition labels.
|
|
55
|
-
*/
|
|
56
|
-
declare function getGraphParamsProvider({ fontSize, stateFontSize, stateTextPadding, transitionsFontSize, transitionsTextPadding, getStateLabel, getTransitionLabel, }?: {
|
|
57
|
-
fontSize?: number;
|
|
58
|
-
stateFontSize?: number;
|
|
59
|
-
stateTextPadding?: Padding;
|
|
60
|
-
transitionsFontSize?: number;
|
|
61
|
-
transitionsTextPadding?: Padding;
|
|
62
|
-
getStateLabel?: (state: string) => string;
|
|
63
|
-
getTransitionLabel?: (fromState: string, event: string, toState: string) => string;
|
|
64
|
-
}): GraphParamsProvider;
|
|
65
|
-
|
|
66
|
-
declare function getLabelDimensions(label: string, { padding, fontSize, getCharWidth, // Golden ratio and all that jazz :-)
|
|
67
|
-
lineGap, }?: {
|
|
68
|
-
padding?: Padding;
|
|
69
|
-
fontSize?: number;
|
|
70
|
-
getCharWidth?: (char: string) => number;
|
|
71
|
-
lineGap?: number;
|
|
72
|
-
}): {
|
|
73
|
-
width: number;
|
|
74
|
-
height: number;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export { FsmStateConfig, GraphParamsProvider, Padding, StateChart, Transition, TransitionsGraph, buildCharts, buildFlatCharts, getGraphParamsProvider, getLabelDimensions };
|
|
1
|
+
import { a as Position, c as Label, d as Dimensions, i as StateGraphNode, l as FsmStateConfig, n as TransitionsGraph, o as Padding, r as StateGraphEdge, s as GraphParamsProvider, t as StateChart, u as Transition } from "./StateChart-cXyVRcs-.js";
|
|
2
|
+
import { i as buildCharts, n as getGraphParamsProvider, r as buildFlatCharts, t as getLabelDimensions } from "./getLabelDimensions-BY0q7j3D.js";
|
|
3
|
+
export { type Dimensions, type FsmStateConfig, type GraphParamsProvider, type Label, type Padding, type Position, type StateChart, type StateGraphEdge, type StateGraphNode, type Transition, type TransitionsGraph, buildCharts, buildFlatCharts, getGraphParamsProvider, getLabelDimensions };
|
package/dist/index-layout.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import './chunk-PKBMQBKP.js';
|
|
1
|
+
import { i as buildFlatCharts, n as getLabelDimensions, r as buildCharts, t as getGraphParamsProvider } from "./layout-Dp671N6q.js";
|
|
2
|
+
export { buildCharts, buildFlatCharts, getGraphParamsProvider, getLabelDimensions };
|