@@ -1748,37 +1748,46 @@ Spicetify.ContextMenuV2 = (() => {
1748
1748
}
1749
1749
1750
1750
class ItemSubMenu {
1751
- static itemsToComponents = ( items , props , trigger , target ) => {
1752
- return items . filter ( ( item ) => ( item . shouldAdd || ( ( ) => true ) ) ?. ( props , trigger , target ) ) . map ( ( item ) => item . _element ) ;
1753
- } ;
1751
+ static itemsToComponents ( items , props , trigger , target , parentDepth = 1 ) {
1752
+ return items
1753
+ . filter ( ( item ) => ( item . shouldAdd || ( ( ) => true ) ) ?. ( props , trigger , target ) )
1754
+ . map ( ( item ) => {
1755
+ if ( item instanceof ItemSubMenu ) item . depth = parentDepth + 1 ;
1756
+ return item . _element ;
1757
+ } ) ;
1758
+ }
1754
1759
1755
- constructor ( { text, disabled = false , leadingIcon, divider, items, shouldAdd = ( ) => true } ) {
1760
+ constructor ( { text, disabled = false , leadingIcon, divider, items, depth = 1 , shouldAdd = ( ) => true } ) {
1756
1761
this . shouldAdd = shouldAdd ;
1757
1762
1758
1763
this . _text = text ;
1759
1764
this . _disabled = disabled ;
1760
1765
this . _leadingIcon = leadingIcon ;
1761
1766
this . _divider = divider ;
1762
1767
this . _items = items ;
1768
+ this . _depth = depth ;
1763
1769
this . _element = Spicetify . ReactJSX . jsx ( ( ) => {
1764
1770
const [ _text , setText ] = Spicetify . React . useState ( this . _text ) ;
1765
1771
const [ _disabled , setDisabled ] = Spicetify . React . useState ( this . _disabled ) ;
1766
1772
const [ _leadingIcon , setLeadingIcon ] = Spicetify . React . useState ( this . _leadingIcon ) ;
1767
1773
const [ _divider , setDivider ] = Spicetify . React . useState ( this . _divider ) ;
1768
1774
const [ _items , setItems ] = Spicetify . React . useState ( this . _items ) ;
1775
+ const [ _depth , setDepth ] = Spicetify . React . useState ( this . _depth ) ;
1769
1776
1770
1777
Spicetify . React . useEffect ( ( ) => {
1771
1778
this . _setText = setText ;
1772
1779
this . _setDisabled = setDisabled ;
1773
1780
this . _setLeadingIcon = setLeadingIcon ;
1774
1781
this . _setDivider = setDivider ;
1775
1782
this . _setItems = setItems ;
1783
+ this . _setDepth = setDepth ;
1776
1784
return ( ) => {
1777
1785
this . _setText = undefined ;
1778
1786
this . _setDisabled = undefined ;
1779
1787
this . _setLeadingIcon = undefined ;
1780
1788
this . _setDivider = undefined ;
1781
1789
this . _setItems = undefined ;
1790
+ this . _setDepth = undefined ;
1782
1791
} ;
1783
1792
} ) ;
1784
1793
@@ -1788,13 +1797,13 @@ Spicetify.ContextMenuV2 = (() => {
1788
1797
return Spicetify . React . createElement ( Spicetify . ReactComponent . MenuSubMenuItem , {
1789
1798
displayText : _text ,
1790
1799
divider : _divider ,
1791
- depth : 1 ,
1800
+ depth : _depth ,
1792
1801
placement : "right-start" ,
1793
1802
onOpenChange : ( ) => undefined ,
1794
1803
onClick : ( ) => undefined ,
1795
1804
disabled : _disabled ,
1796
1805
leadingIcon : _leadingIcon && createIconComponent ( _leadingIcon ) ,
1797
- children : ItemSubMenu . itemsToComponents ( _items , props , trigger , target ) ,
1806
+ children : ItemSubMenu . itemsToComponents ( _items , props , trigger , target , _depth ) ,
1798
1807
} ) ;
1799
1808
} , { } ) ;
1800
1809
}
@@ -1831,6 +1840,14 @@ Spicetify.ContextMenuV2 = (() => {
1831
1840
return this . _divider ;
1832
1841
}
1833
1842
1843
+ set depth ( value ) {
1844
+ this . _depth = value ;
1845
+ this . _setDepth ?. ( this . _depth ) ;
1846
+ }
1847
+ get depth ( ) {
1848
+ return this . _depth ;
1849
+ }
1850
+
1834
1851
addItem ( item ) {
1835
1852
this . _items . add ( item ) ;
1836
1853
this . _setItems ?. ( this . _items ) ;
0 commit comments