@@ -115,6 +115,7 @@ function RemoteFunctions(config = {}) {
115115 handlerName } ' missing required function: 'dismiss'`) ;
116116 return ;
117117 }
118+ handler . handlerName = handlerName ;
118119 _moreOptionsHandlers . set ( handlerName , handler ) ;
119120 }
120121 function getNodeMoreOptionsHandler ( handlerName ) {
@@ -2238,11 +2239,33 @@ function RemoteFunctions(config = {}) {
22382239 </span>` ;
22392240 }
22402241
2241- LivePreviewView . getAllNodeMoreOptionsHandlers ( ) . forEach ( handler => {
2242- const optionalContent = handler . renderMoreOptions ( this . element ) ;
2243- if ( optionalContent ) {
2244- content += optionalContent ;
2245- }
2242+ // Render handler options with ordering support
2243+ const handlerOptions = Array . from ( LivePreviewView . getAllNodeMoreOptionsHandlers ( ) )
2244+ . map ( ( handler , index ) => {
2245+ if ( ! handler . renderMoreOptions ) {
2246+ return null ;
2247+ }
2248+ const result = handler . renderMoreOptions ( this . element ) ;
2249+ if ( ! result ) {
2250+ return null ;
2251+ }
2252+ return {
2253+ listOrder : result . listOrder !== undefined ? result . listOrder : Number . MAX_SAFE_INTEGER ,
2254+ htmlContent : result . htmlContent || '' ,
2255+ handlerName : handler . name || `handler_${ index } `
2256+ } ;
2257+ } )
2258+ . filter ( item => item && item . htmlContent )
2259+ . sort ( ( a , b ) => {
2260+ if ( a . listOrder !== b . listOrder ) {
2261+ return a . listOrder - b . listOrder ;
2262+ }
2263+ // Same order - sort alphabetically by handler name
2264+ return a . handlerName . localeCompare ( b . handlerName ) ;
2265+ } ) ;
2266+
2267+ handlerOptions . forEach ( item => {
2268+ content += item . htmlContent ;
22462269 } ) ;
22472270
22482271 const selectedClass = imageGallerySelected ? 'class="selected"' : "" ;
@@ -2425,9 +2448,31 @@ function RemoteFunctions(config = {}) {
24252448
24262449 const shadow = this . body . attachShadow ( { mode : "open" } ) ;
24272450
2428- // Render handler dropdown items
2451+ // Render handler dropdown items with ordering support
24292452 const handlerItems = Array . from ( getAllNodeMoreOptionsHandlers ( ) )
2430- . map ( handler => handler . renderDropdownItems ? handler . renderDropdownItems ( ) : '' )
2453+ . map ( ( handler , index ) => {
2454+ if ( ! handler . renderDropdownItems ) {
2455+ return null ;
2456+ }
2457+ const result = handler . renderDropdownItems ( ) ;
2458+ if ( ! result ) {
2459+ return null ;
2460+ }
2461+ return {
2462+ listOrder : result . listOrder !== undefined ? result . listOrder : Number . MAX_SAFE_INTEGER ,
2463+ htmlContent : result . htmlContent || '' ,
2464+ handlerName : handler . name || `handler_${ index } `
2465+ } ;
2466+ } )
2467+ . filter ( item => item && item . htmlContent )
2468+ . sort ( ( a , b ) => {
2469+ if ( a . listOrder !== b . listOrder ) {
2470+ return a . listOrder - b . listOrder ;
2471+ }
2472+ // Same order - sort alphabetically by handler name
2473+ return a . handlerName . localeCompare ( b . handlerName ) ;
2474+ } )
2475+ . map ( item => item . htmlContent )
24312476 . join ( '' ) ;
24322477
24332478 let content = `
0 commit comments