@pdfme/schemas 5.3.6 → 5.3.7
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/dist/node/__tests__/barcode.test.js +332 -0
- package/dist/node/__tests__/barcode.test.js.map +1 -0
- package/dist/node/__tests__/multiVariableText.test.js +96 -0
- package/dist/node/__tests__/multiVariableText.test.js.map +1 -0
- package/dist/node/__tests__/text.test.js +409 -0
- package/dist/node/__tests__/text.test.js.map +1 -0
- package/dist/node/__tests__/utils.test.js +132 -0
- package/dist/node/__tests__/utils.test.js.map +1 -0
- package/dist/node/src/barcodes/constants.js +20 -0
- package/dist/node/src/barcodes/constants.js.map +1 -0
- package/dist/node/src/barcodes/helper.js +145 -0
- package/dist/node/src/barcodes/helper.js.map +1 -0
- package/dist/node/src/barcodes/index.js +18 -0
- package/dist/node/src/barcodes/index.js.map +1 -0
- package/dist/node/src/barcodes/pdfRender.js +25 -0
- package/dist/node/src/barcodes/pdfRender.js.map +1 -0
- package/dist/node/src/barcodes/propPanel.js +228 -0
- package/dist/node/src/barcodes/propPanel.js.map +1 -0
- package/dist/node/src/barcodes/types.js +3 -0
- package/dist/node/src/barcodes/types.js.map +1 -0
- package/dist/node/src/barcodes/uiRender.js +89 -0
- package/dist/node/src/barcodes/uiRender.js.map +1 -0
- package/dist/node/src/checkbox/index.js +61 -0
- package/dist/node/src/checkbox/index.js.map +1 -0
- package/dist/node/src/constants.js +6 -0
- package/dist/node/src/constants.js.map +1 -0
- package/dist/node/src/date/date.js +9 -0
- package/dist/node/src/date/date.js.map +1 -0
- package/dist/node/src/date/dateTime.js +9 -0
- package/dist/node/src/date/dateTime.js.map +1 -0
- package/dist/node/src/date/helper.js +420 -0
- package/dist/node/src/date/helper.js.map +1 -0
- package/dist/node/src/date/time.js +9 -0
- package/dist/node/src/date/time.js.map +1 -0
- package/dist/node/src/date/types.js +3 -0
- package/dist/node/src/date/types.js.map +1 -0
- package/dist/node/src/graphics/cacheKey.js +6 -0
- package/dist/node/src/graphics/cacheKey.js.map +1 -0
- package/dist/node/src/graphics/image.js +167 -0
- package/dist/node/src/graphics/image.js.map +1 -0
- package/dist/node/src/graphics/imagehelper.js +124 -0
- package/dist/node/src/graphics/imagehelper.js.map +1 -0
- package/dist/node/src/graphics/svg.js +85 -0
- package/dist/node/src/graphics/svg.js.map +1 -0
- package/dist/node/src/index.js +38 -0
- package/dist/node/src/index.js.map +1 -0
- package/dist/node/src/multiVariableText/helper.js +46 -0
- package/dist/node/src/multiVariableText/helper.js.map +1 -0
- package/dist/node/src/multiVariableText/index.js +16 -0
- package/dist/node/src/multiVariableText/index.js.map +1 -0
- package/dist/node/src/multiVariableText/pdfRender.js +20 -0
- package/dist/node/src/multiVariableText/pdfRender.js.map +1 -0
- package/dist/node/src/multiVariableText/propPanel.js +130 -0
- package/dist/node/src/multiVariableText/propPanel.js.map +1 -0
- package/dist/node/src/multiVariableText/types.js +3 -0
- package/dist/node/src/multiVariableText/types.js.map +1 -0
- package/dist/node/src/multiVariableText/uiRender.js +138 -0
- package/dist/node/src/multiVariableText/uiRender.js.map +1 -0
- package/dist/node/src/radioGroup/index.js +93 -0
- package/dist/node/src/radioGroup/index.js.map +1 -0
- package/dist/node/src/select/index.js +164 -0
- package/dist/node/src/select/index.js.map +1 -0
- package/dist/node/src/shapes/line.js +60 -0
- package/dist/node/src/shapes/line.js.map +1 -0
- package/dist/node/src/shapes/rectAndEllipse.js +122 -0
- package/dist/node/src/shapes/rectAndEllipse.js.map +1 -0
- package/dist/node/src/tables/cell.js +126 -0
- package/dist/node/src/tables/cell.js.map +1 -0
- package/dist/node/src/tables/classes.js +467 -0
- package/dist/node/src/tables/classes.js.map +1 -0
- package/dist/node/src/tables/dynamicTemplate.js +17 -0
- package/dist/node/src/tables/dynamicTemplate.js.map +1 -0
- package/dist/node/src/tables/helper.js +189 -0
- package/dist/node/src/tables/helper.js.map +1 -0
- package/dist/node/src/tables/index.js +15 -0
- package/dist/node/src/tables/index.js.map +1 -0
- package/dist/node/src/tables/pdfRender.js +95 -0
- package/dist/node/src/tables/pdfRender.js.map +1 -0
- package/dist/node/src/tables/propPanel.js +101 -0
- package/dist/node/src/tables/propPanel.js.map +1 -0
- package/dist/node/src/tables/tableHelper.js +196 -0
- package/dist/node/src/tables/tableHelper.js.map +1 -0
- package/dist/node/src/tables/types.js +3 -0
- package/dist/node/src/tables/types.js.map +1 -0
- package/dist/node/src/tables/uiRender.js +367 -0
- package/dist/node/src/tables/uiRender.js.map +1 -0
- package/dist/node/src/text/constants.js +97 -0
- package/dist/node/src/text/constants.js.map +1 -0
- package/dist/node/src/text/extraFormatter.js +48 -0
- package/dist/node/src/text/extraFormatter.js.map +1 -0
- package/dist/node/src/text/helper.js +472 -0
- package/dist/node/src/text/helper.js.map +1 -0
- package/dist/node/src/text/icons/index.js +16 -0
- package/dist/node/src/text/icons/index.js.map +1 -0
- package/dist/node/src/text/index.js +15 -0
- package/dist/node/src/text/index.js.map +1 -0
- package/dist/node/src/text/pdfRender.js +156 -0
- package/dist/node/src/text/pdfRender.js.map +1 -0
- package/dist/node/src/text/propPanel.js +161 -0
- package/dist/node/src/text/propPanel.js.map +1 -0
- package/dist/node/src/text/types.js +3 -0
- package/dist/node/src/text/types.js.map +1 -0
- package/dist/node/src/text/uiRender.js +223 -0
- package/dist/node/src/text/uiRender.js.map +1 -0
- package/dist/node/src/utils.js +190 -0
- package/dist/node/src/utils.js.map +1 -0
- package/package.json +11 -4
- package/tsconfig.node.json +10 -0
@@ -0,0 +1,156 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.pdfRender = void 0;
|
4
|
+
const common_1 = require("@pdfme/common");
|
5
|
+
const constants_js_1 = require("./constants.js");
|
6
|
+
const helper_js_1 = require("./helper.js");
|
7
|
+
const utils_js_1 = require("../utils.js");
|
8
|
+
const embedAndGetFontObj = async (arg) => {
|
9
|
+
const { pdfDoc, font, _cache } = arg;
|
10
|
+
if (_cache.has(pdfDoc)) {
|
11
|
+
return _cache.get(pdfDoc);
|
12
|
+
}
|
13
|
+
const fontValues = await Promise.all(Object.values(font).map(async (v) => {
|
14
|
+
let fontData = v.data;
|
15
|
+
if (typeof fontData === 'string' && fontData.startsWith('http')) {
|
16
|
+
fontData = await fetch(fontData).then((res) => res.arrayBuffer());
|
17
|
+
}
|
18
|
+
return pdfDoc.embedFont(fontData, {
|
19
|
+
subset: typeof v.subset === 'undefined' ? true : v.subset,
|
20
|
+
});
|
21
|
+
}));
|
22
|
+
const fontObj = Object.keys(font).reduce((acc, cur, i) => Object.assign(acc, { [cur]: fontValues[i] }), {});
|
23
|
+
_cache.set(pdfDoc, fontObj);
|
24
|
+
return fontObj;
|
25
|
+
};
|
26
|
+
const getFontProp = ({ value, fontKitFont, schema, colorType, }) => {
|
27
|
+
const fontSize = schema.dynamicFontSize
|
28
|
+
? (0, helper_js_1.calculateDynamicFontSize)({ textSchema: schema, fontKitFont, value })
|
29
|
+
: schema.fontSize ?? constants_js_1.DEFAULT_FONT_SIZE;
|
30
|
+
const color = (0, utils_js_1.hex2PrintingColor)(schema.fontColor || constants_js_1.DEFAULT_FONT_COLOR, colorType);
|
31
|
+
return {
|
32
|
+
alignment: schema.alignment ?? constants_js_1.DEFAULT_ALIGNMENT,
|
33
|
+
verticalAlignment: schema.verticalAlignment ?? constants_js_1.DEFAULT_VERTICAL_ALIGNMENT,
|
34
|
+
lineHeight: schema.lineHeight ?? constants_js_1.DEFAULT_LINE_HEIGHT,
|
35
|
+
characterSpacing: schema.characterSpacing ?? constants_js_1.DEFAULT_CHARACTER_SPACING,
|
36
|
+
fontSize,
|
37
|
+
color,
|
38
|
+
};
|
39
|
+
};
|
40
|
+
const pdfRender = async (arg) => {
|
41
|
+
const { value, pdfDoc, pdfLib, page, options, schema, _cache } = arg;
|
42
|
+
if (!value)
|
43
|
+
return;
|
44
|
+
const { font = (0, common_1.getDefaultFont)(), colorType } = options;
|
45
|
+
const [pdfFontObj, fontKitFont] = await Promise.all([
|
46
|
+
embedAndGetFontObj({ pdfDoc, font, _cache }),
|
47
|
+
(0, helper_js_1.getFontKitFont)(schema.fontName, font, _cache),
|
48
|
+
]);
|
49
|
+
const fontProp = getFontProp({ value, fontKitFont, schema, colorType });
|
50
|
+
const { fontSize, color, alignment, verticalAlignment, lineHeight, characterSpacing } = fontProp;
|
51
|
+
const fontName = (schema.fontName ? schema.fontName : (0, common_1.getFallbackFontName)(font));
|
52
|
+
const pdfFontValue = pdfFontObj && pdfFontObj[fontName];
|
53
|
+
const pageHeight = page.getHeight();
|
54
|
+
const { width, height, rotate, position: { x, y }, opacity, } = (0, utils_js_1.convertForPdfLayoutProps)({ schema, pageHeight, applyRotateTranslate: false });
|
55
|
+
if (schema.backgroundColor) {
|
56
|
+
const color = (0, utils_js_1.hex2PrintingColor)(schema.backgroundColor, colorType);
|
57
|
+
page.drawRectangle({ x, y, width, height, rotate, color });
|
58
|
+
}
|
59
|
+
const firstLineTextHeight = (0, helper_js_1.heightOfFontAtSize)(fontKitFont, fontSize);
|
60
|
+
const descent = (0, helper_js_1.getFontDescentInPt)(fontKitFont, fontSize);
|
61
|
+
const halfLineHeightAdjustment = lineHeight === 0 ? 0 : ((lineHeight - 1) * fontSize) / 2;
|
62
|
+
const lines = (0, helper_js_1.splitTextToSize)({
|
63
|
+
value,
|
64
|
+
characterSpacing,
|
65
|
+
fontSize,
|
66
|
+
fontKitFont,
|
67
|
+
boxWidthInPt: width,
|
68
|
+
});
|
69
|
+
// Text lines are rendered from the bottom upwards, we need to adjust the position down
|
70
|
+
let yOffset = 0;
|
71
|
+
if (verticalAlignment === constants_js_1.VERTICAL_ALIGN_TOP) {
|
72
|
+
yOffset = firstLineTextHeight + halfLineHeightAdjustment;
|
73
|
+
}
|
74
|
+
else {
|
75
|
+
const otherLinesHeight = lineHeight * fontSize * (lines.length - 1);
|
76
|
+
if (verticalAlignment === constants_js_1.VERTICAL_ALIGN_BOTTOM) {
|
77
|
+
yOffset = height - otherLinesHeight + descent - halfLineHeightAdjustment;
|
78
|
+
}
|
79
|
+
else if (verticalAlignment === constants_js_1.VERTICAL_ALIGN_MIDDLE) {
|
80
|
+
yOffset =
|
81
|
+
(height - otherLinesHeight - firstLineTextHeight + descent) / 2 + firstLineTextHeight;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
const pivotPoint = { x: x + width / 2, y: pageHeight - (0, common_1.mm2pt)(schema.position.y) - height / 2 };
|
85
|
+
const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
|
86
|
+
lines.forEach((line, rowIndex) => {
|
87
|
+
const trimmed = line.replace('\n', '');
|
88
|
+
const textWidth = (0, helper_js_1.widthOfTextAtSize)(trimmed, fontKitFont, fontSize, characterSpacing);
|
89
|
+
const textHeight = (0, helper_js_1.heightOfFontAtSize)(fontKitFont, fontSize);
|
90
|
+
const rowYOffset = lineHeight * fontSize * rowIndex;
|
91
|
+
// Adobe Acrobat Reader shows an error if `drawText` is called with an empty text
|
92
|
+
if (line === '') {
|
93
|
+
// return; // this also works
|
94
|
+
line = '\r\n';
|
95
|
+
}
|
96
|
+
let xLine = x;
|
97
|
+
if (alignment === 'center') {
|
98
|
+
xLine += (width - textWidth) / 2;
|
99
|
+
}
|
100
|
+
else if (alignment === 'right') {
|
101
|
+
xLine += width - textWidth;
|
102
|
+
}
|
103
|
+
let yLine = pageHeight - (0, common_1.mm2pt)(schema.position.y) - yOffset - rowYOffset;
|
104
|
+
// draw strikethrough
|
105
|
+
if (schema.strikethrough && textWidth > 0) {
|
106
|
+
const _x = xLine + textWidth + 1;
|
107
|
+
const _y = yLine + textHeight / 3;
|
108
|
+
page.drawLine({
|
109
|
+
start: (0, utils_js_1.rotatePoint)({ x: xLine, y: _y }, pivotPoint, rotate.angle),
|
110
|
+
end: (0, utils_js_1.rotatePoint)({ x: _x, y: _y }, pivotPoint, rotate.angle),
|
111
|
+
thickness: (1 / 12) * fontSize,
|
112
|
+
color: color,
|
113
|
+
opacity,
|
114
|
+
});
|
115
|
+
}
|
116
|
+
// draw underline
|
117
|
+
if (schema.underline && textWidth > 0) {
|
118
|
+
const _x = xLine + textWidth + 1;
|
119
|
+
const _y = yLine - textHeight / 12;
|
120
|
+
page.drawLine({
|
121
|
+
start: (0, utils_js_1.rotatePoint)({ x: xLine, y: _y }, pivotPoint, rotate.angle),
|
122
|
+
end: (0, utils_js_1.rotatePoint)({ x: _x, y: _y }, pivotPoint, rotate.angle),
|
123
|
+
thickness: (1 / 12) * fontSize,
|
124
|
+
color: color,
|
125
|
+
opacity,
|
126
|
+
});
|
127
|
+
}
|
128
|
+
if (rotate.angle !== 0) {
|
129
|
+
// As we draw each line individually from different points, we must translate each lines position
|
130
|
+
// relative to the UI rotation pivot point. see comments in convertForPdfLayoutProps() for more info.
|
131
|
+
const rotatedPoint = (0, utils_js_1.rotatePoint)({ x: xLine, y: yLine }, pivotPoint, rotate.angle);
|
132
|
+
xLine = rotatedPoint.x;
|
133
|
+
yLine = rotatedPoint.y;
|
134
|
+
}
|
135
|
+
let spacing = characterSpacing;
|
136
|
+
if (alignment === 'justify' && line.slice(-1) !== '\n') {
|
137
|
+
// if alignment is `justify` but the end of line is not newline, then adjust the spacing
|
138
|
+
const iterator = segmenter.segment(trimmed)[Symbol.iterator]();
|
139
|
+
const len = Array.from(iterator).length;
|
140
|
+
spacing += (width - textWidth) / len;
|
141
|
+
}
|
142
|
+
page.pushOperators(pdfLib.setCharacterSpacing(spacing));
|
143
|
+
page.drawText(trimmed, {
|
144
|
+
x: xLine,
|
145
|
+
y: yLine,
|
146
|
+
rotate,
|
147
|
+
size: fontSize,
|
148
|
+
color,
|
149
|
+
lineHeight: lineHeight * fontSize,
|
150
|
+
font: pdfFontValue,
|
151
|
+
opacity,
|
152
|
+
});
|
153
|
+
});
|
154
|
+
};
|
155
|
+
exports.pdfRender = pdfRender;
|
156
|
+
//# sourceMappingURL=pdfRender.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pdfRender.js","sourceRoot":"","sources":["../../../../src/text/pdfRender.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,161 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.propPanel = void 0;
|
4
|
+
const common_1 = require("@pdfme/common");
|
5
|
+
const constants_js_1 = require("./constants.js");
|
6
|
+
const constants_js_2 = require("../constants.js");
|
7
|
+
const extraFormatter_1 = require("./extraFormatter");
|
8
|
+
const UseDynamicFontSize = (props) => {
|
9
|
+
const { rootElement, changeSchemas, activeSchema, i18n } = props;
|
10
|
+
const checkbox = document.createElement('input');
|
11
|
+
checkbox.type = 'checkbox';
|
12
|
+
checkbox.checked = Boolean(activeSchema?.dynamicFontSize);
|
13
|
+
checkbox.onchange = (e) => {
|
14
|
+
const val = e.target.checked
|
15
|
+
? {
|
16
|
+
min: constants_js_1.DEFAULT_DYNAMIC_MIN_FONT_SIZE,
|
17
|
+
max: constants_js_1.DEFAULT_DYNAMIC_MAX_FONT_SIZE,
|
18
|
+
fit: constants_js_1.DEFAULT_DYNAMIC_FIT,
|
19
|
+
}
|
20
|
+
: undefined;
|
21
|
+
changeSchemas([{ key: 'dynamicFontSize', value: val, schemaId: activeSchema.id }]);
|
22
|
+
};
|
23
|
+
const label = document.createElement('label');
|
24
|
+
const span = document.createElement('span');
|
25
|
+
span.innerText = i18n('schemas.text.dynamicFontSize') || '';
|
26
|
+
span.style.cssText = 'margin-left: 0.5rem';
|
27
|
+
label.style.cssText = 'display: flex; width: 100%;';
|
28
|
+
label.appendChild(checkbox);
|
29
|
+
label.appendChild(span);
|
30
|
+
rootElement.appendChild(label);
|
31
|
+
};
|
32
|
+
exports.propPanel = {
|
33
|
+
schema: ({ options, activeSchema, i18n }) => {
|
34
|
+
const font = options.font || { [common_1.DEFAULT_FONT_NAME]: { data: '', fallback: true } };
|
35
|
+
const fontNames = Object.keys(font);
|
36
|
+
const fallbackFontName = (0, common_1.getFallbackFontName)(font);
|
37
|
+
const enableDynamicFont = Boolean(activeSchema?.dynamicFontSize);
|
38
|
+
const textSchema = {
|
39
|
+
fontName: {
|
40
|
+
title: i18n('schemas.text.fontName'),
|
41
|
+
type: 'string',
|
42
|
+
widget: 'select',
|
43
|
+
default: fallbackFontName,
|
44
|
+
placeholder: fallbackFontName,
|
45
|
+
props: { options: fontNames.map((name) => ({ label: name, value: name })) },
|
46
|
+
span: 12,
|
47
|
+
},
|
48
|
+
fontSize: {
|
49
|
+
title: i18n('schemas.text.size'),
|
50
|
+
type: 'number',
|
51
|
+
widget: 'inputNumber',
|
52
|
+
span: 6,
|
53
|
+
disabled: enableDynamicFont,
|
54
|
+
props: { min: 0 },
|
55
|
+
},
|
56
|
+
characterSpacing: {
|
57
|
+
title: i18n('schemas.text.spacing'),
|
58
|
+
type: 'number',
|
59
|
+
widget: 'inputNumber',
|
60
|
+
span: 6,
|
61
|
+
props: { min: 0 },
|
62
|
+
},
|
63
|
+
formatter: (0, extraFormatter_1.getExtraFormatterSchema)(i18n),
|
64
|
+
lineHeight: {
|
65
|
+
title: i18n('schemas.text.lineHeight'),
|
66
|
+
type: 'number',
|
67
|
+
widget: 'inputNumber',
|
68
|
+
props: { step: 0.1, min: 0 },
|
69
|
+
span: 8,
|
70
|
+
},
|
71
|
+
useDynamicFontSize: { type: 'boolean', widget: 'UseDynamicFontSize', bind: false, span: 16 },
|
72
|
+
dynamicFontSize: {
|
73
|
+
type: 'object',
|
74
|
+
widget: 'card',
|
75
|
+
column: 3,
|
76
|
+
properties: {
|
77
|
+
min: {
|
78
|
+
title: i18n('schemas.text.min'),
|
79
|
+
type: 'number',
|
80
|
+
widget: 'inputNumber',
|
81
|
+
hidden: !enableDynamicFont,
|
82
|
+
props: { min: 0 },
|
83
|
+
},
|
84
|
+
max: {
|
85
|
+
title: i18n('schemas.text.max'),
|
86
|
+
type: 'number',
|
87
|
+
widget: 'inputNumber',
|
88
|
+
hidden: !enableDynamicFont,
|
89
|
+
props: { min: 0 },
|
90
|
+
},
|
91
|
+
fit: {
|
92
|
+
title: i18n('schemas.text.fit'),
|
93
|
+
type: 'string',
|
94
|
+
widget: 'select',
|
95
|
+
hidden: !enableDynamicFont,
|
96
|
+
props: {
|
97
|
+
options: [
|
98
|
+
{ label: i18n('schemas.horizontal'), value: constants_js_1.DYNAMIC_FIT_HORIZONTAL },
|
99
|
+
{ label: i18n('schemas.vertical'), value: constants_js_1.DYNAMIC_FIT_VERTICAL },
|
100
|
+
],
|
101
|
+
},
|
102
|
+
},
|
103
|
+
},
|
104
|
+
},
|
105
|
+
fontColor: {
|
106
|
+
title: i18n('schemas.textColor'),
|
107
|
+
type: 'string',
|
108
|
+
widget: 'color',
|
109
|
+
props: {
|
110
|
+
disabledAlpha: true,
|
111
|
+
},
|
112
|
+
rules: [
|
113
|
+
{
|
114
|
+
pattern: constants_js_2.HEX_COLOR_PATTERN,
|
115
|
+
message: i18n('validation.hexColor'),
|
116
|
+
},
|
117
|
+
],
|
118
|
+
},
|
119
|
+
backgroundColor: {
|
120
|
+
title: i18n('schemas.bgColor'),
|
121
|
+
type: 'string',
|
122
|
+
widget: 'color',
|
123
|
+
props: {
|
124
|
+
disabledAlpha: true,
|
125
|
+
},
|
126
|
+
rules: [
|
127
|
+
{
|
128
|
+
pattern: constants_js_2.HEX_COLOR_PATTERN,
|
129
|
+
message: i18n('validation.hexColor'),
|
130
|
+
},
|
131
|
+
],
|
132
|
+
},
|
133
|
+
};
|
134
|
+
return textSchema;
|
135
|
+
},
|
136
|
+
widgets: { UseDynamicFontSize },
|
137
|
+
defaultSchema: {
|
138
|
+
name: '',
|
139
|
+
type: 'text',
|
140
|
+
content: 'Type Something...',
|
141
|
+
position: { x: 0, y: 0 },
|
142
|
+
width: 45,
|
143
|
+
height: 10,
|
144
|
+
// If the value of "rotate" is set to undefined or not set at all, rotation will be disabled in the UI.
|
145
|
+
// Check this document: https://pdfme.com//docs/custom-schemas#learning-how-to-create-from-pdfmeschemas-code
|
146
|
+
rotate: 0,
|
147
|
+
alignment: constants_js_1.DEFAULT_ALIGNMENT,
|
148
|
+
verticalAlignment: constants_js_1.DEFAULT_VERTICAL_ALIGNMENT,
|
149
|
+
fontSize: constants_js_1.DEFAULT_FONT_SIZE,
|
150
|
+
lineHeight: constants_js_1.DEFAULT_LINE_HEIGHT,
|
151
|
+
characterSpacing: constants_js_1.DEFAULT_CHARACTER_SPACING,
|
152
|
+
dynamicFontSize: undefined,
|
153
|
+
fontColor: constants_js_1.DEFAULT_FONT_COLOR,
|
154
|
+
fontName: undefined,
|
155
|
+
backgroundColor: '',
|
156
|
+
opacity: constants_js_2.DEFAULT_OPACITY,
|
157
|
+
strikethrough: false,
|
158
|
+
underline: false,
|
159
|
+
},
|
160
|
+
};
|
161
|
+
//# sourceMappingURL=propPanel.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"propPanel.js","sourceRoot":"","sources":["../../../../src/text/propPanel.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/text/types.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,223 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getBackgroundColor = exports.mapVerticalAlignToFlex = exports.makeElementPlainTextContentEditable = exports.buildStyledTextContainer = exports.uiRender = void 0;
|
4
|
+
const common_1 = require("@pdfme/common");
|
5
|
+
const constants_js_1 = require("./constants.js");
|
6
|
+
const helper_js_1 = require("./helper.js");
|
7
|
+
const utils_js_1 = require("../utils.js");
|
8
|
+
const replaceUnsupportedChars = (text, fontKitFont) => {
|
9
|
+
const charSupportCache = {};
|
10
|
+
const isCharSupported = (char) => {
|
11
|
+
if (char in charSupportCache) {
|
12
|
+
return charSupportCache[char];
|
13
|
+
}
|
14
|
+
const isSupported = fontKitFont.hasGlyphForCodePoint(char.codePointAt(0) || 0);
|
15
|
+
charSupportCache[char] = isSupported;
|
16
|
+
return isSupported;
|
17
|
+
};
|
18
|
+
const segments = text.split(/(\r\n|\n|\r)/);
|
19
|
+
return segments
|
20
|
+
.map((segment) => {
|
21
|
+
if (/\r\n|\n|\r/.test(segment)) {
|
22
|
+
return segment;
|
23
|
+
}
|
24
|
+
return segment
|
25
|
+
.split('')
|
26
|
+
.map((char) => {
|
27
|
+
if (/\s/.test(char) || char.charCodeAt(0) < 32) {
|
28
|
+
return char;
|
29
|
+
}
|
30
|
+
return isCharSupported(char) ? char : '〿';
|
31
|
+
})
|
32
|
+
.join('');
|
33
|
+
})
|
34
|
+
.join('');
|
35
|
+
};
|
36
|
+
const uiRender = async (arg) => {
|
37
|
+
const { value, schema, mode, onChange, stopEditing, tabIndex, placeholder, options, _cache } = arg;
|
38
|
+
const usePlaceholder = (0, utils_js_1.isEditable)(mode, schema) && placeholder && !value;
|
39
|
+
const getText = (element) => {
|
40
|
+
let text = element.innerText;
|
41
|
+
if (text.endsWith('\n')) {
|
42
|
+
// contenteditable adds additional newline char retrieved with innerText
|
43
|
+
text = text.slice(0, -1);
|
44
|
+
}
|
45
|
+
return text;
|
46
|
+
};
|
47
|
+
const font = options?.font || (0, common_1.getDefaultFont)();
|
48
|
+
const fontKitFont = await (0, helper_js_1.getFontKitFont)(schema.fontName, font, _cache);
|
49
|
+
const textBlock = (0, exports.buildStyledTextContainer)(arg, fontKitFont, usePlaceholder ? placeholder : value);
|
50
|
+
const processedText = replaceUnsupportedChars(value, fontKitFont);
|
51
|
+
if (!(0, utils_js_1.isEditable)(mode, schema)) {
|
52
|
+
// Read-only mode
|
53
|
+
textBlock.innerHTML = processedText
|
54
|
+
.split('')
|
55
|
+
.map((l, i) => `<span style="letter-spacing:${String(value).length === i + 1 ? 0 : 'inherit'};">${l}</span>`)
|
56
|
+
.join('');
|
57
|
+
return;
|
58
|
+
}
|
59
|
+
(0, exports.makeElementPlainTextContentEditable)(textBlock);
|
60
|
+
textBlock.tabIndex = tabIndex || 0;
|
61
|
+
textBlock.innerText = mode === 'designer' ? value : processedText;
|
62
|
+
textBlock.addEventListener('blur', (e) => {
|
63
|
+
onChange && onChange({ key: 'content', value: getText(e.target) });
|
64
|
+
stopEditing && stopEditing();
|
65
|
+
});
|
66
|
+
if (schema.dynamicFontSize) {
|
67
|
+
let dynamicFontSize = undefined;
|
68
|
+
textBlock.addEventListener('keyup', () => {
|
69
|
+
setTimeout(() => {
|
70
|
+
void (async () => {
|
71
|
+
if (!textBlock.textContent)
|
72
|
+
return;
|
73
|
+
dynamicFontSize = (0, helper_js_1.calculateDynamicFontSize)({
|
74
|
+
textSchema: schema,
|
75
|
+
fontKitFont,
|
76
|
+
value: getText(textBlock),
|
77
|
+
startingFontSize: dynamicFontSize,
|
78
|
+
});
|
79
|
+
textBlock.style.fontSize = `${dynamicFontSize}pt`;
|
80
|
+
const { topAdj: newTopAdj, bottomAdj: newBottomAdj } = (0, helper_js_1.getBrowserVerticalFontAdjustments)(fontKitFont, dynamicFontSize ?? schema.fontSize ?? constants_js_1.DEFAULT_FONT_SIZE, schema.lineHeight ?? constants_js_1.DEFAULT_LINE_HEIGHT, schema.verticalAlignment ?? constants_js_1.DEFAULT_VERTICAL_ALIGNMENT);
|
81
|
+
textBlock.style.paddingTop = `${newTopAdj}px`;
|
82
|
+
textBlock.style.marginBottom = `${newBottomAdj}px`;
|
83
|
+
})();
|
84
|
+
}, 0);
|
85
|
+
});
|
86
|
+
}
|
87
|
+
if (usePlaceholder) {
|
88
|
+
textBlock.style.color = constants_js_1.PLACEHOLDER_FONT_COLOR;
|
89
|
+
textBlock.addEventListener('focus', () => {
|
90
|
+
if (textBlock.innerText === placeholder) {
|
91
|
+
textBlock.innerText = '';
|
92
|
+
textBlock.style.color = schema.fontColor ?? constants_js_1.DEFAULT_FONT_COLOR;
|
93
|
+
}
|
94
|
+
});
|
95
|
+
}
|
96
|
+
if (mode === 'designer') {
|
97
|
+
setTimeout(() => {
|
98
|
+
textBlock.focus();
|
99
|
+
// Set the focus to the end of the editable element when you focus, as we would for a textarea
|
100
|
+
const selection = window.getSelection();
|
101
|
+
const range = document.createRange();
|
102
|
+
if (selection && range) {
|
103
|
+
range.selectNodeContents(textBlock);
|
104
|
+
range.collapse(false); // Collapse range to the end
|
105
|
+
selection?.removeAllRanges();
|
106
|
+
selection?.addRange(range);
|
107
|
+
}
|
108
|
+
});
|
109
|
+
}
|
110
|
+
};
|
111
|
+
exports.uiRender = uiRender;
|
112
|
+
const buildStyledTextContainer = (arg, fontKitFont, value) => {
|
113
|
+
const { schema, rootElement, mode, options, _cache } = arg;
|
114
|
+
const font = options?.font || (0, common_1.getDefaultFont)();
|
115
|
+
let dynamicFontSize = undefined;
|
116
|
+
if (schema.dynamicFontSize && value) {
|
117
|
+
dynamicFontSize = (0, helper_js_1.calculateDynamicFontSize)({
|
118
|
+
textSchema: schema,
|
119
|
+
fontKitFont,
|
120
|
+
value,
|
121
|
+
startingFontSize: dynamicFontSize,
|
122
|
+
});
|
123
|
+
}
|
124
|
+
// Depending on vertical alignment, we need to move the top or bottom of the font to keep
|
125
|
+
// it within it's defined box and align it with the generated pdf.
|
126
|
+
const { topAdj, bottomAdj } = (0, helper_js_1.getBrowserVerticalFontAdjustments)(fontKitFont, dynamicFontSize ?? schema.fontSize ?? constants_js_1.DEFAULT_FONT_SIZE, schema.lineHeight ?? constants_js_1.DEFAULT_LINE_HEIGHT, schema.verticalAlignment ?? constants_js_1.DEFAULT_VERTICAL_ALIGNMENT);
|
127
|
+
const topAdjustment = topAdj.toString();
|
128
|
+
const bottomAdjustment = bottomAdj.toString();
|
129
|
+
const container = document.createElement('div');
|
130
|
+
const containerStyle = {
|
131
|
+
padding: 0,
|
132
|
+
resize: 'none',
|
133
|
+
backgroundColor: (0, exports.getBackgroundColor)(value, schema),
|
134
|
+
border: 'none',
|
135
|
+
display: 'flex',
|
136
|
+
flexDirection: 'column',
|
137
|
+
justifyContent: (0, exports.mapVerticalAlignToFlex)(schema.verticalAlignment),
|
138
|
+
width: '100%',
|
139
|
+
height: '100%',
|
140
|
+
cursor: (0, utils_js_1.isEditable)(mode, schema) ? 'text' : 'default',
|
141
|
+
};
|
142
|
+
Object.assign(container.style, containerStyle);
|
143
|
+
rootElement.innerHTML = '';
|
144
|
+
rootElement.appendChild(container);
|
145
|
+
// text decoration
|
146
|
+
const textDecorations = [];
|
147
|
+
if (schema.strikethrough)
|
148
|
+
textDecorations.push('line-through');
|
149
|
+
if (schema.underline)
|
150
|
+
textDecorations.push('underline');
|
151
|
+
const textBlockStyle = {
|
152
|
+
// Font formatting styles
|
153
|
+
fontFamily: schema.fontName ? `'${schema.fontName}'` : 'inherit',
|
154
|
+
color: schema.fontColor ? schema.fontColor : constants_js_1.DEFAULT_FONT_COLOR,
|
155
|
+
fontSize: `${dynamicFontSize ?? schema.fontSize ?? constants_js_1.DEFAULT_FONT_SIZE}pt`,
|
156
|
+
letterSpacing: `${schema.characterSpacing ?? constants_js_1.DEFAULT_CHARACTER_SPACING}pt`,
|
157
|
+
lineHeight: `${schema.lineHeight ?? constants_js_1.DEFAULT_LINE_HEIGHT}em`,
|
158
|
+
textAlign: schema.alignment ?? constants_js_1.DEFAULT_ALIGNMENT,
|
159
|
+
whiteSpace: 'pre-wrap',
|
160
|
+
wordBreak: 'break-word',
|
161
|
+
// Block layout styles
|
162
|
+
resize: 'none',
|
163
|
+
border: 'none',
|
164
|
+
outline: 'none',
|
165
|
+
marginBottom: `${bottomAdjustment}px`,
|
166
|
+
paddingTop: `${topAdjustment}px`,
|
167
|
+
backgroundColor: 'transparent',
|
168
|
+
textDecoration: textDecorations.join(' '),
|
169
|
+
};
|
170
|
+
const textBlock = document.createElement('div');
|
171
|
+
textBlock.id = 'text-' + String(schema.id);
|
172
|
+
Object.assign(textBlock.style, textBlockStyle);
|
173
|
+
container.appendChild(textBlock);
|
174
|
+
return textBlock;
|
175
|
+
};
|
176
|
+
exports.buildStyledTextContainer = buildStyledTextContainer;
|
177
|
+
/**
|
178
|
+
* Firefox doesn't support 'plaintext-only' contentEditable mode, which we want to avoid mark-up.
|
179
|
+
* This function adds a workaround for Firefox to make the contentEditable element behave like 'plaintext-only'.
|
180
|
+
*/
|
181
|
+
const makeElementPlainTextContentEditable = (element) => {
|
182
|
+
if (!(0, helper_js_1.isFirefox)()) {
|
183
|
+
element.contentEditable = 'plaintext-only';
|
184
|
+
return;
|
185
|
+
}
|
186
|
+
element.contentEditable = 'true';
|
187
|
+
element.addEventListener('keydown', (e) => {
|
188
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
189
|
+
e.preventDefault();
|
190
|
+
document.execCommand('insertLineBreak', false, undefined);
|
191
|
+
}
|
192
|
+
});
|
193
|
+
element.addEventListener('paste', (e) => {
|
194
|
+
e.preventDefault();
|
195
|
+
const paste = e.clipboardData?.getData('text');
|
196
|
+
const selection = window.getSelection();
|
197
|
+
if (!selection?.rangeCount)
|
198
|
+
return;
|
199
|
+
selection.deleteFromDocument();
|
200
|
+
selection.getRangeAt(0).insertNode(document.createTextNode(paste || ''));
|
201
|
+
selection.collapseToEnd();
|
202
|
+
});
|
203
|
+
};
|
204
|
+
exports.makeElementPlainTextContentEditable = makeElementPlainTextContentEditable;
|
205
|
+
const mapVerticalAlignToFlex = (verticalAlignmentValue) => {
|
206
|
+
switch (verticalAlignmentValue) {
|
207
|
+
case constants_js_1.VERTICAL_ALIGN_TOP:
|
208
|
+
return 'flex-start';
|
209
|
+
case constants_js_1.VERTICAL_ALIGN_MIDDLE:
|
210
|
+
return 'center';
|
211
|
+
case constants_js_1.VERTICAL_ALIGN_BOTTOM:
|
212
|
+
return 'flex-end';
|
213
|
+
}
|
214
|
+
return 'flex-start';
|
215
|
+
};
|
216
|
+
exports.mapVerticalAlignToFlex = mapVerticalAlignToFlex;
|
217
|
+
const getBackgroundColor = (value, schema) => {
|
218
|
+
if (!value || !schema.backgroundColor)
|
219
|
+
return 'transparent';
|
220
|
+
return schema.backgroundColor;
|
221
|
+
};
|
222
|
+
exports.getBackgroundColor = getBackgroundColor;
|
223
|
+
//# sourceMappingURL=uiRender.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"uiRender.js","sourceRoot":"","sources":["../../../../src/text/uiRender.ts"],"names":[],"mappings":"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"}
|