@xom11/whiteboard 0.24.1 → 0.25.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 +85 -12
- package/dist/ai.d.mts +472 -0
- package/dist/ai.d.ts +472 -0
- package/dist/ai.js +2156 -0
- package/dist/ai.js.map +1 -0
- package/dist/ai.mjs +1495 -0
- package/dist/ai.mjs.map +1 -0
- package/dist/catalog.json +4 -4
- package/dist/chunk-73Q7ADVL.mjs +35 -0
- package/dist/chunk-73Q7ADVL.mjs.map +1 -0
- package/dist/{chunk-BKSXPNPQ.mjs → chunk-AYSFWUPK.mjs} +4 -3
- package/dist/chunk-AYSFWUPK.mjs.map +1 -0
- package/dist/chunk-B4NJJZFR.mjs +18 -0
- package/dist/chunk-B4NJJZFR.mjs.map +1 -0
- package/dist/{chunk-LVNCYP4J.mjs → chunk-CJBLJUWG.mjs} +5 -5
- package/dist/{chunk-LVNCYP4J.mjs.map → chunk-CJBLJUWG.mjs.map} +1 -1
- package/dist/{chunk-YIPI3WUL.mjs → chunk-ESVPQWHX.mjs} +5 -5
- package/dist/{chunk-YIPI3WUL.mjs.map → chunk-ESVPQWHX.mjs.map} +1 -1
- package/dist/{chunk-IBTRMWD6.mjs → chunk-I24QOHPU.mjs} +3 -3
- package/dist/{chunk-IBTRMWD6.mjs.map → chunk-I24QOHPU.mjs.map} +1 -1
- package/dist/{chunk-ZBJBQKJ2.mjs → chunk-IHUFOV7L.mjs} +4 -19
- package/dist/chunk-IHUFOV7L.mjs.map +1 -0
- package/dist/{chunk-AZIARTGX.mjs → chunk-M42TGYT6.mjs} +3 -3
- package/dist/{chunk-AZIARTGX.mjs.map → chunk-M42TGYT6.mjs.map} +1 -1
- package/dist/{chunk-WWMQ2VHZ.mjs → chunk-NDEZJKNY.mjs} +4 -4
- package/dist/{chunk-WWMQ2VHZ.mjs.map → chunk-NDEZJKNY.mjs.map} +1 -1
- package/dist/{chunk-CSCF3YFZ.mjs → chunk-ONBCUWVI.mjs} +6 -4
- package/dist/chunk-ONBCUWVI.mjs.map +1 -0
- package/dist/{chunk-6V4SH4JJ.mjs → chunk-REIJZDVZ.mjs} +6 -35
- package/dist/chunk-REIJZDVZ.mjs.map +1 -0
- package/dist/{chunk-4D5CSIJO.mjs → chunk-TB4CL25L.mjs} +10 -8
- package/dist/chunk-TB4CL25L.mjs.map +1 -0
- package/dist/chunk-VNCCIV6O.mjs +938 -0
- package/dist/chunk-VNCCIV6O.mjs.map +1 -0
- package/dist/{chunk-MFOGFFIL.mjs → chunk-VRHWDZ66.mjs} +6 -5
- package/dist/chunk-VRHWDZ66.mjs.map +1 -0
- package/dist/{chunk-CRAPWQKJ.mjs → chunk-YSJOVBCD.mjs} +4 -4
- package/dist/{chunk-CRAPWQKJ.mjs.map → chunk-YSJOVBCD.mjs.map} +1 -1
- package/dist/geometry-2d.d.mts +2 -1
- package/dist/geometry-2d.d.ts +2 -1
- package/dist/geometry-2d.js +1383 -23
- package/dist/geometry-2d.js.map +1 -1
- package/dist/geometry-2d.mjs +7 -5
- package/dist/geometry-3d.d.mts +2 -1
- package/dist/geometry-3d.d.ts +2 -1
- package/dist/geometry-3d.js +2 -2
- package/dist/geometry-3d.js.map +1 -1
- package/dist/geometry-3d.mjs +6 -4
- package/dist/graph-2d.d.mts +2 -1
- package/dist/graph-2d.d.ts +2 -1
- package/dist/graph-2d.js +2 -2
- package/dist/graph-2d.js.map +1 -1
- package/dist/graph-2d.mjs +9 -7
- package/dist/{host-TLIXN4CF.mjs → host-A64ITWVX.mjs} +8 -6
- package/dist/host-A64ITWVX.mjs.map +1 -0
- package/dist/{host-DOAYVL35.mjs → host-L7FMFZUW.mjs} +228 -30
- package/dist/host-L7FMFZUW.mjs.map +1 -0
- package/dist/{host-GKNQBBUE.mjs → host-QK53UYMD.mjs} +12 -10
- package/dist/host-QK53UYMD.mjs.map +1 -0
- package/dist/index.d.mts +4 -616
- package/dist/index.d.ts +4 -616
- package/dist/index.js +8889 -8529
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -1012
- package/dist/index.mjs.map +1 -1
- package/dist/latex.d.mts +2 -1
- package/dist/latex.d.ts +2 -1
- package/dist/render-3WTY7NZB.mjs +9 -0
- package/dist/{render-SA4JTOW3.mjs.map → render-3WTY7NZB.mjs.map} +1 -1
- package/dist/serialize-SRJVKYUG.mjs +8 -0
- package/dist/{serialize-3NZS6A6Q.mjs.map → serialize-SRJVKYUG.mjs.map} +1 -1
- package/dist/{types-rA4slL08.d.ts → types-DWRyCa2m.d.mts} +139 -1
- package/dist/{types-rA4slL08.d.mts → types-DWRyCa2m.d.ts} +139 -1
- package/package.json +6 -1
- package/dist/chunk-4D5CSIJO.mjs.map +0 -1
- package/dist/chunk-6V4SH4JJ.mjs.map +0 -1
- package/dist/chunk-BKSXPNPQ.mjs.map +0 -1
- package/dist/chunk-CSCF3YFZ.mjs.map +0 -1
- package/dist/chunk-MFOGFFIL.mjs.map +0 -1
- package/dist/chunk-ZBJBQKJ2.mjs.map +0 -1
- package/dist/host-DOAYVL35.mjs.map +0 -1
- package/dist/host-GKNQBBUE.mjs.map +0 -1
- package/dist/host-TLIXN4CF.mjs.map +0 -1
- package/dist/render-SA4JTOW3.mjs +0 -8
- package/dist/serialize-3NZS6A6Q.mjs +0 -6
package/dist/latex.d.mts
CHANGED
package/dist/latex.d.ts
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export { renderGraphSvgFromState } from './chunk-CJBLJUWG.mjs';
|
|
3
|
+
import './chunk-M42TGYT6.mjs';
|
|
4
|
+
import './chunk-AYSFWUPK.mjs';
|
|
5
|
+
import './chunk-ICR4CVOE.mjs';
|
|
6
|
+
import './chunk-IHUFOV7L.mjs';
|
|
7
|
+
import './chunk-B4NJJZFR.mjs';
|
|
8
|
+
//# sourceMappingURL=render-3WTY7NZB.mjs.map
|
|
9
|
+
//# sourceMappingURL=render-3WTY7NZB.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"render-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"render-3WTY7NZB.mjs"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export { parseSceneState, stringifySceneState } from './chunk-I24QOHPU.mjs';
|
|
3
|
+
import './chunk-REIJZDVZ.mjs';
|
|
4
|
+
import './chunk-IHUFOV7L.mjs';
|
|
5
|
+
import './chunk-73Q7ADVL.mjs';
|
|
6
|
+
import './chunk-B4NJJZFR.mjs';
|
|
7
|
+
//# sourceMappingURL=serialize-SRJVKYUG.mjs.map
|
|
8
|
+
//# sourceMappingURL=serialize-SRJVKYUG.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"serialize-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"serialize-SRJVKYUG.mjs"}
|
|
@@ -1,6 +1,127 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
import { ReactNode, ComponentType, RefAttributes } from 'react';
|
|
2
3
|
import { ExcalidrawElement } from '@excalidraw/excalidraw/element/types';
|
|
3
4
|
|
|
5
|
+
declare const NameZ: z.ZodString;
|
|
6
|
+
|
|
7
|
+
type Name = z.infer<typeof NameZ>;
|
|
8
|
+
type DslPointT = {
|
|
9
|
+
name: Name;
|
|
10
|
+
kind: 'free';
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
} | {
|
|
14
|
+
name: Name;
|
|
15
|
+
kind: 'midpoint';
|
|
16
|
+
p1: Name;
|
|
17
|
+
p2: Name;
|
|
18
|
+
} | {
|
|
19
|
+
name: Name;
|
|
20
|
+
kind: 'onSegment';
|
|
21
|
+
segmentId: Name;
|
|
22
|
+
t: number;
|
|
23
|
+
} | {
|
|
24
|
+
name: Name;
|
|
25
|
+
kind: 'onLine';
|
|
26
|
+
lineId: Name;
|
|
27
|
+
t: number;
|
|
28
|
+
} | {
|
|
29
|
+
name: Name;
|
|
30
|
+
kind: 'onCircle';
|
|
31
|
+
circleId: Name;
|
|
32
|
+
theta: number;
|
|
33
|
+
} | {
|
|
34
|
+
name: Name;
|
|
35
|
+
kind: 'perpFoot';
|
|
36
|
+
from: Name;
|
|
37
|
+
onLine: Name;
|
|
38
|
+
} | {
|
|
39
|
+
name: Name;
|
|
40
|
+
kind: 'circumcenter';
|
|
41
|
+
vertices: [Name, Name, Name];
|
|
42
|
+
} | {
|
|
43
|
+
name: Name;
|
|
44
|
+
kind: 'incenter';
|
|
45
|
+
vertices: [Name, Name, Name];
|
|
46
|
+
} | {
|
|
47
|
+
name: Name;
|
|
48
|
+
kind: 'centroid';
|
|
49
|
+
vertices: [Name, Name, Name];
|
|
50
|
+
} | {
|
|
51
|
+
name: Name;
|
|
52
|
+
kind: 'orthocenter';
|
|
53
|
+
vertices: [Name, Name, Name];
|
|
54
|
+
} | {
|
|
55
|
+
name: Name;
|
|
56
|
+
kind: 'intersection';
|
|
57
|
+
ref1: Name;
|
|
58
|
+
ref2: Name;
|
|
59
|
+
branch?: 0 | 1;
|
|
60
|
+
};
|
|
61
|
+
type DslShapeT = {
|
|
62
|
+
name: Name;
|
|
63
|
+
kind: 'segment';
|
|
64
|
+
p1: Name;
|
|
65
|
+
p2: Name;
|
|
66
|
+
} | {
|
|
67
|
+
name: Name;
|
|
68
|
+
kind: 'line';
|
|
69
|
+
p1: Name;
|
|
70
|
+
p2: Name;
|
|
71
|
+
} | {
|
|
72
|
+
name: Name;
|
|
73
|
+
kind: 'ray';
|
|
74
|
+
origin: Name;
|
|
75
|
+
through: Name;
|
|
76
|
+
} | {
|
|
77
|
+
name: Name;
|
|
78
|
+
kind: 'polygon';
|
|
79
|
+
vertices: Name[];
|
|
80
|
+
} | {
|
|
81
|
+
name: Name;
|
|
82
|
+
kind: 'perpendicular';
|
|
83
|
+
throughPoint: Name;
|
|
84
|
+
toLine: Name;
|
|
85
|
+
} | {
|
|
86
|
+
name: Name;
|
|
87
|
+
kind: 'parallel';
|
|
88
|
+
throughPoint: Name;
|
|
89
|
+
toLine: Name;
|
|
90
|
+
} | {
|
|
91
|
+
name: Name;
|
|
92
|
+
kind: 'perpBisector';
|
|
93
|
+
p1: Name;
|
|
94
|
+
p2: Name;
|
|
95
|
+
} | {
|
|
96
|
+
name: Name;
|
|
97
|
+
kind: 'angleBisector';
|
|
98
|
+
p1: Name;
|
|
99
|
+
vertex: Name;
|
|
100
|
+
p2: Name;
|
|
101
|
+
} | {
|
|
102
|
+
name: Name;
|
|
103
|
+
kind: 'tangent';
|
|
104
|
+
throughPoint: Name;
|
|
105
|
+
toCircle: Name;
|
|
106
|
+
branch?: 0 | 1 | 'on';
|
|
107
|
+
} | {
|
|
108
|
+
name: Name;
|
|
109
|
+
kind: 'circleCP';
|
|
110
|
+
center: Name;
|
|
111
|
+
surfacePoint: Name;
|
|
112
|
+
} | {
|
|
113
|
+
name: Name;
|
|
114
|
+
kind: 'circle3';
|
|
115
|
+
p1: Name;
|
|
116
|
+
p2: Name;
|
|
117
|
+
p3: Name;
|
|
118
|
+
};
|
|
119
|
+
type DslInputT = {
|
|
120
|
+
version: 1;
|
|
121
|
+
points: DslPointT[];
|
|
122
|
+
shapes: DslShapeT[];
|
|
123
|
+
};
|
|
124
|
+
|
|
4
125
|
type SceneObject<A = Record<string, unknown>> = {
|
|
5
126
|
id: string;
|
|
6
127
|
kind: string;
|
|
@@ -57,12 +178,29 @@ type AiFigureUiResult = {
|
|
|
57
178
|
ok: false;
|
|
58
179
|
message: string;
|
|
59
180
|
};
|
|
181
|
+
/**
|
|
182
|
+
* Progress event emitted bởi streaming generator. Số token output đã sinh.
|
|
183
|
+
* Editor dùng để hiển thị "Đang nhận N token..." realtime.
|
|
184
|
+
*/
|
|
185
|
+
interface AiFigureProgress {
|
|
186
|
+
/** Số token output đã sinh tính đến lúc emit. */
|
|
187
|
+
tokens: number;
|
|
188
|
+
}
|
|
60
189
|
/**
|
|
61
190
|
* Consumer-provided bridge to a server-side `generateFigure()` call.
|
|
62
191
|
* Implementations must keep API credentials outside the browser bundle.
|
|
192
|
+
*
|
|
193
|
+
* `onProgress` là optional: nếu consumer dùng streaming endpoint (SSE),
|
|
194
|
+
* forward chunk events vào đây. Non-streaming impl bỏ qua.
|
|
195
|
+
*
|
|
196
|
+
* `currentDsl` (MỚI cho multi-step refine): khi caller có hình hiện tại
|
|
197
|
+
* (state.order.length > 0) và muốn AI sửa/thêm → pass currentDsl. Consumer
|
|
198
|
+
* branch sang refine endpoint. Không pass → build endpoint cũ.
|
|
63
199
|
*/
|
|
64
200
|
type GenerateGeometryFigure = (problem: string, options: {
|
|
65
201
|
signal: AbortSignal;
|
|
202
|
+
onProgress?: (info: AiFigureProgress) => void;
|
|
203
|
+
currentDsl?: DslInputT;
|
|
66
204
|
}) => Promise<AiFigureUiResult>;
|
|
67
205
|
/**
|
|
68
206
|
* Kết quả trả về từ `restoreFileFromCustomData`. Chứa đủ thông tin để
|
|
@@ -172,4 +310,4 @@ interface StampType<TCustomData extends BaseStampCustomData = BaseStampCustomDat
|
|
|
172
310
|
experimental?: boolean;
|
|
173
311
|
}
|
|
174
312
|
|
|
175
|
-
export type {
|
|
313
|
+
export type { AiFigureProgress as A, BaseStampCustomData as B, DslInputT as D, GenerateGeometryFigure as G, StampType as S, AiFigureUiResult as a, State as b };
|
|
@@ -1,6 +1,127 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
import { ReactNode, ComponentType, RefAttributes } from 'react';
|
|
2
3
|
import { ExcalidrawElement } from '@excalidraw/excalidraw/element/types';
|
|
3
4
|
|
|
5
|
+
declare const NameZ: z.ZodString;
|
|
6
|
+
|
|
7
|
+
type Name = z.infer<typeof NameZ>;
|
|
8
|
+
type DslPointT = {
|
|
9
|
+
name: Name;
|
|
10
|
+
kind: 'free';
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
} | {
|
|
14
|
+
name: Name;
|
|
15
|
+
kind: 'midpoint';
|
|
16
|
+
p1: Name;
|
|
17
|
+
p2: Name;
|
|
18
|
+
} | {
|
|
19
|
+
name: Name;
|
|
20
|
+
kind: 'onSegment';
|
|
21
|
+
segmentId: Name;
|
|
22
|
+
t: number;
|
|
23
|
+
} | {
|
|
24
|
+
name: Name;
|
|
25
|
+
kind: 'onLine';
|
|
26
|
+
lineId: Name;
|
|
27
|
+
t: number;
|
|
28
|
+
} | {
|
|
29
|
+
name: Name;
|
|
30
|
+
kind: 'onCircle';
|
|
31
|
+
circleId: Name;
|
|
32
|
+
theta: number;
|
|
33
|
+
} | {
|
|
34
|
+
name: Name;
|
|
35
|
+
kind: 'perpFoot';
|
|
36
|
+
from: Name;
|
|
37
|
+
onLine: Name;
|
|
38
|
+
} | {
|
|
39
|
+
name: Name;
|
|
40
|
+
kind: 'circumcenter';
|
|
41
|
+
vertices: [Name, Name, Name];
|
|
42
|
+
} | {
|
|
43
|
+
name: Name;
|
|
44
|
+
kind: 'incenter';
|
|
45
|
+
vertices: [Name, Name, Name];
|
|
46
|
+
} | {
|
|
47
|
+
name: Name;
|
|
48
|
+
kind: 'centroid';
|
|
49
|
+
vertices: [Name, Name, Name];
|
|
50
|
+
} | {
|
|
51
|
+
name: Name;
|
|
52
|
+
kind: 'orthocenter';
|
|
53
|
+
vertices: [Name, Name, Name];
|
|
54
|
+
} | {
|
|
55
|
+
name: Name;
|
|
56
|
+
kind: 'intersection';
|
|
57
|
+
ref1: Name;
|
|
58
|
+
ref2: Name;
|
|
59
|
+
branch?: 0 | 1;
|
|
60
|
+
};
|
|
61
|
+
type DslShapeT = {
|
|
62
|
+
name: Name;
|
|
63
|
+
kind: 'segment';
|
|
64
|
+
p1: Name;
|
|
65
|
+
p2: Name;
|
|
66
|
+
} | {
|
|
67
|
+
name: Name;
|
|
68
|
+
kind: 'line';
|
|
69
|
+
p1: Name;
|
|
70
|
+
p2: Name;
|
|
71
|
+
} | {
|
|
72
|
+
name: Name;
|
|
73
|
+
kind: 'ray';
|
|
74
|
+
origin: Name;
|
|
75
|
+
through: Name;
|
|
76
|
+
} | {
|
|
77
|
+
name: Name;
|
|
78
|
+
kind: 'polygon';
|
|
79
|
+
vertices: Name[];
|
|
80
|
+
} | {
|
|
81
|
+
name: Name;
|
|
82
|
+
kind: 'perpendicular';
|
|
83
|
+
throughPoint: Name;
|
|
84
|
+
toLine: Name;
|
|
85
|
+
} | {
|
|
86
|
+
name: Name;
|
|
87
|
+
kind: 'parallel';
|
|
88
|
+
throughPoint: Name;
|
|
89
|
+
toLine: Name;
|
|
90
|
+
} | {
|
|
91
|
+
name: Name;
|
|
92
|
+
kind: 'perpBisector';
|
|
93
|
+
p1: Name;
|
|
94
|
+
p2: Name;
|
|
95
|
+
} | {
|
|
96
|
+
name: Name;
|
|
97
|
+
kind: 'angleBisector';
|
|
98
|
+
p1: Name;
|
|
99
|
+
vertex: Name;
|
|
100
|
+
p2: Name;
|
|
101
|
+
} | {
|
|
102
|
+
name: Name;
|
|
103
|
+
kind: 'tangent';
|
|
104
|
+
throughPoint: Name;
|
|
105
|
+
toCircle: Name;
|
|
106
|
+
branch?: 0 | 1 | 'on';
|
|
107
|
+
} | {
|
|
108
|
+
name: Name;
|
|
109
|
+
kind: 'circleCP';
|
|
110
|
+
center: Name;
|
|
111
|
+
surfacePoint: Name;
|
|
112
|
+
} | {
|
|
113
|
+
name: Name;
|
|
114
|
+
kind: 'circle3';
|
|
115
|
+
p1: Name;
|
|
116
|
+
p2: Name;
|
|
117
|
+
p3: Name;
|
|
118
|
+
};
|
|
119
|
+
type DslInputT = {
|
|
120
|
+
version: 1;
|
|
121
|
+
points: DslPointT[];
|
|
122
|
+
shapes: DslShapeT[];
|
|
123
|
+
};
|
|
124
|
+
|
|
4
125
|
type SceneObject<A = Record<string, unknown>> = {
|
|
5
126
|
id: string;
|
|
6
127
|
kind: string;
|
|
@@ -57,12 +178,29 @@ type AiFigureUiResult = {
|
|
|
57
178
|
ok: false;
|
|
58
179
|
message: string;
|
|
59
180
|
};
|
|
181
|
+
/**
|
|
182
|
+
* Progress event emitted bởi streaming generator. Số token output đã sinh.
|
|
183
|
+
* Editor dùng để hiển thị "Đang nhận N token..." realtime.
|
|
184
|
+
*/
|
|
185
|
+
interface AiFigureProgress {
|
|
186
|
+
/** Số token output đã sinh tính đến lúc emit. */
|
|
187
|
+
tokens: number;
|
|
188
|
+
}
|
|
60
189
|
/**
|
|
61
190
|
* Consumer-provided bridge to a server-side `generateFigure()` call.
|
|
62
191
|
* Implementations must keep API credentials outside the browser bundle.
|
|
192
|
+
*
|
|
193
|
+
* `onProgress` là optional: nếu consumer dùng streaming endpoint (SSE),
|
|
194
|
+
* forward chunk events vào đây. Non-streaming impl bỏ qua.
|
|
195
|
+
*
|
|
196
|
+
* `currentDsl` (MỚI cho multi-step refine): khi caller có hình hiện tại
|
|
197
|
+
* (state.order.length > 0) và muốn AI sửa/thêm → pass currentDsl. Consumer
|
|
198
|
+
* branch sang refine endpoint. Không pass → build endpoint cũ.
|
|
63
199
|
*/
|
|
64
200
|
type GenerateGeometryFigure = (problem: string, options: {
|
|
65
201
|
signal: AbortSignal;
|
|
202
|
+
onProgress?: (info: AiFigureProgress) => void;
|
|
203
|
+
currentDsl?: DslInputT;
|
|
66
204
|
}) => Promise<AiFigureUiResult>;
|
|
67
205
|
/**
|
|
68
206
|
* Kết quả trả về từ `restoreFileFromCustomData`. Chứa đủ thông tin để
|
|
@@ -172,4 +310,4 @@ interface StampType<TCustomData extends BaseStampCustomData = BaseStampCustomDat
|
|
|
172
310
|
experimental?: boolean;
|
|
173
311
|
}
|
|
174
312
|
|
|
175
|
-
export type {
|
|
313
|
+
export type { AiFigureProgress as A, BaseStampCustomData as B, DslInputT as D, GenerateGeometryFigure as G, StampType as S, AiFigureUiResult as a, State as b };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xom11/whiteboard",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Excalidraw + JSXGraph + KaTeX whiteboard component (drawing, geometry stamps, LaTeX stamps).",
|
|
6
6
|
"repository": {
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
"import": "./dist/graph-2d.mjs",
|
|
42
42
|
"require": "./dist/graph-2d.js"
|
|
43
43
|
},
|
|
44
|
+
"./ai": {
|
|
45
|
+
"types": "./dist/ai.d.ts",
|
|
46
|
+
"import": "./dist/ai.mjs",
|
|
47
|
+
"require": "./dist/ai.js"
|
|
48
|
+
},
|
|
44
49
|
"./styles.css": "./dist/index.css"
|
|
45
50
|
},
|
|
46
51
|
"files": [
|