UNPKG

@zodiac-ui/editor

Version:

A rich text editor for Angular based on `@atlaskit/editor-core`.

53 lines 4.88 kB
import * as LinkifyItNs from 'linkify-it'; const LinkifyIt = LinkifyItNs; const whitelistedURLPatterns = [ /^https?:\/\//im, /^ftps?:\/\//im, /^\//im, /^mailto:/im, /^skype:/im, /^callto:/im, /^facetime:/im, /^git:/im, /^irc6?:/im, /^news:/im, /^nntp:/im, /^feed:/im, /^cvs:/im, /^svn:/im, /^mvn:/im, /^ssh:/im, /^scp:\/\//im, /^sftp:\/\//im, /^itms:/im, /^notes:/im, /^hipchat:\/\//im, /^sourcetree:/im, /^urn:/im, /^tel:/im, /^xmpp:/im, /^telnet:/im, /^vnc:/im, /^rdp:/im, /^whatsapp:/im, /^slack:/im, /^sips?:/im, /^magnet:/im, ]; export const isSafeUrl = (url) => { return whitelistedURLPatterns.some(p => p.test(url.trim()) === true); }; const linkify = LinkifyIt(); linkify.add('sourcetree:', 'http:'); export function getLinkMatch(str) { const match = str && linkify.match(str); return match && match[0]; } /** * Adds protocol to url if needed. */ export function normalizeUrl(url) { const match = getLinkMatch(url); return (match && match.url) || url; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B6b2RpYWMtdWkvZWRpdG9yLyIsInNvdXJjZXMiOlsicGx1Z2lucy9saW5rL21hcmstdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFdBQVcsTUFBTSxZQUFZLENBQUM7QUFFMUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFBO0FBRTdCLE1BQU0sc0JBQXNCLEdBQUc7SUFDM0IsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixPQUFPO0lBQ1AsWUFBWTtJQUNaLFdBQVc7SUFDWCxZQUFZO0lBQ1osY0FBYztJQUNkLFNBQVM7SUFDVCxXQUFXO0lBQ1gsVUFBVTtJQUNWLFVBQVU7SUFDVixVQUFVO0lBQ1YsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULGFBQWE7SUFDYixjQUFjO0lBQ2QsVUFBVTtJQUNWLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFlBQVk7SUFDWixTQUFTO0lBQ1QsU0FBUztJQUNULGNBQWM7SUFDZCxXQUFXO0lBQ1gsV0FBVztJQUNYLFlBQVk7Q0FDZixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUU7SUFDOUMsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQztBQVlGLE1BQU0sT0FBTyxHQUFHLFNBQVMsRUFBRSxDQUFDO0FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRXBDLE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVztJQUNwQyxNQUFNLEtBQUssR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxPQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIExpbmtpZnlJdE5zIGZyb20gJ2xpbmtpZnktaXQnO1xyXG5cclxuY29uc3QgTGlua2lmeUl0ID0gTGlua2lmeUl0TnNcclxuXHJcbmNvbnN0IHdoaXRlbGlzdGVkVVJMUGF0dGVybnMgPSBbXHJcbiAgICAvXmh0dHBzPzpcXC9cXC8vaW0sXHJcbiAgICAvXmZ0cHM/OlxcL1xcLy9pbSxcclxuICAgIC9eXFwvL2ltLFxyXG4gICAgL15tYWlsdG86L2ltLFxyXG4gICAgL15za3lwZTovaW0sXHJcbiAgICAvXmNhbGx0bzovaW0sXHJcbiAgICAvXmZhY2V0aW1lOi9pbSxcclxuICAgIC9eZ2l0Oi9pbSxcclxuICAgIC9eaXJjNj86L2ltLFxyXG4gICAgL15uZXdzOi9pbSxcclxuICAgIC9ebm50cDovaW0sXHJcbiAgICAvXmZlZWQ6L2ltLFxyXG4gICAgL15jdnM6L2ltLFxyXG4gICAgL15zdm46L2ltLFxyXG4gICAgL15tdm46L2ltLFxyXG4gICAgL15zc2g6L2ltLFxyXG4gICAgL15zY3A6XFwvXFwvL2ltLFxyXG4gICAgL15zZnRwOlxcL1xcLy9pbSxcclxuICAgIC9eaXRtczovaW0sXHJcbiAgICAvXm5vdGVzOi9pbSxcclxuICAgIC9eaGlwY2hhdDpcXC9cXC8vaW0sXHJcbiAgICAvXnNvdXJjZXRyZWU6L2ltLFxyXG4gICAgL151cm46L2ltLFxyXG4gICAgL150ZWw6L2ltLFxyXG4gICAgL154bXBwOi9pbSxcclxuICAgIC9edGVsbmV0Oi9pbSxcclxuICAgIC9edm5jOi9pbSxcclxuICAgIC9ecmRwOi9pbSxcclxuICAgIC9ed2hhdHNhcHA6L2ltLFxyXG4gICAgL15zbGFjazovaW0sXHJcbiAgICAvXnNpcHM/Oi9pbSxcclxuICAgIC9ebWFnbmV0Oi9pbSxcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1NhZmVVcmwgPSAodXJsOiBzdHJpbmcpOiBib29sZWFuID0+IHtcclxuICAgIHJldHVybiB3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zLnNvbWUocCA9PiBwLnRlc3QodXJsLnRyaW0oKSkgPT09IHRydWUpO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXRjaCB7XHJcbiAgICBzY2hlbWE6IGFueTtcclxuICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICBsYXN0SW5kZXg6IG51bWJlcjtcclxuICAgIHJhdzogc3RyaW5nO1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICBsZW5ndGg/OiBudW1iZXI7XHJcbn1cclxuXHJcbmNvbnN0IGxpbmtpZnkgPSBMaW5raWZ5SXQoKTtcclxubGlua2lmeS5hZGQoJ3NvdXJjZXRyZWU6JywgJ2h0dHA6Jyk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlua01hdGNoKHN0cjogc3RyaW5nKTogJycgfCBNYXRjaCB8IG51bGwge1xyXG4gICAgY29uc3QgbWF0Y2ggPSBzdHIgJiYgbGlua2lmeS5tYXRjaChzdHIpO1xyXG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzBdO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkcyBwcm90b2NvbCB0byB1cmwgaWYgbmVlZGVkLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVVybCh1cmw6IHN0cmluZykge1xyXG4gICAgY29uc3QgbWF0Y2ggPSBnZXRMaW5rTWF0Y2godXJsKTtcclxuICAgIHJldHVybiAobWF0Y2ggJiYgbWF0Y2gudXJsKSB8fCB1cmw7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4iXX0=