formula.js 730 B

1234567891011121314151617181920212223242526272829303132
  1. import Embed from '../blots/embed';
  2. class Formula extends Embed {
  3. static create(value) {
  4. if (window.katex == null) {
  5. throw new Error('Formula module requires KaTeX.');
  6. }
  7. const node = super.create(value);
  8. if (typeof value === 'string') {
  9. window.katex.render(value, node, {
  10. throwOnError: false,
  11. errorColor: '#f00',
  12. });
  13. node.setAttribute('data-value', value);
  14. }
  15. return node;
  16. }
  17. static value(domNode) {
  18. return domNode.getAttribute('data-value');
  19. }
  20. html() {
  21. const { formula } = this.value();
  22. return `<span>${formula}</span>`;
  23. }
  24. }
  25. Formula.blotName = 'formula';
  26. Formula.className = 'ql-formula';
  27. Formula.tagName = 'SPAN';
  28. export default Formula;