@swiftlysingh/excalidraw-cli 1.0.0 → 1.1.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/README.md +32 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +34 -15
- package/dist/cli.js.map +1 -1
- package/dist/factory/image-factory.d.ts +38 -0
- package/dist/factory/image-factory.d.ts.map +1 -0
- package/dist/factory/image-factory.js +169 -0
- package/dist/factory/image-factory.js.map +1 -0
- package/dist/factory/index.d.ts +1 -0
- package/dist/factory/index.d.ts.map +1 -1
- package/dist/factory/index.js +1 -0
- package/dist/factory/index.js.map +1 -1
- package/dist/factory/text-factory.d.ts.map +1 -1
- package/dist/factory/text-factory.js.map +1 -1
- package/dist/generator/excalidraw-generator.d.ts.map +1 -1
- package/dist/generator/excalidraw-generator.js +124 -26
- package/dist/generator/excalidraw-generator.js.map +1 -1
- package/dist/layout/elk-layout.d.ts.map +1 -1
- package/dist/layout/elk-layout.js +99 -3
- package/dist/layout/elk-layout.js.map +1 -1
- package/dist/parser/dot-parser.d.ts +23 -0
- package/dist/parser/dot-parser.d.ts.map +1 -0
- package/dist/parser/dot-parser.js +277 -0
- package/dist/parser/dot-parser.js.map +1 -0
- package/dist/parser/dsl-parser.d.ts +10 -0
- package/dist/parser/dsl-parser.d.ts.map +1 -1
- package/dist/parser/dsl-parser.js +214 -8
- package/dist/parser/dsl-parser.js.map +1 -1
- package/dist/parser/index.d.ts +1 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +1 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/types/dsl.d.ts +68 -1
- package/dist/types/dsl.d.ts.map +1 -1
- package/dist/types/dsl.js.map +1 -1
- package/dist/types/excalidraw.d.ts +22 -3
- package/dist/types/excalidraw.d.ts.map +1 -1
- package/dist/types/excalidraw.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# excalidraw-cli
|
|
2
|
+
<p>
|
|
3
|
+
<a href="https://www.npmjs.com/package/@swiftlysingh/excalidraw-cli"><img src="https://img.shields.io/npm/v/@swiftlysingh/excalidraw-cli" alt="npm version"></a>
|
|
4
|
+
<a href="https://github.com/swiftlysingh/excalidraw-cli/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<img alt="image" src="https://github.com/user-attachments/assets/5af4b002-bd69-4187-8836-84135685117a" />
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
Create Excalidraw flowcharts and diagrams from text-based DSL or JSON.
|
|
13
|
+
</p>
|
|
14
|
+
|
|
2
15
|
|
|
3
|
-
Create Excalidraw flowcharts and diagrams from text-based DSL or JSON.
|
|
4
16
|
|
|
5
17
|
## Features
|
|
6
18
|
|
|
@@ -12,6 +24,12 @@ Create Excalidraw flowcharts and diagrams from text-based DSL or JSON.
|
|
|
12
24
|
|
|
13
25
|
## Installation
|
|
14
26
|
|
|
27
|
+
### Using the npm
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm i @swiftlysingh/excalidraw-cli
|
|
31
|
+
```
|
|
32
|
+
|
|
15
33
|
### From Source (Local Development)
|
|
16
34
|
|
|
17
35
|
```bash
|
|
@@ -146,6 +164,19 @@ const input = {
|
|
|
146
164
|
const json2 = await createFlowchartFromJSON(input);
|
|
147
165
|
```
|
|
148
166
|
|
|
167
|
+
## Examples
|
|
168
|
+
|
|
169
|
+
Here are some flowcharts created with excalidraw-cli:
|
|
170
|
+
|
|
171
|
+
### Simple Flow
|
|
172
|
+

|
|
173
|
+
|
|
174
|
+
### iOS App Architecture
|
|
175
|
+

|
|
176
|
+
|
|
177
|
+
### LeetCode Problem Solving Flow
|
|
178
|
+

|
|
179
|
+
|
|
149
180
|
## Output
|
|
150
181
|
|
|
151
182
|
The generated `.excalidraw` files can be:
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.js
CHANGED
|
@@ -2,37 +2,39 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Excalidraw CLI
|
|
4
4
|
*
|
|
5
|
-
* Create Excalidraw flowcharts from DSL or
|
|
5
|
+
* Create Excalidraw flowcharts from DSL, JSON, or DOT input.
|
|
6
6
|
*/
|
|
7
7
|
import { Command } from 'commander';
|
|
8
8
|
import { readFileSync, writeFileSync } from 'fs';
|
|
9
9
|
import { parseDSL } from './parser/dsl-parser.js';
|
|
10
10
|
import { parseJSONString } from './parser/json-parser.js';
|
|
11
|
+
import { parseDOT } from './parser/dot-parser.js';
|
|
11
12
|
import { layoutGraph } from './layout/elk-layout.js';
|
|
12
13
|
import { generateExcalidraw, serializeExcalidraw } from './generator/excalidraw-generator.js';
|
|
13
14
|
const program = new Command();
|
|
14
15
|
program
|
|
15
16
|
.name('excalidraw-cli')
|
|
16
|
-
.description('Create Excalidraw flowcharts from DSL or
|
|
17
|
-
.version('1.0.
|
|
17
|
+
.description('Create Excalidraw flowcharts from DSL, JSON, or DOT')
|
|
18
|
+
.version('1.0.1');
|
|
18
19
|
/**
|
|
19
20
|
* Create command - main flowchart creation
|
|
20
21
|
*/
|
|
21
22
|
program
|
|
22
23
|
.command('create')
|
|
23
24
|
.description('Create an Excalidraw flowchart')
|
|
24
|
-
.argument('[input]', 'Input file path (DSL or
|
|
25
|
+
.argument('[input]', 'Input file path (DSL, JSON, or DOT)')
|
|
25
26
|
.option('-o, --output <file>', 'Output file path', 'flowchart.excalidraw')
|
|
26
|
-
.option('-f, --format <type>', 'Input format: dsl, json (default: dsl)', 'dsl')
|
|
27
|
-
.option('--inline <dsl>', 'Inline DSL string')
|
|
27
|
+
.option('-f, --format <type>', 'Input format: dsl, json, dot (default: dsl)', 'dsl')
|
|
28
|
+
.option('--inline <dsl>', 'Inline DSL/DOT string')
|
|
28
29
|
.option('--stdin', 'Read input from stdin')
|
|
29
30
|
.option('-d, --direction <dir>', 'Flow direction: TB, BT, LR, RL (default: TB)')
|
|
30
31
|
.option('-s, --spacing <n>', 'Node spacing in pixels', '50')
|
|
31
32
|
.option('--verbose', 'Verbose output')
|
|
32
|
-
.action(async (inputFile, options) => {
|
|
33
|
+
.action(async (inputFile, options, command) => {
|
|
33
34
|
try {
|
|
34
35
|
let input;
|
|
35
36
|
let format = options.format;
|
|
37
|
+
const formatExplicitlySet = command.getOptionValueSource('format') === 'cli';
|
|
36
38
|
// Get input from various sources
|
|
37
39
|
if (options.inline) {
|
|
38
40
|
input = options.inline;
|
|
@@ -42,9 +44,14 @@ program
|
|
|
42
44
|
}
|
|
43
45
|
else if (inputFile) {
|
|
44
46
|
input = readFileSync(inputFile, 'utf-8');
|
|
45
|
-
// Auto-detect format from file extension
|
|
46
|
-
if (
|
|
47
|
-
|
|
47
|
+
// Auto-detect format from file extension (only if --format not explicitly set)
|
|
48
|
+
if (!formatExplicitlySet) {
|
|
49
|
+
if (inputFile.endsWith('.json')) {
|
|
50
|
+
format = 'json';
|
|
51
|
+
}
|
|
52
|
+
else if (inputFile.endsWith('.dot') || inputFile.endsWith('.gv')) {
|
|
53
|
+
format = 'dot';
|
|
54
|
+
}
|
|
48
55
|
}
|
|
49
56
|
}
|
|
50
57
|
else {
|
|
@@ -60,6 +67,9 @@ program
|
|
|
60
67
|
if (format === 'json') {
|
|
61
68
|
graph = parseJSONString(input);
|
|
62
69
|
}
|
|
70
|
+
else if (format === 'dot') {
|
|
71
|
+
graph = parseDOT(input);
|
|
72
|
+
}
|
|
63
73
|
else {
|
|
64
74
|
graph = parseDSL(input);
|
|
65
75
|
}
|
|
@@ -109,20 +119,29 @@ program
|
|
|
109
119
|
.command('parse')
|
|
110
120
|
.description('Parse and validate input without generating output')
|
|
111
121
|
.argument('<input>', 'Input file path')
|
|
112
|
-
.option('-f, --format <type>', 'Input format: dsl, json (default: dsl)', 'dsl')
|
|
113
|
-
.action((inputFile, options) => {
|
|
122
|
+
.option('-f, --format <type>', 'Input format: dsl, json, dot (default: dsl)', 'dsl')
|
|
123
|
+
.action((inputFile, options, command) => {
|
|
114
124
|
try {
|
|
115
125
|
const input = readFileSync(inputFile, 'utf-8');
|
|
116
126
|
let format = options.format;
|
|
117
|
-
|
|
118
|
-
if
|
|
119
|
-
|
|
127
|
+
const formatExplicitlySet = command.getOptionValueSource('format') === 'cli';
|
|
128
|
+
// Auto-detect format from file extension (only if --format not explicitly set)
|
|
129
|
+
if (!formatExplicitlySet) {
|
|
130
|
+
if (inputFile.endsWith('.json')) {
|
|
131
|
+
format = 'json';
|
|
132
|
+
}
|
|
133
|
+
else if (inputFile.endsWith('.dot') || inputFile.endsWith('.gv')) {
|
|
134
|
+
format = 'dot';
|
|
135
|
+
}
|
|
120
136
|
}
|
|
121
137
|
// Parse input
|
|
122
138
|
let graph;
|
|
123
139
|
if (format === 'json') {
|
|
124
140
|
graph = parseJSONString(input);
|
|
125
141
|
}
|
|
142
|
+
else if (format === 'dot') {
|
|
143
|
+
graph = parseDOT(input);
|
|
144
|
+
}
|
|
126
145
|
else {
|
|
127
146
|
graph = parseDSL(input);
|
|
128
147
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG9F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates Excalidraw image elements and handles image file data.
|
|
5
|
+
*/
|
|
6
|
+
import type { ExcalidrawImage, ExcalidrawFileData } from '../types/excalidraw.js';
|
|
7
|
+
import type { LayoutedNode, LayoutedImage } from '../types/dsl.js';
|
|
8
|
+
/**
|
|
9
|
+
* Resolve sticker name to actual path using library
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveStickerPath(stickerSrc: string, libraryPath?: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Create file data for an image
|
|
14
|
+
* For local files: reads and base64 encodes
|
|
15
|
+
* For URLs: stores the URL directly (Excalidraw supports this)
|
|
16
|
+
*/
|
|
17
|
+
export declare function createFileData(src: string, fileId: string, libraryPath?: string): ExcalidrawFileData | null;
|
|
18
|
+
/**
|
|
19
|
+
* Create an image element for a layouted node
|
|
20
|
+
*/
|
|
21
|
+
export declare function createImageElement(node: LayoutedNode, fileId: string): ExcalidrawImage;
|
|
22
|
+
/**
|
|
23
|
+
* Create an image element for a layouted positioned image
|
|
24
|
+
*/
|
|
25
|
+
export declare function createPositionedImageElement(image: LayoutedImage, fileId: string): ExcalidrawImage;
|
|
26
|
+
/**
|
|
27
|
+
* Generate a unique file ID
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateFileId(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Get image dimensions (for layout calculation)
|
|
32
|
+
* Returns explicit dimensions if provided, otherwise defaults
|
|
33
|
+
*/
|
|
34
|
+
export declare function getImageDimensions(src: string, explicitWidth?: number, explicitHeight?: number): {
|
|
35
|
+
width: number;
|
|
36
|
+
height: number;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=image-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-factory.d.ts","sourceRoot":"","sources":["../../src/factory/image-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4CnE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBnF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,GAAG,IAAI,CA0C3B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,GACb,eAAe,CAajB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,GACb,eAAe,CAajB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAYnC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates Excalidraw image elements and handles image file data.
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import { nanoid } from 'nanoid';
|
|
9
|
+
import { createBaseElement } from './element-factory.js';
|
|
10
|
+
/**
|
|
11
|
+
* Default image dimensions
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_IMAGE_WIDTH = 100;
|
|
14
|
+
const DEFAULT_IMAGE_HEIGHT = 100;
|
|
15
|
+
/**
|
|
16
|
+
* MIME type mapping by file extension
|
|
17
|
+
*/
|
|
18
|
+
const MIME_TYPES = {
|
|
19
|
+
'.png': 'image/png',
|
|
20
|
+
'.jpg': 'image/jpeg',
|
|
21
|
+
'.jpeg': 'image/jpeg',
|
|
22
|
+
'.gif': 'image/gif',
|
|
23
|
+
'.webp': 'image/webp',
|
|
24
|
+
'.svg': 'image/svg+xml',
|
|
25
|
+
'.bmp': 'image/bmp',
|
|
26
|
+
'.ico': 'image/x-icon',
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Get MIME type from file path or URL
|
|
30
|
+
*/
|
|
31
|
+
function getMimeType(src) {
|
|
32
|
+
const ext = path.extname(src).toLowerCase();
|
|
33
|
+
return MIME_TYPES[ext] || 'image/png';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if source is a URL
|
|
37
|
+
*/
|
|
38
|
+
function isUrl(src) {
|
|
39
|
+
return src.startsWith('http://') || src.startsWith('https://');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if source is a sticker reference
|
|
43
|
+
*/
|
|
44
|
+
function isSticker(src) {
|
|
45
|
+
return src.startsWith('sticker:');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Resolve sticker name to actual path using library
|
|
49
|
+
*/
|
|
50
|
+
export function resolveStickerPath(stickerSrc, libraryPath) {
|
|
51
|
+
const name = stickerSrc.replace('sticker:', '');
|
|
52
|
+
if (!libraryPath) {
|
|
53
|
+
// No library specified, return as-is (will fail gracefully)
|
|
54
|
+
return name;
|
|
55
|
+
}
|
|
56
|
+
// Try common extensions
|
|
57
|
+
const extensions = ['.png', '.svg', '.jpg', '.jpeg', '.gif', '.webp'];
|
|
58
|
+
for (const ext of extensions) {
|
|
59
|
+
const fullPath = path.join(libraryPath, `${name}${ext}`);
|
|
60
|
+
if (fs.existsSync(fullPath)) {
|
|
61
|
+
return fullPath;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Try with the name as-is (might already have extension)
|
|
65
|
+
const directPath = path.join(libraryPath, name);
|
|
66
|
+
if (fs.existsSync(directPath)) {
|
|
67
|
+
return directPath;
|
|
68
|
+
}
|
|
69
|
+
return name;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Create file data for an image
|
|
73
|
+
* For local files: reads and base64 encodes
|
|
74
|
+
* For URLs: stores the URL directly (Excalidraw supports this)
|
|
75
|
+
*/
|
|
76
|
+
export function createFileData(src, fileId, libraryPath) {
|
|
77
|
+
// Handle sticker references
|
|
78
|
+
let resolvedSrc = src;
|
|
79
|
+
if (isSticker(src)) {
|
|
80
|
+
resolvedSrc = resolveStickerPath(src, libraryPath);
|
|
81
|
+
}
|
|
82
|
+
// Remote URLs are not supported - Excalidraw requires base64-encoded data URLs
|
|
83
|
+
if (isUrl(resolvedSrc)) {
|
|
84
|
+
console.warn(`Remote URLs are not supported for images: ${resolvedSrc}\n` +
|
|
85
|
+
` Download the image locally and use a file path instead.`);
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
// For local files, read and base64 encode
|
|
89
|
+
try {
|
|
90
|
+
const absolutePath = path.isAbsolute(resolvedSrc)
|
|
91
|
+
? resolvedSrc
|
|
92
|
+
: path.resolve(process.cwd(), resolvedSrc);
|
|
93
|
+
if (!fs.existsSync(absolutePath)) {
|
|
94
|
+
console.warn(`Image file not found: ${absolutePath}`);
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const buffer = fs.readFileSync(absolutePath);
|
|
98
|
+
const base64 = buffer.toString('base64');
|
|
99
|
+
const mimeType = getMimeType(resolvedSrc);
|
|
100
|
+
const dataURL = `data:${mimeType};base64,${base64}`;
|
|
101
|
+
return {
|
|
102
|
+
mimeType,
|
|
103
|
+
id: fileId,
|
|
104
|
+
dataURL,
|
|
105
|
+
created: Date.now(),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.warn(`Failed to read image file: ${resolvedSrc}`, error);
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Create an image element for a layouted node
|
|
115
|
+
*/
|
|
116
|
+
export function createImageElement(node, fileId) {
|
|
117
|
+
return {
|
|
118
|
+
...createBaseElement('image', node.x, node.y, node.width, node.height, {
|
|
119
|
+
id: node.id,
|
|
120
|
+
roundness: null,
|
|
121
|
+
boundElements: null,
|
|
122
|
+
backgroundColor: 'transparent',
|
|
123
|
+
}),
|
|
124
|
+
type: 'image',
|
|
125
|
+
fileId,
|
|
126
|
+
status: 'saved',
|
|
127
|
+
scale: [1, 1],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Create an image element for a layouted positioned image
|
|
132
|
+
*/
|
|
133
|
+
export function createPositionedImageElement(image, fileId) {
|
|
134
|
+
return {
|
|
135
|
+
...createBaseElement('image', image.x, image.y, image.width, image.height, {
|
|
136
|
+
id: image.id,
|
|
137
|
+
roundness: null,
|
|
138
|
+
boundElements: null,
|
|
139
|
+
backgroundColor: 'transparent',
|
|
140
|
+
}),
|
|
141
|
+
type: 'image',
|
|
142
|
+
fileId,
|
|
143
|
+
status: 'saved',
|
|
144
|
+
scale: [1, 1],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Generate a unique file ID
|
|
149
|
+
*/
|
|
150
|
+
export function generateFileId() {
|
|
151
|
+
return nanoid(21);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get image dimensions (for layout calculation)
|
|
155
|
+
* Returns explicit dimensions if provided, otherwise defaults
|
|
156
|
+
*/
|
|
157
|
+
export function getImageDimensions(src, explicitWidth, explicitHeight) {
|
|
158
|
+
// Use explicit dimensions if provided
|
|
159
|
+
if (explicitWidth && explicitHeight) {
|
|
160
|
+
return { width: explicitWidth, height: explicitHeight };
|
|
161
|
+
}
|
|
162
|
+
// For local files, we could probe the actual dimensions, but that adds complexity
|
|
163
|
+
// For now, use defaults and let users specify dimensions if needed
|
|
164
|
+
return {
|
|
165
|
+
width: explicitWidth || DEFAULT_IMAGE_WIDTH,
|
|
166
|
+
height: explicitHeight || DEFAULT_IMAGE_HEIGHT,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=image-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-factory.js","sourceRoot":"","sources":["../../src/factory/image-factory.ts"],"names":[],"mappings":"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"}
|
package/dist/factory/index.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ export { createBaseElement, resetIndexCounter, DEFAULT_ELEMENT_STYLE } from './e
|
|
|
5
5
|
export { createNode, createRectangle, createDiamond, createEllipse } from './node-factory.js';
|
|
6
6
|
export { createArrow, createArrowWithBindings } from './connection-factory.js';
|
|
7
7
|
export { createText, createBoundText, createNodeLabel, createEdgeLabel } from './text-factory.js';
|
|
8
|
+
export { createImageElement, createPositionedImageElement, createFileData, generateFileId, getImageDimensions, resolveStickerPath, } from './image-factory.js';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
|
package/dist/factory/index.js
CHANGED
|
@@ -5,4 +5,5 @@ export { createBaseElement, resetIndexCounter, DEFAULT_ELEMENT_STYLE } from './e
|
|
|
5
5
|
export { createNode, createRectangle, createDiamond, createEllipse } from './node-factory.js';
|
|
6
6
|
export { createArrow, createArrowWithBindings } from './connection-factory.js';
|
|
7
7
|
export { createText, createBoundText, createNodeLabel, createEdgeLabel } from './text-factory.js';
|
|
8
|
+
export { createImageElement, createPositionedImageElement, createFileData, generateFileId, getImageDimensions, resolveStickerPath, } from './image-factory.js';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-factory.d.ts","sourceRoot":"","sources":["../../src/factory/text-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"text-factory.d.ts","sourceRoot":"","sources":["../../src/factory/text-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA8BpD;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE;IACR,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,cAAc,CAqBhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,cAAc,CAyBhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAuBnG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,cAAc,CAyChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-factory.js","sourceRoot":"","sources":["../../src/factory/text-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"text-factory.js","sourceRoot":"","sources":["../../src/factory/text-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excalidraw-generator.d.ts","sourceRoot":"","sources":["../../src/generator/excalidraw-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"excalidraw-generator.d.ts","sourceRoot":"","sources":["../../src/generator/excalidraw-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,iBAAiB,CAAC;AA6EzB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAyJvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,UAAO,GAAG,MAAM,CAE/E;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|