UNPKG

@zodiac-ui/editor

Version:

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

76 lines 9.82 kB
import { COLOR, LINK } from "./constants"; import { isSafeUrl, normalizeUrl } from "./mark-utils"; export const link = { excludes: COLOR, group: LINK, attrs: { href: {}, __confluenceMetadata: { default: null, }, }, inclusive: false, parseDOM: [ { tag: 'a[href]', getAttrs: domNode => { const dom = domNode; let href = dom.getAttribute('href') || ''; const attrs = { __confluenceMetadata: dom.hasAttribute('__confluenceMetadata') ? JSON.parse(dom.getAttribute('__confluenceMetadata') || '') : undefined, }; if (href.slice(-1) === '/') { href = href.slice(0, -1); } if (isSafeUrl(href)) { attrs.href = normalizeUrl(href); } else { return false; } return attrs; }, }, ], toDOM(node, isInline) { // tslint:disable-next-line:no-shadowed-variable const attrs = Object.keys(node.attrs).reduce((attrs, key) => { if (key === '__confluenceMetadata') { if (node.attrs[key] !== null) { attrs[key] = JSON.stringify(node.attrs[key]); } } else { attrs[key] = node.attrs[key]; } return attrs; }, {}); if (isInline) { return ['a', attrs]; } return [ 'a', Object.assign({}, attrs, { class: 'blockLink' }), 0, ]; }, }; const OPTIONAL_ATTRS = [ 'title', 'id', 'collection', 'occurrenceKey', '__confluenceMetadata', ]; export const toJSON = (mark) => ({ type: mark.type.name, attrs: Object.keys(mark.attrs).reduce((attrs, key) => { if (OPTIONAL_ATTRS.indexOf(key) === -1 || mark.attrs[key] !== null) { attrs[key] = mark.attrs[key]; } return attrs; }, {}), }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5tYXJrLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHpvZGlhYy11aS9lZGl0b3IvIiwic291cmNlcyI6WyJwbHVnaW5zL2xpbmsvbGluay5tYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBZ0N0RCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQWE7SUFDMUIsUUFBUSxFQUFFLEtBQUs7SUFDZixLQUFLLEVBQUUsSUFBSTtJQUNYLEtBQUssRUFBRTtRQUNILElBQUksRUFBRSxFQUFFO1FBQ1Isb0JBQW9CLEVBQUU7WUFDbEIsT0FBTyxFQUFFLElBQUk7U0FDaEI7S0FDSjtJQUNELFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFFBQVEsRUFBRTtRQUNOO1lBQ0ksR0FBRyxFQUFFLFNBQVM7WUFDZCxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2hCLE1BQU0sR0FBRyxHQUFHLE9BQTBCLENBQUM7Z0JBQ3ZDLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMxQyxNQUFNLEtBQUssR0FBb0Q7b0JBQzNELG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUM7d0JBQzFELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQzVELENBQUMsQ0FBQyxTQUFTO2lCQUNsQixDQUFDO2dCQUVGLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtvQkFDeEIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzVCO2dCQUVELElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNqQixLQUFLLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbkM7cUJBQU07b0JBQ0gsT0FBTyxLQUFLLENBQUM7aUJBQ2hCO2dCQUVELE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7U0FDSjtLQUNKO0lBQ0QsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRO1FBQ2hCLGdEQUFnRDtRQUNoRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDN0QsSUFBSSxHQUFHLEtBQUssc0JBQXNCLEVBQUU7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDaEQ7YUFDSjtpQkFBTTtnQkFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNoQztZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVQLElBQUksUUFBUSxFQUFFO1lBQ1YsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2QjtRQUVELE9BQU87WUFDSCxHQUFHOzhCQUVJLEtBQUssSUFDUixLQUFLLEVBQUUsV0FBVztZQUV0QixDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUc7SUFDbkIsT0FBTztJQUNQLElBQUk7SUFDSixZQUFZO0lBQ1osZUFBZTtJQUNmLHNCQUFzQjtDQUN6QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7SUFDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FDakMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDWCxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDaEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLEVBQ0QsRUFBRSxDQUNMO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFya1NwZWMsIE1hcmsgfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XHJcbmltcG9ydCB7IENPTE9SLCBMSU5LIH0gZnJvbSBcIi4vY29uc3RhbnRzXCJcclxuaW1wb3J0IHsgaXNTYWZlVXJsLCBub3JtYWxpemVVcmwgfSBmcm9tIFwiLi9tYXJrLXV0aWxzXCJcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmx1ZW5jZUxpbmtNZXRhZGF0YSB7XHJcbiAgICBsaW5rVHlwZTogc3RyaW5nO1xyXG4gICAgdmVyc2lvbkF0U2F2ZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBmaWxlTmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBzcGFjZUtleT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBjb250ZW50VGl0bGU/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgaXNSZW5hbWVkVGl0bGU/OiBib29sZWFuO1xyXG4gICAgYW5jaG9yTmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBjb250ZW50SWQ/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgY29udGFpbmVyPzogQ29uZmx1ZW5jZUxpbmtNZXRhZGF0YTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaW5rQXR0cmlidXRlcyB7XHJcbiAgICBocmVmOiBzdHJpbmc7XHJcbiAgICB0aXRsZT86IHN0cmluZztcclxuICAgIGlkPzogc3RyaW5nO1xyXG4gICAgY29sbGVjdGlvbj86IHN0cmluZztcclxuICAgIG9jY3VycmVuY2VLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgX19jb25mbHVlbmNlTWV0YWRhdGE/OiBDb25mbHVlbmNlTGlua01ldGFkYXRhO1xyXG59XHJcblxyXG4vKipcclxuICogQG5hbWUgbGlua19tYXJrXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExpbmtEZWZpbml0aW9uIHtcclxuICAgIHR5cGU6ICdsaW5rJztcclxuICAgIGF0dHJzOiBMaW5rQXR0cmlidXRlcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGxpbms6IE1hcmtTcGVjID0ge1xyXG4gICAgZXhjbHVkZXM6IENPTE9SLFxyXG4gICAgZ3JvdXA6IExJTkssXHJcbiAgICBhdHRyczoge1xyXG4gICAgICAgIGhyZWY6IHt9LFxyXG4gICAgICAgIF9fY29uZmx1ZW5jZU1ldGFkYXRhOiB7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBpbmNsdXNpdmU6IGZhbHNlLFxyXG4gICAgcGFyc2VET006IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRhZzogJ2FbaHJlZl0nLFxyXG4gICAgICAgICAgICBnZXRBdHRyczogZG9tTm9kZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkb20gPSBkb21Ob2RlIGFzIEhUTUxMaW5rRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGxldCBocmVmID0gZG9tLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cnM6IHsgX19jb25mbHVlbmNlTWV0YWRhdGE6IHN0cmluZzsgaHJlZj86IHN0cmluZyB9ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIF9fY29uZmx1ZW5jZU1ldGFkYXRhOiBkb20uaGFzQXR0cmlidXRlKCdfX2NvbmZsdWVuY2VNZXRhZGF0YScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gSlNPTi5wYXJzZShkb20uZ2V0QXR0cmlidXRlKCdfX2NvbmZsdWVuY2VNZXRhZGF0YScpIHx8ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGhyZWYuc2xpY2UoLTEpID09PSAnLycpIHtcclxuICAgICAgICAgICAgICAgICAgICBocmVmID0gaHJlZi5zbGljZSgwLCAtMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGlzU2FmZVVybChocmVmKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzLmhyZWYgPSBub3JtYWxpemVVcmwoaHJlZik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXR0cnM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB0b0RPTShub2RlLCBpc0lubGluZSkge1xyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1zaGFkb3dlZC12YXJpYWJsZVxyXG4gICAgICAgIGNvbnN0IGF0dHJzID0gT2JqZWN0LmtleXMobm9kZS5hdHRycykucmVkdWNlPGFueT4oKGF0dHJzLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ19fY29uZmx1ZW5jZU1ldGFkYXRhJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuYXR0cnNba2V5XSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzW2tleV0gPSBKU09OLnN0cmluZ2lmeShub2RlLmF0dHJzW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYXR0cnNba2V5XSA9IG5vZGUuYXR0cnNba2V5XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGF0dHJzO1xyXG4gICAgICAgIH0sIHt9KTtcclxuXHJcbiAgICAgICAgaWYgKGlzSW5saW5lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ2EnLCBhdHRyc107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAnYScsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIC4uLmF0dHJzLFxyXG4gICAgICAgICAgICAgICAgY2xhc3M6ICdibG9ja0xpbmsnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAwLFxyXG4gICAgICAgIF07XHJcbiAgICB9LFxyXG59O1xyXG5cclxuY29uc3QgT1BUSU9OQUxfQVRUUlMgPSBbXHJcbiAgICAndGl0bGUnLFxyXG4gICAgJ2lkJyxcclxuICAgICdjb2xsZWN0aW9uJyxcclxuICAgICdvY2N1cnJlbmNlS2V5JyxcclxuICAgICdfX2NvbmZsdWVuY2VNZXRhZGF0YScsXHJcbl07XHJcblxyXG5leHBvcnQgY29uc3QgdG9KU09OID0gKG1hcms6IE1hcmspID0+ICh7XHJcbiAgICB0eXBlOiBtYXJrLnR5cGUubmFtZSxcclxuICAgIGF0dHJzOiBPYmplY3Qua2V5cyhtYXJrLmF0dHJzKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXHJcbiAgICAgICAgKGF0dHJzLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgaWYgKE9QVElPTkFMX0FUVFJTLmluZGV4T2Yoa2V5KSA9PT0gLTEgfHwgbWFyay5hdHRyc1trZXldICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBhdHRyc1trZXldID0gbWFyay5hdHRyc1trZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBhdHRycztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHt9LFxyXG4gICAgKSxcclxufSk7XHJcbiJdfQ==