@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.
- package/README.md +87 -1
- package/dist/chunk-74VEEZBV.mjs +619 -0
- package/dist/chunk-74VEEZBV.mjs.map +1 -0
- package/dist/chunk-7P7SQFOW.mjs +39 -0
- package/dist/chunk-7P7SQFOW.mjs.map +1 -0
- package/dist/chunk-C6SCVOMC.mjs +111 -0
- package/dist/chunk-C6SCVOMC.mjs.map +1 -0
- package/dist/chunk-DU2NFHRR.mjs +103 -0
- package/dist/chunk-DU2NFHRR.mjs.map +1 -0
- package/dist/chunk-DU3RHKT5.mjs +44 -0
- package/dist/chunk-DU3RHKT5.mjs.map +1 -0
- package/dist/chunk-HTBLO5JO.mjs +41 -0
- package/dist/chunk-HTBLO5JO.mjs.map +1 -0
- package/dist/chunk-IUVV52HO.mjs +144 -0
- package/dist/chunk-IUVV52HO.mjs.map +1 -0
- package/dist/chunk-KEYZ5EZT.mjs +154 -0
- package/dist/chunk-KEYZ5EZT.mjs.map +1 -0
- package/dist/chunk-P2AOIF7S.mjs +40 -0
- package/dist/chunk-P2AOIF7S.mjs.map +1 -0
- package/dist/chunk-SBDMF4NQ.mjs +212 -0
- package/dist/chunk-SBDMF4NQ.mjs.map +1 -0
- package/dist/chunk-X5R72SSJ.mjs +52 -0
- package/dist/chunk-X5R72SSJ.mjs.map +1 -0
- package/dist/chunk-ZVN356JZ.mjs +58 -0
- package/dist/chunk-ZVN356JZ.mjs.map +1 -0
- package/dist/geometry-2d.d.mts +16 -0
- package/dist/geometry-2d.d.ts +16 -0
- package/dist/geometry-2d.js +3581 -0
- package/dist/geometry-2d.js.map +1 -0
- package/dist/geometry-2d.mjs +7 -0
- package/dist/geometry-2d.mjs.map +1 -0
- package/dist/geometry-3d.d.mts +16 -0
- package/dist/geometry-3d.d.ts +16 -0
- package/dist/geometry-3d.js +4105 -0
- package/dist/geometry-3d.js.map +1 -0
- package/dist/geometry-3d.mjs +7 -0
- package/dist/geometry-3d.mjs.map +1 -0
- package/dist/graph-2d.d.mts +16 -0
- package/dist/graph-2d.d.ts +16 -0
- package/dist/graph-2d.js +2019 -0
- package/dist/graph-2d.js.map +1 -0
- package/dist/graph-2d.mjs +6 -0
- package/dist/graph-2d.mjs.map +1 -0
- package/dist/host-LZH2FZ2N.mjs +1066 -0
- package/dist/host-LZH2FZ2N.mjs.map +1 -0
- package/dist/host-PIIDSMVE.mjs +3187 -0
- package/dist/host-PIIDSMVE.mjs.map +1 -0
- package/dist/host-VDNAJMLC.mjs +2864 -0
- package/dist/host-VDNAJMLC.mjs.map +1 -0
- package/dist/host-Z3TEJKZA.mjs +466 -0
- package/dist/host-Z3TEJKZA.mjs.map +1 -0
- package/dist/index.d.mts +30 -148
- package/dist/index.d.ts +30 -148
- package/dist/index.js +8370 -5614
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +395 -7294
- package/dist/index.mjs.map +1 -1
- package/dist/latex.d.mts +15 -0
- package/dist/latex.d.ts +15 -0
- package/dist/latex.js +750 -0
- package/dist/latex.js.map +1 -0
- package/dist/latex.mjs +6 -0
- package/dist/latex.mjs.map +1 -0
- package/dist/types-CinstD7T.d.mts +110 -0
- package/dist/types-CinstD7T.d.ts +110 -0
- 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
|
|
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/`:
|