Leafer中接入Quill富文本并扩展自定义格式
为什么不用默认 format
import Quill from "quill";
export const registerQuillCustomFormats = (): void => {
const SizeStyle = Quill.import("attributors/style/size") as {
scope: unknown;
whitelist?: string[] | null;
constructor: new (
attrName: string,
keyName: string,
options: { scope: unknown },
) => unknown;
};
// 解除默认字号白名单,设计器里才能使用任意 px 字号
SizeStyle.whitelist = null;
Quill.register({ "attributors/style/size": SizeStyle, "formats/size": SizeStyle }, true);
const StyleAttributorCtor = SizeStyle.constructor;
const FontWeightAttributor = new StyleAttributorCtor("fontWeight", "font-weight", {
scope: SizeStyle.scope,
});
Quill.register({
"attributors/style/fontWeight": FontWeightAttributor,
"formats/fontWeight": FontWeightAttributor,
}, true);
const TextStrokeAttributor = new StyleAttributorCtor("textStroke", "-webkit-text-stroke", {
scope: SizeStyle.scope,
});
Quill.register({
"attributors/style/textStroke": TextStrokeAttributor,
"formats/textStroke": TextStrokeAttributor,
}, true);
const TextShadowAttributor = new StyleAttributorCtor("textShadow", "text-shadow", {
scope: SizeStyle.scope,
});
Quill.register({
"attributors/style/textShadow": TextShadowAttributor,
"formats/textShadow": TextShadowAttributor,
}, true);
};