stickyflow 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +157 -0
- package/LICENSE +202 -0
- package/README.md +167 -2
- package/dist/chunk-34PK7HEU.cjs +842 -0
- package/dist/chunk-34PK7HEU.cjs.map +1 -0
- package/dist/chunk-6JKNT2YC.js +4685 -0
- package/dist/chunk-6JKNT2YC.js.map +1 -0
- package/dist/chunk-6LQJUAD4.js +801 -0
- package/dist/chunk-6LQJUAD4.js.map +1 -0
- package/dist/chunk-IIOJFR73.cjs +3671 -0
- package/dist/chunk-IIOJFR73.cjs.map +1 -0
- package/dist/chunk-KFJIFHXG.js +8559 -0
- package/dist/chunk-KFJIFHXG.js.map +1 -0
- package/dist/chunk-N6WVHOUQ.js +3665 -0
- package/dist/chunk-N6WVHOUQ.js.map +1 -0
- package/dist/chunk-S5BVAAEF.cjs +8568 -0
- package/dist/chunk-S5BVAAEF.cjs.map +1 -0
- package/dist/chunk-YM3XFBI4.cjs +4814 -0
- package/dist/chunk-YM3XFBI4.cjs.map +1 -0
- package/dist/index.cjs +1167 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +335 -0
- package/dist/index.d.ts +335 -0
- package/dist/index.js +1097 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction/index.cjs +7358 -0
- package/dist/interaction/index.cjs.map +1 -0
- package/dist/interaction/index.d.cts +273 -0
- package/dist/interaction/index.d.ts +273 -0
- package/dist/interaction/index.js +7333 -0
- package/dist/interaction/index.js.map +1 -0
- package/dist/render-r1GYvjNm.d.cts +970 -0
- package/dist/render-r1GYvjNm.d.ts +970 -0
- package/dist/runtimeTypes-ByiafBwg.d.ts +239 -0
- package/dist/runtimeTypes-DwLeD-em.d.cts +239 -0
- package/dist/stickyflow-diagram.global.js +1442 -0
- package/dist/stickyflow-diagram.global.js.map +1 -0
- package/dist/types-T7W2yTQF.d.cts +116 -0
- package/dist/types-ndGA1kbl.d.ts +116 -0
- package/dist/viewer/index.cjs +31 -0
- package/dist/viewer/index.cjs.map +1 -0
- package/dist/viewer/index.d.cts +44 -0
- package/dist/viewer/index.d.ts +44 -0
- package/dist/viewer/index.js +6 -0
- package/dist/viewer/index.js.map +1 -0
- package/dist/web-component/index.cjs +144 -0
- package/dist/web-component/index.cjs.map +1 -0
- package/dist/web-component/index.d.cts +31 -0
- package/dist/web-component/index.d.ts +31 -0
- package/dist/web-component/index.js +141 -0
- package/dist/web-component/index.js.map +1 -0
- package/package.json +81 -4
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { createViewer } from '../chunk-N6WVHOUQ.js';
|
|
2
|
+
import { render } from '../chunk-KFJIFHXG.js';
|
|
3
|
+
import '../chunk-6LQJUAD4.js';
|
|
4
|
+
import '../chunk-6JKNT2YC.js';
|
|
5
|
+
|
|
6
|
+
// src/runtime/webComponent/config.ts
|
|
7
|
+
var OBSERVED_ATTRS = ["source", "interactive", "padding", "diagram-id"];
|
|
8
|
+
var boolAttr = (value) => value !== null && value !== "false";
|
|
9
|
+
function readConfig(getAttribute) {
|
|
10
|
+
const paddingRaw = getAttribute("padding");
|
|
11
|
+
const padding = paddingRaw != null && paddingRaw !== "" && Number.isFinite(Number(paddingRaw)) ? Number(paddingRaw) : void 0;
|
|
12
|
+
return {
|
|
13
|
+
source: getAttribute("source"),
|
|
14
|
+
interactive: boolAttr(getAttribute("interactive")),
|
|
15
|
+
padding,
|
|
16
|
+
diagramId: getAttribute("diagram-id") ?? void 0
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// src/runtime/webComponent/shadowView.ts
|
|
21
|
+
var SHADOW_STYLE = `
|
|
22
|
+
:host { display: block; position: relative; }
|
|
23
|
+
.sf-container { width: 100%; height: 100%; }
|
|
24
|
+
svg { display: block; max-width: 100%; }
|
|
25
|
+
.sf-error { color: #b91c1c; font: 13px/1.4 system-ui, sans-serif; padding: 8px; white-space: pre-wrap; }
|
|
26
|
+
[data-sf-role="entity"], [data-sf-role="link"] { cursor: pointer; }
|
|
27
|
+
[data-sf-selected] { stroke: #2563eb !important; stroke-width: 4 !important; }
|
|
28
|
+
`;
|
|
29
|
+
function createShadowContainer(root) {
|
|
30
|
+
const style = document.createElement("style");
|
|
31
|
+
style.textContent = SHADOW_STYLE;
|
|
32
|
+
const container = document.createElement("div");
|
|
33
|
+
container.className = "sf-container";
|
|
34
|
+
root.append(style, container);
|
|
35
|
+
return container;
|
|
36
|
+
}
|
|
37
|
+
function showRenderError(container, error) {
|
|
38
|
+
const box = document.createElement("div");
|
|
39
|
+
box.className = "sf-error";
|
|
40
|
+
box.textContent = `stickyflow: ${error.message ?? error}`;
|
|
41
|
+
container.replaceChildren(box);
|
|
42
|
+
}
|
|
43
|
+
function mountInteractiveDiagram(container, source, config) {
|
|
44
|
+
return createViewer({
|
|
45
|
+
container,
|
|
46
|
+
source,
|
|
47
|
+
interactive: true,
|
|
48
|
+
diagramId: config.diagramId,
|
|
49
|
+
renderOptions: { padding: config.padding }
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function mountStaticDiagram(container, source, config) {
|
|
53
|
+
container.innerHTML = render(source, { padding: config.padding }).svg;
|
|
54
|
+
}
|
|
55
|
+
function mountShadowDiagram(root, config) {
|
|
56
|
+
const container = createShadowContainer(root);
|
|
57
|
+
if (config.source === null) {
|
|
58
|
+
return { viewer: null, rendered: false };
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const viewer = config.interactive ? mountInteractiveDiagram(container, config.source, config) : null;
|
|
62
|
+
if (!config.interactive) {
|
|
63
|
+
mountStaticDiagram(container, config.source, config);
|
|
64
|
+
}
|
|
65
|
+
return { viewer, rendered: true };
|
|
66
|
+
} catch (error) {
|
|
67
|
+
showRenderError(container, error);
|
|
68
|
+
return { viewer: null, rendered: false };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// src/runtime/webComponent/element.ts
|
|
73
|
+
var ElementBase = typeof HTMLElement === "undefined" ? class {
|
|
74
|
+
} : HTMLElement;
|
|
75
|
+
var StickyflowDiagram = class extends ElementBase {
|
|
76
|
+
static get observedAttributes() {
|
|
77
|
+
return [...OBSERVED_ATTRS];
|
|
78
|
+
}
|
|
79
|
+
root;
|
|
80
|
+
view = null;
|
|
81
|
+
sourceProp = null;
|
|
82
|
+
constructor() {
|
|
83
|
+
super();
|
|
84
|
+
this.root = this.attachShadow({ mode: "open" });
|
|
85
|
+
}
|
|
86
|
+
connectedCallback() {
|
|
87
|
+
this.rerender();
|
|
88
|
+
}
|
|
89
|
+
disconnectedCallback() {
|
|
90
|
+
this.teardown();
|
|
91
|
+
}
|
|
92
|
+
attributeChangedCallback() {
|
|
93
|
+
if (this.isConnected) {
|
|
94
|
+
this.rerender();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
set source(value) {
|
|
98
|
+
this.sourceProp = value;
|
|
99
|
+
if (this.isConnected) {
|
|
100
|
+
this.rerender();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
get source() {
|
|
104
|
+
return this.sourceProp ?? this.getAttribute("source");
|
|
105
|
+
}
|
|
106
|
+
get viewer() {
|
|
107
|
+
return this.view;
|
|
108
|
+
}
|
|
109
|
+
config() {
|
|
110
|
+
const config = readConfig((name) => this.getAttribute(name));
|
|
111
|
+
return { ...config, source: this.sourceProp ?? config.source };
|
|
112
|
+
}
|
|
113
|
+
teardown() {
|
|
114
|
+
this.view?.destroy();
|
|
115
|
+
this.view = null;
|
|
116
|
+
this.root.replaceChildren();
|
|
117
|
+
}
|
|
118
|
+
rerender() {
|
|
119
|
+
this.teardown();
|
|
120
|
+
const config = this.config();
|
|
121
|
+
const mount = mountShadowDiagram(this.root, config);
|
|
122
|
+
this.view = mount.viewer;
|
|
123
|
+
if (mount.rendered) {
|
|
124
|
+
this.dispatchEvent(new CustomEvent("sf-render", { detail: { interactive: config.interactive } }));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
// src/runtime/webComponent/index.ts
|
|
130
|
+
function defineStickyflowDiagram(tagName = "stickyflow-diagram") {
|
|
131
|
+
if (typeof customElements === "undefined") {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (!customElements.get(tagName)) {
|
|
135
|
+
customElements.define(tagName, StickyflowDiagram);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export { StickyflowDiagram, defineStickyflowDiagram };
|
|
140
|
+
//# sourceMappingURL=index.js.map
|
|
141
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/webComponent/config.ts","../../src/runtime/webComponent/shadowView.ts","../../src/runtime/webComponent/element.ts","../../src/runtime/webComponent/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export interface DiagramConfig {\n source: string | null;\n interactive: boolean;\n padding?: number;\n diagramId?: string;\n}\n\nexport const OBSERVED_ATTRS = ['source', 'interactive', 'padding', 'diagram-id'] as const;\n\nconst boolAttr = (value: string | null): boolean => value !== null && value !== 'false';\n\nexport function readConfig(getAttribute: (name: string) => string | null): DiagramConfig {\n const paddingRaw = getAttribute('padding');\n const padding =\n paddingRaw != null && paddingRaw !== '' && Number.isFinite(Number(paddingRaw)) ? Number(paddingRaw) : undefined;\n return {\n source: getAttribute('source'),\n interactive: boolAttr(getAttribute('interactive')),\n padding,\n diagramId: getAttribute('diagram-id') ?? undefined,\n };\n}\n","import { render } from '../../render';\nimport { createViewer, type Viewer } from '../viewer';\nimport type { DiagramConfig } from './config';\n\nconst SHADOW_STYLE = `\n :host { display: block; position: relative; }\n .sf-container { width: 100%; height: 100%; }\n svg { display: block; max-width: 100%; }\n .sf-error { color: #b91c1c; font: 13px/1.4 system-ui, sans-serif; padding: 8px; white-space: pre-wrap; }\n [data-sf-role=\"entity\"], [data-sf-role=\"link\"] { cursor: pointer; }\n [data-sf-selected] { stroke: #2563eb !important; stroke-width: 4 !important; }\n`;\n\nexport interface ShadowDiagramMount {\n viewer: Viewer | null;\n rendered: boolean;\n}\n\nfunction createShadowContainer(root: ShadowRoot): HTMLDivElement {\n const style = document.createElement('style');\n style.textContent = SHADOW_STYLE;\n const container = document.createElement('div');\n container.className = 'sf-container';\n root.append(style, container);\n return container;\n}\n\nfunction showRenderError(container: HTMLDivElement, error: unknown): void {\n const box = document.createElement('div');\n box.className = 'sf-error';\n box.textContent = `stickyflow: ${(error as Error).message ?? error}`;\n container.replaceChildren(box);\n}\n\nfunction mountInteractiveDiagram(container: HTMLDivElement, source: string, config: DiagramConfig): Viewer {\n return createViewer({\n container,\n source,\n interactive: true,\n diagramId: config.diagramId,\n renderOptions: { padding: config.padding },\n });\n}\n\nfunction mountStaticDiagram(container: HTMLDivElement, source: string, config: DiagramConfig): void {\n container.innerHTML = render(source, { padding: config.padding }).svg;\n}\n\nexport function mountShadowDiagram(root: ShadowRoot, config: DiagramConfig): ShadowDiagramMount {\n const container = createShadowContainer(root);\n if (config.source === null) {\n return { viewer: null, rendered: false };\n }\n\n try {\n const viewer = config.interactive ? mountInteractiveDiagram(container, config.source, config) : null;\n if (!config.interactive) {\n mountStaticDiagram(container, config.source, config);\n }\n return { viewer, rendered: true };\n } catch (error) {\n showRenderError(container, error);\n return { viewer: null, rendered: false };\n }\n}\n","import type { Viewer } from '../viewer';\nimport { type DiagramConfig, OBSERVED_ATTRS, readConfig } from './config';\nimport { mountShadowDiagram } from './shadowView';\n\nconst ElementBase: typeof HTMLElement =\n typeof HTMLElement === 'undefined' ? (class {} as unknown as typeof HTMLElement) : HTMLElement;\n\nexport class StickyflowDiagram extends ElementBase {\n static get observedAttributes(): string[] {\n return [...OBSERVED_ATTRS];\n }\n\n private readonly root: ShadowRoot;\n private view: Viewer | null = null;\n private sourceProp: string | null = null;\n\n constructor() {\n super();\n this.root = this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback(): void {\n this.rerender();\n }\n\n disconnectedCallback(): void {\n this.teardown();\n }\n\n attributeChangedCallback(): void {\n if (this.isConnected) {\n this.rerender();\n }\n }\n\n set source(value: string | null) {\n this.sourceProp = value;\n if (this.isConnected) {\n this.rerender();\n }\n }\n\n get source(): string | null {\n return this.sourceProp ?? this.getAttribute('source');\n }\n\n get viewer(): Viewer | null {\n return this.view;\n }\n\n private config(): DiagramConfig {\n const config = readConfig(name => this.getAttribute(name));\n return { ...config, source: this.sourceProp ?? config.source };\n }\n\n private teardown(): void {\n this.view?.destroy();\n this.view = null;\n this.root.replaceChildren();\n }\n\n private rerender(): void {\n this.teardown();\n const config = this.config();\n const mount = mountShadowDiagram(this.root, config);\n this.view = mount.viewer;\n if (mount.rendered) {\n this.dispatchEvent(new CustomEvent('sf-render', { detail: { interactive: config.interactive } }));\n }\n }\n}\n","export type { DiagramConfig } from './config';\nexport { StickyflowDiagram } from './element';\n\nimport { StickyflowDiagram } from './element';\n\nexport function defineStickyflowDiagram(tagName = 'stickyflow-diagram'): void {\n if (typeof customElements === 'undefined') {\n return;\n }\n if (!customElements.get(tagName)) {\n customElements.define(tagName, StickyflowDiagram);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,83 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stickyflow",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Framework-independent SFL parser, render-scene, SVG runtime and interactive viewer.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"author": "D-Queck",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"sfl",
|
|
10
|
+
"diagram",
|
|
11
|
+
"svg",
|
|
12
|
+
"renderer",
|
|
13
|
+
"viewer",
|
|
14
|
+
"flowchart",
|
|
15
|
+
"swimlane",
|
|
16
|
+
"text-to-diagram",
|
|
17
|
+
"diagram-as-code"
|
|
18
|
+
],
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/Stickyflow/stickyflow.js.git"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/Stickyflow/stickyflow.js/issues"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/Stickyflow/stickyflow.js#readme",
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=18"
|
|
29
|
+
},
|
|
30
|
+
"sideEffects": false,
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"CHANGELOG.md"
|
|
34
|
+
],
|
|
35
|
+
"main": "./dist/index.cjs",
|
|
36
|
+
"module": "./dist/index.js",
|
|
37
|
+
"types": "./dist/index.d.ts",
|
|
38
|
+
"exports": {
|
|
39
|
+
".": {
|
|
40
|
+
"types": "./dist/index.d.ts",
|
|
41
|
+
"import": "./dist/index.js",
|
|
42
|
+
"require": "./dist/index.cjs"
|
|
43
|
+
},
|
|
44
|
+
"./viewer": {
|
|
45
|
+
"types": "./dist/viewer/index.d.ts",
|
|
46
|
+
"import": "./dist/viewer/index.js",
|
|
47
|
+
"require": "./dist/viewer/index.cjs"
|
|
48
|
+
},
|
|
49
|
+
"./interaction": {
|
|
50
|
+
"types": "./dist/interaction/index.d.ts",
|
|
51
|
+
"import": "./dist/interaction/index.js",
|
|
52
|
+
"require": "./dist/interaction/index.cjs"
|
|
53
|
+
},
|
|
54
|
+
"./web-component": {
|
|
55
|
+
"types": "./dist/web-component/index.d.ts",
|
|
56
|
+
"import": "./dist/web-component/index.js",
|
|
57
|
+
"require": "./dist/web-component/index.cjs"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"scripts": {
|
|
61
|
+
"build": "tsup",
|
|
62
|
+
"smoke": "node scripts/smoke.mjs",
|
|
63
|
+
"verify": "npm run build && npm run smoke",
|
|
64
|
+
"test": "vitest run --config ./vitest.config.ts",
|
|
65
|
+
"test:dom": "vitest run --config ./vitest.dom.config.ts",
|
|
66
|
+
"test:watch": "vitest --config ./vitest.config.ts",
|
|
67
|
+
"typecheck": "tsc --noEmit",
|
|
68
|
+
"lint": "biome check",
|
|
69
|
+
"lint:fix": "biome check --write",
|
|
70
|
+
"format": "biome format --write",
|
|
71
|
+
"ci": "npm run lint && npm run typecheck && npm test && npm run test:dom && npm run verify",
|
|
72
|
+
"prepublishOnly": "npm run ci"
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@biomejs/biome": "^2.5.11",
|
|
76
|
+
"@types/jsdom": "^30.0.0",
|
|
77
|
+
"@types/node": "^26.2.0",
|
|
78
|
+
"jsdom": "^29.1.1",
|
|
79
|
+
"tsup": "^8.3.0",
|
|
80
|
+
"typescript": "^5.8.3",
|
|
81
|
+
"vitest": "^3.2.4"
|
|
82
|
+
}
|
|
83
|
+
}
|