UNPKG

ngx-editor

Version:

Rich Text Editor for angular using ProseMirror

149 lines 12.8 kB
// :: MarkSpec A link. Has `href` and `title` attributes. `title` // defaults to the empty string. Rendered and parsed as an `<a>` // element. const link = { attrs: { href: {}, title: { default: null }, target: { default: '_blank' } }, inclusive: false, parseDOM: [ { tag: 'a[href]', getAttrs(dom) { return { href: dom.getAttribute('href'), title: dom.getAttribute('title'), target: dom.getAttribute('target'), }; } } ], toDOM(node) { const { href, title, target } = node.attrs; return ['a', { href, title, target }, 0]; } }; // :: MarkSpec An emphasis mark. Rendered as an `<em>` element. // Has parse rules that also match `<i>` and `font-style: italic`. const em = { parseDOM: [ { tag: 'i' }, { tag: 'em' }, { style: 'font-style=italic' } ], toDOM() { return ['em', 0]; } }; // :: MarkSpec A strong mark. Rendered as `<strong>`, parse rules // also match `<b>` and `font-weight: bold`. const strong = { parseDOM: [ { tag: 'strong' }, // This works around a Google Docs misbehavior where // pasted content will be inexplicably wrapped in `<b>` // tags with a font-weight normal. { tag: 'b', getAttrs: (dom) => { return dom.style.fontWeight !== 'normal' && null; }, }, { style: 'font-weight', getAttrs: (value) => { return /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null; } } ], toDOM() { return ['strong', 0]; } }; // :: MarkSpec Code font mark. Represented as a `<code>` element. const code = { parseDOM: [ { tag: 'code' } ], toDOM() { return ['code', 0]; } }; // :: MarkSpec An underline mark. Rendered as an `<u>` element. // Has parse rules that also match `text-decoration: underline`. const u = { parseDOM: [ { tag: 'u' }, { style: 'text-decoration=underline', consuming: false } ], toDOM() { return ['u', 0]; } }; // :: MarkSpec An underline mark. Rendered as an `<s>` element. // Has parse rules that also match `strike`, `del` tag and css property `text-decoration: line-through`. const s = { parseDOM: [ { tag: 's' }, { tag: 'strike' }, { style: 'text-decoration=line-through' } ], toDOM() { return ['s', 0]; } }; const textColor = { attrs: { color: { default: null }, }, parseDOM: [ { style: 'color', getAttrs: (value) => { return { color: value }; } } ], toDOM(mark) { const { color } = mark.attrs; return ['span', { style: `color:${color};` }, 0]; }, }; const textBackgroundColor = { attrs: { backgroundColor: { default: null }, }, parseDOM: [ { style: 'background-color', getAttrs: (value) => { return { backgroundColor: value }; } } ], toDOM(mark) { const { backgroundColor } = mark.attrs; return ['span', { style: `background-color:${backgroundColor};` }, 0]; }, }; const marks = { link, em, strong, code, u, s, text_color: textColor, text_background_color: textBackgroundColor }; export default marks; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZWRpdG9yL3NjaGVtYS9tYXJrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLFdBQVc7QUFDWCxNQUFNLElBQUksR0FBYTtJQUNyQixLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsRUFBRTtRQUNSLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFDeEIsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtLQUM5QjtJQUNELFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFFBQVEsRUFBRTtRQUNSO1lBQ0UsR0FBRyxFQUFFLFNBQVM7WUFDZCxRQUFRLENBQUMsR0FBZ0I7Z0JBQ3ZCLE9BQU87b0JBQ0wsSUFBSSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO29CQUM5QixLQUFLLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7b0JBQ2hDLE1BQU0sRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztpQkFDbkMsQ0FBQztZQUNKLENBQUM7U0FDRjtLQUNGO0lBQ0QsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRixDQUFDO0FBRUYsK0RBQStEO0FBQy9ELGtFQUFrRTtBQUNsRSxNQUFNLEVBQUUsR0FBYTtJQUNuQixRQUFRLEVBQUU7UUFDUixFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7UUFDWixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7UUFDYixFQUFF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QztTQUNGO0tBQ0Y7SUFDRCxLQUFLLENBQUMsSUFBVTtRQUNkLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLGVBQWUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNGLENBQUM7QUFFRixNQUFNLEtBQUssR0FBRztJQUNaLElBQUk7SUFDSixFQUFFO0lBQ0YsTUFBTTtJQUNOLElBQUk7SUFDSixDQUFDO0lBQ0QsQ0FBQztJQUNELFVBQVUsRUFBRSxTQUFTO0lBQ3JCLHFCQUFxQixFQUFFLG1CQUFtQjtDQUMzQyxDQUFDO0FBRUYsZUFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET01PdXRwdXRTcGVjLCBNYXJrLCBNYXJrU3BlYyB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcblxuLy8gOjogTWFya1NwZWMgQSBsaW5rLiBIYXMgYGhyZWZgIGFuZCBgdGl0bGVgIGF0dHJpYnV0ZXMuIGB0aXRsZWBcbi8vIGRlZmF1bHRzIHRvIHRoZSBlbXB0eSBzdHJpbmcuIFJlbmRlcmVkIGFuZCBwYXJzZWQgYXMgYW4gYDxhPmBcbi8vIGVsZW1lbnQuXG5jb25zdCBsaW5rOiBNYXJrU3BlYyA9IHtcbiAgYXR0cnM6IHtcbiAgICBocmVmOiB7fSxcbiAgICB0aXRsZTogeyBkZWZhdWx0OiBudWxsIH0sXG4gICAgdGFyZ2V0OiB7IGRlZmF1bHQ6ICdfYmxhbmsnIH1cbiAgfSxcbiAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgcGFyc2VET006IFtcbiAgICB7XG4gICAgICB0YWc6ICdhW2hyZWZdJyxcbiAgICAgIGdldEF0dHJzKGRvbTogSFRNTEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBocmVmOiBkb20uZ2V0QXR0cmlidXRlKCdocmVmJyksXG4gICAgICAgICAgdGl0bGU6IGRvbS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyksXG4gICAgICAgICAgdGFyZ2V0OiBkb20uZ2V0QXR0cmlidXRlKCd0YXJnZXQnKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIF0sXG4gIHRvRE9NKG5vZGUpOiBET01PdXRwdXRTcGVjIHtcbiAgICBjb25zdCB7IGhyZWYsIHRpdGxlLCB0YXJnZXQgfSA9IG5vZGUuYXR0cnM7XG4gICAgcmV0dXJuIFsnYScsIHsgaHJlZiwgdGl0bGUsIHRhcmdldCB9LCAwXTtcbiAgfVxufTtcblxuLy8gOjogTWFya1NwZWMgQW4gZW1waGFzaXMgbWFyay4gUmVuZGVyZWQgYXMgYW4gYDxlbT5gIGVsZW1lbnQuXG4vLyBIYXMgcGFyc2UgcnVsZXMgdGhhdCBhbHNvIG1hdGNoIGA8aT5gIGFuZCBgZm9udC1zdHlsZTogaXRhbGljYC5cbmNvbnN0IGVtOiBNYXJrU3BlYyA9IHtcbiAgcGFyc2VET006IFtcbiAgICB7IHRhZzogJ2knIH0sXG4gICAgeyB0YWc6ICdlbScgfSxcbiAgICB7IHN0eWxlOiAnZm9udC1zdHlsZT1pdGFsaWMnIH1cbiAgXSxcbiAgdG9ET00oKTogRE9NT3V0cHV0U3BlYyB7XG4gICAgcmV0dXJuIFsnZW0nLCAwXTtcbiAgfVxufTtcblxuLy8gOjogTWFya1NwZWMgQSBzdHJvbmcgbWFyay4gUmVuZGVyZWQgYXMgYDxzdHJvbmc+YCwgcGFyc2UgcnVsZXNcbi8vIGFsc28gbWF0Y2ggYDxiPmAgYW5kIGBmb250LXdlaWdodDogYm9sZGAuXG5jb25zdCBzdHJvbmc6IE1hcmtTcGVjID0ge1xuICBwYXJzZURPTTogW1xuICAgIHsgdGFnOiAnc3Ryb25nJyB9LFxuICAgIC8vIFRoaXMgd29ya3MgYXJvdW5kIGEgR29vZ2xlIERvY3MgbWlzYmVoYXZpb3Igd2hlcmVcbiAgICAvLyBwYXN0ZWQgY29udGVudCB3aWxsIGJlIGluZXhwbGljYWJseSB3cmFwcGVkIGluIGA8Yj5gXG4gICAgLy8gdGFncyB3aXRoIGEgZm9udC13ZWlnaHQgbm9ybWFsLlxuICAgIHtcbiAgICAgIHRhZzogJ2InLFxuICAgICAgZ2V0QXR0cnM6IChkb206IEhUTUxFbGVtZW50KTogUmVjb3JkPHN0cmluZywgYW55PiA9PiB7XG4gICAgICAgIHJldHVybiBkb20uc3R5bGUuZm9udFdlaWdodCAhPT0gJ25vcm1hbCcgJiYgbnVsbDtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBzdHlsZTogJ2ZvbnQtd2VpZ2h0JyxcbiAgICAgIGdldEF0dHJzOiAodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4gPT4ge1xuICAgICAgICByZXR1cm4gL14oYm9sZChlcik/fFs1LTldXFxkezIsfSkkLy50ZXN0KHZhbHVlKSAmJiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgXSxcbiAgdG9ET00oKTogRE9NT3V0cHV0U3BlYyB7XG4gICAgcmV0dXJuIFsnc3Ryb25nJywgMF07XG4gIH1cbn07XG5cbi8vIDo6IE1hcmtTcGVjIENvZGUgZm9udCBtYXJrLiBSZXByZXNlbnRlZCBhcyBhIGA8Y29kZT5gIGVsZW1lbnQuXG5jb25zdCBjb2RlOiBNYXJrU3BlYyA9IHtcbiAgcGFyc2VET006IFtcbiAgICB7IHRhZzogJ2NvZGUnIH1cbiAgXSxcbiAgdG9ET00oKTogRE9NT3V0cHV0U3BlYyB7XG4gICAgcmV0dXJuIFsnY29kZScsIDBdO1xuICB9XG59O1xuXG4vLyA6OiBNYXJrU3BlYyBBbiB1bmRlcmxpbmUgbWFyay4gUmVuZGVyZWQgYXMgYW4gYDx1PmAgZWxlbWVudC5cbi8vIEhhcyBwYXJzZSBydWxlcyB0aGF0IGFsc28gbWF0Y2ggYHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lYC5cbmNvbnN0IHU6IE1hcmtTcGVjID0ge1xuICBwYXJzZURPTTogW1xuICAgIHsgdGFnOiAndScgfSxcbiAgICB7XG4gICAgICBzdHlsZTogJ3RleHQtZGVjb3JhdGlvbj11bmRlcmxpbmUnLFxuICAgICAgY29uc3VtaW5nOiBmYWxzZVxuICAgIH1cbiAgXSxcbiAgdG9ET00oKTogRE9NT3V0cHV0U3BlYyB7XG4gICAgcmV0dXJuIFsndScsIDBdO1xuICB9XG59O1xuXG4vLyA6OiBNYXJrU3BlYyBBbiB1bmRlcmxpbmUgbWFyay4gUmVuZGVyZWQgYXMgYW4gYDxzPmAgZWxlbWVudC5cbi8vIEhhcyBwYXJzZSBydWxlcyB0aGF0IGFsc28gbWF0Y2ggYHN0cmlrZWAsIGBkZWxgIHRhZyBhbmQgY3NzIHByb3BlcnR5IGB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaGAuXG5jb25zdCBzOiBNYXJrU3BlYyA9IHtcbiAgcGFyc2VET006IFtcbiAgICB7IHRhZzogJ3MnIH0sXG4gICAgeyB0YWc6ICdzdHJpa2UnIH0sXG4gICAgeyBzdHlsZTogJ3RleHQtZGVjb3JhdGlvbj1saW5lLXRocm91Z2gnIH1cbiAgXSxcbiAgdG9ET00oKTogRE9NT3V0cHV0U3BlYyB7XG4gICAgcmV0dXJuIFsncycsIDBdO1xuICB9XG59O1xuXG5jb25zdCB0ZXh0Q29sb3I6IE1hcmtTcGVjID0ge1xuICBhdHRyczoge1xuICAgIGNvbG9yOiB7XG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfSxcbiAgfSxcbiAgcGFyc2VET006IFtcbiAgICB7XG4gICAgICBzdHlsZTogJ2NvbG9yJyxcbiAgICAgIGdldEF0dHJzOiAodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4gPT4ge1xuICAgICAgICByZXR1cm4geyBjb2xvcjogdmFsdWUgfTtcbiAgICAgIH1cbiAgICB9XG4gIF0sXG4gIHRvRE9NKG1hcms6IE1hcmspOiBET01PdXRwdXRTcGVjIHtcbiAgICBjb25zdCB7IGNvbG9yIH0gPSBtYXJrLmF0dHJzO1xuICAgIHJldHVybiBbJ3NwYW4nLCB7IHN0eWxlOiBgY29sb3I6JHtjb2xvcn07YCB9LCAwXTtcbiAgfSxcbn07XG5cbmNvbnN0IHRleHRCYWNrZ3JvdW5kQ29sb3I6IE1hcmtTcGVjID0ge1xuICBhdHRyczoge1xuICAgIGJhY2tncm91bmRDb2xvcjoge1xuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH0sXG4gIH0sXG4gIHBhcnNlRE9NOiBbXG4gICAge1xuICAgICAgc3R5bGU6ICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgIGdldEF0dHJzOiAodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4gPT4ge1xuICAgICAgICByZXR1cm4geyBiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlIH07XG4gICAgICB9XG4gICAgfVxuICBdLFxuICB0b0RPTShtYXJrOiBNYXJrKTogRE9NT3V0cHV0U3BlYyB7XG4gICAgY29uc3QgeyBiYWNrZ3JvdW5kQ29sb3IgfSA9IG1hcmsuYXR0cnM7XG4gICAgcmV0dXJuIFsnc3BhbicsIHsgc3R5bGU6IGBiYWNrZ3JvdW5kLWNvbG9yOiR7YmFja2dyb3VuZENvbG9yfTtgIH0sIDBdO1xuICB9LFxufTtcblxuY29uc3QgbWFya3MgPSB7XG4gIGxpbmssXG4gIGVtLFxuICBzdHJvbmcsXG4gIGNvZGUsXG4gIHUsXG4gIHMsXG4gIHRleHRfY29sb3I6IHRleHRDb2xvcixcbiAgdGV4dF9iYWNrZ3JvdW5kX2NvbG9yOiB0ZXh0QmFja2dyb3VuZENvbG9yXG59O1xuXG5leHBvcnQgZGVmYXVsdCBtYXJrcztcbiJdfQ==