@@ -5,17 +5,24 @@ import getUids from "roamjs-components/dom/getUids";
55import NodeMenu from "~/components/DiscourseNodeMenu" ;
66import { OnloadArgs } from "roamjs-components/types" ;
77import posthog from "posthog-js" ;
8+ import {
9+ bulkReadSettings ,
10+ type SettingsSnapshot ,
11+ } from "~/components/settings/utils/accessors" ;
812
913type ImageToolsMenuProps = {
1014 blockUid : string ;
1115 extensionAPI : OnloadArgs [ "extensionAPI" ] ;
16+ initialSettings : SettingsSnapshot ;
1217} ;
1318
1419const ImageToolsMenu = ( {
1520 blockUid,
1621 extensionAPI,
22+ initialSettings,
1723} : ImageToolsMenuProps ) : JSX . Element => {
1824 const [ menuKey , setMenuKey ] = useState ( 0 ) ;
25+ const [ settings , setSettings ] = useState ( initialSettings ) ;
1926
2027 const handleEditBlock = useCallback ( ( ) : void => {
2128 posthog . capture ( "Image Tools Menu: Edit Block Clicked" ) ;
@@ -24,12 +31,22 @@ const ImageToolsMenu = ({
2431 } ) ;
2532 } , [ blockUid ] ) ;
2633
34+ const refreshSettings = useCallback ( ( ) : void => {
35+ setSettings ( bulkReadSettings ( ) ) ;
36+ } , [ ] ) ;
37+
2738 const handleMenuClose = useCallback ( ( ) => {
2839 setMenuKey ( ( prev ) => prev + 1 ) ;
2940 } , [ ] ) ;
3041
3142 const trigger = (
32- < Button icon = { "label" as IconName } minimal small title = "Add Node Tag" />
43+ < Button
44+ icon = { "label" as IconName }
45+ minimal
46+ small
47+ title = "Add Node Tag"
48+ onMouseDown = { refreshSettings }
49+ />
3350 ) ;
3451
3552 return (
@@ -45,6 +62,7 @@ const ImageToolsMenu = ({
4562 extensionAPI = { extensionAPI }
4663 trigger = { trigger }
4764 isShift = { false }
65+ settingsSnapshot = { settings }
4866 />
4967
5068 < Button
@@ -125,6 +143,7 @@ const attachHoverListeners = (
125143export const renderImageToolsMenu = (
126144 imageElement : HTMLImageElement ,
127145 extensionAPI : OnloadArgs [ "extensionAPI" ] ,
146+ initialSettings : SettingsSnapshot ,
128147) : void => {
129148 const wrapper = getImageWrapper ( imageElement ) ;
130149 if ( ! wrapper ) return ;
@@ -142,7 +161,11 @@ export const renderImageToolsMenu = (
142161
143162 // eslint-disable-next-line react/no-deprecated
144163 ReactDOM . render (
145- < ImageToolsMenu blockUid = { blockUid } extensionAPI = { extensionAPI } /> ,
164+ < ImageToolsMenu
165+ blockUid = { blockUid }
166+ extensionAPI = { extensionAPI }
167+ initialSettings = { initialSettings }
168+ /> ,
146169 menuContainer ,
147170 ) ;
148171} ;
0 commit comments