@drghaliasri/butex 5.3.2 → 5.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -586,7 +586,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
586
586
  readonly id: "neq";
587
587
  readonly category: "operators1";
588
588
  readonly Tex: "\\neq";
589
- readonly mirror: false;
589
+ readonly mirror: true;
590
590
  readonly Label: "≠";
591
591
  readonly title: "لا يساوي";
592
592
  readonly svg_path: null;
@@ -596,6 +596,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
596
596
  readonly category: "operators1";
597
597
  readonly Tex: "\\approx";
598
598
  readonly mirror: false;
599
+ readonly displayMirror: true;
599
600
  readonly Label: "≈";
600
601
  readonly title: "تقريبا يساوي";
601
602
  readonly svg_path: null;
@@ -605,6 +606,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
605
606
  readonly category: "operators1";
606
607
  readonly Tex: "\\sim";
607
608
  readonly mirror: false;
609
+ readonly displayMirror: true;
608
610
  readonly Label: "∼";
609
611
  readonly title: "مشابه";
610
612
  readonly svg_path: null;
@@ -623,6 +625,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
623
625
  readonly category: "operators1";
624
626
  readonly Tex: "\\leq";
625
627
  readonly mirror: true;
628
+ readonly displayMirror: false;
626
629
  readonly Label: "≤";
627
630
  readonly title: "أصغر من أو يساوي";
628
631
  readonly svg_path: null;
@@ -632,6 +635,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
632
635
  readonly category: "operators1";
633
636
  readonly Tex: "\\geq";
634
637
  readonly mirror: true;
638
+ readonly displayMirror: false;
635
639
  readonly Label: "≥";
636
640
  readonly title: "أكبر من أو يساوي";
637
641
  readonly svg_path: null;
@@ -641,6 +645,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
641
645
  readonly category: "operators1";
642
646
  readonly Tex: "\\coloneqq";
643
647
  readonly mirror: true;
648
+ readonly displayMirror: false;
644
649
  readonly Label: "≔";
645
650
  readonly title: "يعرف بأنه يساوي";
646
651
  readonly svg_path: null;
@@ -650,6 +655,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
650
655
  readonly category: "operators1";
651
656
  readonly Tex: "\\eqqcolon";
652
657
  readonly mirror: true;
658
+ readonly displayMirror: false;
653
659
  readonly Label: "≕";
654
660
  readonly title: "يساوي بالتعريف";
655
661
  readonly svg_path: null;
@@ -659,6 +665,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
659
665
  readonly category: "operators2";
660
666
  readonly Tex: "\\propto";
661
667
  readonly mirror: true;
668
+ readonly displayMirror: false;
662
669
  readonly Label: "∝";
663
670
  readonly title: "يتناسب مع";
664
671
  readonly svg_path: null;
@@ -668,6 +675,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
668
675
  readonly category: "operators2";
669
676
  readonly Tex: "\\in";
670
677
  readonly mirror: true;
678
+ readonly displayMirror: false;
671
679
  readonly Label: "∈";
672
680
  readonly title: "ينتمي إلى";
673
681
  readonly svg_path: null;
@@ -677,6 +685,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
677
685
  readonly category: "operators2";
678
686
  readonly Tex: "\\notin";
679
687
  readonly mirror: false;
688
+ readonly displayMirror: true;
680
689
  readonly Label: "∉";
681
690
  readonly title: "لا ينتمي إلى";
682
691
  readonly svg_path: null;
@@ -686,6 +695,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
686
695
  readonly category: "operators2";
687
696
  readonly Tex: "\\subset";
688
697
  readonly mirror: true;
698
+ readonly displayMirror: false;
689
699
  readonly Label: "⊂";
690
700
  readonly title: "مجموعة جزئية من";
691
701
  readonly svg_path: null;
@@ -695,6 +705,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
695
705
  readonly category: "operators2";
696
706
  readonly Tex: "\\supset";
697
707
  readonly mirror: true;
708
+ readonly displayMirror: false;
698
709
  readonly Label: "⊃";
699
710
  readonly title: "مجموعة شاملة لـ";
700
711
  readonly svg_path: null;
@@ -704,6 +715,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
704
715
  readonly category: "operators2";
705
716
  readonly Tex: "\\subseteq";
706
717
  readonly mirror: true;
718
+ readonly displayMirror: false;
707
719
  readonly Label: "⊆";
708
720
  readonly title: "مجموعة جزئية أو تساوي";
709
721
  readonly svg_path: null;
@@ -713,6 +725,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
713
725
  readonly category: "operators2";
714
726
  readonly Tex: "\\supseteq";
715
727
  readonly mirror: true;
728
+ readonly displayMirror: false;
716
729
  readonly Label: "⊇";
717
730
  readonly title: "مجموعة شاملة أو تساوي";
718
731
  readonly svg_path: null;
@@ -722,6 +735,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
722
735
  readonly category: "operators2";
723
736
  readonly Tex: "\\cap";
724
737
  readonly mirror: false;
738
+ readonly displayMirror: true;
725
739
  readonly Label: "∩";
726
740
  readonly title: "تقاطع";
727
741
  readonly svg_path: null;
@@ -731,6 +745,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
731
745
  readonly category: "operators2";
732
746
  readonly Tex: "\\cup";
733
747
  readonly mirror: false;
748
+ readonly displayMirror: true;
734
749
  readonly Label: "∪";
735
750
  readonly title: "اتحاد";
736
751
  readonly svg_path: null;
@@ -740,6 +755,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
740
755
  readonly category: "operators2";
741
756
  readonly Tex: "\\emptyset";
742
757
  readonly mirror: false;
758
+ readonly displayMirror: true;
743
759
  readonly Label: "∅";
744
760
  readonly title: "المجموعة الخالية";
745
761
  readonly svg_path: null;
@@ -749,6 +765,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
749
765
  readonly category: "operators2";
750
766
  readonly Tex: "\\nsubseteq";
751
767
  readonly mirror: true;
768
+ readonly displayMirror: false;
752
769
  readonly Label: "⊈";
753
770
  readonly title: "ليست مجموعة جزئية أو تساوي";
754
771
  readonly svg_path: null;
@@ -758,6 +775,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
758
775
  readonly category: "operators2";
759
776
  readonly Tex: "\\nsupseteq";
760
777
  readonly mirror: true;
778
+ readonly displayMirror: false;
761
779
  readonly Label: "⊉";
762
780
  readonly title: "ليست مجموعة شاملة أو تساوي";
763
781
  readonly svg_path: null;
@@ -966,6 +984,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
966
984
  readonly category: "integrals";
967
985
  readonly Tex: "\\iint";
968
986
  readonly mirror: true;
987
+ readonly displayMirror: false;
969
988
  readonly Label: "∬";
970
989
  readonly title: "تكامل مزدوج";
971
990
  readonly svg_path: null;
@@ -975,6 +994,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
975
994
  readonly category: "integrals";
976
995
  readonly Tex: "\\iiint";
977
996
  readonly mirror: true;
997
+ readonly displayMirror: false;
978
998
  readonly Label: "∭";
979
999
  readonly title: "تكامل ثلاثي";
980
1000
  readonly svg_path: null;
@@ -984,6 +1004,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
984
1004
  readonly category: "integrals";
985
1005
  readonly Tex: "\\iiiint";
986
1006
  readonly mirror: true;
1007
+ readonly displayMirror: false;
987
1008
  readonly Label: "⨌";
988
1009
  readonly title: "تكامل رباعي";
989
1010
  readonly svg_path: null;
@@ -993,6 +1014,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
993
1014
  readonly category: "integrals";
994
1015
  readonly Tex: "\\oint";
995
1016
  readonly mirror: true;
1017
+ readonly displayMirror: false;
996
1018
  readonly Label: "∮";
997
1019
  readonly title: "تكامل مغلق";
998
1020
  readonly svg_path: null;
@@ -1002,6 +1024,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
1002
1024
  readonly category: "integrals";
1003
1025
  readonly Tex: "\\oiint";
1004
1026
  readonly mirror: true;
1027
+ readonly displayMirror: false;
1005
1028
  readonly Label: "∯";
1006
1029
  readonly title: "تكامل سطحي مغلق";
1007
1030
  readonly svg_path: null;
@@ -1011,6 +1034,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
1011
1034
  readonly category: "integrals";
1012
1035
  readonly Tex: "\\oiiint";
1013
1036
  readonly mirror: true;
1037
+ readonly displayMirror: false;
1014
1038
  readonly Label: "∰";
1015
1039
  readonly title: "تكامل حجمي مغلق";
1016
1040
  readonly svg_path: null;
package/dist/index.d.ts CHANGED
@@ -586,7 +586,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
586
586
  readonly id: "neq";
587
587
  readonly category: "operators1";
588
588
  readonly Tex: "\\neq";
589
- readonly mirror: false;
589
+ readonly mirror: true;
590
590
  readonly Label: "≠";
591
591
  readonly title: "لا يساوي";
592
592
  readonly svg_path: null;
@@ -596,6 +596,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
596
596
  readonly category: "operators1";
597
597
  readonly Tex: "\\approx";
598
598
  readonly mirror: false;
599
+ readonly displayMirror: true;
599
600
  readonly Label: "≈";
600
601
  readonly title: "تقريبا يساوي";
601
602
  readonly svg_path: null;
@@ -605,6 +606,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
605
606
  readonly category: "operators1";
606
607
  readonly Tex: "\\sim";
607
608
  readonly mirror: false;
609
+ readonly displayMirror: true;
608
610
  readonly Label: "∼";
609
611
  readonly title: "مشابه";
610
612
  readonly svg_path: null;
@@ -623,6 +625,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
623
625
  readonly category: "operators1";
624
626
  readonly Tex: "\\leq";
625
627
  readonly mirror: true;
628
+ readonly displayMirror: false;
626
629
  readonly Label: "≤";
627
630
  readonly title: "أصغر من أو يساوي";
628
631
  readonly svg_path: null;
@@ -632,6 +635,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
632
635
  readonly category: "operators1";
633
636
  readonly Tex: "\\geq";
634
637
  readonly mirror: true;
638
+ readonly displayMirror: false;
635
639
  readonly Label: "≥";
636
640
  readonly title: "أكبر من أو يساوي";
637
641
  readonly svg_path: null;
@@ -641,6 +645,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
641
645
  readonly category: "operators1";
642
646
  readonly Tex: "\\coloneqq";
643
647
  readonly mirror: true;
648
+ readonly displayMirror: false;
644
649
  readonly Label: "≔";
645
650
  readonly title: "يعرف بأنه يساوي";
646
651
  readonly svg_path: null;
@@ -650,6 +655,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
650
655
  readonly category: "operators1";
651
656
  readonly Tex: "\\eqqcolon";
652
657
  readonly mirror: true;
658
+ readonly displayMirror: false;
653
659
  readonly Label: "≕";
654
660
  readonly title: "يساوي بالتعريف";
655
661
  readonly svg_path: null;
@@ -659,6 +665,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
659
665
  readonly category: "operators2";
660
666
  readonly Tex: "\\propto";
661
667
  readonly mirror: true;
668
+ readonly displayMirror: false;
662
669
  readonly Label: "∝";
663
670
  readonly title: "يتناسب مع";
664
671
  readonly svg_path: null;
@@ -668,6 +675,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
668
675
  readonly category: "operators2";
669
676
  readonly Tex: "\\in";
670
677
  readonly mirror: true;
678
+ readonly displayMirror: false;
671
679
  readonly Label: "∈";
672
680
  readonly title: "ينتمي إلى";
673
681
  readonly svg_path: null;
@@ -677,6 +685,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
677
685
  readonly category: "operators2";
678
686
  readonly Tex: "\\notin";
679
687
  readonly mirror: false;
688
+ readonly displayMirror: true;
680
689
  readonly Label: "∉";
681
690
  readonly title: "لا ينتمي إلى";
682
691
  readonly svg_path: null;
@@ -686,6 +695,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
686
695
  readonly category: "operators2";
687
696
  readonly Tex: "\\subset";
688
697
  readonly mirror: true;
698
+ readonly displayMirror: false;
689
699
  readonly Label: "⊂";
690
700
  readonly title: "مجموعة جزئية من";
691
701
  readonly svg_path: null;
@@ -695,6 +705,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
695
705
  readonly category: "operators2";
696
706
  readonly Tex: "\\supset";
697
707
  readonly mirror: true;
708
+ readonly displayMirror: false;
698
709
  readonly Label: "⊃";
699
710
  readonly title: "مجموعة شاملة لـ";
700
711
  readonly svg_path: null;
@@ -704,6 +715,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
704
715
  readonly category: "operators2";
705
716
  readonly Tex: "\\subseteq";
706
717
  readonly mirror: true;
718
+ readonly displayMirror: false;
707
719
  readonly Label: "⊆";
708
720
  readonly title: "مجموعة جزئية أو تساوي";
709
721
  readonly svg_path: null;
@@ -713,6 +725,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
713
725
  readonly category: "operators2";
714
726
  readonly Tex: "\\supseteq";
715
727
  readonly mirror: true;
728
+ readonly displayMirror: false;
716
729
  readonly Label: "⊇";
717
730
  readonly title: "مجموعة شاملة أو تساوي";
718
731
  readonly svg_path: null;
@@ -722,6 +735,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
722
735
  readonly category: "operators2";
723
736
  readonly Tex: "\\cap";
724
737
  readonly mirror: false;
738
+ readonly displayMirror: true;
725
739
  readonly Label: "∩";
726
740
  readonly title: "تقاطع";
727
741
  readonly svg_path: null;
@@ -731,6 +745,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
731
745
  readonly category: "operators2";
732
746
  readonly Tex: "\\cup";
733
747
  readonly mirror: false;
748
+ readonly displayMirror: true;
734
749
  readonly Label: "∪";
735
750
  readonly title: "اتحاد";
736
751
  readonly svg_path: null;
@@ -740,6 +755,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
740
755
  readonly category: "operators2";
741
756
  readonly Tex: "\\emptyset";
742
757
  readonly mirror: false;
758
+ readonly displayMirror: true;
743
759
  readonly Label: "∅";
744
760
  readonly title: "المجموعة الخالية";
745
761
  readonly svg_path: null;
@@ -749,6 +765,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
749
765
  readonly category: "operators2";
750
766
  readonly Tex: "\\nsubseteq";
751
767
  readonly mirror: true;
768
+ readonly displayMirror: false;
752
769
  readonly Label: "⊈";
753
770
  readonly title: "ليست مجموعة جزئية أو تساوي";
754
771
  readonly svg_path: null;
@@ -758,6 +775,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
758
775
  readonly category: "operators2";
759
776
  readonly Tex: "\\nsupseteq";
760
777
  readonly mirror: true;
778
+ readonly displayMirror: false;
761
779
  readonly Label: "⊉";
762
780
  readonly title: "ليست مجموعة شاملة أو تساوي";
763
781
  readonly svg_path: null;
@@ -966,6 +984,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
966
984
  readonly category: "integrals";
967
985
  readonly Tex: "\\iint";
968
986
  readonly mirror: true;
987
+ readonly displayMirror: false;
969
988
  readonly Label: "∬";
970
989
  readonly title: "تكامل مزدوج";
971
990
  readonly svg_path: null;
@@ -975,6 +994,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
975
994
  readonly category: "integrals";
976
995
  readonly Tex: "\\iiint";
977
996
  readonly mirror: true;
997
+ readonly displayMirror: false;
978
998
  readonly Label: "∭";
979
999
  readonly title: "تكامل ثلاثي";
980
1000
  readonly svg_path: null;
@@ -984,6 +1004,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
984
1004
  readonly category: "integrals";
985
1005
  readonly Tex: "\\iiiint";
986
1006
  readonly mirror: true;
1007
+ readonly displayMirror: false;
987
1008
  readonly Label: "⨌";
988
1009
  readonly title: "تكامل رباعي";
989
1010
  readonly svg_path: null;
@@ -993,6 +1014,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
993
1014
  readonly category: "integrals";
994
1015
  readonly Tex: "\\oint";
995
1016
  readonly mirror: true;
1017
+ readonly displayMirror: false;
996
1018
  readonly Label: "∮";
997
1019
  readonly title: "تكامل مغلق";
998
1020
  readonly svg_path: null;
@@ -1002,6 +1024,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
1002
1024
  readonly category: "integrals";
1003
1025
  readonly Tex: "\\oiint";
1004
1026
  readonly mirror: true;
1027
+ readonly displayMirror: false;
1005
1028
  readonly Label: "∯";
1006
1029
  readonly title: "تكامل سطحي مغلق";
1007
1030
  readonly svg_path: null;
@@ -1011,6 +1034,7 @@ declare const ATOMIC_OPERATOR_COMMANDS: {
1011
1034
  readonly category: "integrals";
1012
1035
  readonly Tex: "\\oiiint";
1013
1036
  readonly mirror: true;
1037
+ readonly displayMirror: false;
1014
1038
  readonly Label: "∰";
1015
1039
  readonly title: "تكامل حجمي مغلق";
1016
1040
  readonly svg_path: null;
@@ -151,17 +151,15 @@ mjx-container[jax="SVG"] svg text[data-butex-svg-text] {
151
151
  unicode-bidi: isolate;
152
152
  }
153
153
 
154
- .butex-preview-mirror {
154
+ /* CHTML only: CSS flip is safe here because layout is unaffected.
155
+ * SVG mirrors are baked into the transform attribute by patchBuTeXSvgMath
156
+ * (CSS transform would override MathJax's translate presentation attribute). */
157
+ mjx-container[jax="CHTML"] .butex-preview-mirror {
155
158
  transform: scaleX(-1);
156
159
  transform-origin: center;
157
160
  display: inline-block;
158
161
  }
159
162
 
160
- mjx-container[jax="SVG"] svg .butex-preview-mirror {
161
- transform-box: fill-box;
162
- transform-origin: center center;
163
- }
164
-
165
163
  /* Keeps Arabic text shaping sane after double flip; tweak fonts in page preamble */
166
164
  .mjx-rtl-unmirror .mjx-text,
167
165
  .mjx-rtl-unmirror .mjx-char {
@@ -1718,7 +1716,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1718
1716
  id: "neq",
1719
1717
  category: "operators1",
1720
1718
  Tex: "\\neq",
1721
- mirror: false,
1719
+ mirror: true,
1722
1720
  Label: "\u2260",
1723
1721
  title: "\u0644\u0627 \u064A\u0633\u0627\u0648\u064A",
1724
1722
  svg_path: null
@@ -1728,6 +1726,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1728
1726
  category: "operators1",
1729
1727
  Tex: "\\approx",
1730
1728
  mirror: false,
1729
+ displayMirror: true,
1731
1730
  Label: "\u2248",
1732
1731
  title: "\u062A\u0642\u0631\u064A\u0628\u0627 \u064A\u0633\u0627\u0648\u064A",
1733
1732
  svg_path: null
@@ -1737,6 +1736,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1737
1736
  category: "operators1",
1738
1737
  Tex: "\\sim",
1739
1738
  mirror: false,
1739
+ displayMirror: true,
1740
1740
  Label: "\u223C",
1741
1741
  title: "\u0645\u0634\u0627\u0628\u0647",
1742
1742
  svg_path: null
@@ -1755,6 +1755,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1755
1755
  category: "operators1",
1756
1756
  Tex: "\\leq",
1757
1757
  mirror: true,
1758
+ displayMirror: false,
1758
1759
  Label: "\u2264",
1759
1760
  title: "\u0623\u0635\u063A\u0631 \u0645\u0646 \u0623\u0648 \u064A\u0633\u0627\u0648\u064A",
1760
1761
  svg_path: null
@@ -1764,6 +1765,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1764
1765
  category: "operators1",
1765
1766
  Tex: "\\geq",
1766
1767
  mirror: true,
1768
+ displayMirror: false,
1767
1769
  Label: "\u2265",
1768
1770
  title: "\u0623\u0643\u0628\u0631 \u0645\u0646 \u0623\u0648 \u064A\u0633\u0627\u0648\u064A",
1769
1771
  svg_path: null
@@ -1773,6 +1775,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1773
1775
  category: "operators1",
1774
1776
  Tex: "\\coloneqq",
1775
1777
  mirror: true,
1778
+ displayMirror: false,
1776
1779
  Label: "\u2254",
1777
1780
  title: "\u064A\u0639\u0631\u0641 \u0628\u0623\u0646\u0647 \u064A\u0633\u0627\u0648\u064A",
1778
1781
  svg_path: null
@@ -1782,6 +1785,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1782
1785
  category: "operators1",
1783
1786
  Tex: "\\eqqcolon",
1784
1787
  mirror: true,
1788
+ displayMirror: false,
1785
1789
  Label: "\u2255",
1786
1790
  title: "\u064A\u0633\u0627\u0648\u064A \u0628\u0627\u0644\u062A\u0639\u0631\u064A\u0641",
1787
1791
  svg_path: null
@@ -1792,6 +1796,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1792
1796
  category: "operators2",
1793
1797
  Tex: "\\propto",
1794
1798
  mirror: true,
1799
+ displayMirror: false,
1795
1800
  Label: "\u221D",
1796
1801
  title: "\u064A\u062A\u0646\u0627\u0633\u0628 \u0645\u0639",
1797
1802
  svg_path: null
@@ -1801,6 +1806,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1801
1806
  category: "operators2",
1802
1807
  Tex: "\\in",
1803
1808
  mirror: true,
1809
+ displayMirror: false,
1804
1810
  Label: "\u2208",
1805
1811
  title: "\u064A\u0646\u062A\u0645\u064A \u0625\u0644\u0649",
1806
1812
  svg_path: null
@@ -1810,6 +1816,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1810
1816
  category: "operators2",
1811
1817
  Tex: "\\notin",
1812
1818
  mirror: false,
1819
+ displayMirror: true,
1813
1820
  Label: "\u2209",
1814
1821
  title: "\u0644\u0627 \u064A\u0646\u062A\u0645\u064A \u0625\u0644\u0649",
1815
1822
  svg_path: null
@@ -1819,6 +1826,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1819
1826
  category: "operators2",
1820
1827
  Tex: "\\subset",
1821
1828
  mirror: true,
1829
+ displayMirror: false,
1822
1830
  Label: "\u2282",
1823
1831
  title: "\u0645\u062C\u0645\u0648\u0639\u0629 \u062C\u0632\u0626\u064A\u0629 \u0645\u0646",
1824
1832
  svg_path: null
@@ -1828,6 +1836,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1828
1836
  category: "operators2",
1829
1837
  Tex: "\\supset",
1830
1838
  mirror: true,
1839
+ displayMirror: false,
1831
1840
  Label: "\u2283",
1832
1841
  title: "\u0645\u062C\u0645\u0648\u0639\u0629 \u0634\u0627\u0645\u0644\u0629 \u0644\u0640",
1833
1842
  svg_path: null
@@ -1837,6 +1846,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1837
1846
  category: "operators2",
1838
1847
  Tex: "\\subseteq",
1839
1848
  mirror: true,
1849
+ displayMirror: false,
1840
1850
  Label: "\u2286",
1841
1851
  title: "\u0645\u062C\u0645\u0648\u0639\u0629 \u062C\u0632\u0626\u064A\u0629 \u0623\u0648 \u062A\u0633\u0627\u0648\u064A",
1842
1852
  svg_path: null
@@ -1846,6 +1856,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1846
1856
  category: "operators2",
1847
1857
  Tex: "\\supseteq",
1848
1858
  mirror: true,
1859
+ displayMirror: false,
1849
1860
  Label: "\u2287",
1850
1861
  title: "\u0645\u062C\u0645\u0648\u0639\u0629 \u0634\u0627\u0645\u0644\u0629 \u0623\u0648 \u062A\u0633\u0627\u0648\u064A",
1851
1862
  svg_path: null
@@ -1855,6 +1866,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1855
1866
  category: "operators2",
1856
1867
  Tex: "\\cap",
1857
1868
  mirror: false,
1869
+ displayMirror: true,
1858
1870
  Label: "\u2229",
1859
1871
  title: "\u062A\u0642\u0627\u0637\u0639",
1860
1872
  svg_path: null
@@ -1864,6 +1876,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1864
1876
  category: "operators2",
1865
1877
  Tex: "\\cup",
1866
1878
  mirror: false,
1879
+ displayMirror: true,
1867
1880
  Label: "\u222A",
1868
1881
  title: "\u0627\u062A\u062D\u0627\u062F",
1869
1882
  svg_path: null
@@ -1873,6 +1886,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1873
1886
  category: "operators2",
1874
1887
  Tex: "\\emptyset",
1875
1888
  mirror: false,
1889
+ displayMirror: true,
1876
1890
  Label: "\u2205",
1877
1891
  title: "\u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u062E\u0627\u0644\u064A\u0629",
1878
1892
  svg_path: null
@@ -1882,6 +1896,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1882
1896
  category: "operators2",
1883
1897
  Tex: "\\nsubseteq",
1884
1898
  mirror: true,
1899
+ displayMirror: false,
1885
1900
  Label: "\u2288",
1886
1901
  title: "\u0644\u064A\u0633\u062A \u0645\u062C\u0645\u0648\u0639\u0629 \u062C\u0632\u0626\u064A\u0629 \u0623\u0648 \u062A\u0633\u0627\u0648\u064A",
1887
1902
  svg_path: null
@@ -1891,6 +1906,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
1891
1906
  category: "operators2",
1892
1907
  Tex: "\\nsupseteq",
1893
1908
  mirror: true,
1909
+ displayMirror: false,
1894
1910
  Label: "\u2289",
1895
1911
  title: "\u0644\u064A\u0633\u062A \u0645\u062C\u0645\u0648\u0639\u0629 \u0634\u0627\u0645\u0644\u0629 \u0623\u0648 \u062A\u0633\u0627\u0648\u064A",
1896
1912
  svg_path: null
@@ -2102,6 +2118,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
2102
2118
  category: "integrals",
2103
2119
  Tex: "\\iint",
2104
2120
  mirror: true,
2121
+ displayMirror: false,
2105
2122
  Label: "\u222C",
2106
2123
  title: "\u062A\u0643\u0627\u0645\u0644 \u0645\u0632\u062F\u0648\u062C",
2107
2124
  svg_path: null
@@ -2111,6 +2128,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
2111
2128
  category: "integrals",
2112
2129
  Tex: "\\iiint",
2113
2130
  mirror: true,
2131
+ displayMirror: false,
2114
2132
  Label: "\u222D",
2115
2133
  title: "\u062A\u0643\u0627\u0645\u0644 \u062B\u0644\u0627\u062B\u064A",
2116
2134
  svg_path: null
@@ -2120,6 +2138,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
2120
2138
  category: "integrals",
2121
2139
  Tex: "\\iiiint",
2122
2140
  mirror: true,
2141
+ displayMirror: false,
2123
2142
  Label: "\u2A0C",
2124
2143
  title: "\u062A\u0643\u0627\u0645\u0644 \u0631\u0628\u0627\u0639\u064A",
2125
2144
  svg_path: null
@@ -2129,6 +2148,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
2129
2148
  category: "integrals",
2130
2149
  Tex: "\\oint",
2131
2150
  mirror: true,
2151
+ displayMirror: false,
2132
2152
  Label: "\u222E",
2133
2153
  title: "\u062A\u0643\u0627\u0645\u0644 \u0645\u063A\u0644\u0642",
2134
2154
  svg_path: null
@@ -2138,6 +2158,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
2138
2158
  category: "integrals",
2139
2159
  Tex: "\\oiint",
2140
2160
  mirror: true,
2161
+ displayMirror: false,
2141
2162
  Label: "\u222F",
2142
2163
  title: "\u062A\u0643\u0627\u0645\u0644 \u0633\u0637\u062D\u064A \u0645\u063A\u0644\u0642",
2143
2164
  svg_path: null
@@ -2147,6 +2168,7 @@ mjx-container[jax="SVG"] svg .butex-preview-mirror {
2147
2168
  category: "integrals",
2148
2169
  Tex: "\\oiiint",
2149
2170
  mirror: true,
2171
+ displayMirror: false,
2150
2172
  Label: "\u2230",
2151
2173
  title: "\u062A\u0643\u0627\u0645\u0644 \u062D\u062C\u0645\u064A \u0645\u063A\u0644\u0642",
2152
2174
  svg_path: null
@@ -5868,7 +5890,10 @@ ${ATOMIC_OPERATOR_COMMAND_CSS}
5868
5890
  // src/mathjax/svgPatcher.ts
5869
5891
  var SVG_ARABSQRT_SELECTOR = 'mjx-container[jax="SVG"] svg .mjx-rtl-mirror[data-mjx-rtl-root="true"]';
5870
5892
  var ARABSQRT_SELECTOR = '.mjx-rtl-mirror[data-mjx-rtl-root="true"]';
5893
+ var SVG_PREVIEW_MIRROR_SELECTOR = 'mjx-container[jax="SVG"] svg .butex-preview-mirror';
5894
+ var PREVIEW_MIRROR_SELECTOR = ".butex-preview-mirror";
5871
5895
  var PATCHED_ATTR = "data-butex-svg-arabsqrt";
5896
+ var MIRROR_PATCHED_ATTR = "data-butex-svg-mirror";
5872
5897
  var ROOT_INDEX_SCALE = 0.72;
5873
5898
  var ROOT_INDEX_GAP_FACTOR = 0.08;
5874
5899
  var ROOT_INDEX_MIN_GAP = 2;
@@ -5893,11 +5918,12 @@ ${ATOMIC_OPERATOR_COMMAND_CSS}
5893
5918
  return Array.from(element.children).filter((child) => child instanceof SVGElement);
5894
5919
  }
5895
5920
  function boxFor(element) {
5896
- if (!(element instanceof SVGGraphicsElement) || typeof element.getBBox !== "function") {
5921
+ const candidate = element;
5922
+ if (typeof candidate.getBBox !== "function") {
5897
5923
  return null;
5898
5924
  }
5899
5925
  try {
5900
- const box = element.getBBox();
5926
+ const box = candidate.getBBox();
5901
5927
  return {
5902
5928
  x: box.x,
5903
5929
  y: box.y,
@@ -6141,6 +6167,31 @@ ${ATOMIC_OPERATOR_COMMAND_CSS}
6141
6167
  root.setAttribute(PATCHED_ATTR, "patched");
6142
6168
  rootNode.setAttribute(PATCHED_ATTR, "patched");
6143
6169
  }
6170
+ function patchPreviewMirror(element) {
6171
+ if (element.getAttribute(MIRROR_PATCHED_ATTR) === "patched") {
6172
+ return;
6173
+ }
6174
+ const box = boxFor(element);
6175
+ if (!box || box.width <= 0) {
6176
+ return;
6177
+ }
6178
+ const [tx, ty] = readTranslate(element);
6179
+ const mirrorX = tx + 2 * box.x + box.width;
6180
+ element.setAttribute(
6181
+ "transform",
6182
+ `translate(${roundSvg(mirrorX)},${roundSvg(ty)}) scale(-1,1)`
6183
+ );
6184
+ element.setAttribute(MIRROR_PATCHED_ATTR, "patched");
6185
+ }
6186
+ function collectPreviewMirrors(root) {
6187
+ let mirrors = Array.from(root.querySelectorAll(SVG_PREVIEW_MIRROR_SELECTOR));
6188
+ if (!mirrors.length) {
6189
+ mirrors = Array.from(root.querySelectorAll(PREVIEW_MIRROR_SELECTOR)).filter((candidate) => {
6190
+ return candidate.closest('mjx-container[jax="SVG"]') != null;
6191
+ });
6192
+ }
6193
+ return mirrors;
6194
+ }
6144
6195
  function patchBuTeXSvgMath(root) {
6145
6196
  if (typeof root.querySelectorAll !== "function") {
6146
6197
  return;
@@ -6152,6 +6203,7 @@ ${ATOMIC_OPERATOR_COMMAND_CSS}
6152
6203
  });
6153
6204
  }
6154
6205
  roots.sort((a, b) => rootDepth(b) - rootDepth(a)).forEach((arabSqrtRoot) => patchArabSqrtRoot(arabSqrtRoot));
6206
+ collectPreviewMirrors(root).forEach((mirror) => patchPreviewMirror(mirror));
6155
6207
  }
6156
6208
 
6157
6209
  // src/mathjax/renderIsland.ts