@@ -1340,6 +1340,57 @@ const TldrawCanvas = ({ title }: Props) => {
13401340 ) ;
13411341 } ;
13421342 } , [ appRef , allNodes ] ) ;
1343+
1344+ // Menu Overrides
1345+ const addFullScreenToggle = ( mainMenu : MenuGroup ) => {
1346+ const viewSubMenu = mainMenu . children . find (
1347+ ( m ) : m is SubMenu => m . type === "submenu" && m . id === "view"
1348+ ) ;
1349+ const viewActionsGroup = viewSubMenu ?. children . find (
1350+ ( m ) : m is MenuGroup => m . type === "group" && m . id === "view-actions"
1351+ ) ;
1352+ if ( ! viewActionsGroup ) return ;
1353+ viewActionsGroup . children . push ( {
1354+ type : "item" ,
1355+ readonlyOk : true ,
1356+ id : "toggle-full-screen" ,
1357+ disabled : false ,
1358+ checked : maximized ,
1359+ actionItem : {
1360+ id : "toggle-full-screen" ,
1361+ label : "action.toggle-full-screen" as TLTranslationKey ,
1362+ kbd : "!3" ,
1363+ onSelect : ( ) => {
1364+ setMaximized ( ! maximized ) ;
1365+ } ,
1366+ readonlyOk : true ,
1367+ } ,
1368+ } ) ;
1369+ } ;
1370+ const editCopyAsShortcuts = ( mainMenu : MenuGroup ) => {
1371+ const editSubMenu = mainMenu . children . find (
1372+ ( m ) : m is SubMenu => m . type === "submenu" && m . id === "edit"
1373+ ) ;
1374+ const conversionsGroup = editSubMenu ?. children . find (
1375+ ( m ) : m is MenuGroup => m . type === "group" && m . id === "conversions"
1376+ ) ;
1377+ const copyAsSubMenu = conversionsGroup ?. children . find (
1378+ ( m ) : m is SubMenu => m . type === "submenu" && m . id === "copy-as"
1379+ ) ;
1380+ const copyAsGroup = copyAsSubMenu ?. children . find (
1381+ ( m ) : m is MenuGroup => m . type === "group" && m . id === "copy-as-group"
1382+ ) ;
1383+ const copyAsPngItem = copyAsGroup ?. children . find (
1384+ ( m ) : m is MenuItem => m . type === "item" && m . id === "copy-as-png"
1385+ ) ;
1386+ const copyAsSvgItem = copyAsGroup ?. children . find (
1387+ ( m ) : m is MenuItem => m . type === "item" && m . id === "copy-as-svg"
1388+ ) ;
1389+ if ( ! copyAsPngItem || ! copyAsSvgItem ) return ;
1390+ copyAsPngItem . actionItem . kbd = "$!C" ;
1391+ copyAsSvgItem . actionItem . kbd = "$!X" ;
1392+ } ;
1393+
13431394 return (
13441395 < div
13451396 className = { `border border-gray-300 rounded-md bg-white h-full w-full z-10 overflow-hidden ${
@@ -1574,63 +1625,8 @@ const TldrawCanvas = ({ title }: Props) => {
15741625 ( m ) : m is MenuGroup => m . type === "group" && m . id === "menu"
15751626 ) ;
15761627 if ( mainMenu ) {
1577- const viewSubMenu = mainMenu . children . find (
1578- ( m ) : m is SubMenu => m . type === "submenu" && m . id === "view"
1579- ) ;
1580- if ( viewSubMenu ) {
1581- const viewActionsGroup = viewSubMenu . children . find (
1582- ( m ) : m is MenuGroup =>
1583- m . type === "group" && m . id === "view-actions"
1584- ) ;
1585- if ( viewActionsGroup ) {
1586- viewActionsGroup . children . push ( {
1587- type : "item" ,
1588- readonlyOk : true ,
1589- id : "toggle-full-screen" ,
1590- disabled : false ,
1591- checked : maximized ,
1592- actionItem : {
1593- id : "toggle-full-screen" ,
1594- label : "action.toggle-full-screen" as TLTranslationKey ,
1595- kbd : "!3" ,
1596- onSelect : ( ) => {
1597- setMaximized ( ! maximized ) ;
1598- } ,
1599- readonlyOk : true ,
1600- } ,
1601- } ) ;
1602- }
1603- }
1604- const editSubMenu = mainMenu . children . find (
1605- ( m ) : m is SubMenu => m . type === "submenu" && m . id === "edit"
1606- ) ;
1607- if ( editSubMenu ) {
1608- const conversionsGroup = editSubMenu . children . find (
1609- ( m ) : m is MenuGroup =>
1610- m . type === "group" && m . id === "conversions"
1611- ) ;
1612- if ( conversionsGroup ) {
1613- const copyAsSubMenu = conversionsGroup . children . find (
1614- ( m ) : m is MenuGroup =>
1615- m . type === "submenu" && m . id === "copy-as"
1616- ) ;
1617- if ( copyAsSubMenu ) {
1618- const copyAsGroup = copyAsSubMenu . children . find (
1619- ( m ) : m is MenuGroup =>
1620- m . type === "group" && m . id === "copy-as-group"
1621- ) ;
1622- if ( copyAsGroup ) {
1623- const copyAsPngItem = copyAsGroup . children . find (
1624- ( m ) : m is MenuItem =>
1625- m . type === "item" && m . id === "copy-as-png"
1626- ) ;
1627- if ( copyAsPngItem ) {
1628- copyAsPngItem . actionItem . kbd = "$!X" ;
1629- }
1630- }
1631- }
1632- }
1633- }
1628+ addFullScreenToggle ( mainMenu ) ;
1629+ editCopyAsShortcuts ( mainMenu ) ;
16341630 }
16351631 return menu ;
16361632 } ,
0 commit comments