ngx-editor
Version:
Rich Text Editor for angular using ProseMirror
22 lines • 3.98 kB
JavaScript
import getSelectionMarks from './getSelectionMarks';
export const isLinkActive = (state) => {
const { schema, selection: { anchor, head, from } } = state;
if (!schema.marks.link) {
return false;
}
const isForwardSelection = anchor === from;
const linkMarks = getSelectionMarks(state).filter(mark => mark.type === schema.marks.link);
if (!linkMarks.length) {
return false;
}
const selectionHasOnlyMarks = isForwardSelection ?
(state.doc.rangeHasMark(anchor, anchor + 1, schema.marks.link) &&
state.doc.rangeHasMark(head - 1, head, schema.marks.link)) : (state.doc.rangeHasMark(anchor - 1, anchor, schema.marks.link) &&
state.doc.rangeHasMark(head, head + 1, schema.marks.link));
if (linkMarks.length === 1 && selectionHasOnlyMarks) {
return true;
}
return false;
};
export default isLinkActive;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNMaW5rQWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVkaXRvci9oZWxwZXJzL2lzTGlua0FjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLGlCQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWtCLEVBQVcsRUFBRTtJQUMxRCxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQVcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5HLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsQ0FDRSxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUNGLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzdELEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQzFELENBQUM7SUFFSixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLHFCQUFxQixFQUFFO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLGVBQWUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yU3RhdGUgfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5pbXBvcnQgeyBNYXJrIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuXG5pbXBvcnQgZ2V0U2VsZWN0aW9uTWFya3MgZnJvbSAnLi9nZXRTZWxlY3Rpb25NYXJrcyc7XG5cbmV4cG9ydCBjb25zdCBpc0xpbmtBY3RpdmUgPSAoc3RhdGU6IEVkaXRvclN0YXRlKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHsgc2NoZW1hLCBzZWxlY3Rpb246IHsgYW5jaG9yLCBoZWFkLCBmcm9tIH0gfSA9IHN0YXRlO1xuXG4gIGlmICghc2NoZW1hLm1hcmtzLmxpbmspIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBpc0ZvcndhcmRTZWxlY3Rpb24gPSBhbmNob3IgPT09IGZyb207XG4gIGNvbnN0IGxpbmtNYXJrczogTWFya1tdID0gZ2V0U2VsZWN0aW9uTWFya3Moc3RhdGUpLmZpbHRlcihtYXJrID0+IG1hcmsudHlwZSA9PT0gc2NoZW1hLm1hcmtzLmxpbmspO1xuXG4gIGlmICghbGlua01hcmtzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGlvbkhhc09ubHlNYXJrcyA9IGlzRm9yd2FyZFNlbGVjdGlvbiA/XG4gICAgKFxuICAgICAgc3RhdGUuZG9jLnJhbmdlSGFzTWFyayhhbmNob3IsIGFuY2hvciArIDEsIHNjaGVtYS5tYXJrcy5saW5rKSAmJlxuICAgICAgc3RhdGUuZG9jLnJhbmdlSGFzTWFyayhoZWFkIC0gMSwgaGVhZCwgc2NoZW1hLm1hcmtzLmxpbmspXG4gICAgKSA6IChcbiAgICAgIHN0YXRlLmRvYy5yYW5nZUhhc01hcmsoYW5jaG9yIC0gMSwgYW5jaG9yLCBzY2hlbWEubWFya3MubGluaykgJiZcbiAgICAgIHN0YXRlLmRvYy5yYW5nZUhhc01hcmsoaGVhZCwgaGVhZCArIDEsIHNjaGVtYS5tYXJrcy5saW5rKVxuICAgICk7XG5cbiAgaWYgKGxpbmtNYXJrcy5sZW5ndGggPT09IDEgJiYgc2VsZWN0aW9uSGFzT25seU1hcmtzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpc0xpbmtBY3RpdmU7XG4iXX0=