Fix styling and linting
This commit is contained in:
@ -11,7 +11,44 @@ export class Media {
|
|||||||
this.map = new Map<string, IMediaData>();
|
this.map = new Map<string, IMediaData>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private createMedia(key: string, relationshipsCount, dimensions, data: fs.ReadStream | Buffer, filePath?: string, ) {
|
public getMedia(key: string): IMediaData {
|
||||||
|
const data = this.map.get(key);
|
||||||
|
|
||||||
|
if (data === undefined) {
|
||||||
|
throw new Error(`Cannot find image with the key ${key}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public addMedia(filePath: string, relationshipsCount: number): IMediaData {
|
||||||
|
const key = path.basename(filePath);
|
||||||
|
const dimensions = sizeOf(filePath);
|
||||||
|
return this.createMedia(key, relationshipsCount, dimensions, fs.createReadStream(filePath), filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public addMediaWithData(fileName: string, data: Buffer, relationshipsCount: number, width?: number, height?: number): IMediaData {
|
||||||
|
const key = fileName;
|
||||||
|
let dimensions;
|
||||||
|
if (width && height) {
|
||||||
|
dimensions = {
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
dimensions = sizeOf(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.createMedia(key, relationshipsCount, dimensions, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private createMedia(
|
||||||
|
key: string,
|
||||||
|
relationshipsCount: number,
|
||||||
|
dimensions: { width: number; height: number },
|
||||||
|
data: fs.ReadStream | Buffer,
|
||||||
|
filePath?: string,
|
||||||
|
): IMediaData {
|
||||||
const imageData = {
|
const imageData = {
|
||||||
referenceId: this.map.size + relationshipsCount + 1,
|
referenceId: this.map.size + relationshipsCount + 1,
|
||||||
stream: data,
|
stream: data,
|
||||||
@ -32,36 +69,6 @@ export class Media {
|
|||||||
|
|
||||||
return imageData;
|
return imageData;
|
||||||
}
|
}
|
||||||
public getMedia(key: string): IMediaData {
|
|
||||||
const data = this.map.get(key);
|
|
||||||
|
|
||||||
if (data === undefined) {
|
|
||||||
throw new Error(`Cannot find image with the key ${key}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
public addMedia(filePath: string, relationshipsCount: number): IMediaData {
|
|
||||||
const key = path.basename(filePath);
|
|
||||||
const dimensions = sizeOf(filePath);
|
|
||||||
return this.createMedia(key, relationshipsCount, dimensions, fs.createReadStream(filePath), filePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
public addMediaWithData(fileName: string, data: Buffer, relationshipsCount: number, width?, height?): IMediaData {
|
|
||||||
const key = fileName;
|
|
||||||
let dimensions;
|
|
||||||
if (width && height) {
|
|
||||||
dimensions = {
|
|
||||||
width: width,
|
|
||||||
height: height
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dimensions = sizeOf(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.createMedia(key, relationshipsCount, dimensions, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
public get array(): IMediaData[] {
|
public get array(): IMediaData[] {
|
||||||
const array = new Array<IMediaData>();
|
const array = new Array<IMediaData>();
|
||||||
|
@ -154,7 +154,6 @@ describe("External styles factory", () => {
|
|||||||
],
|
],
|
||||||
rootKey: "w:style",
|
rootKey: "w:style",
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { Styles } from "./";
|
|
||||||
import * as fastXmlParser from "fast-xml-parser";
|
import * as fastXmlParser from "fast-xml-parser";
|
||||||
import { ImportedXmlComponent, ImportedRootElementAttributes } from "./../../file/xml-components";
|
|
||||||
|
import { Styles } from "./";
|
||||||
|
import { ImportedRootElementAttributes, ImportedXmlComponent } from "./../../file/xml-components";
|
||||||
|
|
||||||
const parseOptions = {
|
const parseOptions = {
|
||||||
ignoreAttributes: false,
|
ignoreAttributes: false,
|
||||||
@ -51,7 +52,8 @@ export class ExternalStylesFactory {
|
|||||||
return importedStyle;
|
return importedStyle;
|
||||||
}
|
}
|
||||||
|
|
||||||
convertElement(elementName: string, element: any): ImportedXmlComponent {
|
// tslint:disable-next-line:no-any
|
||||||
|
public convertElement(elementName: string, element: any): ImportedXmlComponent {
|
||||||
const xmlElement = new ImportedXmlComponent(elementName, element._attr);
|
const xmlElement = new ImportedXmlComponent(elementName, element._attr);
|
||||||
if (typeof element === "object") {
|
if (typeof element === "object") {
|
||||||
Object.keys(element)
|
Object.keys(element)
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { Color, Italics, Size } from "../paragraph/run/formatting";
|
|
||||||
|
|
||||||
import { Styles } from "./";
|
|
||||||
import { DocumentAttributes } from "../document/document-attributes";
|
import { DocumentAttributes } from "../document/document-attributes";
|
||||||
|
import { Color, Italics, Size } from "../paragraph/run/formatting";
|
||||||
|
import { Styles } from "./";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Heading1Style,
|
Heading1Style,
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { XmlComponent, BaseXmlComponent } from "file/xml-components";
|
import { BaseXmlComponent, XmlComponent } from "file/xml-components";
|
||||||
import { DocumentDefaults } from "./defaults";
|
import { DocumentDefaults } from "./defaults";
|
||||||
import { ParagraphStyle } from "./style";
|
import { ParagraphStyle } from "./style";
|
||||||
|
|
||||||
export class Styles extends XmlComponent {
|
export class Styles extends XmlComponent {
|
||||||
constructor(_initialStyles?: BaseXmlComponent) {
|
constructor(initialStyles?: BaseXmlComponent) {
|
||||||
super("w:styles");
|
super("w:styles");
|
||||||
if (_initialStyles) {
|
if (initialStyles) {
|
||||||
this.root.push(_initialStyles);
|
this.root.push(initialStyles);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
export * from "./table";
|
export * from "./table";
|
||||||
export * from './table-cell';
|
export * from "./table-cell";
|
||||||
|
@ -169,12 +169,12 @@ describe("TableCellWidth", () => {
|
|||||||
expect(tree).to.deep.equal({
|
expect(tree).to.deep.equal({
|
||||||
"w:tcW": [
|
"w:tcW": [
|
||||||
{
|
{
|
||||||
"_attr": {
|
_attr: {
|
||||||
"w:type": "dxa",
|
"w:type": "dxa",
|
||||||
"w:w": 100
|
"w:w": 100,
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { XmlComponent, XmlAttributeComponent, IXmlableObject } from "file/xml-components";
|
import { IXmlableObject, XmlAttributeComponent, XmlComponent } from "file/xml-components";
|
||||||
|
|
||||||
export enum BorderStyle {
|
export enum BorderStyle {
|
||||||
SINGLE = "single",
|
SINGLE = "single",
|
||||||
@ -41,13 +41,15 @@ class CellBorderAttributes extends XmlAttributeComponent<ICellBorder> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class BaseTableCellBorder extends XmlComponent {
|
class BaseTableCellBorder extends XmlComponent {
|
||||||
setProperties(style: BorderStyle, size: number, color: string) {
|
public setProperties(style: BorderStyle, size: number, color: string): BaseTableCellBorder {
|
||||||
let attrs = new CellBorderAttributes({
|
const attrs = new CellBorderAttributes({
|
||||||
style: style,
|
style: style,
|
||||||
size: size,
|
size: size,
|
||||||
color: color,
|
color: color,
|
||||||
});
|
});
|
||||||
this.root.push(attrs);
|
this.root.push(attrs);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,28 +62,36 @@ export class TableCellBorders extends XmlComponent {
|
|||||||
return this.root.length > 0 ? super.prepForXml() : "";
|
return this.root.length > 0 ? super.prepForXml() : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
addTopBorder(style: BorderStyle, size: number, color: string) {
|
public addTopBorder(style: BorderStyle, size: number, color: string): TableCellBorders {
|
||||||
const top = new BaseTableCellBorder("w:top");
|
const top = new BaseTableCellBorder("w:top");
|
||||||
top.setProperties(style, size, color);
|
top.setProperties(style, size, color);
|
||||||
this.root.push(top);
|
this.root.push(top);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
addStartBorder(style: BorderStyle, size: number, color: string) {
|
public addStartBorder(style: BorderStyle, size: number, color: string): TableCellBorders {
|
||||||
const start = new BaseTableCellBorder("w:start");
|
const start = new BaseTableCellBorder("w:start");
|
||||||
start.setProperties(style, size, color);
|
start.setProperties(style, size, color);
|
||||||
this.root.push(start);
|
this.root.push(start);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
addBottomBorder(style: BorderStyle, size: number, color: string) {
|
public addBottomBorder(style: BorderStyle, size: number, color: string): TableCellBorders {
|
||||||
const bottom = new BaseTableCellBorder("w:bottom");
|
const bottom = new BaseTableCellBorder("w:bottom");
|
||||||
bottom.setProperties(style, size, color);
|
bottom.setProperties(style, size, color);
|
||||||
this.root.push(bottom);
|
this.root.push(bottom);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
addEndBorder(style: BorderStyle, size: number, color: string) {
|
public addEndBorder(style: BorderStyle, size: number, color: string): TableCellBorders {
|
||||||
const end = new BaseTableCellBorder("w:end");
|
const end = new BaseTableCellBorder("w:end");
|
||||||
end.setProperties(style, size, color);
|
end.setProperties(style, size, color);
|
||||||
this.root.push(end);
|
this.root.push(end);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
import { GridSpan, TableCellBorders, TableCellWidth, VAlign, VerticalAlign, VMerge, VMergeType, WidthType } from "file/table/table-cell";
|
||||||
import { IXmlableObject, XmlComponent } from "file/xml-components";
|
import { IXmlableObject, XmlComponent } from "file/xml-components";
|
||||||
import { Paragraph } from "../paragraph";
|
import { Paragraph } from "../paragraph";
|
||||||
import { TableGrid } from "./grid";
|
import { TableGrid } from "./grid";
|
||||||
import { TableProperties, WidthTypes } from "./properties";
|
import { TableProperties, WidthTypes } from "./properties";
|
||||||
import { TableCellBorders, GridSpan, VMerge, VMergeType, VerticalAlign, VAlign, TableCellWidth, WidthType } from "file/table/table-cell";
|
|
||||||
|
|
||||||
export class Table extends XmlComponent {
|
export class Table extends XmlComponent {
|
||||||
private readonly properties: TableProperties;
|
private readonly properties: TableProperties;
|
||||||
@ -119,7 +119,7 @@ export class TableCell extends XmlComponent {
|
|||||||
return para;
|
return para;
|
||||||
}
|
}
|
||||||
|
|
||||||
get cellProperties() {
|
get cellProperties(): TableCellProperties {
|
||||||
return this.properties;
|
return this.properties;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -132,22 +132,31 @@ export class TableCellProperties extends XmlComponent {
|
|||||||
this.root.push(this.cellBorder);
|
this.root.push(this.cellBorder);
|
||||||
}
|
}
|
||||||
|
|
||||||
get borders() {
|
get borders(): TableCellBorders {
|
||||||
return this.cellBorder;
|
return this.cellBorder;
|
||||||
}
|
}
|
||||||
addGridSpan(cellSpan: number) {
|
|
||||||
|
public addGridSpan(cellSpan: number): TableCellProperties {
|
||||||
this.root.push(new GridSpan(cellSpan));
|
this.root.push(new GridSpan(cellSpan));
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
addVerticalMerge(type: VMergeType) {
|
public addVerticalMerge(type: VMergeType): TableCellProperties {
|
||||||
this.root.push(new VMerge(type));
|
this.root.push(new VMerge(type));
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
setVerticalAlign(vAlignType: VerticalAlign) {
|
public setVerticalAlign(vAlignType: VerticalAlign): TableCellProperties {
|
||||||
this.root.push(new VAlign(vAlignType));
|
this.root.push(new VAlign(vAlignType));
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
setWidth(width: string | number, type: WidthType) {
|
public setWidth(width: string | number, type: WidthType): TableCellProperties {
|
||||||
this.root.push(new TableCellWidth(width, type));
|
this.root.push(new TableCellWidth(width, type));
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ export abstract class BaseXmlComponent {
|
|||||||
|
|
||||||
public abstract prepForXml(): IXmlableObject;
|
public abstract prepForXml(): IXmlableObject;
|
||||||
|
|
||||||
get isDeleted() {
|
public get isDeleted(): boolean {
|
||||||
return this.deleted;
|
return this.deleted;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
import { XmlComponent, IXmlableObject } from ".";
|
// tslint:disable:no-any
|
||||||
|
import { IXmlableObject, XmlComponent } from "./";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents imported xml component from xml file.
|
* Represents imported xml component from xml file.
|
||||||
*/
|
*/
|
||||||
export class ImportedXmlComponent extends XmlComponent {
|
export class ImportedXmlComponent extends XmlComponent {
|
||||||
private _attr: any;
|
private attr: any;
|
||||||
|
|
||||||
constructor(rootKey: string, _attr?: any) {
|
constructor(rootKey: string, attr?: any) {
|
||||||
super(rootKey);
|
super(rootKey);
|
||||||
if (_attr) {
|
|
||||||
this._attr = _attr;
|
if (attr) {
|
||||||
|
this.attr = attr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,18 +41,18 @@ export class ImportedXmlComponent extends XmlComponent {
|
|||||||
* ]
|
* ]
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
prepForXml(): IXmlableObject {
|
public prepForXml(): IXmlableObject {
|
||||||
const result = super.prepForXml();
|
const result = super.prepForXml();
|
||||||
if (!!this._attr) {
|
if (!!this.attr) {
|
||||||
if (!Array.isArray(result[this.rootKey])) {
|
if (!Array.isArray(result[this.rootKey])) {
|
||||||
result[this.rootKey] = [result[this.rootKey]];
|
result[this.rootKey] = [result[this.rootKey]];
|
||||||
}
|
}
|
||||||
result[this.rootKey].unshift({ _attr: this._attr });
|
result[this.rootKey].unshift({ _attr: this.attr });
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
push(xmlComponent: XmlComponent) {
|
public push(xmlComponent: XmlComponent): void {
|
||||||
this.root.push(xmlComponent);
|
this.root.push(xmlComponent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,13 +61,13 @@ export class ImportedXmlComponent extends XmlComponent {
|
|||||||
* Used for the attributes of root element that is being imported.
|
* Used for the attributes of root element that is being imported.
|
||||||
*/
|
*/
|
||||||
export class ImportedRootElementAttributes extends XmlComponent {
|
export class ImportedRootElementAttributes extends XmlComponent {
|
||||||
constructor(private _attr: any) {
|
constructor(private attr: any) {
|
||||||
super("");
|
super("");
|
||||||
}
|
}
|
||||||
|
|
||||||
public prepForXml(): IXmlableObject {
|
public prepForXml(): IXmlableObject {
|
||||||
return {
|
return {
|
||||||
_attr: this._attr,
|
_attr: this.attr,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
export * from "./xml-component";
|
export * from "./xml-component";
|
||||||
export * from "./attributes";
|
export * from "./attributes";
|
||||||
export * from "./default-attributes";
|
export * from "./default-attributes";
|
||||||
export * from './imported-xml-component';
|
export * from "./imported-xml-component";
|
||||||
export * from "./xmlable-object";
|
export * from "./xmlable-object";
|
||||||
|
@ -26,7 +26,7 @@ describe("XmlComponent", () => {
|
|||||||
xmlComponent.addChildElement(child);
|
xmlComponent.addChildElement(child);
|
||||||
|
|
||||||
const xml = xmlComponent.prepForXml();
|
const xml = xmlComponent.prepForXml();
|
||||||
assert.equal(xml['w:test'].length, 0);
|
assert.equal(xml["w:test"].length, 0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -12,7 +12,7 @@ export abstract class XmlComponent extends BaseXmlComponent {
|
|||||||
|
|
||||||
public prepForXml(): IXmlableObject {
|
public prepForXml(): IXmlableObject {
|
||||||
const children = this.root
|
const children = this.root
|
||||||
.filter(c => {
|
.filter((c) => {
|
||||||
if (c instanceof BaseXmlComponent) {
|
if (c instanceof BaseXmlComponent) {
|
||||||
return !c.isDeleted;
|
return !c.isDeleted;
|
||||||
}
|
}
|
||||||
@ -30,11 +30,14 @@ export abstract class XmlComponent extends BaseXmlComponent {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public addChildElement(child: XmlComponent | string) {
|
// TODO: Unused method
|
||||||
|
public addChildElement(child: XmlComponent | string): XmlComponent {
|
||||||
this.root.push(child);
|
this.root.push(child);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public delete() {
|
public delete(): void {
|
||||||
this.deleted = true;
|
this.deleted = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user