@zodiac-ui/editor
Version:
A rich text editor for Angular based on `@atlaskit/editor-core`.
53 lines • 7.25 kB
JavaScript
import { Plugin, PluginKey } from "prosemirror-state";
import { alignment } from "./alignment.mark";
import { getActiveAlignment } from "./utils";
import { isAlignable } from "./alignment.command";
export const pluginKey = new PluginKey("alignmentPlugin");
export const defaultConfig = {
align: 'left',
};
export function createInitialPluginState(editorState, pluginConfig) {
return {
align: getActiveAlignment(editorState) || pluginConfig.align,
isEnabled: true,
};
}
export function createPlugin(dispatch, pluginConfig) {
return new Plugin({
key: pluginKey,
state: {
init(config, editorState) {
return createInitialPluginState(editorState, pluginConfig);
},
apply(tr, state, prevState, nextState) {
const nextPluginState = getActiveAlignment(nextState);
const isEnabled = isAlignable(nextPluginState)(nextState,
/**
* NOTE: Stan is already making dispatch optional in another PR.
* We can remove this once it's merged.
*/
undefined);
const newState = Object.assign({}, state, { align: nextPluginState, isEnabled });
if (nextPluginState !== state.align || isEnabled !== state.isEnabled) {
dispatch(pluginKey, newState);
}
return newState;
},
},
});
}
export const alignmentPlugin = {
name: "alignmentPlugin",
marks() {
return [{ name: "alignment", mark: alignment }];
},
pmPlugins() {
return [
{
name: "alignmentPlugin",
plugin: ({ dispatch }) => createPlugin(dispatch, defaultConfig),
}
];
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ25tZW50LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B6b2RpYWMtdWkvZWRpdG9yLyIsInNvdXJjZXMiOlsicGx1Z2lucy9hbGlnbm1lbnQvYWxpZ25tZW50LnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUU1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxTQUFTLENBQUE7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRWpELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBRXpELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUN6QixLQUFLLEVBQUUsTUFBTTtDQUNoQixDQUFDO0FBRUYsTUFBTSxVQUFVLHdCQUF3QixDQUNwQyxXQUF3QixFQUN4QixZQUFrQztJQUVsQyxPQUFPO1FBQ0gsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLO1FBQzVELFNBQVMsRUFBRSxJQUFJO0tBQ2xCLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxRQUFRLEVBQUUsWUFBWTtJQUMvQyxPQUFPLElBQUksTUFBTSxDQUFDO1FBQ2QsR0FBRyxFQUFFLFNBQVM7UUFDZCxLQUFLLEVBQUU7WUFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVc7Z0JBQ3BCLE9BQU8sd0JBQXdCLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFDRCxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQTJCLEVBQUUsU0FBUyxFQUFFLFNBQVM7Z0JBQ3ZELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQzFDLFNBQVM7Z0JBQ1Q7OzttQkFHRztnQkFDSCxTQUFnQixDQUNuQixDQUFDO2dCQUNGLE1BQU0sUUFBUSxxQkFDUCxLQUFLLElBQ1IsS0FBSyxFQUFFLGVBQWUsRUFDdEIsU0FBUyxHQUNaLENBQUM7Z0JBQ0YsSUFBSSxlQUFlLEtBQUssS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTLEtBQUssS0FBSyxDQUFDLFNBQVMsRUFBRTtvQkFDbEUsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztpQkFDakM7Z0JBQ0QsT0FBTyxRQUFRLENBQUM7WUFDcEIsQ0FBQztTQUNKO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBaUI7SUFDekMsSUFBSSxFQUFFLGlCQUFpQjtJQUV2QixLQUFLO1FBQ0QsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU87WUFDSDtnQkFDSSxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQzthQUNsRTtTQUNKLENBQUE7SUFDTCxDQUFDO0NBQ0osQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvclBsdWdpbiB9IGZyb20gXCIuLi8uLi9saWIvaW50ZXJmYWNlcy9lZGl0b3ItcGx1Z2luXCJcclxuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIFBsdWdpbiwgUGx1Z2luS2V5IH0gZnJvbSBcInByb3NlbWlycm9yLXN0YXRlXCJcclxuaW1wb3J0IHsgYWxpZ25tZW50IH0gZnJvbSBcIi4vYWxpZ25tZW50Lm1hcmtcIlxyXG5pbXBvcnQgeyBBbGlnbm1lbnRQbHVnaW5TdGF0ZSB9IGZyb20gXCIuL2ludGVyZmFjZXNcIlxyXG5pbXBvcnQgeyBnZXRBY3RpdmVBbGlnbm1lbnR9IGZyb20gXCIuL3V0aWxzXCJcclxuaW1wb3J0IHsgaXNBbGlnbmFibGUgfSBmcm9tIFwiLi9hbGlnbm1lbnQuY29tbWFuZFwiXHJcblxyXG5leHBvcnQgY29uc3QgcGx1Z2luS2V5ID0gbmV3IFBsdWdpbktleShcImFsaWdubWVudFBsdWdpblwiKVxyXG5cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb25maWcgPSB7XHJcbiAgICBhbGlnbjogJ2xlZnQnLFxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxQbHVnaW5TdGF0ZShcclxuICAgIGVkaXRvclN0YXRlOiBFZGl0b3JTdGF0ZSxcclxuICAgIHBsdWdpbkNvbmZpZzogQWxpZ25tZW50UGx1Z2luU3RhdGUsXHJcbik6IEFsaWdubWVudFBsdWdpblN0YXRlIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYWxpZ246IGdldEFjdGl2ZUFsaWdubWVudChlZGl0b3JTdGF0ZSkgfHwgcGx1Z2luQ29uZmlnLmFsaWduLFxyXG4gICAgICAgIGlzRW5hYmxlZDogdHJ1ZSxcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQbHVnaW4oZGlzcGF0Y2gsIHBsdWdpbkNvbmZpZykge1xyXG4gICAgcmV0dXJuIG5ldyBQbHVnaW4oe1xyXG4gICAgICAgIGtleTogcGx1Z2luS2V5LFxyXG4gICAgICAgIHN0YXRlOiB7XHJcbiAgICAgICAgICAgIGluaXQoY29uZmlnLCBlZGl0b3JTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUluaXRpYWxQbHVnaW5TdGF0ZShlZGl0b3JTdGF0ZSwgcGx1Z2luQ29uZmlnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXBwbHkodHIsIHN0YXRlOiBBbGlnbm1lbnRQbHVnaW5TdGF0ZSwgcHJldlN0YXRlLCBuZXh0U3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRQbHVnaW5TdGF0ZSA9IGdldEFjdGl2ZUFsaWdubWVudChuZXh0U3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNFbmFibGVkID0gaXNBbGlnbmFibGUobmV4dFBsdWdpblN0YXRlKShcclxuICAgICAgICAgICAgICAgICAgICBuZXh0U3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAgICAgICAgICogTk9URTogU3RhbiBpcyBhbHJlYWR5IG1ha2luZyBkaXNwYXRjaCBvcHRpb25hbCBpbiBhbm90aGVyIFBSLlxyXG4gICAgICAgICAgICAgICAgICAgICAqIFdlIGNhbiByZW1vdmUgdGhpcyBvbmNlIGl0J3MgbWVyZ2VkLlxyXG4gICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ246IG5leHRQbHVnaW5TdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZWQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHRQbHVnaW5TdGF0ZSAhPT0gc3RhdGUuYWxpZ24gfHwgaXNFbmFibGVkICE9PSBzdGF0ZS5pc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChwbHVnaW5LZXksIG5ld1N0YXRlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBhbGlnbm1lbnRQbHVnaW46IEVkaXRvclBsdWdpbiA9IHtcclxuICAgIG5hbWU6IFwiYWxpZ25tZW50UGx1Z2luXCIsXHJcblxyXG4gICAgbWFya3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIFt7IG5hbWU6IFwiYWxpZ25tZW50XCIsIG1hcms6IGFsaWdubWVudCB9XVxyXG4gICAgfSxcclxuXHJcbiAgICBwbVBsdWdpbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJhbGlnbm1lbnRQbHVnaW5cIixcclxuICAgICAgICAgICAgICAgIHBsdWdpbjogKHsgZGlzcGF0Y2ggfSkgPT4gY3JlYXRlUGx1Z2luKGRpc3BhdGNoLCBkZWZhdWx0Q29uZmlnKSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH1cclxufVxyXG4iXX0=