docx-rs/docx-wasm/js/positional-tab.ts

51 lines
1.5 KiB
TypeScript

import { PositionalTabAlignmentType } from "./json/bindings/PositionalTabAlignmentType";
import { PositionalTabRelativeTo } from "./json/bindings/PositionalTabRelativeTo";
import { TabLeaderType } from "./json/bindings/TabLeaderType";
import {
createPositionalTab,
PositionalTabAlignmentType as _PositionalTabAlignmentType,
PositionalTabRelativeTo as _PositionalTabRelativeTo,
TabLeaderType as _TabLeaderType,
} from "./pkg/docx_wasm";
import { convertTabLeader } from "./tab-leader";
export class PositionalTab {
_alignment: PositionalTabAlignmentType = "left";
_relativeTo: PositionalTabRelativeTo = "margin";
_leader: TabLeaderType = "none";
alignment(t: PositionalTabAlignmentType) {
this._alignment = t;
return this;
}
relativeTo(t: PositionalTabRelativeTo) {
this._relativeTo = t;
return this;
}
leader(l: TabLeaderType) {
this._leader = l;
return this;
}
buildWasmObject() {
const alignment = (() => {
if (this._alignment === "left") return _PositionalTabAlignmentType.Left;
if (this._alignment === "center")
return _PositionalTabAlignmentType.Center;
if (this._alignment === "right") return _PositionalTabAlignmentType.Right;
return _PositionalTabAlignmentType.Left;
})();
const relativeTo = (() => {
if (this._relativeTo === "indent") return _PositionalTabRelativeTo.Indent;
return _PositionalTabRelativeTo.Margin;
})();
const leader = convertTabLeader(this._leader);
return createPositionalTab(alignment, relativeTo, leader);
}
}