@markup-canvas/react 1.0.6 → 1.0.8

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 CHANGED
@@ -112,6 +112,8 @@ The `MarkupCanvas` component accepts the following props:
112
112
  |------|------|---------|-------------|
113
113
  | `enableRulers` | `boolean` | `true` | Show rulers on top and left |
114
114
  | `enableGrid` | `boolean` | `false` | Show background grid |
115
+ | `showRulers` | `boolean` | `true` | Initially show rulers (only applies if `enableRulers` is true) |
116
+ | `showGrid` | `boolean` | `false` | Initially show grid (only applies if `enableGrid` is true) |
115
117
  | `gridColor` | `string` | `"#e0e0e0"` | Grid line color |
116
118
 
117
119
  **Ruler Styling**
@@ -121,12 +123,22 @@ The `MarkupCanvas` component accepts the following props:
121
123
  | `rulerBackgroundColor` | `string` | `"#f5f5f5"` | Ruler background color |
122
124
  | `rulerBorderColor` | `string` | `"#d0d0d0"` | Ruler border color |
123
125
  | `rulerTextColor` | `string` | `"#666666"` | Ruler text color |
124
- | `rulerMajorTickColor` | `string` | `"#666666"` | Major tick mark color |
125
- | `rulerMinorTickColor` | `string` | `"#999999"` | Minor tick mark color |
126
+ | `rulerTickColor` | `string` | `"#cccccc"` | Tick mark color |
126
127
  | `rulerFontSize` | `number` | `12` | Ruler font size in pixels |
127
128
  | `rulerFontFamily` | `string` | `"monospace"` | Ruler font family |
128
129
  | `rulerUnits` | `string` | `"px"` | Ruler units label |
129
130
 
131
+ **Dark Theme Support**
132
+
133
+ | Prop | Type | Default | Description |
134
+ |------|------|---------|-------------|
135
+ | `themeMode` | `"light" \| "dark"` | `"light"` | Current theme mode |
136
+ | `rulerBackgroundColorDark` | `string` | `"rgba(30, 30, 30, 0.95)"` | Dark mode ruler background color |
137
+ | `rulerBorderColorDark` | `string` | `"#444"` | Dark mode ruler border color |
138
+ | `rulerTextColorDark` | `string` | `"#aaa"` | Dark mode ruler text color |
139
+ | `rulerTickColorDark` | `string` | `"#383838"` | Dark mode tick mark color |
140
+ | `gridColorDark` | `string` | `"rgba(255, 255, 255, 0.1)"` | Dark mode grid line color |
141
+
130
142
  **React-Specific Props**
131
143
 
132
144
  | Prop | Type | Default | Description |
@@ -162,6 +174,7 @@ The `MarkupCanvas` component accepts the following props:
162
174
  maxZoom={10}
163
175
  gridColor="#e8e8e8"
164
176
  rulerBackgroundColor="#fafafa"
177
+ themeMode="light"
165
178
  enableClickToZoom={true}
166
179
  clickZoomLevel={2}
167
180
  onZoomChange={(zoom) => console.log('Zoom:', zoom)}
@@ -173,6 +186,41 @@ The `MarkupCanvas` component accepts the following props:
173
186
  </MarkupCanvas>
174
187
  ```
175
188
 
189
+ **Theme Switching Example**
190
+
191
+ ```tsx
192
+ import { useRef, useState } from 'react';
193
+ import { MarkupCanvas, type MarkupCanvasRef } from '@markup-canvas/react';
194
+
195
+ function App() {
196
+ const canvasRef = useRef<MarkupCanvasRef>(null);
197
+ const [themeMode, setThemeMode] = useState<'light' | 'dark'>('light');
198
+
199
+ const handleThemeToggle = () => {
200
+ const newMode = themeMode === 'light' ? 'dark' : 'light';
201
+ setThemeMode(newMode);
202
+ canvasRef.current?.updateThemeMode(newMode);
203
+ };
204
+
205
+ return (
206
+ <div>
207
+ <button onClick={handleThemeToggle}>Toggle Theme</button>
208
+
209
+ <MarkupCanvas
210
+ ref={canvasRef}
211
+ width={20000}
212
+ height={15000}
213
+ themeMode={themeMode}
214
+ enableRulers={true}
215
+ enableGrid={true}
216
+ >
217
+ <div>Your content here</div>
218
+ </MarkupCanvas>
219
+ </div>
220
+ );
221
+ }
222
+ ```
223
+
176
224
  ### useMarkupCanvas Hook
177
225
 
178
226
  The `useMarkupCanvas` hook provides convenient access to canvas methods.
@@ -185,13 +233,26 @@ import { MarkupCanvas, type MarkupCanvasRef, useMarkupCanvas } from '@markup-can
185
233
  function App() {
186
234
  const canvasRef = useRef<MarkupCanvasRef>(null);
187
235
 
188
- const { initCanvasUtils, zoom, zoomIn, zoomOut, fitToContent, resetZoom } = useMarkupCanvas(canvasRef);
236
+ const {
237
+ initCanvasUtils,
238
+ zoom,
239
+ zoomIn,
240
+ zoomOut,
241
+ fitToContent,
242
+ resetZoom,
243
+ themeMode,
244
+ toggleThemeMode,
245
+ updateThemeMode,
246
+ } = useMarkupCanvas(canvasRef);
189
247
 
190
248
  return (
191
249
  <div style={{ width: '100vw', height: '100vh' }}>
192
250
  <button onClick={() => zoomIn()}>Zoom In</button>
193
251
  <button onClick={() => zoomOut()}>Zoom Out</button>
194
252
  <button onClick={() => fitToContent()}>Fit to Content</button>
253
+ <button onClick={toggleThemeMode}>
254
+ Toggle Theme (Current: {themeMode})
255
+ </button>
195
256
  <span>Current zoom: {zoom.toFixed(2)}</span>
196
257
 
197
258
  <MarkupCanvas
@@ -200,6 +261,7 @@ function App() {
200
261
  height={15000}
201
262
  enableZoom={true}
202
263
  enablePan={true}
264
+ themeMode={themeMode}
203
265
  onReady={initCanvasUtils} // Required for hook to work
204
266
  >
205
267
  <div style={{ position: 'absolute', top: 100, left: 100 }}>
@@ -211,9 +273,42 @@ function App() {
211
273
  }
212
274
  ```
213
275
 
214
- ## License
276
+ **Hook Return Values**
277
+
278
+ The `useMarkupCanvas` hook returns an object with the following properties and methods:
279
+
280
+ | Property/Method | Type | Description |
281
+ |-----------------|------|-------------|
282
+ | `canvas` | `MarkupCanvas \| null` | The canvas instance |
283
+ | `initCanvasUtils` | `(canvas: MarkupCanvas) => void` | Initialize function to pass to `onReady` |
284
+ | `transform` | `Transform` | Current canvas transform |
285
+ | `zoom` | `number` | Current zoom level |
286
+ | `pan` | `{ x: number; y: number }` | Current pan position |
287
+ | `isReady` | `boolean` | Whether canvas is ready |
288
+ | `zoomIn` | `(factor?: number) => void` | Zoom in by factor |
289
+ | `zoomOut` | `(factor?: number) => void` | Zoom out by factor |
290
+ | `resetZoom` | `() => void` | Reset zoom to 100% |
291
+ | `panTo` | `(x: number, y: number) => void` | Pan to specific coordinates |
292
+ | `fitToContent` | `() => void` | Fit content to viewport |
293
+ | `centerContent` | `() => void` | Center content on canvas |
294
+ | `setTransitionMode` | `(enabled: boolean) => void` | Enable/disable transitions |
295
+ | `toggleTransitionMode` | `() => boolean` | Toggle transition mode |
296
+ | `themeMode` | `"light" \| "dark"` | Current theme mode |
297
+ | `updateThemeMode` | `(mode: "light" \| "dark") => void` | Update theme mode |
298
+ | `toggleThemeMode` | `() => "light" \| "dark"` | Toggle between themes |
299
+ | `toggleRulers` | `() => void` | Toggle rulers visibility |
300
+ | `showRulers` | `() => void` | Show rulers |
301
+ | `hideRulers` | `() => void` | Hide rulers |
302
+ | `areRulersVisible` | `() => boolean` | Check if rulers are visible |
303
+ | `showRulersState` | `boolean` | Current rulers visibility state |
304
+ | `toggleGrid` | `() => void` | Toggle grid visibility |
305
+ | `showGrid` | `() => void` | Show grid |
306
+ | `hideGrid` | `() => void` | Hide grid |
307
+ | `isGridVisible` | `() => boolean` | Check if grid is visible |
308
+ | `showGridState` | `boolean` | Current grid visibility state |
309
+
310
+ ## License
215
311
 
216
312
  **CC BY-NC 4.0** - Creative Commons Attribution-NonCommercial 4.0 International
217
313
 
218
- This project is licensed for non-commercial use only. See the [LICENSE](../../LICENSE) file for details.
219
-
314
+ This project is licensed for non-commercial use only. See the [LICENSE](../../LICENSE) file for details.
@@ -19,4 +19,11 @@ export declare function useMarkupCanvas(canvasRef: RefObject<MarkupCanvasRef | n
19
19
  centerContent: () => void;
20
20
  setTransitionMode: (enabled: boolean) => void;
21
21
  toggleTransitionMode: () => boolean;
22
+ themeMode: "light" | "dark";
23
+ updateThemeMode: (mode: "light" | "dark") => void;
24
+ toggleThemeMode: () => "light" | "dark";
25
+ toggleRulers: () => void;
26
+ areRulersVisible: () => boolean;
27
+ toggleGrid: () => void;
28
+ isGridVisible: () => boolean;
22
29
  };
package/dist/index.cjs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Markup Canvas React
3
3
  * React components and hooks for markup-canvas
4
- * @version 1.0.6
4
+ * @version 1.0.8
5
5
  */
6
6
  'use strict';
7
7
 
@@ -12,6 +12,7 @@ var react = require('react');
12
12
  const MarkupCanvas = react.forwardRef(({ children, className, style, onTransformChange, onZoomChange, onPanChange, onReady, ...options }, ref) => {
13
13
  const containerRef = react.useRef(null);
14
14
  const [canvasInstance, setCanvasInstance] = react.useState(null);
15
+ const themeModeRef = react.useRef(options.themeMode);
15
16
  react.useImperativeHandle(ref, () => ({
16
17
  canvas: canvasInstance,
17
18
  zoomIn: (factor = 0.1) => canvasInstance?.zoomIn(factor),
@@ -22,6 +23,15 @@ const MarkupCanvas = react.forwardRef(({ children, className, style, onTransform
22
23
  centerContent: () => canvasInstance?.centerContent(),
23
24
  getTransform: () => canvasInstance?.transform || { scale: 1, translateX: 0, translateY: 0 },
24
25
  getZoom: () => canvasInstance?.transform?.scale || 1,
26
+ updateThemeMode: (mode) => canvasInstance?.updateThemeMode(mode),
27
+ toggleRulers: () => canvasInstance?.toggleRulers(),
28
+ showRulers: () => canvasInstance?.showRulers(),
29
+ hideRulers: () => canvasInstance?.hideRulers(),
30
+ areRulersVisible: () => canvasInstance?.areRulersVisible() ?? false,
31
+ toggleGrid: () => canvasInstance?.toggleGrid(),
32
+ showGrid: () => canvasInstance?.showGrid(),
33
+ hideGrid: () => canvasInstance?.hideGrid(),
34
+ isGridVisible: () => canvasInstance?.isGridVisible() ?? false,
25
35
  }), [canvasInstance]);
26
36
  const onTransformChangeRef = react.useRef(onTransformChange);
27
37
  const onZoomChangeRef = react.useRef(onZoomChange);
@@ -43,11 +53,15 @@ const MarkupCanvas = react.forwardRef(({ children, className, style, onTransform
43
53
  const handleReady = react.useCallback((canvas) => {
44
54
  onReadyRef.current?.(canvas);
45
55
  }, []);
46
- const stableOptions = react.useMemo(() => options, Object.values(options));
56
+ // Separate theme mode from other options
57
+ const { themeMode, ...configOptions } = options;
58
+ // Create stable reference for non-theme options using JSON serialization
59
+ const stableConfigJson = react.useMemo(() => JSON.stringify(configOptions), [configOptions]);
60
+ // Handle canvas creation with non-theme options
47
61
  react.useEffect(() => {
48
62
  if (!containerRef.current)
49
63
  return;
50
- const canvas = new core.MarkupCanvas(containerRef.current, stableOptions);
64
+ const canvas = new core.MarkupCanvas(containerRef.current, configOptions);
51
65
  setCanvasInstance(canvas);
52
66
  canvas.on("transform", handleTransformChange);
53
67
  canvas.on("zoom", handleZoomChange);
@@ -67,7 +81,14 @@ const MarkupCanvas = react.forwardRef(({ children, className, style, onTransform
67
81
  canvas.cleanup();
68
82
  setCanvasInstance(null);
69
83
  };
70
- }, [stableOptions, handleTransformChange, handleZoomChange, handlePanChange, handleReady]);
84
+ }, [stableConfigJson, handleTransformChange, handleZoomChange, handlePanChange, handleReady]);
85
+ // Handle theme changes separately without recreating the canvas
86
+ react.useEffect(() => {
87
+ if (!canvasInstance || themeMode === themeModeRef.current)
88
+ return;
89
+ canvasInstance.updateThemeMode(themeMode || "light");
90
+ themeModeRef.current = themeMode;
91
+ }, [canvasInstance, themeMode]);
71
92
  return (jsxRuntime.jsx("div", { ref: containerRef, className: className, style: { width: "100%", height: "100%", ...style }, children: children }));
72
93
  });
73
94
  MarkupCanvas.displayName = "MarkupCanvas";
@@ -78,6 +99,7 @@ function useMarkupCanvas(canvasRef, options = {}) {
78
99
  const [zoom, setZoom] = react.useState(1);
79
100
  const [pan, setPan] = react.useState({ x: 0, y: 0 });
80
101
  const [isReady, setIsReady] = react.useState(false);
102
+ const [themeMode, setThemeModeState] = react.useState("light");
81
103
  const optionsRef = react.useRef(options);
82
104
  optionsRef.current = options;
83
105
  const handleCanvasInstance = react.useCallback((canvas) => {
@@ -157,6 +179,27 @@ function useMarkupCanvas(canvasRef, options = {}) {
157
179
  }
158
180
  return false;
159
181
  }, [canvasRef]);
182
+ const updateThemeMode = react.useCallback((mode) => {
183
+ setThemeModeState(mode);
184
+ canvasRef.current?.updateThemeMode(mode);
185
+ }, [canvasRef]);
186
+ const toggleThemeMode = react.useCallback(() => {
187
+ const newMode = themeMode === "light" ? "dark" : "light";
188
+ updateThemeMode(newMode);
189
+ return newMode;
190
+ }, [themeMode, updateThemeMode]);
191
+ const toggleRulers = react.useCallback(() => {
192
+ canvasRef.current?.toggleRulers();
193
+ }, [canvasRef]);
194
+ const areRulersVisible = react.useCallback(() => {
195
+ return canvasRef.current?.areRulersVisible() ?? false;
196
+ }, [canvasRef]);
197
+ const toggleGrid = react.useCallback(() => {
198
+ canvasRef.current?.toggleGrid();
199
+ }, [canvasRef]);
200
+ const isGridVisible = react.useCallback(() => {
201
+ return canvasRef.current?.isGridVisible() ?? false;
202
+ }, [canvasRef]);
160
203
  return {
161
204
  canvas: canvasRef.current?.canvas || null,
162
205
  initCanvasUtils: handleCanvasInstance,
@@ -172,6 +215,13 @@ function useMarkupCanvas(canvasRef, options = {}) {
172
215
  centerContent,
173
216
  setTransitionMode,
174
217
  toggleTransitionMode,
218
+ themeMode,
219
+ updateThemeMode,
220
+ toggleThemeMode,
221
+ toggleRulers,
222
+ areRulersVisible,
223
+ toggleGrid,
224
+ isGridVisible,
175
225
  };
176
226
  }
177
227
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/components/MarkupCanvas.tsx","../src/hooks/useMarkupCanvas.ts"],"sourcesContent":[null,null],"names":["forwardRef","useRef","useState","useImperativeHandle","useCallback","useMemo","useEffect","CoreMarkupCanvas","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/components/MarkupCanvas.tsx","../src/hooks/useMarkupCanvas.ts"],"sourcesContent":[null,null],"names":["forwardRef","useRef","useState","useImperativeHandle","useCallback","useMemo","useEffect","CoreMarkupCanvas","_jsx"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Markup Canvas React
3
3
  * React components and hooks for markup-canvas
4
- * @version 1.0.6
4
+ * @version 1.0.8
5
5
  */
6
6
  import { jsx } from 'react/jsx-runtime';
7
7
  import { MarkupCanvas as MarkupCanvas$1 } from '@markup-canvas/core';
@@ -10,6 +10,7 @@ import { forwardRef, useRef, useState, useImperativeHandle, useCallback, useMemo
10
10
  const MarkupCanvas = forwardRef(({ children, className, style, onTransformChange, onZoomChange, onPanChange, onReady, ...options }, ref) => {
11
11
  const containerRef = useRef(null);
12
12
  const [canvasInstance, setCanvasInstance] = useState(null);
13
+ const themeModeRef = useRef(options.themeMode);
13
14
  useImperativeHandle(ref, () => ({
14
15
  canvas: canvasInstance,
15
16
  zoomIn: (factor = 0.1) => canvasInstance?.zoomIn(factor),
@@ -20,6 +21,15 @@ const MarkupCanvas = forwardRef(({ children, className, style, onTransformChange
20
21
  centerContent: () => canvasInstance?.centerContent(),
21
22
  getTransform: () => canvasInstance?.transform || { scale: 1, translateX: 0, translateY: 0 },
22
23
  getZoom: () => canvasInstance?.transform?.scale || 1,
24
+ updateThemeMode: (mode) => canvasInstance?.updateThemeMode(mode),
25
+ toggleRulers: () => canvasInstance?.toggleRulers(),
26
+ showRulers: () => canvasInstance?.showRulers(),
27
+ hideRulers: () => canvasInstance?.hideRulers(),
28
+ areRulersVisible: () => canvasInstance?.areRulersVisible() ?? false,
29
+ toggleGrid: () => canvasInstance?.toggleGrid(),
30
+ showGrid: () => canvasInstance?.showGrid(),
31
+ hideGrid: () => canvasInstance?.hideGrid(),
32
+ isGridVisible: () => canvasInstance?.isGridVisible() ?? false,
23
33
  }), [canvasInstance]);
24
34
  const onTransformChangeRef = useRef(onTransformChange);
25
35
  const onZoomChangeRef = useRef(onZoomChange);
@@ -41,11 +51,15 @@ const MarkupCanvas = forwardRef(({ children, className, style, onTransformChange
41
51
  const handleReady = useCallback((canvas) => {
42
52
  onReadyRef.current?.(canvas);
43
53
  }, []);
44
- const stableOptions = useMemo(() => options, Object.values(options));
54
+ // Separate theme mode from other options
55
+ const { themeMode, ...configOptions } = options;
56
+ // Create stable reference for non-theme options using JSON serialization
57
+ const stableConfigJson = useMemo(() => JSON.stringify(configOptions), [configOptions]);
58
+ // Handle canvas creation with non-theme options
45
59
  useEffect(() => {
46
60
  if (!containerRef.current)
47
61
  return;
48
- const canvas = new MarkupCanvas$1(containerRef.current, stableOptions);
62
+ const canvas = new MarkupCanvas$1(containerRef.current, configOptions);
49
63
  setCanvasInstance(canvas);
50
64
  canvas.on("transform", handleTransformChange);
51
65
  canvas.on("zoom", handleZoomChange);
@@ -65,7 +79,14 @@ const MarkupCanvas = forwardRef(({ children, className, style, onTransformChange
65
79
  canvas.cleanup();
66
80
  setCanvasInstance(null);
67
81
  };
68
- }, [stableOptions, handleTransformChange, handleZoomChange, handlePanChange, handleReady]);
82
+ }, [stableConfigJson, handleTransformChange, handleZoomChange, handlePanChange, handleReady]);
83
+ // Handle theme changes separately without recreating the canvas
84
+ useEffect(() => {
85
+ if (!canvasInstance || themeMode === themeModeRef.current)
86
+ return;
87
+ canvasInstance.updateThemeMode(themeMode || "light");
88
+ themeModeRef.current = themeMode;
89
+ }, [canvasInstance, themeMode]);
69
90
  return (jsx("div", { ref: containerRef, className: className, style: { width: "100%", height: "100%", ...style }, children: children }));
70
91
  });
71
92
  MarkupCanvas.displayName = "MarkupCanvas";
@@ -76,6 +97,7 @@ function useMarkupCanvas(canvasRef, options = {}) {
76
97
  const [zoom, setZoom] = useState(1);
77
98
  const [pan, setPan] = useState({ x: 0, y: 0 });
78
99
  const [isReady, setIsReady] = useState(false);
100
+ const [themeMode, setThemeModeState] = useState("light");
79
101
  const optionsRef = useRef(options);
80
102
  optionsRef.current = options;
81
103
  const handleCanvasInstance = useCallback((canvas) => {
@@ -155,6 +177,27 @@ function useMarkupCanvas(canvasRef, options = {}) {
155
177
  }
156
178
  return false;
157
179
  }, [canvasRef]);
180
+ const updateThemeMode = useCallback((mode) => {
181
+ setThemeModeState(mode);
182
+ canvasRef.current?.updateThemeMode(mode);
183
+ }, [canvasRef]);
184
+ const toggleThemeMode = useCallback(() => {
185
+ const newMode = themeMode === "light" ? "dark" : "light";
186
+ updateThemeMode(newMode);
187
+ return newMode;
188
+ }, [themeMode, updateThemeMode]);
189
+ const toggleRulers = useCallback(() => {
190
+ canvasRef.current?.toggleRulers();
191
+ }, [canvasRef]);
192
+ const areRulersVisible = useCallback(() => {
193
+ return canvasRef.current?.areRulersVisible() ?? false;
194
+ }, [canvasRef]);
195
+ const toggleGrid = useCallback(() => {
196
+ canvasRef.current?.toggleGrid();
197
+ }, [canvasRef]);
198
+ const isGridVisible = useCallback(() => {
199
+ return canvasRef.current?.isGridVisible() ?? false;
200
+ }, [canvasRef]);
158
201
  return {
159
202
  canvas: canvasRef.current?.canvas || null,
160
203
  initCanvasUtils: handleCanvasInstance,
@@ -170,6 +213,13 @@ function useMarkupCanvas(canvasRef, options = {}) {
170
213
  centerContent,
171
214
  setTransitionMode,
172
215
  toggleTransitionMode,
216
+ themeMode,
217
+ updateThemeMode,
218
+ toggleThemeMode,
219
+ toggleRulers,
220
+ areRulersVisible,
221
+ toggleGrid,
222
+ isGridVisible,
173
223
  };
174
224
  }
175
225
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/components/MarkupCanvas.tsx","../src/hooks/useMarkupCanvas.ts"],"sourcesContent":[null,null],"names":["CoreMarkupCanvas","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/components/MarkupCanvas.tsx","../src/hooks/useMarkupCanvas.ts"],"sourcesContent":[null,null],"names":["CoreMarkupCanvas","_jsx"],"mappings":"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"}
@@ -9,6 +9,15 @@ export interface MarkupCanvasRef {
9
9
  centerContent: () => void;
10
10
  getTransform: () => Transform;
11
11
  getZoom: () => number;
12
+ updateThemeMode: (mode: "light" | "dark") => void;
13
+ toggleRulers: () => void;
14
+ showRulers: () => void;
15
+ hideRulers: () => void;
16
+ areRulersVisible: () => boolean;
17
+ toggleGrid: () => void;
18
+ showGrid: () => void;
19
+ hideGrid: () => void;
20
+ isGridVisible: () => boolean;
12
21
  }
13
22
  export interface UseMarkupCanvasOptions {
14
23
  onTransformChange?: (transform: Transform) => void;
@@ -28,3 +37,35 @@ export interface CanvasEventHandlers {
28
37
  onTransform?: (transform: Transform) => void;
29
38
  onReady?: (canvas: CoreMarkupCanvas) => void;
30
39
  }
40
+ export interface UseMarkupCanvasReturn {
41
+ canvas: CoreMarkupCanvas | null;
42
+ initCanvasUtils: (canvas: CoreMarkupCanvas) => void;
43
+ transform: Transform;
44
+ zoom: number;
45
+ pan: {
46
+ x: number;
47
+ y: number;
48
+ };
49
+ isReady: boolean;
50
+ zoomIn: (factor?: number) => void;
51
+ zoomOut: (factor?: number) => void;
52
+ resetZoom: () => void;
53
+ panTo: (x: number, y: number) => void;
54
+ fitToContent: () => void;
55
+ centerContent: () => void;
56
+ setTransitionMode: (enabled: boolean) => void;
57
+ toggleTransitionMode: () => boolean;
58
+ themeMode: "light" | "dark";
59
+ updateThemeMode: (mode: "light" | "dark") => void;
60
+ toggleThemeMode: () => "light" | "dark";
61
+ toggleRulers: () => void;
62
+ showRulers: () => void;
63
+ hideRulers: () => void;
64
+ areRulersVisible: () => boolean;
65
+ showRulersState: boolean;
66
+ toggleGrid: () => void;
67
+ showGrid: () => void;
68
+ hideGrid: () => void;
69
+ isGridVisible: () => boolean;
70
+ showGridState: boolean;
71
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markup-canvas/react",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "React components and hooks for markup-canvas",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",
@@ -22,7 +22,7 @@
22
22
  "peerDependencies": {
23
23
  "react": ">=18.0.0",
24
24
  "react-dom": ">=18.0.0",
25
- "@markup-canvas/core": "^1.0.6"
25
+ "@markup-canvas/core": "1.0.8"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@biomejs/biome": "2.2.6",
@@ -33,7 +33,7 @@
33
33
  "@types/react-dom": "^19.2.2",
34
34
  "react": "^19.2.0",
35
35
  "react-dom": "^19.2.0",
36
- "rollup": "^4.52.4",
36
+ "rollup": "^4.52.5",
37
37
  "rollup-plugin-peer-deps-external": "^2.2.4",
38
38
  "typescript": "^5.9.3",
39
39
  "tslib": "^2.8.1"
@@ -26,6 +26,7 @@ export const MarkupCanvas = forwardRef<MarkupCanvasRef, MarkupCanvasProps>(
26
26
  ({ children, className, style, onTransformChange, onZoomChange, onPanChange, onReady, ...options }, ref) => {
27
27
  const containerRef = useRef<HTMLDivElement>(null);
28
28
  const [canvasInstance, setCanvasInstance] = useState<CoreMarkupCanvas | null>(null);
29
+ const themeModeRef = useRef<"light" | "dark" | undefined>(options.themeMode);
29
30
 
30
31
  useImperativeHandle(
31
32
  ref,
@@ -39,6 +40,15 @@ export const MarkupCanvas = forwardRef<MarkupCanvasRef, MarkupCanvasProps>(
39
40
  centerContent: () => canvasInstance?.centerContent(),
40
41
  getTransform: () => canvasInstance?.transform || { scale: 1, translateX: 0, translateY: 0 },
41
42
  getZoom: () => canvasInstance?.transform?.scale || 1,
43
+ updateThemeMode: (mode: "light" | "dark") => canvasInstance?.updateThemeMode(mode),
44
+ toggleRulers: () => canvasInstance?.toggleRulers(),
45
+ showRulers: () => canvasInstance?.showRulers(),
46
+ hideRulers: () => canvasInstance?.hideRulers(),
47
+ areRulersVisible: () => canvasInstance?.areRulersVisible() ?? false,
48
+ toggleGrid: () => canvasInstance?.toggleGrid(),
49
+ showGrid: () => canvasInstance?.showGrid(),
50
+ hideGrid: () => canvasInstance?.hideGrid(),
51
+ isGridVisible: () => canvasInstance?.isGridVisible() ?? false,
42
52
  }),
43
53
  [canvasInstance]
44
54
  );
@@ -69,12 +79,17 @@ export const MarkupCanvas = forwardRef<MarkupCanvasRef, MarkupCanvasProps>(
69
79
  onReadyRef.current?.(canvas);
70
80
  }, []);
71
81
 
72
- const stableOptions = useMemo(() => options, Object.values(options));
82
+ // Separate theme mode from other options
83
+ const { themeMode, ...configOptions } = options;
73
84
 
85
+ // Create stable reference for non-theme options using JSON serialization
86
+ const stableConfigJson = useMemo(() => JSON.stringify(configOptions), [configOptions]);
87
+
88
+ // Handle canvas creation with non-theme options
74
89
  useEffect(() => {
75
90
  if (!containerRef.current) return;
76
91
 
77
- const canvas = new CoreMarkupCanvas(containerRef.current, stableOptions);
92
+ const canvas = new CoreMarkupCanvas(containerRef.current, configOptions as MarkupCanvasConfig);
78
93
  setCanvasInstance(canvas);
79
94
 
80
95
  canvas.on("transform", handleTransformChange);
@@ -98,7 +113,15 @@ export const MarkupCanvas = forwardRef<MarkupCanvasRef, MarkupCanvasProps>(
98
113
  canvas.cleanup();
99
114
  setCanvasInstance(null);
100
115
  };
101
- }, [stableOptions, handleTransformChange, handleZoomChange, handlePanChange, handleReady]);
116
+ }, [stableConfigJson, handleTransformChange, handleZoomChange, handlePanChange, handleReady]);
117
+
118
+ // Handle theme changes separately without recreating the canvas
119
+ useEffect(() => {
120
+ if (!canvasInstance || themeMode === themeModeRef.current) return;
121
+
122
+ canvasInstance.updateThemeMode(themeMode || "light");
123
+ themeModeRef.current = themeMode;
124
+ }, [canvasInstance, themeMode]);
102
125
 
103
126
  return (
104
127
  <div ref={containerRef} className={className} style={{ width: "100%", height: "100%", ...style }}>
@@ -8,6 +8,7 @@ export function useMarkupCanvas(canvasRef: RefObject<MarkupCanvasRef | null>, op
8
8
  const [zoom, setZoom] = useState(1);
9
9
  const [pan, setPan] = useState({ x: 0, y: 0 });
10
10
  const [isReady, setIsReady] = useState(false);
11
+ const [themeMode, setThemeModeState] = useState<"light" | "dark">("light");
11
12
 
12
13
  const optionsRef = useRef(options);
13
14
  optionsRef.current = options;
@@ -120,6 +121,36 @@ export function useMarkupCanvas(canvasRef: RefObject<MarkupCanvasRef | null>, op
120
121
  return false;
121
122
  }, [canvasRef]);
122
123
 
124
+ const updateThemeMode = useCallback(
125
+ (mode: "light" | "dark") => {
126
+ setThemeModeState(mode);
127
+ canvasRef.current?.updateThemeMode(mode);
128
+ },
129
+ [canvasRef]
130
+ );
131
+
132
+ const toggleThemeMode = useCallback(() => {
133
+ const newMode = themeMode === "light" ? "dark" : "light";
134
+ updateThemeMode(newMode);
135
+ return newMode;
136
+ }, [themeMode, updateThemeMode]);
137
+
138
+ const toggleRulers = useCallback(() => {
139
+ canvasRef.current?.toggleRulers();
140
+ }, [canvasRef]);
141
+
142
+ const areRulersVisible = useCallback(() => {
143
+ return canvasRef.current?.areRulersVisible() ?? false;
144
+ }, [canvasRef]);
145
+
146
+ const toggleGrid = useCallback(() => {
147
+ canvasRef.current?.toggleGrid();
148
+ }, [canvasRef]);
149
+
150
+ const isGridVisible = useCallback(() => {
151
+ return canvasRef.current?.isGridVisible() ?? false;
152
+ }, [canvasRef]);
153
+
123
154
  return {
124
155
  canvas: canvasRef.current?.canvas || null,
125
156
  initCanvasUtils: handleCanvasInstance,
@@ -135,5 +166,12 @@ export function useMarkupCanvas(canvasRef: RefObject<MarkupCanvasRef | null>, op
135
166
  centerContent,
136
167
  setTransitionMode,
137
168
  toggleTransitionMode,
169
+ themeMode,
170
+ updateThemeMode,
171
+ toggleThemeMode,
172
+ toggleRulers,
173
+ areRulersVisible,
174
+ toggleGrid,
175
+ isGridVisible,
138
176
  };
139
177
  }
@@ -10,6 +10,15 @@ export interface MarkupCanvasRef {
10
10
  centerContent: () => void;
11
11
  getTransform: () => Transform;
12
12
  getZoom: () => number;
13
+ updateThemeMode: (mode: "light" | "dark") => void;
14
+ toggleRulers: () => void;
15
+ showRulers: () => void;
16
+ hideRulers: () => void;
17
+ areRulersVisible: () => boolean;
18
+ toggleGrid: () => void;
19
+ showGrid: () => void;
20
+ hideGrid: () => void;
21
+ isGridVisible: () => boolean;
13
22
  }
14
23
 
15
24
  export interface UseMarkupCanvasOptions {
@@ -25,3 +34,33 @@ export interface CanvasEventHandlers {
25
34
  onTransform?: (transform: Transform) => void;
26
35
  onReady?: (canvas: CoreMarkupCanvas) => void;
27
36
  }
37
+
38
+ export interface UseMarkupCanvasReturn {
39
+ canvas: CoreMarkupCanvas | null;
40
+ initCanvasUtils: (canvas: CoreMarkupCanvas) => void;
41
+ transform: Transform;
42
+ zoom: number;
43
+ pan: { x: number; y: number };
44
+ isReady: boolean;
45
+ zoomIn: (factor?: number) => void;
46
+ zoomOut: (factor?: number) => void;
47
+ resetZoom: () => void;
48
+ panTo: (x: number, y: number) => void;
49
+ fitToContent: () => void;
50
+ centerContent: () => void;
51
+ setTransitionMode: (enabled: boolean) => void;
52
+ toggleTransitionMode: () => boolean;
53
+ themeMode: "light" | "dark";
54
+ updateThemeMode: (mode: "light" | "dark") => void;
55
+ toggleThemeMode: () => "light" | "dark";
56
+ toggleRulers: () => void;
57
+ showRulers: () => void;
58
+ hideRulers: () => void;
59
+ areRulersVisible: () => boolean;
60
+ showRulersState: boolean;
61
+ toggleGrid: () => void;
62
+ showGrid: () => void;
63
+ hideGrid: () => void;
64
+ isGridVisible: () => boolean;
65
+ showGridState: boolean;
66
+ }