// Custom styles using JavaScript configuration
// Import from 'docx' rather than '../build' if you install from npm
import * as fs from "fs";
import { Document, HeadingLevel, Packer, Paragraph } from "../build";

const doc = new Document();
const myStyles = doc.Styles;

// The first argument is an ID you use to apply the style to paragraphs
// The second argument is a human-friendly name to show in the UI
myStyles
    .createParagraphStyle("myWonkyStyle", "My Wonky Style")
    .basedOn("Normal")
    .next("Normal")
    .color("990000")
    .italics()
    .indent({ left: 720 }) // 720 TWIP === 720 / 20 pt === .5 in
    .spacing({ line: 276 }); // 276 / 240 = 1.15x line spacing

myStyles
    .createParagraphStyle("Heading2", "Heading 2")
    .basedOn("Normal")
    .next("Normal")
    .quickFormat()
    .size(26) // 26 half-points === 13pt font
    .bold()
    .underline("double", "FF0000")
    .spacing({ before: 240, after: 120 }); // TWIP for both

doc.add(
    new Paragraph({
        text: "Hello",
        style: "myWonkyStyle",
    }),
);
doc.add(
    new Paragraph({
        text: "World",
        heading: HeadingLevel.HEADING_2,
    }),
); // Uses the Heading2 style

const packer = new Packer();

packer.toBuffer(doc).then((buffer) => {
    fs.writeFileSync("My Document.docx", buffer);
});
