Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | 78x 78x 1514x 1514x 78x 20x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x | /**
* Returns grouped context-menu items for a MathLive mathfield instance.
* Uses MathLive's submenu type to categorize symbols by mathematical domain.
*
* @param {object} mathfield - The MathLive mathfield element reference.
* @returns {Array} Array of submenu item objects compatible with mathfield.menuItems.
*/
const getMathfieldMenuItems = (mathfield) => {
const insert = (latex) => {
mathfield.insert(latex);
mathfield.focus();
};
return [
{
type: "submenu",
label: "Arithmetic",
submenu: [
{ label: "Plus +", onMenuSelect: () => insert("+") },
{ label: "Minus −", onMenuSelect: () => insert("-") },
{ label: "Plus/Minus ±", onMenuSelect: () => insert("\\pm") },
{ label: "Multiply ×", onMenuSelect: () => insert("\\times") },
{ label: "Divide ÷", onMenuSelect: () => insert("\\div") },
],
},
{
type: "submenu",
label: "Comparison",
submenu: [
{ label: "Equal =", onMenuSelect: () => insert("=") },
{ label: "Not Equal ≠", onMenuSelect: () => insert("\\neq") },
{ label: "Less Than <", onMenuSelect: () => insert("<") },
{ label: "Greater Than >", onMenuSelect: () => insert(">") },
{ label: "Less or Equal ≤", onMenuSelect: () => insert("\\leq") },
{ label: "Greater or Equal ≥", onMenuSelect: () => insert("\\geq") },
{ label: "Approximately ≈", onMenuSelect: () => insert("\\approx") },
{ label: "Congruent ≅", onMenuSelect: () => insert("\\cong") },
{ label: "Similar ∼", onMenuSelect: () => insert("\\sim") },
{ label: "Proportional ∝", onMenuSelect: () => insert("\\propto") },
],
},
{
type: "submenu",
label: "Geometry",
submenu: [
{ label: "Degree °", onMenuSelect: () => insert("\\degree") },
{ label: "Angle ∠", onMenuSelect: () => insert("\\angle") },
{ label: "Perpendicular ⊥", onMenuSelect: () => insert("\\perp") },
{ label: "Parallel ∥", onMenuSelect: () => insert("\\parallel") },
{ label: "Triangle △", onMenuSelect: () => insert("\\triangle") },
{ label: "Circle ○", onMenuSelect: () => insert("\\circ") },
{ label: "Line Segment —", onMenuSelect: () => insert("\\overline{AB}") },
{ label: "Ray →", onMenuSelect: () => insert("\\overrightarrow{AB}") },
],
},
{
type: "submenu",
label: "Greek Letters",
submenu: [
{ label: "Alpha α", onMenuSelect: () => insert("\\alpha") },
{ label: "Beta β", onMenuSelect: () => insert("\\beta") },
{ label: "Gamma γ", onMenuSelect: () => insert("\\gamma") },
{ label: "Delta δ", onMenuSelect: () => insert("\\delta") },
{ label: "Epsilon ε", onMenuSelect: () => insert("\\epsilon") },
{ label: "Theta θ", onMenuSelect: () => insert("\\theta") },
{ label: "Lambda λ", onMenuSelect: () => insert("\\lambda") },
{ label: "Mu μ", onMenuSelect: () => insert("\\mu") },
{ label: "Pi π", onMenuSelect: () => insert("\\pi") },
{ label: "Sigma σ", onMenuSelect: () => insert("\\sigma") },
{ label: "Phi φ", onMenuSelect: () => insert("\\phi") },
{ label: "Omega ω", onMenuSelect: () => insert("\\omega") },
],
},
{
type: "submenu",
label: "Trigonometry",
submenu: [
{ label: "Sine sin", onMenuSelect: () => insert("\\sin") },
{ label: "Cosine cos", onMenuSelect: () => insert("\\cos") },
{ label: "Tangent tan", onMenuSelect: () => insert("\\tan") },
{ label: "Cosecant csc", onMenuSelect: () => insert("\\csc") },
{ label: "Secant sec", onMenuSelect: () => insert("\\sec") },
{ label: "Cotangent cot", onMenuSelect: () => insert("\\cot") },
{ label: "Arcsin sin⁻¹", onMenuSelect: () => insert("\\arcsin") },
{ label: "Arccos cos⁻¹", onMenuSelect: () => insert("\\arccos") },
{ label: "Arctan tan⁻¹", onMenuSelect: () => insert("\\arctan") },
],
},
{
type: "submenu",
label: "Calculus",
submenu: [
{ label: "Infinity ∞", onMenuSelect: () => insert("\\infty") },
{ label: "Summation ∑", onMenuSelect: () => insert("\\sum") },
{ label: "Product ∏", onMenuSelect: () => insert("\\prod") },
{ label: "Integral ∫", onMenuSelect: () => insert("\\int") },
{ label: "Double Integral ∬", onMenuSelect: () => insert("\\iint") },
{ label: "Partial ∂", onMenuSelect: () => insert("\\partial") },
{ label: "Nabla ∇", onMenuSelect: () => insert("\\nabla") },
{ label: "Limit lim", onMenuSelect: () => insert("\\lim") },
],
},
{
type: "submenu",
label: "Set Theory",
submenu: [
{ label: "Subset ⊂", onMenuSelect: () => insert("\\subset") },
{ label: "Superset ⊃", onMenuSelect: () => insert("\\supset") },
{ label: "Subset or Equal ⊆", onMenuSelect: () => insert("\\subseteq") },
{ label: "Element Of ∈", onMenuSelect: () => insert("\\in") },
{ label: "Not Element Of ∉", onMenuSelect: () => insert("\\notin") },
{ label: "Union ∪", onMenuSelect: () => insert("\\cup") },
{ label: "Intersection ∩", onMenuSelect: () => insert("\\cap") },
{ label: "Empty Set ∅", onMenuSelect: () => insert("\\emptyset") },
{ label: "Universal Set 𝒰", onMenuSelect: () => insert("\\mathcal{U}") },
],
},
{
type: "submenu",
label: "Logic",
submenu: [
{ label: "And ∧", onMenuSelect: () => insert("\\land") },
{ label: "Or ∨", onMenuSelect: () => insert("\\lor") },
{ label: "Not ¬", onMenuSelect: () => insert("\\lnot") },
{ label: "For All ∀", onMenuSelect: () => insert("\\forall") },
{ label: "There Exists ∃", onMenuSelect: () => insert("\\exists") },
{ label: "Therefore ∴", onMenuSelect: () => insert("\\therefore") },
{ label: "Because ∵", onMenuSelect: () => insert("\\because") },
{ label: "Implies ⟹", onMenuSelect: () => insert("\\implies") },
{ label: "If and Only If ⟺", onMenuSelect: () => insert("\\iff") },
],
},
{
type: "submenu",
label: "Arrows",
submenu: [
{ label: "Right Arrow →", onMenuSelect: () => insert("\\rightarrow") },
{ label: "Left Arrow ←", onMenuSelect: () => insert("\\leftarrow") },
{ label: "Left-Right Arrow ↔", onMenuSelect: () => insert("\\leftrightarrow") },
{ label: "Up Arrow ↑", onMenuSelect: () => insert("\\uparrow") },
{ label: "Down Arrow ↓", onMenuSelect: () => insert("\\downarrow") },
{ label: "Double Right ⇒", onMenuSelect: () => insert("\\Rightarrow") },
{ label: "Double Left ⇐", onMenuSelect: () => insert("\\Leftarrow") },
{ label: "Double Left-Right ⇔", onMenuSelect: () => insert("\\Leftrightarrow") },
{ label: "Maps To ↦", onMenuSelect: () => insert("\\mapsto") },
],
},
{
type: "submenu",
label: "Number Sets",
submenu: [
{ label: "Natural Numbers ℕ", onMenuSelect: () => insert("\\mathbb{N}") },
{ label: "Integers ℤ", onMenuSelect: () => insert("\\mathbb{Z}") },
{ label: "Rationals ℚ", onMenuSelect: () => insert("\\mathbb{Q}") },
{ label: "Reals ℝ", onMenuSelect: () => insert("\\mathbb{R}") },
{ label: "Complex ℂ", onMenuSelect: () => insert("\\mathbb{C}") },
],
},
];
};
export default getMathfieldMenuItems;
|