\ProvidesExplPackage {luamml-patches-kernel} {2025-03-06} {0.5.0}
  {Feel free to add a description here}


\IfPackageAtLeastTF{latex-lab-testphase-math}{2025-01-24}
 {}
 {
   \PackageInfo{luamml}{patching~\string\mathsm@sh}
    \cs_set:Npn \mathsm@sh #1 #2 {
     \setbox \z@ \hbox {
       $
       \m@th #1 {
         #2
       }
       \luamml_save:nNn {mathsmash} #1 {mpadded}
       \luamml_pdf_write:
       $
     }
     \luamml_annotate:nen {2} {
       nucleus = true,
       core = consume_label('mathsmash', function(padded)
         padded.height, padded.depth = 0, 0~
       end),
     } {
       {}
       \finsm@sh
     }
   }

   \PackageInfo{luamml}{patching~\string\mathph@nt}
   \cs_set:Npn \mathph@nt #1 #2 {
     \setbox \z@ = \hbox {
       $
       \m@th
       #1
       {#2}
       \luamml_save:nNn {mathphant} #1 {mphantom}
       $
     }
     \luamml_annotate:nen {1} {
       nucleus = true,
       core = {[0] = 'mpadded',
         \ifh@\else
           width = 0,
         \fi
         \ifv@\else
           height = 0, depth = 0,
         \fi
         consume_label'mathphant',
       }
     } {
       \finph@nt
     }
   }
   \IfFileLoadedT {latex-lab-math.ltx} {
  \RequirePackage{luamml-patches-lab-math}
   }
 }

% This is not moved to latex-lab for now. It doesn't work properly with structure elements
% active: the content is outside of the math. 
\@ifpackageloaded {unicode-math} {} {
  \cs_new:Npn \__luamml_kernel_define_character:Nnn #1#2#3 {
    \cs_set:cpx { \cs_to_str:N #1 ~ } {
      \luamml_annotate:nen {#2} {
        nucleus = true, core = {[0] = 'mi', '\string\u{#3}'},
      } {
        \exp_not:v { \cs_to_str:N #1 ~ }
      }
    }
  }

  \__luamml_kernel_define_character:Nnn \models {3} {22a7}
  \__luamml_kernel_define_character:Nnn \hookrightarrow {3} {21aa}
  \__luamml_kernel_define_character:Nnn \hookleftarrow {3} {21a9}
  \__luamml_kernel_define_character:Nnn \bowtie {3} {22c8}
  \__luamml_kernel_define_character:Nnn \Longrightarrow {3} {27f9}
  \__luamml_kernel_define_character:Nnn \longrightarrow {3} {27f6}
  \__luamml_kernel_define_character:Nnn \Longleftarrow {3} {27f8}
  \__luamml_kernel_define_character:Nnn \longleftarrow {3} {27f5}
  \__luamml_kernel_define_character:Nnn \Longleftrightarrow {3} {27fa}
  \__luamml_kernel_define_character:Nnn \longleftrightarrow {3} {27f7}
  \__luamml_kernel_define_character:Nnn \longmapsto {4} {27fc}
}
