From 7fee0d9c5107ffd23b48d440e1d21a0deb614089 Mon Sep 17 00:00:00 2001 From: Cee Chen Date: Mon, 29 Jul 2024 13:15:22 -0700 Subject: [PATCH 1/2] Fix custom plugin that was mutating the default plugins - we should be providing an `exclude` example instead --- .../markdown_link_validation.js | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/eui/src-docs/src/views/markdown_editor/markdown_link_validation.js b/packages/eui/src-docs/src/views/markdown_editor/markdown_link_validation.js index ee6185544d8..0d7863e6ce5 100644 --- a/packages/eui/src-docs/src/views/markdown_editor/markdown_link_validation.js +++ b/packages/eui/src-docs/src/views/markdown_editor/markdown_link_validation.js @@ -6,15 +6,18 @@ import { EuiMarkdownFormat, } from '../../../../src/components'; -// find the validation plugin and configure it to only allow https: and mailto: links -const parsingPlugins = getDefaultEuiMarkdownParsingPlugins(); -parsingPlugins.find(([plugin, config]) => { - const isValidationPlugin = plugin === euiMarkdownLinkValidator; - if (isValidationPlugin) { - config.allowProtocols = ['https:', 'mailto:']; - } - return isValidationPlugin; -}); +const parsingPlugins = [ + // Exclude the default validation plugin, we're configuring our own that excludes `http` as a protocol + ...getDefaultEuiMarkdownParsingPlugins({ + exclude: ['linkValidator'], + }), + [ + euiMarkdownLinkValidator, + { + allowProtocols: ['https:', 'mailto:'], + }, + ], +]; const markdown = `**Standalone links** https://example.com From e36efa899d852df681260022006d4883b29319db Mon Sep 17 00:00:00 2001 From: Cee Chen Date: Mon, 29 Jul 2024 13:16:34 -0700 Subject: [PATCH 2/2] Update snippet as well --- .../markdown_plugin_example.js | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/packages/eui/src-docs/src/views/markdown_editor/markdown_plugin_example.js b/packages/eui/src-docs/src/views/markdown_editor/markdown_plugin_example.js index 94a3471b1bc..b839bfbdb34 100644 --- a/packages/eui/src-docs/src/views/markdown_editor/markdown_plugin_example.js +++ b/packages/eui/src-docs/src/views/markdown_editor/markdown_plugin_example.js @@ -327,28 +327,24 @@ export const MarkdownPluginExample = { ), snippet: [ - `// change what link protocols are allowed -const parsingPlugins = getDefaultEuiMarkdownParsingPlugins(); -parsingPlugins.find(([plugin, config]) => { - const isValidationPlugin = plugin === euiMarkdownLinkValidator; - if (isValidationPlugin) { - config.allowProtocols = ['https:', 'mailto:']; - } - return isValidationPlugin; -});`, - `// filter out the link validation plugin -const parsingPlugins = getDefaultEuiMarkdownParsingPlugins().filter(([plugin]) => { - return plugin !== euiMarkdownLinkValidator; -});`, - `// disable relative urls -const parsingPlugins = getDefaultEuiMarkdownParsingPlugins(); -parsingPlugins.find(([plugin, config]) => { - const isValidationPlugin = plugin === euiMarkdownLinkValidator; - if (isValidationPlugin) { - config.allowRelative = false; - } - return isValidationPlugin; -});`, + `// customize what link protocols are allowed +const parsingPlugins = [ + ...getDefaultEuiMarkdownParsingPlugins({ + // Exclude the default validation plugin - we're configuring our own + exclude: ['linkValidator'], + }), + [ + euiMarkdownLinkValidator, + { + // Customize what link protocols are allowed + allowProtocols: ['https:', 'mailto:'], + }, + ] +]; + +// Pass the customized parsing plugins to your markdown component + +`, ], demo: , },