@hellkite/pipkin 0.6.2 → 0.8.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.
Files changed (64) hide show
  1. package/build/src/lib/replacement.d.ts +5 -3
  2. package/build/src/lib/replacement.js +6 -3
  3. package/build/src/lib/replacement.js.map +1 -1
  4. package/build/src/lib/template.d.ts +18 -26
  5. package/build/src/lib/template.js +197 -70
  6. package/build/src/lib/template.js.map +1 -1
  7. package/build/src/lib/types/containers.d.ts +14 -2
  8. package/build/src/lib/types/containers.js +2 -7
  9. package/build/src/lib/types/containers.js.map +1 -1
  10. package/build/src/lib/types/hypernode.d.ts +2 -0
  11. package/build/src/lib/types/hypernode.js +3 -0
  12. package/build/src/lib/types/hypernode.js.map +1 -0
  13. package/build/src/lib/types/image.d.ts +11 -5
  14. package/build/src/lib/types/image.js +2 -7
  15. package/build/src/lib/types/image.js.map +1 -1
  16. package/build/src/lib/types/index.d.ts +2 -0
  17. package/build/src/lib/types/index.js +2 -0
  18. package/build/src/lib/types/index.js.map +1 -1
  19. package/build/src/lib/types/layer.d.ts +6 -0
  20. package/build/src/lib/types/layer.js +7 -0
  21. package/build/src/lib/types/layer.js.map +1 -1
  22. package/build/src/lib/types/replacement.d.ts +2 -2
  23. package/build/src/lib/types/template.d.ts +13 -0
  24. package/build/src/lib/types/template.js +10 -0
  25. package/build/src/lib/types/template.js.map +1 -0
  26. package/build/src/lib/types/text.d.ts +9 -4
  27. package/build/src/lib/types/text.js +3 -10
  28. package/build/src/lib/types/text.js.map +1 -1
  29. package/build/src/lib/utils/container.js +10 -45
  30. package/build/src/lib/utils/container.js.map +1 -1
  31. package/build/src/lib/utils/htmlToImage.d.ts +2 -3
  32. package/build/src/lib/utils/htmlToImage.js.map +1 -1
  33. package/build/src/lib/utils/index.d.ts +1 -3
  34. package/build/src/lib/utils/index.js +1 -3
  35. package/build/src/lib/utils/index.js.map +1 -1
  36. package/build/src/lib/utils/placeBoundingBox.d.ts +2 -0
  37. package/build/src/lib/utils/placeBoundingBox.js +21 -0
  38. package/build/src/lib/utils/placeBoundingBox.js.map +1 -0
  39. package/build/src/lib/utils/placeImage.d.ts +7 -6
  40. package/build/src/lib/utils/placeImage.js +20 -20
  41. package/build/src/lib/utils/placeImage.js.map +1 -1
  42. package/build/src/lib/utils/placeText.d.ts +14 -0
  43. package/build/src/lib/utils/placeText.js +69 -0
  44. package/build/src/lib/utils/placeText.js.map +1 -0
  45. package/build/src/test.js +87 -15
  46. package/build/src/test.js.map +1 -1
  47. package/package.json +3 -1
  48. package/roadmap.md +3 -1
  49. package/src/lib/replacement.ts +6 -5
  50. package/src/lib/template.ts +336 -114
  51. package/src/lib/types/containers.ts +24 -8
  52. package/src/lib/types/hypernode.ts +4 -0
  53. package/src/lib/types/image.ts +20 -9
  54. package/src/lib/types/index.ts +2 -0
  55. package/src/lib/types/layer.ts +15 -0
  56. package/src/lib/types/replacement.ts +2 -2
  57. package/src/lib/types/template.ts +22 -0
  58. package/src/lib/types/text.ts +16 -12
  59. package/src/lib/utils/container.ts +13 -70
  60. package/src/lib/utils/htmlToImage.ts +3 -3
  61. package/src/lib/utils/index.ts +1 -3
  62. package/src/lib/utils/{drawBoundingBox.ts → placeBoundingBox.ts} +3 -9
  63. package/src/lib/utils/placeImage.ts +0 -62
  64. package/src/lib/utils/renderText.ts +0 -107
@@ -1,9 +1,11 @@
1
- import { ReplacementMap, ImageType } from "./types";
1
+ import { ReplacementMap, StaticImageRef } from "./types";
2
2
  /**
3
3
  * Represents a replacement map between sets of words and symbols
4
4
  */
5
5
  export declare class Replacement {
6
- private readonly replacementMap;
7
- replace(words: Array<string>, symbol: ImageType): this;
6
+ protected readonly replacementMap: ReplacementMap;
7
+ replace(words: Array<string>, symbol: StaticImageRef): this;
8
+ }
9
+ export declare class ReplacementBuilder extends Replacement {
8
10
  build(): ReplacementMap;
9
11
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Replacement = void 0;
3
+ exports.ReplacementBuilder = exports.Replacement = void 0;
4
4
  /**
5
5
  * Represents a replacement map between sets of words and symbols
6
6
  */
@@ -10,13 +10,16 @@ class Replacement {
10
10
  }
11
11
  replace(words, symbol) {
12
12
  words.forEach(word => {
13
- this.replacementMap[word] = symbol.clone();
13
+ this.replacementMap[word] = symbol;
14
14
  });
15
15
  return this;
16
16
  }
17
+ }
18
+ exports.Replacement = Replacement;
19
+ class ReplacementBuilder extends Replacement {
17
20
  build() {
18
21
  return this.replacementMap;
19
22
  }
20
23
  }
21
- exports.Replacement = Replacement;
24
+ exports.ReplacementBuilder = ReplacementBuilder;
22
25
  //# sourceMappingURL=replacement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"replacement.js","sourceRoot":"","sources":["../../../src/lib/replacement.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,WAAW;IAAxB;QAEqB,mBAAc,GAAmB,EAAE,CAAC;IAYzD,CAAC;IAVG,OAAO,CAAC,KAAoB,EAAE,MAAiB;QAC3C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;CACJ;AAdD,kCAcC"}
1
+ {"version":3,"file":"replacement.js","sourceRoot":"","sources":["../../../src/lib/replacement.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,WAAW;IAAxB;QACuB,mBAAc,GAAmB,EAAE,CAAC;IAQ3D,CAAC;IANG,OAAO,CAAC,KAAoB,EAAE,MAAsB;QAChD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AATD,kCASC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IAC/C,KAAK;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;CACJ;AAJD,gDAIC"}
@@ -1,49 +1,41 @@
1
1
  import * as fs from 'fs';
2
- import { DirectionContainerOptions, ImageLayerOptions, ImageRef, ImageType, PackingFn, BoundingBox, RenderOptions, TextLayerOptions, TextRef, GridContainerOptions, ContainerOptions } from './types';
3
- type RequiredTemplateOptions = {
4
- height: number;
5
- width: number;
6
- color: number;
7
- };
8
- type OptionalTemplateOptions = Partial<{
9
- defaultFontFamily: string;
10
- defaultAssetsPath: string;
11
- }>;
12
- export type TemplateOptions = RequiredTemplateOptions & OptionalTemplateOptions;
13
- export type LayerFnContext = {
14
- debugMode: boolean;
15
- };
16
- export type LayerFn<EntryType> = (entry: EntryType, context: LayerFnContext) => Promise<ImageType | undefined>;
2
+ import { DirectionContainerOptions, ImageLayerOptions, ImageRef, ImageType, PackingFn, BoundingBox, RenderOptions, TextLayerOptions, TextRef, GridContainerOptions, ContainerOptions, HyperNode, ElementsFn, TemplateOptions } from './types';
3
+ export type LayerFnContext = {};
4
+ export type LayerFn<EntryType> = (entry: EntryType, context: LayerFnContext) => Promise<Array<HyperNode>>;
17
5
  export type TemplateLayerFn<EntryType extends Record<string, string>> = (template: Template<EntryType>) => Template<EntryType>;
18
6
  export declare class Template<EntryType extends Record<string, string>> {
19
7
  private readonly fonts;
20
8
  private readonly layers;
9
+ private readonly debugPoints;
21
10
  private readonly background;
22
- private debugMode;
11
+ private renderBoundingBox?;
23
12
  private defaultFontFamily?;
24
13
  private defaultAssetsPath?;
25
14
  private constructor();
26
15
  static new<EntryType extends Record<string, string>>(options?: Partial<TemplateOptions>): Template<EntryType>;
27
16
  private shadowTemplate;
28
- private shadowBackground;
29
17
  private get backgroundSize();
30
18
  layer(fn: LayerFn<EntryType>): this;
31
19
  template: (fn: TemplateLayerFn<EntryType>) => this;
32
- container: (imagesFn: (entry: EntryType) => Promise<Array<ImageType>>, box: BoundingBox, packingFn: PackingFn, options?: ContainerOptions<EntryType>) => this;
33
- hbox: (imagesFn: (entry: EntryType) => Promise<Array<ImageType>>, box: BoundingBox, options?: DirectionContainerOptions<EntryType>) => this;
34
- vbox: (imagesFn: (entry: EntryType) => Promise<Array<ImageType>>, box: BoundingBox, options?: DirectionContainerOptions<EntryType>) => this;
35
- grid: (imagesFn: (entry: EntryType) => Promise<Array<ImageType>>, box: BoundingBox, options?: GridContainerOptions<EntryType>) => this;
20
+ container: (elementsFn: ElementsFn, box: BoundingBox, packingFn: PackingFn, options?: ContainerOptions<EntryType>) => this;
21
+ hbox: (elementsFn: ElementsFn, box: BoundingBox, options?: DirectionContainerOptions<EntryType>) => this;
22
+ vbox: (elementsFn: ElementsFn, box: BoundingBox, options?: DirectionContainerOptions<EntryType>) => this;
23
+ grid: (elementsFn: ElementsFn, box: BoundingBox, options?: GridContainerOptions<EntryType>) => this;
36
24
  image: (ref: ImageRef<EntryType>, box: BoundingBox, options: ImageLayerOptions<EntryType>) => this;
37
25
  loadImage: (imagePath: string | Buffer) => Promise<ImageType>;
38
26
  text: (ref: TextRef<EntryType>, box: BoundingBox, options?: TextLayerOptions<EntryType>) => this;
39
27
  font(path: fs.PathLike, name: string): this;
40
- debug(): this;
41
- private renderLayers;
42
- render(entry: EntryType, options?: RenderOptions<EntryType>): Promise<ImageType>;
28
+ debug: () => this;
29
+ render(entry: EntryType): Promise<ImageType>;
43
30
  renderAll(entries: Array<EntryType>, options?: RenderOptions<EntryType>): Promise<Array<ImageType>>;
44
31
  fromCsv(path: string, options?: RenderOptions<EntryType>): Promise<Array<ImageType>>;
45
- private pathFromImageRef;
32
+ private imageFromImageRef;
33
+ private imageFromStaticImageRef;
46
34
  private textFromTextRef;
35
+ private elementFromElementRef;
47
36
  private shouldSkipLayerForEntry;
37
+ private placeText;
38
+ private prepareText;
39
+ private placeImage;
40
+ private prepareImage;
48
41
  }
49
- export {};
@@ -55,83 +55,117 @@ const path_1 = __importDefault(require("path"));
55
55
  const utils_1 = require("./utils");
56
56
  const types_1 = require("./types");
57
57
  const lodash_merge_1 = __importDefault(require("lodash.merge"));
58
- const DEFAULT_TEMPLATE_OPTIONS = {
59
- height: 1050,
60
- width: 750,
61
- color: (0, jimp_1.rgbaToInt)(255, 255, 255, 255),
62
- };
58
+ const virtual_dom_1 = require("virtual-dom");
59
+ const lodash_flatten_1 = __importDefault(require("lodash.flatten"));
60
+ const replacement_1 = require("./replacement");
63
61
  class Template {
64
62
  // disallow constructor initialization
65
63
  constructor(options) {
66
64
  this.fonts = {};
67
65
  this.layers = [];
68
- this.debugMode = false;
69
- this.template = (fn) => this.layer(entry => {
66
+ this.debugPoints = [];
67
+ this.template = (fn) => this.layer((entry) => __awaiter(this, void 0, void 0, function* () {
70
68
  const template = fn(this.shadowTemplate());
71
- return template.render(entry);
72
- });
73
- this.container = (imagesFn, box, packingFn, options) => this.layer((entry_1, _a) => __awaiter(this, [entry_1, _a], void 0, function* (entry, { debugMode }) {
74
- const mergedOptions = (0, lodash_merge_1.default)({}, types_1.DEFAULT_CONTAINER_OPTIONS, options);
69
+ const image = yield template.render(entry);
70
+ return [
71
+ yield this.placeImage({
72
+ image,
73
+ box: Object.assign({ left: 0, top: 0 }, this.backgroundSize),
74
+ options: types_1.DEFAULT_IMAGE_LAYER_OPTIONS,
75
+ }),
76
+ ];
77
+ }));
78
+ this.container = (elementsFn, box, packingFn, options) => this.layer((entry) => __awaiter(this, void 0, void 0, function* () {
79
+ const mergedOptions = (0, lodash_merge_1.default)({}, types_1.DEFAULT_CONTAINER_OPTIONS, { renderBoundingBox: this.renderBoundingBox }, options);
75
80
  if (this.shouldSkipLayerForEntry(entry, mergedOptions)) {
76
- return undefined;
81
+ return [];
77
82
  }
78
- const images = yield imagesFn(entry);
79
- const result = yield packingFn(box, this.shadowBackground(), images);
83
+ const elementRefs = yield elementsFn(entry);
84
+ const elements = yield Promise.all(elementRefs.map(elementRef => this.elementFromElementRef(entry, elementRef)));
85
+ const result = yield packingFn(box, elements);
80
86
  // debug mode
81
- if (debugMode) {
82
- const debugImage = yield (0, utils_1.drawBoundingBox)(box, this.backgroundSize);
83
- return debugImage.composite(result);
87
+ if (mergedOptions.renderBoundingBox) {
88
+ const debugImage = yield (0, utils_1.placeBoundingBox)(box);
89
+ return [result, debugImage];
84
90
  }
85
- return result;
91
+ return [result];
86
92
  }));
87
- this.hbox = (imagesFn, box, options) => this.container(imagesFn, box, (0, utils_1.hboxPackingFn)(options), options);
88
- this.vbox = (imagesFn, box, options) => this.container(imagesFn, box, (0, utils_1.vboxPackingFn)(options), options);
89
- this.grid = (imagesFn, box, options) => this.container(imagesFn, box, (0, utils_1.gridPackingFn)(options), options);
90
- this.image = (ref, box, options) => this.layer((entry_1, _a) => __awaiter(this, [entry_1, _a], void 0, function* (entry, { debugMode }) {
91
- const mergedOptions = (0, lodash_merge_1.default)({}, types_1.DEFAULT_IMAGE_LAYER_OPTIONS, { assetsPath: this.defaultAssetsPath }, options);
93
+ this.hbox = (elementsFn, box, options) => this.container(elementsFn, box, (0, utils_1.hboxPackingFn)(options), options);
94
+ this.vbox = (elementsFn, box, options) => this.container(elementsFn, box, (0, utils_1.vboxPackingFn)(options), options);
95
+ this.grid = (elementsFn, box, options) => this.container(elementsFn, box, (0, utils_1.gridPackingFn)(options), options);
96
+ this.image = (ref, box, options) => this.layer((entry) => __awaiter(this, void 0, void 0, function* () {
97
+ const mergedOptions = (0, lodash_merge_1.default)({}, types_1.DEFAULT_IMAGE_LAYER_OPTIONS, {
98
+ assetsPath: this.defaultAssetsPath,
99
+ renderBoundingBox: this.renderBoundingBox,
100
+ }, options);
92
101
  if (this.shouldSkipLayerForEntry(entry, mergedOptions)) {
93
- return undefined;
102
+ return [];
94
103
  }
95
- const image = yield this.pathFromImageRef(entry, ref, mergedOptions);
96
- const result = yield (0, utils_1.placeImage)({
104
+ const image = yield this.imageFromImageRef(entry, ref, mergedOptions.assetsPath);
105
+ const result = yield this.placeImage({
97
106
  image,
98
107
  box,
99
- backgroundSize: this.backgroundSize,
100
108
  options: mergedOptions,
101
109
  });
102
110
  // debug mode
103
- if (debugMode) {
104
- const debugImage = yield (0, utils_1.drawBoundingBox)(box, this.backgroundSize);
105
- return debugImage.composite(result);
111
+ if (mergedOptions.renderBoundingBox) {
112
+ const debugImage = yield (0, utils_1.placeBoundingBox)(box);
113
+ return [result, debugImage];
106
114
  }
107
- return result;
115
+ return [result];
108
116
  }));
109
117
  this.loadImage = (imagePath) => __awaiter(this, void 0, void 0, function* () {
110
118
  const image = (yield jimp_1.Jimp.read(imagePath));
111
119
  return image;
112
120
  });
113
- this.text = (ref, box, options) => this.layer((entry_1, _a) => __awaiter(this, [entry_1, _a], void 0, function* (entry, { debugMode }) {
121
+ this.text = (ref, box, options) => this.layer((entry) => __awaiter(this, void 0, void 0, function* () {
114
122
  const mergedOptions = (0, lodash_merge_1.default)({}, types_1.DEFAULT_TEXT_LAYER_OPTIONS, {
115
123
  font: {
116
124
  family: this.defaultFontFamily,
117
125
  },
126
+ renderBoundingBox: this.renderBoundingBox,
118
127
  }, options);
119
128
  if (this.shouldSkipLayerForEntry(entry, mergedOptions)) {
120
- return undefined;
129
+ return [];
121
130
  }
122
131
  const text = this.textFromTextRef(entry, ref);
123
- const result = yield (0, utils_1.renderText)(text, box, this.backgroundSize, mergedOptions, this.fonts);
132
+ const result = yield this.placeText({
133
+ text,
134
+ box,
135
+ options: mergedOptions,
136
+ });
124
137
  // debug mode
125
- if (debugMode) {
126
- const debugImage = yield (0, utils_1.drawBoundingBox)(box, this.backgroundSize);
127
- return debugImage.composite(result);
138
+ if (mergedOptions.renderBoundingBox) {
139
+ const debugImage = yield (0, utils_1.placeBoundingBox)(box);
140
+ return [result, debugImage];
128
141
  }
129
- return result;
142
+ return [result];
130
143
  }));
131
- this.pathFromImageRef = (entry, ref, options) => __awaiter(this, void 0, void 0, function* () {
144
+ this.debug = () => {
145
+ this.debugPoints.push(this.layers.length);
146
+ return this;
147
+ };
148
+ this.imageFromImageRef = (entry, ref, assetsPath) => __awaiter(this, void 0, void 0, function* () {
132
149
  const pathSegments = [];
133
- if (options.assetsPath) {
134
- pathSegments.push(options.assetsPath);
150
+ if (assetsPath.length) {
151
+ pathSegments.push(assetsPath);
152
+ }
153
+ if ('key' in ref) {
154
+ const fileName = entry[ref.key];
155
+ return this.loadImage(path_1.default.join(...pathSegments, fileName));
156
+ }
157
+ else if ('pathFn' in ref) {
158
+ const fileName = ref.pathFn(entry);
159
+ return this.loadImage(path_1.default.join(...pathSegments, fileName));
160
+ }
161
+ else {
162
+ return this.imageFromStaticImageRef(ref, assetsPath);
163
+ }
164
+ });
165
+ this.imageFromStaticImageRef = (ref, assetsPath) => __awaiter(this, void 0, void 0, function* () {
166
+ const pathSegments = [];
167
+ if (assetsPath.length) {
168
+ pathSegments.push(assetsPath);
135
169
  }
136
170
  if ('buffer' in ref) {
137
171
  return this.loadImage(ref.buffer);
@@ -142,14 +176,6 @@ class Template {
142
176
  else if ('absolutePath' in ref) {
143
177
  return this.loadImage(ref.absolutePath);
144
178
  }
145
- else if ('key' in ref) {
146
- const fileName = entry[ref.key];
147
- return this.loadImage(path_1.default.join(...pathSegments, fileName));
148
- }
149
- else if ('pathFn' in ref) {
150
- const fileName = ref.pathFn(entry);
151
- return this.loadImage(path_1.default.join(...pathSegments, fileName));
152
- }
153
179
  else {
154
180
  throw new Error('Unknown ImageRef variant');
155
181
  }
@@ -168,6 +194,28 @@ class Template {
168
194
  throw new Error('Unknown TextRef variant');
169
195
  }
170
196
  };
197
+ this.elementFromElementRef = (entry, ref) => __awaiter(this, void 0, void 0, function* () {
198
+ if ('text' in ref) {
199
+ const options = (0, lodash_merge_1.default)({}, types_1.DEFAULT_TEXT_LAYER_OPTIONS, ref.options);
200
+ return this.prepareText({
201
+ text: this.textFromTextRef(entry, ref.text),
202
+ options,
203
+ });
204
+ }
205
+ else if ('image' in ref) {
206
+ const options = (0, lodash_merge_1.default)({}, types_1.DEFAULT_IMAGE_LAYER_OPTIONS, ref.options);
207
+ return this.prepareImage({
208
+ image: yield this.imageFromImageRef(entry, ref.image, options.assetsPath),
209
+ options,
210
+ });
211
+ }
212
+ else if ('node' in ref) {
213
+ return ref.node;
214
+ }
215
+ else {
216
+ throw new Error('Unknown TextRef variant');
217
+ }
218
+ });
171
219
  this.shouldSkipLayerForEntry = (entry, options) => {
172
220
  var _a;
173
221
  if (typeof options.skip === 'function') {
@@ -175,6 +223,83 @@ class Template {
175
223
  }
176
224
  return (_a = options.skip) !== null && _a !== void 0 ? _a : false;
177
225
  };
226
+ this.placeText = (_a) => __awaiter(this, [_a], void 0, function* ({ text, box, options, }) {
227
+ return (0, virtual_dom_1.h)('div', {
228
+ style: Object.assign({ display: 'flex', overflow: 'visible', position: 'absolute', justifyContent: options.justifyContent, alignItems: options.alignItems }, (0, utils_1.boundingBoxToPx)(box)),
229
+ }, [
230
+ yield this.prepareText({
231
+ text,
232
+ options,
233
+ }),
234
+ ]);
235
+ });
236
+ this.prepareText = (_a) => __awaiter(this, [_a], void 0, function* ({ text, options, }) {
237
+ let textChildren = [text];
238
+ const replacementBuilder = new replacement_1.ReplacementBuilder();
239
+ options.replacementFn(replacementBuilder);
240
+ const replacementMap = replacementBuilder.build();
241
+ for (const [word, imageRef] of Object.entries(replacementMap)) {
242
+ const regex = new RegExp(word, 'gi');
243
+ const textOptions = (0, lodash_merge_1.default)({}, types_1.DEFAULT_IMAGE_LAYER_OPTIONS, { assetsPath: this.defaultAssetsPath }, options);
244
+ const image = yield this.imageFromStaticImageRef(imageRef, textOptions.assetsPath);
245
+ const imageBase64 = yield image.getBase64('image/png');
246
+ let tmpChildren = [];
247
+ for (const textSegment of textChildren) {
248
+ if (typeof textSegment !== 'string') {
249
+ continue;
250
+ }
251
+ const parts = textSegment.split(regex);
252
+ for (let index = 0; index < parts.length; index++) {
253
+ if (index > 0) {
254
+ tmpChildren.push((0, virtual_dom_1.h)('img', {
255
+ style: {
256
+ display: 'inline',
257
+ verticalAlign: 'middle',
258
+ height: (0, utils_1.toPx)(options.font.size),
259
+ width: 'auto',
260
+ },
261
+ src: imageBase64,
262
+ }, []));
263
+ }
264
+ tmpChildren.push(parts[index]);
265
+ }
266
+ }
267
+ textChildren = tmpChildren;
268
+ }
269
+ return (0, virtual_dom_1.h)('div', {
270
+ style: {
271
+ overflow: 'visible',
272
+ overflowWrap: 'word-wrap',
273
+ whiteSpace: 'normal',
274
+ color: options.color,
275
+ fontFamily: options.font.family,
276
+ fontSize: options.font.size,
277
+ fontStyle: options.font.italic ? 'italic' : undefined,
278
+ fontWeight: options.font.bold ? 'bold' : undefined,
279
+ '-webkit-text-stroke': `${options.border.width}px ${options.border.color}`,
280
+ },
281
+ }, textChildren);
282
+ });
283
+ this.placeImage = (_a) => __awaiter(this, [_a], void 0, function* ({ image, box, options, }) {
284
+ return (0, virtual_dom_1.h)('div', {
285
+ style: Object.assign({ display: 'flex', position: 'absolute', scale: 1, justifyContent: options.justifyContent, alignItems: options.alignItems }, (0, utils_1.boundingBoxToPx)(box)),
286
+ }, [yield this.prepareImage({ image, options })]);
287
+ });
288
+ this.prepareImage = (_a) => __awaiter(this, [_a], void 0, function* ({ image, options, }) {
289
+ const imageBase64 = yield image.getBase64('image/png');
290
+ const objectFit = types_1.SCALE_MODE_TO_OBJECT_FIT[options.scale];
291
+ return (0, virtual_dom_1.h)('img', {
292
+ style: {
293
+ objectFit,
294
+ flex: '1 1 auto',
295
+ minWidth: 0,
296
+ minHeight: 0,
297
+ maxWidth: '100%',
298
+ maxHeight: '100%',
299
+ },
300
+ src: imageBase64,
301
+ }, []);
302
+ });
178
303
  this.background = new jimp_1.Jimp({
179
304
  height: options.height,
180
305
  width: options.width,
@@ -184,7 +309,7 @@ class Template {
184
309
  this.defaultAssetsPath = options.defaultAssetsPath;
185
310
  }
186
311
  static new(options) {
187
- return new Template(Object.assign(Object.assign({}, DEFAULT_TEMPLATE_OPTIONS), options));
312
+ return new Template(Object.assign(Object.assign({}, types_1.DEFAULT_TEMPLATE_OPTIONS), options));
188
313
  }
189
314
  shadowTemplate() {
190
315
  return Template.new({
@@ -192,12 +317,6 @@ class Template {
192
317
  width: this.background.width,
193
318
  });
194
319
  }
195
- shadowBackground() {
196
- return new jimp_1.Jimp({
197
- width: this.background.width,
198
- height: this.background.height,
199
- });
200
- }
201
320
  get backgroundSize() {
202
321
  return {
203
322
  width: this.background.width,
@@ -213,27 +332,35 @@ class Template {
213
332
  this.fonts[name] = fs.readFileSync(path.toString()).toString('base64');
214
333
  return this;
215
334
  }
216
- debug() {
217
- this.debugMode = true;
218
- return this;
219
- }
220
- renderLayers(entry) {
335
+ render(entry) {
221
336
  return __awaiter(this, void 0, void 0, function* () {
222
337
  const results = yield Promise.all(this.layers.map(layerFn => layerFn(entry, {
223
- debugMode: this.debugMode,
338
+ renderBoundingBox: this.renderBoundingBox,
224
339
  })));
225
- return results.filter(result => !!result);
226
- });
227
- }
228
- render(entry, options) {
229
- return __awaiter(this, void 0, void 0, function* () {
230
- const renderedLayers = yield this.renderLayers(entry);
231
- return renderedLayers.reduce((acc, layerRender) => acc.composite(layerRender), this.background.clone());
340
+ const buildDocument = (children) => (0, virtual_dom_1.h)('html', [
341
+ (0, virtual_dom_1.h)('head', [
342
+ (0, virtual_dom_1.h)('style', Object.entries(this.fonts)
343
+ .map(([name, data]) => `@font-face {
344
+ font-family: '${name}';
345
+ src: url(data:font/ttf;base64,${data}) format('truetype');
346
+ }`)
347
+ .join('\n')),
348
+ ]),
349
+ (0, virtual_dom_1.h)('body', children),
350
+ ]);
351
+ // TODO: move it to a proper place
352
+ for (const debugPoint of this.debugPoints) {
353
+ const debugRender = yield (0, utils_1.htmlToImage)(buildDocument((0, lodash_flatten_1.default)(results.slice(0, debugPoint))), this.backgroundSize);
354
+ const debugImage = yield this.background.clone().composite(debugRender);
355
+ yield debugImage.write('assets/debug-1.png');
356
+ }
357
+ const render = yield (0, utils_1.htmlToImage)(buildDocument((0, lodash_flatten_1.default)(results)), this.backgroundSize);
358
+ return this.background.clone().composite(render);
232
359
  });
233
360
  }
234
361
  renderAll(entries, options) {
235
362
  return __awaiter(this, void 0, void 0, function* () {
236
- const results = yield Promise.all(entries.map(entry => new Promise(resolve => this.render(entry, options).then(image => {
363
+ const results = yield Promise.all(entries.map(entry => new Promise(resolve => this.render(entry).then(image => {
237
364
  var _a, _b;
238
365
  if (!(options === null || options === void 0 ? void 0 : options.duplication)) {
239
366
  return resolve([image]);
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/lib/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/lib/template.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { RequiredDeep } from 'type-fest';
2
2
  import { BoundingBox } from './boundingBox';
3
- import { ImageType } from './image';
3
+ import { ImageLayerSpecificOptions, ImageRef } from './image';
4
4
  import { ScaleMode } from './scale';
5
5
  import { LayerOptions } from './layer';
6
+ import { HyperNode } from './hypernode';
7
+ import { TextLayerSpecificOptions, TextRef } from './text';
6
8
  export type ContainerOptions<EntryType extends Record<string, string>> = LayerOptions<EntryType> & {
7
9
  /**
8
10
  * This is treated as a minimum length of an unit of space
@@ -33,4 +35,14 @@ export type GridContainerOptions<EntryType extends Record<string, string>> = Con
33
35
  direction?: 'rows' | 'cols';
34
36
  };
35
37
  export declare const DEFAULT_GRID_CONTAINER_OPTIONS: RequiredDeep<GridContainerOptions<Record<string, string>>>;
36
- export type PackingFn = (box: BoundingBox, background: ImageType, images: Array<ImageType>) => Promise<ImageType>;
38
+ export type ElementRef<EntryType extends Record<string, string>> = {
39
+ image: ImageRef<EntryType>;
40
+ options?: ImageLayerSpecificOptions<EntryType>;
41
+ } | {
42
+ text: TextRef<EntryType>;
43
+ options?: TextLayerSpecificOptions<EntryType>;
44
+ } | {
45
+ node: HyperNode;
46
+ };
47
+ export type ElementsFn = <EntryType extends Record<string, string>>(entry: EntryType) => Promise<Array<ElementRef<EntryType>>>;
48
+ export type PackingFn = (box: BoundingBox, elements: Array<HyperNode>) => Promise<HyperNode>;
@@ -1,13 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_GRID_CONTAINER_OPTIONS = exports.DEFAULT_DIRECTION_CONTAINER_OPTIONS = exports.DEFAULT_CONTAINER_OPTIONS = void 0;
4
- exports.DEFAULT_CONTAINER_OPTIONS = {
5
- gap: 0,
6
- justifyContent: 'normal',
7
- alignItems: 'center',
8
- scale: 'none',
9
- skip: false,
10
- };
4
+ const layer_1 = require("./layer");
5
+ exports.DEFAULT_CONTAINER_OPTIONS = Object.assign(Object.assign({}, layer_1.DEFAULT_LAYER_OPTIONS), { gap: 0, scale: 'none' });
11
6
  exports.DEFAULT_DIRECTION_CONTAINER_OPTIONS = Object.assign(Object.assign({}, exports.DEFAULT_CONTAINER_OPTIONS), { reversed: false });
12
7
  exports.DEFAULT_GRID_CONTAINER_OPTIONS = Object.assign(Object.assign({}, exports.DEFAULT_CONTAINER_OPTIONS), { size: 3, direction: 'rows' });
13
8
  //# sourceMappingURL=containers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../../src/lib/types/containers.ts"],"names":[],"mappings":";;;AAsBa,QAAA,yBAAyB,GAElC;IACA,GAAG,EAAE,CAAC;IACN,cAAc,EAAE,QAAQ;IACxB,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,KAAK;CACd,CAAC;AAQW,QAAA,mCAAmC,mCAGzC,iCAAyB,KAC5B,QAAQ,EAAE,KAAK,IACjB;AAgBW,QAAA,8BAA8B,mCAGpC,iCAAyB,KAC5B,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,MAAM,IACnB"}
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../../src/lib/types/containers.ts"],"names":[],"mappings":";;;AAIA,mCAA8D;AAoBjD,QAAA,yBAAyB,mCAG/B,6BAAqB,KACxB,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,MAAM,IACf;AAQW,QAAA,mCAAmC,mCAGzC,iCAAyB,KAC5B,QAAQ,EAAE,KAAK,IACjB;AAgBW,QAAA,8BAA8B,mCAGpC,iCAAyB,KAC5B,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,MAAM,IACnB"}
@@ -0,0 +1,2 @@
1
+ import { VNode } from "virtual-dom";
2
+ export type HyperNode = VNode;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=hypernode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hypernode.js","sourceRoot":"","sources":["../../../../src/lib/types/hypernode.ts"],"names":[],"mappings":""}
@@ -3,16 +3,21 @@ import { ScaleMode } from './scale';
3
3
  import { LayerOptions } from './layer';
4
4
  import { RequiredDeep } from 'type-fest';
5
5
  export type ImageType = JimpInstance;
6
- export type ImageRef<EntryType extends Record<string, string>> = {
6
+ /**
7
+ * Static images -> `buffer`, `path`, `absolutePath`
8
+ * Dynamic images -> `key`, `pathFn`
9
+ */
10
+ export type ImageRef<EntryType extends Record<string, string>> = StaticImageRef | {
11
+ key: keyof EntryType;
12
+ } | {
13
+ pathFn: (entry: EntryType) => string;
14
+ };
15
+ export type StaticImageRef = {
7
16
  buffer: Buffer;
8
17
  } | {
9
18
  path: string;
10
19
  } | {
11
20
  absolutePath: string;
12
- } | {
13
- key: keyof EntryType;
14
- } | {
15
- pathFn: (entry: EntryType) => string;
16
21
  };
17
22
  export type ImageLayerOptions<EntryType extends Record<string, string>> = LayerOptions<EntryType> & {
18
23
  /**
@@ -25,5 +30,6 @@ export type ImageLayerOptions<EntryType extends Record<string, string>> = LayerO
25
30
  scale?: ScaleMode;
26
31
  };
27
32
  export declare const DEFAULT_IMAGE_LAYER_OPTIONS: RequiredDeep<ImageLayerOptions<Record<string, string>>>;
33
+ export type ImageLayerSpecificOptions<EntryType extends Record<string, string>> = Omit<ImageLayerOptions<EntryType>, keyof LayerOptions<EntryType>>;
28
34
  export type Alignment = 'start' | 'center' | 'end';
29
35
  export declare const DEFAULT_IMAGE_ALIGNMENT: Alignment;
@@ -1,12 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_IMAGE_ALIGNMENT = exports.DEFAULT_IMAGE_LAYER_OPTIONS = void 0;
4
- exports.DEFAULT_IMAGE_LAYER_OPTIONS = {
5
- justifyContent: 'center',
6
- alignItems: 'center',
7
- scale: 'none',
8
- skip: false,
9
- assetsPath: ''
10
- };
4
+ const layer_1 = require("./layer");
5
+ exports.DEFAULT_IMAGE_LAYER_OPTIONS = Object.assign(Object.assign({}, layer_1.DEFAULT_LAYER_OPTIONS), { scale: 'none', assetsPath: '' });
11
6
  exports.DEFAULT_IMAGE_ALIGNMENT = 'center';
12
7
  //# sourceMappingURL=image.js.map