diff --git a/assets/controllers/common/latex_controller.js b/assets/controllers/common/latex_controller.js new file mode 100644 index 00000000..7e3948a1 --- /dev/null +++ b/assets/controllers/common/latex_controller.js @@ -0,0 +1,28 @@ +import {Controller} from "@hotwired/stimulus"; + +import "katex"; +import 'katex/dist/katex.css'; +import renderMathInElement from "katex/dist/contrib/auto-render"; + +/* stimulusFetch: 'lazy' */ +export default class extends Controller { + connect() { + this.applyLatex(); + this.element.addEventListener('markdown:finished', () => this.applyLatex()); + } + + applyLatex() { + renderMathInElement(this.element, { + delimiters: [ + {left: "$$", right: "$$", display: true}, + {left: "$", right: "$", display: false}, + {left: "\\(", right: "\\)", display: false}, + {left: "\\[", right: "\\]", display: true} + ] + }); + } + + mutate() { + this.applyLatex(); + } +} \ No newline at end of file diff --git a/assets/controllers/common/markdown_controller.js b/assets/controllers/common/markdown_controller.js index 5185096a..87eacd86 100644 --- a/assets/controllers/common/markdown_controller.js +++ b/assets/controllers/common/markdown_controller.js @@ -10,6 +10,12 @@ export default class extends Controller { { this.configureMarked(); this.render(); + + //Dispatch an event that we are now finished + const event = new CustomEvent('markdown:finished', { + bubbles: true + }); + this.element.dispatchEvent(event); } render() { diff --git a/package.json b/package.json index 44c66a8d..c92a9b35 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "marked": "^3.0.1", "patternfly-bootstrap-treeview": "^2.1.8", "pdfmake": "^0.2.2", + "stimulus-use": "^0.41.0", "ts-loader": "^9.2.6", "typescript": "^4.0.2", "u2f-api": "^1.1.1" diff --git a/templates/Parts/info/show_part_info.html.twig b/templates/Parts/info/show_part_info.html.twig index c561eaef..a3535d14 100644 --- a/templates/Parts/info/show_part_info.html.twig +++ b/templates/Parts/info/show_part_info.html.twig @@ -108,7 +108,7 @@