UNPKG

trumbowyg

Version:

A lightweight WYSIWYG editor

83 lines (80 loc) 2.66 kB
/* =========================================================== * trumbowyg.mathMl.js v1.0 * MathML plugin for Trumbowyg * https://github.com/loclamor/Trumbowyg/tree/mathml-plugin/plugins/mathml * =========================================================== * Author : loclamor */ (function($) { 'use strict'; $.extend(true, $.trumbowyg, { langs: { en: { mathml: 'Insert Formulas', formulas: 'Formulas', inline: 'Inline' }, fr: { mathml: 'Inserer une formule', formulas: 'Formule', inline: 'En ligne' } }, plugins: { mathml: { init: function(trumbowyg) { var btnDef = { fn: function() { trumbowyg.saveRange(); var mathMLoptions = { formulas: { label: trumbowyg.lang.formulas, required: true, value: '' }, inline: { label: trumbowyg.lang.inline, attributes: { checked: true }, type: 'checkbox', required: false, } }; var mathmlCallback = function(v) { var delimitor = v.inline ? '$' : '$$'; if (trumbowyg.currentMathNode) { $(trumbowyg.currentMathNode).html(delimitor + ' ' + v.formulas + ' ' + delimitor).attr('formulas', v.formulas).attr('inline', (v.inline ? 'true' : 'false')); } else { var html = '<span class="mathMlContainer" contenteditable="false" formulas="' + v.formulas + '" inline="' + (v.inline ? 'true' : 'false') + '" >' + delimitor + ' ' + v.formulas + ' ' + delimitor + '</span>'; var $html = $(html); var node = $(html)[0]; node.onclick = function(e) { trumbowyg.currentMathNode = this; mathMLoptions.formulas.value = $(this).attr('formulas'); if ($(this).attr('inline') === "true") { mathMLoptions.inline.attributes.checked = true; } else { delete mathMLoptions.inline.attributes.checked; } trumbowyg.openModalInsert(trumbowyg.lang.mathml, mathMLoptions, mathmlCallback); }; trumbowyg.range.deleteContents(); trumbowyg.range.insertNode(node); } trumbowyg.currentMathNode = false; MathJax.Hub.Queue(["Typeset", MathJax.Hub]); return true; }; mathMLoptions.formulas.value = trumbowyg.getRangeText(); mathMLoptions.inline.attributes.checked = true; trumbowyg.openModalInsert(trumbowyg.lang.mathml, mathMLoptions, mathmlCallback); } }; trumbowyg.addBtnDef('mathml', btnDef); } } } }); } )(jQuery);