@@ -71,25 +71,25 @@ export const CanvasPrimitiveRenderer = ({
7171 const canvasRefs = useRef < Record < string , HTMLCanvasElement > > ( { } )
7272 const selectedLayer = useGlobalStore ( ( s ) => s . selected_layer )
7373 const isShowingSolderMask = useGlobalStore ( ( s ) => s . is_showing_solder_mask )
74+ const isShowingFabricationNotes = useGlobalStore (
75+ ( s ) => s . is_showing_fabrication_notes ,
76+ )
7477
7578 useEffect ( ( ) => {
7679 if ( ! canvasRefs . current ) return
7780 if ( Object . keys ( canvasRefs . current ) . length === 0 ) return
7881
79- // Filter out null canvas refs and solder mask layers when disabled
80- const filteredCanvasRefs = Object . fromEntries (
82+ // Keep all non- null canvas refs so hidden layers are still cleared.
83+ const availableCanvasRefs = Object . fromEntries (
8184 Object . entries ( canvasRefs . current ) . filter ( ( [ layer , canvas ] ) => {
8285 if ( ! canvas ) return false
83- if ( ! isShowingSolderMask && layer . includes ( "soldermask" ) ) {
84- return false
85- }
8686 return true
8787 } ) ,
8888 )
8989
90- if ( Object . keys ( filteredCanvasRefs ) . length === 0 ) return
90+ if ( Object . keys ( availableCanvasRefs ) . length === 0 ) return
9191
92- const drawer = new Drawer ( filteredCanvasRefs )
92+ const drawer = new Drawer ( availableCanvasRefs )
9393 if ( transform ) drawer . transform = transform
9494 drawer . clear ( )
9595 drawer . foregroundLayer = selectedLayer
@@ -98,6 +98,9 @@ export const CanvasPrimitiveRenderer = ({
9898 // Also filter out SMT pad primitives since they're drawn with circuit-to-canvas
9999 const filteredPrimitives = primitives
100100 . filter ( ( p ) => isShowingSolderMask || ! p . layer ?. includes ( "soldermask" ) )
101+ . filter (
102+ ( p ) => isShowingFabricationNotes || ! p . layer ?. includes ( "fabrication" ) ,
103+ )
101104 . filter ( ( p ) => p . layer !== "board" )
102105 . filter ( ( p ) => p . _element ?. type !== "pcb_smtpad" )
103106 . filter ( ( p ) => p . _element ?. type !== "pcb_plated_hole" )
@@ -304,25 +307,27 @@ export const CanvasPrimitiveRenderer = ({
304307 }
305308
306309 // Draw top fabrication
307- const topFabCanvas = canvasRefs . current . top_fabrication
308- if ( topFabCanvas ) {
309- drawFabricationNoteElementsForLayer ( {
310- canvas : topFabCanvas ,
311- elements,
312- layers : [ "top_fabrication_note" ] ,
313- realToCanvasMat : transform ,
314- } )
315- }
310+ if ( isShowingFabricationNotes ) {
311+ const topFabCanvas = canvasRefs . current . top_fabrication
312+ if ( topFabCanvas ) {
313+ drawFabricationNoteElementsForLayer ( {
314+ canvas : topFabCanvas ,
315+ elements,
316+ layers : [ "top_fabrication_note" ] ,
317+ realToCanvasMat : transform ,
318+ } )
319+ }
316320
317- // Draw bottom fabrication
318- const bottomFabCanvas = canvasRefs . current . bottom_fabrication
319- if ( bottomFabCanvas ) {
320- drawFabricationNoteElementsForLayer ( {
321- canvas : bottomFabCanvas ,
322- elements,
323- layers : [ "bottom_fabrication_note" ] ,
324- realToCanvasMat : transform ,
325- } )
321+ // Draw bottom fabrication
322+ const bottomFabCanvas = canvasRefs . current . bottom_fabrication
323+ if ( bottomFabCanvas ) {
324+ drawFabricationNoteElementsForLayer ( {
325+ canvas : bottomFabCanvas ,
326+ elements,
327+ layers : [ "bottom_fabrication_note" ] ,
328+ realToCanvasMat : transform ,
329+ } )
330+ }
326331 }
327332
328333 // Draw bottom notes
@@ -417,7 +422,14 @@ export const CanvasPrimitiveRenderer = ({
417422 }
418423
419424 drawer . orderAndFadeLayers ( )
420- } , [ primitives , elements , transform , selectedLayer , isShowingSolderMask ] )
425+ } , [
426+ primitives ,
427+ elements ,
428+ transform ,
429+ selectedLayer ,
430+ isShowingSolderMask ,
431+ isShowingFabricationNotes ,
432+ ] )
421433
422434 return (
423435 < div
0 commit comments