@zodiac-ui/editor
Version:
A rich text editor for Angular based on `@atlaskit/editor-core`.
47 lines • 8.45 kB
JavaScript
import { toggleBlockMark } from "../../lib/commands/toggle-block-mark";
export const cascadeCommands = (cmds) => (state, dispatch) => {
const { tr: baseTr } = state;
let shouldDispatch = false;
const onDispatchAction = tr => {
tr.steps.forEach(st => {
baseTr.step(st);
});
shouldDispatch = true;
};
cmds.forEach(cmd => {
cmd(state, onDispatchAction);
});
if (dispatch && shouldDispatch) {
dispatch(baseTr);
return true;
}
return false;
};
export const isAlignable = (align) => (state, dispatch) => {
const { nodes: { paragraph, heading }, marks: { alignment }, } = state.schema;
return toggleBlockMark(alignment, () => (!align ? undefined : align === "start" ? false : { align }), [paragraph, heading])(state, dispatch);
};
export const changeAlignment = (align) => (state, dispatch) => {
const { nodes: { paragraph, heading }, marks: { alignment }, } = state.schema;
return cascadeCommands([
changeImageAlignment(align),
toggleBlockMark(alignment, () => {
return (!align ? undefined : align === 'start' ? false : { align });
}, [paragraph, heading]),
])(state, dispatch);
};
export const changeImageAlignment = (align) => (state, dispatch) => {
const { from, to } = state.selection;
const tr = state.tr;
state.doc.nodesBetween(from, to, (node, pos, parent) => {
if (node.type === state.schema.nodes.mediaSingle) {
tr.setNodeMarkup(pos, undefined, Object.assign({}, node.attrs, { layout: align === 'center' ? 'center' : `align-${align}` }));
}
});
if (tr.docChanged && dispatch) {
dispatch(tr.scrollIntoView());
return true;
}
return false;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ25tZW50LmNvbW1hbmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aem9kaWFjLXVpL2VkaXRvci8iLCJzb3VyY2VzIjpbInBsdWdpbnMvYWxpZ25tZW50L2FsaWdubWVudC5jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUd0RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUNyRCxLQUFrQixFQUNsQixRQUFRLEVBQ1YsRUFBRTtJQUNBLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzdCLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztJQUUzQixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxFQUFFO1FBQzFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDZixHQUFHLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLFFBQVEsSUFBSSxjQUFjLEVBQUU7UUFDNUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFzQixFQUFXLEVBQUUsQ0FBQyxDQUM1RCxLQUFLLEVBQ0wsUUFBUSxFQUNWLEVBQUU7SUFDQSxNQUFNLEVBQ0YsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUM3QixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FDdkIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQ2hCLE9BQU8sZUFBZSxDQUNsQixTQUFTLEVBQ1QsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDbEUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQ3ZCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3RCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQXNCLEVBQVcsRUFBRSxDQUFDLENBQ2hFLEtBQUssRUFDTCxRQUFRLEVBQ1YsRUFBRTtJQUNBLE1BQU0sRUFDRixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQzdCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUN2QixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFFakIsT0FBTyxlQUFlLENBQUM7UUFDbkIsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1FBQzNCLGVBQWUsQ0FDWCxTQUFTLEVBQ1QsR0FBRyxFQUFFO1lBQ0QsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZFLENBQUMsRUFDRCxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FDdkI7S0FDSixDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBSyxFQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFFckMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUVwQixLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQzlDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsb0JBQ3hCLElBQUksQ0FBQyxLQUFLLElBQ2IsTUFBTSxFQUFFLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLEVBQUUsSUFDMUQsQ0FBQztTQUNOO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLEVBQUUsQ0FBQyxVQUFVLElBQUksUUFBUSxFQUFFO1FBQzNCLFFBQVEsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztLQUNmO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxpZ25tZW50U3RhdGUgfSBmcm9tIFwiLi9pbnRlcmZhY2VzXCJcclxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCIuLi8uLi9saWIvaW50ZXJmYWNlcy9jb21tYW5kXCJcclxuaW1wb3J0IHsgdG9nZ2xlQmxvY2tNYXJrIH0gZnJvbSBcIi4uLy4uL2xpYi9jb21tYW5kcy90b2dnbGUtYmxvY2stbWFya1wiXHJcbmltcG9ydCB7IEVkaXRvclN0YXRlIH0gZnJvbSBcInByb3NlbWlycm9yLXN0YXRlXCJcclxuXHJcbmV4cG9ydCBjb25zdCBjYXNjYWRlQ29tbWFuZHMgPSAoY21kczogQXJyYXk8Q29tbWFuZD4pID0+IChcclxuICAgIHN0YXRlOiBFZGl0b3JTdGF0ZSxcclxuICAgIGRpc3BhdGNoLFxyXG4pID0+IHtcclxuICAgIGNvbnN0IHsgdHI6IGJhc2VUciB9ID0gc3RhdGU7XHJcbiAgICBsZXQgc2hvdWxkRGlzcGF0Y2ggPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBvbkRpc3BhdGNoQWN0aW9uID0gdHIgPT4ge1xyXG4gICAgICAgIHRyLnN0ZXBzLmZvckVhY2goc3QgPT4ge1xyXG4gICAgICAgICAgICBiYXNlVHIuc3RlcChzdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2hvdWxkRGlzcGF0Y2ggPSB0cnVlO1xyXG4gICAgfTtcclxuXHJcbiAgICBjbWRzLmZvckVhY2goY21kID0+IHtcclxuICAgICAgICBjbWQoc3RhdGUsIG9uRGlzcGF0Y2hBY3Rpb24pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGRpc3BhdGNoICYmIHNob3VsZERpc3BhdGNoKSB7XHJcbiAgICAgICAgZGlzcGF0Y2goYmFzZVRyKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0FsaWduYWJsZSA9IChhbGlnbj86IEFsaWdubWVudFN0YXRlKTogQ29tbWFuZCA9PiAoXHJcbiAgICBzdGF0ZSxcclxuICAgIGRpc3BhdGNoLFxyXG4pID0+IHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgICBub2RlczogeyBwYXJhZ3JhcGgsIGhlYWRpbmcgfSxcclxuICAgICAgICBtYXJrczogeyBhbGlnbm1lbnQgfSxcclxuICAgIH0gPSBzdGF0ZS5zY2hlbWFcclxuICAgIHJldHVybiB0b2dnbGVCbG9ja01hcmsoXHJcbiAgICAgICAgYWxpZ25tZW50LFxyXG4gICAgICAgICgpID0+ICghYWxpZ24gPyB1bmRlZmluZWQgOiBhbGlnbiA9PT0gXCJzdGFydFwiID8gZmFsc2UgOiB7IGFsaWduIH0pLFxyXG4gICAgICAgIFtwYXJhZ3JhcGgsIGhlYWRpbmddLFxyXG4gICAgKShzdGF0ZSwgZGlzcGF0Y2gpXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjaGFuZ2VBbGlnbm1lbnQgPSAoYWxpZ24/OiBBbGlnbm1lbnRTdGF0ZSk6IENvbW1hbmQgPT4gKFxyXG4gICAgc3RhdGUsXHJcbiAgICBkaXNwYXRjaCxcclxuKSA9PiB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgICAgbm9kZXM6IHsgcGFyYWdyYXBoLCBoZWFkaW5nIH0sXHJcbiAgICAgICAgbWFya3M6IHsgYWxpZ25tZW50IH0sXHJcbiAgICB9ID0gc3RhdGUuc2NoZW1hO1xyXG5cclxuICAgIHJldHVybiBjYXNjYWRlQ29tbWFuZHMoW1xyXG4gICAgICAgIGNoYW5nZUltYWdlQWxpZ25tZW50KGFsaWduKSxcclxuICAgICAgICB0b2dnbGVCbG9ja01hcmsoXHJcbiAgICAgICAgICAgIGFsaWdubWVudCxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICghYWxpZ24gPyB1bmRlZmluZWQgOiBhbGlnbiA9PT0gJ3N0YXJ0JyA/IGZhbHNlIDogeyBhbGlnbiB9KVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBbcGFyYWdyYXBoLCBoZWFkaW5nXSxcclxuICAgICAgICApLFxyXG4gICAgXSkoc3RhdGUsIGRpc3BhdGNoKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjaGFuZ2VJbWFnZUFsaWdubWVudCA9IChhbGlnbik6IENvbW1hbmQgPT4gKHN0YXRlLCBkaXNwYXRjaCkgPT4ge1xyXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID0gc3RhdGUuc2VsZWN0aW9uO1xyXG5cclxuICAgIGNvbnN0IHRyID0gc3RhdGUudHI7XHJcblxyXG4gICAgc3RhdGUuZG9jLm5vZGVzQmV0d2Vlbihmcm9tLCB0bywgKG5vZGUsIHBvcywgcGFyZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gc3RhdGUuc2NoZW1hLm5vZGVzLm1lZGlhU2luZ2xlKSB7XHJcbiAgICAgICAgICAgIHRyLnNldE5vZGVNYXJrdXAocG9zLCB1bmRlZmluZWQsIHtcclxuICAgICAgICAgICAgICAgIC4uLm5vZGUuYXR0cnMsXHJcbiAgICAgICAgICAgICAgICBsYXlvdXQ6IGFsaWduID09PSAnY2VudGVyJyA/ICdjZW50ZXInIDogYGFsaWduLSR7YWxpZ259YCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRyLmRvY0NoYW5nZWQgJiYgZGlzcGF0Y2gpIHtcclxuICAgICAgICBkaXNwYXRjaCh0ci5zY3JvbGxJbnRvVmlldygpKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn07XHJcbiJdfQ==