@contrail/documents 2.1.0-alpha.ab97680 → 2.1.0-alpha.afeb3fa
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/CHANGELOG.md +0 -10
- package/lib/containers/document-container-index.d.ts +4 -7
- package/lib/containers/document-container-index.js +6 -22
- package/lib/containers/document-container.service.js +0 -1
- package/lib/util/dynamic-text/dynamic-text-util.d.ts +1 -1
- package/lib/util/dynamic-text/dynamic-text-util.js +15 -14
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -20,16 +20,6 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
20
20
|
- `SECTION_ELEMENT_TYPE`, `FRAME_ELEMENT_TYPE` and `SHAPE_ELEMENT_TYPES` in
|
|
21
21
|
`document-element-constants`, so the rule above has one definition rather than one per app.
|
|
22
22
|
|
|
23
|
-
### Changed (breaking)
|
|
24
|
-
|
|
25
|
-
- `isContainerBinding()` becomes `DynamicTextUtil.takesValueFromContainer()`. Same rule, named for
|
|
26
|
-
what it decides: whether the binding's value comes from the container rather than a type property.
|
|
27
|
-
|
|
28
|
-
### Fixed
|
|
29
|
-
|
|
30
|
-
- `DynamicTextUtil.calculateSize` threw on an element that reached it without a `size`, which on
|
|
31
|
-
the server failed the read for the whole document. It now measures from a zero size instead.
|
|
32
|
-
|
|
33
23
|
### Changed
|
|
34
24
|
|
|
35
25
|
- `DocumentElementFactory.getBoundingClientRect` multiplies the measured size by the element's
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PositionDefinition } from '../types';
|
|
2
2
|
import { ContainerElementType } from './container-kind';
|
|
3
3
|
import { DocumentContainer } from './document-container';
|
|
4
4
|
export declare class DocumentContainerIndex {
|
|
5
5
|
private readonly data;
|
|
6
6
|
constructor(data: {
|
|
7
|
-
documentElementsById: Map<string, DocumentElement>;
|
|
8
7
|
containersById: Map<string, DocumentContainer>;
|
|
9
8
|
containerPathsByDocumentElementId: Map<string, Map<string, string[]>>;
|
|
10
9
|
memberIdsByContainerId: Map<string, string[]>;
|
|
@@ -12,13 +11,11 @@ export declare class DocumentContainerIndex {
|
|
|
12
11
|
});
|
|
13
12
|
getContainer(containerId: string): DocumentContainer | null;
|
|
14
13
|
containersOf(documentElementId: string, elementType: ContainerElementType): DocumentContainer[];
|
|
15
|
-
containerIdsOf(documentElementId: string, elementType: ContainerElementType):
|
|
14
|
+
containerIdsOf(documentElementId: string, elementType: ContainerElementType): string[];
|
|
16
15
|
innermostContainerIdOf(documentElementId: string, elementType: ContainerElementType): string | null;
|
|
17
|
-
memberIdsOf(containerId: string):
|
|
18
|
-
|
|
19
|
-
containerPathAtPoint(point: PositionDefinition, elementType: ContainerElementType): readonly string[];
|
|
16
|
+
memberIdsOf(containerId: string): string[];
|
|
17
|
+
containerPathAtPoint(point: PositionDefinition, elementType: ContainerElementType): string[];
|
|
20
18
|
maxDepth(elementType: ContainerElementType): number;
|
|
21
19
|
private containersOfType;
|
|
22
|
-
private resolveAll;
|
|
23
20
|
private containerPath;
|
|
24
21
|
}
|
|
@@ -11,7 +11,9 @@ class DocumentContainerIndex {
|
|
|
11
11
|
return (_a = this.data.containersById.get(containerId)) !== null && _a !== void 0 ? _a : null;
|
|
12
12
|
}
|
|
13
13
|
containersOf(documentElementId, elementType) {
|
|
14
|
-
return this.
|
|
14
|
+
return this.containerIdsOf(documentElementId, elementType)
|
|
15
|
+
.map((containerId) => this.data.containersById.get(containerId))
|
|
16
|
+
.filter(Boolean);
|
|
15
17
|
}
|
|
16
18
|
containerIdsOf(documentElementId, elementType) {
|
|
17
19
|
return this.containerPath(documentElementId, elementType);
|
|
@@ -24,16 +26,6 @@ class DocumentContainerIndex {
|
|
|
24
26
|
var _a;
|
|
25
27
|
return (_a = this.data.memberIdsByContainerId.get(containerId)) !== null && _a !== void 0 ? _a : [];
|
|
26
28
|
}
|
|
27
|
-
memberDocumentElementsOf(containerId) {
|
|
28
|
-
const members = [];
|
|
29
|
-
for (const memberId of this.memberIdsOf(containerId)) {
|
|
30
|
-
const member = this.data.documentElementsById.get(memberId);
|
|
31
|
-
if (member) {
|
|
32
|
-
members.push(member);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return members;
|
|
36
|
-
}
|
|
37
29
|
containerPathAtPoint(point, elementType) {
|
|
38
30
|
const covering = this.containersOfType(elementType).filter((container) => (0, document_container_1.containsPoint)(container.box, point));
|
|
39
31
|
return (0, document_container_1.topmostPerDepth)(covering).map((container) => container.id);
|
|
@@ -43,17 +35,9 @@ class DocumentContainerIndex {
|
|
|
43
35
|
}
|
|
44
36
|
containersOfType(elementType) {
|
|
45
37
|
var _a;
|
|
46
|
-
return
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const containers = [];
|
|
50
|
-
for (const containerId of containerIds) {
|
|
51
|
-
const container = this.data.containersById.get(containerId);
|
|
52
|
-
if (container) {
|
|
53
|
-
containers.push(container);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return containers;
|
|
38
|
+
return ((_a = this.data.containerIdsByElementType.get(elementType)) !== null && _a !== void 0 ? _a : [])
|
|
39
|
+
.map((containerId) => this.data.containersById.get(containerId))
|
|
40
|
+
.filter(Boolean);
|
|
57
41
|
}
|
|
58
42
|
containerPath(documentElementId, elementType) {
|
|
59
43
|
var _a, _b;
|
|
@@ -37,7 +37,6 @@ class DocumentContainerService {
|
|
|
37
37
|
containerPathsByDocumentElementId.set(documentElementId, pathsByElementType);
|
|
38
38
|
}
|
|
39
39
|
return new document_container_index_1.DocumentContainerIndex({
|
|
40
|
-
documentElementsById: new Map(measuredDocumentElements.map((measured) => [measured.documentElement.id, measured.documentElement])),
|
|
41
40
|
containersById,
|
|
42
41
|
containerPathsByDocumentElementId,
|
|
43
42
|
memberIdsByContainerId,
|
|
@@ -48,8 +48,8 @@ export declare const HARD_CODED_TEXT: {
|
|
|
48
48
|
'section.itemOptionCount': string;
|
|
49
49
|
'section.colorCount': string;
|
|
50
50
|
};
|
|
51
|
+
export declare function isContainerBinding(bindingProperty: string | null | undefined): boolean;
|
|
51
52
|
export declare class DynamicTextUtil {
|
|
52
|
-
static takesValueFromContainer(bindingProperty: string | null | undefined): boolean;
|
|
53
53
|
static getDynamicTextValue(dynamicTextElement: DocumentElement, property: TypeProperty, propertyLevel: PropertyLevel, container: DynamicTextContainer | null, componentModels: any[], ownerReferenceModel?: any): string;
|
|
54
54
|
static calculateSize(dynamicTextElement: DocumentElement, entityType: any, text: string): import("../..").SizeDefinition;
|
|
55
55
|
static getTextFromFrameMemberValues(displayFunction: string, property: any, memberValues: any[]): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DynamicTextUtil = exports.HARD_CODED_TEXT = exports.CLICK_TO_CONFIGURE = exports.MOVE_TO_SECTION_TEXT = exports.MOVE_TO_FRAME_TEXT = exports.DynamicTextDisplayFunction = exports.DYNAMIC_TEXT_DATA_SOURCE = void 0;
|
|
4
|
+
exports.isContainerBinding = isContainerBinding;
|
|
4
5
|
const types_1 = require("@contrail/types");
|
|
5
6
|
const util_1 = require("@contrail/util");
|
|
6
7
|
const document_util_1 = require("@contrail/document-util");
|
|
@@ -50,14 +51,14 @@ exports.HARD_CODED_TEXT = {
|
|
|
50
51
|
};
|
|
51
52
|
const CONTAINER_PROPERTY_SLUGS = ['name', 'count', 'itemFamilyCount', 'itemOptionCount', 'colorCount'];
|
|
52
53
|
const CONTAINER_SOURCES = [DYNAMIC_TEXT_DATA_SOURCE.FRAME, DYNAMIC_TEXT_DATA_SOURCE.SECTION];
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
const [entityType, propertySlug] = bindingProperty.split('.');
|
|
59
|
-
return CONTAINER_SOURCES.includes(entityType) && CONTAINER_PROPERTY_SLUGS.includes(propertySlug);
|
|
54
|
+
function isContainerBinding(bindingProperty) {
|
|
55
|
+
if (!bindingProperty) {
|
|
56
|
+
return false;
|
|
60
57
|
}
|
|
58
|
+
const [entityType, propertySlug] = bindingProperty.split('.');
|
|
59
|
+
return CONTAINER_SOURCES.includes(entityType) && CONTAINER_PROPERTY_SLUGS.includes(propertySlug);
|
|
60
|
+
}
|
|
61
|
+
class DynamicTextUtil {
|
|
61
62
|
static getDynamicTextValue(dynamicTextElement, property, propertyLevel, container, componentModels, ownerReferenceModel = null) {
|
|
62
63
|
var _a, _b, _c, _d;
|
|
63
64
|
if (!dynamicTextElement.propertyBindings || !dynamicTextElement.propertyBindings.text) {
|
|
@@ -149,12 +150,12 @@ class DynamicTextUtil {
|
|
|
149
150
|
return text;
|
|
150
151
|
}
|
|
151
152
|
static calculateSize(dynamicTextElement, entityType, text) {
|
|
152
|
-
var _a, _b, _c, _d
|
|
153
|
-
let size =
|
|
154
|
-
const fontFamily = (
|
|
155
|
-
const fontSize = (
|
|
156
|
-
? (
|
|
157
|
-
: document_util_1.DocumentStyleUtil.getFirstFontSize(dynamicTextElement === null || dynamicTextElement === void 0 ? void 0 : dynamicTextElement.text, true))) !== null &&
|
|
153
|
+
var _a, _b, _c, _d;
|
|
154
|
+
let size = dynamicTextElement.size;
|
|
155
|
+
const fontFamily = (_a = document_util_1.DocumentStyleUtil.getFirstFontFamily(dynamicTextElement === null || dynamicTextElement === void 0 ? void 0 : dynamicTextElement.text)) !== null && _a !== void 0 ? _a : document_util_1.DEFAULT_TEXT_FONT_FAMILY;
|
|
156
|
+
const fontSize = (_d = (dynamicTextElement.isTextTool
|
|
157
|
+
? (_c = (_b = dynamicTextElement.style) === null || _b === void 0 ? void 0 : _b.font) === null || _c === void 0 ? void 0 : _c.size
|
|
158
|
+
: document_util_1.DocumentStyleUtil.getFirstFontSize(dynamicTextElement === null || dynamicTextElement === void 0 ? void 0 : dynamicTextElement.text, true))) !== null && _d !== void 0 ? _d : document_util_1.DEFAULT_TEXT_FONT_SIZE;
|
|
158
159
|
const fontSizePx = document_util_1.DocumentStyleUtil.toPx(fontSize, 4);
|
|
159
160
|
const padding = dynamicTextElement.isTextTool ? document_util_1.TEXT_TOOL_PADDING : document_util_1.TEXT_BOX_PADDING;
|
|
160
161
|
const bold = document_util_1.DocumentStyleUtil.isBold(dynamicTextElement === null || dynamicTextElement === void 0 ? void 0 : dynamicTextElement.text, fontFamily);
|
|
@@ -168,7 +169,7 @@ class DynamicTextUtil {
|
|
|
168
169
|
italic,
|
|
169
170
|
};
|
|
170
171
|
if (!dynamicTextElement.isTextTool) {
|
|
171
|
-
measureTextSettings.width = size.width - padding * 2;
|
|
172
|
+
measureTextSettings.width = dynamicTextElement.size.width - padding * 2;
|
|
172
173
|
}
|
|
173
174
|
try {
|
|
174
175
|
const dimensions = document_util_1.DocumentTextUtil.measureText(text, measureTextSettings);
|