Просмотр исходного кода

add sanitizeOption to lsx module

Yuki Takei 3 лет назад
Родитель
Сommit
3296eecb46

+ 8 - 0
packages/app/src/services/renderer/growi-plugins/lsx.ts

@@ -1,4 +1,5 @@
 import { RemarkGrowiPluginType } from '@growi/remark-growi-plugin';
 import { RemarkGrowiPluginType } from '@growi/remark-growi-plugin';
+import { Schema as SanitizeOption } from 'hast-util-sanitize';
 import { Plugin } from 'unified';
 import { Plugin } from 'unified';
 import { visit } from 'unist-util-visit';
 import { visit } from 'unist-util-visit';
 
 
@@ -28,3 +29,10 @@ export const remarkPlugin: Plugin = function() {
     });
     });
   };
   };
 };
 };
+
+export const sanitizeOption: SanitizeOption = {
+  tagNames: ['lsx'],
+  attributes: {
+    lsx: ['prefix', 'num', 'depth', 'sort', 'reverse', 'filter'],
+  },
+};

+ 7 - 6
packages/app/src/services/renderer/renderer.ts

@@ -340,12 +340,7 @@ export const generateViewOptions = (
 
 
   const sanitizeOption = deepmerge(
   const sanitizeOption = deepmerge(
     commonSanitizeOption,
     commonSanitizeOption,
-    {
-      tagNames: [
-        'ls',
-        'lsx',
-      ],
-    },
+    lsxGrowiPlugin.sanitizeOption,
   );
   );
   rehypePlugins.push([sanitize, sanitizeOption]);
   rehypePlugins.push([sanitize, sanitizeOption]);
 
 
@@ -399,6 +394,7 @@ export const generateTocOptions = (config: RendererConfig, tocNode: HtmlElementN
 
 
 export const generatePreviewOptions = (config: RendererConfig): RendererOptions => {
 export const generatePreviewOptions = (config: RendererConfig): RendererOptions => {
   const options = generateCommonOptions(undefined, config);
   const options = generateCommonOptions(undefined, config);
+  const { rehypePlugins } = options;
 
 
   // // Add configurers for preview
   // // Add configurers for preview
   // renderer.addConfigurers([
   // renderer.addConfigurers([
@@ -410,6 +406,11 @@ export const generatePreviewOptions = (config: RendererConfig): RendererOptions
   // renderer.setMarkdownSettings({ breaks: rendererSettings?.isEnabledLinebreaks });
   // renderer.setMarkdownSettings({ breaks: rendererSettings?.isEnabledLinebreaks });
   // renderer.configure();
   // renderer.configure();
 
 
+  // add rehype plugins
+  rehypePlugins.push(
+    [sanitize, commonSanitizeOption],
+  );
+
   verifySanitizePlugin(options);
   verifySanitizePlugin(options);
   return options;
   return options;
 };
 };