Feature Configuration 
Use featuresConfigs to configure features
purrmd({
  featuresConfigs: {
    [PurrMDFeatures.Link]: {
      ...
    },
    ...
  },
})Supported configurations: 
interface PurrMDFeatureConfig {
  [PurrMDFeatures.Blockquote]?: BlockquoteConfig;
  [PurrMDFeatures.CodeBlock]?: CodeBlockConfig;
  [PurrMDFeatures.Emphasis]?: EmphasisConfig;
  [PurrMDFeatures.Heading]?: HeadingConfig;
  [PurrMDFeatures.Highlight]?: HighlightConfig;
  [PurrMDFeatures.HorizontalRule]?: HorizontalRuleConfig;
  [PurrMDFeatures.Image]?: ImageConfig;
  [PurrMDFeatures.InlineCode]?: InlineCodeConfig;
  [PurrMDFeatures.Link]?: LinkConfig;
  [PurrMDFeatures.List]?: ListConfig;
  [PurrMDFeatures.Strikethrough]?: StrikethroughConfig;
  [PurrMDFeatures.Strong]?: StrongConfig;
}Blockquote - Blockquote 
No configuration available
interface BlockquoteConfig {}Code Block - CodeBlock 
- onCodeBlockInfoClickClick event for the language button in the upper right corner of the code block
interface CodeBlockConfig {
  onCodeBlockInfoClick?: (lang: string, code: string, event: MouseEvent) => void;
}Emphasis - Emphasis 
No configuration available
interface EmphasisConfig {}Heading - Heading 
No configuration available
interface HeadingConfig {}Highlight - Highlight 
No configuration available
interface HighlightConfig {}Horizontal Rule - HorizontalRule 
- onClickClick event for horizontal rule
interface HorizontalRuleConfig {
  onClick?: (event: MouseEvent, view: EditorView, node: SyntaxNodeRef) => void;
}Image - Image 
- proxyURLProxy URL. The URL obtained through this method will be rendered to the img element.
- imageAlwaysShowWhether to always display images, even when Markdown tags (- []()) are shown.
- NoImageAvailableLabelPrompt text when the image is unavailable. Default:- "No image available".
- ImageLoadFailedLabelPrompt text when the image fails to load. Default:- (url) => `Image failed to load: ${url}`.
- onImageDownImage click event
interface ImageConfig {
  proxyURL?: (url: string) => string;
  imageAlwaysShow?: boolean;
  NoImageAvailableLabel?: string;
  ImageLoadFailedLabel?: (url: string) => string;
  onImageDown?: (
    e: MouseEvent,
    url: string | null | undefined,
    rawUrl: string | null | undefined,
  ) => void;
}Inline Code - InlineCode 
No configuration available
interface InlineCodeConfig {}Link - Link 
- clickToOpenInSourceHow to open links in source mode:- 'controlOrCommand'Hold Control or Command key and click to open the link
- 'click'Click to open the link
- 'none'Do not open the link
 
- clickToOpenInPreviewHow to open links in preview mode:- 'controlOrCommand'Hold Control or Command key and click to open the link
- 'click'Click to open the link
- 'none'Do not open the link
 
- onLinkClickSourceLink click event in source mode
- onLinkClickPreviewLink click event in preview mode
interface LinkConfig {
  clickToOpenInSource?: 'controlOrCommand' | 'click' | 'none';
  clickToOpenInPreview?: 'controlOrCommand' | 'click' | 'none';
  onLinkClickSource?: (url: string, event: MouseEvent) => void;
  onLinkClickPreview?: (url: string, event: MouseEvent) => void;
}List - List 
- taskItemReadonlyWhether task lists are read-only
- onTaskItemCheckedTask list checked event
export interface ListConfig {
  taskItemReadonly?: boolean;
  onTaskItemChecked?: (checked: boolean, event: Event) => void;
}Strikethrough - Strikethrough 
No configuration available
interface StrikethroughConfig {}Strong - Strong 
No configuration available
interface StrongConfig {}