@contrail/document-generation 2.1.22 → 2.1.24
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/lib/frames/frame-generator.js +1 -1
- package/lib/util/document-dynamic-text-element-util.d.ts +1 -1
- package/lib/util/document-dynamic-text-element-util.js +3 -3
- package/lib/util/document-text-element-util.d.ts +1 -0
- package/lib/util/document-text-element-util.js +23 -4
- package/package.json +2 -1
|
@@ -132,7 +132,7 @@ class FrameGenerator {
|
|
|
132
132
|
documentElement.text = documentElement.text.replace('{{dataGroup.name}}', dataGroup.name);
|
|
133
133
|
}
|
|
134
134
|
if (document_dynamic_text_element_util_1.DocumentDynamicTextElementUtil.isDynamicText(documentElement)) {
|
|
135
|
-
document_dynamic_text_element_util_1.DocumentDynamicTextElementUtil.handleDynamicText(documentElement, dataGroup, frameTitle);
|
|
135
|
+
document_dynamic_text_element_util_1.DocumentDynamicTextElementUtil.handleDynamicText(documentElement, dataGroup, frameTitle, element);
|
|
136
136
|
}
|
|
137
137
|
if (documentElement.elementIds) {
|
|
138
138
|
documentElement.elementIds = [elementMapping[documentElement.elementIds[0]]];
|
|
@@ -4,6 +4,6 @@ export declare class DocumentDynamicTextElementUtil {
|
|
|
4
4
|
static typeMap: any;
|
|
5
5
|
static propertyMapByType: any;
|
|
6
6
|
static isDynamicText(element: any): any;
|
|
7
|
-
static handleDynamicText(element: DocumentElement, dataGroup: DataGroup, frameTitle
|
|
7
|
+
static handleDynamicText(element: DocumentElement, dataGroup: DataGroup, frameTitle: any, templateElement: DocumentElement): void;
|
|
8
8
|
static setTypeMap(typeMap: any): void;
|
|
9
9
|
}
|
|
@@ -8,7 +8,7 @@ class DocumentDynamicTextElementUtil {
|
|
|
8
8
|
static isDynamicText(element) {
|
|
9
9
|
return element.type === 'text' && element.propertyBindings && element.propertyBindingsMetaData;
|
|
10
10
|
}
|
|
11
|
-
static handleDynamicText(element, dataGroup, frameTitle = null) {
|
|
11
|
+
static handleDynamicText(element, dataGroup, frameTitle = null, templateElement) {
|
|
12
12
|
var _a, _b, _c;
|
|
13
13
|
const propertyBindingsText = element.propertyBindings.text;
|
|
14
14
|
let propertyLevel = (_a = element.propertyBindingsMetaData) === null || _a === void 0 ? void 0 : _a.propertyLevel;
|
|
@@ -41,8 +41,8 @@ class DocumentDynamicTextElementUtil {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
let text = documents_1.DynamicTextUtil.getDynamicTextValue(element, property, propertyLevel, frame, componentModels);
|
|
44
|
-
if (((_c =
|
|
45
|
-
const styleDefinition = document_text_element_util_1.DocumentTextElementUtil.extractStyleFromInline(
|
|
44
|
+
if (((_c = templateElement.text) === null || _c === void 0 ? void 0 : _c.toString().indexOf('</')) > -1) {
|
|
45
|
+
const styleDefinition = document_text_element_util_1.DocumentTextElementUtil.extractStyleFromInline(templateElement.text);
|
|
46
46
|
text = document_text_element_util_1.DocumentTextElementUtil.applyInLineStyling(text, styleDefinition);
|
|
47
47
|
}
|
|
48
48
|
element.text = text;
|
|
@@ -9,4 +9,5 @@ export declare class DocumentTextElementUtil {
|
|
|
9
9
|
static extractFontFromHTML(text: any): any;
|
|
10
10
|
static extractTextStyleItalicFromHTML(text: any): string;
|
|
11
11
|
static extractTextStyleStrikethroughFromHTML(text: any): string;
|
|
12
|
+
static extractTextAlignFromHTML(text: any): string;
|
|
12
13
|
}
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DocumentTextElementUtil = void 0;
|
|
4
4
|
const documents_1 = require("@contrail/documents");
|
|
5
5
|
const util_1 = require("@contrail/util");
|
|
6
|
-
const document_util_1 = require("
|
|
6
|
+
const document_util_1 = require("@contrail/document-util");
|
|
7
|
+
const document_util_2 = require("./document-util");
|
|
7
8
|
class DocumentTextElementUtil {
|
|
8
9
|
static generateTextElement(textValue, options, applyInlineFormatting = true, sanitizeHTML = true) {
|
|
9
10
|
var _a;
|
|
@@ -24,7 +25,7 @@ class DocumentTextElementUtil {
|
|
|
24
25
|
size.height = size.height || 25;
|
|
25
26
|
size.width = size.width || 125;
|
|
26
27
|
const defaultedOptions = util_1.ObjectUtil.mergeDeep(util_1.ObjectUtil.cloneDeep(options), { position, size, style });
|
|
27
|
-
let textVal = sanitizeHTML ?
|
|
28
|
+
let textVal = sanitizeHTML ? document_util_2.DocumentUtil.sanitizeHTML(textValue) : textValue;
|
|
28
29
|
if (textVal === undefined || textVal === null) {
|
|
29
30
|
textVal = '';
|
|
30
31
|
}
|
|
@@ -36,7 +37,7 @@ class DocumentTextElementUtil {
|
|
|
36
37
|
return element;
|
|
37
38
|
}
|
|
38
39
|
static applyInLineStyling(text, style) {
|
|
39
|
-
var _a, _b, _c, _d, _e;
|
|
40
|
+
var _a, _b, _c, _d, _e, _f;
|
|
40
41
|
let formattedText = text;
|
|
41
42
|
if ((style === null || style === void 0 ? void 0 : style.font.weight) === 'bold') {
|
|
42
43
|
formattedText = `<strong>${formattedText}</strong>`;
|
|
@@ -63,7 +64,12 @@ class DocumentTextElementUtil {
|
|
|
63
64
|
if ((_e = style === null || style === void 0 ? void 0 : style.font) === null || _e === void 0 ? void 0 : _e.italic) {
|
|
64
65
|
formattedText = `<em>${formattedText}</em>`;
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
if ((_f = style === null || style === void 0 ? void 0 : style.text) === null || _f === void 0 ? void 0 : _f.align) {
|
|
68
|
+
formattedText = `<p style="text-align: ${style.text.align};">${formattedText}</p>`;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
formattedText = `<p>${formattedText}</p>`;
|
|
72
|
+
}
|
|
67
73
|
return formattedText;
|
|
68
74
|
}
|
|
69
75
|
static extractStyleFromInline(text) {
|
|
@@ -98,6 +104,10 @@ class DocumentTextElementUtil {
|
|
|
98
104
|
if (font) {
|
|
99
105
|
style.font.family = font;
|
|
100
106
|
}
|
|
107
|
+
const textAlign = document_util_1.DocumentStyleUtil.getFirstInlineStyleValue(text, 'text-align');
|
|
108
|
+
if (textAlign && ['left', 'right', 'center'].includes(textAlign)) {
|
|
109
|
+
style.text.align = textAlign;
|
|
110
|
+
}
|
|
101
111
|
return style;
|
|
102
112
|
}
|
|
103
113
|
static extractFontSizeFromHTML(text) {
|
|
@@ -144,5 +154,14 @@ class DocumentTextElementUtil {
|
|
|
144
154
|
return 'strikethrough';
|
|
145
155
|
}
|
|
146
156
|
}
|
|
157
|
+
static extractTextAlignFromHTML(text) {
|
|
158
|
+
let regex = /text-align:\s*(.*?);/;
|
|
159
|
+
let match = text.match(regex);
|
|
160
|
+
if (match === null || match === void 0 ? void 0 : match.length) {
|
|
161
|
+
let textAlign = match[1];
|
|
162
|
+
textAlign = textAlign.replace(/['"]+/g, '');
|
|
163
|
+
return textAlign;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
147
166
|
}
|
|
148
167
|
exports.DocumentTextElementUtil = DocumentTextElementUtil;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrail/document-generation",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.24",
|
|
4
4
|
"description": "Utilities for automatic generation of documents.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"license": "ISC",
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@contrail/aggregates": "^1.2.3",
|
|
18
|
+
"@contrail/document-util": "^1.0.7",
|
|
18
19
|
"@contrail/sdk": "^1.4.3",
|
|
19
20
|
"@types/jest": "^29.5.2",
|
|
20
21
|
"@types/node": "^18.16.0",
|