@xom11/whiteboard 0.28.0 → 0.30.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.
Files changed (42) hide show
  1. package/dist/ai.d.mts +250 -277
  2. package/dist/ai.d.ts +250 -277
  3. package/dist/ai.js +6045 -7459
  4. package/dist/ai.js.map +1 -1
  5. package/dist/ai.mjs +4806 -5457
  6. package/dist/ai.mjs.map +1 -1
  7. package/dist/catalog.json +2 -2
  8. package/dist/chunk-QK6OVDLC.mjs +103 -0
  9. package/dist/chunk-QK6OVDLC.mjs.map +1 -0
  10. package/dist/{chunk-AJAHD35N.mjs → chunk-SF3U7ZF4.mjs} +3 -32
  11. package/dist/chunk-SF3U7ZF4.mjs.map +1 -0
  12. package/dist/{chunk-QCZVFEN4.mjs → chunk-XVVLT6B3.mjs} +3 -3
  13. package/dist/{chunk-QCZVFEN4.mjs.map → chunk-XVVLT6B3.mjs.map} +1 -1
  14. package/dist/geometry-2d.d.mts +1 -2
  15. package/dist/geometry-2d.d.ts +1 -2
  16. package/dist/geometry-2d.js +1457 -3832
  17. package/dist/geometry-2d.js.map +1 -1
  18. package/dist/geometry-2d.mjs +1 -1
  19. package/dist/geometry-3d.d.mts +1 -2
  20. package/dist/geometry-3d.d.ts +1 -2
  21. package/dist/graph-2d.d.mts +1 -2
  22. package/dist/graph-2d.d.ts +1 -2
  23. package/dist/handleExtractProblem-BrDY9ifM.d.mts +58 -0
  24. package/dist/handleExtractProblem-BrDY9ifM.d.ts +58 -0
  25. package/dist/{host-4P766V4J.mjs → host-3UFGFMJ2.mjs} +45 -139
  26. package/dist/host-3UFGFMJ2.mjs.map +1 -0
  27. package/dist/index.d.mts +3 -4
  28. package/dist/index.d.ts +3 -4
  29. package/dist/index.js +1487 -3862
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.mjs +4 -4
  32. package/dist/latex.d.mts +1 -2
  33. package/dist/latex.d.ts +1 -2
  34. package/dist/{types-BHYC2Fiw.d.mts → types-C3FjpoUi.d.mts} +1 -232
  35. package/dist/{types-BHYC2Fiw.d.ts → types-C3FjpoUi.d.ts} +1 -232
  36. package/package.json +1 -8
  37. package/dist/chunk-AJAHD35N.mjs.map +0 -1
  38. package/dist/chunk-T3SOHYB2.mjs +0 -851
  39. package/dist/chunk-T3SOHYB2.mjs.map +0 -1
  40. package/dist/handleExtractProblem-C-U5KluK.d.mts +0 -158
  41. package/dist/handleExtractProblem-C-U5KluK.d.ts +0 -158
  42. package/dist/host-4P766V4J.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import './index.css';
3
- import { geometryStamp } from './chunk-QCZVFEN4.mjs';
4
- export { geometryStamp } from './chunk-QCZVFEN4.mjs';
3
+ import { geometryStamp } from './chunk-XVVLT6B3.mjs';
4
+ export { geometryStamp } from './chunk-XVVLT6B3.mjs';
5
5
  import { geometry3dStamp } from './chunk-5JM35CXV.mjs';
6
6
  export { geometry3dStamp } from './chunk-5JM35CXV.mjs';
7
7
  import './chunk-BU5KLO3P.mjs';
@@ -19,7 +19,7 @@ import './chunk-SZDAS7LK.mjs';
19
19
  import './chunk-ICR4CVOE.mjs';
20
20
  import './chunk-ZTQBUKLJ.mjs';
21
21
  import './chunk-IHUFOV7L.mjs';
22
- export { handleExtractProblem } from './chunk-T3SOHYB2.mjs';
22
+ export { handleExtractProblem } from './chunk-QK6OVDLC.mjs';
23
23
  import './chunk-73Q7ADVL.mjs';
24
24
  import './chunk-B4NJJZFR.mjs';
25
25
  import './chunk-X5R72SSJ.mjs';
@@ -39,7 +39,7 @@ var STAMP_CATALOG = Object.freeze([
39
39
  version: 1,
40
40
  experimental: false,
41
41
  runtimeDeps: ["jsxgraph"],
42
- bundleSize: { js: 92.81, css: 0 }
42
+ bundleSize: { js: 85.63, css: 0 }
43
43
  },
44
44
  {
45
45
  id: "latex",
package/dist/latex.d.mts CHANGED
@@ -1,5 +1,4 @@
1
- import { B as BaseStampCustomData, S as StampType } from './types-BHYC2Fiw.mjs';
2
- import 'zod';
1
+ import { B as BaseStampCustomData, S as StampType } from './types-C3FjpoUi.mjs';
3
2
  import 'react';
4
3
  import '@excalidraw/excalidraw/element/types';
5
4
 
package/dist/latex.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { B as BaseStampCustomData, S as StampType } from './types-BHYC2Fiw.js';
2
- import 'zod';
1
+ import { B as BaseStampCustomData, S as StampType } from './types-C3FjpoUi.js';
3
2
  import 'react';
4
3
  import '@excalidraw/excalidraw/element/types';
5
4
 
@@ -1,4 +1,3 @@
1
- import { z } from 'zod';
2
1
  import { ReactNode, ComponentType, RefAttributes } from 'react';
3
2
  import { ExcalidrawElement } from '@excalidraw/excalidraw/element/types';
4
3
 
@@ -21,231 +20,6 @@ interface GeometryDraftPreview {
21
20
  seq: number;
22
21
  }
23
22
 
24
- declare const NameZ: z.ZodString;
25
-
26
- type Name = z.infer<typeof NameZ>;
27
- type DslDistanceSpec = {
28
- kind: 'circleRadius';
29
- circle: Name;
30
- scale?: number;
31
- offset?: number;
32
- } | {
33
- kind: 'segmentLength';
34
- p1: Name;
35
- p2: Name;
36
- scale?: number;
37
- offset?: number;
38
- } | {
39
- kind: 'literal';
40
- value: number;
41
- scale?: number;
42
- offset?: number;
43
- };
44
- type DslPointT = {
45
- name: Name;
46
- kind: 'free';
47
- x: number;
48
- y: number;
49
- } | {
50
- name: Name;
51
- kind: 'midpoint';
52
- p1: Name;
53
- p2: Name;
54
- visible?: boolean;
55
- } | {
56
- name: Name;
57
- kind: 'onSegment';
58
- segmentId: Name;
59
- t: number;
60
- } | {
61
- name: Name;
62
- kind: 'onLine';
63
- lineId: Name;
64
- t: number;
65
- } | {
66
- name: Name;
67
- kind: 'onCircle';
68
- circleId: Name;
69
- theta: number;
70
- } | {
71
- name: Name;
72
- kind: 'perpFoot';
73
- from: Name;
74
- onLine: Name;
75
- } | {
76
- name: Name;
77
- kind: 'circumcenter';
78
- vertices: [Name, Name, Name];
79
- } | {
80
- name: Name;
81
- kind: 'incenter';
82
- vertices: [Name, Name, Name];
83
- } | {
84
- name: Name;
85
- kind: 'centroid';
86
- vertices: [Name, Name, Name];
87
- } | {
88
- name: Name;
89
- kind: 'orthocenter';
90
- vertices: [Name, Name, Name];
91
- } | {
92
- name: Name;
93
- kind: 'intersection';
94
- ref1: Name;
95
- ref2: Name;
96
- branch?: 0 | 1;
97
- } | {
98
- name: Name;
99
- kind: 'secondIntersection';
100
- line: Name;
101
- circle: Name;
102
- other: Name;
103
- } | {
104
- name: Name;
105
- kind: 'circleIntersection';
106
- c1: Name;
107
- c2: Name;
108
- which: 0 | 1;
109
- } | {
110
- name: Name;
111
- kind: 'circleSecondIntersection';
112
- c1: Name;
113
- c2: Name;
114
- exclude: Name;
115
- } | {
116
- name: Name;
117
- kind: 'tangencyPoint';
118
- circle: Name;
119
- onLine: Name;
120
- } | {
121
- name: Name;
122
- kind: 'tangentPointExt';
123
- from: Name;
124
- circle: Name;
125
- which: 0 | 1;
126
- } | {
127
- name: Name;
128
- kind: 'arcMidpoint';
129
- circle: Name;
130
- a: Name;
131
- b: Name;
132
- notContaining: Name;
133
- } | {
134
- name: Name;
135
- kind: 'excenter';
136
- vertices: [Name, Name, Name];
137
- opposite: Name;
138
- } | {
139
- name: Name;
140
- kind: 'reflectPoint';
141
- of: Name;
142
- through: Name;
143
- } | {
144
- name: Name;
145
- kind: 'reflectLine';
146
- of: Name;
147
- through: Name;
148
- } | {
149
- name: Name;
150
- kind: 'pointAtDistance';
151
- from: Name;
152
- through: Name;
153
- distance: DslDistanceSpec;
154
- };
155
- type DslShapeT = {
156
- name: Name;
157
- kind: 'segment';
158
- p1: Name;
159
- p2: Name;
160
- } | {
161
- name: Name;
162
- kind: 'line';
163
- p1: Name;
164
- p2: Name;
165
- } | {
166
- name: Name;
167
- kind: 'ray';
168
- origin: Name;
169
- through: Name;
170
- } | {
171
- name: Name;
172
- kind: 'polygon';
173
- vertices: Name[];
174
- } | {
175
- name: Name;
176
- kind: 'perpendicular';
177
- throughPoint: Name;
178
- toLine: Name;
179
- } | {
180
- name: Name;
181
- kind: 'parallel';
182
- throughPoint: Name;
183
- toLine: Name;
184
- } | {
185
- name: Name;
186
- kind: 'perpBisector';
187
- p1: Name;
188
- p2: Name;
189
- } | {
190
- name: Name;
191
- kind: 'angleBisector';
192
- p1: Name;
193
- vertex: Name;
194
- p2: Name;
195
- } | {
196
- name: Name;
197
- kind: 'lineThrough';
198
- points: Name[];
199
- } | {
200
- name: Name;
201
- kind: 'radicalAxis';
202
- circle1: Name;
203
- circle2: Name;
204
- } | {
205
- name: Name;
206
- kind: 'tangent';
207
- throughPoint: Name;
208
- toCircle: Name;
209
- branch?: 0 | 1 | 'on';
210
- } | {
211
- name: Name;
212
- kind: 'circleCP';
213
- center: Name;
214
- surfacePoint: Name;
215
- visible?: boolean;
216
- } | {
217
- name: Name;
218
- kind: 'circle3';
219
- p1: Name;
220
- p2: Name;
221
- p3: Name;
222
- } | {
223
- name: Name;
224
- kind: 'circleDiameter';
225
- p1: Name;
226
- p2: Name;
227
- visible?: boolean;
228
- } | {
229
- name: Name;
230
- kind: 'circleCR';
231
- center: Name;
232
- radius: number;
233
- } | {
234
- name: Name;
235
- kind: 'incircle';
236
- vertices: [Name, Name, Name];
237
- } | {
238
- name: Name;
239
- kind: 'excircle';
240
- vertices: [Name, Name, Name];
241
- opposite: Name;
242
- };
243
- type DslInputT = {
244
- version: 1;
245
- points: DslPointT[];
246
- shapes: DslShapeT[];
247
- };
248
-
249
23
  type SceneObject<A = Record<string, unknown>> = {
250
24
  id: string;
251
25
  kind: string;
@@ -316,15 +90,10 @@ interface AiFigureProgress {
316
90
  *
317
91
  * `onProgress` là optional: nếu consumer dùng streaming endpoint (SSE),
318
92
  * forward chunk events vào đây. Non-streaming impl bỏ qua.
319
- *
320
- * `currentDsl` (MỚI cho multi-step refine): khi caller có hình hiện tại
321
- * (state.order.length > 0) và muốn AI sửa/thêm → pass currentDsl. Consumer
322
- * branch sang refine endpoint. Không pass → build endpoint cũ.
323
93
  */
324
94
  type GenerateGeometryFigure = (problem: string, options: {
325
95
  signal: AbortSignal;
326
96
  onProgress?: (info: AiFigureProgress) => void;
327
- currentDsl?: DslInputT;
328
97
  }) => Promise<AiFigureUiResult>;
329
98
  /**
330
99
  * Kết quả trả về từ `restoreFileFromCustomData`. Chứa đủ thông tin để
@@ -439,4 +208,4 @@ interface StampType<TCustomData extends BaseStampCustomData = BaseStampCustomDat
439
208
  experimental?: boolean;
440
209
  }
441
210
 
442
- export type { AiFigureProgress as A, BaseStampCustomData as B, DslInputT as D, GenerateGeometryFigure as G, StampType as S, GeometryDraftPreview as a, AiFigureUiResult as b, State as c };
211
+ export type { AiFigureProgress as A, BaseStampCustomData as B, GenerateGeometryFigure as G, StampType as S, GeometryDraftPreview as a, AiFigureUiResult as b, State as c };
@@ -1,4 +1,3 @@
1
- import { z } from 'zod';
2
1
  import { ReactNode, ComponentType, RefAttributes } from 'react';
3
2
  import { ExcalidrawElement } from '@excalidraw/excalidraw/element/types';
4
3
 
@@ -21,231 +20,6 @@ interface GeometryDraftPreview {
21
20
  seq: number;
22
21
  }
23
22
 
24
- declare const NameZ: z.ZodString;
25
-
26
- type Name = z.infer<typeof NameZ>;
27
- type DslDistanceSpec = {
28
- kind: 'circleRadius';
29
- circle: Name;
30
- scale?: number;
31
- offset?: number;
32
- } | {
33
- kind: 'segmentLength';
34
- p1: Name;
35
- p2: Name;
36
- scale?: number;
37
- offset?: number;
38
- } | {
39
- kind: 'literal';
40
- value: number;
41
- scale?: number;
42
- offset?: number;
43
- };
44
- type DslPointT = {
45
- name: Name;
46
- kind: 'free';
47
- x: number;
48
- y: number;
49
- } | {
50
- name: Name;
51
- kind: 'midpoint';
52
- p1: Name;
53
- p2: Name;
54
- visible?: boolean;
55
- } | {
56
- name: Name;
57
- kind: 'onSegment';
58
- segmentId: Name;
59
- t: number;
60
- } | {
61
- name: Name;
62
- kind: 'onLine';
63
- lineId: Name;
64
- t: number;
65
- } | {
66
- name: Name;
67
- kind: 'onCircle';
68
- circleId: Name;
69
- theta: number;
70
- } | {
71
- name: Name;
72
- kind: 'perpFoot';
73
- from: Name;
74
- onLine: Name;
75
- } | {
76
- name: Name;
77
- kind: 'circumcenter';
78
- vertices: [Name, Name, Name];
79
- } | {
80
- name: Name;
81
- kind: 'incenter';
82
- vertices: [Name, Name, Name];
83
- } | {
84
- name: Name;
85
- kind: 'centroid';
86
- vertices: [Name, Name, Name];
87
- } | {
88
- name: Name;
89
- kind: 'orthocenter';
90
- vertices: [Name, Name, Name];
91
- } | {
92
- name: Name;
93
- kind: 'intersection';
94
- ref1: Name;
95
- ref2: Name;
96
- branch?: 0 | 1;
97
- } | {
98
- name: Name;
99
- kind: 'secondIntersection';
100
- line: Name;
101
- circle: Name;
102
- other: Name;
103
- } | {
104
- name: Name;
105
- kind: 'circleIntersection';
106
- c1: Name;
107
- c2: Name;
108
- which: 0 | 1;
109
- } | {
110
- name: Name;
111
- kind: 'circleSecondIntersection';
112
- c1: Name;
113
- c2: Name;
114
- exclude: Name;
115
- } | {
116
- name: Name;
117
- kind: 'tangencyPoint';
118
- circle: Name;
119
- onLine: Name;
120
- } | {
121
- name: Name;
122
- kind: 'tangentPointExt';
123
- from: Name;
124
- circle: Name;
125
- which: 0 | 1;
126
- } | {
127
- name: Name;
128
- kind: 'arcMidpoint';
129
- circle: Name;
130
- a: Name;
131
- b: Name;
132
- notContaining: Name;
133
- } | {
134
- name: Name;
135
- kind: 'excenter';
136
- vertices: [Name, Name, Name];
137
- opposite: Name;
138
- } | {
139
- name: Name;
140
- kind: 'reflectPoint';
141
- of: Name;
142
- through: Name;
143
- } | {
144
- name: Name;
145
- kind: 'reflectLine';
146
- of: Name;
147
- through: Name;
148
- } | {
149
- name: Name;
150
- kind: 'pointAtDistance';
151
- from: Name;
152
- through: Name;
153
- distance: DslDistanceSpec;
154
- };
155
- type DslShapeT = {
156
- name: Name;
157
- kind: 'segment';
158
- p1: Name;
159
- p2: Name;
160
- } | {
161
- name: Name;
162
- kind: 'line';
163
- p1: Name;
164
- p2: Name;
165
- } | {
166
- name: Name;
167
- kind: 'ray';
168
- origin: Name;
169
- through: Name;
170
- } | {
171
- name: Name;
172
- kind: 'polygon';
173
- vertices: Name[];
174
- } | {
175
- name: Name;
176
- kind: 'perpendicular';
177
- throughPoint: Name;
178
- toLine: Name;
179
- } | {
180
- name: Name;
181
- kind: 'parallel';
182
- throughPoint: Name;
183
- toLine: Name;
184
- } | {
185
- name: Name;
186
- kind: 'perpBisector';
187
- p1: Name;
188
- p2: Name;
189
- } | {
190
- name: Name;
191
- kind: 'angleBisector';
192
- p1: Name;
193
- vertex: Name;
194
- p2: Name;
195
- } | {
196
- name: Name;
197
- kind: 'lineThrough';
198
- points: Name[];
199
- } | {
200
- name: Name;
201
- kind: 'radicalAxis';
202
- circle1: Name;
203
- circle2: Name;
204
- } | {
205
- name: Name;
206
- kind: 'tangent';
207
- throughPoint: Name;
208
- toCircle: Name;
209
- branch?: 0 | 1 | 'on';
210
- } | {
211
- name: Name;
212
- kind: 'circleCP';
213
- center: Name;
214
- surfacePoint: Name;
215
- visible?: boolean;
216
- } | {
217
- name: Name;
218
- kind: 'circle3';
219
- p1: Name;
220
- p2: Name;
221
- p3: Name;
222
- } | {
223
- name: Name;
224
- kind: 'circleDiameter';
225
- p1: Name;
226
- p2: Name;
227
- visible?: boolean;
228
- } | {
229
- name: Name;
230
- kind: 'circleCR';
231
- center: Name;
232
- radius: number;
233
- } | {
234
- name: Name;
235
- kind: 'incircle';
236
- vertices: [Name, Name, Name];
237
- } | {
238
- name: Name;
239
- kind: 'excircle';
240
- vertices: [Name, Name, Name];
241
- opposite: Name;
242
- };
243
- type DslInputT = {
244
- version: 1;
245
- points: DslPointT[];
246
- shapes: DslShapeT[];
247
- };
248
-
249
23
  type SceneObject<A = Record<string, unknown>> = {
250
24
  id: string;
251
25
  kind: string;
@@ -316,15 +90,10 @@ interface AiFigureProgress {
316
90
  *
317
91
  * `onProgress` là optional: nếu consumer dùng streaming endpoint (SSE),
318
92
  * forward chunk events vào đây. Non-streaming impl bỏ qua.
319
- *
320
- * `currentDsl` (MỚI cho multi-step refine): khi caller có hình hiện tại
321
- * (state.order.length > 0) và muốn AI sửa/thêm → pass currentDsl. Consumer
322
- * branch sang refine endpoint. Không pass → build endpoint cũ.
323
93
  */
324
94
  type GenerateGeometryFigure = (problem: string, options: {
325
95
  signal: AbortSignal;
326
96
  onProgress?: (info: AiFigureProgress) => void;
327
- currentDsl?: DslInputT;
328
97
  }) => Promise<AiFigureUiResult>;
329
98
  /**
330
99
  * Kết quả trả về từ `restoreFileFromCustomData`. Chứa đủ thông tin để
@@ -439,4 +208,4 @@ interface StampType<TCustomData extends BaseStampCustomData = BaseStampCustomDat
439
208
  experimental?: boolean;
440
209
  }
441
210
 
442
- export type { AiFigureProgress as A, BaseStampCustomData as B, DslInputT as D, GenerateGeometryFigure as G, StampType as S, GeometryDraftPreview as a, AiFigureUiResult as b, State as c };
211
+ export type { AiFigureProgress as A, BaseStampCustomData as B, GenerateGeometryFigure as G, StampType as S, GeometryDraftPreview as a, AiFigureUiResult as b, State as c };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xom11/whiteboard",
3
- "version": "0.28.0",
3
+ "version": "0.30.0",
4
4
  "private": false,
5
5
  "description": "Excalidraw + JSXGraph + KaTeX whiteboard component (drawing, geometry stamps, LaTeX stamps).",
6
6
  "repository": {
@@ -118,17 +118,10 @@
118
118
  "vite": "^8.0.13"
119
119
  },
120
120
  "dependencies": {
121
- "@anthropic-ai/claude-agent-sdk": "^0.3.161",
122
- "@anthropic-ai/sdk": "^0.98.0",
123
121
  "immer": "^10.2.0",
124
122
  "pdfjs-dist": "^5.7.284",
125
123
  "tesseract.js": "^7.0.0",
126
124
  "zod": "^3.23.8",
127
125
  "zod-to-json-schema": "^3.25.2"
128
- },
129
- "overrides": {
130
- "@anthropic-ai/claude-agent-sdk": {
131
- "zod": "$zod"
132
- }
133
126
  }
134
127
  }