@xom11/whiteboard 0.31.0 → 0.33.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 (93) hide show
  1. package/dist/ai.d.mts +149 -28
  2. package/dist/ai.d.ts +149 -28
  3. package/dist/ai.js +2652 -430
  4. package/dist/ai.js.map +1 -1
  5. package/dist/ai.mjs +2482 -426
  6. package/dist/ai.mjs.map +1 -1
  7. package/dist/catalog.json +4 -4
  8. package/dist/{chunk-JJ4FPCBE.mjs → chunk-4EXRNZRX.mjs} +641 -75
  9. package/dist/chunk-4EXRNZRX.mjs.map +1 -0
  10. package/dist/{chunk-TMRFSOM7.mjs → chunk-4NJUTCFF.mjs} +4 -4
  11. package/dist/{chunk-TMRFSOM7.mjs.map → chunk-4NJUTCFF.mjs.map} +1 -1
  12. package/dist/{chunk-LTLLQUMN.mjs → chunk-BZZ5BROM.mjs} +6 -7
  13. package/dist/chunk-BZZ5BROM.mjs.map +1 -0
  14. package/dist/{host-KMWP7KBT.mjs → chunk-C3RDFBQ5.mjs} +20 -35
  15. package/dist/chunk-C3RDFBQ5.mjs.map +1 -0
  16. package/dist/chunk-C7C66BAV.mjs +11 -0
  17. package/dist/chunk-C7C66BAV.mjs.map +1 -0
  18. package/dist/{chunk-T3N4BSJV.mjs → chunk-DCFZTKFE.mjs} +13 -5
  19. package/dist/chunk-DCFZTKFE.mjs.map +1 -0
  20. package/dist/{chunk-44JY2AKC.mjs → chunk-F42MZ745.mjs} +3 -3
  21. package/dist/{chunk-44JY2AKC.mjs.map → chunk-F42MZ745.mjs.map} +1 -1
  22. package/dist/{chunk-BMYC2ILT.mjs → chunk-FOPZOVI3.mjs} +5 -4
  23. package/dist/chunk-FOPZOVI3.mjs.map +1 -0
  24. package/dist/{chunk-K5BS2H56.mjs → chunk-GKDQ5IV7.mjs} +4 -4
  25. package/dist/{chunk-K5BS2H56.mjs.map → chunk-GKDQ5IV7.mjs.map} +1 -1
  26. package/dist/{chunk-73Q7ADVL.mjs → chunk-MNHOFOM5.mjs} +2 -2
  27. package/dist/{chunk-73Q7ADVL.mjs.map → chunk-MNHOFOM5.mjs.map} +1 -1
  28. package/dist/{chunk-KOXOC2FI.mjs → chunk-NBMYET5H.mjs} +11 -15
  29. package/dist/chunk-NBMYET5H.mjs.map +1 -0
  30. package/dist/{chunk-DWIEVCGK.mjs → chunk-NTFG7ZRN.mjs} +53 -3
  31. package/dist/chunk-NTFG7ZRN.mjs.map +1 -0
  32. package/dist/{chunk-C76SOFXF.mjs → chunk-QCK3Z5WN.mjs} +3 -3
  33. package/dist/{chunk-C76SOFXF.mjs.map → chunk-QCK3Z5WN.mjs.map} +1 -1
  34. package/dist/chunk-SUXIMLYN.mjs +238 -0
  35. package/dist/chunk-SUXIMLYN.mjs.map +1 -0
  36. package/dist/geometry-2d.d.mts +1 -1
  37. package/dist/geometry-2d.d.ts +1 -1
  38. package/dist/geometry-2d.js +1026 -231
  39. package/dist/geometry-2d.js.map +1 -1
  40. package/dist/geometry-2d.mjs +6 -5
  41. package/dist/geometry-3d.d.mts +1 -1
  42. package/dist/geometry-3d.d.ts +1 -1
  43. package/dist/geometry-3d.js +4001 -475
  44. package/dist/geometry-3d.js.map +1 -1
  45. package/dist/geometry-3d.mjs +5 -5
  46. package/dist/graph-2d.d.mts +1 -1
  47. package/dist/graph-2d.d.ts +1 -1
  48. package/dist/graph-2d.js +712 -115
  49. package/dist/graph-2d.js.map +1 -1
  50. package/dist/graph-2d.mjs +5 -5
  51. package/dist/{handleExtractProblem-BrDY9ifM.d.ts → handleExtractProblem-mtJyhEw3.d.mts} +2 -0
  52. package/dist/{handleExtractProblem-BrDY9ifM.d.mts → handleExtractProblem-mtJyhEw3.d.ts} +2 -0
  53. package/dist/host-6WTLCXUE.mjs +62 -0
  54. package/dist/host-6WTLCXUE.mjs.map +1 -0
  55. package/dist/{host-H2IGOKJU.mjs → host-BWIXT5TR.mjs} +3 -3
  56. package/dist/{host-H2IGOKJU.mjs.map → host-BWIXT5TR.mjs.map} +1 -1
  57. package/dist/{host-4FIUNIDQ.mjs → host-QDVRULJV.mjs} +14 -11
  58. package/dist/host-QDVRULJV.mjs.map +1 -0
  59. package/dist/host-USOIVTQB.mjs +4976 -0
  60. package/dist/host-USOIVTQB.mjs.map +1 -0
  61. package/dist/index.d.mts +14 -4
  62. package/dist/index.d.ts +14 -4
  63. package/dist/index.js +4273 -521
  64. package/dist/index.js.map +1 -1
  65. package/dist/index.mjs +48 -27
  66. package/dist/index.mjs.map +1 -1
  67. package/dist/latex.d.mts +1 -1
  68. package/dist/latex.d.ts +1 -1
  69. package/dist/latex.mjs +1 -1
  70. package/dist/serialize-7UZWQQ4I.mjs +9 -0
  71. package/dist/{serialize-PGHQZEPV.mjs.map → serialize-7UZWQQ4I.mjs.map} +1 -1
  72. package/dist/studio.d.mts +35 -0
  73. package/dist/studio.d.ts +35 -0
  74. package/dist/studio.js +10883 -0
  75. package/dist/studio.js.map +1 -0
  76. package/dist/studio.mjs +28 -0
  77. package/dist/studio.mjs.map +1 -0
  78. package/dist/{types-tePd94vW.d.ts → types-eEEEVsLF.d.mts} +1 -1
  79. package/dist/{types-tePd94vW.d.mts → types-eEEEVsLF.d.ts} +1 -1
  80. package/package.json +12 -2
  81. package/dist/chunk-BMYC2ILT.mjs.map +0 -1
  82. package/dist/chunk-DWIEVCGK.mjs.map +0 -1
  83. package/dist/chunk-JJ4FPCBE.mjs.map +0 -1
  84. package/dist/chunk-KOXOC2FI.mjs.map +0 -1
  85. package/dist/chunk-LTLLQUMN.mjs.map +0 -1
  86. package/dist/chunk-QK6OVDLC.mjs +0 -103
  87. package/dist/chunk-QK6OVDLC.mjs.map +0 -1
  88. package/dist/chunk-T3N4BSJV.mjs.map +0 -1
  89. package/dist/host-4FIUNIDQ.mjs.map +0 -1
  90. package/dist/host-4ZB4XD4S.mjs +0 -2378
  91. package/dist/host-4ZB4XD4S.mjs.map +0 -1
  92. package/dist/host-KMWP7KBT.mjs.map +0 -1
  93. package/dist/serialize-PGHQZEPV.mjs +0 -9
package/dist/index.mjs CHANGED
@@ -1,30 +1,31 @@
1
1
  "use client";
2
2
  import './index.css';
3
- import { geometryStamp } from './chunk-BMYC2ILT.mjs';
4
- export { geometryStamp } from './chunk-BMYC2ILT.mjs';
5
- import { geometry3dStamp } from './chunk-TMRFSOM7.mjs';
6
- export { geometry3dStamp } from './chunk-TMRFSOM7.mjs';
7
- import './chunk-T3N4BSJV.mjs';
8
- import { latexStamp } from './chunk-C76SOFXF.mjs';
9
- export { latexStamp } from './chunk-C76SOFXF.mjs';
10
- import { graph2dStamp } from './chunk-K5BS2H56.mjs';
11
- export { graph2dStamp } from './chunk-K5BS2H56.mjs';
3
+ import { geometryStamp } from './chunk-FOPZOVI3.mjs';
4
+ export { geometryStamp } from './chunk-FOPZOVI3.mjs';
5
+ import { geometry3dStamp } from './chunk-4NJUTCFF.mjs';
6
+ export { geometry3dStamp } from './chunk-4NJUTCFF.mjs';
7
+ import './chunk-DCFZTKFE.mjs';
8
+ import { latexStamp } from './chunk-QCK3Z5WN.mjs';
9
+ export { latexStamp } from './chunk-QCK3Z5WN.mjs';
10
+ import './chunk-X5R72SSJ.mjs';
11
+ import { graph2dStamp } from './chunk-GKDQ5IV7.mjs';
12
+ export { graph2dStamp } from './chunk-GKDQ5IV7.mjs';
12
13
  import './chunk-KWDBVLST.mjs';
13
14
  import './chunk-O4WIZFRQ.mjs';
14
15
  import './chunk-K7VJU7LQ.mjs';
15
- import './chunk-44JY2AKC.mjs';
16
- import './chunk-KOXOC2FI.mjs';
16
+ import './chunk-F42MZ745.mjs';
17
+ import { insertStampImage } from './chunk-QLQ4MJNO.mjs';
18
+ import './chunk-C7C66BAV.mjs';
19
+ import './chunk-5UTGXHLJ.mjs';
20
+ import { renderGeometrySvgFromState } from './chunk-NBMYET5H.mjs';
17
21
  import './chunk-R5FL6S7L.mjs';
18
22
  import './chunk-IE2GGHNF.mjs';
19
23
  import './chunk-ICR4CVOE.mjs';
20
- import './chunk-JJ4FPCBE.mjs';
24
+ import './chunk-4EXRNZRX.mjs';
21
25
  import './chunk-CH6SFONH.mjs';
22
- export { handleExtractProblem } from './chunk-QK6OVDLC.mjs';
23
- import './chunk-73Q7ADVL.mjs';
26
+ export { handleExtractProblem } from './chunk-SUXIMLYN.mjs';
27
+ import './chunk-MNHOFOM5.mjs';
24
28
  import './chunk-B4NJJZFR.mjs';
25
- import './chunk-X5R72SSJ.mjs';
26
- import './chunk-QLQ4MJNO.mjs';
27
- import './chunk-5UTGXHLJ.mjs';
28
29
  import './chunk-J5LGTIGS.mjs';
29
30
  import { lazy, useRef, useCallback, useEffect, Suspense, useState, useMemo, useLayoutEffect } from 'react';
30
31
  import { createPortal } from 'react-dom';
@@ -39,7 +40,7 @@ var STAMP_CATALOG = Object.freeze([
39
40
  version: 1,
40
41
  experimental: false,
41
42
  runtimeDeps: ["jsxgraph"],
42
- bundleSize: { js: 89.68, css: 0 }
43
+ bundleSize: { js: 97.84, css: 0 }
43
44
  },
44
45
  {
45
46
  id: "latex",
@@ -55,7 +56,7 @@ var STAMP_CATALOG = Object.freeze([
55
56
  version: 2,
56
57
  experimental: true,
57
58
  runtimeDeps: ["jsxgraph"],
58
- bundleSize: { js: 59.47, css: 0 }
59
+ bundleSize: { js: 85.26, css: 0 }
59
60
  },
60
61
  {
61
62
  id: "graph2d",
@@ -63,7 +64,7 @@ var STAMP_CATALOG = Object.freeze([
63
64
  version: 2,
64
65
  experimental: true,
65
66
  runtimeDeps: ["jsxgraph"],
66
- bundleSize: { js: 52.92, css: 0 }
67
+ bundleSize: { js: 58.04, css: 0 }
67
68
  }
68
69
  ]);
69
70
  function findCatalogEntry(id) {
@@ -1768,17 +1769,17 @@ function useScenePersist(opts) {
1768
1769
  try {
1769
1770
  const latestScene = latestSceneRef.current;
1770
1771
  if (!latestScene) return;
1771
- const liveElements = latestScene.elements.filter((e) => !e.isDeleted);
1772
+ const liveElements2 = latestScene.elements.filter((e) => !e.isDeleted);
1772
1773
  const liveAppState = pickSyncableAppState(latestScene.appState);
1773
1774
  const hashFn = hashElementsVersionRef.current;
1774
- const elementHash = hashFn ? hashFn(liveElements) : liveElements.map((e) => e.id).join("|");
1775
+ const elementHash = hashFn ? hashFn(liveElements2) : liveElements2.map((e) => e.id).join("|");
1775
1776
  const sceneHash = `${elementHash}:${JSON.stringify(liveAppState)}`;
1776
1777
  if (sceneHash === lastSceneHashRef.current) return;
1777
1778
  lastSceneHashRef.current = sceneHash;
1778
- onSceneChangeRef.current?.({ elements: liveElements, appState: liveAppState });
1779
+ onSceneChangeRef.current?.({ elements: liveElements2, appState: liveAppState });
1779
1780
  if (persistEnabledRef.current) {
1780
1781
  writeScene(persistKeyRef.current, {
1781
- elements: liveElements,
1782
+ elements: liveElements2,
1782
1783
  appState: liveAppState
1783
1784
  });
1784
1785
  }
@@ -1786,13 +1787,18 @@ function useScenePersist(opts) {
1786
1787
  console.warn("[whiteboard] flushScene th\u1EA5t b\u1EA1i:", err);
1787
1788
  }
1788
1789
  };
1790
+ const liveElements = () => {
1791
+ const latest = latestSceneRef.current?.elements;
1792
+ if (latest) return latest.filter((e) => !e.isDeleted);
1793
+ return apiRef.current?.getSceneElements?.() ?? [];
1794
+ };
1789
1795
  const flushFilesRef = useRef(() => void 0);
1790
1796
  flushFilesRef.current = () => {
1791
1797
  try {
1792
1798
  const pending = pendingFilesRef.current;
1793
1799
  pendingFilesRef.current = {};
1794
1800
  if (Object.keys(pending).length === 0) return;
1795
- const currentElements = apiRef.current?.getSceneElements?.() ?? latestSceneRef.current?.elements ?? [];
1801
+ const currentElements = liveElements();
1796
1802
  const stampIds = /* @__PURE__ */ new Set();
1797
1803
  for (const el of currentElements) {
1798
1804
  const fid = el.fileId;
@@ -1812,7 +1818,8 @@ function useScenePersist(opts) {
1812
1818
  const flushPruneRef = useRef(() => void 0);
1813
1819
  flushPruneRef.current = () => {
1814
1820
  try {
1815
- const currentElements = apiRef.current?.getSceneElements?.() ?? latestSceneRef.current?.elements ?? [];
1821
+ if (!latestSceneRef.current) return;
1822
+ const currentElements = liveElements();
1816
1823
  const keep = /* @__PURE__ */ new Set();
1817
1824
  for (const el of currentElements) {
1818
1825
  const fid = el.fileId;
@@ -2159,6 +2166,20 @@ function Whiteboard({
2159
2166
  ] });
2160
2167
  }
2161
2168
 
2162
- export { ALL_STAMPS, DEFAULT_STAMPS, EXPERIMENTAL_STAMPS, STABLE_STAMPS, STAMP_CATALOG, Whiteboard, closePdfDocument, configurePdfWorker, findCatalogEntry, findStampForCustomData, insertPdfPages, insertRasterizedPagesIntoScene, isStampElement, loadPdfDocument, parsePageRange, pickSyncableAppState, rasterizePdf, restoreMissingStampFiles };
2169
+ // src/stamps/geometry-2d/insertGeometryStamp.ts
2170
+ async function insertGeometryStampIntoScene(api, jsonState) {
2171
+ const svgString = await renderGeometrySvgFromState(jsonState);
2172
+ await insertStampImage(api, {
2173
+ svgString,
2174
+ makeCustomData: () => ({
2175
+ kind: "geometry",
2176
+ version: 1,
2177
+ jsonState
2178
+ }),
2179
+ editingElementId: null
2180
+ });
2181
+ }
2182
+
2183
+ export { ALL_STAMPS, DEFAULT_STAMPS, EXPERIMENTAL_STAMPS, STABLE_STAMPS, STAMP_CATALOG, Whiteboard, closePdfDocument, configurePdfWorker, findCatalogEntry, findStampForCustomData, insertGeometryStampIntoScene, insertPdfPages, insertRasterizedPagesIntoScene, isStampElement, loadPdfDocument, parsePageRange, pickSyncableAppState, rasterizePdf, restoreMissingStampFiles };
2163
2184
  //# sourceMappingURL=index.mjs.map
2164
2185
  //# sourceMappingURL=index.mjs.map