The frontend/UI server, written in JS using the MarkoJS library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
735 B

6 years ago
  1. const MarkdownIt = require("markdown-it")
  2. const md = new MarkdownIt({
  3. html: true,
  4. linkify: true,
  5. typographer: false,
  6. langPrefix: "language-",
  7. })
  8. md.use(require("markdown-it-container"), "green")
  9. md.use(require("markdown-it-container"), "orange")
  10. md.use(require("markdown-it-container"), "blue")
  11. md.use(require("./plugins/wikilink"))
  12. const renderer = md.renderer
  13. module.exports = class {
  14. onCreate(input) {
  15. this.state = {
  16. render: () => {},
  17. }
  18. this.render(input.source || "")
  19. }
  20. onInput(input) {
  21. if (input.source) {
  22. this.render(input.source)
  23. }
  24. }
  25. render(source) {
  26. this.state.render = (out) => {
  27. if (out.w) {
  28. out.w(md.render(source))
  29. }
  30. }
  31. }
  32. }
  33. renderer.rules