@@ -2,12 +2,18 @@ import {
22 saveOutlineToJSON ,
33 createTreeNodes ,
44 getOutlineFromPDF ,
5+ updateOutlineFontSize ,
6+ loadOutlineInfoFromJSON ,
7+ DEFAULT_BASE_FONT_SIZE ,
58} from "./outline" ;
69import {
710 saveBookmarksToJSON ,
811 createBookmarkNodes ,
912 addNewBookmark ,
1013 DEFAULT_BOOKMARK_COLORS ,
14+ updateBookmarkFontSize ,
15+ loadBookmarkInfoFromJSON ,
16+ DEFAULT_BOOKMARK_FONT_SIZE ,
1117} from "./bookmark" ;
1218import { ICONS } from "./style" ;
1319import { getString } from "../../utils/locale" ;
@@ -214,6 +220,14 @@ export function initEventListener(
214220 doc
215221 . getElementById ( "j-bookmark-delete" )
216222 ?. addEventListener ( "click" , deleteSelectedBookmarkNode ) ;
223+
224+ // 字体大小调整按钮事件
225+ doc
226+ . getElementById ( "j-outline-zoom-in" )
227+ ?. addEventListener ( "click" , handleFontSizeIncrease ) ;
228+ doc
229+ . getElementById ( "j-outline-zoom-out" )
230+ ?. addEventListener ( "click" , handleFontSizeDecrease ) ;
217231}
218232
219233// 为节点添加事件监听,以下为事件处理函数
@@ -1365,3 +1379,88 @@ export function handleBookmarkDragEnd(e: DragEvent) {
13651379 el . classList . remove ( "bookmark-dragover" ) ;
13661380 } ) ;
13671381}
1382+
1383+ // ========== 字体大小调整函数 ==========
1384+
1385+ const MIN_FONT_SIZE = 8 ;
1386+ const MAX_FONT_SIZE = 20 ;
1387+
1388+ // Increase font size for both outline and bookmark
1389+ async function handleFontSizeIncrease ( ev : Event ) {
1390+ const doc = ( ev . target as Element ) . ownerDocument ;
1391+ const reader = Zotero . Reader . getByTabID (
1392+ ztoolkit . getGlobal ( "Zotero_Tabs" ) . selectedID ,
1393+ ) ;
1394+ if ( ! reader ) return ;
1395+
1396+ // Get current baseFontSize for outline
1397+ const outlineInfo = await loadOutlineInfoFromJSON ( reader . _item ) ;
1398+ const currentOutlineSize =
1399+ outlineInfo ?. baseFontSize ?? DEFAULT_BASE_FONT_SIZE ;
1400+
1401+ // Get current baseFontSize for bookmark
1402+ const bookmarkInfo = await loadBookmarkInfoFromJSON ( reader . _item ) ;
1403+ const currentBookmarkSize =
1404+ bookmarkInfo ?. baseFontSize ?? DEFAULT_BOOKMARK_FONT_SIZE ;
1405+
1406+ // Increase by 1, max 20
1407+ const newOutlineSize = Math . min ( currentOutlineSize + 1 , MAX_FONT_SIZE ) ;
1408+ const newBookmarkSize = Math . min ( currentBookmarkSize + 1 , MAX_FONT_SIZE ) ;
1409+
1410+ if (
1411+ newOutlineSize !== currentOutlineSize ||
1412+ newBookmarkSize !== currentBookmarkSize
1413+ ) {
1414+ // Update CSS
1415+ updateOutlineFontSize ( doc , newOutlineSize ) ;
1416+ updateBookmarkFontSize ( doc , newBookmarkSize ) ;
1417+
1418+ // Save to JSON
1419+ await saveOutlineToJSON ( reader . _item , undefined , newOutlineSize ) ;
1420+ await saveBookmarksToJSON ( reader . _item , undefined , newBookmarkSize ) ;
1421+
1422+ ztoolkit . log (
1423+ `Font size increased: outline=${ newOutlineSize } px, bookmark=${ newBookmarkSize } px` ,
1424+ ) ;
1425+ }
1426+ }
1427+
1428+ // Decrease font size for both outline and bookmark
1429+ async function handleFontSizeDecrease ( ev : Event ) {
1430+ const doc = ( ev . target as Element ) . ownerDocument ;
1431+ const reader = Zotero . Reader . getByTabID (
1432+ ztoolkit . getGlobal ( "Zotero_Tabs" ) . selectedID ,
1433+ ) ;
1434+ if ( ! reader ) return ;
1435+
1436+ // Get current baseFontSize for outline
1437+ const outlineInfo = await loadOutlineInfoFromJSON ( reader . _item ) ;
1438+ const currentOutlineSize =
1439+ outlineInfo ?. baseFontSize ?? DEFAULT_BASE_FONT_SIZE ;
1440+
1441+ // Get current baseFontSize for bookmark
1442+ const bookmarkInfo = await loadBookmarkInfoFromJSON ( reader . _item ) ;
1443+ const currentBookmarkSize =
1444+ bookmarkInfo ?. baseFontSize ?? DEFAULT_BOOKMARK_FONT_SIZE ;
1445+
1446+ // Decrease by 1, min 8
1447+ const newOutlineSize = Math . max ( currentOutlineSize - 1 , MIN_FONT_SIZE ) ;
1448+ const newBookmarkSize = Math . max ( currentBookmarkSize - 1 , MIN_FONT_SIZE ) ;
1449+
1450+ if (
1451+ newOutlineSize !== currentOutlineSize ||
1452+ newBookmarkSize !== currentBookmarkSize
1453+ ) {
1454+ // Update CSS
1455+ updateOutlineFontSize ( doc , newOutlineSize ) ;
1456+ updateBookmarkFontSize ( doc , newBookmarkSize ) ;
1457+
1458+ // Save to JSON
1459+ await saveOutlineToJSON ( reader . _item , undefined , newOutlineSize ) ;
1460+ await saveBookmarksToJSON ( reader . _item , undefined , newBookmarkSize ) ;
1461+
1462+ ztoolkit . log (
1463+ `Font size decreased: outline=${ newOutlineSize } px, bookmark=${ newBookmarkSize } px` ,
1464+ ) ;
1465+ }
1466+ }
0 commit comments