@hellkite/pipkin 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/lib/template.js +7 -6
- package/build/src/lib/template.js.map +1 -1
- package/build/src/lib/types/2d.d.ts +0 -2
- package/build/src/lib/types/2d.js +0 -5
- package/build/src/lib/types/2d.js.map +1 -1
- package/build/src/lib/types/containers.d.ts +10 -25
- package/build/src/lib/types/containers.js +5 -5
- package/build/src/lib/types/containers.js.map +1 -1
- package/build/src/lib/types/css.d.ts +1 -0
- package/build/src/lib/types/css.js +6 -0
- package/build/src/lib/types/css.js.map +1 -0
- package/build/src/lib/types/index.d.ts +1 -0
- package/build/src/lib/types/index.js +1 -0
- package/build/src/lib/types/index.js.map +1 -1
- package/build/src/lib/types/text.d.ts +7 -5
- package/build/src/lib/types/text.js +5 -4
- package/build/src/lib/types/text.js.map +1 -1
- package/build/src/lib/utils/container.js +68 -104
- package/build/src/lib/utils/container.js.map +1 -1
- package/build/src/lib/utils/index.d.ts +1 -1
- package/build/src/lib/utils/index.js +1 -1
- package/build/src/lib/utils/index.js.map +1 -1
- package/build/src/lib/utils/renderText.d.ts +2 -0
- package/build/src/lib/utils/renderText.js +90 -0
- package/build/src/lib/utils/renderText.js.map +1 -0
- package/build/src/test.js +54 -7
- package/build/src/test.js.map +1 -1
- package/package.json +6 -2
- package/src/lib/template.ts +10 -11
- package/src/lib/types/2d.ts +0 -5
- package/src/lib/types/containers.ts +22 -33
- package/src/lib/types/css.ts +1 -0
- package/src/lib/types/index.ts +1 -0
- package/src/lib/types/text.ts +21 -7
- package/src/lib/utils/container.ts +72 -169
- package/src/lib/utils/index.ts +1 -1
- package/src/lib/utils/renderText.ts +110 -0
- package/src/lib/utils/enhanceTextbox.ts +0 -144
|
@@ -53,11 +53,10 @@ const lodash_camelcase_1 = __importDefault(require("lodash.camelcase"));
|
|
|
53
53
|
const placeImage_1 = require("./utils/placeImage");
|
|
54
54
|
const drawBoundingBox_1 = require("./utils/drawBoundingBox");
|
|
55
55
|
const lodash_concat_1 = __importDefault(require("lodash.concat"));
|
|
56
|
-
const fabric = __importStar(require("fabric/node"));
|
|
57
56
|
const canvas_1 = require("canvas");
|
|
58
|
-
const enhanceTextbox_1 = require("./utils/enhanceTextbox");
|
|
59
57
|
const path_1 = __importDefault(require("path"));
|
|
60
58
|
const container_1 = require("./utils/container");
|
|
59
|
+
const utils_1 = require("./utils");
|
|
61
60
|
const DEFAULT_TEMPLATE_OPTIONS = {
|
|
62
61
|
height: 1050,
|
|
63
62
|
width: 750,
|
|
@@ -72,14 +71,13 @@ class Template {
|
|
|
72
71
|
const template = fn(this.shadowTemplate());
|
|
73
72
|
return template.render(entry);
|
|
74
73
|
});
|
|
74
|
+
// TODO: logic for rendering debug helpers
|
|
75
75
|
this.container = (imagesFn, packingFn) => this.layer((entry) => __awaiter(this, void 0, void 0, function* () {
|
|
76
76
|
const images = yield imagesFn(entry);
|
|
77
77
|
return packingFn(this.shadowBackground(), images);
|
|
78
78
|
}));
|
|
79
79
|
this.hbox = (imagesFn, position, options) => this.container(imagesFn, (0, container_1.hboxPackingFn)(position, options));
|
|
80
80
|
this.vbox = (imagesFn, position, options) => this.container(imagesFn, (0, container_1.vboxPackingFn)(position, options));
|
|
81
|
-
// grid = (imagesFn: (entry: EntryType) => Promise<Array<ImageType>>): this =>
|
|
82
|
-
// this.container(imagesFn, gridPackingFn(position, options));
|
|
83
81
|
this.image = ({ key, path, position, options, }) => this.layer((entry_1, _a) => __awaiter(this, [entry_1, _a], void 0, function* (entry, { debugMode, width, height }) {
|
|
84
82
|
const imagePath = path !== null && path !== void 0 ? path : ((options === null || options === void 0 ? void 0 : options.pathFn) ? options.pathFn(entry[key]) : entry[key]);
|
|
85
83
|
const image = yield this.loadImage(imagePath, options);
|
|
@@ -110,8 +108,11 @@ class Template {
|
|
|
110
108
|
this.text = ({ key, position, options }) => this.layer((entry_1, _a) => __awaiter(this, [entry_1, _a], void 0, function* (entry, { debugMode, width, height }) {
|
|
111
109
|
var _b, _c, _d;
|
|
112
110
|
const text = entry[key];
|
|
113
|
-
const
|
|
114
|
-
return (0,
|
|
111
|
+
const fontFamily = (_d = (_c = (_b = options === null || options === void 0 ? void 0 : options.font) === null || _b === void 0 ? void 0 : _b.family) !== null && _c !== void 0 ? _c : this.defaultFontFamily) !== null && _d !== void 0 ? _d : 'Arial';
|
|
112
|
+
return (0, utils_1.renderText)(text, position, {
|
|
113
|
+
width,
|
|
114
|
+
height,
|
|
115
|
+
}, Object.assign(Object.assign({}, options), { font: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.font), { family: fontFamily }) }));
|
|
115
116
|
}));
|
|
116
117
|
this.background = new jimp_1.Jimp({
|
|
117
118
|
height: options.height,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/lib/template.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,yCAA8C;AAC9C,+BAAuC;AACvC,wEAAyC;AACzC,mDAAgD;AAChD,6DAA0D;AAI1D,kEAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/lib/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toSize = exports.toPoint = void 0;
|
|
4
|
-
const toPoint = (x, y) => ({ x, y });
|
|
5
|
-
exports.toPoint = toPoint;
|
|
6
|
-
const toSize = (w, h) => ({ width: w, height: h });
|
|
7
|
-
exports.toSize = toSize;
|
|
8
3
|
//# sourceMappingURL=2d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2d.js","sourceRoot":"","sources":["../../../../src/lib/types/2d.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"2d.js","sourceRoot":"","sources":["../../../../src/lib/types/2d.ts"],"names":[],"mappings":""}
|
|
@@ -4,9 +4,9 @@ export type ContainerOptions = {
|
|
|
4
4
|
/**
|
|
5
5
|
* Setting a non-default value for justify will cause the alignment to be ignored.
|
|
6
6
|
*
|
|
7
|
-
* Defaults to `
|
|
7
|
+
* Defaults to `normal`
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
justifyContent?: ContainerJustifyContent;
|
|
10
10
|
/**
|
|
11
11
|
* This is treated as a minimum length of an unit of space
|
|
12
12
|
* between two items, but it can grow larger than it
|
|
@@ -14,41 +14,26 @@ export type ContainerOptions = {
|
|
|
14
14
|
* Defaults to 0
|
|
15
15
|
*/
|
|
16
16
|
gap?: number;
|
|
17
|
-
/**
|
|
18
|
-
* Render items that do not fit in the container outside of
|
|
19
|
-
* its bounding box
|
|
20
|
-
*
|
|
21
|
-
* Defaults to false
|
|
22
|
-
*/
|
|
23
|
-
overflow?: boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Defines how the items should be placed
|
|
26
|
-
* across the main direction of the container
|
|
27
|
-
*
|
|
28
|
-
* Defaults to `center`
|
|
29
|
-
*/
|
|
30
|
-
alignment?: Alignment;
|
|
31
17
|
/**
|
|
32
18
|
* Defines how the items should be placed
|
|
33
19
|
* across the secondary direction of the container
|
|
34
20
|
*
|
|
35
21
|
* Defaults to `center`
|
|
36
22
|
*/
|
|
37
|
-
|
|
23
|
+
alignItems?: Alignment;
|
|
38
24
|
/**
|
|
39
25
|
* Defaults to `none`
|
|
40
26
|
*/
|
|
41
27
|
scale?: ScaleMode;
|
|
42
28
|
};
|
|
43
|
-
export type DirectionContainerOptions = ContainerOptions
|
|
29
|
+
export type DirectionContainerOptions = ContainerOptions & {
|
|
30
|
+
reversed?: boolean;
|
|
31
|
+
};
|
|
32
|
+
export declare const DEFAULT_DIRECTION_CONTAINER_OPTIONS: DirectionContainerOptions;
|
|
44
33
|
/**
|
|
45
|
-
*
|
|
46
|
-
* -> `space-evenly` - around each item is a pair of equal units of space
|
|
47
|
-
* -> `space-between` - between each 2 items there is a single units of space
|
|
48
|
-
* -> `space-around` - around each item is a unique pair of equal units of space
|
|
49
|
-
* -> `no-space` - no space
|
|
34
|
+
* Same as CSS justify-content property
|
|
50
35
|
*/
|
|
51
|
-
type
|
|
36
|
+
type ContainerJustifyContent = 'flex-start' | 'flex-end' | 'center' | 'space-evenly' | 'space-between' | 'space-around' | 'normal';
|
|
52
37
|
export type GridContainerOptions = ContainerOptions & {
|
|
53
38
|
rows?: number;
|
|
54
39
|
cols?: number;
|
|
@@ -61,5 +46,5 @@ export type GridContainerOptions = ContainerOptions & {
|
|
|
61
46
|
*/
|
|
62
47
|
direction?: 'rows' | 'cols';
|
|
63
48
|
};
|
|
64
|
-
export type PackingFn = (background: ImageType, images: Array<ImageType>) => ImageType
|
|
49
|
+
export type PackingFn = (background: ImageType, images: Array<ImageType>) => Promise<ImageType>;
|
|
65
50
|
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_CONTAINER_OPTIONS = void 0;
|
|
3
|
+
exports.DEFAULT_DIRECTION_CONTAINER_OPTIONS = exports.DEFAULT_CONTAINER_OPTIONS = void 0;
|
|
4
4
|
exports.DEFAULT_CONTAINER_OPTIONS = {
|
|
5
5
|
gap: 0,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
alignment: 'center',
|
|
9
|
-
centering: 'center',
|
|
6
|
+
justifyContent: 'normal',
|
|
7
|
+
alignItems: 'center',
|
|
10
8
|
scale: 'none',
|
|
11
9
|
};
|
|
10
|
+
// TODO: all required
|
|
11
|
+
exports.DEFAULT_DIRECTION_CONTAINER_OPTIONS = Object.assign(Object.assign({}, exports.DEFAULT_CONTAINER_OPTIONS), { reversed: false });
|
|
12
12
|
//# sourceMappingURL=containers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../../src/lib/types/containers.ts"],"names":[],"mappings":";;;AAEa,QAAA,yBAAyB,GAA+B;IACjE,GAAG,EAAE,CAAC;IACN,
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../../src/lib/types/containers.ts"],"names":[],"mappings":";;;AAEa,QAAA,yBAAyB,GAA+B;IACjE,GAAG,EAAE,CAAC;IACN,cAAc,EAAE,QAAQ;IACxB,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,MAAM;CAChB,CAAC;AAoCF,qBAAqB;AACR,QAAA,mCAAmC,mCACzC,iCAAyB,KAC5B,QAAQ,EAAE,KAAK,IAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const toPx: (value: number) => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sourceRoot":"","sources":["../../../../src/lib/types/css.ts"],"names":[],"mappings":";;;AAAO,MAAM,IAAI,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC;AAA/C,QAAA,IAAI,QAA2C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,+CAA6B;AAC7B,0CAAwB;AACxB,iDAA+B;AAC/B,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB;AACxB,yCAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,+CAA6B;AAC7B,0CAAwB;AACxB,iDAA+B;AAC/B,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB;AACxB,yCAAuB;AACvB,wCAAsB"}
|
|
@@ -27,12 +27,14 @@ export type TextLayerOptions = {
|
|
|
27
27
|
};
|
|
28
28
|
color?: string;
|
|
29
29
|
replacement?: ReplacementMap;
|
|
30
|
-
};
|
|
31
|
-
export type TextPosition = TextAlignmentProps & BoundingBox;
|
|
32
|
-
export type TextAlignmentProps = {
|
|
33
30
|
/**
|
|
34
31
|
* default `center`
|
|
35
32
|
*/
|
|
36
|
-
|
|
33
|
+
xAlign?: 'left' | 'center' | 'right' | 'justify' | 'justify-left' | 'justify-center' | 'justify-right';
|
|
34
|
+
/**
|
|
35
|
+
* default `center`
|
|
36
|
+
*/
|
|
37
|
+
yAlign?: 'left' | 'center' | 'right' | 'justify' | 'justify-left' | 'justify-center' | 'justify-right';
|
|
37
38
|
};
|
|
38
|
-
export
|
|
39
|
+
export type TextPosition = BoundingBox;
|
|
40
|
+
export declare const DEFAULT_TEXT_LAYER_OPTIONS: TextLayerOptions;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
exports.
|
|
6
|
-
|
|
3
|
+
exports.DEFAULT_TEXT_LAYER_OPTIONS = void 0;
|
|
4
|
+
// TODO: all required
|
|
5
|
+
exports.DEFAULT_TEXT_LAYER_OPTIONS = {
|
|
6
|
+
xAlign: 'center',
|
|
7
|
+
yAlign: 'center',
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/lib/types/text.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/lib/types/text.ts"],"names":[],"mappings":";;;AA8DA,qBAAqB;AACR,QAAA,0BAA0B,GAAqB;IACxD,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACnB,CAAC"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.hboxPackingFn = exports.vboxPackingFn = void 0;
|
|
4
|
-
const _2d_1 = require("../types/2d");
|
|
5
16
|
const containers_1 = require("../types/containers");
|
|
17
|
+
const virtual_dom_1 = require("virtual-dom");
|
|
18
|
+
const node_html_to_image_1 = __importDefault(require("node-html-to-image"));
|
|
19
|
+
const jimp_1 = require("jimp");
|
|
20
|
+
const types_1 = require("../types");
|
|
6
21
|
const vboxPackingFn = (position, options) => (background, images) => directionalPackingFn({
|
|
7
22
|
isVertical: true,
|
|
8
23
|
background,
|
|
@@ -19,108 +34,57 @@ const hboxPackingFn = (position, options) => (background, images) => directional
|
|
|
19
34
|
options,
|
|
20
35
|
});
|
|
21
36
|
exports.hboxPackingFn = hboxPackingFn;
|
|
22
|
-
const directionalPackingFn = ({ isVertical, background, images, position, options, })
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
var _a, _b, _c, _d;
|
|
75
|
-
const justify = (_a = options === null || options === void 0 ? void 0 : options.justify) !== null && _a !== void 0 ? _a : containers_1.DEFAULT_CONTAINER_OPTIONS.justify;
|
|
76
|
-
const alignment = (_b = options === null || options === void 0 ? void 0 : options.alignment) !== null && _b !== void 0 ? _b : containers_1.DEFAULT_CONTAINER_OPTIONS.alignment;
|
|
77
|
-
const centering = (_c = options === null || options === void 0 ? void 0 : options.centering) !== null && _c !== void 0 ? _c : containers_1.DEFAULT_CONTAINER_OPTIONS.centering;
|
|
78
|
-
const gap = (_d = options === null || options === void 0 ? void 0 : options.gap) !== null && _d !== void 0 ? _d : containers_1.DEFAULT_CONTAINER_OPTIONS.gap;
|
|
79
|
-
// TODO: move main coordinate computation to its own function
|
|
80
|
-
// justify?: ContainerJustify;
|
|
81
|
-
if (justify !== 'no-space') {
|
|
82
|
-
// TODO: handle this without alignment
|
|
83
|
-
}
|
|
84
|
-
// compute main axis coordinates
|
|
85
|
-
const mainCoordinatesInBoundingBox = [];
|
|
86
|
-
let currentMainCoordinate = 0;
|
|
87
|
-
for (const image of images) {
|
|
88
|
-
mainCoordinatesInBoundingBox.push(currentMainCoordinate);
|
|
89
|
-
currentMainCoordinate += mainSizeFn(image, isVertical) + gap;
|
|
90
|
-
}
|
|
91
|
-
const totalMainSize = Math.max(currentMainCoordinate - gap, 0);
|
|
92
|
-
let mainCoordinateOffset = mainCoordinateFn(position, isVertical);
|
|
93
|
-
if (alignment === 'center') {
|
|
94
|
-
mainCoordinateOffset +=
|
|
95
|
-
(mainSizeFn(position, isVertical) - totalMainSize) / 2;
|
|
96
|
-
}
|
|
97
|
-
else if (alignment === 'end') {
|
|
98
|
-
mainCoordinateOffset +=
|
|
99
|
-
mainSizeFn(position, isVertical) - totalMainSize;
|
|
100
|
-
}
|
|
101
|
-
const mainCoordinates = mainCoordinatesInBoundingBox.map(coordinate => coordinate + mainCoordinateOffset);
|
|
102
|
-
// compute secondary axis coordinates
|
|
103
|
-
const secondaryCoordinates = [];
|
|
104
|
-
for (const image of images) {
|
|
105
|
-
const secondarySize = secondarySizeFn(image, isVertical);
|
|
106
|
-
let secondaryCoordinateOffset = secondaryCoordinateFn(position, isVertical);
|
|
107
|
-
if (centering === 'center') {
|
|
108
|
-
secondaryCoordinateOffset +=
|
|
109
|
-
(secondarySizeFn(position, isVertical) - secondarySize) / 2;
|
|
110
|
-
}
|
|
111
|
-
else if (centering === 'end') {
|
|
112
|
-
secondaryCoordinateOffset +=
|
|
113
|
-
secondarySizeFn(position, isVertical) - secondarySize;
|
|
114
|
-
}
|
|
115
|
-
secondaryCoordinates.push(secondaryCoordinateOffset);
|
|
116
|
-
}
|
|
117
|
-
// compute rendering coordinates for each image
|
|
118
|
-
const coordinates = [];
|
|
119
|
-
for (let index = 0; index < Math.min(mainCoordinates.length, secondaryCoordinates.length); index++) {
|
|
120
|
-
coordinates.push(isVertical
|
|
121
|
-
? (0, _2d_1.toPoint)(mainCoordinates[index], secondaryCoordinates[index])
|
|
122
|
-
: (0, _2d_1.toPoint)(secondaryCoordinates[index], mainCoordinates[index]));
|
|
123
|
-
}
|
|
124
|
-
return coordinates;
|
|
37
|
+
const directionalPackingFn = (_a) => __awaiter(void 0, [_a], void 0, function* ({ isVertical, background, images, position, options, }) {
|
|
38
|
+
var _b, _c, _d, _e;
|
|
39
|
+
const objectFit = SCALE_MODE_TO_OBJECT_FIT[(_b = options === null || options === void 0 ? void 0 : options.scale) !== null && _b !== void 0 ? _b : 'none'];
|
|
40
|
+
const children = yield Promise.all(images.map((image) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
+
const imageBase64 = yield image.getBase64('image/png');
|
|
42
|
+
return (0, virtual_dom_1.h)('img', {
|
|
43
|
+
style: {
|
|
44
|
+
objectFit,
|
|
45
|
+
flex: '1 1 auto',
|
|
46
|
+
minWidth: 0,
|
|
47
|
+
minHeight: 0,
|
|
48
|
+
maxWidth: '100%',
|
|
49
|
+
maxHeight: '100%',
|
|
50
|
+
},
|
|
51
|
+
src: imageBase64,
|
|
52
|
+
}, []);
|
|
53
|
+
})));
|
|
54
|
+
const document = (0, virtual_dom_1.h)('div', {
|
|
55
|
+
style: {
|
|
56
|
+
display: 'flex',
|
|
57
|
+
position: 'absolute',
|
|
58
|
+
scale: 1,
|
|
59
|
+
flexDirection: `${isVertical ? 'column' : 'row'}${(options === null || options === void 0 ? void 0 : options.reversed) ? '-reversed' : ''}`,
|
|
60
|
+
gap: (0, types_1.toPx)((_c = options === null || options === void 0 ? void 0 : options.gap) !== null && _c !== void 0 ? _c : 0),
|
|
61
|
+
// TODO: merge options and defaults
|
|
62
|
+
justifyContent: (_d = options === null || options === void 0 ? void 0 : options.justifyContent) !== null && _d !== void 0 ? _d : containers_1.DEFAULT_DIRECTION_CONTAINER_OPTIONS.justifyContent,
|
|
63
|
+
alignItems: (_e = options === null || options === void 0 ? void 0 : options.alignItems) !== null && _e !== void 0 ? _e : containers_1.DEFAULT_DIRECTION_CONTAINER_OPTIONS.alignItems,
|
|
64
|
+
top: (0, types_1.toPx)(position.y),
|
|
65
|
+
left: (0, types_1.toPx)(position.x),
|
|
66
|
+
height: (0, types_1.toPx)(position.height),
|
|
67
|
+
width: (0, types_1.toPx)(position.width),
|
|
68
|
+
},
|
|
69
|
+
}, children);
|
|
70
|
+
const rootNode = (0, virtual_dom_1.create)(document);
|
|
71
|
+
// TODO: extract this in a dif function
|
|
72
|
+
const image = yield (0, node_html_to_image_1.default)({
|
|
73
|
+
html: rootNode.toString(),
|
|
74
|
+
transparent: true,
|
|
75
|
+
type: 'png',
|
|
76
|
+
puppeteerArgs: {
|
|
77
|
+
defaultViewport: {
|
|
78
|
+
width: background.width,
|
|
79
|
+
height: background.height,
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
return jimp_1.Jimp.read(image);
|
|
84
|
+
});
|
|
85
|
+
const SCALE_MODE_TO_OBJECT_FIT = {
|
|
86
|
+
'keep-ratio': 'contain',
|
|
87
|
+
stretch: 'fill',
|
|
88
|
+
none: 'none',
|
|
125
89
|
};
|
|
126
90
|
//# sourceMappingURL=container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/lib/utils/container.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/lib/utils/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,6 @@ __exportStar(require("./buildFontString"), exports);
|
|
|
18
18
|
__exportStar(require("./canvasToImage"), exports);
|
|
19
19
|
__exportStar(require("./container"), exports);
|
|
20
20
|
__exportStar(require("./drawBoundingBox"), exports);
|
|
21
|
-
__exportStar(require("./enhanceTextbox"), exports);
|
|
22
21
|
__exportStar(require("./placeImage"), exports);
|
|
22
|
+
__exportStar(require("./renderText"), exports);
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,kDAAgC;AAChC,8CAA4B;AAC5B,oDAAkC;AAClC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,kDAAgC;AAChC,8CAA4B;AAC5B,oDAAkC;AAClC,+CAA6B;AAC7B,+CAA6B"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.renderText = void 0;
|
|
16
|
+
const virtual_dom_1 = require("virtual-dom");
|
|
17
|
+
const types_1 = require("../types");
|
|
18
|
+
const node_html_to_image_1 = __importDefault(require("node-html-to-image"));
|
|
19
|
+
const jimp_1 = require("jimp");
|
|
20
|
+
const renderText = (text, position, backgroundSize, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
22
|
+
let textChildren = [text];
|
|
23
|
+
for (const [word, image] of Object.entries((_a = options === null || options === void 0 ? void 0 : options.replacement) !== null && _a !== void 0 ? _a : {})) {
|
|
24
|
+
const regex = new RegExp(word, 'gi');
|
|
25
|
+
const imageBase64 = yield image.getBase64('image/png');
|
|
26
|
+
let tmpChildren = [];
|
|
27
|
+
for (const textSegment of textChildren) {
|
|
28
|
+
if (typeof textSegment !== 'string') {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const parts = textSegment.split(regex);
|
|
32
|
+
for (let index = 0; index < parts.length; index++) {
|
|
33
|
+
if (index > 0) {
|
|
34
|
+
tmpChildren.push((0, virtual_dom_1.h)('img', {
|
|
35
|
+
style: {
|
|
36
|
+
display: 'inline',
|
|
37
|
+
verticalAlign: 'middle',
|
|
38
|
+
height: (0, types_1.toPx)((_c = (_b = options === null || options === void 0 ? void 0 : options.font) === null || _b === void 0 ? void 0 : _b.size) !== null && _c !== void 0 ? _c : 28), // TODO: use constant
|
|
39
|
+
width: 'auto',
|
|
40
|
+
},
|
|
41
|
+
src: imageBase64,
|
|
42
|
+
}, []));
|
|
43
|
+
}
|
|
44
|
+
tmpChildren.push(parts[index]);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
textChildren = tmpChildren;
|
|
48
|
+
}
|
|
49
|
+
const document = (0, virtual_dom_1.h)('div', {
|
|
50
|
+
style: {
|
|
51
|
+
display: 'flex',
|
|
52
|
+
overflow: 'visible',
|
|
53
|
+
position: 'absolute',
|
|
54
|
+
top: (0, types_1.toPx)(position.y),
|
|
55
|
+
left: (0, types_1.toPx)(position.x),
|
|
56
|
+
height: (0, types_1.toPx)(position.height),
|
|
57
|
+
width: (0, types_1.toPx)(position.width),
|
|
58
|
+
justifyContent: (_d = options === null || options === void 0 ? void 0 : options.xAlign) !== null && _d !== void 0 ? _d : types_1.DEFAULT_TEXT_LAYER_OPTIONS.xAlign,
|
|
59
|
+
alignItems: (_e = options === null || options === void 0 ? void 0 : options.yAlign) !== null && _e !== void 0 ? _e : types_1.DEFAULT_TEXT_LAYER_OPTIONS.yAlign,
|
|
60
|
+
},
|
|
61
|
+
}, [
|
|
62
|
+
(0, virtual_dom_1.h)('div', {
|
|
63
|
+
style: {
|
|
64
|
+
overflow: 'visible',
|
|
65
|
+
overflowWrap: 'word-wrap',
|
|
66
|
+
whiteSpace: 'normal',
|
|
67
|
+
color: options === null || options === void 0 ? void 0 : options.color,
|
|
68
|
+
fontFamily: (_f = options === null || options === void 0 ? void 0 : options.font) === null || _f === void 0 ? void 0 : _f.family,
|
|
69
|
+
fontSize: (_g = options === null || options === void 0 ? void 0 : options.font) === null || _g === void 0 ? void 0 : _g.size,
|
|
70
|
+
fontStyle: ((_h = options === null || options === void 0 ? void 0 : options.font) === null || _h === void 0 ? void 0 : _h.italic) ? 'italic' : undefined,
|
|
71
|
+
fontWeight: ((_j = options === null || options === void 0 ? void 0 : options.font) === null || _j === void 0 ? void 0 : _j.bold) ? 'bold' : undefined,
|
|
72
|
+
},
|
|
73
|
+
}, textChildren),
|
|
74
|
+
]);
|
|
75
|
+
const rootNode = (0, virtual_dom_1.create)(document);
|
|
76
|
+
const image = yield (0, node_html_to_image_1.default)({
|
|
77
|
+
html: rootNode.toString(),
|
|
78
|
+
transparent: true,
|
|
79
|
+
type: 'png',
|
|
80
|
+
puppeteerArgs: {
|
|
81
|
+
defaultViewport: {
|
|
82
|
+
width: backgroundSize.width,
|
|
83
|
+
height: backgroundSize.height,
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
return jimp_1.Jimp.read(image);
|
|
88
|
+
});
|
|
89
|
+
exports.renderText = renderText;
|
|
90
|
+
//# sourceMappingURL=renderText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderText.js","sourceRoot":"","sources":["../../../../src/lib/utils/renderText.ts"],"names":[],"mappings":"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"}
|