Files
docx-js/src/file/styles/factory.ts

107 lines
3.7 KiB
TypeScript

import { DocumentAttributes } from "../document/document-attributes";
import { IStylesOptions } from "./styles";
import { DocumentDefaults, IDocumentDefaultsOptions } from "./defaults";
import {
FootnoteReferenceStyle,
FootnoteText,
FootnoteTextChar,
Heading1Style,
Heading2Style,
Heading3Style,
Heading4Style,
Heading5Style,
Heading6Style,
HyperlinkStyle,
IBaseCharacterStyleOptions,
IBaseParagraphStyleOptions,
ListParagraph,
TitleStyle,
} from "./style";
export interface IDefaultStylesOptions {
readonly document?: IDocumentDefaultsOptions;
readonly title?: IBaseParagraphStyleOptions;
readonly heading1?: IBaseParagraphStyleOptions;
readonly heading2?: IBaseParagraphStyleOptions;
readonly heading3?: IBaseParagraphStyleOptions;
readonly heading4?: IBaseParagraphStyleOptions;
readonly heading5?: IBaseParagraphStyleOptions;
readonly heading6?: IBaseParagraphStyleOptions;
readonly listParagraph?: IBaseParagraphStyleOptions;
readonly hyperlink?: IBaseCharacterStyleOptions;
readonly footnoteReference?: IBaseCharacterStyleOptions;
readonly footnoteText?: IBaseParagraphStyleOptions;
readonly footnoteTextChar?: IBaseCharacterStyleOptions;
}
export class DefaultStylesFactory {
public newInstance(options: IDefaultStylesOptions = {}): IStylesOptions {
const documentAttributes = new DocumentAttributes({
mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
w14: "http://schemas.microsoft.com/office/word/2010/wordml",
w15: "http://schemas.microsoft.com/office/word/2012/wordml",
Ignorable: "w14 w15",
});
return {
initialStyles: documentAttributes,
importedStyles: [
new DocumentDefaults(options.document),
new TitleStyle({
run: {
size: 56,
},
...options.title,
}),
new Heading1Style({
run: {
color: "2E74B5",
size: 32,
},
...options.heading1,
}),
new Heading2Style({
run: {
color: "2E74B5",
size: 26,
},
...options.heading2,
}),
new Heading3Style({
run: {
color: "1F4D78",
size: 24,
},
...options.heading3,
}),
new Heading4Style({
run: {
color: "2E74B5",
italics: true,
},
...options.heading4,
}),
new Heading5Style({
run: {
color: "2E74B5",
},
...options.heading5,
}),
new Heading6Style({
run: {
color: "1F4D78",
},
...options.heading6,
}),
new ListParagraph(options.listParagraph || {}),
new HyperlinkStyle(options.hyperlink || {}),
new FootnoteReferenceStyle(options.footnoteReference || {}),
new FootnoteText(options.footnoteText || {}),
new FootnoteTextChar(options.footnoteTextChar || {}),
],
};
}
}