ngx-editor
Version:
Rich Text Editor for angular using ProseMirror
19 lines • 2.91 kB
JavaScript
const findNodeType = (type, $from) => {
for (let i = $from.depth; i > 0; i -= 1) {
if ($from.node(i).type === type) {
return $from.node(i).type;
}
}
return null;
};
export const isNodeActive = (state, type, attrs = {}) => {
const { selection } = state;
const { $from, to } = selection;
const node = findNodeType(type, $from);
if (!Object.entries(attrs).length || !node) {
return Boolean(node);
}
return to <= $from.end() && $from.parent.hasMarkup(type, attrs);
};
export default isNodeActive;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNOb2RlQWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVkaXRvci9oZWxwZXJzL2lzTm9kZUFjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFlBQVksR0FBRyxDQUFDLElBQWMsRUFBRSxLQUFrQixFQUFtQixFQUFFO0lBQzNFLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDL0IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUMzQjtLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFrQixFQUFFLElBQWMsRUFBRSxRQUFhLEVBQUUsRUFBVyxFQUFFO0lBQzNGLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDNUIsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFFaEMsTUFBTSxJQUFJLEdBQW9CLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQzFDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RCO0lBRUQsT0FBTyxFQUFFLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixlQUFlLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvclN0YXRlIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xuaW1wb3J0IHsgTm9kZVR5cGUsIFJlc29sdmVkUG9zIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuXG5jb25zdCBmaW5kTm9kZVR5cGUgPSAodHlwZTogTm9kZVR5cGUsICRmcm9tOiBSZXNvbHZlZFBvcyk6IE5vZGVUeXBlIHwgbnVsbCA9PiB7XG4gIGZvciAobGV0IGkgPSAkZnJvbS5kZXB0aDsgaSA+IDA7IGkgLT0gMSkge1xuICAgIGlmICgkZnJvbS5ub2RlKGkpLnR5cGUgPT09IHR5cGUpIHtcbiAgICAgIHJldHVybiAkZnJvbS5ub2RlKGkpLnR5cGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgaXNOb2RlQWN0aXZlID0gKHN0YXRlOiBFZGl0b3JTdGF0ZSwgdHlwZTogTm9kZVR5cGUsIGF0dHJzOiBhbnkgPSB7fSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gc3RhdGU7XG4gIGNvbnN0IHsgJGZyb20sIHRvIH0gPSBzZWxlY3Rpb247XG5cbiAgY29uc3Qgbm9kZTogTm9kZVR5cGUgfCBudWxsID0gZmluZE5vZGVUeXBlKHR5cGUsICRmcm9tKTtcblxuICBpZiAoIU9iamVjdC5lbnRyaWVzKGF0dHJzKS5sZW5ndGggfHwgIW5vZGUpIHtcbiAgICByZXR1cm4gQm9vbGVhbihub2RlKTtcbiAgfVxuXG4gIHJldHVybiB0byA8PSAkZnJvbS5lbmQoKSAmJiAkZnJvbS5wYXJlbnQuaGFzTWFya3VwKHR5cGUsIGF0dHJzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGlzTm9kZUFjdGl2ZTtcbiJdfQ==