MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
Line 95: Line 95:
       'य':'ய','र':'ர','ल':'ல','ळ':'ழ','व':'வ',
       'य':'ய','र':'ர','ल':'ல','ळ':'ழ','व':'வ',
       'श':'ஶ','ष':'ஷ','स':'ஸ','ह':'ஹ',
       'श':'ஶ','ष':'ஷ','स':'ஸ','ह':'ஹ',
       'ा':'ா','ि':'ி','ी':'ீ','ு':'ு','ू':'ூ',
       'ा':'ா','ि':'ி','ी':'ீ','ु':'ு','ू':'ூ',
       'ृ':'ு','ॄ':'ூ',
       'ृ':'ு','ॄ':'ூ',
       'े':'ே','ை':'ை','ो':'ோ','ौ':'ௌ',
       'े':'ே','ை':'ை','ो':'ோ','ौ':'ௌ',
Line 185: Line 185:
     var titleEl = toc.querySelector( '.vector-toc-title' );
     var titleEl = toc.querySelector( '.vector-toc-title' );
     if ( !titleEl ) return;
     if ( !titleEl ) return;
    var TITLE = 'विषयसूची';
     var replaced = false;
     var replaced = false;
     titleEl.childNodes.forEach( function ( n ) {
     titleEl.childNodes.forEach( function ( n ) {
       if ( n.nodeType === 3 && n.textContent.trim() ) {
       if ( n.nodeType === 3 && n.textContent.trim() ) {
         n.textContent = 'विषयसूची';
         n.textContent = TITLE;
         replaced = true;
         replaced = true;
       }
       }
     } );
     } );
     if ( !replaced && titleEl.childElementCount === 0 ) {
     if ( !replaced && titleEl.childElementCount === 0 ) {
       titleEl.textContent = 'विषयसूची';
       titleEl.textContent = TITLE;
     }
     }
    // Fix up any <span data-deva> wrappers that tagTextNodes created
    // over "Contents" — update their data-deva to the new Sanskrit text
    titleEl.querySelectorAll( '[data-deva]' ).forEach( function ( span ) {
      span.setAttribute( 'data-deva', TITLE );
      if ( currentScript !== 'deva' ) {
        span.textContent = transliterateText( TITLE, currentScript );
      } else {
        span.textContent = TITLE;
      }
    } );
   }
   }


Line 202: Line 213:
     var toc = document.querySelector( '.vector-toc' );
     var toc = document.querySelector( '.vector-toc' );
     if ( !toc ) return;
     if ( !toc ) return;
    // Try the dedicated id first (Vector 2022)
     var el = toc.querySelector( '#vector-toc-beginning' );
     var el = toc.querySelector( '#vector-toc-beginning' );
     if ( !el ) {
     if ( !el ) {
      // Fallback: first list-item whose link has no # anchor = the "Beginning" entry
       var items = toc.querySelectorAll( '.vector-toc-list-item' );
       var items = toc.querySelectorAll( '.vector-toc-list-item' );
       for ( var i = 0; i < items.length; i++ ) {
       for ( var i = 0; i < items.length; i++ ) {
         var a = items[ i ].querySelector( 'a' );
         var a = items[ i ].querySelector( 'a' );
         if ( a && a.href.indexOf( '#' ) === -1 ) { el = items[ i ]; break; }
         if ( a ) {
          var href = a.getAttribute( 'href' ) || '';
          if ( href.indexOf( '#' ) === -1 ) { el = items[ i ]; break; }
        }
       }
       }
     }
     }
Line 513: Line 529:
     var script = e && e.detail && e.detail.script;
     var script = e && e.detail && e.detail.script;
     if ( script ) applyScript( script );
     if ( script ) applyScript( script );
  } );
  // ── React to gr-new-content (siteNav panel rendered new items) ──
  // Tag any new text nodes added by the documents panel
  window.addEventListener( 'gr-new-content', function ( e ) {
    var container = e && e.detail && e.detail.container;
    if ( !container ) return;
    var walker = document.createTreeWalker( container, NodeFilter.SHOW_TEXT );
    var nodes = [];
    while ( walker.nextNode() ) nodes.push( walker.currentNode );
    nodes.forEach( function ( node ) {
      var p = node.parentNode;
      if ( !p || ( p.hasAttribute && p.hasAttribute( 'data-deva' ) ) ) return;
      var orig = node.textContent;
      if ( !orig.trim() ) return;
      var span = document.createElement( 'span' );
      span.setAttribute( 'data-deva', orig );
      span.textContent = currentScript !== 'deva' ? transliterateText( orig, currentScript ) : orig;
      p.replaceChild( span, node );
      translatableSpans.push( span );
    } );
   } );
   } );