@pdfme/schemas 3.1.3-dev.7 → 3.1.3-dev.9
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/cjs/src/barcodes/constants.js +1 -2
- package/dist/cjs/src/barcodes/constants.js.map +1 -1
- package/dist/cjs/src/barcodes/propPanel.js +14 -15
- package/dist/cjs/src/barcodes/propPanel.js.map +1 -1
- package/dist/cjs/src/constants.js +6 -0
- package/dist/cjs/src/constants.js.map +1 -0
- package/dist/cjs/src/image/propPanel.js +2 -2
- package/dist/cjs/src/image/propPanel.js.map +1 -1
- package/dist/cjs/src/text/constants.js +2 -2
- package/dist/cjs/src/text/constants.js.map +1 -1
- package/dist/cjs/src/text/propPanel.js +4 -5
- package/dist/cjs/src/text/propPanel.js.map +1 -1
- package/dist/cjs/src/text/uiRender.js +70 -41
- package/dist/cjs/src/text/uiRender.js.map +1 -1
- package/dist/esm/src/barcodes/constants.js +0 -1
- package/dist/esm/src/barcodes/constants.js.map +1 -1
- package/dist/esm/src/barcodes/propPanel.js +4 -5
- package/dist/esm/src/barcodes/propPanel.js.map +1 -1
- package/dist/esm/src/constants.js +3 -0
- package/dist/esm/src/constants.js.map +1 -0
- package/dist/esm/src/image/propPanel.js +1 -1
- package/dist/esm/src/image/propPanel.js.map +1 -1
- package/dist/esm/src/text/constants.js +1 -1
- package/dist/esm/src/text/constants.js.map +1 -1
- package/dist/esm/src/text/propPanel.js +4 -5
- package/dist/esm/src/text/propPanel.js.map +1 -1
- package/dist/esm/src/text/uiRender.js +71 -42
- package/dist/esm/src/text/uiRender.js.map +1 -1
- package/dist/types/src/barcodes/constants.d.ts +0 -1
- package/dist/types/src/constants.d.ts +2 -0
- package/dist/types/src/text/constants.d.ts +1 -1
- package/package.json +1 -1
- package/src/barcodes/constants.ts +0 -2
- package/src/barcodes/propPanel.ts +4 -5
- package/src/constants.ts +2 -0
- package/src/image/propPanel.ts +1 -1
- package/src/text/constants.ts +1 -1
- package/src/text/propPanel.ts +3 -5
- package/src/text/uiRender.ts +81 -46
- package/dist/cjs/src/image/constants.js +0 -5
- package/dist/cjs/src/image/constants.js.map +0 -1
- package/dist/cjs/src/image/helper.js +0 -3
- package/dist/cjs/src/image/helper.js.map +0 -1
- package/dist/esm/src/image/constants.js +0 -2
- package/dist/esm/src/image/constants.js.map +0 -1
- package/dist/esm/src/image/helper.js +0 -2
- package/dist/esm/src/image/helper.js.map +0 -1
- package/dist/types/src/image/constants.d.ts +0 -1
- package/dist/types/src/image/helper.d.ts +0 -1
- package/src/image/constants.ts +0 -1
- package/src/image/helper.ts +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"propPanel.js","sourceRoot":"","sources":["../../../../src/text/propPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAIjB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,EAC7B,WAAW,EACX,YAAY,
|
1
|
+
{"version":3,"file":"propPanel.js","sourceRoot":"","sources":["../../../../src/text/propPanel.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { getDefaultFont } from '@pdfme/common';
|
2
|
-
import { DEFAULT_FONT_SIZE, DEFAULT_ALIGNMENT, VERTICAL_ALIGN_TOP, VERTICAL_ALIGN_MIDDLE, VERTICAL_ALIGN_BOTTOM, DEFAULT_VERTICAL_ALIGNMENT, DEFAULT_LINE_HEIGHT, DEFAULT_CHARACTER_SPACING, DEFAULT_FONT_COLOR, } from './constants.js';
|
2
|
+
import { DEFAULT_FONT_SIZE, DEFAULT_ALIGNMENT, VERTICAL_ALIGN_TOP, VERTICAL_ALIGN_MIDDLE, VERTICAL_ALIGN_BOTTOM, DEFAULT_VERTICAL_ALIGNMENT, DEFAULT_LINE_HEIGHT, DEFAULT_CHARACTER_SPACING, DEFAULT_FONT_COLOR, PLACEHOLDER_FONT_COLOR, } from './constants.js';
|
3
3
|
import { calculateDynamicFontSize, getFontKitFont, getBrowserVerticalFontAdjustments, } from './helper.js';
|
4
4
|
import { addAlphaToHex } from '../renderUtils.js';
|
5
|
+
import { DEFAULT_OPACITY } from '../constants.js';
|
5
6
|
const mapVerticalAlignToFlex = (verticalAlignmentValue) => {
|
6
7
|
switch (verticalAlignmentValue) {
|
7
8
|
case VERTICAL_ALIGN_TOP:
|
@@ -28,21 +29,22 @@ export const uiRender = async (arg) => {
|
|
28
29
|
const { value, schema, rootElement, mode, onChange, stopEditing, tabIndex, placeholder, options, theme, _cache, } = arg;
|
29
30
|
const font = options?.font || getDefaultFont();
|
30
31
|
let dynamicFontSize = undefined;
|
32
|
+
const getCdfArg = (v) => ({
|
33
|
+
textSchema: schema,
|
34
|
+
font,
|
35
|
+
value: v,
|
36
|
+
startingFontSize: dynamicFontSize,
|
37
|
+
_cache,
|
38
|
+
});
|
31
39
|
if (schema.dynamicFontSize && value) {
|
32
|
-
dynamicFontSize = await calculateDynamicFontSize(
|
33
|
-
textSchema: schema,
|
34
|
-
font,
|
35
|
-
value,
|
36
|
-
startingFontSize: dynamicFontSize,
|
37
|
-
_cache,
|
38
|
-
});
|
40
|
+
dynamicFontSize = await calculateDynamicFontSize(getCdfArg(value));
|
39
41
|
}
|
40
42
|
const fontKitFont = await getFontKitFont(schema, font, _cache);
|
41
43
|
// Depending on vertical alignment, we need to move the top or bottom of the font to keep
|
42
44
|
// it within it's defined box and align it with the generated pdf.
|
43
45
|
const { topAdj, bottomAdj } = getBrowserVerticalFontAdjustments(fontKitFont, dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE, schema.lineHeight ?? DEFAULT_LINE_HEIGHT, schema.verticalAlignment ?? DEFAULT_VERTICAL_ALIGNMENT);
|
44
|
-
const topAdjustment = topAdj;
|
45
|
-
const bottomAdjustment = bottomAdj;
|
46
|
+
const topAdjustment = topAdj.toString();
|
47
|
+
const bottomAdjustment = bottomAdj.toString();
|
46
48
|
const container = document.createElement('div');
|
47
49
|
const containerStyle = {
|
48
50
|
padding: 0,
|
@@ -54,12 +56,13 @@ export const uiRender = async (arg) => {
|
|
54
56
|
justifyContent: mapVerticalAlignToFlex(schema.verticalAlignment),
|
55
57
|
width: '100%',
|
56
58
|
height: '100%',
|
57
|
-
opacity: schema.opacity,
|
59
|
+
opacity: schema.opacity ?? DEFAULT_OPACITY,
|
58
60
|
};
|
59
61
|
Object.assign(container.style, containerStyle);
|
60
62
|
rootElement.innerHTML = '';
|
61
63
|
rootElement.appendChild(container);
|
62
|
-
const
|
64
|
+
const textBlockStyle = {
|
65
|
+
// Font formatting styles
|
63
66
|
fontFamily: schema.fontName ? `'${schema.fontName}'` : 'inherit',
|
64
67
|
color: schema.fontColor ? schema.fontColor : DEFAULT_FONT_COLOR,
|
65
68
|
fontSize: `${dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE}pt`,
|
@@ -68,45 +71,71 @@ export const uiRender = async (arg) => {
|
|
68
71
|
textAlign: schema.alignment ?? DEFAULT_ALIGNMENT,
|
69
72
|
whiteSpace: 'pre-wrap',
|
70
73
|
wordBreak: 'break-word',
|
74
|
+
// Block layout styles
|
75
|
+
resize: 'none',
|
76
|
+
border: 'none',
|
77
|
+
outline: 'none',
|
78
|
+
marginBottom: bottomAdjustment + 'px',
|
79
|
+
paddingTop: topAdjustment + 'px',
|
80
|
+
backgroundColor: 'transparent',
|
71
81
|
};
|
82
|
+
const textBlock = document.createElement('div');
|
83
|
+
Object.assign(textBlock.style, textBlockStyle);
|
72
84
|
if (mode === 'form' || mode === 'designer') {
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
85
|
+
textBlock.contentEditable = 'plaintext-only';
|
86
|
+
textBlock.tabIndex = tabIndex || 0;
|
87
|
+
textBlock.innerText = value;
|
88
|
+
textBlock.addEventListener('blur', (e) => {
|
89
|
+
onChange && onChange(e.target.innerText);
|
90
|
+
stopEditing && stopEditing();
|
91
|
+
});
|
92
|
+
if (schema.dynamicFontSize) {
|
93
|
+
textBlock.addEventListener('keyup', () => {
|
94
|
+
setTimeout(() => {
|
95
|
+
void (async () => {
|
96
|
+
if (!textBlock.textContent)
|
97
|
+
return;
|
98
|
+
dynamicFontSize = await calculateDynamicFontSize(getCdfArg(textBlock.textContent));
|
99
|
+
textBlock.style.fontSize = `${dynamicFontSize}pt`;
|
100
|
+
const { topAdj: newTopAdj, bottomAdj: newBottomAdj } = getBrowserVerticalFontAdjustments(fontKitFont, dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE, schema.lineHeight ?? DEFAULT_LINE_HEIGHT, schema.verticalAlignment ?? DEFAULT_VERTICAL_ALIGNMENT);
|
101
|
+
textBlock.style.paddingTop = newTopAdj.toString() + 'px';
|
102
|
+
textBlock.style.marginBottom = newBottomAdj.toString() + 'px';
|
103
|
+
})();
|
104
|
+
}, 0);
|
105
|
+
});
|
106
|
+
}
|
107
|
+
if (placeholder && !value) {
|
108
|
+
textBlock.innerText = placeholder;
|
109
|
+
textBlock.style.color = PLACEHOLDER_FONT_COLOR;
|
110
|
+
if (schema.dynamicFontSize) {
|
111
|
+
const fontSize = await calculateDynamicFontSize(getCdfArg(placeholder));
|
112
|
+
textBlock.style.fontSize = `${fontSize}pt`;
|
113
|
+
}
|
114
|
+
textBlock.addEventListener('focus', () => {
|
115
|
+
if (textBlock.innerText === placeholder) {
|
116
|
+
textBlock.innerText = '';
|
117
|
+
textBlock.style.color = schema.fontColor ?? DEFAULT_FONT_COLOR;
|
118
|
+
}
|
119
|
+
});
|
120
|
+
}
|
121
|
+
container.appendChild(textBlock);
|
92
122
|
if (mode === 'designer') {
|
93
|
-
|
94
|
-
textarea
|
123
|
+
textBlock.focus();
|
124
|
+
// Set the focus to the end of the editable element when you focus, as we would for a textarea
|
125
|
+
const selection = window.getSelection();
|
126
|
+
const range = document.createRange();
|
127
|
+
range.selectNodeContents(textBlock);
|
128
|
+
range.collapse(false); // Collapse range to the end
|
129
|
+
selection?.removeAllRanges();
|
130
|
+
selection?.addRange(range);
|
95
131
|
}
|
96
132
|
}
|
97
133
|
else {
|
98
|
-
|
99
|
-
const divStyle = {
|
100
|
-
...fontStyles,
|
101
|
-
marginBottom: bottomAdjustment + 'px',
|
102
|
-
paddingTop: topAdjustment + 'px',
|
103
|
-
};
|
104
|
-
Object.assign(div.style, divStyle);
|
105
|
-
div.innerHTML = value
|
134
|
+
textBlock.innerHTML = value
|
106
135
|
.split('')
|
107
136
|
.map((l, i) => `<span style="letter-spacing:${String(value).length === i + 1 ? 0 : 'inherit'};">${l}</span>`)
|
108
137
|
.join('');
|
109
|
-
container.appendChild(
|
138
|
+
container.appendChild(textBlock);
|
110
139
|
}
|
111
140
|
};
|
112
141
|
//# sourceMappingURL=uiRender.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"uiRender.js","sourceRoot":"","sources":["../../../../src/text/uiRender.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,cAAc,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,
|
1
|
+
{"version":3,"file":"uiRender.js","sourceRoot":"","sources":["../../../../src/text/uiRender.ts"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,3 @@
|
|
1
1
|
export declare const BARCODE_TYPES: readonly ["qrcode", "japanpost", "ean13", "ean8", "code39", "code128", "nw7", "itf14", "upca", "upce", "gs1datamatrix"];
|
2
2
|
export declare const DEFAULT_BARCODE_BG_COLOR = "#ffffff";
|
3
3
|
export declare const DEFAULT_BARCODE_COLOR = "#000000";
|
4
|
-
export declare const DEFAULT_OPACITY = 1;
|
@@ -11,10 +11,10 @@ export declare const DEFAULT_VERTICAL_ALIGNMENT: VERTICAL_ALIGNMENT;
|
|
11
11
|
export declare const DEFAULT_LINE_HEIGHT = 1;
|
12
12
|
export declare const DEFAULT_CHARACTER_SPACING = 0;
|
13
13
|
export declare const DEFAULT_FONT_COLOR = "#000000";
|
14
|
+
export declare const PLACEHOLDER_FONT_COLOR = "#A0A0A0";
|
14
15
|
export declare const DYNAMIC_FIT_VERTICAL: DYNAMIC_FONT_SIZE_FIT;
|
15
16
|
export declare const DYNAMIC_FIT_HORIZONTAL: DYNAMIC_FONT_SIZE_FIT;
|
16
17
|
export declare const DEFAULT_DYNAMIC_FIT: DYNAMIC_FONT_SIZE_FIT;
|
17
18
|
export declare const DEFAULT_DYNAMIC_MIN_FONT_SIZE = 4;
|
18
19
|
export declare const DEFAULT_DYNAMIC_MAX_FONT_SIZE = 72;
|
19
20
|
export declare const FONT_SIZE_ADJUSTMENT = 0.25;
|
20
|
-
export declare const DEFAULT_OPACITY = 1;
|
package/package.json
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import type { PropPanel } from '@pdfme/common';
|
2
2
|
import type { BarcodeSchema } from './types';
|
3
|
-
import { DEFAULT_BARCODE_COLOR, DEFAULT_BARCODE_BG_COLOR
|
3
|
+
import { DEFAULT_BARCODE_COLOR, DEFAULT_BARCODE_BG_COLOR } from './constants.js';
|
4
|
+
import { DEFAULT_OPACITY, HEX_COLOR_PATTERN } from '../constants.js';
|
4
5
|
|
5
6
|
const defaultColors = {
|
6
7
|
backgroundColor: DEFAULT_BARCODE_BG_COLOR,
|
@@ -164,8 +165,7 @@ export const getPropPanelByBarcodeType = (barcodeType: string): PropPanel<Barcod
|
|
164
165
|
widget: 'color',
|
165
166
|
rules: [
|
166
167
|
{
|
167
|
-
|
168
|
-
pattern: '^#(?:[A-Fa-f0-9]{3,4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$',
|
168
|
+
pattern: HEX_COLOR_PATTERN,
|
169
169
|
message: 'Please enter a valid hex color code.',
|
170
170
|
},
|
171
171
|
],
|
@@ -176,8 +176,7 @@ export const getPropPanelByBarcodeType = (barcodeType: string): PropPanel<Barcod
|
|
176
176
|
widget: 'color',
|
177
177
|
rules: [
|
178
178
|
{
|
179
|
-
|
180
|
-
pattern: '^#(?:[A-Fa-f0-9]{3,4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$',
|
179
|
+
pattern: HEX_COLOR_PATTERN,
|
181
180
|
message: 'Please enter a valid hex color code.',
|
182
181
|
},
|
183
182
|
],
|
package/src/constants.ts
ADDED
package/src/image/propPanel.ts
CHANGED
package/src/text/constants.ts
CHANGED
@@ -13,6 +13,7 @@ export const DEFAULT_VERTICAL_ALIGNMENT = VERTICAL_ALIGN_TOP;
|
|
13
13
|
export const DEFAULT_LINE_HEIGHT = 1;
|
14
14
|
export const DEFAULT_CHARACTER_SPACING = 0;
|
15
15
|
export const DEFAULT_FONT_COLOR = '#000000';
|
16
|
+
export const PLACEHOLDER_FONT_COLOR = '#A0A0A0';
|
16
17
|
export const DYNAMIC_FIT_VERTICAL = 'vertical' as DYNAMIC_FONT_SIZE_FIT;
|
17
18
|
export const DYNAMIC_FIT_HORIZONTAL = 'horizontal' as DYNAMIC_FONT_SIZE_FIT;
|
18
19
|
export const DEFAULT_DYNAMIC_FIT = DYNAMIC_FIT_VERTICAL;
|
@@ -20,4 +21,3 @@ export const DEFAULT_DYNAMIC_MIN_FONT_SIZE = 4;
|
|
20
21
|
|
21
22
|
export const DEFAULT_DYNAMIC_MAX_FONT_SIZE = 72;
|
22
23
|
export const FONT_SIZE_ADJUSTMENT = 0.25;
|
23
|
-
export const DEFAULT_OPACITY = 1;
|
package/src/text/propPanel.ts
CHANGED
@@ -23,8 +23,8 @@ import {
|
|
23
23
|
DEFAULT_DYNAMIC_MAX_FONT_SIZE,
|
24
24
|
ALIGN_RIGHT,
|
25
25
|
ALIGN_CENTER,
|
26
|
-
DEFAULT_OPACITY,
|
27
26
|
} from './constants.js';
|
27
|
+
import { DEFAULT_OPACITY, HEX_COLOR_PATTERN } from '../constants.js';
|
28
28
|
|
29
29
|
const UseDynamicFontSize = (props: PropPanelWidgetProps) => {
|
30
30
|
const { rootElement, changeSchemas, activeSchema, i18n } = props;
|
@@ -152,8 +152,7 @@ export const propPanel: PropPanel<TextSchema> = {
|
|
152
152
|
widget: 'color',
|
153
153
|
rules: [
|
154
154
|
{
|
155
|
-
|
156
|
-
pattern: '^#(?:[A-Fa-f0-9]{3,4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$',
|
155
|
+
pattern: HEX_COLOR_PATTERN,
|
157
156
|
message: 'Please enter a valid hex color code.',
|
158
157
|
},
|
159
158
|
],
|
@@ -164,8 +163,7 @@ export const propPanel: PropPanel<TextSchema> = {
|
|
164
163
|
widget: 'color',
|
165
164
|
rules: [
|
166
165
|
{
|
167
|
-
|
168
|
-
pattern: '^#(?:[A-Fa-f0-9]{3,4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$',
|
166
|
+
pattern: HEX_COLOR_PATTERN,
|
169
167
|
message: 'Please enter a valid hex color code.',
|
170
168
|
},
|
171
169
|
],
|
package/src/text/uiRender.ts
CHANGED
@@ -11,7 +11,7 @@ import {
|
|
11
11
|
DEFAULT_LINE_HEIGHT,
|
12
12
|
DEFAULT_CHARACTER_SPACING,
|
13
13
|
DEFAULT_FONT_COLOR,
|
14
|
-
|
14
|
+
PLACEHOLDER_FONT_COLOR,
|
15
15
|
} from './constants.js';
|
16
16
|
import {
|
17
17
|
calculateDynamicFontSize,
|
@@ -19,6 +19,7 @@ import {
|
|
19
19
|
getBrowserVerticalFontAdjustments,
|
20
20
|
} from './helper.js';
|
21
21
|
import { addAlphaToHex } from '../renderUtils.js';
|
22
|
+
import { DEFAULT_OPACITY } from '../constants.js';
|
22
23
|
|
23
24
|
const mapVerticalAlignToFlex = (verticalAlignmentValue: string | undefined) => {
|
24
25
|
switch (verticalAlignmentValue) {
|
@@ -64,14 +65,15 @@ export const uiRender = async (arg: UIRenderProps<TextSchema>) => {
|
|
64
65
|
const font = options?.font || getDefaultFont();
|
65
66
|
|
66
67
|
let dynamicFontSize: undefined | number = undefined;
|
68
|
+
const getCdfArg = (v: string) => ({
|
69
|
+
textSchema: schema,
|
70
|
+
font,
|
71
|
+
value: v,
|
72
|
+
startingFontSize: dynamicFontSize,
|
73
|
+
_cache,
|
74
|
+
});
|
67
75
|
if (schema.dynamicFontSize && value) {
|
68
|
-
dynamicFontSize = await calculateDynamicFontSize(
|
69
|
-
textSchema: schema,
|
70
|
-
font,
|
71
|
-
value,
|
72
|
-
startingFontSize: dynamicFontSize,
|
73
|
-
_cache,
|
74
|
-
});
|
76
|
+
dynamicFontSize = await calculateDynamicFontSize(getCdfArg(value));
|
75
77
|
}
|
76
78
|
|
77
79
|
const fontKitFont = await getFontKitFont(schema, font, _cache);
|
@@ -84,8 +86,8 @@ export const uiRender = async (arg: UIRenderProps<TextSchema>) => {
|
|
84
86
|
schema.verticalAlignment ?? DEFAULT_VERTICAL_ALIGNMENT
|
85
87
|
);
|
86
88
|
|
87
|
-
const topAdjustment = topAdj;
|
88
|
-
const bottomAdjustment = bottomAdj;
|
89
|
+
const topAdjustment = topAdj.toString();
|
90
|
+
const bottomAdjustment = bottomAdj.toString();
|
89
91
|
|
90
92
|
const container = document.createElement('div');
|
91
93
|
|
@@ -104,13 +106,14 @@ export const uiRender = async (arg: UIRenderProps<TextSchema>) => {
|
|
104
106
|
justifyContent: mapVerticalAlignToFlex(schema.verticalAlignment),
|
105
107
|
width: '100%',
|
106
108
|
height: '100%',
|
107
|
-
opacity: schema.opacity,
|
109
|
+
opacity: schema.opacity ?? DEFAULT_OPACITY,
|
108
110
|
};
|
109
111
|
Object.assign(container.style, containerStyle);
|
110
112
|
rootElement.innerHTML = '';
|
111
113
|
rootElement.appendChild(container);
|
112
114
|
|
113
|
-
const
|
115
|
+
const textBlockStyle: CSS.Properties = {
|
116
|
+
// Font formatting styles
|
114
117
|
fontFamily: schema.fontName ? `'${schema.fontName}'` : 'inherit',
|
115
118
|
color: schema.fontColor ? schema.fontColor : DEFAULT_FONT_COLOR,
|
116
119
|
fontSize: `${dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE}pt`,
|
@@ -119,45 +122,77 @@ export const uiRender = async (arg: UIRenderProps<TextSchema>) => {
|
|
119
122
|
textAlign: schema.alignment ?? DEFAULT_ALIGNMENT,
|
120
123
|
whiteSpace: 'pre-wrap',
|
121
124
|
wordBreak: 'break-word',
|
125
|
+
// Block layout styles
|
126
|
+
resize: 'none',
|
127
|
+
border: 'none',
|
128
|
+
outline: 'none',
|
129
|
+
marginBottom: bottomAdjustment + 'px',
|
130
|
+
paddingTop: topAdjustment + 'px',
|
131
|
+
backgroundColor: 'transparent',
|
122
132
|
};
|
133
|
+
const textBlock = document.createElement('div');
|
134
|
+
Object.assign(textBlock.style, textBlockStyle);
|
123
135
|
|
124
136
|
if (mode === 'form' || mode === 'designer') {
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
137
|
+
textBlock.contentEditable = 'plaintext-only';
|
138
|
+
textBlock.tabIndex = tabIndex || 0;
|
139
|
+
textBlock.innerText = value;
|
140
|
+
textBlock.addEventListener('blur', (e: Event) => {
|
141
|
+
onChange && onChange((e.target as HTMLDivElement).innerText);
|
142
|
+
stopEditing && stopEditing();
|
143
|
+
});
|
144
|
+
|
145
|
+
if (schema.dynamicFontSize) {
|
146
|
+
textBlock.addEventListener('keyup', () => {
|
147
|
+
setTimeout(() => {
|
148
|
+
void (async () => {
|
149
|
+
if (!textBlock.textContent) return;
|
150
|
+
dynamicFontSize = await calculateDynamicFontSize(getCdfArg(textBlock.textContent));
|
151
|
+
textBlock.style.fontSize = `${dynamicFontSize}pt`;
|
152
|
+
|
153
|
+
const { topAdj: newTopAdj, bottomAdj: newBottomAdj } = getBrowserVerticalFontAdjustments(
|
154
|
+
fontKitFont,
|
155
|
+
dynamicFontSize ?? schema.fontSize ?? DEFAULT_FONT_SIZE,
|
156
|
+
schema.lineHeight ?? DEFAULT_LINE_HEIGHT,
|
157
|
+
schema.verticalAlignment ?? DEFAULT_VERTICAL_ALIGNMENT
|
158
|
+
);
|
159
|
+
textBlock.style.paddingTop = newTopAdj.toString() + 'px';
|
160
|
+
textBlock.style.marginBottom = newBottomAdj.toString() + 'px';
|
161
|
+
})();
|
162
|
+
}, 0);
|
163
|
+
});
|
164
|
+
}
|
165
|
+
|
166
|
+
if (placeholder && !value) {
|
167
|
+
textBlock.innerText = placeholder;
|
168
|
+
textBlock.style.color = PLACEHOLDER_FONT_COLOR;
|
169
|
+
if (schema.dynamicFontSize) {
|
170
|
+
const fontSize = await calculateDynamicFontSize(getCdfArg(placeholder));
|
171
|
+
textBlock.style.fontSize = `${fontSize}pt`;
|
172
|
+
}
|
173
|
+
textBlock.addEventListener('focus', () => {
|
174
|
+
if (textBlock.innerText === placeholder) {
|
175
|
+
textBlock.innerText = '';
|
176
|
+
textBlock.style.color = schema.fontColor ?? DEFAULT_FONT_COLOR;
|
177
|
+
}
|
178
|
+
});
|
179
|
+
}
|
180
|
+
|
181
|
+
container.appendChild(textBlock);
|
182
|
+
|
148
183
|
if (mode === 'designer') {
|
149
|
-
|
150
|
-
|
184
|
+
textBlock.focus();
|
185
|
+
|
186
|
+
// Set the focus to the end of the editable element when you focus, as we would for a textarea
|
187
|
+
const selection = window.getSelection();
|
188
|
+
const range = document.createRange();
|
189
|
+
range.selectNodeContents(textBlock);
|
190
|
+
range.collapse(false); // Collapse range to the end
|
191
|
+
selection?.removeAllRanges();
|
192
|
+
selection?.addRange(range);
|
151
193
|
}
|
152
194
|
} else {
|
153
|
-
|
154
|
-
const divStyle: CSS.Properties = {
|
155
|
-
...fontStyles,
|
156
|
-
marginBottom: bottomAdjustment + 'px',
|
157
|
-
paddingTop: topAdjustment + 'px',
|
158
|
-
};
|
159
|
-
Object.assign(div.style, divStyle);
|
160
|
-
div.innerHTML = value
|
195
|
+
textBlock.innerHTML = value
|
161
196
|
.split('')
|
162
197
|
.map(
|
163
198
|
(l: string, i: number) =>
|
@@ -167,6 +202,6 @@ export const uiRender = async (arg: UIRenderProps<TextSchema>) => {
|
|
167
202
|
)
|
168
203
|
.join('');
|
169
204
|
|
170
|
-
container.appendChild(
|
205
|
+
container.appendChild(textBlock);
|
171
206
|
}
|
172
207
|
};
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/image/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,CAAC,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../src/image/helper.ts"],"names":[],"mappings":""}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/image/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../src/image/helper.ts"],"names":[],"mappings":""}
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare const DEFAULT_OPACITY = 1;
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
package/src/image/constants.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export const DEFAULT_OPACITY = 1;
|
package/src/image/helper.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|