Преглед изворни кода

feat: diagram rendering + post-processor (wip)

NGPixel пре 4 година
родитељ
комит
52d0af19b4

+ 1 - 1
client/themes/default/scss/app.scss

@@ -581,7 +581,7 @@
     }
   }
 
-  pre.diagram {
+  .diagram {
     margin-top: 1rem;
   }
 

+ 8 - 0
server/modules/rendering/html-diagram/definition.yml

@@ -0,0 +1,8 @@
+key: htmlDiagram
+title: Diagrams Post-Processor
+description: HTML Processing for diagrams (draw.io)
+author: requarks.io
+icon: mdi-chart-multiline
+enabledDefault: true
+dependsOn: htmlCore
+props: {}

+ 10 - 0
server/modules/rendering/html-diagram/renderer.js

@@ -0,0 +1,10 @@
+module.exports = {
+  async init($, config) {
+    $(`pre.diagram`).each((idx, elm) => {
+      $(elm).children('svg').each((sidx, svg) => {
+        $(svg).removeAttr('content')
+      })
+      $(elm).replaceWith($(`<div class="diagram">${$(elm).html()}</div>`))
+    })
+  }
+}

+ 5 - 1
server/modules/rendering/markdown-core/renderer.js

@@ -27,7 +27,11 @@ module.exports = {
       typographer: this.config.typographer,
       quotes: _.get(quoteStyles, this.config.quotes, quoteStyles.English),
       highlight(str, lang) {
-        return `<pre><code class="language-${lang}">${_.escape(str)}</code></pre>`
+        if (lang === 'diagram') {
+          return `<pre class="diagram">` + Buffer.from(str, 'base64').toString() + `</pre>`
+        } else {
+          return `<pre><code class="language-${lang}">${_.escape(str)}</code></pre>`
+        }
       }
     })