@xom11/whiteboard 0.6.5 → 0.9.1

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 (66) hide show
  1. package/README.md +87 -1
  2. package/dist/chunk-74VEEZBV.mjs +619 -0
  3. package/dist/chunk-74VEEZBV.mjs.map +1 -0
  4. package/dist/chunk-7P7SQFOW.mjs +39 -0
  5. package/dist/chunk-7P7SQFOW.mjs.map +1 -0
  6. package/dist/chunk-C6SCVOMC.mjs +111 -0
  7. package/dist/chunk-C6SCVOMC.mjs.map +1 -0
  8. package/dist/chunk-DU2NFHRR.mjs +103 -0
  9. package/dist/chunk-DU2NFHRR.mjs.map +1 -0
  10. package/dist/chunk-DU3RHKT5.mjs +44 -0
  11. package/dist/chunk-DU3RHKT5.mjs.map +1 -0
  12. package/dist/chunk-HTBLO5JO.mjs +41 -0
  13. package/dist/chunk-HTBLO5JO.mjs.map +1 -0
  14. package/dist/chunk-IUVV52HO.mjs +144 -0
  15. package/dist/chunk-IUVV52HO.mjs.map +1 -0
  16. package/dist/chunk-KEYZ5EZT.mjs +154 -0
  17. package/dist/chunk-KEYZ5EZT.mjs.map +1 -0
  18. package/dist/chunk-P2AOIF7S.mjs +40 -0
  19. package/dist/chunk-P2AOIF7S.mjs.map +1 -0
  20. package/dist/chunk-SBDMF4NQ.mjs +212 -0
  21. package/dist/chunk-SBDMF4NQ.mjs.map +1 -0
  22. package/dist/chunk-X5R72SSJ.mjs +52 -0
  23. package/dist/chunk-X5R72SSJ.mjs.map +1 -0
  24. package/dist/chunk-ZVN356JZ.mjs +58 -0
  25. package/dist/chunk-ZVN356JZ.mjs.map +1 -0
  26. package/dist/geometry-2d.d.mts +16 -0
  27. package/dist/geometry-2d.d.ts +16 -0
  28. package/dist/geometry-2d.js +3581 -0
  29. package/dist/geometry-2d.js.map +1 -0
  30. package/dist/geometry-2d.mjs +7 -0
  31. package/dist/geometry-2d.mjs.map +1 -0
  32. package/dist/geometry-3d.d.mts +16 -0
  33. package/dist/geometry-3d.d.ts +16 -0
  34. package/dist/geometry-3d.js +4105 -0
  35. package/dist/geometry-3d.js.map +1 -0
  36. package/dist/geometry-3d.mjs +7 -0
  37. package/dist/geometry-3d.mjs.map +1 -0
  38. package/dist/graph-2d.d.mts +16 -0
  39. package/dist/graph-2d.d.ts +16 -0
  40. package/dist/graph-2d.js +2019 -0
  41. package/dist/graph-2d.js.map +1 -0
  42. package/dist/graph-2d.mjs +6 -0
  43. package/dist/graph-2d.mjs.map +1 -0
  44. package/dist/host-LZH2FZ2N.mjs +1066 -0
  45. package/dist/host-LZH2FZ2N.mjs.map +1 -0
  46. package/dist/host-PIIDSMVE.mjs +3187 -0
  47. package/dist/host-PIIDSMVE.mjs.map +1 -0
  48. package/dist/host-VDNAJMLC.mjs +2864 -0
  49. package/dist/host-VDNAJMLC.mjs.map +1 -0
  50. package/dist/host-Z3TEJKZA.mjs +466 -0
  51. package/dist/host-Z3TEJKZA.mjs.map +1 -0
  52. package/dist/index.d.mts +30 -148
  53. package/dist/index.d.ts +30 -148
  54. package/dist/index.js +8370 -5614
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +395 -7294
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/latex.d.mts +15 -0
  59. package/dist/latex.d.ts +15 -0
  60. package/dist/latex.js +750 -0
  61. package/dist/latex.js.map +1 -0
  62. package/dist/latex.mjs +6 -0
  63. package/dist/latex.mjs.map +1 -0
  64. package/dist/types-CinstD7T.d.mts +110 -0
  65. package/dist/types-CinstD7T.d.ts +110 -0
  66. package/package.json +26 -7
package/README.md CHANGED
@@ -14,7 +14,33 @@ npm install github:xom11/whiteboard#v0.2.0
14
14
  "@xom11/whiteboard": "github:xom11/whiteboard#v0.2.0"
15
15
  ```
16
16
 
17
- Peer deps: `react >=18`, `react-dom >=18`, `next >=14`.
17
+ ### Peer dependencies
18
+
19
+ Từ phiên bản này, `@excalidraw/excalidraw`, `jsxgraph` và `katex` được externalize khỏi bundle (giảm bundle ~70%). Consumer **bắt buộc** cài kèm:
20
+
21
+ ```bash
22
+ npm install @excalidraw/excalidraw@^0.18.1 jsxgraph@^1.12.2 katex@^0.16.45 react@>=18 react-dom@>=18
23
+ ```
24
+
25
+ Hoặc thêm vào `package.json` của consumer:
26
+
27
+ ```json
28
+ {
29
+ "dependencies": {
30
+ "@excalidraw/excalidraw": "^0.18.1",
31
+ "jsxgraph": "^1.12.2",
32
+ "katex": "^0.16.45",
33
+ "react": ">=18",
34
+ "react-dom": ">=18"
35
+ }
36
+ }
37
+ ```
38
+
39
+ Lý do externalize:
40
+
41
+ - **Tránh duplicate React** khi consumer cũng dùng Excalidraw trực tiếp.
42
+ - **Bundle nhẹ hơn ~70%** (jsxgraph ~600KB + katex ~280KB + excalidraw ~2MB không còn nằm trong dist của whiteboard).
43
+ - **Consumer kiểm soát version** + dedupe qua npm/pnpm tự nhiên.
18
44
 
19
45
  ## Usage
20
46
 
@@ -35,6 +61,55 @@ export function ClassroomBoard() {
35
61
  }
36
62
  ```
37
63
 
64
+ ## Migration to v0.8.0 (geometry-3d redesign)
65
+
66
+ `geometry3dStamp` được viết lại theo UX của GeoGebra 3D Calculator:
67
+
68
+ - Click trên mặt nền / trục / mặt phẳng / mặt cầu để **đặt điểm constraint** (không còn prompt nhập toạ độ).
69
+ - **Drag điểm** trên Move tool — điểm trượt theo surface (z-axis chỉ thay đổi z, mặt nền giữ z=0).
70
+ - **Algebra panel** mới (tab bên trái) hiển thị mỗi object: label, biểu thức symbolic, giá trị numeric, menu ⋮ (đổi tên / màu / ẩn / xoá).
71
+ - 16 tool: Move, Point, Point-on-Object, Segment, Line, Ray, Vector, Polygon, Plane (3 điểm), Pyramid, Prism, Tetrahedron, Cube, Sphere, Cylinder, Cone.
72
+
73
+ **Backward compat**: Stamps lưu từ v0.7.0 load OK (legacy points → constraint free). API consumer giữ nguyên.
74
+
75
+ **Tạm thời bỏ**: Chord-shortcut 2 phím (`G S` cho segment, v.v.) — sẽ trở lại với letter-mapping mới.
76
+
77
+ ## Migration to v0.7.0 (BREAKING)
78
+
79
+ `DEFAULT_STAMPS` v0.7.0 chỉ gồm 2 stamps stable: `geometry` + `latex`. 3D + graph2d chuyển sang opt-IN (experimental).
80
+
81
+ ### Giữ behavior cũ (4 stamps):
82
+
83
+ ```tsx
84
+ import { Whiteboard, ALL_STAMPS } from '@xom11/whiteboard';
85
+
86
+ <Whiteboard stamps={ALL_STAMPS} />
87
+ ```
88
+
89
+ ### Chỉ thêm 3D (giữ default + 3D):
90
+
91
+ ```tsx
92
+ import { Whiteboard, DEFAULT_STAMPS, geometry3dStamp } from '@xom11/whiteboard';
93
+
94
+ <Whiteboard stamps={[...DEFAULT_STAMPS, geometry3dStamp]} />
95
+ ```
96
+
97
+ ### Subpath imports (tree-shake):
98
+
99
+ Mỗi stamp có thể import riêng để bundle nhẹ hơn:
100
+
101
+ ```tsx
102
+ import { Whiteboard } from '@xom11/whiteboard';
103
+ import { geometryStamp } from '@xom11/whiteboard/geometry-2d';
104
+ import { latexStamp } from '@xom11/whiteboard/latex';
105
+
106
+ <Whiteboard stamps={[geometryStamp, latexStamp]} />
107
+ ```
108
+
109
+ ### Drop Next.js peer dep
110
+
111
+ `next` không còn là peer dependency. Whiteboard dùng `React.lazy + Suspense` thuần. Consumer cần Next.js App Router vẫn hoạt động (dist có sẵn `'use client'` directive).
112
+
38
113
  ## Development
39
114
 
40
115
  ```bash
@@ -44,6 +119,17 @@ npm run build # tsup → dist/{index.js, index.mjs, index.d.ts}
44
119
  npm run dev # tsup watch mode
45
120
  ```
46
121
 
122
+ ## E2E tests
123
+
124
+ Playwright smoke tests chạy qua headless Chromium, tự start vite demo:
125
+
126
+ ```bash
127
+ npx playwright install chromium # cài browser binary (chỉ làm 1 lần)
128
+ npm run test:e2e # chạy specs
129
+ ```
130
+
131
+ Chi tiết xem [`tests/e2e/README.md`](./tests/e2e/README.md).
132
+
47
133
  ## Workflow phát hành phiên bản mới
48
134
 
49
135
  `npm ci --ignore-scripts` ở consumer skip prepare hook → phải commit `dist/`: