// @flow import React from 'react'; import { Link as InternalLink } from 'react-router-dom'; import type { SlateNodeProps } from '../types'; function getPathFromUrl(href: string) { if (href[0] === '/') return href; try { const parsed = new URL(href); return parsed.pathname; } catch (err) { return ''; } } function isInternalUrl(href: string) { if (href[0] === '/') return true; try { const outline = new URL(BASE_URL); const parsed = new URL(href); return parsed.hostname === outline.hostname; } catch (err) { return false; } } export default function Link({ attributes, node, children, readOnly, }: SlateNodeProps) { const href = node.data.get('href'); const path = getPathFromUrl(href); if (isInternalUrl(href) && readOnly) { return ( {children} ); } else { return ( {children} ); } }