@@ -18,6 +18,8 @@ document.addEventListener("DOMContentLoaded", () => {
1818 btn . innerText = tool . displayName ;
1919 btn . setAttribute ( "data-tool-id" , tool . id ) ;
2020 btn . addEventListener ( "click" , ( ) => {
21+ if ( btn . hasAttribute ( "data-disabled" ) )
22+ return ;
2123 StateManager . dispatch (
2224 State . toolbox . setTool , { id : tool . id } as never ) ;
2325 } ) ;
@@ -78,4 +80,23 @@ document.addEventListener("DOMContentLoaded", () => {
7880 document . getElementById ( "tool-help" ) ! . innerText = help ;
7981 }
8082 } ) ;
83+
84+ // Toggle canvas
85+ const onCanvasToggle = ( state : State . AppState ) => {
86+ const isEnabled = state . toolbox . canvasEnabled ;
87+ [ "brush" , "eraser" ] . forEach ( id => {
88+ const tool = toolInstances . get ( id ) ;
89+ if ( tool && state . toolbox . current === id && ! isEnabled )
90+ StateManager . dispatch ( State . toolbox . setTool , { id : Tool . id } as never ) ;
91+
92+ const btn = document . querySelector < HTMLDivElement > (
93+ `[data-tool-id="${ id } "]` ) ;
94+ if ( isEnabled )
95+ btn ?. removeAttribute ( "data-disabled" ) ;
96+ else
97+ btn ?. setAttribute ( "data-disabled" , "" ) ;
98+ } ) ;
99+ } ;
100+ StateManager . subscribe ( State . toolbox . canvasEnabled , onCanvasToggle ) ;
101+ StateManager . subscribe ( State . toolbox . canvasDisabled , onCanvasToggle ) ;
81102} ) ;
0 commit comments