ckeditor-math-chem-editor 1.0.0 → 1.0.2
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/package.json +2 -2
- package/src/Ckeditor.jsx +735 -735
package/src/Ckeditor.jsx
CHANGED
|
@@ -159,17 +159,17 @@ function bindWidgetClickTarget(editor, container) {
|
|
|
159
159
|
container.addEventListener('click', onPointerDown, true);
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
/*
|
|
163
|
-
Symbol groups
|
|
164
|
-
|
|
162
|
+
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
|
|
163
|
+
Symbol groups — same as CustomMathEditor.jsx
|
|
164
|
+
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
|
|
165
165
|
const MATH_GROUPS = [
|
|
166
166
|
{
|
|
167
|
-
label: '
|
|
167
|
+
label: '√(□)', items: [
|
|
168
168
|
// 1. Root & Fraction Group (3 cols)
|
|
169
|
-
{ label: '
|
|
170
|
-
{ label: '
|
|
171
|
-
{ label: '
|
|
172
|
-
{ label: '
|
|
169
|
+
{ label: '√', insert: '\\sqrt{#0}', title: 'Square Root' },
|
|
170
|
+
{ label: '√□', insert: '\\sqrt{#0}', title: 'Root with Placeholder' },
|
|
171
|
+
{ label: 'â¿âˆš', insert: '\\sqrt[#?]{#0}', title: 'Nth Root' },
|
|
172
|
+
{ label: 'â–¡/â–¡', insert: '\\frac{#0}{#?}', title: 'Fraction' },
|
|
173
173
|
|
|
174
174
|
{ type: 'sep', cols: 2 },
|
|
175
175
|
// 2. Brackets & Delimiters Group (2 cols)
|
|
@@ -180,43 +180,43 @@ const MATH_GROUPS = [
|
|
|
180
180
|
{ type: 'sep', cols: 2 },
|
|
181
181
|
// 3. Basic Arithmetic Operators (3 cols)
|
|
182
182
|
{ label: '+', insert: '+' },
|
|
183
|
-
{ label: '
|
|
184
|
-
{ label: '
|
|
185
|
-
{ label: '
|
|
186
|
-
{ label: '
|
|
183
|
+
{ label: '−', insert: '-' },
|
|
184
|
+
{ label: '×', insert: '\\times' },
|
|
185
|
+
{ label: '÷', insert: '\\div' },
|
|
186
|
+
{ label: '±', insert: '\\pm' },
|
|
187
187
|
|
|
188
188
|
{ type: 'sep', cols: 4 },
|
|
189
189
|
// 4. Comparison & Relation Operators (4 cols)
|
|
190
|
-
{ label: '
|
|
191
|
-
{ label: '
|
|
192
|
-
{ label: '
|
|
193
|
-
{ label: '
|
|
194
|
-
{ label: '
|
|
195
|
-
{ label: '
|
|
196
|
-
{ label: '
|
|
197
|
-
{ label: '
|
|
190
|
+
{ label: '≥', insert: '\\geq' },
|
|
191
|
+
{ label: '≤', insert: '\\leq' },
|
|
192
|
+
{ label: '∩', insert: '\\cap' },
|
|
193
|
+
{ label: '∪', insert: '\\cup' },
|
|
194
|
+
{ label: '≠', insert: '\\neq' },
|
|
195
|
+
{ label: '∈', insert: '\\in' },
|
|
196
|
+
{ label: '≈', insert: '\\approx' },
|
|
197
|
+
{ label: '∞', insert: '\\infty' },
|
|
198
198
|
|
|
199
199
|
{ type: 'sep', cols: 2 },
|
|
200
200
|
// 5. Greek Letters (2 cols)
|
|
201
|
-
{ label: '
|
|
202
|
-
{ label: '
|
|
203
|
-
{ label: '
|
|
201
|
+
{ label: 'α', insert: '\\alpha' },
|
|
202
|
+
{ label: 'β', insert: '\\beta' },
|
|
203
|
+
{ label: 'Ï€', insert: '\\pi' },
|
|
204
204
|
|
|
205
205
|
{ type: 'sep', cols: 1 },
|
|
206
206
|
// 6. Undo / Redo (1 col)
|
|
207
|
-
{ label: '
|
|
208
|
-
{ label: '
|
|
207
|
+
{ label: '↶', action: 'UNDO', title: 'Undo' },
|
|
208
|
+
{ label: '↷', action: 'REDO', title: 'Redo' },
|
|
209
209
|
|
|
210
210
|
{ type: 'sep', cols: 2 },
|
|
211
211
|
// 7. Formatting Group (2 cols)
|
|
212
212
|
{ label: 'B', action: 'BOLD', cls: 'template', title: 'Bold' },
|
|
213
|
-
{ label: '
|
|
214
|
-
{ label: '
|
|
213
|
+
{ label: '〖Ω〗', title: 'Insert Special Character', action: 'SPECIAL_CHARS' },
|
|
214
|
+
{ label: '🅰ï¸', action: 'TEXT_COLOR', title: 'Text Color' },
|
|
215
215
|
|
|
216
216
|
{ type: 'sep', cols: 1 },
|
|
217
217
|
// 8. Text Style Group (1 col)
|
|
218
|
-
{ label: 'T
|
|
219
|
-
{ label: 'T
|
|
218
|
+
{ label: 'Tâ‚', insert: '#0_{#?}', title: 'Subscript' },
|
|
219
|
+
{ label: 'T¹', insert: '#0^{#?}', title: 'Superscript' },
|
|
220
220
|
|
|
221
221
|
{ type: 'sep', cols: 1 },
|
|
222
222
|
// 9. Font Controls (1 col)
|
|
@@ -225,56 +225,56 @@ const MATH_GROUPS = [
|
|
|
225
225
|
]
|
|
226
226
|
},
|
|
227
227
|
{
|
|
228
|
-
label: '
|
|
229
|
-
{ label: '
|
|
230
|
-
{ label: '
|
|
231
|
-
{ label: '\\', insert: '\\backslash' }, { label: '
|
|
232
|
-
{ label: '
|
|
233
|
-
{ label: '
|
|
234
|
-
{ label: '
|
|
235
|
-
{ label: '
|
|
236
|
-
{ label: '
|
|
237
|
-
{ label: '
|
|
238
|
-
{ label: '
|
|
239
|
-
{ label: '
|
|
240
|
-
{ label: '
|
|
241
|
-
{ label: '
|
|
242
|
-
{ label: '
|
|
243
|
-
{ label: '
|
|
244
|
-
{ label: '
|
|
245
|
-
{ label: '
|
|
246
|
-
{ label: '
|
|
247
|
-
{ label: '
|
|
228
|
+
label: '±×÷', items: [
|
|
229
|
+
{ label: '±', insert: '\\pm' }, { label: '∓', insert: '\\mp' },
|
|
230
|
+
{ label: '×', insert: '\\times' }, { label: '÷', insert: '\\div' },
|
|
231
|
+
{ label: '\\', insert: '\\backslash' }, { label: '﹨', insert: '﹨' },
|
|
232
|
+
{ label: '≠', insert: '\\neq' }, { label: '≤', insert: '\\leq' },
|
|
233
|
+
{ label: '≥', insert: '\\geq' }, { label: '≈', insert: '\\approx' },
|
|
234
|
+
{ label: '≅', insert: '\\cong' }, { label: 'âˆ', insert: '\\propto' },
|
|
235
|
+
{ label: '≡', insert: '\\equiv' }, { label: 'sim', insert: '\\sim' },
|
|
236
|
+
{ label: '∞', insert: '\\infty' }, { label: '∑', insert: '\\sum' },
|
|
237
|
+
{ label: 'âˆ', insert: '\\prod' },
|
|
238
|
+
{ label: '∫', insert: '\\int' }, { label: '∮', insert: '\\oint' },
|
|
239
|
+
{ label: '∂', insert: '\\partial' }, { label: '∇', insert: '\\nabla' },
|
|
240
|
+
{ label: '⊕', insert: '\\oplus' }, { label: '⊗', insert: '\\otimes' },
|
|
241
|
+
{ label: '⊙', insert: '\\odot' },
|
|
242
|
+
{ label: '∈', insert: '\\in' }, { label: '∉', insert: '\\notin' },
|
|
243
|
+
{ label: '⊂', insert: '\\subset' }, { label: '∪', insert: '\\cup' },
|
|
244
|
+
{ label: '∩', insert: '\\cap' }, { label: '∅', insert: '\\emptyset' },
|
|
245
|
+
{ label: '√', insert: '\\sqrt{#0}' }, { label: '∛', insert: '\\sqrt[3]{#0}' },
|
|
246
|
+
{ label: '□±□', insert: '#? \\pm #?' }, { label: '□≠□', insert: '#? \\neq #?' },
|
|
247
|
+
{ label: '□≈□', insert: '#? \\approx #?' },
|
|
248
248
|
]
|
|
249
249
|
},
|
|
250
250
|
{
|
|
251
|
-
label: '
|
|
251
|
+
label: 'â–¡/â–¡', isTemplate: true, items: [
|
|
252
252
|
{ label: 'a/b', insert: '\\frac{#0}{#?}', title: 'Fraction', icon: 'fraction-template-image' },
|
|
253
|
-
{ label: '
|
|
253
|
+
{ label: 'â–¡/â–¡', insert: '{#0}/{#?}', title: 'Bevelled Fraction', cls: 'green-template' },
|
|
254
254
|
{ label: 'a/b', insert: '{\\scriptstyle \\frac{#0}{#?}}', title: 'Small Fraction', icon: 'fraction-template-image', cls: 'small-template' },
|
|
255
|
-
{ label: '
|
|
255
|
+
{ label: 'â–¡/â–¡', insert: '{\\scriptstyle {#0}/{#?}}', title: 'Small Bevelled Fraction', cls: 'green-template small-template' },
|
|
256
256
|
{ type: 'sep', cols: 4 },
|
|
257
|
-
{ label: '
|
|
258
|
-
{ label: '
|
|
259
|
-
{ label: 'x
|
|
260
|
-
{ label: '
|
|
257
|
+
{ label: '√x', insert: '\\sqrt{#0}', title: 'Square Root', icon: 'sqrt-template-image' },
|
|
258
|
+
{ label: 'â¿âˆšx', insert: '\\sqrt[#?]{#0}', title: 'Nth Root', icon: 'nth-root-template-image' },
|
|
259
|
+
{ label: 'xâ¿', insert: '#0^{#?}', title: 'Superscript', icon: 'superscript-template-image' },
|
|
260
|
+
{ label: 'ˡ□', insert: '{}^{#?}#?', cls: 'template', directInsert: true, title: 'Left Superscript', icon: 'left-sup-template-image' },
|
|
261
261
|
|
|
262
|
-
{ label: '
|
|
263
|
-
{ label: '
|
|
264
|
-
{ label: 'x
|
|
265
|
-
{ label: '
|
|
262
|
+
{ label: 'â–¡^â–¡_â–¡', insert: '#?^{#?}_{#?}', cls: 'template', directInsert: true, title: 'Right Superscript and Subscript', icon: 'right-sup-sub-template-image' },
|
|
263
|
+
{ label: 'ˡₗ□', insert: '{}^{#?}_{#?}#?', cls: 'template', directInsert: true, title: 'Left Superscript and Subscript', icon: 'left-sup-sub-template-image' },
|
|
264
|
+
{ label: 'xâ‚™', insert: '#0_{#?}', title: 'Subscript', icon: 'subscript-template-image' },
|
|
265
|
+
{ label: 'â‚—â–¡', insert: '{}_{#?}#?', cls: 'template', directInsert: true, title: 'Left Subscript', icon: 'left-sub-template-image' },
|
|
266
266
|
{ type: 'sep', cols: 3 },
|
|
267
|
-
{ label: '
|
|
268
|
-
{ label: '
|
|
269
|
-
{ label: '
|
|
267
|
+
{ label: 'â–¡\nâ–¡', insert: '\\overset{#?}{#?}', cls: 'template', directInsert: true, title: 'Overset', icon: 'overset-template-image' },
|
|
268
|
+
{ label: 'â–¡\nâ–¡\nâ–¡', insert: '\\overset{#?}{\\underset{#?}{#?}}', cls: 'template', directInsert: true, title: 'Over and Under', icon: 'over-under-template-image' },
|
|
269
|
+
{ label: 'â–¡\nâ–¡', insert: '\\underset{#?}{#?}', cls: 'template', directInsert: true, title: 'Underset', icon: 'underset-template-image' },
|
|
270
270
|
{ type: 'sep', cols: 2 },
|
|
271
|
-
{ label: '
|
|
272
|
-
{ label: '
|
|
271
|
+
{ label: 'â–¡âŸâ–¡', insert: '\\underbrace{#?}_{#?}', cls: 'template', directInsert: true, title: 'Underbrace', icon: 'underbrace-template-image' },
|
|
272
|
+
{ label: 'â–¡âžâ–¡', insert: '\\overbrace{#?}^{#?}', cls: 'template', directInsert: true, title: 'Overbrace', icon: 'overbrace-template-image' },
|
|
273
273
|
{ type: 'sep', cols: 4 },
|
|
274
|
-
{ label: '
|
|
275
|
-
{ label: '
|
|
276
|
-
{ label: '
|
|
277
|
-
{ label: '
|
|
274
|
+
{ label: 'â–¡\nâ–¯\nâ–¡', insert: '\\displaystyle{\\underset{\\htmlStyle{font-size:1.1em;display:inline-block;padding-top:0.34em;line-height:1.15}{#?}}{\\overset{\\htmlStyle{font-size:1.1em;display:inline-block;padding-bottom:0.34em;line-height:1.15}{#?}}{\\htmlStyle{font-size:1.45em;line-height:1.1}{#0}}}}', cls: 'template', directInsert: true, title: 'Operator With Upper and Lower Limits', icon: 'operator-limits-both-template-image' },
|
|
275
|
+
{ label: 'â–¯\nâ–¡', insert: '\\displaystyle{\\underset{\\htmlStyle{font-size:1.1em;display:inline-block;padding-top:0.34em;line-height:1.15}{#?}}{\\htmlStyle{font-size:1.45em;line-height:1.1}{#0}}}', cls: 'template', directInsert: true, title: 'Operator With Lower Limit', icon: 'operator-lower-limit-template-image' },
|
|
276
|
+
{ label: 'â–¯^â–¡_â–¡', insert: '\\displaystyle{\\htmlStyle{font-size:1.45em;line-height:1.1}{#0}^{\\htmlStyle{font-size:1.1em;display:inline-block;padding-bottom:0.26em;line-height:1.15}{#?}}_{\\htmlStyle{font-size:1.1em;display:inline-block;padding-top:0.26em;line-height:1.15}{#?}}}', cls: 'template', directInsert: true, title: 'Operator With Right Superscript and Subscript', icon: 'operator-right-sup-sub-template-image' },
|
|
277
|
+
{ label: 'â–¯_â–¡', insert: '\\displaystyle{\\htmlStyle{font-size:1.45em;line-height:1.1}{#0}_{\\htmlStyle{font-size:1.1em;display:inline-block;padding-top:0.26em;line-height:1.15}{#?}}}', cls: 'template', directInsert: true, title: 'Operator With Right Subscript', icon: 'operator-right-sub-template-image' },
|
|
278
278
|
{ type: 'sep', cols: 3 },
|
|
279
279
|
{ label: 'hphantom', insert: '\\hphantom{0}', cls: 'template', directInsert: true, title: 'Horizontal Phantom Space', icon: 'hphantom-space-template-image' },
|
|
280
280
|
{ label: 'thin-space', insert: '\\,', cls: 'template', directInsert: true, title: 'Thin Space', icon: 'thin-space-template-image' },
|
|
@@ -289,11 +289,11 @@ const MATH_GROUPS = [
|
|
|
289
289
|
{ label: 'sin(x)', insert: '\\sin\\left(#0\\right)' },
|
|
290
290
|
{ label: 'cos(x)', insert: '\\cos\\left(#0\\right)' },
|
|
291
291
|
{ label: 'tan(x)', insert: '\\tan\\left(#0\\right)' },
|
|
292
|
-
{ label: 'sin
|
|
293
|
-
{ label: 'tan
|
|
294
|
-
{ label: 'sin
|
|
295
|
-
{ label: 'cos
|
|
296
|
-
{ label: 'tan
|
|
292
|
+
{ label: 'sinâ»Â¹', insert: '\\sin^{-1}' }, { label: 'cosâ»Â¹', insert: '\\cos^{-1}' },
|
|
293
|
+
{ label: 'tanâ»Â¹', insert: '\\tan^{-1}' },
|
|
294
|
+
{ label: 'sin²x', insert: '\\sin^{2}\\left(#0\\right)' },
|
|
295
|
+
{ label: 'cos²x', insert: '\\cos^{2}\\left(#0\\right)' },
|
|
296
|
+
{ label: 'tan²x', insert: '\\tan^{2}\\left(#0\\right)' },
|
|
297
297
|
{ label: 'sinh', insert: '\\sinh' }, { label: 'cosh', insert: '\\cosh' },
|
|
298
298
|
{ label: 'tanh', insert: '\\tanh' },
|
|
299
299
|
{ label: 'log', insert: '\\log' }, { label: 'ln', insert: '\\ln' },
|
|
@@ -301,52 +301,52 @@ const MATH_GROUPS = [
|
|
|
301
301
|
]
|
|
302
302
|
},
|
|
303
303
|
{
|
|
304
|
-
label: '
|
|
305
|
-
{ label: '
|
|
306
|
-
{ label: '
|
|
307
|
-
{ label: '
|
|
308
|
-
{ label: '
|
|
304
|
+
label: '→', items: [
|
|
305
|
+
{ label: '→', insert: '\\rightarrow' }, { label: 'â†', insert: '\\leftarrow' },
|
|
306
|
+
{ label: '↔', insert: '\\leftrightarrow' }, { label: '⇒', insert: '\\Rightarrow' },
|
|
307
|
+
{ label: 'â‡', insert: '\\Leftarrow' }, { label: '⇔', insert: '\\Leftrightarrow' },
|
|
308
|
+
{ label: '↤', insert: '\\mapsfrom' }, { label: '↦', insert: '\\mapsto' },
|
|
309
309
|
{ label: '|', action: 'ARROW_PICKER', title: 'More Arrows', icon: 'vertical-line-picker-template-image', cls: 'arrow-picker-tool' },
|
|
310
310
|
{ type: 'sep', cols: 3 },
|
|
311
|
-
{ label: '
|
|
312
|
-
{ label: '
|
|
313
|
-
{ label: '
|
|
314
|
-
{ label: '
|
|
315
|
-
{ label: '
|
|
311
|
+
{ label: 'â‹®', insert: '\\vdots', title: 'Vertical ellipsis' },
|
|
312
|
+
{ label: 'â‹°', insert: 'â‹°', title: 'Up-right diagonal ellipsis' },
|
|
313
|
+
{ label: '…', insert: '\\ldots', title: 'Horizontal ellipsis' },
|
|
314
|
+
{ label: '⋱', insert: '\\ddots', title: 'Down-right diagonal ellipsis' },
|
|
315
|
+
{ label: '⋯', insert: '\\cdots', title: 'Midline ellipsis' },
|
|
316
316
|
{ type: 'sep', cols: 3 },
|
|
317
317
|
{ label: '-', insert: '-', title: 'Short dash' },
|
|
318
|
-
{ label: '
|
|
319
|
-
{ label: '
|
|
318
|
+
{ label: '–', insert: '–', title: 'Dash' },
|
|
319
|
+
{ label: '—', insert: '—', title: 'Long dash' },
|
|
320
320
|
|
|
321
321
|
{ type: 'sep', cols: 3 },
|
|
322
|
-
{ label: 'A
|
|
323
|
-
{ label: 'A
|
|
324
|
-
{ label: '
|
|
325
|
-
{ label: '
|
|
326
|
-
{ label: 'A
|
|
327
|
-
{ label: 'A
|
|
322
|
+
{ label: 'A→', insert: '\\xrightarrow{#0}', title: 'Arrow with label above', icon: 'arrow-label-right-above' },
|
|
323
|
+
{ label: 'Aâ†', insert: '\\xleftarrow{#0}', title: 'Left arrow with label above', icon: 'arrow-label-left-above' },
|
|
324
|
+
{ label: '→A', insert: '\\xrightarrow[#?]{}', title: 'Arrow with label below', icon: 'arrow-label-right-below' },
|
|
325
|
+
{ label: 'â†A', insert: '\\xleftarrow[#?]{}', title: 'Left arrow with label below', icon: 'arrow-label-left-below' },
|
|
326
|
+
{ label: 'A→B', insert: '\\xrightarrow[#?]{#0}', title: 'Arrow with labels above and below', icon: 'arrow-label-right-above-below' },
|
|
327
|
+
{ label: 'Aâ†B', insert: '\\xleftarrow[#?]{#0}', title: 'Left arrow with labels above and below', icon: 'arrow-label-left-above-below' },
|
|
328
328
|
{ label: '|', action: 'ARROW_LABEL_PICKER', title: 'More Labelled Arrows', icon: 'vertical-line-picker-template-image', cls: 'arrow-picker-tool arrow-label-picker-tool' },
|
|
329
329
|
|
|
330
330
|
{ type: 'sep', cols: 2 },
|
|
331
|
-
{ label: 'x
|
|
332
|
-
{ label: 'x
|
|
333
|
-
{ label: 'x
|
|
334
|
-
{ label: 'x
|
|
331
|
+
{ label: 'x⇀', insert: '\\overrightharpoon{#0}', title: 'Vector accent', icon: 'accent-harpoon-right' },
|
|
332
|
+
{ label: 'x→', insert: '\\overrightarrow{#0}', title: 'Arrow accent', icon: 'accent-arrow-right' },
|
|
333
|
+
{ label: 'x↔', insert: '\\overleftrightarrow{#0}', title: 'Left-right arrow accent', icon: 'accent-arrow-both' },
|
|
334
|
+
{ label: 'x̄', insert: '\\overline{#0}', title: 'Bar accent', icon: 'accent-bar' },
|
|
335
335
|
]
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
|
-
label: '
|
|
339
|
-
{ label: '
|
|
340
|
-
{ label: '
|
|
341
|
-
{ label: '
|
|
342
|
-
{ label: '
|
|
343
|
-
{ label: '
|
|
344
|
-
{ label: '
|
|
345
|
-
{ label: '
|
|
346
|
-
{ label: '
|
|
347
|
-
{ label: '
|
|
348
|
-
{ label: '
|
|
349
|
-
{ label: '
|
|
338
|
+
label: '∫ ∯', isTemplate: true, items: [
|
|
339
|
+
{ label: '∫', insert: '\\int' }, { label: '∬', insert: '\\iint' },
|
|
340
|
+
{ label: 'âˆ', insert: '\\iiint' }, { label: '∮', insert: '\\oint' },
|
|
341
|
+
{ label: '∯', insert: '\\oiint' }, { label: '∰', insert: '\\oiiint' },
|
|
342
|
+
{ label: '∫dx', insert: '\\int #0 \\, d#?', icon: 'integral-with-differential' },
|
|
343
|
+
{ label: '∫â‚ᵇ', insert: '\\int_{#?}^{#?} #0 \\, d#?', icon: 'integral-with-limits-differential' },
|
|
344
|
+
{ label: '∫∫dA', insert: '\\iint_{#?} #0 \\, dA', title: 'Double Integral with Area Element', icon: 'double-integral-area-template-image' },
|
|
345
|
+
{ label: '∮C', insert: '\\oint_{#?} #0 \\, d#?' },
|
|
346
|
+
{ label: '∫∫∫dV', insert: '\\iiint_{#?} #0 \\, dV' },
|
|
347
|
+
{ label: '∫_C', insert: '\\int_{C} #0 \\, d#?' },
|
|
348
|
+
{ label: '∮_C', insert: '\\oint_{C} #0 \\, d#?' },
|
|
349
|
+
{ label: '∫∫_D', insert: '\\iint_{D} #0 \\, dA' },
|
|
350
350
|
{ label: 'F(b)-F(a)', insert: '\\left[#0\\right]_{#?}^{#?}', title: 'Evaluated Expression', icon: 'evaluated-expression-template-image' },
|
|
351
351
|
{ label: 'u-sub', insert: '\\int #0 \\, du' },
|
|
352
352
|
]
|
|
@@ -358,106 +358,106 @@ const MATH_GROUPS = [
|
|
|
358
358
|
{ label: 'df/dx', insert: '\\frac{df}{dx}' },
|
|
359
359
|
{ label: 'd/dt', insert: '\\frac{d}{dt}' },
|
|
360
360
|
{ label: 'dy/dt', insert: '\\frac{dy}{dt}' },
|
|
361
|
-
{ label: 'd
|
|
362
|
-
{ label: 'd
|
|
363
|
-
{ label: 'd
|
|
364
|
-
{ label: '
|
|
365
|
-
{ label: '
|
|
366
|
-
{ label: '
|
|
367
|
-
{ label: '
|
|
368
|
-
{ label: '
|
|
361
|
+
{ label: 'd²y/dx²', insert: '\\frac{d^{2}y}{dx^{2}}' },
|
|
362
|
+
{ label: 'd²y/dt²', insert: '\\frac{d^{2}y}{dt^{2}}' },
|
|
363
|
+
{ label: 'dâ¿y/dxâ¿', insert: '\\frac{d^{#?}#0}{dx^{#?}}' },
|
|
364
|
+
{ label: '∂/∂x', insert: '\\frac{\\partial}{\\partial x}' },
|
|
365
|
+
{ label: '∂f/∂x', insert: '\\frac{\\partial #0}{\\partial x}' },
|
|
366
|
+
{ label: '∂²f/∂x²', insert: '\\frac{\\partial^{2} #0}{\\partial x^{2}}' },
|
|
367
|
+
{ label: '∂²f/∂y²', insert: '\\frac{\\partial^{2} #0}{\\partial y^{2}}' },
|
|
368
|
+
{ label: '∂²f/∂x∂y', insert: '\\frac{\\partial^{2} #0}{\\partial x \\partial y}' },
|
|
369
369
|
{ label: "f'(x)", insert: '#0^{\\prime}(#?)' },
|
|
370
370
|
{ label: "f''(x)", insert: '#0^{\\prime\\prime}(#?)' },
|
|
371
371
|
{ label: "f'''(x)", insert: '#0^{\\prime\\prime\\prime}(#?)' },
|
|
372
372
|
{ label: "y'", insert: 'y^{\\prime}' }, { label: "y''", insert: 'y^{\\prime\\prime}' },
|
|
373
|
-
{ label: '
|
|
374
|
-
{ label: '
|
|
373
|
+
{ label: 'ẋ', insert: '\\dot{#0}' }, { label: 'áº', insert: '\\ddot{#0}' },
|
|
374
|
+
{ label: '∇f', insert: '\\nabla #0' }, { label: '∇²f', insert: '\\nabla^{2} #0' },
|
|
375
375
|
]
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
label: 'log/ln', isTemplate: true, items: [
|
|
379
379
|
{ label: 'log', insert: '\\log' }, { label: 'ln', insert: '\\ln' },
|
|
380
|
-
{ label: 'log
|
|
381
|
-
{ label: 'log
|
|
382
|
-
{ label: 'log
|
|
383
|
-
{ label: 'log
|
|
380
|
+
{ label: 'logâ‚â‚€', insert: '\\log_{10}' }, { label: 'logâ‚‚', insert: '\\log_{2}' },
|
|
381
|
+
{ label: 'logâ‚', insert: '\\log_{#?}' },
|
|
382
|
+
{ label: 'logâ‚(x)', insert: '\\log_{#?}\\left(#0\\right)' },
|
|
383
|
+
{ label: 'logâ‚â‚€(x)', insert: '\\log_{10}\\left(#0\\right)' },
|
|
384
384
|
{ label: 'ln(x)', insert: '\\ln\\left(#0\\right)' },
|
|
385
385
|
{ label: 'log|x|', insert: '\\log\\left|#0\\right|' },
|
|
386
|
-
{ label: '
|
|
387
|
-
{ label: '10
|
|
388
|
-
{ label: '
|
|
386
|
+
{ label: 'eË£', insert: 'e^{#0}', title: 'e to the Power', icon: 'exp-e-template-image' }, { label: 'eâ±Ë£', insert: 'e^{i #0}' },
|
|
387
|
+
{ label: '10Ë£', insert: '10^{#0}' }, { label: '2Ë£', insert: '2^{#0}' },
|
|
388
|
+
{ label: 'aˣ', insert: '#?^{#0}', title: 'Base to the Power', icon: 'exp-generic-template-image' },
|
|
389
389
|
{ label: 'log(ab)', insert: '\\log\\left(#0 \\cdot #?\\right)' },
|
|
390
390
|
{ label: 'log(a/b)', insert: '\\log\\left(\\frac{#0}{#?}\\right)' },
|
|
391
|
-
{ label: 'log(a
|
|
391
|
+
{ label: 'log(aâ¿)', insert: '\\log\\left(#0^{#?}\\right)' },
|
|
392
392
|
]
|
|
393
393
|
},
|
|
394
394
|
{
|
|
395
|
-
label: '
|
|
395
|
+
label: 'Ï€,e', items: [
|
|
396
396
|
{ label: 'e', insert: 'e' }, { label: 'i', insert: 'i' },
|
|
397
|
-
{ label: '
|
|
398
|
-
{ label: '
|
|
399
|
-
{ label: '
|
|
400
|
-
{ label: '
|
|
401
|
-
{ label: '
|
|
402
|
-
{ label: '
|
|
403
|
-
{ label: '
|
|
404
|
-
{ label: '
|
|
405
|
-
{ label: '
|
|
406
|
-
{ label: '
|
|
407
|
-
{ label: '
|
|
408
|
-
{ label: '
|
|
409
|
-
{ label: '
|
|
410
|
-
{ label: '
|
|
411
|
-
{ label: '
|
|
412
|
-
{ label: '
|
|
413
|
-
{ label: '
|
|
414
|
-
{ label: '
|
|
397
|
+
{ label: 'Ï€', insert: '\\pi' },
|
|
398
|
+
{ label: 'â„', insert: '\\mathbb{R}' }, { label: 'ℤ', insert: '\\mathbb{Z}' },
|
|
399
|
+
{ label: 'ℕ', insert: '\\mathbb{N}' }, { label: 'ℚ', insert: '\\mathbb{Q}' },
|
|
400
|
+
{ label: 'ℂ', insert: '\\mathbb{C}' }, { label: '∅', insert: '\\emptyset' },
|
|
401
|
+
{ label: 'ℵ₀', insert: '\\aleph_0' },
|
|
402
|
+
{ label: 'ξ', insert: '\\xi' },
|
|
403
|
+
{ label: 'Ï', insert: '\\rho' }, { label: 'σ', insert: '\\sigma' },
|
|
404
|
+
{ label: 'Ï„', insert: '\\tau' }, { label: 'Ï…', insert: '\\upsilon' },
|
|
405
|
+
{ label: 'φ', insert: '\\varphi' }, { label: 'χ', insert: '\\chi' },
|
|
406
|
+
{ label: 'ψ', insert: '\\psi' }, { label: 'ω', insert: '\\omega' },
|
|
407
|
+
{ label: 'Γ', insert: '\\Gamma' }, { label: 'Δ', insert: '\\Delta' },
|
|
408
|
+
{ label: 'Θ', insert: '\\Theta' }, { label: 'Λ', insert: '\\Lambda' },
|
|
409
|
+
{ label: 'Ξ', insert: '\\Xi' }, { label: 'Σ', insert: '\\Sigma' },
|
|
410
|
+
{ label: 'Φ', insert: '\\Phi' }, { label: 'Ψ', insert: '\\Psi' },
|
|
411
|
+
{ label: 'Ω', insert: '\\Omega' },
|
|
412
|
+
{ label: 'θᵢ', insert: '\\theta_{#?}' }, { label: 'λₙ', insert: '\\lambda_{#?}' },
|
|
413
|
+
{ label: 'μₓ', insert: '\\mu_{#?}' }, { label: 'σ²', insert: '\\sigma^{2}' },
|
|
414
|
+
{ label: 'Δx', insert: '\\Delta #?' },
|
|
415
415
|
]
|
|
416
416
|
},
|
|
417
417
|
{
|
|
418
|
-
label: '
|
|
419
|
-
{ label: '
|
|
420
|
-
{ label: '
|
|
421
|
-
{ label: '
|
|
422
|
-
{ label: '
|
|
423
|
-
{ label: '
|
|
424
|
-
{ label: '
|
|
425
|
-
{ label: '
|
|
418
|
+
label: '∈∪∩', items: [
|
|
419
|
+
{ label: 'Ω', title: 'Insert Special Character', action: 'SPECIAL_CHARS' },
|
|
420
|
+
{ label: '⊆', insert: '\\subseteq' }, { label: '⊇', insert: '\\supseteq' },
|
|
421
|
+
{ label: '﹨', insert: '﹨' }, { label: '∩', insert: '\\cap' },
|
|
422
|
+
{ label: '∪', insert: '\\cup' }, { label: '∅', insert: '\\emptyset' },
|
|
423
|
+
{ label: '□⊂□', insert: '#? \\subset #?' }, { label: '□⊆□', insert: '#? \\subseteq #?' },
|
|
424
|
+
{ label: '□∈□', insert: '#? \\in #?' }, { label: '□∉□', insert: '#? \\notin #?' },
|
|
425
|
+
{ label: '□∪□', insert: '#? \\cup #?' }, { label: '□∩□', insert: '#? \\cap #?' },
|
|
426
426
|
]
|
|
427
427
|
},
|
|
428
428
|
{
|
|
429
|
-
label: '
|
|
430
|
-
{ label: '
|
|
431
|
-
{ label: '
|
|
432
|
-
{ label: '
|
|
433
|
-
{ label: '
|
|
434
|
-
{ label: '
|
|
435
|
-
{ label: '
|
|
429
|
+
label: '∀∃', items: [
|
|
430
|
+
{ label: '∀', insert: '\\forall' }, { label: '∃', insert: '\\exists' },
|
|
431
|
+
{ label: '¬', insert: '\\neg' }, { label: '∧', insert: '\\land' },
|
|
432
|
+
{ label: '∨', insert: '\\lor' },
|
|
433
|
+
{ label: '□⇒□', insert: '#? \\Rightarrow #?' }, { label: '□⇔□', insert: '#? \\Leftrightarrow #?' },
|
|
434
|
+
{ label: '□∧□', insert: '#? \\land #?' }, { label: '□∨□', insert: '#? \\lor #?' },
|
|
435
|
+
{ label: '¬□', insert: '\\neg #?' },
|
|
436
436
|
]
|
|
437
437
|
},
|
|
438
438
|
{
|
|
439
439
|
label: (
|
|
440
440
|
<>
|
|
441
|
-
|
|
441
|
+
⎡□ □⎤
|
|
442
442
|
</>
|
|
443
443
|
),
|
|
444
444
|
isMatrix: true,
|
|
445
445
|
items: [
|
|
446
|
-
{ label: '
|
|
446
|
+
{ label: 'â–¡', insert: 'matrix', cls: 'template' },
|
|
447
447
|
{ label: '[]', insert: 'bmatrix', cls: 'template' },
|
|
448
448
|
{ label: '||', insert: 'vmatrix', cls: 'template' },
|
|
449
449
|
{ label: '()', insert: 'pmatrix', cls: 'template' },
|
|
450
450
|
{ type: 'sep', cols: 2 },
|
|
451
|
-
{ label: '
|
|
452
|
-
{ label: '
|
|
453
|
-
{ label: '
|
|
454
|
-
{ label: '
|
|
451
|
+
{ label: 'â–¡ \\ â–¡ \\ â–¡', insert: '\\begin{matrix} #? \\\\ #? \\\\ #? \\end{matrix}', cls: 'template', directInsert: true },
|
|
452
|
+
{ label: 'â–¡ â–¡ â–¡', insert: '\\begin{matrix} #? & #? & #? \\end{matrix}', cls: 'template', directInsert: true },
|
|
453
|
+
{ label: 'â–¡ \\ â–¡', insert: '\\begin{bmatrix} #? \\\\ #? \\end{bmatrix}', cls: 'template', directInsert: true },
|
|
454
|
+
{ label: 'â–¡ & â–¡', insert: '\\begin{bmatrix} #? & #? \\end{bmatrix}', cls: 'template', directInsert: true },
|
|
455
455
|
|
|
456
456
|
{ type: 'sep', cols: 2 },
|
|
457
|
-
{ label: '
|
|
458
|
-
{ label: '
|
|
459
|
-
// { label: '
|
|
460
|
-
// { label: '
|
|
457
|
+
{ label: 'â–¡ \\ â–¡', insert: '\\begin{pmatrix} #? \\\\ #? \\end{pmatrix}', cls: 'template', directInsert: true },
|
|
458
|
+
{ label: 'â–¡ & â–¡', insert: '\\begin{pmatrix} #? & #? \\end{pmatrix}', cls: 'template', directInsert: true },
|
|
459
|
+
// { label: 'â–¡ \\ â–¡ \\ â–¡', insert: '\\begin{bmatrix} #? \\\\ #? \\\\ #? \\end{bmatrix}', cls: 'template', directInsert: true },
|
|
460
|
+
// { label: 'â–¡ \\ â–¡ \\ â–¡', insert: '\\begin{pmatrix} #? \\\\ #? \\\\ #? \\end{pmatrix}', cls: 'template', directInsert: true },
|
|
461
461
|
|
|
462
462
|
|
|
463
463
|
{ type: 'sep', cols: 2 },
|
|
@@ -466,10 +466,10 @@ const MATH_GROUPS = [
|
|
|
466
466
|
{ label: 'cases-2x2', insert: '\\begin{cases} #? & #? \\\\ #? & #? \\end{cases}', cls: 'template', directInsert: true, icon: 'cases-two-by-two-template-image', title: 'Cases 2x2' },
|
|
467
467
|
{ label: 'aligned', insert: '\\begin{aligned} #? &= #? \\\\ #? &= #? \\end{aligned}', cls: 'template', directInsert: true, icon: 'aligned-equals-template-image', title: 'Aligned Equations' },
|
|
468
468
|
{ type: 'sep', cols: 2 },
|
|
469
|
-
{ label: '
|
|
470
|
-
{ label: '
|
|
471
|
-
{ label: '
|
|
472
|
-
{ label: '
|
|
469
|
+
{ label: 'â‹®', insert: '\\vdots', title: 'Vertical ellipsis', icon: 'vertical-ellipsis-template-image', directInsert: true },
|
|
470
|
+
{ label: '⋯', insert: '\\cdots', title: 'Midline ellipsis', icon: 'midline-ellipsis-template-image', directInsert: true },
|
|
471
|
+
{ label: 'â‹°', insert: 'â‹°', title: 'Up-right diagonal ellipsis', icon: 'upright-ellipsis-template-image', directInsert: true },
|
|
472
|
+
{ label: '⋱', insert: '\\ddots', title: 'Down-right diagonal ellipsis', icon: 'downright-ellipsis-template-image', directInsert: true },
|
|
473
473
|
{ type: 'sep', cols: 2 },
|
|
474
474
|
{label: 'sum-array',insert: '\\frac{\\begin{array}{r}#?\\\\+\\,#?\\end{array}}{\\quad#?}',cls: 'template',directInsert: true,icon: 'sum-array-template-image',title: 'Column Addition'}, { label: 'diff-array', insert: '\\frac{\\begin{array}{r}#?\\\\-\\,#?\\end{array}}{\\quad#?}', directInsert: true, icon: 'difference-array-template-image', title: 'Column Subtraction' },
|
|
475
475
|
{ label: 'stack-line', insert: '\\frac{\\begin{array}{c}#?\\\\#?\\end{array}}{#?}', cls: 'template', directInsert: true, icon: 'stack-line-template-image', title: 'Stacked Line Layout' },
|
|
@@ -485,62 +485,62 @@ const MATH_GROUPS = [
|
|
|
485
485
|
const RELATION_MORE_PICKERS = {
|
|
486
486
|
operatorExtras: [
|
|
487
487
|
{ label: '\\', insert: '\\backslash', title: 'Slash', icon: 'slash-operator-template-image' },
|
|
488
|
-
{ label: '
|
|
489
|
-
{ label: '
|
|
488
|
+
{ label: '﹨', insert: '﹨', title: 'Reverse Solidus' },
|
|
489
|
+
{ label: '∓', insert: '\\mp', title: 'Minus or Plus', icon: 'minus-plus-operator-template-image' },
|
|
490
490
|
],
|
|
491
491
|
primeExtras: [
|
|
492
|
-
{ label: '
|
|
493
|
-
{ label: '
|
|
494
|
-
{ label: '
|
|
492
|
+
{ label: '‴', insert: "'''", cls: 'prime-symbol-tool' },
|
|
493
|
+
{ label: 'â—', insert: "''''", cls: 'prime-symbol-tool' },
|
|
494
|
+
{ label: '‵', insert: '‵', cls: 'prime-symbol-tool', title: 'Reversed Prime' },
|
|
495
495
|
],
|
|
496
496
|
notEqualExtras: [
|
|
497
|
-
{ label: '
|
|
498
|
-
{ label: '
|
|
499
|
-
{ label: '
|
|
500
|
-
{ label: '
|
|
497
|
+
{ label: '≠', insert: '\\neq', title: 'Not Equal', icon: 'not-equal-template-image' },
|
|
498
|
+
{ label: '≉', insert: '\\not\\approx', title: 'Not Approximately Equal', icon: 'not-approx-equal-template-image' },
|
|
499
|
+
{ label: 'â‰', insert: '\\nsim', title: 'Not Similar', icon: 'not-similar-template-image' },
|
|
500
|
+
{ label: '≢', insert: '\\not\\equiv', title: 'Not Identical', icon: 'not-identical-template-image' },
|
|
501
501
|
],
|
|
502
502
|
comparisonExtras: [
|
|
503
|
-
{ label: '
|
|
504
|
-
{ label: '
|
|
505
|
-
{ label: '
|
|
506
|
-
{ label: '
|
|
507
|
-
{ label: '
|
|
508
|
-
{ label: '
|
|
509
|
-
{ label: '
|
|
510
|
-
{ label: '
|
|
511
|
-
{ label: '
|
|
503
|
+
{ label: '≫', insert: '\\gg', title: 'Much Greater Than', icon: 'much-greater-than-template-image' },
|
|
504
|
+
{ label: '≪', insert: '\\ll', title: 'Much Less Than', icon: 'much-less-than-template-image' },
|
|
505
|
+
{ label: '⪇', insert: '\\lneqq', title: 'Less Than But Not Equal' },
|
|
506
|
+
{ label: '≻', insert: '\\succ', title: 'Succeeds', icon: 'succeeds-template-image' },
|
|
507
|
+
{ label: '⪈', insert: '\\gneqq', title: 'Greater Than But Not Equal', icon: 'greater-than-not-equal-template-image' },
|
|
508
|
+
{ label: 'âˆ', insert: '\\propto', title: 'Proportional To', icon: 'proportional-to-template-image' },
|
|
509
|
+
{ label: '⊲', insert: '\\lhd', title: 'Normal Subgroup', icon: 'normal-subgroup-template-image' },
|
|
510
|
+
{ label: '≺', insert: '\\prec', title: 'Precedes', icon: 'precedes-template-image' },
|
|
511
|
+
{ label: 'â–·', insert: '\\rhd', title: 'Contains Normal Subgroup', icon: 'contains-normal-subgroup-template-image' },
|
|
512
512
|
],
|
|
513
513
|
setExtras: [
|
|
514
|
-
{ label: '
|
|
515
|
-
{ label: '
|
|
516
|
-
{ label: '
|
|
517
|
-
{ label: '
|
|
518
|
-
{ label: '
|
|
519
|
-
{ label: '
|
|
520
|
-
{ label: '
|
|
521
|
-
{ label: '
|
|
522
|
-
{ label: '
|
|
523
|
-
{ label: '
|
|
514
|
+
{ label: '∉', insert: '\\notin', title: 'Not Element Of', icon: 'not-element-of-template-image' },
|
|
515
|
+
{ label: '∌', insert: '\\not\\ni', title: 'Not Contains Member', icon: 'not-contains-member-template-image' },
|
|
516
|
+
{ label: '⊆', insert: '\\subseteq', title: 'Subset Equal', icon: 'subset-equal-template-image' },
|
|
517
|
+
{ label: '⊇', insert: '\\supseteq', title: 'Superset Equal', icon: 'superset-equal-template-image' },
|
|
518
|
+
{ label: 'âŠ', insert: '\\sqsubset', title: 'Square Subset', icon: 'square-subset-template-image' },
|
|
519
|
+
{ label: 'âŠ', insert: '\\sqsupset', title: 'Square Superset', icon: 'square-superset-template-image' },
|
|
520
|
+
{ label: '⊑', insert: '\\sqsubseteq', title: 'Square Subset Equal', icon: 'square-subset-equal-template-image' },
|
|
521
|
+
{ label: '⊒', insert: '\\sqsupseteq', title: 'Square Superset Equal', icon: 'square-superset-equal-template-image' },
|
|
522
|
+
{ label: '⊓', insert: '\\sqcap', title: 'Square Cap', icon: 'square-cap-template-image' },
|
|
523
|
+
{ label: '⊔', insert: '\\sqcup', title: 'Square Cup', icon: 'square-cup-template-image' },
|
|
524
524
|
],
|
|
525
525
|
logicExtras: [
|
|
526
|
-
{ label: '
|
|
527
|
-
{ label: '
|
|
526
|
+
{ label: '∴', insert: '\\therefore', title: 'Therefore', icon: 'therefore-template-image' },
|
|
527
|
+
{ label: '∵', insert: '\\because', title: 'Because', icon: 'because-template-image' },
|
|
528
528
|
],
|
|
529
529
|
geometryExtras: [
|
|
530
|
-
{ label: '
|
|
531
|
-
{ label: '
|
|
532
|
-
{ label: '
|
|
533
|
-
{ label: '
|
|
530
|
+
{ label: '∦', insert: '\\nparallel', title: 'Not Parallel', icon: 'not-parallel-template-image' },
|
|
531
|
+
{ label: '∡', insert: '\\measuredangle', title: 'Measured Angle', icon: 'measured-angle-template-image' },
|
|
532
|
+
{ label: '∢', insert: '\\sphericalangle', title: 'Spherical Angle', icon: 'spherical-angle-template-image' },
|
|
533
|
+
{ label: 'â‹„', insert: '\\diamond', title: 'Diamond', icon: 'diamond-template-image' },
|
|
534
534
|
],
|
|
535
535
|
shapeExtras: [
|
|
536
|
-
{ label: '
|
|
537
|
-
{ label: '
|
|
536
|
+
{ label: 'â–', insert: 'â–', title: 'Rectangle', icon: 'rectangle-template-image' },
|
|
537
|
+
{ label: 'â–±', insert: '\\parallelogram', title: 'Parallelogram', icon: 'parallelogram-template-image' },
|
|
538
538
|
],
|
|
539
539
|
circledExtras: [
|
|
540
|
-
{ label: '
|
|
541
|
-
{ label: '
|
|
542
|
-
{ label: '
|
|
543
|
-
{ label: '
|
|
540
|
+
{ label: '⊖', insert: '\\ominus', title: 'Circled Minus', icon: 'circled-minus-template-image' },
|
|
541
|
+
{ label: '⊛', insert: '\\circledast', title: 'Circled Asterisk', icon: 'circled-asterisk-template-image' },
|
|
542
|
+
{ label: '⊘', insert: '⨸', title: 'Circled Divide', icon: 'circled-divide-template-image' },
|
|
543
|
+
{ label: '•', insert: '^{\\bullet}', title: 'Raised Bullet', icon: 'raised-bullet-template-image' },
|
|
544
544
|
],
|
|
545
545
|
};
|
|
546
546
|
|
|
@@ -557,125 +557,125 @@ const RELATIONS_TAB_ITEMS = [
|
|
|
557
557
|
{ label: 'cancel', insert: '\\cancel{#0}', title: 'Negate / Cross Out', icon: 'negate-template-image' },
|
|
558
558
|
{ type: 'sep', cols: 1 },
|
|
559
559
|
{ label: '+', insert: '+' },
|
|
560
|
-
{ label: '
|
|
561
|
-
{ label: '
|
|
560
|
+
{ label: '·', insert: '\\cdot' },
|
|
561
|
+
{ label: '−', insert: '-' },
|
|
562
562
|
{ label: '/', insert: '/' },
|
|
563
|
-
{ label: '
|
|
564
|
-
{ label: '
|
|
565
|
-
{ label: '
|
|
563
|
+
{ label: '×', insert: '\\times' },
|
|
564
|
+
{ label: '±', insert: '\\pm' },
|
|
565
|
+
{ label: '÷', insert: '\\div' },
|
|
566
566
|
{ label: '*', insert: '\\ast' },
|
|
567
|
-
{ label: '
|
|
567
|
+
{ label: '∘', insert: '∘' },
|
|
568
568
|
makeRelationMorePicker('operatorExtras', 'More Operators'),
|
|
569
569
|
|
|
570
570
|
{ type: 'sep', cols: 5 },
|
|
571
|
-
{ label: '
|
|
572
|
-
{ label: '
|
|
573
|
-
{ label: '
|
|
574
|
-
{ label: '
|
|
575
|
-
{ label: '
|
|
576
|
-
{ label: '
|
|
577
|
-
{ label: '
|
|
578
|
-
{ label: '
|
|
579
|
-
{ label: '
|
|
571
|
+
{ label: 'Ï€', insert: '\\pi' },
|
|
572
|
+
{ label: '∞', insert: '\\infty' },
|
|
573
|
+
{ label: '∂', insert: '\\partial' },
|
|
574
|
+
{ label: 'Δ', insert: '\\Delta' },
|
|
575
|
+
{ label: '°', insert: '\\degree' },
|
|
576
|
+
{ label: '′', insert: "'", cls: 'prime-symbol-tool' },
|
|
577
|
+
{ label: '∅', insert: '\\emptyset' },
|
|
578
|
+
{ label: '∇', insert: '\\nabla' },
|
|
579
|
+
{ label: '″', insert: "''", cls: 'prime-symbol-tool' },
|
|
580
580
|
makeRelationMorePicker('primeExtras', 'More Prime Symbols'),
|
|
581
581
|
|
|
582
582
|
|
|
583
583
|
{ type: 'sep', cols: 3 },
|
|
584
584
|
{ label: '=', insert: '=' },
|
|
585
|
-
{ label: '
|
|
585
|
+
{ label: '≡', insert: '\\equiv' },
|
|
586
586
|
{ label: '~', insert: '\\sim' },
|
|
587
|
-
{ label: '
|
|
588
|
-
{ label: '
|
|
589
|
-
{ label: '
|
|
587
|
+
{ label: '≈', insert: '\\approx' },
|
|
588
|
+
{ label: '≃', insert: '\\simeq' },
|
|
589
|
+
{ label: '≅', insert: '\\cong' },
|
|
590
590
|
makeRelationMorePicker('notEqualExtras', 'More Not Equal Relations'),
|
|
591
591
|
|
|
592
592
|
{ type: 'sep', cols: 3 },
|
|
593
593
|
{ label: '>', insert: '>' },
|
|
594
594
|
{ label: '<', insert: '<' },
|
|
595
|
-
{ label: '
|
|
596
|
-
{ label: '
|
|
597
|
-
{ label: '
|
|
598
|
-
{ label: '
|
|
595
|
+
{ label: '≥', insert: '\\geq' },
|
|
596
|
+
{ label: '≤', insert: '\\leq' },
|
|
597
|
+
{ label: '⩾', insert: '\\geqslant', title: 'Greater Than or Slanted Equal To' },
|
|
598
|
+
{ label: '⩽', insert: '\\leqslant', title: 'Less Than or Slanted Equal To' },
|
|
599
599
|
makeRelationMorePicker('comparisonExtras', 'More Comparison Symbols'),
|
|
600
600
|
|
|
601
601
|
{ type: 'sep', cols: 3 },
|
|
602
|
-
{ label: '
|
|
603
|
-
{ label: '
|
|
604
|
-
{ label: '
|
|
605
|
-
{ label: '
|
|
606
|
-
{ label: '
|
|
607
|
-
{ label: '
|
|
602
|
+
{ label: '∈', insert: '\\in' },
|
|
603
|
+
{ label: '∋', insert: '\\ni' },
|
|
604
|
+
{ label: '∪', insert: '\\cup' },
|
|
605
|
+
{ label: '∩', insert: '\\cap' },
|
|
606
|
+
{ label: '⊂', insert: '\\subset' },
|
|
607
|
+
{ label: '⊃', insert: '\\supset' },
|
|
608
608
|
makeRelationMorePicker('setExtras', 'More Set Symbols'),
|
|
609
609
|
|
|
610
610
|
{ type: 'sep', cols: 3 },
|
|
611
|
-
{ label: '
|
|
612
|
-
{ label: '
|
|
613
|
-
{ label: '
|
|
614
|
-
{ label: '
|
|
615
|
-
{ label: '
|
|
616
|
-
{ label: '
|
|
611
|
+
{ label: '∧', insert: '\\land' },
|
|
612
|
+
{ label: '∨', insert: '\\lor' },
|
|
613
|
+
{ label: '¬', insert: '\\neg' },
|
|
614
|
+
{ label: '∀', insert: '\\forall' },
|
|
615
|
+
{ label: '∃', insert: '\\exists' },
|
|
616
|
+
{ label: '∄', insert: '\\nexists' },
|
|
617
617
|
makeRelationMorePicker('logicExtras', 'More Logic Symbols'),
|
|
618
618
|
|
|
619
619
|
{ type: 'sep', cols: 2 },
|
|
620
|
-
{ label: '
|
|
621
|
-
{ label: '
|
|
622
|
-
{ label: '
|
|
620
|
+
{ label: '∠', insert: '\\angle' },
|
|
621
|
+
{ label: '∥', insert: '\\parallel' },
|
|
622
|
+
{ label: '⊥', insert: '\\perp' },
|
|
623
623
|
makeRelationMorePicker('geometryExtras', 'More Geometry Symbols'),
|
|
624
624
|
|
|
625
625
|
{ type: 'sep', cols: 3 },
|
|
626
|
-
{ label: '
|
|
627
|
-
{ label: '
|
|
628
|
-
{ label: '
|
|
626
|
+
{ label: 'â–¡', insert: '\\square' },
|
|
627
|
+
{ label: 'â–³', insert: '\\triangle' },
|
|
628
|
+
{ label: 'â—‹', insert: '\\bigcirc' },
|
|
629
629
|
makeRelationMorePicker('shapeExtras', 'More Shape Symbols'),
|
|
630
630
|
{ type: 'sep', cols: 3 },
|
|
631
|
-
{ label: '
|
|
632
|
-
{ label: '
|
|
633
|
-
{ label: '
|
|
631
|
+
{ label: '⊕', insert: '\\oplus' },
|
|
632
|
+
{ label: '⊗', insert: '\\otimes' },
|
|
633
|
+
{ label: '⊙', insert: '\\odot' },
|
|
634
634
|
makeRelationMorePicker('circledExtras', 'More Circled Operators'),
|
|
635
635
|
];
|
|
636
636
|
|
|
637
637
|
const ARROW_PICKER_ITEMS = [
|
|
638
|
-
{ label: '
|
|
639
|
-
{ label: '
|
|
640
|
-
{ label: '
|
|
641
|
-
{ label: '
|
|
642
|
-
{ label: '
|
|
643
|
-
{ label: '
|
|
644
|
-
{ label: '
|
|
645
|
-
{ label: '
|
|
646
|
-
{ label: '
|
|
647
|
-
{ label: '
|
|
648
|
-
{ label: '
|
|
649
|
-
{ label: '
|
|
650
|
-
{ label: '
|
|
651
|
-
{ label: '
|
|
652
|
-
{ label: '
|
|
653
|
-
{ label: '
|
|
654
|
-
{ label: '
|
|
655
|
-
{ label: '
|
|
656
|
-
{ label: '
|
|
657
|
-
{ label: '
|
|
658
|
-
{ label: '
|
|
659
|
-
{ label: '
|
|
660
|
-
{ label: '
|
|
661
|
-
{ label: '
|
|
662
|
-
{ label: '
|
|
663
|
-
{ label: '
|
|
638
|
+
{ label: '↗', insert: '\\nearrow', title: 'North East Arrow' },
|
|
639
|
+
{ label: '↘', insert: '\\searrow', title: 'South East Arrow' },
|
|
640
|
+
{ label: '↖', insert: '\\nwarrow', title: 'North West Arrow' },
|
|
641
|
+
{ label: '↙', insert: '\\swarrow', title: 'South West Arrow' },
|
|
642
|
+
{ label: '⤡', insert: '⤡', title: 'North East and South West Arrow' },
|
|
643
|
+
{ label: '⤢', insert: '⤢', title: 'North West and South East Arrow' },
|
|
644
|
+
{ label: '↩', insert: '\\hookleftarrow', title: 'Hook Left Arrow' },
|
|
645
|
+
{ label: '↪', insert: '\\hookrightarrow', title: 'Hook Right Arrow' },
|
|
646
|
+
{ label: '↼', insert: '\\leftharpoonup', title: 'Left Harpoon Up' },
|
|
647
|
+
{ label: '⇀', insert: '\\rightharpoonup', title: 'Right Harpoon Up' },
|
|
648
|
+
{ label: '↑', insert: '\\uparrow', title: 'Up Arrow' },
|
|
649
|
+
{ label: '↓', insert: '\\downarrow', title: 'Down Arrow' },
|
|
650
|
+
{ label: '⇑', insert: '\\Uparrow', title: 'Double Up Arrow' },
|
|
651
|
+
{ label: '⇓', insert: '\\Downarrow', title: 'Double Down Arrow' },
|
|
652
|
+
{ label: '⥪', insert: '⥪', title: 'Leftwards Arrow with Hook' },
|
|
653
|
+
{ label: 'â¥', insert: 'â¥', title: 'Rightwards Arrow with Hook' },
|
|
654
|
+
{ label: '⇋', insert: '\\leftrightharpoons', title: 'Reverse Equilibrium Harpoons' },
|
|
655
|
+
{ label: '⇌', insert: '\\rightleftharpoons', title: 'Equilibrium Harpoons' },
|
|
656
|
+
{ label: '↽', insert: '\\leftharpoondown', title: 'Left Harpoon Down' },
|
|
657
|
+
{ label: 'â‡', insert: '\\rightharpoondown', title: 'Right Harpoon Down' },
|
|
658
|
+
{ label: '⇆', insert: '⇆', title: 'Leftwards Arrow over Rightwards Arrow' },
|
|
659
|
+
{ label: '⇄', insert: '\\rightleftarrows', title: 'Rightwards Arrow over Leftwards Arrow' },
|
|
660
|
+
{ label: '⇅', insert: '⇅', title: 'Upwards Arrow Left of Downwards Arrow' },
|
|
661
|
+
{ label: '⇵', insert: '⇵', title: 'Downwards Arrow Left of Upwards Arrow' },
|
|
662
|
+
{ label: '⥮', insert: '⥮', title: 'Upwards Harpoon with Barb Left beside Downwards Harpoon with Barb Right' },
|
|
663
|
+
{ label: '⥯', insert: '⥯', title: 'Downwards Harpoon with Barb Left beside Upwards Harpoon with Barb Right' },
|
|
664
664
|
{
|
|
665
|
-
label: '
|
|
665
|
+
label: '⇄',
|
|
666
666
|
insert: '\\rightleftarrows',
|
|
667
667
|
title: 'Rightwards Arrow over Short Leftwards Arrow',
|
|
668
668
|
preview: 'rightleft-short-left'
|
|
669
669
|
},
|
|
670
670
|
{
|
|
671
|
-
label: '
|
|
671
|
+
label: '→\nâ†',
|
|
672
672
|
insert: '\\overset{\\to}{\\longleftarrow}',
|
|
673
673
|
title: 'Short Rightwards Arrow over Leftwards Arrow',
|
|
674
674
|
preview: 'right-short-over-left-long'
|
|
675
675
|
},
|
|
676
|
-
{ label: '
|
|
677
|
-
{ label: '
|
|
678
|
-
{ label: '
|
|
676
|
+
{ label: '↕', insert: '\\updownarrow', title: 'Up Down Arrow' },
|
|
677
|
+
{ label: '⇕', insert: '\\Updownarrow', title: 'Double Up Down Arrow' },
|
|
678
|
+
{ label: '↵', insert: '↵', title: 'Downwards Arrow with Corner Leftwards' },
|
|
679
679
|
];
|
|
680
680
|
|
|
681
681
|
const ARROW_LABEL_PICKER_ITEMS = [
|
|
@@ -787,43 +787,43 @@ const ARROW_LABEL_PICKER_ITEMS = [
|
|
|
787
787
|
];
|
|
788
788
|
|
|
789
789
|
const GREEK_ITALIC_UPPERCASE_ITEMS = [
|
|
790
|
-
{ label: '
|
|
791
|
-
{ label: '
|
|
792
|
-
{ label: '
|
|
793
|
-
{ label: '
|
|
794
|
-
{ label: '
|
|
795
|
-
{ label: '
|
|
796
|
-
{ label: '
|
|
797
|
-
{ label: '
|
|
798
|
-
{ label: '
|
|
799
|
-
{ label: '
|
|
800
|
-
{ label: '
|
|
801
|
-
{ label: '
|
|
802
|
-
{ label: '
|
|
803
|
-
{ label: '
|
|
804
|
-
{ label: '
|
|
805
|
-
{ label: '
|
|
806
|
-
{ label: '
|
|
807
|
-
{ label: '
|
|
808
|
-
{ label: '
|
|
809
|
-
{ label: '
|
|
810
|
-
{ label: '
|
|
811
|
-
{ label: '
|
|
812
|
-
{ label: '
|
|
813
|
-
{ label: '
|
|
790
|
+
{ label: 'Α', insert: '\\mathit{Α}', title: 'Italic Alpha' },
|
|
791
|
+
{ label: 'Î’', insert: '\\mathit{Î’}', title: 'Italic Beta' },
|
|
792
|
+
{ label: 'Γ', insert: '\\varGamma', title: 'Italic Gamma' },
|
|
793
|
+
{ label: 'Δ', insert: '\\varDelta', title: 'Italic Delta' },
|
|
794
|
+
{ label: 'Ε', insert: '\\mathit{Ε}', title: 'Italic Epsilon' },
|
|
795
|
+
{ label: 'Ζ', insert: '\\mathit{Ζ}', title: 'Italic Zeta' },
|
|
796
|
+
{ label: 'Η', insert: '\\mathit{Η}', title: 'Italic Eta' },
|
|
797
|
+
{ label: 'Θ', insert: '\\varTheta', title: 'Italic Theta' },
|
|
798
|
+
{ label: 'Ι', insert: '\\mathit{Ι}', title: 'Italic Iota' },
|
|
799
|
+
{ label: 'Κ', insert: '\\mathit{Κ}', title: 'Italic Kappa' },
|
|
800
|
+
{ label: 'Λ', insert: '\\varLambda', title: 'Italic Lambda' },
|
|
801
|
+
{ label: 'Μ', insert: '\\mathit{Μ}', title: 'Italic Mu' },
|
|
802
|
+
{ label: 'Î', insert: '\\mathit{Î}', title: 'Italic Nu' },
|
|
803
|
+
{ label: 'Ξ', insert: '\\varXi', title: 'Italic Xi' },
|
|
804
|
+
{ label: 'Ο', insert: '\\mathit{Ο}', title: 'Italic Omicron' },
|
|
805
|
+
{ label: 'Î ', insert: '\\varPi', title: 'Italic Pi' },
|
|
806
|
+
{ label: 'Ρ', insert: '\\mathit{Ρ}', title: 'Italic Rho' },
|
|
807
|
+
{ label: 'Σ', insert: '\\varSigma', title: 'Italic Sigma' },
|
|
808
|
+
{ label: 'Τ', insert: '\\mathit{Τ}', title: 'Italic Tau' },
|
|
809
|
+
{ label: 'Î¥', insert: '\\varUpsilon', title: 'Italic Upsilon' },
|
|
810
|
+
{ label: 'Φ', insert: '\\varPhi', title: 'Italic Phi' },
|
|
811
|
+
{ label: 'Χ', insert: '\\mathit{Χ}', title: 'Italic Chi' },
|
|
812
|
+
{ label: 'Ψ', insert: '\\varPsi', title: 'Italic Psi' },
|
|
813
|
+
{ label: 'Ω', insert: '\\varOmega', title: 'Italic Omega' },
|
|
814
814
|
];
|
|
815
815
|
|
|
816
816
|
const BLACKBOARD_BOLD_LETTERS = [
|
|
817
|
-
['
|
|
818
|
-
['
|
|
819
|
-
['
|
|
820
|
-
['
|
|
821
|
-
['
|
|
822
|
-
['
|
|
823
|
-
['
|
|
824
|
-
['
|
|
825
|
-
['
|
|
826
|
-
['
|
|
817
|
+
['ð”¸', 'A'], ['ð”¹', 'B'], ['â„‚', 'C'], ['ð”»', 'D'], ['ð”¼', 'E'], ['ð”½', 'F'],
|
|
818
|
+
['ð”¾', 'G'], ['â„', 'H'], ['ð•€', 'I'], ['ð•', 'J'], ['ð•‚', 'K'], ['ð•ƒ', 'L'],
|
|
819
|
+
['ð•„', 'M'], ['â„•', 'N'], ['ð•†', 'O'], ['â„™', 'P'], ['ℚ', 'Q'], ['â„', 'R'],
|
|
820
|
+
['ð•Š', 'S'], ['ð•‹', 'T'], ['ð•Œ', 'U'], ['ð•', 'V'], ['ð•Ž', 'W'], ['ð•', 'X'],
|
|
821
|
+
['ð•', 'Y'], ['ℤ', 'Z'],
|
|
822
|
+
['ð•’', 'a'], ['ð•“', 'b'], ['ð•”', 'c'], ['ð••', 'd'], ['ð•–', 'e'], ['ð•—', 'f'],
|
|
823
|
+
['ð•˜', 'g'], ['ð•™', 'h'], ['ð•š', 'i'], ['ð•›', 'j'], ['ð•œ', 'k'], ['ð•', 'l'],
|
|
824
|
+
['ð•ž', 'm'], ['ð•Ÿ', 'n'], ['ð• ', 'o'], ['ð•¡', 'p'], ['ð•¢', 'q'], ['ð•£', 'r'],
|
|
825
|
+
['ð•¤', 's'], ['ð•¥', 't'], ['ð•¦', 'u'], ['ð•§', 'v'], ['ð•¨', 'w'], ['ð•©', 'x'],
|
|
826
|
+
['ð•ª', 'y'], ['ð•«', 'z'],
|
|
827
827
|
];
|
|
828
828
|
|
|
829
829
|
const BLACKBOARD_BOLD_PICKER_ITEMS = BLACKBOARD_BOLD_LETTERS.map(([label, letter]) => ({
|
|
@@ -833,122 +833,122 @@ const BLACKBOARD_BOLD_PICKER_ITEMS = BLACKBOARD_BOLD_LETTERS.map(([label, letter
|
|
|
833
833
|
}));
|
|
834
834
|
|
|
835
835
|
const FRAKTUR_SCRIPT_PICKER_ITEMS = [
|
|
836
|
-
['
|
|
837
|
-
['
|
|
838
|
-
['
|
|
839
|
-
['
|
|
840
|
-
['
|
|
841
|
-
['
|
|
842
|
-
['
|
|
843
|
-
['
|
|
844
|
-
['
|
|
845
|
-
['
|
|
846
|
-
['
|
|
847
|
-
['
|
|
848
|
-
['
|
|
849
|
-
['
|
|
850
|
-
['
|
|
851
|
-
['
|
|
852
|
-
['
|
|
853
|
-
['
|
|
854
|
-
['
|
|
855
|
-
['
|
|
856
|
-
['
|
|
857
|
-
['
|
|
858
|
-
['
|
|
859
|
-
['
|
|
860
|
-
['
|
|
861
|
-
['
|
|
862
|
-
['
|
|
863
|
-
['
|
|
864
|
-
['
|
|
865
|
-
['
|
|
866
|
-
['
|
|
867
|
-
['
|
|
868
|
-
['
|
|
869
|
-
['
|
|
870
|
-
['
|
|
871
|
-
['
|
|
872
|
-
['
|
|
873
|
-
['
|
|
874
|
-
['
|
|
875
|
-
['
|
|
876
|
-
['
|
|
877
|
-
['
|
|
878
|
-
['
|
|
879
|
-
['
|
|
880
|
-
['
|
|
881
|
-
['
|
|
882
|
-
['
|
|
883
|
-
['
|
|
884
|
-
['
|
|
885
|
-
['
|
|
886
|
-
['
|
|
887
|
-
['
|
|
888
|
-
['
|
|
889
|
-
['
|
|
890
|
-
['
|
|
891
|
-
['
|
|
892
|
-
['
|
|
893
|
-
['
|
|
894
|
-
['
|
|
895
|
-
['
|
|
896
|
-
['
|
|
897
|
-
['
|
|
898
|
-
['
|
|
899
|
-
['
|
|
900
|
-
['
|
|
901
|
-
['
|
|
902
|
-
['
|
|
903
|
-
['
|
|
904
|
-
['
|
|
905
|
-
['
|
|
906
|
-
['
|
|
907
|
-
['
|
|
908
|
-
['
|
|
909
|
-
['
|
|
910
|
-
['
|
|
911
|
-
['
|
|
912
|
-
['
|
|
913
|
-
['
|
|
914
|
-
['
|
|
915
|
-
['
|
|
916
|
-
['
|
|
917
|
-
['
|
|
918
|
-
['
|
|
919
|
-
['
|
|
920
|
-
['
|
|
921
|
-
['
|
|
922
|
-
['
|
|
923
|
-
['
|
|
924
|
-
['
|
|
925
|
-
['
|
|
926
|
-
['
|
|
927
|
-
['
|
|
928
|
-
['
|
|
929
|
-
['
|
|
930
|
-
['
|
|
931
|
-
['
|
|
932
|
-
['
|
|
933
|
-
['
|
|
934
|
-
['
|
|
935
|
-
['
|
|
936
|
-
['
|
|
937
|
-
['
|
|
938
|
-
['
|
|
939
|
-
['
|
|
836
|
+
['ð”„', '\\mathfrak{A}', 'Fraktur A'],
|
|
837
|
+
['ð”…', '\\mathfrak{B}', 'Fraktur B'],
|
|
838
|
+
['â„', '\\mathfrak{C}', 'Fraktur C'],
|
|
839
|
+
['ð”‡', '\\mathfrak{D}', 'Fraktur D'],
|
|
840
|
+
['ð”ˆ', '\\mathfrak{E}', 'Fraktur E'],
|
|
841
|
+
['ð”‰', '\\mathfrak{F}', 'Fraktur F'],
|
|
842
|
+
['ð”Š', '\\mathfrak{G}', 'Fraktur G'],
|
|
843
|
+
['ℌ', '\\mathfrak{H}', 'Fraktur H'],
|
|
844
|
+
['â„‘', '\\mathfrak{I}', 'Fraktur I'],
|
|
845
|
+
['ð”', '\\mathfrak{J}', 'Fraktur J'],
|
|
846
|
+
['ð”Ž', '\\mathfrak{K}', 'Fraktur K'],
|
|
847
|
+
['ð”', '\\mathfrak{L}', 'Fraktur L'],
|
|
848
|
+
['ð”', '\\mathfrak{M}', 'Fraktur M'],
|
|
849
|
+
['ð”‘', '\\mathfrak{N}', 'Fraktur N'],
|
|
850
|
+
['ð”’', '\\mathfrak{O}', 'Fraktur O'],
|
|
851
|
+
['ð”“', '\\mathfrak{P}', 'Fraktur P'],
|
|
852
|
+
['ð””', '\\mathfrak{Q}', 'Fraktur Q'],
|
|
853
|
+
['ℜ', '\\mathfrak{R}', 'Fraktur R'],
|
|
854
|
+
['ð”–', '\\mathfrak{S}', 'Fraktur S'],
|
|
855
|
+
['ð”—', '\\mathfrak{T}', 'Fraktur T'],
|
|
856
|
+
['ð”˜', '\\mathfrak{U}', 'Fraktur U'],
|
|
857
|
+
['ð”™', '\\mathfrak{V}', 'Fraktur V'],
|
|
858
|
+
['ð”š', '\\mathfrak{W}', 'Fraktur W'],
|
|
859
|
+
['ð”›', '\\mathfrak{X}', 'Fraktur X'],
|
|
860
|
+
['ð”œ', '\\mathfrak{Y}', 'Fraktur Y'],
|
|
861
|
+
['ℨ', '\\mathfrak{Z}', 'Fraktur Z'],
|
|
862
|
+
['ð”ž', '\\mathfrak{a}', 'Fraktur a'],
|
|
863
|
+
['ð”Ÿ', '\\mathfrak{b}', 'Fraktur b'],
|
|
864
|
+
['ð” ', '\\mathfrak{c}', 'Fraktur c'],
|
|
865
|
+
['ð”¡', '\\mathfrak{d}', 'Fraktur d'],
|
|
866
|
+
['ð”¢', '\\mathfrak{e}', 'Fraktur e'],
|
|
867
|
+
['ð”£', '\\mathfrak{f}', 'Fraktur f'],
|
|
868
|
+
['ð”¤', '\\mathfrak{g}', 'Fraktur g'],
|
|
869
|
+
['ð”¥', '\\mathfrak{h}', 'Fraktur h'],
|
|
870
|
+
['ð”¦', '\\mathfrak{i}', 'Fraktur i'],
|
|
871
|
+
['ð”§', '\\mathfrak{j}', 'Fraktur j'],
|
|
872
|
+
['ð”¨', '\\mathfrak{k}', 'Fraktur k'],
|
|
873
|
+
['ð”©', '\\mathfrak{l}', 'Fraktur l'],
|
|
874
|
+
['ð”ª', '\\mathfrak{m}', 'Fraktur m'],
|
|
875
|
+
['ð”«', '\\mathfrak{n}', 'Fraktur n'],
|
|
876
|
+
['ð”¬', '\\mathfrak{o}', 'Fraktur o'],
|
|
877
|
+
['ð”', '\\mathfrak{p}', 'Fraktur p'],
|
|
878
|
+
['ð”®', '\\mathfrak{q}', 'Fraktur q'],
|
|
879
|
+
['ð”¯', '\\mathfrak{r}', 'Fraktur r'],
|
|
880
|
+
['ð”°', '\\mathfrak{s}', 'Fraktur s'],
|
|
881
|
+
['ð”±', '\\mathfrak{t}', 'Fraktur t'],
|
|
882
|
+
['ð”²', '\\mathfrak{u}', 'Fraktur u'],
|
|
883
|
+
['ð”³', '\\mathfrak{v}', 'Fraktur v'],
|
|
884
|
+
['ð”´', '\\mathfrak{w}', 'Fraktur w'],
|
|
885
|
+
['ð”µ', '\\mathfrak{x}', 'Fraktur x'],
|
|
886
|
+
['ð”¶', '\\mathfrak{y}', 'Fraktur y'],
|
|
887
|
+
['ð”·', '\\mathfrak{z}', 'Fraktur z'],
|
|
888
|
+
['ð’œ', '\\mathscr{A}', 'Script A'],
|
|
889
|
+
['ℬ', '\\mathscr{B}', 'Script B'],
|
|
890
|
+
['ð’ž', '\\mathscr{C}', 'Script C'],
|
|
891
|
+
['ð’Ÿ', '\\mathscr{D}', 'Script D'],
|
|
892
|
+
['â„°', '\\mathscr{E}', 'Script E'],
|
|
893
|
+
['ℱ', '\\mathscr{F}', 'Script F'],
|
|
894
|
+
['ð’¢', '\\mathscr{G}', 'Script G'],
|
|
895
|
+
['â„‹', '\\mathscr{H}', 'Script H'],
|
|
896
|
+
['â„', '\\mathscr{I}', 'Script I'],
|
|
897
|
+
['ð’¥', '\\mathscr{J}', 'Script J'],
|
|
898
|
+
['ð’¦', '\\mathscr{K}', 'Script K'],
|
|
899
|
+
['â„’', '\\mathscr{L}', 'Script L'],
|
|
900
|
+
['ℳ', '\\mathscr{M}', 'Script M'],
|
|
901
|
+
['ð’©', '\\mathscr{N}', 'Script N'],
|
|
902
|
+
['ð’ª', '\\mathscr{O}', 'Script O'],
|
|
903
|
+
['ð’«', '\\mathscr{P}', 'Script P'],
|
|
904
|
+
['ð’¬', '\\mathscr{Q}', 'Script Q'],
|
|
905
|
+
['â„›', '\\mathscr{R}', 'Script R'],
|
|
906
|
+
['ð’®', '\\mathscr{S}', 'Script S'],
|
|
907
|
+
['ð’¯', '\\mathscr{T}', 'Script T'],
|
|
908
|
+
['ð’°', '\\mathscr{U}', 'Script U'],
|
|
909
|
+
['ð’±', '\\mathscr{V}', 'Script V'],
|
|
910
|
+
['ð’²', '\\mathscr{W}', 'Script W'],
|
|
911
|
+
['ð’³', '\\mathscr{X}', 'Script X'],
|
|
912
|
+
['ð’´', '\\mathscr{Y}', 'Script Y'],
|
|
913
|
+
['ð’µ', '\\mathscr{Z}', 'Script Z'],
|
|
914
|
+
['ð’¶', '\\mathscr{a}', 'Script a'],
|
|
915
|
+
['ð’·', '\\mathscr{b}', 'Script b'],
|
|
916
|
+
['ð’¸', '\\mathscr{c}', 'Script c'],
|
|
917
|
+
['ð’¹', '\\mathscr{d}', 'Script d'],
|
|
918
|
+
['ℯ', '\\mathscr{e}', 'Script e'],
|
|
919
|
+
['ð’»', '\\mathscr{f}', 'Script f'],
|
|
920
|
+
['ℊ', '\\mathscr{g}', 'Script g'],
|
|
921
|
+
['ð’½', '\\mathscr{h}', 'Script h'],
|
|
922
|
+
['ð’¾', '\\mathscr{i}', 'Script i'],
|
|
923
|
+
['ð’¿', '\\mathscr{j}', 'Script j'],
|
|
924
|
+
['ð“€', '\\mathscr{k}', 'Script k'],
|
|
925
|
+
['ð“', '\\mathscr{l}', 'Script l'],
|
|
926
|
+
['ð“‚', '\\mathscr{m}', 'Script m'],
|
|
927
|
+
['ð“ƒ', '\\mathscr{n}', 'Script n'],
|
|
928
|
+
['â„´', '\\mathscr{o}', 'Script o'],
|
|
929
|
+
['ð“…', '\\mathscr{p}', 'Script p'],
|
|
930
|
+
['ð“†', '\\mathscr{q}', 'Script q'],
|
|
931
|
+
['ð“‡', '\\mathscr{r}', 'Script r'],
|
|
932
|
+
['ð“ˆ', '\\mathscr{s}', 'Script s'],
|
|
933
|
+
['ð“‰', '\\mathscr{t}', 'Script t'],
|
|
934
|
+
['ð“Š', '\\mathscr{u}', 'Script u'],
|
|
935
|
+
['ð“‹', '\\mathscr{v}', 'Script v'],
|
|
936
|
+
['ð“Œ', '\\mathscr{w}', 'Script w'],
|
|
937
|
+
['ð“', '\\mathscr{x}', 'Script x'],
|
|
938
|
+
['ð“Ž', '\\mathscr{y}', 'Script y'],
|
|
939
|
+
['ð“', '\\mathscr{z}', 'Script z'],
|
|
940
940
|
].map(([label, insert, title]) => ({ label, insert, title }));
|
|
941
941
|
|
|
942
942
|
const HEBREW_SYMBOL_PICKER_ITEMS = [
|
|
943
|
-
{ label: '
|
|
944
|
-
{ label: '
|
|
945
|
-
{ label: '
|
|
946
|
-
{ label: '
|
|
947
|
-
{ label: '
|
|
943
|
+
{ label: 'ℵ', insert: '\\aleph', title: 'Aleph' },
|
|
944
|
+
{ label: 'â„’', insert: '\\mathscr{L}', title: 'Script L' },
|
|
945
|
+
{ label: '℘', insert: '\\wp', title: 'Weierstrass p' },
|
|
946
|
+
{ label: 'ð’µ', insert: '\\mathscr{Z}', title: 'Script Z' },
|
|
947
|
+
{ label: 'ℱ', insert: '\\mathscr{F}', title: 'Script F' },
|
|
948
948
|
];
|
|
949
949
|
|
|
950
|
-
const ARABIC_INDIC_DIGITS = ['
|
|
951
|
-
const EASTERN_ARABIC_INDIC_DIGITS = ['
|
|
950
|
+
const ARABIC_INDIC_DIGITS = ['Ù ', 'Ù¡', 'Ù¢', 'Ù£', 'Ù¤', 'Ù¥', 'Ù¦', 'Ù§', 'Ù¨', 'Ù©'];
|
|
951
|
+
const EASTERN_ARABIC_INDIC_DIGITS = ['Û°', 'Û±', 'Û²', 'Û³', 'Û´', 'Ûµ', 'Û¶', 'Û·', 'Û¸', 'Û¹'];
|
|
952
952
|
|
|
953
953
|
function convertDigitsToNumeralSystem(value, numeralMode) {
|
|
954
954
|
if (!value || numeralMode === 'western') return value;
|
|
@@ -1193,59 +1193,59 @@ const ORDERED_MATH_GROUPS = [
|
|
|
1193
1193
|
label: <RootFractionTabIcon />,
|
|
1194
1194
|
items: [
|
|
1195
1195
|
// GROUP 1 - Fractions & Roots (cols: 2)
|
|
1196
|
-
{ label: '
|
|
1197
|
-
{ label: '
|
|
1198
|
-
{ label: '
|
|
1199
|
-
{ label: '
|
|
1196
|
+
{ label: 'â–¡/â–¡', insert: '\\frac{#0}{#?}', title: 'Fraction', cls: 'green-template', icon: 'stacked-fraction' },
|
|
1197
|
+
{ label: 'â–¡/â–¡', insert: '{#0}/{#?}', title: 'Bevelled Fraction', cls: 'green-template' },
|
|
1198
|
+
{ label: '√□', insert: '\\sqrt{#0}', title: 'Square Root', cls: 'green-template', icon: 'square-root-template' },
|
|
1199
|
+
{ label: '□√□', insert: '\\sqrt[#?]{#0}', title: 'Root', cls: 'green-template', icon: 'nth-root-template' },
|
|
1200
1200
|
{ type: 'sep', cols: 2 },
|
|
1201
1201
|
// GROUP 2a - Brackets (cols: 2)
|
|
1202
|
-
{ label: '
|
|
1203
|
-
{ label: '
|
|
1202
|
+
{ label: 'â–¡^â–¡', insert: '#0^{#?}', title: 'Superscript', cls: 'green-template', icon: 'superscript-template' },
|
|
1203
|
+
{ label: 'â–¡_â–¡', insert: '#0_{#?}', title: 'Subscript', cls: 'green-template', icon: 'subscript-template' },
|
|
1204
1204
|
|
|
1205
1205
|
{ type: 'sep', cols: 1 },
|
|
1206
1206
|
// GROUP 2b - Super/Subscript (cols: 1)
|
|
1207
|
-
{ label: '(
|
|
1208
|
-
{ label: '
|
|
1209
|
-
{ label: '[
|
|
1210
|
-
{ label: '{
|
|
1207
|
+
{ label: '(â–¡)', insert: '\\left(#0\\right)', title: 'Parentheses', cls: 'green-template' },
|
|
1208
|
+
{ label: '|â–¡|', insert: '\\left|#0\\right|', title: 'Absolute Value', cls: 'green-template' },
|
|
1209
|
+
{ label: '[â–¡]', insert: '\\left[#0\\right]', title: 'Square Brackets', cls: 'green-template' },
|
|
1210
|
+
{ label: '{â–¡}', insert: '\\left\\{#0\\right\\}', title: 'Curly Braces', cls: 'green-template' },
|
|
1211
1211
|
{ type: 'sep', cols: 3 },
|
|
1212
1212
|
// GROUP 3 - Operators (cols: 3)
|
|
1213
1213
|
{ label: '+', insert: '+' },
|
|
1214
|
-
{ label: '
|
|
1215
|
-
{ label: '
|
|
1216
|
-
{ label: '
|
|
1214
|
+
{ label: '−', insert: '-' },
|
|
1215
|
+
{ label: '×', insert: '\\times' },
|
|
1216
|
+
{ label: '÷', insert: '\\div' },
|
|
1217
1217
|
{ label: '/', insert: '/' },
|
|
1218
|
-
{ label: '
|
|
1218
|
+
{ label: '±', insert: '\\pm' },
|
|
1219
1219
|
{ type: 'sep', cols: 3 },
|
|
1220
1220
|
// GROUP 4 - Relations (cols: 4)
|
|
1221
|
-
{ label: '
|
|
1222
|
-
{ label: '
|
|
1223
|
-
{ label: '
|
|
1224
|
-
{ label: '
|
|
1221
|
+
{ label: '≥', insert: '\\geq' },
|
|
1222
|
+
{ label: '≤', insert: '\\leq' },
|
|
1223
|
+
{ label: '∩', insert: '\\cap' },
|
|
1224
|
+
{ label: '∪', insert: '\\cup' },
|
|
1225
1225
|
{ label: '=', insert: '=' },
|
|
1226
|
-
{ label: '
|
|
1227
|
-
{ label: '
|
|
1228
|
-
{ label: '
|
|
1226
|
+
{ label: '≠', insert: '\\neq' },
|
|
1227
|
+
{ label: '⊂', insert: '\\subset' },
|
|
1228
|
+
{ label: '∈', insert: '\\in' },
|
|
1229
1229
|
{ type: 'sep', cols: 4 },
|
|
1230
1230
|
// GROUP 5 - Symbols (cols: 2)
|
|
1231
|
-
{ label: '
|
|
1232
|
-
{ label: '
|
|
1233
|
-
{ label: '
|
|
1234
|
-
{ label: '
|
|
1231
|
+
{ label: '∅', insert: '\\emptyset' },
|
|
1232
|
+
{ label: '∞', insert: '\\infty' },
|
|
1233
|
+
{ label: 'Ï€', insert: '\\pi' },
|
|
1234
|
+
{ label: 'â„•', insert: '\\mathbb{N}' },
|
|
1235
1235
|
{ type: 'sep', cols: 2 },
|
|
1236
1236
|
// GROUP 6 - Clipboard (cols: 3)
|
|
1237
|
-
{ label: '
|
|
1238
|
-
{ label: '
|
|
1239
|
-
{ label: '
|
|
1240
|
-
{ label: '
|
|
1241
|
-
{ label: '
|
|
1242
|
-
{ label: '
|
|
1237
|
+
{ label: '✂', action: 'CUT', title: 'Cut Formula', cls: 'soft-tool' },
|
|
1238
|
+
{ label: '⧉', action: 'COPY', title: 'Copy Formula', cls: 'soft-tool' },
|
|
1239
|
+
{ label: '⎘', action: 'PASTE', title: 'Paste Formula', cls: 'soft-tool' },
|
|
1240
|
+
{ label: '↶', action: 'UNDO', title: 'Undo', cls: 'soft-tool' },
|
|
1241
|
+
{ label: '↷', action: 'REDO', title: 'Redo', cls: 'soft-tool' },
|
|
1242
|
+
{ label: '⌫', action: 'CLEAR', title: 'Clear Formula', cls: 'soft-tool' },
|
|
1243
1243
|
{ type: 'sep', cols: 3 },
|
|
1244
1244
|
// GROUP 7 - Formatting (cols: 3)
|
|
1245
1245
|
{ label: 'B', action: 'BOLD', cls: 'template format-tool', title: 'Bold' },
|
|
1246
1246
|
{ label: '1b', action: 'ITALIC', cls: 'format-tool', title: 'Italic' },
|
|
1247
1247
|
{ label: 'BI', action: 'BOLD_ITALIC', cls: 'format-tool', title: 'Bold Italic' },
|
|
1248
|
-
{ label: '
|
|
1248
|
+
{ label: 'Ω', action: 'SPECIAL_CHARS', cls: 'format-tool omega-tool', title: 'Greek Letters' },
|
|
1249
1249
|
{ label: 'T', action: 'TEXT', cls: 'format-tool text-tool', title: 'Regular Text' },
|
|
1250
1250
|
{ label: 'A', action: 'TEXT_COLOR', cls: 'format-tool color-tool', title: 'Text Color' },
|
|
1251
1251
|
{ type: 'sep', cols: 1 },
|
|
@@ -1259,7 +1259,7 @@ const ORDERED_MATH_GROUPS = [
|
|
|
1259
1259
|
id: 'relations',
|
|
1260
1260
|
...MATH_GROUPS[1],
|
|
1261
1261
|
items: RELATIONS_TAB_ITEMS,
|
|
1262
|
-
label: <TabIcon top="
|
|
1262
|
+
label: <TabIcon top="∈∞" compact />,
|
|
1263
1263
|
},
|
|
1264
1264
|
{
|
|
1265
1265
|
id: 'arrows',
|
|
@@ -1268,61 +1268,61 @@ const ORDERED_MATH_GROUPS = [
|
|
|
1268
1268
|
},
|
|
1269
1269
|
{
|
|
1270
1270
|
id: 'greek',
|
|
1271
|
-
label: <TabIcon top="
|
|
1271
|
+
label: <TabIcon top="α Ω" compact />,
|
|
1272
1272
|
items: [
|
|
1273
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1274
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1275
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1276
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1277
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1278
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1279
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1280
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1281
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1282
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1283
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1284
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1285
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1286
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1287
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1288
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1289
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1290
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1291
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1292
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1293
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1294
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1295
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1296
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1297
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1298
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1299
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1300
|
-
{ category: 'Lowercase Greek Letters', label: '
|
|
1273
|
+
{ category: 'Lowercase Greek Letters', label: 'α', insert: '\\alpha' },
|
|
1274
|
+
{ category: 'Lowercase Greek Letters', label: 'β', insert: '\\beta' },
|
|
1275
|
+
{ category: 'Lowercase Greek Letters', label: 'γ', insert: '\\gamma' },
|
|
1276
|
+
{ category: 'Lowercase Greek Letters', label: 'δ', insert: '\\delta' },
|
|
1277
|
+
{ category: 'Lowercase Greek Letters', label: 'ε', insert: '\\epsilon' },
|
|
1278
|
+
{ category: 'Lowercase Greek Letters', label: 'ζ', insert: '\\zeta' },
|
|
1279
|
+
{ category: 'Lowercase Greek Letters', label: 'η', insert: '\\eta' },
|
|
1280
|
+
{ category: 'Lowercase Greek Letters', label: 'θ', insert: '\\theta' },
|
|
1281
|
+
{ category: 'Lowercase Greek Letters', label: 'Ï‘', insert: '\\vartheta' },
|
|
1282
|
+
{ category: 'Lowercase Greek Letters', label: 'ι', insert: '\\iota' },
|
|
1283
|
+
{ category: 'Lowercase Greek Letters', label: 'κ', insert: '\\kappa' },
|
|
1284
|
+
{ category: 'Lowercase Greek Letters', label: 'λ', insert: '\\lambda' },
|
|
1285
|
+
{ category: 'Lowercase Greek Letters', label: 'μ', insert: '\\mu' },
|
|
1286
|
+
{ category: 'Lowercase Greek Letters', label: 'ν', insert: '\\nu' },
|
|
1287
|
+
{ category: 'Lowercase Greek Letters', label: 'ξ', insert: '\\xi' },
|
|
1288
|
+
{ category: 'Lowercase Greek Letters', label: 'ο', insert: 'ο' },
|
|
1289
|
+
{ category: 'Lowercase Greek Letters', label: 'Ï€', insert: '\\pi' },
|
|
1290
|
+
{ category: 'Lowercase Greek Letters', label: 'Ï–', insert: '\\varpi' },
|
|
1291
|
+
{ category: 'Lowercase Greek Letters', label: 'Ï', insert: '\\rho' },
|
|
1292
|
+
{ category: 'Lowercase Greek Letters', label: 'Ï‚', insert: '\\varsigma' },
|
|
1293
|
+
{ category: 'Lowercase Greek Letters', label: 'σ', insert: '\\sigma' },
|
|
1294
|
+
{ category: 'Lowercase Greek Letters', label: 'Ï„', insert: '\\tau' },
|
|
1295
|
+
{ category: 'Lowercase Greek Letters', label: 'Ï…', insert: '\\upsilon' },
|
|
1296
|
+
{ category: 'Lowercase Greek Letters', label: 'φ', insert: '\\phi' },
|
|
1297
|
+
{ category: 'Lowercase Greek Letters', label: 'Ï•', insert: '\\varphi' },
|
|
1298
|
+
{ category: 'Lowercase Greek Letters', label: 'χ', insert: '\\chi' },
|
|
1299
|
+
{ category: 'Lowercase Greek Letters', label: 'ψ', insert: '\\psi' },
|
|
1300
|
+
{ category: 'Lowercase Greek Letters', label: 'ω', insert: '\\omega' },
|
|
1301
1301
|
{ category: 'Lowercase Greek Letters', label: '|', action: 'GREEK_ITALIC_PICKER', title: 'Italic Uppercase Greek', icon: 'vertical-line-picker-template-image', cls: 'arrow-picker-tool greek-italic-picker-tool' },
|
|
1302
1302
|
|
|
1303
|
-
{ category: 'Uppercase Greek Letters', label: '
|
|
1304
|
-
{ category: 'Uppercase Greek Letters', label: '
|
|
1305
|
-
{ category: 'Uppercase Greek Letters', label: '
|
|
1306
|
-
{ category: 'Uppercase Greek Letters', label: '
|
|
1307
|
-
{ category: 'Uppercase Greek Letters', label: '
|
|
1308
|
-
{ category: 'Uppercase Greek Letters', label: '
|
|
1303
|
+
{ category: 'Uppercase Greek Letters', label: 'â„•', insert: '\\mathbb{N}' },
|
|
1304
|
+
{ category: 'Uppercase Greek Letters', label: 'ℤ', insert: '\\mathbb{Z}' },
|
|
1305
|
+
{ category: 'Uppercase Greek Letters', label: 'ℚ', insert: '\\mathbb{Q}' },
|
|
1306
|
+
{ category: 'Uppercase Greek Letters', label: 'â„‚', insert: '\\mathbb{C}' },
|
|
1307
|
+
{ category: 'Uppercase Greek Letters', label: 'â„', insert: '\\mathbb{R}' },
|
|
1308
|
+
{ category: 'Uppercase Greek Letters', label: 'â„™', insert: '\\mathbb{P}' },
|
|
1309
1309
|
{ category: 'Uppercase Greek Letters', label: '|', action: 'BLACKBOARD_BOLD_PICKER', title: 'More Blackboard Bold Letters', icon: 'vertical-line-picker-template-image', cls: 'arrow-picker-tool blackboard-bold-picker-tool' },
|
|
1310
1310
|
|
|
1311
|
-
{ category: 'Fraktur / Gothic Symbols', label: '
|
|
1312
|
-
{ category: 'Fraktur / Gothic Symbols', label: '
|
|
1313
|
-
{ category: 'Fraktur / Gothic Symbols', label: '
|
|
1314
|
-
{ category: 'Fraktur / Gothic Symbols', label: '
|
|
1315
|
-
{ category: 'Fraktur / Gothic Symbols', label: '
|
|
1316
|
-
{ category: 'Fraktur / Gothic Symbols', label: '
|
|
1311
|
+
{ category: 'Fraktur / Gothic Symbols', label: 'ð”„', insert: '\\mathfrak{A}' },
|
|
1312
|
+
{ category: 'Fraktur / Gothic Symbols', label: 'ð’œ', insert: '\\mathscr{A}' },
|
|
1313
|
+
{ category: 'Fraktur / Gothic Symbols', label: 'ð”…', insert: '\\mathfrak{B}' },
|
|
1314
|
+
{ category: 'Fraktur / Gothic Symbols', label: 'ℬ', insert: '\\mathscr{B}' },
|
|
1315
|
+
{ category: 'Fraktur / Gothic Symbols', label: 'â„', insert: '\\mathfrak{C}' },
|
|
1316
|
+
{ category: 'Fraktur / Gothic Symbols', label: 'ð’ž', insert: '\\mathscr{C}' },
|
|
1317
1317
|
{ category: 'Fraktur / Gothic Symbols', label: '|', action: 'FRAKTUR_SCRIPT_PICKER', title: 'More Fraktur and Script Letters', icon: 'vertical-line-picker-template-image', cls: 'arrow-picker-tool fraktur-script-picker-tool' },
|
|
1318
1318
|
|
|
1319
|
-
{ category: 'Hebrew Mathematical Symbols', label: '
|
|
1320
|
-
{ category: 'Hebrew Mathematical Symbols', label: '
|
|
1321
|
-
{ category: 'Hebrew Mathematical Symbols', label: '
|
|
1319
|
+
{ category: 'Hebrew Mathematical Symbols', label: 'â„‘', insert: '\\Im' },
|
|
1320
|
+
{ category: 'Hebrew Mathematical Symbols', label: 'ℜ', insert: '\\Re' },
|
|
1321
|
+
{ category: 'Hebrew Mathematical Symbols', label: 'ð“', insert: '\\ell' },
|
|
1322
1322
|
{ category: 'Hebrew Mathematical Symbols', label: '|', action: 'HEBREW_SYMBOL_PICKER', title: 'More Hebrew Mathematical Symbols', icon: 'vertical-line-picker-template-image', cls: 'arrow-picker-tool hebrew-symbol-picker-tool' },
|
|
1323
1323
|
|
|
1324
|
-
{ category: 'Arabic-Indic Numeral Systems', label: '
|
|
1325
|
-
{ category: 'Arabic-Indic Numeral Systems', label: '
|
|
1324
|
+
{ category: 'Arabic-Indic Numeral Systems', label: '٤٦', action: 'ARABIC_INDIC_NUMERALS', title: 'Arabic-Indic Numerals', icon: 'arabic-indic-numerals-template-image', cls: 'numeral-mode-tool' },
|
|
1325
|
+
{ category: 'Arabic-Indic Numeral Systems', label: 'Û´Û¶', action: 'EASTERN_ARABIC_INDIC_NUMERALS', title: 'Eastern Arabic-Indic Numerals (Persian/Urdu)', icon: 'eastern-arabic-indic-numerals-template-image', cls: 'numeral-mode-tool' },
|
|
1326
1326
|
|
|
1327
1327
|
{ category: 'Blackboard Bold / Number Sets', label: 'H', insert: 'H' },
|
|
1328
1328
|
{ category: 'Blackboard Bold / Number Sets', label: 'C', insert: 'C' },
|
|
@@ -1347,51 +1347,51 @@ const ORDERED_MATH_GROUPS = [
|
|
|
1347
1347
|
id: 'brackets',
|
|
1348
1348
|
label: <BracketsTabIcon />,
|
|
1349
1349
|
items: [
|
|
1350
|
-
{ label: '(
|
|
1351
|
-
{ label: '[
|
|
1352
|
-
{ label: '
|
|
1353
|
-
{ label: '
|
|
1354
|
-
{ label: '
|
|
1355
|
-
{ label: '{
|
|
1356
|
-
{ label: '
|
|
1357
|
-
{ label: '
|
|
1358
|
-
{ label: '
|
|
1350
|
+
{ label: '(â–¡)', insert: '\\left(#0\\right)' },
|
|
1351
|
+
{ label: '[â–¡]', insert: '\\left[#0\\right]' },
|
|
1352
|
+
{ label: '|â–¡|', insert: '\\left|#0\\right|' },
|
|
1353
|
+
{ label: '‖□‖', insert: '\\left\\| #0 \\right\\|' },
|
|
1354
|
+
{ label: '⟨□⟩', insert: '\\left\\langle #0 \\right\\rangle' },
|
|
1355
|
+
{ label: '{â–¡}', insert: '\\left\\{#0\\right\\}' },
|
|
1356
|
+
{ label: '⌊□⌋', insert: '\\left\\lfloor #0 \\right\\rfloor' },
|
|
1357
|
+
{ label: '⌈□⌉', insert: '\\left\\lceil #0 \\right\\rceil' },
|
|
1358
|
+
{ label: '⟨□|□⟩', insert: '\\left\\langle #0 \\middle| #? \\right\\rangle' },
|
|
1359
1359
|
{ type: 'sep', cols: 2 },
|
|
1360
1360
|
{ label: 'overbrace', insert: '\\overbrace{#0}', cls: 'template', directInsert: true, title: 'Overbrace', icon: 'overbrace-arc-template-image' },
|
|
1361
1361
|
{ label: 'underbrace', insert: '\\underbrace{#0}', cls: 'template', directInsert: true, title: 'Underbrace', icon: 'underbrace-arc-template-image' },
|
|
1362
1362
|
{ label: 'overparen', insert: '\\overparen{#0}', cls: 'template', directInsert: true, title: 'Overparen', icon: 'overparen-template-image' },
|
|
1363
1363
|
{ label: 'underparen', insert: '\\underparen{#0}', cls: 'template', directInsert: true, title: 'Underparen', icon: 'underparen-template-image' },
|
|
1364
1364
|
{ type: 'sep', cols: 2 },
|
|
1365
|
-
{ label: '
|
|
1366
|
-
{ label: '
|
|
1367
|
-
{ label: '
|
|
1368
|
-
{ label: '
|
|
1369
|
-
{ label: '^\n
|
|
1370
|
-
{ label: '~\n
|
|
1371
|
-
{ label: '
|
|
1372
|
-
{ label: '
|
|
1365
|
+
{ label: '⃗\n▯', insert: '\\vec{#0}', cls: 'template', directInsert: true, title: 'Vector Accent', icon: 'vec-accent-template-image' },
|
|
1366
|
+
{ label: '→\n▯', insert: '\\overrightarrow{#?}', cls: 'template', directInsert: true, title: 'Right Arrow Accent', icon: 'overrightarrow-accent-template-image' },
|
|
1367
|
+
{ label: '↔\n▯', insert: '\\overleftrightarrow{#?}', cls: 'template', directInsert: true, title: 'Left-Right Arrow Accent', icon: 'overleftrightarrow-accent-template-image' },
|
|
1368
|
+
{ label: '¯\n▯', insert: '\\overline{#?}', cls: 'template', directInsert: true, title: 'Overline Accent', icon: 'overline-accent-template-image' },
|
|
1369
|
+
{ label: '^\nâ–¯', insert: '\\hat{#?}', cls: 'template', directInsert: true, title: 'Hat Accent', icon: 'hat-accent-template-image' },
|
|
1370
|
+
{ label: '~\nâ–¯', insert: '\\tilde{#?}', cls: 'template', directInsert: true, title: 'Tilde Accent', icon: 'tilde-accent-template-image' },
|
|
1371
|
+
{ label: '¨\n▯', insert: '\\ddot{#?}', cls: 'template', directInsert: true, title: 'Double Dot Accent', icon: 'ddot-accent-template-image' },
|
|
1372
|
+
{ label: 'Ë™\nâ–¯', insert: '\\dot{#?}', cls: 'template', directInsert: true, title: 'Dot Accent', icon: 'dot-accent-template-image' },
|
|
1373
1373
|
{ type: 'sep', cols: 2 },
|
|
1374
|
-
{ label: '
|
|
1375
|
-
{ label: '_\n
|
|
1376
|
-
{ label: '|\n
|
|
1377
|
-
{ label: '
|
|
1378
|
-
{ label: '
|
|
1379
|
-
{ label: '(\n
|
|
1380
|
-
{ label: '
|
|
1381
|
-
{ label: '
|
|
1374
|
+
{ label: '¯\n▯', insert: '\\overline{#?}', cls: 'template', directInsert: true, title: 'Overline', icon: 'overline-frame-template-image' },
|
|
1375
|
+
{ label: '_\nâ–¯', insert: '\\underline{#?}', cls: 'template', directInsert: true, title: 'Underline', icon: 'underline-frame-template-image' },
|
|
1376
|
+
{ label: '|\nâ–¯', insert: '\\left|#?\\right.', cls: 'template', directInsert: true, title: 'Left Bar', icon: 'left-bar-template-image' },
|
|
1377
|
+
{ label: 'â–¯\n|', insert: '\\left.#?\\right|', cls: 'template', directInsert: true, title: 'Right Bar', icon: 'right-bar-template-image' },
|
|
1378
|
+
{ label: 'â–¡\nâ–¯', insert: '\\boxed{#?}', cls: 'template', directInsert: true, title: 'Boxed', icon: 'boxed-square-template-image' },
|
|
1379
|
+
{ label: '(\nâ–¯\n)', insert: '\\enclose{circle}{#?}', cls: 'template', directInsert: true, title: 'Rounded Enclosure', icon: 'paren-frame-template-image' },
|
|
1380
|
+
{ label: '¯\n▯|', insert: '\\overline{\\left.#?\\right|}', cls: 'template', directInsert: true, title: 'Overline with Right Bar', icon: 'overline-right-bar-template-image' },
|
|
1381
|
+
{ label: 'â–¢\nâ–¯', insert: '\\enclose{roundedbox}{#?}', cls: 'template', directInsert: true, title: 'Rounded Boxed', icon: 'boxed-rounded-template-image' },
|
|
1382
1382
|
{ type: 'sep', cols: 2 },
|
|
1383
|
-
{ label: '
|
|
1384
|
-
{ label: '
|
|
1385
|
-
{ label: '
|
|
1386
|
-
{ label: '
|
|
1387
|
-
{ label: '
|
|
1388
|
-
{ label: ')\n
|
|
1389
|
-
{ label: '
|
|
1383
|
+
{ label: '╱\n▯', insert: '\\cancel{#?}', cls: 'template', directInsert: true, title: 'Cancel', icon: 'cancel-diagonal-template-image' },
|
|
1384
|
+
{ label: '╲\n▯', insert: '\\bcancel{#?}', cls: 'template', directInsert: true, title: 'Backward Cancel', icon: 'bcancel-template-image' },
|
|
1385
|
+
{ label: '─\n▯', insert: '\\enclose{horizontalstrike}{#?}', cls: 'template', directInsert: true, title: 'Strikeout Text', icon: 'sout-template-image' },
|
|
1386
|
+
{ label: '╳\n▯', insert: '\\xcancel{#?}', cls: 'template', directInsert: true, title: 'Cross Cancel', icon: 'xcancel-template-image' },
|
|
1387
|
+
{ label: '│\n▯', insert: '\\enclose{verticalstrike}{#?}', cls: 'template', directInsert: true, title: 'Vertical Strike', icon: 'vertical-strike-template-image' },
|
|
1388
|
+
{ label: ')\n¯', insert: '\\overline{\\left)#?\\right.}', cls: 'template', directInsert: true, title: 'Overline with Curved Left Boundary', icon: 'overline-left-curve-template-image' },
|
|
1389
|
+
{ label: '┼\n▯', insert: '\\enclose{verticalstrike horizontalstrike}{#?}', cls: 'template', directInsert: true, title: 'Vertical and Horizontal Strike', icon: 'crosshair-strike-template-image' },
|
|
1390
1390
|
],
|
|
1391
1391
|
},
|
|
1392
1392
|
{
|
|
1393
1393
|
id: 'sets',
|
|
1394
|
-
label: <TabIcon top="
|
|
1394
|
+
label: <TabIcon top="Σ ∪" compact />,
|
|
1395
1395
|
items: [
|
|
1396
1396
|
{ label: 'sum-limits-both', insert: '\\sum\\limits_{#?}^{#?}', cls: 'template', directInsert: true, title: 'Summation With Upper and Lower Limits', icon: 'sum-limits-both-template-image' },
|
|
1397
1397
|
{ label: 'sum-limits-lower', insert: '\\sum\\limits_{#?}', cls: 'template', directInsert: true, title: 'Summation With Lower Limit', icon: 'sum-limits-lower-template-image' },
|
|
@@ -1401,17 +1401,17 @@ const ORDERED_MATH_GROUPS = [
|
|
|
1401
1401
|
{ label: 'prod-limits-lower', insert: '\\prod\\limits_{#?}', cls: 'template', directInsert: true, title: 'Product With Lower Limit', icon: 'prod-limits-lower-template-image' },
|
|
1402
1402
|
{ label: 'prod-right-both', insert: '\\prod\\nolimits^{#?}_{#?}', cls: 'template', directInsert: true, title: 'Product With Right Superscript and Subscript', icon: 'prod-right-both-template-image' },
|
|
1403
1403
|
{ label: 'prod-right-lower', insert: '\\prod\\nolimits_{#?}', cls: 'template', directInsert: true, title: 'Product With Right Subscript', icon: 'prod-right-lower-template-image' },
|
|
1404
|
-
{ label: '
|
|
1405
|
-
{ label: '
|
|
1406
|
-
{ label: '
|
|
1407
|
-
{ label: '
|
|
1408
|
-
{ label: '
|
|
1409
|
-
{ label: '
|
|
1410
|
-
{ label: '
|
|
1411
|
-
{ label: '
|
|
1412
|
-
{ label: '
|
|
1413
|
-
{ label: '
|
|
1414
|
-
{ label: '
|
|
1404
|
+
{ label: 'â–¡\nâ–¯\nâ–¡', insert: '\\displaystyle{\\underset{\\htmlStyle{font-size:1.1em;display:inline-block;padding-top:0.34em;line-height:1.15}{#?}}{\\overset{\\htmlStyle{font-size:1.1em;display:inline-block;padding-bottom:0.34em;line-height:1.15}{#?}}{\\htmlStyle{font-size:1.45em;line-height:1.1}{#0}}}}', cls: 'template', directInsert: true, title: 'Operator With Upper and Lower Limits', icon: 'operator-limits-both-template-image' },
|
|
1405
|
+
{ label: 'â–¯\nâ–¡', insert: '\\displaystyle{\\underset{\\htmlStyle{font-size:1.1em;display:inline-block;padding-top:0.34em;line-height:1.15}{#?}}{\\htmlStyle{font-size:1.45em;line-height:1.1}{#0}}}', cls: 'template', directInsert: true, title: 'Operator With Lower Limit', icon: 'operator-lower-limit-template-image' },
|
|
1406
|
+
{ label: 'â–¯^â–¡_â–¡', insert: '\\displaystyle{\\htmlStyle{font-size:1.45em;line-height:1.1}{#0}^{\\htmlStyle{font-size:1.1em;display:inline-block;padding-bottom:0.26em;line-height:1.15}{#?}}_{\\htmlStyle{font-size:1.1em;display:inline-block;padding-top:0.26em;line-height:1.15}{#?}}}', cls: 'template', directInsert: true, title: 'Operator With Right Superscript and Subscript', icon: 'operator-right-sup-sub-template-image' },
|
|
1407
|
+
{ label: 'â–¯_â–¡', insert: '\\displaystyle{\\htmlStyle{font-size:1.45em;line-height:1.1}{#0}_{\\htmlStyle{font-size:1.1em;display:inline-block;padding-top:0.26em;line-height:1.15}{#?}}}', cls: 'template', directInsert: true, title: 'Operator With Right Subscript', icon: 'operator-right-sub-template-image' },
|
|
1408
|
+
{ label: 'â‹‚', insert: '\\bigcap' },
|
|
1409
|
+
{ label: '⋃', insert: '\\bigcup' },
|
|
1410
|
+
{ label: 'âˆ', insert: '\\prod' },
|
|
1411
|
+
{ label: 'âˆ', insert: '\\coprod' },
|
|
1412
|
+
{ label: '⨅', insert: '\\sqcap' },
|
|
1413
|
+
{ label: '⨆', insert: '\\sqcup' },
|
|
1414
|
+
{ label: '∑', insert: '\\sum' },
|
|
1415
1415
|
],
|
|
1416
1416
|
},
|
|
1417
1417
|
{
|
|
@@ -1421,41 +1421,41 @@ const ORDERED_MATH_GROUPS = [
|
|
|
1421
1421
|
items: [
|
|
1422
1422
|
{ label: 'integral-both', insert: '\\int_{#?}^{#?}', cls: 'template', directInsert: true, title: 'Definite Integral', icon: 'integral-both-template-image' },
|
|
1423
1423
|
{ label: 'integral-lower', insert: '\\int_{#?}', cls: 'template', directInsert: true, title: 'Integral With Subscript', icon: 'integral-lower-template-image' },
|
|
1424
|
-
{ label: '
|
|
1424
|
+
{ label: '∫□d□', insert: '\\int_{#?}^{#?} #? \\, d#?', directInsert: true, title: 'Integral', icon: 'integral-box-differential-template-image' },
|
|
1425
1425
|
{ label: '', insert: '\\int_{#?} #? \\, d#?', cls: 'template', directInsert: true, title: 'Integral', icon: 'integral-template-image' },
|
|
1426
1426
|
{ type: 'sep', cols: 4 },
|
|
1427
1427
|
{label: 'd', insert: 'd', cls: 'template', directInsert: true, title: 'Differential'},
|
|
1428
|
-
{label: '
|
|
1428
|
+
{label: '∂', insert: '∂', cls: 'template', directInsert: true, title: 'Partial Differential'},
|
|
1429
1429
|
{ label: 'first-derivative', insert: '\\frac{d#?}{d#?}', cls: 'template', directInsert: true, title: 'First Derivative', icon: 'first-derivative-template-image' },
|
|
1430
1430
|
{ label: 'partial-derivative', insert: '\\frac{\\partial#?}{\\partial#?}', cls: 'template', directInsert: true, title: 'Partial Derivative', icon: 'partial-derivative-template-image' },
|
|
1431
1431
|
{ label: 'limit-infinity', insert: '\\lim_{#?\\to\\infty}', cls: 'template', directInsert: true, title: 'Limit to Infinity', icon: 'limit-infinity-template-image' },
|
|
1432
1432
|
{ label: 'limit-generic', insert: '\\lim_{#?}', cls: 'template', directInsert: true, title: 'Limit', icon: 'limit-generic-template-image' },
|
|
1433
1433
|
{ type: 'sep', cols: 2 },
|
|
1434
|
-
{ label: '
|
|
1435
|
-
{ label: '
|
|
1436
|
-
{ label: '
|
|
1437
|
-
{ label: '
|
|
1434
|
+
{ label: '∇×\n▯', insert: '\\nabla \\times #?', cls: 'template', directInsert: true, title: 'Curl' },
|
|
1435
|
+
{ label: '∇·\n▯', insert: '\\nabla \\cdot #?', cls: 'template', directInsert: true, title: 'Divergence' },
|
|
1436
|
+
{ label: '∇\n▯', insert: '\\nabla #?', cls: 'template', directInsert: true, title: 'Gradient' },
|
|
1437
|
+
{ label: 'Δ\n▯', insert: '\\Delta #?', cls: 'template', directInsert: true, title: 'Delta Expression' },
|
|
1438
1438
|
{ type: 'sep', cols: 3 },
|
|
1439
|
-
{ label: '
|
|
1440
|
-
{ label: '
|
|
1441
|
-
{ label: '
|
|
1442
|
-
{ label: '
|
|
1443
|
-
{ label: '
|
|
1444
|
-
{ label: '
|
|
1439
|
+
{ label: '∫', insert: '\\int' },
|
|
1440
|
+
{ label: '∮', insert: '\\oint' },
|
|
1441
|
+
{ label: '∬', insert: '\\iint' },
|
|
1442
|
+
{ label: '∯', insert: '\\oiint' },
|
|
1443
|
+
{ label: 'âˆ', insert: '\\iiint' },
|
|
1444
|
+
{ label: '∰', insert: '\\oiiint' },
|
|
1445
1445
|
{ type: 'sep', cols: 2 },
|
|
1446
|
-
{ label: 'log(
|
|
1447
|
-
{ label: 'log
|
|
1446
|
+
{ label: 'log(â–¡)', insert: '\\log\\left(#0\\right)' },
|
|
1447
|
+
{ label: 'logâ‚□₎(â–¡)', insert: '\\log_{#?}\\left(#?\\right)', cls: 'template', directInsert: true, title: 'Logarithm With Base', icon: 'log-base-template-image' },
|
|
1448
1448
|
{ type: 'sep', cols: 4 },
|
|
1449
|
-
{ label: 'sin(
|
|
1450
|
-
{ label: 'cos(
|
|
1451
|
-
{ label: 'tan(
|
|
1452
|
-
{ label: 'ln(
|
|
1453
|
-
{ label: 'sin
|
|
1454
|
-
{ label: 'csc(
|
|
1455
|
-
{ label: 'cos
|
|
1456
|
-
{ label: 'sec(
|
|
1457
|
-
{ label: 'tan
|
|
1458
|
-
{ label: 'cot(
|
|
1449
|
+
{ label: 'sin(â–¡)', insert: '\\sin\\left(#0\\right)' },
|
|
1450
|
+
{ label: 'cos(â–¡)', insert: '\\cos\\left(#0\\right)' },
|
|
1451
|
+
{ label: 'tan(â–¡)', insert: '\\tan\\left(#0\\right)' },
|
|
1452
|
+
{ label: 'ln(â–¡)', insert: '\\ln\\left(#0\\right)' },
|
|
1453
|
+
{ label: 'sinâ»Â¹(â–¡)', insert: '\\sin^{-1}\\left(#0\\right)' },
|
|
1454
|
+
{ label: 'csc(â–¡)', insert: '\\csc\\left(#0\\right)' },
|
|
1455
|
+
{ label: 'cosâ»Â¹(â–¡)', insert: '\\cos^{-1}\\left(#0\\right)' },
|
|
1456
|
+
{ label: 'sec(â–¡)', insert: '\\sec\\left(#0\\right)' },
|
|
1457
|
+
{ label: 'tanâ»Â¹(â–¡)', insert: '\\tan^{-1}\\left(#0\\right)' },
|
|
1458
|
+
{ label: 'cot(â–¡)', insert: '\\cot\\left(#0\\right)' },
|
|
1459
1459
|
],
|
|
1460
1460
|
},
|
|
1461
1461
|
{
|
|
@@ -1481,7 +1481,7 @@ const CHEM_GROUPS = [
|
|
|
1481
1481
|
items: ['Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca'].map(el => ({ label: el, insert: el, cls: 'chem-element' }))
|
|
1482
1482
|
},
|
|
1483
1483
|
{
|
|
1484
|
-
label: 'Fe-Zn
|
|
1484
|
+
label: 'Fe-Zn →⇌', isChem: true, items: [
|
|
1485
1485
|
...['Fe', 'Cu', 'Zn', 'Mn'].map(el => ({ label: el, insert: el, cls: 'chem-element' })),
|
|
1486
1486
|
{ type: 'sep', cols: 2 },
|
|
1487
1487
|
...['Cr', 'Ni', 'Co', 'Ag'].map(el => ({ label: el, insert: el, cls: 'chem-element' })),
|
|
@@ -1492,25 +1492,25 @@ const CHEM_GROUPS = [
|
|
|
1492
1492
|
{ type: 'sep', cols: 2 },
|
|
1493
1493
|
{ label: 'Xe', insert: 'Xe', cls: 'chem-element' },
|
|
1494
1494
|
{ type: 'sep', cols: 5 },
|
|
1495
|
-
{ label: '
|
|
1496
|
-
{ label: '
|
|
1495
|
+
{ label: '→', insert: '->', cls: 'chem-arrow' }, { label: '⇌', insert: '<=>', cls: 'chem-arrow' },
|
|
1496
|
+
{ label: 'â†', insert: '<-', cls: 'chem-arrow' }, { label: '⇄', insert: '<->', cls: 'chem-arrow' }, { label: '↑', insert: '^', cls: 'chem-arrow' },
|
|
1497
1497
|
{ type: 'sep', cols: 4 },
|
|
1498
|
-
{ label: '
|
|
1499
|
-
{ label: '
|
|
1498
|
+
{ label: '↓', insert: 'v', cls: 'chem-arrow' }, { label: '+', insert: ' + ', cls: 'chem-arrow' },
|
|
1499
|
+
{ label: '→(Δ)', insert: '->[\\Delta]', cls: 'chem-arrow' }, { label: '→(aq)', insert: '->[aq]', cls: 'chem-arrow' },
|
|
1500
1500
|
]
|
|
1501
1501
|
},
|
|
1502
1502
|
{
|
|
1503
|
-
label: '(s)(l)
|
|
1503
|
+
label: '(s)(l) âº/â»', isChem: true, items: [
|
|
1504
1504
|
{ label: '(s)', insert: '(s)', cls: 'chem-state' }, { label: '(l)', insert: '(l)', cls: 'chem-state' },
|
|
1505
1505
|
{ label: '(g)', insert: '(g)', cls: 'chem-state' }, { label: '(aq)', insert: '(aq)', cls: 'chem-state' },
|
|
1506
1506
|
{ type: 'sep', cols: 2 },
|
|
1507
1507
|
{ label: '(conc)', insert: '(conc)', cls: 'chem-state' },
|
|
1508
1508
|
{ label: '(dil)', insert: '(dil)', cls: 'chem-state' }, { label: '(ppt)', insert: '(ppt)', cls: 'chem-state' },
|
|
1509
1509
|
{ type: 'sep', cols: 2 },
|
|
1510
|
-
{ label: '
|
|
1511
|
-
{ label: '
|
|
1510
|
+
{ label: '✚', insert: '^{+}', cls: 'chem-element' }, { label: 'â”', insert: '^{-}', cls: 'chem-element' },
|
|
1511
|
+
{ label: '²âº', insert: '^{2+}', cls: 'chem-element' }, { label: '²â»', insert: '^{2-}', cls: 'chem-element' },
|
|
1512
1512
|
{ type: 'sep', cols: 2 },
|
|
1513
|
-
{ label: '
|
|
1513
|
+
{ label: '³âº', insert: '^{3+}', cls: 'chem-element' }, { label: '³â»', insert: '^{3-}', cls: 'chem-element' },
|
|
1514
1514
|
{ label: '2', insert: '2', cls: 'chem-element' }, { label: '3', insert: '3', cls: 'chem-element' },
|
|
1515
1515
|
{ type: 'sep', cols: 2 },
|
|
1516
1516
|
{ label: '4', insert: '4', cls: 'chem-element' }, { label: '5', insert: '5', cls: 'chem-element' },
|
|
@@ -1521,17 +1521,17 @@ const CHEM_GROUPS = [
|
|
|
1521
1521
|
]
|
|
1522
1522
|
},
|
|
1523
1523
|
{
|
|
1524
|
-
label: 'H
|
|
1525
|
-
{ label: 'H
|
|
1526
|
-
{ label: 'NH
|
|
1524
|
+
label: 'Hâ‚‚O', isChem: true, items: [
|
|
1525
|
+
{ label: 'Hâ‚‚O', insert: 'H2O', cls: 'chem-element' }, { label: 'COâ‚‚', insert: 'CO2', cls: 'chem-element' },
|
|
1526
|
+
{ label: 'NH₃', insert: 'NH3', cls: 'chem-element' }, { label: 'H₂SO₄', insert: 'H2SO4', cls: 'chem-element' },
|
|
1527
1527
|
{ label: 'HCl', insert: 'HCl', cls: 'chem-element' }, { label: 'NaOH', insert: 'NaOH', cls: 'chem-element' },
|
|
1528
|
-
{ label: 'NaCl', insert: 'NaCl', cls: 'chem-element' }, { label: 'CaCO
|
|
1529
|
-
{ label: 'HNO
|
|
1530
|
-
{ label: 'CH
|
|
1531
|
-
{ label: 'CH
|
|
1532
|
-
{ label: 'CO
|
|
1533
|
-
{ label: 'NO
|
|
1534
|
-
{ label: 'NH
|
|
1528
|
+
{ label: 'NaCl', insert: 'NaCl', cls: 'chem-element' }, { label: 'CaCO₃', insert: 'CaCO3', cls: 'chem-element' },
|
|
1529
|
+
{ label: 'HNO₃', insert: 'HNO3', cls: 'chem-element' }, { label: 'H₃PO₄', insert: 'H3PO4', cls: 'chem-element' },
|
|
1530
|
+
{ label: 'CH₃COOH', insert: 'CH3COOH', cls: 'chem-element' }, { label: 'C₆Hâ‚â‚‚O₆', insert: 'C6H12O6', cls: 'chem-element' },
|
|
1531
|
+
{ label: 'CHâ‚„', insert: 'CH4', cls: 'chem-element' }, { label: 'Câ‚‚Hâ‚…OH', insert: 'C2H5OH', cls: 'chem-element' },
|
|
1532
|
+
{ label: 'CO₃²â»', insert: 'CO3^{2-}', cls: 'chem-element' }, { label: 'SO₄²â»', insert: 'SO4^{2-}', cls: 'chem-element' },
|
|
1533
|
+
{ label: 'NO₃â»', insert: 'NO3^-', cls: 'chem-element' }, { label: 'PO₄³â»', insert: 'PO4^{3-}', cls: 'chem-element' },
|
|
1534
|
+
{ label: 'NHâ‚„âº', insert: 'NH4^+', cls: 'chem-element' }, { label: 'OHâ»', insert: 'OH^-', cls: 'chem-element' },
|
|
1535
1535
|
]
|
|
1536
1536
|
},
|
|
1537
1537
|
];
|
|
@@ -1718,10 +1718,10 @@ function ArrowTemplateIcon({ arrow, above = '', below = '' }) {
|
|
|
1718
1718
|
);
|
|
1719
1719
|
}
|
|
1720
1720
|
|
|
1721
|
-
/*
|
|
1721
|
+
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
|
|
1722
1722
|
CKEditor inline widget plugin for MathLive rendering
|
|
1723
1723
|
Uses createRawElement so CKEditor won't touch the DOM inside
|
|
1724
|
-
|
|
1724
|
+
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
|
|
1725
1725
|
class MathInlinePlugin extends Plugin {
|
|
1726
1726
|
static get pluginName() {
|
|
1727
1727
|
return 'MathInlinePlugin';
|
|
@@ -1734,7 +1734,7 @@ class MathInlinePlugin extends Plugin {
|
|
|
1734
1734
|
init() {
|
|
1735
1735
|
const editor = this.editor;
|
|
1736
1736
|
|
|
1737
|
-
// 1) Register model element
|
|
1737
|
+
// 1) Register model element — isObject: true treats it as one atomic block
|
|
1738
1738
|
editor.model.schema.register('mathInline', {
|
|
1739
1739
|
isInline: true,
|
|
1740
1740
|
isObject: true,
|
|
@@ -1749,7 +1749,7 @@ class MathInlinePlugin extends Plugin {
|
|
|
1749
1749
|
}
|
|
1750
1750
|
});
|
|
1751
1751
|
|
|
1752
|
-
// 2) Editing downcast
|
|
1752
|
+
// 2) Editing downcast — what the user SEES in the editor
|
|
1753
1753
|
// createRawElement lets us manage the DOM ourselves (MathLive web component)
|
|
1754
1754
|
editor.conversion.for('editingDowncast').elementToElement({
|
|
1755
1755
|
model: 'mathInline',
|
|
@@ -1798,7 +1798,7 @@ class MathInlinePlugin extends Plugin {
|
|
|
1798
1798
|
mf.style.direction = dir;
|
|
1799
1799
|
mf.style.textAlign = dir === 'rtl' ? 'right' : 'left';
|
|
1800
1800
|
mf.style.unicodeBidi = dir === 'rtl' ? 'plaintext' : 'normal';
|
|
1801
|
-
mf.style.color = '#
|
|
1801
|
+
mf.style.color = '#000000';
|
|
1802
1802
|
|
|
1803
1803
|
const setLatex = () => {
|
|
1804
1804
|
if (mf.setValue) mf.setValue(latex, { silenceNotifications: true });
|
|
@@ -1846,7 +1846,7 @@ class MathInlinePlugin extends Plugin {
|
|
|
1846
1846
|
);
|
|
1847
1847
|
}, { priority: 'high' });
|
|
1848
1848
|
|
|
1849
|
-
// 3) Data downcast
|
|
1849
|
+
// 3) Data downcast — what getData() returns (HTML output)
|
|
1850
1850
|
editor.conversion.for('dataDowncast').elementToElement({
|
|
1851
1851
|
model: 'mathInline',
|
|
1852
1852
|
view: (modelElement, { writer }) => {
|
|
@@ -1864,7 +1864,7 @@ class MathInlinePlugin extends Plugin {
|
|
|
1864
1864
|
},
|
|
1865
1865
|
});
|
|
1866
1866
|
|
|
1867
|
-
// 4) Upcast
|
|
1867
|
+
// 4) Upcast — recognize HTML from getData() and convert back to model
|
|
1868
1868
|
editor.conversion.for('upcast').elementToElement({
|
|
1869
1869
|
view: {
|
|
1870
1870
|
name: 'span',
|
|
@@ -1883,10 +1883,10 @@ class MathInlinePlugin extends Plugin {
|
|
|
1883
1883
|
}
|
|
1884
1884
|
}
|
|
1885
1885
|
|
|
1886
|
-
/*
|
|
1887
|
-
Toolbar buttons plugin
|
|
1888
|
-
|
|
1889
|
-
/* SVG icons for toolbar
|
|
1886
|
+
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
|
|
1887
|
+
Toolbar buttons plugin — Math + Chem
|
|
1888
|
+
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
|
|
1889
|
+
/* SVG icons for toolbar — matches the MathType / ChemType icons */
|
|
1890
1890
|
const MATH_ICON_SVG = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20"><path d="M4 12h3l3 6l5-12h5" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>';
|
|
1891
1891
|
|
|
1892
1892
|
const CHEM_ICON_SVG = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20"><rect x="3" y="3" width="18" height="18" rx="3" fill="none" stroke="currentColor" stroke-width="2"/><text x="12" y="16" text-anchor="middle" font-size="12" font-weight="bold" fill="currentColor" font-family="system-ui, sans-serif">C</text><text x="6" y="8" font-size="4" font-weight="bold" fill="currentColor" font-family="system-ui, sans-serif">6</text></svg>';
|
|
@@ -2308,51 +2308,51 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2308
2308
|
'sum-limits-both-template-image': makeToolbarIconImage(`
|
|
2309
2309
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 90" fill="none">
|
|
2310
2310
|
<rect x="24" y="2" width="12" height="20" stroke="#6aa56a" stroke-width="2"/>
|
|
2311
|
-
<text x="30" y="58" font-size="64" text-anchor="middle" fill="#000"
|
|
2311
|
+
<text x="30" y="58" font-size="64" text-anchor="middle" fill="#000">∑</text>
|
|
2312
2312
|
<rect x="24" y="72" width="12" height="20" stroke="#6aa56a" stroke-width="2"/>
|
|
2313
2313
|
</svg>
|
|
2314
2314
|
`),
|
|
2315
2315
|
'sum-right-both-template-image': makeToolbarIconImage(`
|
|
2316
2316
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 72" fill="none">
|
|
2317
|
-
<text x="20" y="52" font-size="54" fill="#000"
|
|
2317
|
+
<text x="20" y="52" font-size="54" fill="#000">∑</text>
|
|
2318
2318
|
<rect x="50" y="6" width="10" height="18" stroke="#6aa56a" stroke-width="2"/>
|
|
2319
2319
|
<rect x="50" y="46" width="10" height="18" stroke="#6aa56a" stroke-width="2"/>
|
|
2320
2320
|
</svg>
|
|
2321
2321
|
`),
|
|
2322
2322
|
'sum-limits-lower-template-image': makeToolbarIconImage(`
|
|
2323
2323
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 90" fill="none">
|
|
2324
|
-
<text x="30" y="58" font-size="64" text-anchor="middle" fill="#000"
|
|
2324
|
+
<text x="30" y="58" font-size="64" text-anchor="middle" fill="#000">∑</text>
|
|
2325
2325
|
<rect x="24" y="72" width="12" height="20" stroke="#6aa56a" stroke-width="2"/>
|
|
2326
2326
|
</svg>
|
|
2327
2327
|
`),
|
|
2328
2328
|
'sum-right-lower-template-image': makeToolbarIconImage(`
|
|
2329
2329
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 72 90" fill="none">
|
|
2330
|
-
<text x="26" y="58" font-size="64" text-anchor="middle" fill="#000"
|
|
2330
|
+
<text x="26" y="58" font-size="64" text-anchor="middle" fill="#000">∑</text>
|
|
2331
2331
|
<rect x="50" y="58" width="12" height="20" stroke="#6aa56a" stroke-width="2"/>
|
|
2332
2332
|
</svg>
|
|
2333
2333
|
`),
|
|
2334
2334
|
'prod-limits-both-template-image': makeToolbarIconImage(`
|
|
2335
2335
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 96" fill="none">
|
|
2336
2336
|
<rect x="27" y="2" width="10" height="18" stroke="#6aa56a" stroke-width="2"/>
|
|
2337
|
-
<text x="12" y="62" font-size="58" font-family="Times New Roman" fill="#000"
|
|
2337
|
+
<text x="12" y="62" font-size="58" font-family="Times New Roman" fill="#000">âˆ</text>
|
|
2338
2338
|
<rect x="27" y="74" width="10" height="18" stroke="#6aa56a" stroke-width="2"/>
|
|
2339
2339
|
</svg>
|
|
2340
2340
|
`),
|
|
2341
2341
|
'prod-limits-lower-template-image': makeToolbarIconImage(`
|
|
2342
2342
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 96" fill="none">
|
|
2343
|
-
<text x="12" y="62" font-size="58" font-family="Times New Roman" fill="#000"
|
|
2343
|
+
<text x="12" y="62" font-size="58" font-family="Times New Roman" fill="#000">âˆ</text>
|
|
2344
2344
|
<rect x="27" y="74" width="10" height="18" stroke="#6aa56a" stroke-width="2"/>
|
|
2345
2345
|
</svg>
|
|
2346
2346
|
`),
|
|
2347
2347
|
'prod-right-lower-template-image': makeToolbarIconImage(`
|
|
2348
2348
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 72 72" fill="none">
|
|
2349
|
-
<text x="12" y="54" font-size="58" font-family="Times New Roman" fill="#000"
|
|
2349
|
+
<text x="12" y="54" font-size="58" font-family="Times New Roman" fill="#000">âˆ</text>
|
|
2350
2350
|
<rect x="52" y="44" width="10" height="18" stroke="#6aa56a" stroke-width="2"/>
|
|
2351
2351
|
</svg>
|
|
2352
2352
|
`),
|
|
2353
2353
|
'prod-right-both-template-image': makeToolbarIconImage(`
|
|
2354
2354
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 72 72" fill="none">
|
|
2355
|
-
<text x="10" y="54" font-size="58" fill="#000"
|
|
2355
|
+
<text x="10" y="54" font-size="58" fill="#000">âˆ</text>
|
|
2356
2356
|
<rect x="52" y="6" width="10" height="18" stroke="#6aa56a" stroke-width="2"/>
|
|
2357
2357
|
<rect x="52" y="44" width="10" height="18" stroke="#6aa56a" stroke-width="2"/>
|
|
2358
2358
|
</svg>
|
|
@@ -2386,7 +2386,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2386
2386
|
`),
|
|
2387
2387
|
'definite-integral-template-image': makeToolbarIconImage(`
|
|
2388
2388
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
|
|
2389
|
-
<text x="0.95" y="14.05" font-size="14.2" font-family="Cambria Math, STIX Two Math, Times New Roman, serif" font-weight="700" fill="#37474f"
|
|
2389
|
+
<text x="0.95" y="14.05" font-size="14.2" font-family="Cambria Math, STIX Two Math, Times New Roman, serif" font-weight="700" fill="#37474f">∫</text>
|
|
2390
2390
|
<rect x="5.1" y="1.2" width="2.55" height="2.55" rx="0.42" fill="none" stroke="#4a5559" stroke-width="1.15"/>
|
|
2391
2391
|
<rect x="2.1" y="13.15" width="2.55" height="2.55" rx="0.42" fill="none" stroke="#4a5559" stroke-width="1.15"/>
|
|
2392
2392
|
<rect x="8.45" y="6.15" width="3.8" height="3.8" rx="0.58" fill="none" stroke="#4a5559" stroke-width="1.2"/>
|
|
@@ -2394,7 +2394,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2394
2394
|
`),
|
|
2395
2395
|
'integral-with-differential-template-image': makeToolbarIconImage(`
|
|
2396
2396
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
|
|
2397
|
-
<text x="0.95" y="13.85" font-size="14.6" font-family="Cambria Math, STIX Two Math, Times New Roman, serif" font-weight="700" fill="#37474f"
|
|
2397
|
+
<text x="0.95" y="13.85" font-size="14.6" font-family="Cambria Math, STIX Two Math, Times New Roman, serif" font-weight="700" fill="#37474f">∫</text>
|
|
2398
2398
|
<rect x="6.55" y="6.15" width="3.05" height="3.05" rx="0.48" fill="none" stroke="#4a5559" stroke-width="1.15"/>
|
|
2399
2399
|
<text x="10.55" y="8.95" font-size="4.95" font-family="Arial, Helvetica, sans-serif" font-weight="700" fill="#37474f">d</text>
|
|
2400
2400
|
<rect x="13.15" y="6.15" width="3.05" height="3.05" rx="0.48" fill="none" stroke="#4a5559" stroke-width="1.15"/>
|
|
@@ -2411,7 +2411,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2411
2411
|
`),
|
|
2412
2412
|
'integral-with-differential': makeToolbarIconImage(`
|
|
2413
2413
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
|
|
2414
|
-
<text x="0.95" y="13.85" font-size="14.6" font-family="Cambria Math, STIX Two Math, Times New Roman, serif" font-weight="700" fill="#37474f"
|
|
2414
|
+
<text x="0.95" y="13.85" font-size="14.6" font-family="Cambria Math, STIX Two Math, Times New Roman, serif" font-weight="700" fill="#37474f">∫</text>
|
|
2415
2415
|
<rect x="6.55" y="6.15" width="3.05" height="3.05" rx="0.48" fill="none" stroke="#4a5559" stroke-width="1.15"/>
|
|
2416
2416
|
<text x="10.55" y="8.95" font-size="4.95" font-family="Arial, Helvetica, sans-serif" font-weight="700" fill="#37474f">d</text>
|
|
2417
2417
|
<rect x="13.15" y="6.15" width="3.05" height="3.05" rx="0.48" fill="none" stroke="#4a5559" stroke-width="1.15"/>
|
|
@@ -2419,7 +2419,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2419
2419
|
`),
|
|
2420
2420
|
'integral-with-limits-differential': makeToolbarIconImage(`
|
|
2421
2421
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 60">
|
|
2422
|
-
<text x="10" y="42" font-size="42" font-family="Times New Roman, serif" fill="#000"
|
|
2422
|
+
<text x="10" y="42" font-size="42" font-family="Times New Roman, serif" fill="#000">∫</text>
|
|
2423
2423
|
<rect x="34" y="2" width="8" height="18" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
2424
2424
|
<rect x="18" y="40" width="8" height="18" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
2425
2425
|
<rect x="48" y="22" width="12" height="22" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
@@ -2429,14 +2429,14 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2429
2429
|
`),
|
|
2430
2430
|
'integral-both-template-image': makeToolbarIconImage(`
|
|
2431
2431
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 70">
|
|
2432
|
-
<text x="8" y="48" font-size="46" font-family="Times New Roman"
|
|
2432
|
+
<text x="8" y="48" font-size="46" font-family="Times New Roman">∫</text>
|
|
2433
2433
|
<rect x="34" y="4" width="8" height="18" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
2434
2434
|
<rect x="18" y="46" width="8" height="18" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
2435
2435
|
</svg>
|
|
2436
2436
|
`),
|
|
2437
2437
|
'integral-lower-template-image': makeToolbarIconImage(`
|
|
2438
2438
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 60">
|
|
2439
|
-
<text x="8" y="42" font-size="44" font-family="Times New Roman"
|
|
2439
|
+
<text x="8" y="42" font-size="44" font-family="Times New Roman">∫</text>
|
|
2440
2440
|
<rect x="20" y="40" width="8" height="18" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
2441
2441
|
</svg>
|
|
2442
2442
|
`),
|
|
@@ -2451,10 +2451,10 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2451
2451
|
`),
|
|
2452
2452
|
'partial-derivative-template-image': makeToolbarIconImage(`
|
|
2453
2453
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 50">
|
|
2454
|
-
<text x="4" y="18" font-size="18"
|
|
2454
|
+
<text x="4" y="18" font-size="18">∂</text>
|
|
2455
2455
|
<rect x="20" y="4" width="8" height="16" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
2456
2456
|
<line x1="2" y1="25" x2="34" y2="25" stroke="#000" stroke-width="2"/>
|
|
2457
|
-
<text x="4" y="44" font-size="18"
|
|
2457
|
+
<text x="4" y="44" font-size="18">∂</text>
|
|
2458
2458
|
<rect x="20" y="30" width="8" height="16" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
2459
2459
|
</svg>
|
|
2460
2460
|
`),
|
|
@@ -2462,7 +2462,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2462
2462
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 70 40">
|
|
2463
2463
|
<text x="18" y="15" font-size="18">lim</text>
|
|
2464
2464
|
<rect x="4" y="22" width="8" height="14" fill="none" stroke="#2e8b57" stroke-width="2"/>
|
|
2465
|
-
<text x="16" y="33" font-size="16"
|
|
2465
|
+
<text x="16" y="33" font-size="16">→∞</text>
|
|
2466
2466
|
</svg>
|
|
2467
2467
|
`),
|
|
2468
2468
|
'limit-generic-template-image': makeToolbarIconImage(`
|
|
@@ -2545,7 +2545,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2545
2545
|
`),
|
|
2546
2546
|
'double-integral-area-template-image': makeToolbarIconImage(`
|
|
2547
2547
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
|
|
2548
|
-
<text x="0.7" y="13.55" font-size="11.1" font-family="Cambria Math, STIX Two Math, Times New Roman, serif" font-weight="700" fill="#263238"
|
|
2548
|
+
<text x="0.7" y="13.55" font-size="11.1" font-family="Cambria Math, STIX Two Math, Times New Roman, serif" font-weight="700" fill="#263238">∫∫</text>
|
|
2549
2549
|
<rect x="10.85" y="2.05" width="3.45" height="3.45" rx="0.55" fill="none" stroke="#465257" stroke-width="1.2"/>
|
|
2550
2550
|
<rect x="8.05" y="12.05" width="3.1" height="3.1" rx="0.5" fill="none" stroke="#465257" stroke-width="1.2"/>
|
|
2551
2551
|
<text x="10.95" y="9.75" font-size="5.45" font-family="Arial, Helvetica, sans-serif" font-weight="700" fill="#263238">dA</text>
|
|
@@ -2573,7 +2573,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2573
2573
|
`),
|
|
2574
2574
|
'rtl-input-template-image': makeToolbarIconImage(`
|
|
2575
2575
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
|
|
2576
|
-
<text x="10.9" y="8.6" text-anchor="middle" fill="#2f3b43" font-size="6.9" font-weight="700" font-family="Tahoma, Arial, sans-serif"
|
|
2576
|
+
<text x="10.9" y="8.6" text-anchor="middle" fill="#2f3b43" font-size="6.9" font-weight="700" font-family="Tahoma, Arial, sans-serif">س</text>
|
|
2577
2577
|
<rect x="11.85" y="3.1" width="3.2" height="3.2" rx="0.45" fill="none" stroke="#2c8a43" stroke-width="1.1"/>
|
|
2578
2578
|
<path d="M13.9 13.1H4.55M6.2 11.45L4.55 13.1L6.2 14.75" fill="none" stroke="#2c8a43" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
|
|
2579
2579
|
</svg>
|
|
@@ -2631,97 +2631,97 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2631
2631
|
`),
|
|
2632
2632
|
'less-than-not-equal-template-image': makeToolbarIconImage(`
|
|
2633
2633
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2634
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor" font-family="Cambria Math, STIX Two Math, Times New Roman"
|
|
2634
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor" font-family="Cambria Math, STIX Two Math, Times New Roman">≨</text>
|
|
2635
2635
|
</svg>
|
|
2636
2636
|
`),
|
|
2637
2637
|
'much-greater-than-template-image': makeToolbarIconImage(`
|
|
2638
2638
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2639
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2639
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">≫</text>
|
|
2640
2640
|
</svg>
|
|
2641
2641
|
`),
|
|
2642
2642
|
'succeeds-template-image': makeToolbarIconImage(`
|
|
2643
2643
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2644
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2644
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">≻</text>
|
|
2645
2645
|
</svg>
|
|
2646
2646
|
`),
|
|
2647
2647
|
'greater-than-not-equal-template-image': makeToolbarIconImage(`
|
|
2648
2648
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2649
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor" font-family="Cambria Math, STIX Two Math, Times New Roman"
|
|
2649
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor" font-family="Cambria Math, STIX Two Math, Times New Roman">≩</text>
|
|
2650
2650
|
</svg>
|
|
2651
2651
|
`),
|
|
2652
2652
|
'proportional-to-template-image': makeToolbarIconImage(`
|
|
2653
2653
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2654
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2654
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">âˆ</text>
|
|
2655
2655
|
</svg>
|
|
2656
2656
|
`),
|
|
2657
2657
|
'normal-subgroup-template-image': makeToolbarIconImage(`
|
|
2658
2658
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2659
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2659
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">⊲</text>
|
|
2660
2660
|
</svg>
|
|
2661
2661
|
`),
|
|
2662
2662
|
'much-less-than-template-image': makeToolbarIconImage(`
|
|
2663
2663
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2664
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2664
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">≪</text>
|
|
2665
2665
|
</svg>
|
|
2666
2666
|
`),
|
|
2667
2667
|
'precedes-template-image': makeToolbarIconImage(`
|
|
2668
2668
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2669
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2669
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">≺</text>
|
|
2670
2670
|
</svg>
|
|
2671
2671
|
`),
|
|
2672
2672
|
'contains-normal-subgroup-template-image': makeToolbarIconImage(`
|
|
2673
2673
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2674
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2674
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">â–·</text>
|
|
2675
2675
|
</svg>
|
|
2676
2676
|
`),
|
|
2677
2677
|
'not-element-of-template-image': makeToolbarIconImage(`
|
|
2678
2678
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2679
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2679
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">∉</text>
|
|
2680
2680
|
</svg>
|
|
2681
2681
|
`),
|
|
2682
2682
|
'not-contains-member-template-image': makeToolbarIconImage(`
|
|
2683
2683
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2684
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2684
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">∌</text>
|
|
2685
2685
|
</svg>
|
|
2686
2686
|
`),
|
|
2687
2687
|
'subset-equal-template-image': makeToolbarIconImage(`
|
|
2688
2688
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2689
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2689
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">⊆</text>
|
|
2690
2690
|
</svg>
|
|
2691
2691
|
`),
|
|
2692
2692
|
'superset-equal-template-image': makeToolbarIconImage(`
|
|
2693
2693
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2694
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2694
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">⊇</text>
|
|
2695
2695
|
</svg>
|
|
2696
2696
|
`),
|
|
2697
2697
|
'square-subset-template-image': makeToolbarIconImage(`
|
|
2698
2698
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2699
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2699
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">âŠ</text>
|
|
2700
2700
|
</svg>
|
|
2701
2701
|
`),
|
|
2702
2702
|
'square-superset-template-image': makeToolbarIconImage(`
|
|
2703
2703
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2704
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2704
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">âŠ</text>
|
|
2705
2705
|
</svg>
|
|
2706
2706
|
`),
|
|
2707
2707
|
'square-subset-equal-template-image': makeToolbarIconImage(`
|
|
2708
2708
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2709
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2709
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">⊑</text>
|
|
2710
2710
|
</svg>
|
|
2711
2711
|
`),
|
|
2712
2712
|
'square-superset-equal-template-image': makeToolbarIconImage(`
|
|
2713
2713
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2714
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2714
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">⊒</text>
|
|
2715
2715
|
</svg>
|
|
2716
2716
|
`),
|
|
2717
2717
|
'square-cap-template-image': makeToolbarIconImage(`
|
|
2718
2718
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2719
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2719
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">⊓</text>
|
|
2720
2720
|
</svg>
|
|
2721
2721
|
`),
|
|
2722
2722
|
'square-cup-template-image': makeToolbarIconImage(`
|
|
2723
2723
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2724
|
-
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor"
|
|
2724
|
+
<text x="12" y="17" text-anchor="middle" font-size="20" fill="currentColor">⊔</text>
|
|
2725
2725
|
</svg>
|
|
2726
2726
|
`),
|
|
2727
2727
|
'therefore-template-image': makeToolbarIconImage(`
|
|
@@ -2755,7 +2755,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2755
2755
|
fill="currentColor"
|
|
2756
2756
|
font-family="Cambria Math, STIX Two Math, Times New Roman"
|
|
2757
2757
|
>
|
|
2758
|
-
|
|
2758
|
+
∡
|
|
2759
2759
|
</text>
|
|
2760
2760
|
</svg>
|
|
2761
2761
|
`),
|
|
@@ -2769,7 +2769,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2769
2769
|
fill="currentColor"
|
|
2770
2770
|
font-family="Cambria Math, STIX Two Math, Times New Roman"
|
|
2771
2771
|
>
|
|
2772
|
-
|
|
2772
|
+
∢
|
|
2773
2773
|
</text>
|
|
2774
2774
|
</svg>
|
|
2775
2775
|
`),
|
|
@@ -2933,7 +2933,7 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
2933
2933
|
'product-array-template-image': makeToolbarIconImage(`
|
|
2934
2934
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 88" fill="none">
|
|
2935
2935
|
<rect x="34" y="6" width="10" height="16" stroke="#008000" stroke-width="1.5"/>
|
|
2936
|
-
<text x="14" y="46" font-size="18" text-anchor="middle" fill="#000"
|
|
2936
|
+
<text x="14" y="46" font-size="18" text-anchor="middle" fill="#000">×</text>
|
|
2937
2937
|
<rect x="34" y="38" width="10" height="16" stroke="#008000" stroke-width="1.5"/>
|
|
2938
2938
|
<line x1="4" y1="66" x2="46" y2="66" stroke="#000" stroke-width="1.5"/>
|
|
2939
2939
|
<rect x="34" y="74" width="10" height="16" stroke="#008000" stroke-width="1.5"/>
|
|
@@ -3130,12 +3130,12 @@ const TOOLBAR_ICON_IMAGES = {
|
|
|
3130
3130
|
`),
|
|
3131
3131
|
'arabic-indic-numerals-template-image': makeToolbarIconImage(`
|
|
3132
3132
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
|
3133
|
-
<text x="4" y="36" font-family="Amiri, Noto Naskh Arabic, serif" font-size="38" fill="#000"
|
|
3133
|
+
<text x="4" y="36" font-family="Amiri, Noto Naskh Arabic, serif" font-size="38" fill="#000">٤٦</text>
|
|
3134
3134
|
</svg>
|
|
3135
3135
|
`),
|
|
3136
3136
|
'eastern-arabic-indic-numerals-template-image': makeToolbarIconImage(`
|
|
3137
3137
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
|
|
3138
|
-
<text x="4" y="36" font-size="36" font-family="sans-serif" fill="#000"
|
|
3138
|
+
<text x="4" y="36" font-size="36" font-family="sans-serif" fill="#000">Û´Û¶</text>
|
|
3139
3139
|
</svg>
|
|
3140
3140
|
`),
|
|
3141
3141
|
};
|
|
@@ -3144,7 +3144,7 @@ function renderToolbarItemLabel(item, context = {}) {
|
|
|
3144
3144
|
if (item.cls?.includes('arrow-picker-tool')) {
|
|
3145
3145
|
return (
|
|
3146
3146
|
<span className="cme-toolbar-chevron-indicator" aria-hidden="true">
|
|
3147
|
-
|
|
3147
|
+
âµ
|
|
3148
3148
|
</span>
|
|
3149
3149
|
);
|
|
3150
3150
|
}
|
|
@@ -3627,9 +3627,9 @@ function renderToolbarItemLabel(item, context = {}) {
|
|
|
3627
3627
|
const labelLength = String(item.label || '').length;
|
|
3628
3628
|
|
|
3629
3629
|
if (isChemMode) {
|
|
3630
|
-
const isChemScriptLabel = /^(?:[
|
|
3630
|
+
const isChemScriptLabel = /^(?:[â°Â¹Â²Â³â´âµâ¶â·â¸â¹âºâ»â¼â½â¾â¿â±â‚€â‚₂₃₄₅₆₇₈₉₊₋₌â‚₎â‚ₑₒₓᵢⱼₙ])+$/u.test(String(item.label || ''));
|
|
3631
3631
|
classNames.push('cme-toolbar-glyph--chem');
|
|
3632
|
-
const isChemChargeLabel = /^(?:[+-]|[
|
|
3632
|
+
const isChemChargeLabel = /^(?:[+-]|[²³][âºâ»])$/u.test(String(item.label || ''));
|
|
3633
3633
|
if (itemClassName.includes('chem-element')) {
|
|
3634
3634
|
classNames.push('cme-toolbar-glyph--chem-element');
|
|
3635
3635
|
}
|
|
@@ -3688,152 +3688,152 @@ function renderToolbarItemLabel(item, context = {}) {
|
|
|
3688
3688
|
|
|
3689
3689
|
function ArrowGlyphIcon({ type, size = 24 }) {
|
|
3690
3690
|
const icons = {
|
|
3691
|
-
'
|
|
3691
|
+
'↗': (
|
|
3692
3692
|
<>
|
|
3693
3693
|
<path d="M5 19L19 5" />
|
|
3694
3694
|
<path d="M12 5H19V12" />
|
|
3695
3695
|
</>
|
|
3696
3696
|
),
|
|
3697
|
-
'
|
|
3697
|
+
'↘': (
|
|
3698
3698
|
<>
|
|
3699
3699
|
<path d="M5 5L19 19" />
|
|
3700
3700
|
<path d="M12 19H19V12" />
|
|
3701
3701
|
</>
|
|
3702
3702
|
),
|
|
3703
|
-
'
|
|
3703
|
+
'↖': (
|
|
3704
3704
|
<>
|
|
3705
3705
|
<path d="M19 19L5 5" />
|
|
3706
3706
|
<path d="M12 5H5V12" />
|
|
3707
3707
|
</>
|
|
3708
3708
|
),
|
|
3709
|
-
'
|
|
3709
|
+
'↙': (
|
|
3710
3710
|
<>
|
|
3711
3711
|
<path d="M19 5L5 19" />
|
|
3712
3712
|
<path d="M12 19H5V12" />
|
|
3713
3713
|
</>
|
|
3714
3714
|
),
|
|
3715
|
-
'
|
|
3715
|
+
'â†': (
|
|
3716
3716
|
<>
|
|
3717
3717
|
<path d="M20 12H6" />
|
|
3718
3718
|
<path d="M11 7L6 12L11 17" />
|
|
3719
3719
|
</>
|
|
3720
3720
|
),
|
|
3721
|
-
'
|
|
3721
|
+
'→': (
|
|
3722
3722
|
<>
|
|
3723
3723
|
<path d="M4 12H18" />
|
|
3724
3724
|
<path d="M13 7L18 12L13 17" />
|
|
3725
3725
|
</>
|
|
3726
3726
|
),
|
|
3727
|
-
'
|
|
3727
|
+
'↑': (
|
|
3728
3728
|
<>
|
|
3729
3729
|
<path d="M12 20V6" />
|
|
3730
3730
|
<path d="M7 11L12 6L17 11" />
|
|
3731
3731
|
</>
|
|
3732
3732
|
),
|
|
3733
|
-
'
|
|
3733
|
+
'↓': (
|
|
3734
3734
|
<>
|
|
3735
3735
|
<path d="M12 4V18" />
|
|
3736
3736
|
<path d="M7 13L12 18L17 13" />
|
|
3737
3737
|
</>
|
|
3738
3738
|
),
|
|
3739
|
-
'
|
|
3739
|
+
'↔': (
|
|
3740
3740
|
<>
|
|
3741
3741
|
<path d="M4 12H20" />
|
|
3742
3742
|
<path d="M9 7L4 12L9 17" />
|
|
3743
3743
|
<path d="M15 7L20 12L15 17" />
|
|
3744
3744
|
</>
|
|
3745
3745
|
),
|
|
3746
|
-
'
|
|
3746
|
+
'↕': (
|
|
3747
3747
|
<>
|
|
3748
3748
|
<path d="M12 4V20" />
|
|
3749
3749
|
<path d="M7 9L12 4L17 9" />
|
|
3750
3750
|
<path d="M7 15L12 20L17 15" />
|
|
3751
3751
|
</>
|
|
3752
3752
|
),
|
|
3753
|
-
'
|
|
3753
|
+
'â‡': (
|
|
3754
3754
|
<>
|
|
3755
3755
|
<path d="M20 10H6M20 14H6" />
|
|
3756
3756
|
<path d="M11 6L6 12L11 18" />
|
|
3757
3757
|
</>
|
|
3758
3758
|
),
|
|
3759
|
-
'
|
|
3759
|
+
'⇒': (
|
|
3760
3760
|
<>
|
|
3761
3761
|
<path d="M4 10H18M4 14H18" />
|
|
3762
3762
|
<path d="M13 6L18 12L13 18" />
|
|
3763
3763
|
</>
|
|
3764
3764
|
),
|
|
3765
|
-
'
|
|
3765
|
+
'⇑': (
|
|
3766
3766
|
<>
|
|
3767
3767
|
<path d="M10 20V6M14 20V6" />
|
|
3768
3768
|
<path d="M6 11L12 5L18 11" />
|
|
3769
3769
|
</>
|
|
3770
3770
|
),
|
|
3771
|
-
'
|
|
3771
|
+
'⇓': (
|
|
3772
3772
|
<>
|
|
3773
3773
|
<path d="M10 4V18M14 4V18" />
|
|
3774
3774
|
<path d="M6 13L12 19L18 13" />
|
|
3775
3775
|
</>
|
|
3776
3776
|
),
|
|
3777
|
-
'
|
|
3777
|
+
'⇔': (
|
|
3778
3778
|
<>
|
|
3779
3779
|
<path d="M4 10H20M4 14H20" />
|
|
3780
3780
|
<path d="M9 6L4 12L9 18" />
|
|
3781
3781
|
<path d="M15 6L20 12L15 18" />
|
|
3782
3782
|
</>
|
|
3783
3783
|
),
|
|
3784
|
-
'
|
|
3784
|
+
'⇕': (
|
|
3785
3785
|
<>
|
|
3786
3786
|
<path d="M10 4V20M14 4V20" />
|
|
3787
3787
|
<path d="M6 9L12 3L18 9" />
|
|
3788
3788
|
<path d="M6 15L12 21L18 15" />
|
|
3789
3789
|
</>
|
|
3790
3790
|
),
|
|
3791
|
-
'
|
|
3791
|
+
'⟵': (
|
|
3792
3792
|
<>
|
|
3793
3793
|
<path d="M21 12H5.5" />
|
|
3794
3794
|
<path d="M10.8 7L5.5 12L10.8 17" />
|
|
3795
3795
|
</>
|
|
3796
3796
|
),
|
|
3797
|
-
'
|
|
3797
|
+
'⟶': (
|
|
3798
3798
|
<>
|
|
3799
3799
|
<path d="M3 12H18.5" />
|
|
3800
3800
|
<path d="M13.2 7L18.5 12L13.2 17" />
|
|
3801
3801
|
</>
|
|
3802
3802
|
),
|
|
3803
|
-
'
|
|
3803
|
+
'⟷': (
|
|
3804
3804
|
<>
|
|
3805
3805
|
<path d="M3 12H21" />
|
|
3806
3806
|
<path d="M8 7L3 12L8 17" />
|
|
3807
3807
|
<path d="M16 7L21 12L16 17" />
|
|
3808
3808
|
</>
|
|
3809
3809
|
),
|
|
3810
|
-
'
|
|
3810
|
+
'⟸': (
|
|
3811
3811
|
<>
|
|
3812
3812
|
<path d="M21 10H5.5M21 14H5.5" />
|
|
3813
3813
|
<path d="M10.8 6L5.5 12L10.8 18" />
|
|
3814
3814
|
</>
|
|
3815
3815
|
),
|
|
3816
|
-
'
|
|
3816
|
+
'⟹': (
|
|
3817
3817
|
<>
|
|
3818
3818
|
<path d="M3 10H18.5M3 14H18.5" />
|
|
3819
3819
|
<path d="M13.2 6L18.5 12L13.2 18" />
|
|
3820
3820
|
</>
|
|
3821
3821
|
),
|
|
3822
|
-
'
|
|
3822
|
+
'⟺': (
|
|
3823
3823
|
<>
|
|
3824
3824
|
<path d="M3 10H21M3 14H21" />
|
|
3825
3825
|
<path d="M8 6L3 12L8 18" />
|
|
3826
3826
|
<path d="M16 6L21 12L16 18" />
|
|
3827
3827
|
</>
|
|
3828
3828
|
),
|
|
3829
|
-
'
|
|
3829
|
+
'↤': (
|
|
3830
3830
|
<>
|
|
3831
3831
|
<path d="M20 12H8" />
|
|
3832
3832
|
<path d="M8 7L3 12L8 17" />
|
|
3833
3833
|
<path d="M20 6V18" />
|
|
3834
3834
|
</>
|
|
3835
3835
|
),
|
|
3836
|
-
'
|
|
3836
|
+
'↦': (
|
|
3837
3837
|
<>
|
|
3838
3838
|
<path d="M4 12H16" />
|
|
3839
3839
|
<path d="M16 7L21 12L16 17" />
|
|
@@ -4327,9 +4327,9 @@ function makeToolbarPlugin(onOpenPopup) {
|
|
|
4327
4327
|
};
|
|
4328
4328
|
}
|
|
4329
4329
|
|
|
4330
|
-
/*
|
|
4331
|
-
MathChemPopup
|
|
4332
|
-
|
|
4330
|
+
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
|
|
4331
|
+
MathChemPopup — same as CustomMathEditor popup
|
|
4332
|
+
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
|
|
4333
4333
|
function MatrixHoverGrid({ matrixType, x, y, onSelect, onMouseEnter, onMouseLeave }) {
|
|
4334
4334
|
const [hoverGrid, setHoverGrid] = useState({ r: 2, c: 2 });
|
|
4335
4335
|
const labelMap = {
|
|
@@ -4369,7 +4369,7 @@ function MatrixHoverGrid({ matrixType, x, y, onSelect, onMouseEnter, onMouseLeav
|
|
|
4369
4369
|
>
|
|
4370
4370
|
<div className="cme-matrix-hover-title-wrap">
|
|
4371
4371
|
<div className="cme-matrix-hover-title">{labelMap[matrixType] || 'Matrix'}</div>
|
|
4372
|
-
<div className="cme-matrix-hover-subtitle">{hoverGrid.r}
|
|
4372
|
+
<div className="cme-matrix-hover-subtitle">{hoverGrid.r} × {hoverGrid.c}</div>
|
|
4373
4373
|
</div>
|
|
4374
4374
|
<div className="cme-matrix-hover-grid">
|
|
4375
4375
|
{Array.from({ length: 6 }).map((_, rIndex) => (
|
|
@@ -4430,9 +4430,9 @@ function MatrixHoverGrid({ matrixType, x, y, onSelect, onMouseEnter, onMouseLeav
|
|
|
4430
4430
|
);
|
|
4431
4431
|
}
|
|
4432
4432
|
|
|
4433
|
-
/*
|
|
4434
|
-
MathChemPopup
|
|
4435
|
-
|
|
4433
|
+
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
|
|
4434
|
+
MathChemPopup — same as CustomMathEditor popup
|
|
4435
|
+
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
|
|
4436
4436
|
function MathChemPopup({ mode, onInsert, onClose, initialLatex, initialDirection = 'ltr', isEditing }) {
|
|
4437
4437
|
const popupMfRef = useRef(null);
|
|
4438
4438
|
const popupRef = useRef(null);
|
|
@@ -4937,7 +4937,7 @@ function MathChemPopup({ mode, onInsert, onClose, initialLatex, initialDirection
|
|
|
4937
4937
|
|
|
4938
4938
|
|
|
4939
4939
|
|
|
4940
|
-
/*
|
|
4940
|
+
/* ── Auto-scroll caret into view ── */
|
|
4941
4941
|
useEffect(() => {
|
|
4942
4942
|
const popupMf = popupMfRef.current;
|
|
4943
4943
|
if (!popupMf) return;
|
|
@@ -6020,7 +6020,7 @@ function MathChemPopup({ mode, onInsert, onClose, initialLatex, initialDirection
|
|
|
6020
6020
|
setShowColorPicker(null);
|
|
6021
6021
|
}}
|
|
6022
6022
|
>
|
|
6023
|
-
|
|
6023
|
+
×
|
|
6024
6024
|
</button>
|
|
6025
6025
|
</div>
|
|
6026
6026
|
|
|
@@ -6036,11 +6036,11 @@ function MathChemPopup({ mode, onInsert, onClose, initialLatex, initialDirection
|
|
|
6036
6036
|
);
|
|
6037
6037
|
}
|
|
6038
6038
|
|
|
6039
|
-
/*
|
|
6040
|
-
LaTeX
|
|
6039
|
+
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
|
|
6040
|
+
LaTeX → Unicode plain-text converter
|
|
6041
6041
|
Converts LaTeX notation to readable Unicode so CKEditor
|
|
6042
6042
|
treats each character individually (backspace works per-char)
|
|
6043
|
-
|
|
6043
|
+
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
|
|
6044
6044
|
function latexToPlainText(latex) {
|
|
6045
6045
|
let text = latex;
|
|
6046
6046
|
|
|
@@ -6051,35 +6051,35 @@ function latexToPlainText(latex) {
|
|
|
6051
6051
|
// Sort replacements longest-first to avoid partial matches
|
|
6052
6052
|
const replacements = [
|
|
6053
6053
|
// Greek lowercase
|
|
6054
|
-
['\\varepsilon', '
|
|
6055
|
-
['\\alpha', '
|
|
6056
|
-
['\\epsilon', '
|
|
6057
|
-
['\\iota', '
|
|
6058
|
-
['\\nu', '
|
|
6059
|
-
['\\sigma', '
|
|
6060
|
-
['\\chi', '
|
|
6054
|
+
['\\varepsilon', 'ε'], ['\\varphi', 'φ'],
|
|
6055
|
+
['\\alpha', 'α'], ['\\beta', 'β'], ['\\gamma', 'γ'], ['\\delta', 'δ'],
|
|
6056
|
+
['\\epsilon', 'ε'], ['\\zeta', 'ζ'], ['\\eta', 'η'], ['\\theta', 'θ'],
|
|
6057
|
+
['\\iota', 'ι'], ['\\kappa', 'κ'], ['\\lambda', 'λ'], ['\\mu', 'μ'],
|
|
6058
|
+
['\\nu', 'ν'], ['\\xi', 'ξ'], ['\\pi', 'Ï€'], ['\\rho', 'Ï'],
|
|
6059
|
+
['\\sigma', 'σ'], ['\\tau', 'τ'], ['\\upsilon', 'υ'], ['\\phi', 'φ'],
|
|
6060
|
+
['\\chi', 'χ'], ['\\psi', 'ψ'], ['\\omega', 'ω'],
|
|
6061
6061
|
// Greek uppercase
|
|
6062
|
-
['\\Gamma', '
|
|
6063
|
-
['\\Xi', '
|
|
6064
|
-
['\\Phi', '
|
|
6062
|
+
['\\Gamma', 'Γ'], ['\\Delta', 'Δ'], ['\\Theta', 'Θ'], ['\\Lambda', 'Λ'],
|
|
6063
|
+
['\\Xi', 'Ξ'], ['\\Pi', 'Π'], ['\\Sigma', 'Σ'], ['\\Upsilon', 'Υ'],
|
|
6064
|
+
['\\Phi', 'Φ'], ['\\Psi', 'Ψ'], ['\\Omega', 'Ω'],
|
|
6065
6065
|
// Operators
|
|
6066
|
-
['\\pm', '
|
|
6066
|
+
['\\pm', '±'], ['\\mp', '∓'], ['\\times', '×'], ['\\div', '÷'],
|
|
6067
6067
|
['\\backslash', '\\'],
|
|
6068
|
-
['\\cdot', '
|
|
6069
|
-
['\\approx', '
|
|
6070
|
-
['\\sum', '
|
|
6071
|
-
['\\iint', '
|
|
6072
|
-
['\\partial', '
|
|
6073
|
-
['\\in', '
|
|
6074
|
-
['\\subset', '
|
|
6075
|
-
['\\cup', '
|
|
6076
|
-
['\\forall', '
|
|
6077
|
-
['\\land', '
|
|
6068
|
+
['\\cdot', '·'], ['\\neq', '≠'], ['\\leq', '≤'], ['\\geq', '≥'],
|
|
6069
|
+
['\\approx', '≈'], ['\\equiv', '≡'], ['\\infty', '∞'],
|
|
6070
|
+
['\\sum', '∑'], ['\\prod', 'âˆ'], ['\\int', '∫'], ['\\oint', '∮'],
|
|
6071
|
+
['\\iint', '∬'], ['\\iiint', 'âˆ'], ['\\oiint', '∯'],
|
|
6072
|
+
['\\partial', '∂'], ['\\nabla', '∇'],
|
|
6073
|
+
['\\in', '∈'], ['\\notin', '∉'],
|
|
6074
|
+
['\\subset', '⊂'], ['\\subseteq', '⊆'], ['\\supset', '⊃'], ['\\supseteq', '⊇'],
|
|
6075
|
+
['\\cup', '∪'], ['\\cap', '∩'], ['\\emptyset', '∅'], ['\\setminus', '﹨'],
|
|
6076
|
+
['\\forall', '∀'], ['\\exists', '∃'], ['\\neg', '¬'],
|
|
6077
|
+
['\\land', '∧'], ['\\lor', '∨'],
|
|
6078
6078
|
// Arrows
|
|
6079
|
-
['\\leftrightarrow', '
|
|
6080
|
-
['\\rightarrow', '
|
|
6081
|
-
['\\Rightarrow', '
|
|
6082
|
-
['\\uparrow', '
|
|
6079
|
+
['\\leftrightarrow', '↔'], ['\\Leftrightarrow', '⇔'],
|
|
6080
|
+
['\\rightarrow', '→'], ['\\leftarrow', 'â†'],
|
|
6081
|
+
['\\Rightarrow', '⇒'], ['\\Leftarrow', 'â‡'],
|
|
6082
|
+
['\\uparrow', '↑'], ['\\downarrow', '↓'],
|
|
6083
6083
|
// Trig / log
|
|
6084
6084
|
['\\sin', 'sin'], ['\\cos', 'cos'], ['\\tan', 'tan'],
|
|
6085
6085
|
['\\cot', 'cot'], ['\\sec', 'sec'], ['\\csc', 'csc'],
|
|
@@ -6088,7 +6088,7 @@ function latexToPlainText(latex) {
|
|
|
6088
6088
|
...BLACKBOARD_BOLD_PICKER_ITEMS.map(({ insert, label }) => [insert, label]),
|
|
6089
6089
|
...FRAKTUR_SCRIPT_PICKER_ITEMS.map(({ insert, label }) => [insert, label]),
|
|
6090
6090
|
...HEBREW_SYMBOL_PICKER_ITEMS.map(({ insert, label }) => [insert, label]),
|
|
6091
|
-
['\\wp', '
|
|
6091
|
+
['\\wp', '℘'],
|
|
6092
6092
|
// Delimiters
|
|
6093
6093
|
['\\left(', '('], ['\\right)', ')'],
|
|
6094
6094
|
['\\left[', '['], ['\\right]', ']'],
|
|
@@ -6097,7 +6097,7 @@ function latexToPlainText(latex) {
|
|
|
6097
6097
|
// Spacing
|
|
6098
6098
|
['\\,', ' '], ['\\;', ' '], ['\\quad', ' '], ['\\qquad', ' '],
|
|
6099
6099
|
// Misc
|
|
6100
|
-
['\\prime', '
|
|
6100
|
+
['\\prime', '′'], ['\\vdots', '⋮'], ['\\cdots', '⋯'], ['\\ddots', '⋱'], ['\\ldots', '…'],
|
|
6101
6101
|
];
|
|
6102
6102
|
|
|
6103
6103
|
for (const [cmd, char] of replacements) {
|
|
@@ -6105,45 +6105,45 @@ function latexToPlainText(latex) {
|
|
|
6105
6105
|
text = text.replace(new RegExp(escaped, 'g'), char);
|
|
6106
6106
|
}
|
|
6107
6107
|
|
|
6108
|
-
// \frac{a}{b}
|
|
6108
|
+
// \frac{a}{b} → a/b
|
|
6109
6109
|
text = text.replace(/\\frac\{([^}]*)\}\{([^}]*)\}/g, '$1/$2');
|
|
6110
6110
|
|
|
6111
|
-
// \sqrt[n]{x}
|
|
6112
|
-
text = text.replace(/\\sqrt\[([^\]]*)\]\{([^}]*)\}/g, '$1
|
|
6113
|
-
text = text.replace(/\\sqrt\{([^}]*)\}/g, '
|
|
6111
|
+
// \sqrt[n]{x} → â¿âˆš(x) and \sqrt{x} → √(x)
|
|
6112
|
+
text = text.replace(/\\sqrt\[([^\]]*)\]\{([^}]*)\}/g, '$1√($2)');
|
|
6113
|
+
text = text.replace(/\\sqrt\{([^}]*)\}/g, '√($1)');
|
|
6114
6114
|
|
|
6115
|
-
// \vec{x}
|
|
6115
|
+
// \vec{x} → x⃗ \hat{x} → xÌ‚ \bar{x} → xÌ„ \dot{x} → ẋ \ddot{x} → áº
|
|
6116
6116
|
text = text.replace(/\\vec\{([^}]*)\}/g, '$1\u20D7');
|
|
6117
6117
|
text = text.replace(/\\hat\{([^}]*)\}/g, '$1\u0302');
|
|
6118
6118
|
text = text.replace(/\\bar\{([^}]*)\}/g, '$1\u0304');
|
|
6119
6119
|
text = text.replace(/\\ddot\{([^}]*)\}/g, '$1\u0308');
|
|
6120
6120
|
text = text.replace(/\\dot\{([^}]*)\}/g, '$1\u0307');
|
|
6121
6121
|
|
|
6122
|
-
// \text{...}
|
|
6122
|
+
// \text{...} → content
|
|
6123
6123
|
text = text.replace(/\\text\{([^}]*)\}/g, '$1');
|
|
6124
6124
|
|
|
6125
|
-
// \begin{pmatrix}...\end{pmatrix}
|
|
6125
|
+
// \begin{pmatrix}...\end{pmatrix} → [a, b; c, d]
|
|
6126
6126
|
text = text.replace(/\\begin\{pmatrix\}([\s\S]*?)\\end\{pmatrix\}/g, (_, c) =>
|
|
6127
6127
|
'[' + c.replace(/\\\\/g, '; ').replace(/&/g, ', ').trim() + ']'
|
|
6128
6128
|
);
|
|
6129
6129
|
|
|
6130
6130
|
// Superscripts ^{content}
|
|
6131
|
-
const supMap = { '0': '
|
|
6131
|
+
const supMap = { '0': 'â°', '1': '¹', '2': '²', '3': '³', '4': 'â´', '5': 'âµ', '6': 'â¶', '7': 'â·', '8': 'â¸', '9': 'â¹', '+': 'âº', '-': 'â»', '=': 'â¼', '(': 'â½', ')': 'â¾', 'n': 'â¿', 'i': 'â±' };
|
|
6132
6132
|
text = text.replace(/\^\{([^}]*)\}/g, (_, content) =>
|
|
6133
6133
|
content.split('').map(c => supMap[c] || c).join('')
|
|
6134
6134
|
);
|
|
6135
6135
|
text = text.replace(/\^([a-zA-Z0-9])/g, (_, c) => supMap[c] || c);
|
|
6136
6136
|
|
|
6137
6137
|
// Subscripts _{content}
|
|
6138
|
-
const subMap = { '0': '
|
|
6138
|
+
const subMap = { '0': 'â‚€', '1': 'â‚', '2': 'â‚‚', '3': '₃', '4': 'â‚„', '5': 'â‚…', '6': '₆', '7': '₇', '8': '₈', '9': '₉', '+': '₊', '-': 'â‚‹', '=': '₌', '(': 'â‚', ')': '₎', 'a': 'â‚', 'e': 'â‚‘', 'o': 'â‚’', 'x': 'â‚“', 'i': 'áµ¢', 'j': 'â±¼', 'n': 'â‚™' };
|
|
6139
6139
|
text = text.replace(/_\{([^}]*)\}/g, (_, content) =>
|
|
6140
6140
|
content.split('').map(c => subMap[c] || c).join('')
|
|
6141
6141
|
);
|
|
6142
6142
|
text = text.replace(/_([a-zA-Z0-9])/g, (_, c) => subMap[c] || c);
|
|
6143
6143
|
|
|
6144
6144
|
// Chem arrows
|
|
6145
|
-
text = text.replace(/->/g, '
|
|
6146
|
-
text = text.replace(/<=>/g, '
|
|
6145
|
+
text = text.replace(/->/g, '→');
|
|
6146
|
+
text = text.replace(/<=>/g, '⇌');
|
|
6147
6147
|
|
|
6148
6148
|
// Clean up remaining LaTeX
|
|
6149
6149
|
text = text.replace(/\\[a-zA-Z]+/g, ''); // remove unknown commands
|
|
@@ -6154,9 +6154,9 @@ function latexToPlainText(latex) {
|
|
|
6154
6154
|
return text.trim();
|
|
6155
6155
|
}
|
|
6156
6156
|
|
|
6157
|
-
/*
|
|
6157
|
+
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
|
|
6158
6158
|
Main CkEditor component
|
|
6159
|
-
|
|
6159
|
+
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */
|
|
6160
6160
|
function CkEditor({ value, onChange, className = '' }) {
|
|
6161
6161
|
const editorRef = useRef(null);
|
|
6162
6162
|
const popupOpenRef = useRef(false);
|
|
@@ -6210,7 +6210,7 @@ function CkEditor({ value, onChange, className = '' }) {
|
|
|
6210
6210
|
: null;
|
|
6211
6211
|
|
|
6212
6212
|
if (targetModel) {
|
|
6213
|
-
//
|
|
6213
|
+
// ── EDIT MODE: replace widget so the math-field re-renders with new latex ──
|
|
6214
6214
|
editor.model.change((writer) => {
|
|
6215
6215
|
const mathElement = writer.createElement('mathInline', mathAttributes);
|
|
6216
6216
|
const position = writer.createPositionBefore(targetModel);
|
|
@@ -6310,7 +6310,7 @@ function CkEditor({ value, onChange, className = '' }) {
|
|
|
6310
6310
|
width: auto !important;
|
|
6311
6311
|
max-width: 100% !important;
|
|
6312
6312
|
pointer-events: none !important;
|
|
6313
|
-
color: #
|
|
6313
|
+
color: #000000 !important;
|
|
6314
6314
|
}
|
|
6315
6315
|
.ck-math-widget[data-dir="rtl"] {
|
|
6316
6316
|
direction: rtl !important;
|