docx-rs/docx-wasm/js/paragraph.ts

296 lines
6.2 KiB
TypeScript
Raw Normal View History

import { Run } from "./run";
import { RunFonts } from "./run-property";
2022-01-17 08:27:24 +02:00
import {
createDefaultParagraphProperty,
ParagraphProperty,
LineSpacing,
AlignmentType,
SpecialIndentKind,
ParagraphPropertyChange,
} from "./paragraph-property";
import { Insert } from "./insert";
import { Delete } from "./delete";
import { BookmarkStart } from "./bookmark-start";
import { BookmarkEnd } from "./bookmark-end";
import { Comment } from "./comment";
import { CommentEnd } from "./comment-end";
import { Hyperlink } from "./hyperlink";
import { TextAlignmentType } from "./json/bindings/TextAlignmentType";
import { TabValueType } from "./json/bindings/TabValueType";
import { TabLeaderType } from "./json/bindings/TabLeaderType";
import { NumPages } from "./num-pages";
import { PageNum } from "./page-num";
export type ParagraphChild =
| Run
| Insert
| Delete
| Hyperlink
| BookmarkStart
| BookmarkEnd
| Comment
| CommentEnd
| NumPages
| PageNum;
export class Paragraph {
hasNumberings = false;
children: ParagraphChild[] = [];
property: ParagraphProperty = createDefaultParagraphProperty();
addRun(run: Run) {
this.children.push(run);
return this;
}
addHyperlink(link: Hyperlink) {
this.children.push(link);
return this;
}
addInsert(ins: Insert) {
this.children.push(ins);
return this;
}
addDelete(del: Delete) {
this.children.push(del);
return this;
}
addBookmarkStart(id: number, name: string) {
this.children.push(new BookmarkStart(id, name));
return this;
}
addBookmarkEnd(id: number) {
this.children.push(new BookmarkEnd(id));
return this;
}
addCommentStart(comment: Comment) {
this.children.push(comment);
return this;
}
addCommentEnd(end: CommentEnd) {
this.children.push(end);
return this;
}
addPageNum() {
this.children.push(new PageNum());
return this;
}
addNumPages() {
this.children.push(new NumPages());
return this;
}
tabs(
tabs: {
val: TabValueType | null;
leader: TabLeaderType | null;
pos: number | null;
}[]
) {
this.property._tabs = tabs;
return this;
}
align(type: AlignmentType) {
this.property._align = type;
return this;
}
textAlignment(type: TextAlignmentType) {
this.property._textAlignment = type;
return this;
}
adjustRightInd(v: number) {
this.property._adjustRightInd = v;
return this;
}
style(id: string) {
this.property.styleId = id;
return this;
}
indent(
left: number,
specialIndentKind?: SpecialIndentKind,
specialIndentSize?: number,
right?: number
) {
this.property.indent = {
left,
specialIndentKind,
specialIndentSize,
right,
};
return this;
}
numbering(id: number, level: number) {
this.hasNumberings = true;
this.property.numbering = { id, level };
return this;
}
lineSpacing(spacing: LineSpacing) {
this.property.lineSpacing = spacing;
return this;
}
characterSpacing(spacing: number) {
this.property.runProperty.spacing(spacing);
return this;
}
snapToGrid(v: boolean) {
this.property.snapToGrid = v;
return this;
}
keepNext(v: boolean) {
this.property.keepNext = v;
return this;
}
keepLines(v: boolean) {
this.property.keepLines = v;
return this;
}
pageBreakBefore(v: boolean) {
this.property.pageBreakBefore = v;
return this;
}
widowControl(v: boolean) {
this.property.widowControl = v;
return this;
}
// run property
size(size: number) {
this.property.runProperty.size(size);
return this;
}
2024-10-15 12:51:20 +03:00
color(color: string) {
this.property.runProperty.color(color);
2024-10-15 12:51:20 +03:00
return this;
}
bold() {
this.property.runProperty.bold();
return this;
}
italic() {
this.property.runProperty.italic();
return this;
}
fonts(fonts: RunFonts) {
this.property.runProperty.fonts(fonts);
return this;
}
2022-01-17 08:27:24 +02:00
delete(author: string, date: string) {
this.property.runProperty.delete(author, date);
2022-01-17 08:27:24 +02:00
return this;
}
insert(author: string, date: string) {
this.property.runProperty.insert(author, date);
2022-01-17 08:27:24 +02:00
return this;
}
outlineLevel(v: number) {
this.property.outlineLvl = v;
return this;
}
2022-01-17 08:27:24 +02:00
paragraphPropertyChange(propertyChange: ParagraphPropertyChange) {
this.property.paragraphPropertyChange = propertyChange;
return this;
}
// frameProperty
frameHeight(h: number) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.h = h;
return this;
}
hRule(r: string) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.hRule = r;
return this;
}
hAnchor(a: string) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.hAnchor = a;
return this;
}
hSpace(s: number) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.hSpace = s;
return this;
}
vAnchor(a: string) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.vAnchor = a;
return this;
}
vSpace(s: number) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.vSpace = s;
return this;
}
frameWidth(w: number) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.w = w;
return this;
}
wrap(w: string) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.wrap = w;
return this;
}
frameX(x: number) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.x = x;
return this;
}
xAlign(a: string) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.xAlign = a;
return this;
}
frameY(y: number) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.y = y;
return this;
}
yAlign(y: string) {
this.property.frameProperty = { ...this.property.frameProperty };
this.property.frameProperty.yAlign = y;
return this;
}
}