@itwin/presentation-common 5.0.0-dev.6 → 5.0.0-dev.61
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 +47 -1
- package/Ruleset.schema.json +3 -258
- package/lib/cjs/presentation-common/AsyncTasks.d.ts +4 -4
- package/lib/cjs/presentation-common/AsyncTasks.d.ts.map +1 -1
- package/lib/cjs/presentation-common/AsyncTasks.js +5 -6
- package/lib/cjs/presentation-common/AsyncTasks.js.map +1 -1
- package/lib/cjs/presentation-common/EC.d.ts +36 -80
- package/lib/cjs/presentation-common/EC.d.ts.map +1 -1
- package/lib/cjs/presentation-common/EC.js +1 -97
- package/lib/cjs/presentation-common/EC.js.map +1 -1
- package/lib/cjs/presentation-common/ElementProperties.js +16 -9
- package/lib/cjs/presentation-common/ElementProperties.js.map +1 -1
- package/lib/cjs/presentation-common/KeySet.d.ts +2 -2
- package/lib/cjs/presentation-common/KeySet.d.ts.map +1 -1
- package/lib/cjs/presentation-common/KeySet.js +9 -11
- package/lib/cjs/presentation-common/KeySet.js.map +1 -1
- package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js +4 -1
- package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
- package/lib/cjs/presentation-common/LabelDefinition.d.ts +0 -48
- package/lib/cjs/presentation-common/LabelDefinition.d.ts.map +1 -1
- package/lib/cjs/presentation-common/LabelDefinition.js +1 -44
- package/lib/cjs/presentation-common/LabelDefinition.js.map +1 -1
- package/lib/cjs/presentation-common/LocalizationHelper.js +1 -0
- package/lib/cjs/presentation-common/LocalizationHelper.js.map +1 -1
- package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts +29 -8
- package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
- package/lib/cjs/presentation-common/PresentationManagerOptions.js.map +1 -1
- package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts +7 -9
- package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
- package/lib/cjs/presentation-common/PresentationRpcInterface.js +23 -19
- package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
- package/lib/cjs/presentation-common/RegisteredRuleset.d.ts +3 -2
- package/lib/cjs/presentation-common/RegisteredRuleset.d.ts.map +1 -1
- package/lib/cjs/presentation-common/RegisteredRuleset.js +9 -1
- package/lib/cjs/presentation-common/RegisteredRuleset.js.map +1 -1
- package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts +7 -7
- package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
- package/lib/cjs/presentation-common/RpcRequestsHandler.js +6 -1
- package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
- package/lib/cjs/presentation-common/RulesetVariables.d.ts +1 -46
- package/lib/cjs/presentation-common/RulesetVariables.d.ts.map +1 -1
- package/lib/cjs/presentation-common/RulesetVariables.js.map +1 -1
- package/lib/cjs/presentation-common/Update.d.ts +2 -79
- package/lib/cjs/presentation-common/Update.d.ts.map +1 -1
- package/lib/cjs/presentation-common/Update.js +1 -104
- package/lib/cjs/presentation-common/Update.js.map +1 -1
- package/lib/cjs/presentation-common/Utils.d.ts +16 -0
- package/lib/cjs/presentation-common/Utils.d.ts.map +1 -1
- package/lib/cjs/presentation-common/Utils.js +40 -0
- package/lib/cjs/presentation-common/Utils.js.map +1 -1
- package/lib/cjs/presentation-common/content/Content.d.ts +0 -7
- package/lib/cjs/presentation-common/content/Content.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Content.js +5 -10
- package/lib/cjs/presentation-common/content/Content.js.map +1 -1
- package/lib/cjs/presentation-common/content/ContentTraverser.d.ts +1 -1
- package/lib/cjs/presentation-common/content/ContentTraverser.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/ContentTraverser.js +116 -28
- package/lib/cjs/presentation-common/content/ContentTraverser.js.map +1 -1
- package/lib/cjs/presentation-common/content/Descriptor.d.ts +2 -31
- package/lib/cjs/presentation-common/content/Descriptor.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Descriptor.js +68 -22
- package/lib/cjs/presentation-common/content/Descriptor.js.map +1 -1
- package/lib/cjs/presentation-common/content/Fields.d.ts +151 -27
- package/lib/cjs/presentation-common/content/Fields.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Fields.js +264 -140
- package/lib/cjs/presentation-common/content/Fields.js.map +1 -1
- package/lib/cjs/presentation-common/content/Item.d.ts +26 -31
- package/lib/cjs/presentation-common/content/Item.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Item.js +52 -67
- package/lib/cjs/presentation-common/content/Item.js.map +1 -1
- package/lib/cjs/presentation-common/content/Property.d.ts +2 -12
- package/lib/cjs/presentation-common/content/Property.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Property.js +0 -18
- package/lib/cjs/presentation-common/content/Property.js.map +1 -1
- package/lib/cjs/presentation-common/content/PropertyValueFormatter.js +3 -0
- package/lib/cjs/presentation-common/content/PropertyValueFormatter.js.map +1 -1
- package/lib/cjs/presentation-common/content/Value.d.ts +5 -107
- package/lib/cjs/presentation-common/content/Value.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Value.js +1 -215
- package/lib/cjs/presentation-common/content/Value.js.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.d.ts +1 -22
- package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.d.ts.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js +0 -23
- package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/Key.d.ts +0 -83
- package/lib/cjs/presentation-common/hierarchy/Key.d.ts.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/Key.js +6 -24
- package/lib/cjs/presentation-common/hierarchy/Key.js.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/Node.d.ts +2 -106
- package/lib/cjs/presentation-common/hierarchy/Node.d.ts.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/Node.js +0 -99
- package/lib/cjs/presentation-common/hierarchy/Node.js.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/NodePathElement.d.ts +1 -67
- package/lib/cjs/presentation-common/hierarchy/NodePathElement.d.ts.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/NodePathElement.js +0 -117
- package/lib/cjs/presentation-common/hierarchy/NodePathElement.js.map +1 -1
- package/lib/cjs/presentation-common/rules/Rule.d.ts +0 -14
- package/lib/cjs/presentation-common/rules/Rule.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/Rule.js.map +1 -1
- package/lib/cjs/presentation-common/rules/content/ContentSpecification.d.ts +0 -7
- package/lib/cjs/presentation-common/rules/content/ContentSpecification.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/content/ContentSpecification.js.map +1 -1
- package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts +1 -5
- package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
- package/lib/cjs/presentation-common/rules/customization/GroupingRule.d.ts +2 -28
- package/lib/cjs/presentation-common/rules/customization/GroupingRule.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/customization/GroupingRule.js +1 -15
- package/lib/cjs/presentation-common/rules/customization/GroupingRule.js.map +1 -1
- package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts +2 -0
- package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
- package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts +0 -9
- package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
- package/lib/cjs/presentation-common.d.ts +1 -5
- package/lib/cjs/presentation-common.d.ts.map +1 -1
- package/lib/cjs/presentation-common.js +5 -5
- package/lib/cjs/presentation-common.js.map +1 -1
- package/lib/esm/presentation-common/AsyncTasks.d.ts +4 -4
- package/lib/esm/presentation-common/AsyncTasks.d.ts.map +1 -1
- package/lib/esm/presentation-common/AsyncTasks.js +5 -6
- package/lib/esm/presentation-common/AsyncTasks.js.map +1 -1
- package/lib/esm/presentation-common/EC.d.ts +36 -80
- package/lib/esm/presentation-common/EC.d.ts.map +1 -1
- package/lib/esm/presentation-common/EC.js +0 -96
- package/lib/esm/presentation-common/EC.js.map +1 -1
- package/lib/esm/presentation-common/ElementProperties.js +16 -9
- package/lib/esm/presentation-common/ElementProperties.js.map +1 -1
- package/lib/esm/presentation-common/KeySet.d.ts +2 -2
- package/lib/esm/presentation-common/KeySet.d.ts.map +1 -1
- package/lib/esm/presentation-common/KeySet.js +9 -11
- package/lib/esm/presentation-common/KeySet.js.map +1 -1
- package/lib/esm/presentation-common/KoqPropertyValueFormatter.js +5 -2
- package/lib/esm/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
- package/lib/esm/presentation-common/LabelDefinition.d.ts +0 -48
- package/lib/esm/presentation-common/LabelDefinition.d.ts.map +1 -1
- package/lib/esm/presentation-common/LabelDefinition.js +0 -43
- package/lib/esm/presentation-common/LabelDefinition.js.map +1 -1
- package/lib/esm/presentation-common/LocalizationHelper.js +1 -0
- package/lib/esm/presentation-common/LocalizationHelper.js.map +1 -1
- package/lib/esm/presentation-common/PresentationManagerOptions.d.ts +29 -8
- package/lib/esm/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
- package/lib/esm/presentation-common/PresentationManagerOptions.js.map +1 -1
- package/lib/esm/presentation-common/PresentationRpcInterface.d.ts +7 -9
- package/lib/esm/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
- package/lib/esm/presentation-common/PresentationRpcInterface.js +23 -19
- package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
- package/lib/esm/presentation-common/RegisteredRuleset.d.ts +3 -2
- package/lib/esm/presentation-common/RegisteredRuleset.d.ts.map +1 -1
- package/lib/esm/presentation-common/RegisteredRuleset.js +9 -1
- package/lib/esm/presentation-common/RegisteredRuleset.js.map +1 -1
- package/lib/esm/presentation-common/RpcRequestsHandler.d.ts +7 -7
- package/lib/esm/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
- package/lib/esm/presentation-common/RpcRequestsHandler.js +6 -1
- package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
- package/lib/esm/presentation-common/RulesetVariables.d.ts +1 -46
- package/lib/esm/presentation-common/RulesetVariables.d.ts.map +1 -1
- package/lib/esm/presentation-common/RulesetVariables.js.map +1 -1
- package/lib/esm/presentation-common/Update.d.ts +2 -79
- package/lib/esm/presentation-common/Update.d.ts.map +1 -1
- package/lib/esm/presentation-common/Update.js +0 -103
- package/lib/esm/presentation-common/Update.js.map +1 -1
- package/lib/esm/presentation-common/Utils.d.ts +16 -0
- package/lib/esm/presentation-common/Utils.d.ts.map +1 -1
- package/lib/esm/presentation-common/Utils.js +38 -0
- package/lib/esm/presentation-common/Utils.js.map +1 -1
- package/lib/esm/presentation-common/content/Content.d.ts +0 -7
- package/lib/esm/presentation-common/content/Content.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Content.js +5 -10
- package/lib/esm/presentation-common/content/Content.js.map +1 -1
- package/lib/esm/presentation-common/content/ContentTraverser.d.ts +1 -1
- package/lib/esm/presentation-common/content/ContentTraverser.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/ContentTraverser.js +117 -29
- package/lib/esm/presentation-common/content/ContentTraverser.js.map +1 -1
- package/lib/esm/presentation-common/content/Descriptor.d.ts +2 -31
- package/lib/esm/presentation-common/content/Descriptor.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Descriptor.js +68 -22
- package/lib/esm/presentation-common/content/Descriptor.js.map +1 -1
- package/lib/esm/presentation-common/content/Fields.d.ts +151 -27
- package/lib/esm/presentation-common/content/Fields.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Fields.js +264 -140
- package/lib/esm/presentation-common/content/Fields.js.map +1 -1
- package/lib/esm/presentation-common/content/Item.d.ts +26 -31
- package/lib/esm/presentation-common/content/Item.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Item.js +52 -67
- package/lib/esm/presentation-common/content/Item.js.map +1 -1
- package/lib/esm/presentation-common/content/Property.d.ts +2 -12
- package/lib/esm/presentation-common/content/Property.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Property.js +0 -18
- package/lib/esm/presentation-common/content/Property.js.map +1 -1
- package/lib/esm/presentation-common/content/PropertyValueFormatter.js +3 -0
- package/lib/esm/presentation-common/content/PropertyValueFormatter.js.map +1 -1
- package/lib/esm/presentation-common/content/Value.d.ts +5 -107
- package/lib/esm/presentation-common/content/Value.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Value.js +0 -214
- package/lib/esm/presentation-common/content/Value.js.map +1 -1
- package/lib/esm/presentation-common/hierarchy/HierarchyLevel.d.ts +1 -22
- package/lib/esm/presentation-common/hierarchy/HierarchyLevel.d.ts.map +1 -1
- package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js +1 -22
- package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
- package/lib/esm/presentation-common/hierarchy/Key.d.ts +0 -83
- package/lib/esm/presentation-common/hierarchy/Key.d.ts.map +1 -1
- package/lib/esm/presentation-common/hierarchy/Key.js +6 -24
- package/lib/esm/presentation-common/hierarchy/Key.js.map +1 -1
- package/lib/esm/presentation-common/hierarchy/Node.d.ts +2 -106
- package/lib/esm/presentation-common/hierarchy/Node.d.ts.map +1 -1
- package/lib/esm/presentation-common/hierarchy/Node.js +1 -98
- package/lib/esm/presentation-common/hierarchy/Node.js.map +1 -1
- package/lib/esm/presentation-common/hierarchy/NodePathElement.d.ts +1 -67
- package/lib/esm/presentation-common/hierarchy/NodePathElement.d.ts.map +1 -1
- package/lib/esm/presentation-common/hierarchy/NodePathElement.js +1 -116
- package/lib/esm/presentation-common/hierarchy/NodePathElement.js.map +1 -1
- package/lib/esm/presentation-common/rules/Rule.d.ts +0 -14
- package/lib/esm/presentation-common/rules/Rule.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/Rule.js.map +1 -1
- package/lib/esm/presentation-common/rules/content/ContentSpecification.d.ts +0 -7
- package/lib/esm/presentation-common/rules/content/ContentSpecification.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/content/ContentSpecification.js.map +1 -1
- package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts +1 -5
- package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/customization/CustomizationRule.js.map +1 -1
- package/lib/esm/presentation-common/rules/customization/GroupingRule.d.ts +2 -28
- package/lib/esm/presentation-common/rules/customization/GroupingRule.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/customization/GroupingRule.js +0 -14
- package/lib/esm/presentation-common/rules/customization/GroupingRule.js.map +1 -1
- package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts +2 -0
- package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js.map +1 -1
- package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts +0 -9
- package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js.map +1 -1
- package/lib/esm/presentation-common.d.ts +1 -5
- package/lib/esm/presentation-common.d.ts.map +1 -1
- package/lib/esm/presentation-common.js +1 -5
- package/lib/esm/presentation-common.js.map +1 -1
- package/package.json +12 -12
- package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.d.ts +0 -45
- package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.d.ts.map +0 -1
- package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js +0 -10
- package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js.map +0 -1
- package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.d.ts +0 -30
- package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.d.ts.map +0 -1
- package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js +0 -10
- package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js.map +0 -1
- package/lib/cjs/presentation-common/rules/customization/LabelOverride.d.ts +0 -41
- package/lib/cjs/presentation-common/rules/customization/LabelOverride.d.ts.map +0 -1
- package/lib/cjs/presentation-common/rules/customization/LabelOverride.js +0 -10
- package/lib/cjs/presentation-common/rules/customization/LabelOverride.js.map +0 -1
- package/lib/cjs/presentation-common/rules/customization/StyleOverride.d.ts +0 -49
- package/lib/cjs/presentation-common/rules/customization/StyleOverride.d.ts.map +0 -1
- package/lib/cjs/presentation-common/rules/customization/StyleOverride.js +0 -10
- package/lib/cjs/presentation-common/rules/customization/StyleOverride.js.map +0 -1
- package/lib/esm/presentation-common/rules/customization/CheckBoxRule.d.ts +0 -45
- package/lib/esm/presentation-common/rules/customization/CheckBoxRule.d.ts.map +0 -1
- package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js +0 -9
- package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js.map +0 -1
- package/lib/esm/presentation-common/rules/customization/ImageIdOverride.d.ts +0 -30
- package/lib/esm/presentation-common/rules/customization/ImageIdOverride.d.ts.map +0 -1
- package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js +0 -9
- package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js.map +0 -1
- package/lib/esm/presentation-common/rules/customization/LabelOverride.d.ts +0 -41
- package/lib/esm/presentation-common/rules/customization/LabelOverride.d.ts.map +0 -1
- package/lib/esm/presentation-common/rules/customization/LabelOverride.js +0 -9
- package/lib/esm/presentation-common/rules/customization/LabelOverride.js.map +0 -1
- package/lib/esm/presentation-common/rules/customization/StyleOverride.d.ts +0 -49
- package/lib/esm/presentation-common/rules/customization/StyleOverride.d.ts.map +0 -1
- package/lib/esm/presentation-common/rules/customization/StyleOverride.js +0 -9
- package/lib/esm/presentation-common/rules/customization/StyleOverride.js.map +0 -1
|
@@ -18,66 +18,13 @@ export var InstanceKey;
|
|
|
18
18
|
return lhs.id.localeCompare(rhs.id);
|
|
19
19
|
}
|
|
20
20
|
InstanceKey.compare = compare;
|
|
21
|
-
/**
|
|
22
|
-
* Serialize [[InstanceKey]] to JSON
|
|
23
|
-
* @deprecated in 3.x. Use [[InstanceKey]].
|
|
24
|
-
*/
|
|
25
|
-
// istanbul ignore next
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
27
|
-
function toJSON(key) {
|
|
28
|
-
return { ...key };
|
|
29
|
-
}
|
|
30
|
-
InstanceKey.toJSON = toJSON;
|
|
31
|
-
/**
|
|
32
|
-
* Deserialize [[InstanceKey]] from JSON
|
|
33
|
-
* @deprecated in 3.x. Use [[InstanceKey]].
|
|
34
|
-
*/
|
|
35
|
-
// istanbul ignore next
|
|
36
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
37
|
-
function fromJSON(json) {
|
|
38
|
-
return { ...json };
|
|
39
|
-
}
|
|
40
|
-
InstanceKey.fromJSON = fromJSON;
|
|
41
21
|
})(InstanceKey || (InstanceKey = {}));
|
|
42
|
-
/** @public */
|
|
43
|
-
export var ClassInfo;
|
|
44
|
-
(function (ClassInfo) {
|
|
45
|
-
/**
|
|
46
|
-
* Serialize [[ClassInfo]] to JSON
|
|
47
|
-
* @deprecated in 3.x. Use [[ClassInfo]].
|
|
48
|
-
*/
|
|
49
|
-
// istanbul ignore next
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
51
|
-
function toJSON(info) {
|
|
52
|
-
return { ...info };
|
|
53
|
-
}
|
|
54
|
-
ClassInfo.toJSON = toJSON;
|
|
55
|
-
/**
|
|
56
|
-
* Deserialize [[ClassInfo]] from JSON
|
|
57
|
-
* @deprecated in 3.x. Use [[ClassInfo]].
|
|
58
|
-
*/
|
|
59
|
-
// istanbul ignore next
|
|
60
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
61
|
-
function fromJSON(json) {
|
|
62
|
-
return { ...json };
|
|
63
|
-
}
|
|
64
|
-
ClassInfo.fromJSON = fromJSON;
|
|
65
|
-
})(ClassInfo || (ClassInfo = {}));
|
|
66
22
|
/**
|
|
67
23
|
* Contains utilities for working with objects of [[NavigationPropertyInfo]] type.
|
|
68
24
|
* @public
|
|
69
25
|
*/
|
|
70
26
|
export var NavigationPropertyInfo;
|
|
71
27
|
(function (NavigationPropertyInfo) {
|
|
72
|
-
/**
|
|
73
|
-
* Serialize [[NavigationPropertyInfo]] to JSON
|
|
74
|
-
* @deprecated in 3.x. Use [[toCompressedJSON]].
|
|
75
|
-
*/
|
|
76
|
-
// istanbul ignore next
|
|
77
|
-
function toJSON(info) {
|
|
78
|
-
return { ...info };
|
|
79
|
-
}
|
|
80
|
-
NavigationPropertyInfo.toJSON = toJSON;
|
|
81
28
|
/** Serialize [[NavigationPropertyInfo]] to compressed JSON */
|
|
82
29
|
function toCompressedJSON(navigationPropertyInfo, classesMap) {
|
|
83
30
|
const { id: relationshipId, ...relationshipLeftOverInfo } = navigationPropertyInfo.classInfo;
|
|
@@ -91,15 +38,6 @@ export var NavigationPropertyInfo;
|
|
|
91
38
|
};
|
|
92
39
|
}
|
|
93
40
|
NavigationPropertyInfo.toCompressedJSON = toCompressedJSON;
|
|
94
|
-
/**
|
|
95
|
-
* Deserialize [[NavigationPropertyInfo]] from JSON
|
|
96
|
-
* @deprecated in 3.x. Use [[fromCompressedJSON]].
|
|
97
|
-
*/
|
|
98
|
-
// istanbul ignore next
|
|
99
|
-
function fromJSON(json) {
|
|
100
|
-
return { ...json };
|
|
101
|
-
}
|
|
102
|
-
NavigationPropertyInfo.fromJSON = fromJSON;
|
|
103
41
|
/** Deserialize [[NavigationPropertyInfo]] from compressed JSON */
|
|
104
42
|
function fromCompressedJSON(compressedNavigationPropertyInfoJSON, classesMap) {
|
|
105
43
|
return {
|
|
@@ -113,15 +51,6 @@ export var NavigationPropertyInfo;
|
|
|
113
51
|
/** @public */
|
|
114
52
|
export var PropertyInfo;
|
|
115
53
|
(function (PropertyInfo) {
|
|
116
|
-
/**
|
|
117
|
-
* Serialize [[PropertyInfo]] to JSON
|
|
118
|
-
* @deprecated in 3.x. Use [[PropertyInfo]].
|
|
119
|
-
*/
|
|
120
|
-
// istanbul ignore next
|
|
121
|
-
function toJSON(info) {
|
|
122
|
-
return { ...info };
|
|
123
|
-
}
|
|
124
|
-
PropertyInfo.toJSON = toJSON;
|
|
125
54
|
/** Serialize [[PropertyInfo]] to compressed JSON */
|
|
126
55
|
function toCompressedJSON(propertyInfo, classesMap) {
|
|
127
56
|
const { navigationPropertyInfo, ...leftOverPropertyInfo } = propertyInfo;
|
|
@@ -134,27 +63,10 @@ export var PropertyInfo;
|
|
|
134
63
|
};
|
|
135
64
|
}
|
|
136
65
|
PropertyInfo.toCompressedJSON = toCompressedJSON;
|
|
137
|
-
/**
|
|
138
|
-
* Deserialize [[PropertyInfo]] from JSON
|
|
139
|
-
* @deprecated in 3.x. Use [[PropertyInfo]].
|
|
140
|
-
*/
|
|
141
|
-
// istanbul ignore next
|
|
142
|
-
function fromJSON(json) {
|
|
143
|
-
return { ...json };
|
|
144
|
-
}
|
|
145
|
-
PropertyInfo.fromJSON = fromJSON;
|
|
146
66
|
})(PropertyInfo || (PropertyInfo = {}));
|
|
147
67
|
/** @public */
|
|
148
68
|
export var RelatedClassInfo;
|
|
149
69
|
(function (RelatedClassInfo) {
|
|
150
|
-
/**
|
|
151
|
-
* Serialize [[RelatedClassInfo]] to JSON
|
|
152
|
-
* @deprecated in 3.x. Use [[RelatedClassInfo]].
|
|
153
|
-
*/
|
|
154
|
-
function toJSON(info) {
|
|
155
|
-
return { ...info };
|
|
156
|
-
}
|
|
157
|
-
RelatedClassInfo.toJSON = toJSON;
|
|
158
70
|
/** Serialize [[RelatedClassInfo]] to compressed JSON */
|
|
159
71
|
function toCompressedJSON(classInfo, classesMap) {
|
|
160
72
|
const { id: sourceId, ...sourceLeftOverInfo } = classInfo.sourceClassInfo;
|
|
@@ -171,14 +83,6 @@ export var RelatedClassInfo;
|
|
|
171
83
|
};
|
|
172
84
|
}
|
|
173
85
|
RelatedClassInfo.toCompressedJSON = toCompressedJSON;
|
|
174
|
-
/**
|
|
175
|
-
* Deserialize [[RelatedClassInfo]] from JSON
|
|
176
|
-
* @deprecated in 3.x. Use [[RelatedClassInfo]].
|
|
177
|
-
*/
|
|
178
|
-
function fromJSON(json) {
|
|
179
|
-
return { ...json };
|
|
180
|
-
}
|
|
181
|
-
RelatedClassInfo.fromJSON = fromJSON;
|
|
182
86
|
/** Deserialize [[RelatedClassInfo]] from compressed JSON */
|
|
183
87
|
function fromCompressedJSON(json, classesMap) {
|
|
184
88
|
assert(classesMap.hasOwnProperty(json.sourceClassInfo));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EC.js","sourceRoot":"","sources":["../../../src/presentation-common/EC.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { FormatProps } from \"@itwin/core-quantity\";\r\nimport { PartialBy } from \"./Utils\";\r\n\r\n/**\r\n * Type of an ECClass ID.\r\n * @public\r\n */\r\nexport type ClassId = Id64String;\r\n\r\n/**\r\n * Type of an ECInstance ID.\r\n * @public\r\n */\r\nexport type InstanceId = Id64String;\r\n\r\n/**\r\n * A key that uniquely identifies an instance in an iModel\r\n * @public\r\n */\r\nexport interface InstanceKey {\r\n /** Full class name in format `SchemaName:ClassName` */\r\n className: string;\r\n /** ECInstance ID */\r\n id: InstanceId;\r\n}\r\n\r\n/** @public */\r\nexport namespace InstanceKey {\r\n /** Compare 2 instance keys */\r\n export function compare(lhs: InstanceKey, rhs: InstanceKey): number {\r\n const classNameCompare = lhs.className.localeCompare(rhs.className);\r\n if (classNameCompare !== 0) {\r\n return classNameCompare;\r\n }\r\n return lhs.id.localeCompare(rhs.id);\r\n }\r\n\r\n /**\r\n * Serialize [[InstanceKey]] to JSON\r\n * @deprecated in 3.x. Use [[InstanceKey]].\r\n */\r\n // istanbul ignore next\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n export function toJSON(key: InstanceKey): InstanceKeyJSON {\r\n return { ...key };\r\n }\r\n\r\n /**\r\n * Deserialize [[InstanceKey]] from JSON\r\n * @deprecated in 3.x. Use [[InstanceKey]].\r\n */\r\n // istanbul ignore next\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n export function fromJSON(json: InstanceKeyJSON) {\r\n return { ...json };\r\n }\r\n}\r\n\r\n/**\r\n * A serialized version of [[InstanceKey]]\r\n * @public\r\n * @deprecated in 3.x. Use [[InstanceKey]].\r\n */\r\nexport interface InstanceKeyJSON {\r\n className: string;\r\n id: string;\r\n}\r\n\r\n/**\r\n * Information about an ECClass\r\n * @public\r\n */\r\nexport interface ClassInfo {\r\n /** ECClass ID */\r\n id: ClassId;\r\n /** Full class name in format `SchemaName:ClassName` */\r\n name: string;\r\n /** ECClass label */\r\n label: string;\r\n}\r\n\r\n/** @public */\r\nexport namespace ClassInfo {\r\n /**\r\n * Serialize [[ClassInfo]] to JSON\r\n * @deprecated in 3.x. Use [[ClassInfo]].\r\n */\r\n // istanbul ignore next\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n export function toJSON(info: ClassInfo): ClassInfoJSON {\r\n return { ...info };\r\n }\r\n\r\n /**\r\n * Deserialize [[ClassInfo]] from JSON\r\n * @deprecated in 3.x. Use [[ClassInfo]].\r\n */\r\n // istanbul ignore next\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n export function fromJSON(json: ClassInfoJSON): ClassInfo {\r\n return { ...json };\r\n }\r\n}\r\n\r\n/**\r\n * A serialized version of [[ClassInfo]]\r\n * @public\r\n * @deprecated in 3.x. Use [[ClassInfo]].\r\n */\r\nexport interface ClassInfoJSON {\r\n id: string;\r\n name: string;\r\n label: string;\r\n}\r\n\r\n/**\r\n * A serialized and compressed version of [[ClassInfo]]\r\n * @public\r\n */\r\nexport interface CompressedClassInfoJSON {\r\n name: string;\r\n label: string;\r\n}\r\n\r\n/**\r\n * A single choice in enumeration\r\n * @public\r\n */\r\nexport interface EnumerationChoice {\r\n /** Label of the choice */\r\n label: string;\r\n /** Value of the choice */\r\n value: string | number;\r\n}\r\n\r\n/**\r\n * Enumeration information\r\n * @public\r\n */\r\nexport interface EnumerationInfo {\r\n /** Available enumeration choices */\r\n choices: EnumerationChoice[];\r\n /** Is the enumeration strict (values only allowed from `choices` list) */\r\n isStrict: boolean;\r\n}\r\n\r\n/**\r\n * Kind of quantity information\r\n * @public\r\n */\r\nexport interface KindOfQuantityInfo {\r\n /** Full name of KindOfQuantity in format `SchemaName:KindOfQuantityName` */\r\n name: string;\r\n /** Label of KindOfQuantity */\r\n label: string;\r\n /** Persistence unit full class name in format `SchemaName:UnitName`. */\r\n persistenceUnit: string;\r\n /** Active format that was used to format property value. */\r\n activeFormat?: FormatProps;\r\n}\r\n\r\n/**\r\n * A data structure for storing navigation property information.\r\n * @public\r\n */\r\nexport interface NavigationPropertyInfo {\r\n /** Information about ECProperty's relationship class */\r\n classInfo: ClassInfo;\r\n /** Is the direction of the relationship forward */\r\n isForwardRelationship: boolean;\r\n /** Information about ECProperty's target class */\r\n targetClassInfo: ClassInfo;\r\n /** Is ECProperty's target class polymorphic */\r\n isTargetPolymorphic: boolean;\r\n}\r\n\r\n/**\r\n * Contains utilities for working with objects of [[NavigationPropertyInfo]] type.\r\n * @public\r\n */\r\nexport namespace NavigationPropertyInfo {\r\n /**\r\n * Serialize [[NavigationPropertyInfo]] to JSON\r\n * @deprecated in 3.x. Use [[toCompressedJSON]].\r\n */\r\n // istanbul ignore next\r\n export function toJSON(info: NavigationPropertyInfo): NavigationPropertyInfoJSON {\r\n return { ...info };\r\n }\r\n\r\n /** Serialize [[NavigationPropertyInfo]] to compressed JSON */\r\n export function toCompressedJSON(\r\n navigationPropertyInfo: NavigationPropertyInfo,\r\n classesMap: { [id: string]: CompressedClassInfoJSON },\r\n ): NavigationPropertyInfoJSON<string> {\r\n const { id: relationshipId, ...relationshipLeftOverInfo } = navigationPropertyInfo.classInfo;\r\n const { id: targetId, ...targetLeftOverInfo } = navigationPropertyInfo.targetClassInfo;\r\n classesMap[relationshipId] = relationshipLeftOverInfo;\r\n classesMap[targetId] = targetLeftOverInfo;\r\n\r\n return {\r\n ...navigationPropertyInfo,\r\n classInfo: relationshipId,\r\n targetClassInfo: targetId,\r\n };\r\n }\r\n\r\n /**\r\n * Deserialize [[NavigationPropertyInfo]] from JSON\r\n * @deprecated in 3.x. Use [[fromCompressedJSON]].\r\n */\r\n // istanbul ignore next\r\n export function fromJSON(json: NavigationPropertyInfoJSON): NavigationPropertyInfo {\r\n return { ...json };\r\n }\r\n\r\n /** Deserialize [[NavigationPropertyInfo]] from compressed JSON */\r\n export function fromCompressedJSON(\r\n compressedNavigationPropertyInfoJSON: NavigationPropertyInfoJSON<string>,\r\n classesMap: { [id: string]: CompressedClassInfoJSON },\r\n ): NavigationPropertyInfo {\r\n return {\r\n ...compressedNavigationPropertyInfoJSON,\r\n classInfo: { id: compressedNavigationPropertyInfoJSON.classInfo, ...classesMap[compressedNavigationPropertyInfoJSON.classInfo] },\r\n targetClassInfo: { id: compressedNavigationPropertyInfoJSON.targetClassInfo, ...classesMap[compressedNavigationPropertyInfoJSON.targetClassInfo] },\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * A serialized version of [[NavigationPropertyInfo]]\r\n * @public\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-deprecated\r\nexport interface NavigationPropertyInfoJSON<TClassInfoJSON = ClassInfoJSON> {\r\n classInfo: TClassInfoJSON;\r\n isForwardRelationship: boolean;\r\n targetClassInfo: TClassInfoJSON;\r\n isTargetPolymorphic: boolean;\r\n}\r\n\r\n/**\r\n * A structure that describes an ECProperty\r\n * @public\r\n */\r\nexport interface PropertyInfo {\r\n /** Information about ECProperty class */\r\n classInfo: ClassInfo;\r\n /** Name of the ECProperty */\r\n name: string;\r\n /** Type name of the ECProperty */\r\n type: string;\r\n /** Enumeration info if the property is enumerable */\r\n enumerationInfo?: EnumerationInfo;\r\n /** Kind of quantity information, if any. */\r\n kindOfQuantity?: KindOfQuantityInfo;\r\n /** Extended type name of the ECProperty if it has one */\r\n extendedType?: string;\r\n /** Navigation property info if the field is navigation type */\r\n navigationPropertyInfo?: NavigationPropertyInfo;\r\n}\r\n\r\n/** @public */\r\nexport namespace PropertyInfo {\r\n /**\r\n * Serialize [[PropertyInfo]] to JSON\r\n * @deprecated in 3.x. Use [[PropertyInfo]].\r\n */\r\n // istanbul ignore next\r\n export function toJSON(info: PropertyInfo): PropertyInfoJSON {\r\n return { ...info };\r\n }\r\n\r\n /** Serialize [[PropertyInfo]] to compressed JSON */\r\n export function toCompressedJSON(propertyInfo: PropertyInfo, classesMap: { [id: string]: CompressedClassInfoJSON }): PropertyInfoJSON<string> {\r\n const { navigationPropertyInfo, ...leftOverPropertyInfo } = propertyInfo;\r\n const { id, ...leftOverInfo } = propertyInfo.classInfo;\r\n classesMap[id] = leftOverInfo;\r\n\r\n return {\r\n ...leftOverPropertyInfo,\r\n classInfo: propertyInfo.classInfo.id,\r\n ...(navigationPropertyInfo ? { navigationPropertyInfo: NavigationPropertyInfo.toCompressedJSON(navigationPropertyInfo, classesMap) } : undefined),\r\n };\r\n }\r\n\r\n /**\r\n * Deserialize [[PropertyInfo]] from JSON\r\n * @deprecated in 3.x. Use [[PropertyInfo]].\r\n */\r\n // istanbul ignore next\r\n export function fromJSON(json: PropertyInfoJSON): PropertyInfo {\r\n return { ...json };\r\n }\r\n}\r\n\r\n/**\r\n * A serialized version of [[PropertyInfo]]\r\n * @public\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-deprecated\r\nexport interface PropertyInfoJSON<TClassInfoJSON = ClassInfoJSON> {\r\n classInfo: TClassInfoJSON;\r\n name: string;\r\n type: string;\r\n enumerationInfo?: EnumerationInfo;\r\n kindOfQuantity?: KindOfQuantityInfo;\r\n navigationPropertyInfo?: NavigationPropertyInfoJSON<TClassInfoJSON>;\r\n}\r\n\r\n/**\r\n * A structure that describes a related class and the properties of that relationship.\r\n * @public\r\n */\r\nexport interface RelatedClassInfo {\r\n /** Information about the source ECClass */\r\n sourceClassInfo: ClassInfo;\r\n\r\n /** Information about the target ECClass */\r\n targetClassInfo: ClassInfo;\r\n\r\n /** Is target class handled polymorphically */\r\n isPolymorphicTargetClass?: boolean;\r\n\r\n /** Optionally, IDs of specific target class instances. */\r\n targetInstanceIds?: Id64String[];\r\n\r\n /** Information about the ECRelationship */\r\n relationshipInfo: ClassInfo;\r\n\r\n /** Should relationship be followed in a forward direction to access the related class. */\r\n isForwardRelationship: boolean;\r\n\r\n /** Is relationship handled polymorphically */\r\n isPolymorphicRelationship?: boolean;\r\n}\r\n\r\n/** @public */\r\nexport namespace RelatedClassInfo {\r\n /**\r\n * Serialize [[RelatedClassInfo]] to JSON\r\n * @deprecated in 3.x. Use [[RelatedClassInfo]].\r\n */\r\n export function toJSON(info: RelatedClassInfo): RelatedClassInfoJSON {\r\n return { ...info };\r\n }\r\n\r\n /** Serialize [[RelatedClassInfo]] to compressed JSON */\r\n export function toCompressedJSON(classInfo: RelatedClassInfo, classesMap: { [id: string]: CompressedClassInfoJSON }): RelatedClassInfoJSON<string> {\r\n const { id: sourceId, ...sourceLeftOverInfo } = classInfo.sourceClassInfo;\r\n const { id: targetId, ...targetLeftOverInfo } = classInfo.targetClassInfo;\r\n const { id: relationshipId, ...relationshipLeftOverInfo } = classInfo.relationshipInfo;\r\n\r\n classesMap[sourceId] = sourceLeftOverInfo;\r\n classesMap[targetId] = targetLeftOverInfo;\r\n classesMap[relationshipId] = relationshipLeftOverInfo;\r\n\r\n return {\r\n ...classInfo,\r\n sourceClassInfo: sourceId,\r\n targetClassInfo: targetId,\r\n relationshipInfo: relationshipId,\r\n };\r\n }\r\n\r\n /**\r\n * Deserialize [[RelatedClassInfo]] from JSON\r\n * @deprecated in 3.x. Use [[RelatedClassInfo]].\r\n */\r\n export function fromJSON(json: RelatedClassInfoJSON): RelatedClassInfo {\r\n return { ...json };\r\n }\r\n\r\n /** Deserialize [[RelatedClassInfo]] from compressed JSON */\r\n export function fromCompressedJSON(json: RelatedClassInfoJSON<string>, classesMap: { [id: string]: CompressedClassInfoJSON }): RelatedClassInfo {\r\n assert(classesMap.hasOwnProperty(json.sourceClassInfo));\r\n assert(classesMap.hasOwnProperty(json.targetClassInfo));\r\n assert(classesMap.hasOwnProperty(json.relationshipInfo));\r\n return {\r\n ...json,\r\n sourceClassInfo: { id: json.sourceClassInfo, ...classesMap[json.sourceClassInfo] },\r\n targetClassInfo: { id: json.targetClassInfo, ...classesMap[json.targetClassInfo] },\r\n relationshipInfo: { id: json.relationshipInfo, ...classesMap[json.relationshipInfo] },\r\n };\r\n }\r\n\r\n /** Check two [[RelatedClassInfo]] or [[StrippedRelatedClassInfo]] for equality */\r\n export function equals(lhs: RelatedClassInfo | StrippedRelatedClassInfo, rhs: RelatedClassInfo | StrippedRelatedClassInfo): boolean {\r\n return (\r\n lhs.isForwardRelationship === rhs.isForwardRelationship &&\r\n getClassName(lhs, \"source\") === getClassName(rhs, \"source\") &&\r\n getClassName(lhs, \"target\") === getClassName(rhs, \"target\") &&\r\n getClassName(lhs, \"relationship\") === getClassName(rhs, \"relationship\")\r\n );\r\n }\r\n\r\n function isStripped(info: RelatedClassInfo | StrippedRelatedClassInfo): info is StrippedRelatedClassInfo {\r\n const maybeStripped = info as StrippedRelatedClassInfo;\r\n return !!maybeStripped.relationshipName && !!maybeStripped.sourceClassName && !!maybeStripped.targetClassName;\r\n }\r\n\r\n function getClassName(info: RelatedClassInfo | StrippedRelatedClassInfo, whichClass: \"relationship\" | \"source\" | \"target\"): string {\r\n switch (whichClass) {\r\n case \"source\":\r\n return isStripped(info) ? info.sourceClassName : info.sourceClassInfo.name;\r\n case \"target\":\r\n return isStripped(info) ? info.targetClassName : info.targetClassInfo.name;\r\n case \"relationship\":\r\n return isStripped(info) ? info.relationshipName : info.relationshipInfo.name;\r\n }\r\n }\r\n\r\n /** Strip given [[RelatedClassInfo]] to [[StrippedRelatedClassInfo]] */\r\n export function strip(full: RelatedClassInfo): StrippedRelatedClassInfo {\r\n return {\r\n sourceClassName: full.sourceClassInfo.name,\r\n targetClassName: full.targetClassInfo.name,\r\n relationshipName: full.relationshipInfo.name,\r\n isForwardRelationship: full.isForwardRelationship,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * A serialized version of [[RelatedClassInfo]]\r\n * @public\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-deprecated\r\nexport interface RelatedClassInfoJSON<TClassInfoJSON = ClassInfoJSON> {\r\n sourceClassInfo: TClassInfoJSON;\r\n targetClassInfo: TClassInfoJSON;\r\n isPolymorphicTargetClass?: boolean;\r\n targetInstanceIds?: Id64String[];\r\n relationshipInfo: TClassInfoJSON;\r\n isForwardRelationship: boolean;\r\n isPolymorphicRelationship?: boolean;\r\n}\r\n\r\n/**\r\n * A structure that describes a relationship between source and target classes where\r\n * an actual ECRelationship between them is optional.\r\n * @public\r\n */\r\nexport type RelatedClassInfoWithOptionalRelationship = PartialBy<RelatedClassInfo, \"relationshipInfo\" | \"isForwardRelationship\" | \"isPolymorphicRelationship\">;\r\n\r\n/** @public */\r\nexport type RelatedClassInfoWithOptionalRelationshipJSON<TClassInfoJSON = ClassInfoJSON> = PartialBy<\r\n RelatedClassInfoJSON<TClassInfoJSON>,\r\n \"relationshipInfo\" | \"isForwardRelationship\" | \"isPolymorphicRelationship\"\r\n>;\r\n\r\n/** @public */\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport namespace RelatedClassInfoWithOptionalRelationship {\r\n /** Serialize [[RelatedClassInfoWithOptionalRelationship]] to compressed JSON */\r\n export function toCompressedJSON(\r\n classInfo: RelatedClassInfoWithOptionalRelationship,\r\n classesMap: { [id: string]: CompressedClassInfoJSON },\r\n ): RelatedClassInfoWithOptionalRelationshipJSON<string> {\r\n const { sourceClassInfo, targetClassInfo, relationshipInfo, ...otherProps } = classInfo;\r\n const { id: sourceId, ...sourceLeftOverInfo } = sourceClassInfo;\r\n const { id: targetId, ...targetLeftOverInfo } = targetClassInfo;\r\n\r\n classesMap[sourceId] = sourceLeftOverInfo;\r\n classesMap[targetId] = targetLeftOverInfo;\r\n\r\n if (relationshipInfo) {\r\n const { id: relationshipId, ...relationshipLeftOverInfo } = relationshipInfo;\r\n classesMap[relationshipId] = relationshipLeftOverInfo;\r\n }\r\n\r\n return {\r\n ...otherProps,\r\n sourceClassInfo: sourceId,\r\n targetClassInfo: targetId,\r\n ...(relationshipInfo ? { relationshipInfo: relationshipInfo.id } : undefined),\r\n };\r\n }\r\n\r\n /** Deserialize [[RelatedClassInfoWithOptionalRelationship]] from compressed JSON */\r\n export function fromCompressedJSON(\r\n json: RelatedClassInfoWithOptionalRelationshipJSON<string>,\r\n classesMap: { [id: string]: CompressedClassInfoJSON },\r\n ): RelatedClassInfoWithOptionalRelationship {\r\n const { sourceClassInfo, targetClassInfo, relationshipInfo, ...otherProps } = json;\r\n assert(classesMap.hasOwnProperty(sourceClassInfo));\r\n assert(classesMap.hasOwnProperty(targetClassInfo));\r\n if (relationshipInfo) {\r\n assert(classesMap.hasOwnProperty(relationshipInfo));\r\n }\r\n return {\r\n ...otherProps,\r\n sourceClassInfo: { id: sourceClassInfo, ...classesMap[sourceClassInfo] },\r\n targetClassInfo: { id: targetClassInfo, ...classesMap[targetClassInfo] },\r\n ...(relationshipInfo ? { relationshipInfo: { id: relationshipInfo, ...classesMap[relationshipInfo] } } : undefined),\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * A structure that describes a related class path.\r\n * @public\r\n */\r\nexport type RelationshipPath = RelatedClassInfo[];\r\n\r\n/**\r\n * Serialized [[RelationshipPath]]\r\n * @public\r\n */\r\nexport type RelationshipPathJSON<TClassInfoJSON = ClassInfoJSON> = RelatedClassInfoJSON<TClassInfoJSON>[];\r\n\r\n/** @public */\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport namespace RelationshipPath {\r\n /** Reverse direction of the given [[RelationshipPath]] */\r\n export function reverse(path: RelationshipPath): RelationshipPath {\r\n return [...path].reverse().map((step) => ({\r\n ...step,\r\n sourceClassInfo: step.targetClassInfo,\r\n targetClassInfo: step.sourceClassInfo,\r\n isForwardRelationship: !step.isForwardRelationship,\r\n }));\r\n }\r\n\r\n /** Check two [[RelationshipPath]] or [[StrippedRelationshipPath]] for equality */\r\n export function equals(lhs: Array<RelatedClassInfo | StrippedRelatedClassInfo>, rhs: Array<RelatedClassInfo | StrippedRelatedClassInfo>): boolean {\r\n return lhs.length === rhs.length && lhs.every((lhsPart, i) => RelatedClassInfo.equals(lhsPart, rhs[i]));\r\n }\r\n\r\n /** Strip given [[RelationshipPath]] to [[StrippedRelationshipPath]] */\r\n export function strip(full: RelationshipPath): StrippedRelationshipPath {\r\n return full.map(RelatedClassInfo.strip);\r\n }\r\n}\r\n\r\n/**\r\n * Data structure that contains a subset of [[RelatedClassInfo]] required to\r\n * identify the relationship.\r\n * @public\r\n */\r\nexport interface StrippedRelatedClassInfo {\r\n sourceClassName: string;\r\n targetClassName: string;\r\n relationshipName: string;\r\n isForwardRelationship: boolean;\r\n}\r\n\r\n/**\r\n * Data structure that contains a subset of [[RelationshipPath]] required to\r\n * identify the relationship path.\r\n * @public\r\n */\r\nexport type StrippedRelationshipPath = StrippedRelatedClassInfo[];\r\n"]}
|
|
1
|
+
{"version":3,"file":"EC.js","sourceRoot":"","sources":["../../../src/presentation-common/EC.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport { FormatProps } from \"@itwin/core-quantity\";\r\nimport { PartialBy } from \"./Utils\";\r\n\r\n/**\r\n * Type of an ECClass ID.\r\n * @public\r\n */\r\nexport type ClassId = Id64String;\r\n\r\n/**\r\n * Type of an ECInstance ID.\r\n * @public\r\n */\r\nexport type InstanceId = Id64String;\r\n\r\n/**\r\n * A key that uniquely identifies an instance in an iModel\r\n * @public\r\n */\r\nexport interface InstanceKey {\r\n /** Full class name in format `SchemaName:ClassName` */\r\n className: string;\r\n /** ECInstance ID */\r\n id: InstanceId;\r\n}\r\n\r\n/** @public */\r\nexport namespace InstanceKey {\r\n /** Compare 2 instance keys */\r\n export function compare(lhs: InstanceKey, rhs: InstanceKey): number {\r\n const classNameCompare = lhs.className.localeCompare(rhs.className);\r\n if (classNameCompare !== 0) {\r\n return classNameCompare;\r\n }\r\n return lhs.id.localeCompare(rhs.id);\r\n }\r\n}\r\n\r\n/**\r\n * Information about an ECClass\r\n * @public\r\n */\r\nexport interface ClassInfo {\r\n /** ECClass ID */\r\n id: ClassId;\r\n /** Full class name in format `SchemaName:ClassName` */\r\n name: string;\r\n /** ECClass label */\r\n label: string;\r\n}\r\n\r\n/**\r\n * A serialized and compressed version of [[ClassInfo]]\r\n * @public\r\n */\r\nexport interface CompressedClassInfoJSON {\r\n name: string;\r\n label: string;\r\n}\r\n\r\n/**\r\n * A single choice in enumeration\r\n * @public\r\n */\r\nexport interface EnumerationChoice {\r\n /** Label of the choice */\r\n label: string;\r\n /** Value of the choice */\r\n value: string | number;\r\n}\r\n\r\n/**\r\n * Enumeration information\r\n * @public\r\n */\r\nexport interface EnumerationInfo {\r\n /** Available enumeration choices */\r\n choices: EnumerationChoice[];\r\n /** Is the enumeration strict (values only allowed from `choices` list) */\r\n isStrict: boolean;\r\n}\r\n\r\n/**\r\n * Kind of quantity information\r\n * @public\r\n */\r\nexport interface KindOfQuantityInfo {\r\n /** Full name of KindOfQuantity in format `SchemaName:KindOfQuantityName` */\r\n name: string;\r\n /** Label of KindOfQuantity */\r\n label: string;\r\n /** Persistence unit full class name in format `SchemaName:UnitName`. */\r\n persistenceUnit: string;\r\n /** Active format that was used to format property value. */\r\n activeFormat?: FormatProps;\r\n}\r\n\r\n/**\r\n * A data structure for storing navigation property information.\r\n * @public\r\n */\r\nexport interface NavigationPropertyInfo {\r\n /** Information about ECProperty's relationship class */\r\n classInfo: ClassInfo;\r\n /** Is the direction of the relationship forward */\r\n isForwardRelationship: boolean;\r\n /** Information about ECProperty's target class */\r\n targetClassInfo: ClassInfo;\r\n /** Is ECProperty's target class polymorphic */\r\n isTargetPolymorphic: boolean;\r\n}\r\n\r\n/**\r\n * Contains utilities for working with objects of [[NavigationPropertyInfo]] type.\r\n * @public\r\n */\r\nexport namespace NavigationPropertyInfo {\r\n /** Serialize [[NavigationPropertyInfo]] to compressed JSON */\r\n export function toCompressedJSON(\r\n navigationPropertyInfo: NavigationPropertyInfo,\r\n classesMap: { [id: string]: CompressedClassInfoJSON },\r\n ): NavigationPropertyInfoJSON<string> {\r\n const { id: relationshipId, ...relationshipLeftOverInfo } = navigationPropertyInfo.classInfo;\r\n const { id: targetId, ...targetLeftOverInfo } = navigationPropertyInfo.targetClassInfo;\r\n classesMap[relationshipId] = relationshipLeftOverInfo;\r\n classesMap[targetId] = targetLeftOverInfo;\r\n\r\n return {\r\n ...navigationPropertyInfo,\r\n classInfo: relationshipId,\r\n targetClassInfo: targetId,\r\n };\r\n }\r\n\r\n /** Deserialize [[NavigationPropertyInfo]] from compressed JSON */\r\n export function fromCompressedJSON(\r\n compressedNavigationPropertyInfoJSON: NavigationPropertyInfoJSON<string>,\r\n classesMap: { [id: string]: CompressedClassInfoJSON },\r\n ): NavigationPropertyInfo {\r\n return {\r\n ...compressedNavigationPropertyInfoJSON,\r\n classInfo: { id: compressedNavigationPropertyInfoJSON.classInfo, ...classesMap[compressedNavigationPropertyInfoJSON.classInfo] },\r\n targetClassInfo: { id: compressedNavigationPropertyInfoJSON.targetClassInfo, ...classesMap[compressedNavigationPropertyInfoJSON.targetClassInfo] },\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * A serialized version of [[NavigationPropertyInfo]]\r\n * @public\r\n */\r\nexport interface NavigationPropertyInfoJSON<TClassInfoJSON = ClassInfo> {\r\n classInfo: TClassInfoJSON;\r\n isForwardRelationship: boolean;\r\n targetClassInfo: TClassInfoJSON;\r\n isTargetPolymorphic: boolean;\r\n}\r\n\r\n/**\r\n * A structure that describes an ECProperty\r\n * @public\r\n */\r\nexport interface PropertyInfo {\r\n /** Information about ECProperty class */\r\n classInfo: ClassInfo;\r\n /** Name of the ECProperty */\r\n name: string;\r\n /** Type name of the ECProperty */\r\n type: string;\r\n /** Enumeration info if the property is enumerable */\r\n enumerationInfo?: EnumerationInfo;\r\n /** Kind of quantity information, if any. */\r\n kindOfQuantity?: KindOfQuantityInfo;\r\n /** Extended type name of the ECProperty if it has one */\r\n extendedType?: string;\r\n /** Navigation property info if the field is navigation type */\r\n navigationPropertyInfo?: NavigationPropertyInfo;\r\n /** Constraints for values of ECProperty */\r\n constraints?: PropertyValueConstraints;\r\n}\r\n\r\n/**\r\n * Constraints for values of ECProperty\r\n * @public\r\n */\r\nexport type PropertyValueConstraints = StringPropertyValueConstraints | ArrayPropertyValueConstraints | NumericPropertyValueConstraints;\r\n\r\n/**\r\n * Describes constraints for `string` type ECProperty values\r\n * @public\r\n */\r\nexport interface StringPropertyValueConstraints {\r\n minimumLength?: number;\r\n maximumLength?: number;\r\n}\r\n\r\n/**\r\n * Describes constraints for `int` | `double` | `float` type ECProperty values\r\n * @public\r\n */\r\nexport interface NumericPropertyValueConstraints {\r\n minimumValue?: number;\r\n maximumValue?: number;\r\n}\r\n\r\n/**\r\n * Describes constraints for `array` type ECProperty values\r\n * @public\r\n */\r\nexport interface ArrayPropertyValueConstraints {\r\n minOccurs?: number;\r\n maxOccurs?: number;\r\n}\r\n\r\n/** @public */\r\nexport namespace PropertyInfo {\r\n /** Serialize [[PropertyInfo]] to compressed JSON */\r\n export function toCompressedJSON(propertyInfo: PropertyInfo, classesMap: { [id: string]: CompressedClassInfoJSON }): PropertyInfoJSON<string> {\r\n const { navigationPropertyInfo, ...leftOverPropertyInfo } = propertyInfo;\r\n const { id, ...leftOverInfo } = propertyInfo.classInfo;\r\n classesMap[id] = leftOverInfo;\r\n\r\n return {\r\n ...leftOverPropertyInfo,\r\n classInfo: propertyInfo.classInfo.id,\r\n ...(navigationPropertyInfo ? { navigationPropertyInfo: NavigationPropertyInfo.toCompressedJSON(navigationPropertyInfo, classesMap) } : undefined),\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * A serialized version of [[PropertyInfo]]\r\n * @public\r\n */\r\nexport interface PropertyInfoJSON<TClassInfoJSON = ClassInfo> {\r\n classInfo: TClassInfoJSON;\r\n name: string;\r\n type: string;\r\n enumerationInfo?: EnumerationInfo;\r\n kindOfQuantity?: KindOfQuantityInfo;\r\n navigationPropertyInfo?: NavigationPropertyInfoJSON<TClassInfoJSON>;\r\n}\r\n\r\n/**\r\n * A structure that describes a related class and the properties of that relationship.\r\n * @public\r\n */\r\nexport interface RelatedClassInfo {\r\n /** Information about the source ECClass */\r\n sourceClassInfo: ClassInfo;\r\n\r\n /** Information about the target ECClass */\r\n targetClassInfo: ClassInfo;\r\n\r\n /** Is target class handled polymorphically */\r\n isPolymorphicTargetClass?: boolean;\r\n\r\n /** Optionally, IDs of specific target class instances. */\r\n targetInstanceIds?: Id64String[];\r\n\r\n /** Information about the ECRelationship */\r\n relationshipInfo: ClassInfo;\r\n\r\n /** Should relationship be followed in a forward direction to access the related class. */\r\n isForwardRelationship: boolean;\r\n\r\n /** Is relationship handled polymorphically */\r\n isPolymorphicRelationship?: boolean;\r\n}\r\n\r\n/** @public */\r\nexport namespace RelatedClassInfo {\r\n /** Serialize [[RelatedClassInfo]] to compressed JSON */\r\n export function toCompressedJSON(classInfo: RelatedClassInfo, classesMap: { [id: string]: CompressedClassInfoJSON }): RelatedClassInfoJSON<string> {\r\n const { id: sourceId, ...sourceLeftOverInfo } = classInfo.sourceClassInfo;\r\n const { id: targetId, ...targetLeftOverInfo } = classInfo.targetClassInfo;\r\n const { id: relationshipId, ...relationshipLeftOverInfo } = classInfo.relationshipInfo;\r\n\r\n classesMap[sourceId] = sourceLeftOverInfo;\r\n classesMap[targetId] = targetLeftOverInfo;\r\n classesMap[relationshipId] = relationshipLeftOverInfo;\r\n\r\n return {\r\n ...classInfo,\r\n sourceClassInfo: sourceId,\r\n targetClassInfo: targetId,\r\n relationshipInfo: relationshipId,\r\n };\r\n }\r\n\r\n /** Deserialize [[RelatedClassInfo]] from compressed JSON */\r\n export function fromCompressedJSON(json: RelatedClassInfoJSON<string>, classesMap: { [id: string]: CompressedClassInfoJSON }): RelatedClassInfo {\r\n assert(classesMap.hasOwnProperty(json.sourceClassInfo));\r\n assert(classesMap.hasOwnProperty(json.targetClassInfo));\r\n assert(classesMap.hasOwnProperty(json.relationshipInfo));\r\n return {\r\n ...json,\r\n sourceClassInfo: { id: json.sourceClassInfo, ...classesMap[json.sourceClassInfo] },\r\n targetClassInfo: { id: json.targetClassInfo, ...classesMap[json.targetClassInfo] },\r\n relationshipInfo: { id: json.relationshipInfo, ...classesMap[json.relationshipInfo] },\r\n };\r\n }\r\n\r\n /** Check two [[RelatedClassInfo]] or [[StrippedRelatedClassInfo]] for equality */\r\n export function equals(lhs: RelatedClassInfo | StrippedRelatedClassInfo, rhs: RelatedClassInfo | StrippedRelatedClassInfo): boolean {\r\n return (\r\n lhs.isForwardRelationship === rhs.isForwardRelationship &&\r\n getClassName(lhs, \"source\") === getClassName(rhs, \"source\") &&\r\n getClassName(lhs, \"target\") === getClassName(rhs, \"target\") &&\r\n getClassName(lhs, \"relationship\") === getClassName(rhs, \"relationship\")\r\n );\r\n }\r\n\r\n function isStripped(info: RelatedClassInfo | StrippedRelatedClassInfo): info is StrippedRelatedClassInfo {\r\n const maybeStripped = info as StrippedRelatedClassInfo;\r\n return !!maybeStripped.relationshipName && !!maybeStripped.sourceClassName && !!maybeStripped.targetClassName;\r\n }\r\n\r\n function getClassName(info: RelatedClassInfo | StrippedRelatedClassInfo, whichClass: \"relationship\" | \"source\" | \"target\"): string {\r\n switch (whichClass) {\r\n case \"source\":\r\n return isStripped(info) ? info.sourceClassName : info.sourceClassInfo.name;\r\n case \"target\":\r\n return isStripped(info) ? info.targetClassName : info.targetClassInfo.name;\r\n case \"relationship\":\r\n return isStripped(info) ? info.relationshipName : info.relationshipInfo.name;\r\n }\r\n }\r\n\r\n /** Strip given [[RelatedClassInfo]] to [[StrippedRelatedClassInfo]] */\r\n export function strip(full: RelatedClassInfo): StrippedRelatedClassInfo {\r\n return {\r\n sourceClassName: full.sourceClassInfo.name,\r\n targetClassName: full.targetClassInfo.name,\r\n relationshipName: full.relationshipInfo.name,\r\n isForwardRelationship: full.isForwardRelationship,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * A serialized version of [[RelatedClassInfo]]\r\n * @public\r\n */\r\nexport interface RelatedClassInfoJSON<TClassInfoJSON = ClassInfo> {\r\n sourceClassInfo: TClassInfoJSON;\r\n targetClassInfo: TClassInfoJSON;\r\n isPolymorphicTargetClass?: boolean;\r\n targetInstanceIds?: Id64String[];\r\n relationshipInfo: TClassInfoJSON;\r\n isForwardRelationship: boolean;\r\n isPolymorphicRelationship?: boolean;\r\n}\r\n\r\n/**\r\n * A structure that describes a relationship between source and target classes where\r\n * an actual ECRelationship between them is optional.\r\n * @public\r\n */\r\nexport type RelatedClassInfoWithOptionalRelationship = PartialBy<RelatedClassInfo, \"relationshipInfo\" | \"isForwardRelationship\" | \"isPolymorphicRelationship\">;\r\n\r\n/** @public */\r\nexport type RelatedClassInfoWithOptionalRelationshipJSON<TClassInfoJSON = ClassInfo> = PartialBy<\r\n RelatedClassInfoJSON<TClassInfoJSON>,\r\n \"relationshipInfo\" | \"isForwardRelationship\" | \"isPolymorphicRelationship\"\r\n>;\r\n\r\n/** @public */\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport namespace RelatedClassInfoWithOptionalRelationship {\r\n /** Serialize [[RelatedClassInfoWithOptionalRelationship]] to compressed JSON */\r\n export function toCompressedJSON(\r\n classInfo: RelatedClassInfoWithOptionalRelationship,\r\n classesMap: { [id: string]: CompressedClassInfoJSON },\r\n ): RelatedClassInfoWithOptionalRelationshipJSON<string> {\r\n const { sourceClassInfo, targetClassInfo, relationshipInfo, ...otherProps } = classInfo;\r\n const { id: sourceId, ...sourceLeftOverInfo } = sourceClassInfo;\r\n const { id: targetId, ...targetLeftOverInfo } = targetClassInfo;\r\n\r\n classesMap[sourceId] = sourceLeftOverInfo;\r\n classesMap[targetId] = targetLeftOverInfo;\r\n\r\n if (relationshipInfo) {\r\n const { id: relationshipId, ...relationshipLeftOverInfo } = relationshipInfo;\r\n classesMap[relationshipId] = relationshipLeftOverInfo;\r\n }\r\n\r\n return {\r\n ...otherProps,\r\n sourceClassInfo: sourceId,\r\n targetClassInfo: targetId,\r\n ...(relationshipInfo ? { relationshipInfo: relationshipInfo.id } : undefined),\r\n };\r\n }\r\n\r\n /** Deserialize [[RelatedClassInfoWithOptionalRelationship]] from compressed JSON */\r\n export function fromCompressedJSON(\r\n json: RelatedClassInfoWithOptionalRelationshipJSON<string>,\r\n classesMap: { [id: string]: CompressedClassInfoJSON },\r\n ): RelatedClassInfoWithOptionalRelationship {\r\n const { sourceClassInfo, targetClassInfo, relationshipInfo, ...otherProps } = json;\r\n assert(classesMap.hasOwnProperty(sourceClassInfo));\r\n assert(classesMap.hasOwnProperty(targetClassInfo));\r\n if (relationshipInfo) {\r\n assert(classesMap.hasOwnProperty(relationshipInfo));\r\n }\r\n return {\r\n ...otherProps,\r\n sourceClassInfo: { id: sourceClassInfo, ...classesMap[sourceClassInfo] },\r\n targetClassInfo: { id: targetClassInfo, ...classesMap[targetClassInfo] },\r\n ...(relationshipInfo ? { relationshipInfo: { id: relationshipInfo, ...classesMap[relationshipInfo] } } : undefined),\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * A structure that describes a related class path.\r\n * @public\r\n */\r\nexport type RelationshipPath = RelatedClassInfo[];\r\n\r\n/**\r\n * Serialized [[RelationshipPath]]\r\n * @public\r\n */\r\nexport type RelationshipPathJSON<TClassInfoJSON = ClassInfo> = RelatedClassInfoJSON<TClassInfoJSON>[];\r\n\r\n/** @public */\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport namespace RelationshipPath {\r\n /** Reverse direction of the given [[RelationshipPath]] */\r\n export function reverse(path: RelationshipPath): RelationshipPath {\r\n return [...path].reverse().map((step) => ({\r\n ...step,\r\n sourceClassInfo: step.targetClassInfo,\r\n targetClassInfo: step.sourceClassInfo,\r\n isForwardRelationship: !step.isForwardRelationship,\r\n }));\r\n }\r\n\r\n /** Check two [[RelationshipPath]] or [[StrippedRelationshipPath]] for equality */\r\n export function equals(lhs: Array<RelatedClassInfo | StrippedRelatedClassInfo>, rhs: Array<RelatedClassInfo | StrippedRelatedClassInfo>): boolean {\r\n return lhs.length === rhs.length && lhs.every((lhsPart, i) => RelatedClassInfo.equals(lhsPart, rhs[i]));\r\n }\r\n\r\n /** Strip given [[RelationshipPath]] to [[StrippedRelationshipPath]] */\r\n export function strip(full: RelationshipPath): StrippedRelationshipPath {\r\n return full.map(RelatedClassInfo.strip);\r\n }\r\n}\r\n\r\n/**\r\n * Data structure that contains a subset of [[RelatedClassInfo]] required to\r\n * identify the relationship.\r\n * @public\r\n */\r\nexport interface StrippedRelatedClassInfo {\r\n sourceClassName: string;\r\n targetClassName: string;\r\n relationshipName: string;\r\n isForwardRelationship: boolean;\r\n}\r\n\r\n/**\r\n * Data structure that contains a subset of [[RelationshipPath]] required to\r\n * identify the relationship path.\r\n * @public\r\n */\r\nexport type StrippedRelationshipPath = StrippedRelatedClassInfo[];\r\n"]}
|
|
@@ -15,11 +15,13 @@ export const buildElementProperties = (descriptor, item) => {
|
|
|
15
15
|
return builder.items[0];
|
|
16
16
|
};
|
|
17
17
|
class ElementPropertiesAppender {
|
|
18
|
+
_item;
|
|
19
|
+
_onItemFinished;
|
|
20
|
+
_propertyItems = {};
|
|
21
|
+
_categoryItemAppenders = {};
|
|
18
22
|
constructor(_item, _onItemFinished) {
|
|
19
23
|
this._item = _item;
|
|
20
24
|
this._onItemFinished = _onItemFinished;
|
|
21
|
-
this._propertyItems = {};
|
|
22
|
-
this._categoryItemAppenders = {};
|
|
23
25
|
}
|
|
24
26
|
append(label, item) {
|
|
25
27
|
this._propertyItems[label] = item;
|
|
@@ -47,10 +49,12 @@ class ElementPropertiesAppender {
|
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
class CategoryItemAppender {
|
|
52
|
+
_parentAppender;
|
|
53
|
+
_category;
|
|
54
|
+
_items = {};
|
|
50
55
|
constructor(_parentAppender, _category) {
|
|
51
56
|
this._parentAppender = _parentAppender;
|
|
52
57
|
this._category = _category;
|
|
53
|
-
this._items = {};
|
|
54
58
|
}
|
|
55
59
|
append(label, item) {
|
|
56
60
|
this._items[label] = item;
|
|
@@ -66,10 +70,12 @@ class CategoryItemAppender {
|
|
|
66
70
|
}
|
|
67
71
|
}
|
|
68
72
|
class ArrayItemAppender {
|
|
73
|
+
_parentAppender;
|
|
74
|
+
_props;
|
|
75
|
+
_items = [];
|
|
69
76
|
constructor(_parentAppender, _props) {
|
|
70
77
|
this._parentAppender = _parentAppender;
|
|
71
78
|
this._props = _props;
|
|
72
|
-
this._items = [];
|
|
73
79
|
}
|
|
74
80
|
append(_label, item) {
|
|
75
81
|
assert(item.type !== "category");
|
|
@@ -106,10 +112,12 @@ class ArrayItemAppender {
|
|
|
106
112
|
}
|
|
107
113
|
}
|
|
108
114
|
class StructItemAppender {
|
|
115
|
+
_parentAppender;
|
|
116
|
+
_props;
|
|
117
|
+
_members = {};
|
|
109
118
|
constructor(_parentAppender, _props) {
|
|
110
119
|
this._parentAppender = _parentAppender;
|
|
111
120
|
this._props = _props;
|
|
112
|
-
this._members = {};
|
|
113
121
|
}
|
|
114
122
|
append(label, item) {
|
|
115
123
|
assert(item.type !== "category");
|
|
@@ -124,10 +132,9 @@ class StructItemAppender {
|
|
|
124
132
|
}
|
|
125
133
|
}
|
|
126
134
|
class ElementPropertiesBuilder {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
135
|
+
_appendersStack = [];
|
|
136
|
+
_items = [];
|
|
137
|
+
_elementPropertiesAppender;
|
|
131
138
|
get items() {
|
|
132
139
|
return this._items;
|
|
133
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementProperties.js","sourceRoot":"","sources":["../../../src/presentation-common/ElementProperties.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RPC\r\n */\r\n\r\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { CategoryDescription } from \"./content/Category\";\r\nimport {\r\n IContentVisitor,\r\n ProcessFieldHierarchiesProps,\r\n ProcessMergedValueProps,\r\n ProcessPrimitiveValueProps,\r\n StartArrayProps,\r\n StartCategoryProps,\r\n StartContentProps,\r\n StartFieldProps,\r\n StartItemProps,\r\n StartStructProps,\r\n traverseContentItem,\r\n} from \"./content/ContentTraverser\";\r\nimport { Descriptor } from \"./content/Descriptor\";\r\nimport { Item } from \"./content/Item\";\r\nimport { PropertyValueFormat } from \"./content/TypeDescription\";\r\n\r\n/**\r\n * Data structure for storing element properties information in a simplified format.\r\n * @see [[Content]] for a format that stores all available element property data.\r\n * @public\r\n */\r\nexport interface ElementProperties {\r\n /** Label of element's ECClass. */\r\n class: string;\r\n /** Element's ID. */\r\n id: Id64String;\r\n /** Element's label. */\r\n label: string;\r\n /** Container of property values */\r\n items: { [label: string]: ElementPropertiesItem };\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: \"category\" | ElementPropertiesPropertyValueType;\r\n}\r\n\r\n/**\r\n * Definition for a category. A category can nest other property items, including categories.\r\n * @public\r\n */\r\nexport interface ElementPropertiesCategoryItem extends ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: \"category\";\r\n /** Container of property values */\r\n items: { [label: string]: ElementPropertiesItem };\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesPropertyItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPropertyItemBase extends ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: ElementPropertiesPropertyValueType;\r\n}\r\n\r\n/**\r\n * Definition for a primitive property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPrimitivePropertyItem extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"primitive\";\r\n /** Display value of the property. */\r\n value: string;\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesArrayPropertyItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesArrayPropertyItemBase extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"array\";\r\n /** Type of values contained in this array. */\r\n valueType: \"primitive\" | \"struct\";\r\n}\r\n\r\n/**\r\n * Definition for a primitives' array property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPrimitiveArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {\r\n /** Type of values contained in this array. */\r\n valueType: \"primitive\";\r\n /** Array of display values. */\r\n values: string[];\r\n}\r\n\r\n/**\r\n * Definition for a structs' array property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesStructArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {\r\n /** Type of values contained in this array. */\r\n valueType: \"struct\";\r\n /** Array of structs. */\r\n values: Array<{ [memberLabel: string]: ElementPropertiesPropertyItem }>;\r\n}\r\n\r\n/**\r\n * Definition for an array property value.\r\n * @public\r\n */\r\nexport type ElementPropertiesArrayPropertyItem = ElementPropertiesPrimitiveArrayPropertyItem | ElementPropertiesStructArrayPropertyItem;\r\n\r\n/**\r\n * Definition for an struct property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesStructPropertyItem extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"struct\";\r\n /** Container of struct members. */\r\n members: { [memberLabel: string]: ElementPropertiesPropertyItem };\r\n}\r\n\r\n/**\r\n * Available element property types.\r\n * @public\r\n */\r\nexport type ElementPropertiesPropertyValueType = \"primitive\" | \"array\" | \"struct\";\r\n\r\n/**\r\n * Definition of a property value.\r\n * @public\r\n */\r\nexport type ElementPropertiesPropertyItem = ElementPropertiesPrimitivePropertyItem | ElementPropertiesArrayPropertyItem | ElementPropertiesStructPropertyItem;\r\n\r\n/**\r\n * Definition of a property item, including a property category.\r\n * @public\r\n */\r\nexport type ElementPropertiesItem = ElementPropertiesCategoryItem | ElementPropertiesPropertyItem;\r\n\r\n/** @internal */\r\nexport const buildElementProperties = (descriptor: Descriptor, item: Item): ElementProperties => {\r\n const builder = new ElementPropertiesBuilder();\r\n traverseContentItem(builder, descriptor, item);\r\n return builder.items[0];\r\n};\r\n\r\ninterface IPropertiesAppender {\r\n append(label: string, item: ElementPropertiesItem): void;\r\n finish(): void;\r\n}\r\n\r\nclass ElementPropertiesAppender implements IPropertiesAppender {\r\n private _propertyItems: { [label: string]: ElementPropertiesItem } = {};\r\n private _categoryItemAppenders: { [categoryName: string]: IPropertiesAppender } = {};\r\n constructor(\r\n private _item: Item,\r\n private _onItemFinished: (item: ElementProperties) => void,\r\n ) {}\r\n\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n this._propertyItems[label] = item;\r\n }\r\n\r\n public finish(): void {\r\n // eslint-disable-next-line guard-for-in\r\n for (const categoryName in this._categoryItemAppenders) {\r\n const appender = this._categoryItemAppenders[categoryName];\r\n appender.finish();\r\n }\r\n\r\n this._onItemFinished({\r\n class: this._item.classInfo?.label ?? \"\",\r\n id: this._item.primaryKeys[0]?.id ?? Id64.invalid,\r\n label: this._item.label.displayValue,\r\n items: this._propertyItems,\r\n });\r\n }\r\n\r\n public getCategoryAppender(parentAppender: IPropertiesAppender, category: CategoryDescription): IPropertiesAppender {\r\n let appender = this._categoryItemAppenders[category.name];\r\n if (!appender) {\r\n appender = new CategoryItemAppender(parentAppender, category);\r\n this._categoryItemAppenders[category.name] = appender;\r\n }\r\n return appender;\r\n }\r\n}\r\n\r\nclass CategoryItemAppender implements IPropertiesAppender {\r\n private _items: { [label: string]: ElementPropertiesItem } = {};\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _category: CategoryDescription,\r\n ) {}\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n this._items[label] = item;\r\n }\r\n public finish(): void {\r\n if (Object.keys(this._items).length === 0) {\r\n return;\r\n }\r\n\r\n this._parentAppender.append(this._category.label, {\r\n type: \"category\",\r\n items: this._items,\r\n });\r\n }\r\n}\r\n\r\nclass ArrayItemAppender implements IPropertiesAppender {\r\n private _items: ElementPropertiesPropertyItem[] = [];\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _props: StartArrayProps,\r\n ) {}\r\n public append(_label: string, item: ElementPropertiesItem): void {\r\n assert(item.type !== \"category\");\r\n this._items.push(item);\r\n }\r\n public finish(): void {\r\n assert(this._props.valueType.valueFormat === PropertyValueFormat.Array);\r\n if (this._props.valueType.memberType.valueFormat === PropertyValueFormat.Primitive) {\r\n this._parentAppender.append(this._props.hierarchy.field.label, this.createPrimitivesArray());\r\n } else {\r\n this._parentAppender.append(this._props.hierarchy.field.label, this.createStructsArray());\r\n }\r\n }\r\n private createPrimitivesArray(): ElementPropertiesPrimitiveArrayPropertyItem {\r\n return {\r\n type: \"array\",\r\n valueType: \"primitive\",\r\n values: this._items.map((item) => {\r\n assert(item.type === \"primitive\");\r\n return item.value;\r\n }),\r\n };\r\n }\r\n private createStructsArray(): ElementPropertiesStructArrayPropertyItem {\r\n return {\r\n type: \"array\",\r\n valueType: \"struct\",\r\n values: this._items.map((item) => {\r\n assert(item.type === \"struct\");\r\n return item.members;\r\n }),\r\n };\r\n }\r\n}\r\n\r\nclass StructItemAppender implements IPropertiesAppender {\r\n private _members: { [label: string]: ElementPropertiesPropertyItem } = {};\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _props: StartStructProps,\r\n ) {}\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n assert(item.type !== \"category\");\r\n this._members[label] = item;\r\n }\r\n public finish(): void {\r\n assert(this._props.valueType.valueFormat === PropertyValueFormat.Struct);\r\n this._parentAppender.append(this._props.hierarchy.field.label, {\r\n type: \"struct\",\r\n members: this._members,\r\n });\r\n }\r\n}\r\n\r\nclass ElementPropertiesBuilder implements IContentVisitor {\r\n private _appendersStack: IPropertiesAppender[] = [];\r\n private _items: ElementProperties[] = [];\r\n private _elementPropertiesAppender: ElementPropertiesAppender | undefined;\r\n\r\n public get items(): ElementProperties[] {\r\n return this._items;\r\n }\r\n\r\n private get _currentAppender(): IPropertiesAppender {\r\n const appender = this._appendersStack[this._appendersStack.length - 1];\r\n assert(appender !== undefined);\r\n return appender;\r\n }\r\n\r\n public startContent(_props: StartContentProps): boolean {\r\n return true;\r\n }\r\n public finishContent(): void {}\r\n\r\n public processFieldHierarchies(_props: ProcessFieldHierarchiesProps): void {}\r\n\r\n public startItem(props: StartItemProps): boolean {\r\n this._elementPropertiesAppender = new ElementPropertiesAppender(props.item, (item) => this._items.push(item));\r\n this._appendersStack.push(this._elementPropertiesAppender);\r\n return true;\r\n }\r\n public finishItem(): void {\r\n this._appendersStack.pop();\r\n assert(this._elementPropertiesAppender !== undefined);\r\n this._elementPropertiesAppender.finish();\r\n this._elementPropertiesAppender = undefined;\r\n }\r\n\r\n public startCategory(props: StartCategoryProps): boolean {\r\n assert(this._elementPropertiesAppender !== undefined);\r\n this._appendersStack.push(this._elementPropertiesAppender.getCategoryAppender(this._currentAppender, props.category));\r\n return true;\r\n }\r\n public finishCategory(): void {\r\n this._appendersStack.pop();\r\n }\r\n\r\n public startField(_props: StartFieldProps): boolean {\r\n return true;\r\n }\r\n public finishField(): void {}\r\n\r\n public startStruct(props: StartStructProps): boolean {\r\n this._appendersStack.push(new StructItemAppender(this._currentAppender, props));\r\n return true;\r\n }\r\n public finishStruct(): void {\r\n this._appendersStack.pop()!.finish();\r\n }\r\n\r\n public startArray(props: StartArrayProps): boolean {\r\n this._appendersStack.push(new ArrayItemAppender(this._currentAppender, props));\r\n return true;\r\n }\r\n public finishArray(): void {\r\n this._appendersStack.pop()!.finish();\r\n }\r\n\r\n public processMergedValue(props: ProcessMergedValueProps): void {\r\n this._currentAppender.append(props.mergedField.label, {\r\n type: \"primitive\",\r\n value: \"\",\r\n });\r\n }\r\n public processPrimitiveValue(props: ProcessPrimitiveValueProps): void {\r\n this._currentAppender.append(props.field.label, {\r\n type: \"primitive\",\r\n value: props.displayValue?.toString() ?? \"\",\r\n });\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ElementProperties.js","sourceRoot":"","sources":["../../../src/presentation-common/ElementProperties.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RPC\r\n */\r\n\r\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { CategoryDescription } from \"./content/Category\";\r\nimport {\r\n IContentVisitor,\r\n ProcessFieldHierarchiesProps,\r\n ProcessMergedValueProps,\r\n ProcessPrimitiveValueProps,\r\n StartArrayProps,\r\n StartCategoryProps,\r\n StartContentProps,\r\n StartFieldProps,\r\n StartItemProps,\r\n StartStructProps,\r\n traverseContentItem,\r\n} from \"./content/ContentTraverser\";\r\nimport { Descriptor } from \"./content/Descriptor\";\r\nimport { Item } from \"./content/Item\";\r\nimport { PropertyValueFormat } from \"./content/TypeDescription\";\r\n\r\n/**\r\n * Data structure for storing element properties information in a simplified format.\r\n * @see [[Content]] for a format that stores all available element property data.\r\n * @public\r\n */\r\nexport interface ElementProperties {\r\n /** Label of element's ECClass. */\r\n class: string;\r\n /** Element's ID. */\r\n id: Id64String;\r\n /** Element's label. */\r\n label: string;\r\n /** Container of property values */\r\n items: { [label: string]: ElementPropertiesItem };\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: \"category\" | ElementPropertiesPropertyValueType;\r\n}\r\n\r\n/**\r\n * Definition for a category. A category can nest other property items, including categories.\r\n * @public\r\n */\r\nexport interface ElementPropertiesCategoryItem extends ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: \"category\";\r\n /** Container of property values */\r\n items: { [label: string]: ElementPropertiesItem };\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesPropertyItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPropertyItemBase extends ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: ElementPropertiesPropertyValueType;\r\n}\r\n\r\n/**\r\n * Definition for a primitive property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPrimitivePropertyItem extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"primitive\";\r\n /** Display value of the property. */\r\n value: string;\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesArrayPropertyItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesArrayPropertyItemBase extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"array\";\r\n /** Type of values contained in this array. */\r\n valueType: \"primitive\" | \"struct\";\r\n}\r\n\r\n/**\r\n * Definition for a primitives' array property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPrimitiveArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {\r\n /** Type of values contained in this array. */\r\n valueType: \"primitive\";\r\n /** Array of display values. */\r\n values: string[];\r\n}\r\n\r\n/**\r\n * Definition for a structs' array property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesStructArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {\r\n /** Type of values contained in this array. */\r\n valueType: \"struct\";\r\n /** Array of structs. */\r\n values: Array<{ [memberLabel: string]: ElementPropertiesPropertyItem }>;\r\n}\r\n\r\n/**\r\n * Definition for an array property value.\r\n * @public\r\n */\r\nexport type ElementPropertiesArrayPropertyItem = ElementPropertiesPrimitiveArrayPropertyItem | ElementPropertiesStructArrayPropertyItem;\r\n\r\n/**\r\n * Definition for an struct property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesStructPropertyItem extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"struct\";\r\n /** Container of struct members. */\r\n members: { [memberLabel: string]: ElementPropertiesPropertyItem };\r\n}\r\n\r\n/**\r\n * Available element property types.\r\n * @public\r\n */\r\nexport type ElementPropertiesPropertyValueType = \"primitive\" | \"array\" | \"struct\";\r\n\r\n/**\r\n * Definition of a property value.\r\n * @public\r\n */\r\nexport type ElementPropertiesPropertyItem = ElementPropertiesPrimitivePropertyItem | ElementPropertiesArrayPropertyItem | ElementPropertiesStructPropertyItem;\r\n\r\n/**\r\n * Definition of a property item, including a property category.\r\n * @public\r\n */\r\nexport type ElementPropertiesItem = ElementPropertiesCategoryItem | ElementPropertiesPropertyItem;\r\n\r\n/** @internal */\r\nexport const buildElementProperties = (descriptor: Descriptor, item: Item): ElementProperties => {\r\n const builder = new ElementPropertiesBuilder();\r\n traverseContentItem(builder, descriptor, item);\r\n return builder.items[0];\r\n};\r\n\r\ninterface IPropertiesAppender {\r\n append(label: string, item: ElementPropertiesItem): void;\r\n finish(): void;\r\n}\r\n\r\nclass ElementPropertiesAppender implements IPropertiesAppender {\r\n private _propertyItems: { [label: string]: ElementPropertiesItem } = {};\r\n private _categoryItemAppenders: { [categoryName: string]: IPropertiesAppender } = {};\r\n constructor(\r\n private _item: Item,\r\n private _onItemFinished: (item: ElementProperties) => void,\r\n ) {}\r\n\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n this._propertyItems[label] = item;\r\n }\r\n\r\n public finish(): void {\r\n // eslint-disable-next-line guard-for-in\r\n for (const categoryName in this._categoryItemAppenders) {\r\n const appender = this._categoryItemAppenders[categoryName];\r\n appender.finish();\r\n }\r\n\r\n this._onItemFinished({\r\n class: this._item.classInfo?.label ?? \"\",\r\n id: this._item.primaryKeys[0]?.id ?? Id64.invalid,\r\n label: this._item.label.displayValue,\r\n items: this._propertyItems,\r\n });\r\n }\r\n\r\n public getCategoryAppender(parentAppender: IPropertiesAppender, category: CategoryDescription): IPropertiesAppender {\r\n let appender = this._categoryItemAppenders[category.name];\r\n if (!appender) {\r\n appender = new CategoryItemAppender(parentAppender, category);\r\n this._categoryItemAppenders[category.name] = appender;\r\n }\r\n return appender;\r\n }\r\n}\r\n\r\nclass CategoryItemAppender implements IPropertiesAppender {\r\n private _items: { [label: string]: ElementPropertiesItem } = {};\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _category: CategoryDescription,\r\n ) {}\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n this._items[label] = item;\r\n }\r\n public finish(): void {\r\n if (Object.keys(this._items).length === 0) {\r\n return;\r\n }\r\n\r\n this._parentAppender.append(this._category.label, {\r\n type: \"category\",\r\n items: this._items,\r\n });\r\n }\r\n}\r\n\r\nclass ArrayItemAppender implements IPropertiesAppender {\r\n private _items: ElementPropertiesPropertyItem[] = [];\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _props: StartArrayProps,\r\n ) {}\r\n public append(_label: string, item: ElementPropertiesItem): void {\r\n assert(item.type !== \"category\");\r\n this._items.push(item);\r\n }\r\n public finish(): void {\r\n assert(this._props.valueType.valueFormat === PropertyValueFormat.Array);\r\n if (this._props.valueType.memberType.valueFormat === PropertyValueFormat.Primitive) {\r\n this._parentAppender.append(this._props.hierarchy.field.label, this.createPrimitivesArray());\r\n } else {\r\n this._parentAppender.append(this._props.hierarchy.field.label, this.createStructsArray());\r\n }\r\n }\r\n private createPrimitivesArray(): ElementPropertiesPrimitiveArrayPropertyItem {\r\n return {\r\n type: \"array\",\r\n valueType: \"primitive\",\r\n values: this._items.map((item) => {\r\n assert(item.type === \"primitive\");\r\n return item.value;\r\n }),\r\n };\r\n }\r\n private createStructsArray(): ElementPropertiesStructArrayPropertyItem {\r\n return {\r\n type: \"array\",\r\n valueType: \"struct\",\r\n values: this._items.map((item) => {\r\n assert(item.type === \"struct\");\r\n return item.members;\r\n }),\r\n };\r\n }\r\n}\r\n\r\nclass StructItemAppender implements IPropertiesAppender {\r\n private _members: { [label: string]: ElementPropertiesPropertyItem } = {};\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _props: StartStructProps,\r\n ) {}\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n assert(item.type !== \"category\");\r\n this._members[label] = item;\r\n }\r\n public finish(): void {\r\n assert(this._props.valueType.valueFormat === PropertyValueFormat.Struct);\r\n this._parentAppender.append(this._props.hierarchy.field.label, {\r\n type: \"struct\",\r\n members: this._members,\r\n });\r\n }\r\n}\r\n\r\nclass ElementPropertiesBuilder implements IContentVisitor {\r\n private _appendersStack: IPropertiesAppender[] = [];\r\n private _items: ElementProperties[] = [];\r\n private _elementPropertiesAppender: ElementPropertiesAppender | undefined;\r\n\r\n public get items(): ElementProperties[] {\r\n return this._items;\r\n }\r\n\r\n private get _currentAppender(): IPropertiesAppender {\r\n const appender = this._appendersStack[this._appendersStack.length - 1];\r\n assert(appender !== undefined);\r\n return appender;\r\n }\r\n\r\n public startContent(_props: StartContentProps): boolean {\r\n return true;\r\n }\r\n public finishContent(): void {}\r\n\r\n public processFieldHierarchies(_props: ProcessFieldHierarchiesProps): void {}\r\n\r\n public startItem(props: StartItemProps): boolean {\r\n this._elementPropertiesAppender = new ElementPropertiesAppender(props.item, (item) => this._items.push(item));\r\n this._appendersStack.push(this._elementPropertiesAppender);\r\n return true;\r\n }\r\n public finishItem(): void {\r\n this._appendersStack.pop();\r\n assert(this._elementPropertiesAppender !== undefined);\r\n this._elementPropertiesAppender.finish();\r\n this._elementPropertiesAppender = undefined;\r\n }\r\n\r\n public startCategory(props: StartCategoryProps): boolean {\r\n assert(this._elementPropertiesAppender !== undefined);\r\n this._appendersStack.push(this._elementPropertiesAppender.getCategoryAppender(this._currentAppender, props.category));\r\n return true;\r\n }\r\n public finishCategory(): void {\r\n this._appendersStack.pop();\r\n }\r\n\r\n public startField(_props: StartFieldProps): boolean {\r\n return true;\r\n }\r\n public finishField(): void {}\r\n\r\n public startStruct(props: StartStructProps): boolean {\r\n this._appendersStack.push(new StructItemAppender(this._currentAppender, props));\r\n return true;\r\n }\r\n public finishStruct(): void {\r\n this._appendersStack.pop()!.finish();\r\n }\r\n\r\n public startArray(props: StartArrayProps): boolean {\r\n this._appendersStack.push(new ArrayItemAppender(this._currentAppender, props));\r\n return true;\r\n }\r\n public finishArray(): void {\r\n this._appendersStack.pop()!.finish();\r\n }\r\n\r\n public processMergedValue(props: ProcessMergedValueProps): void {\r\n this._currentAppender.append(props.mergedField.label, {\r\n type: \"primitive\",\r\n value: \"\",\r\n });\r\n }\r\n public processPrimitiveValue(props: ProcessPrimitiveValueProps): void {\r\n this._currentAppender.append(props.field.label, {\r\n type: \"primitive\",\r\n value: props.displayValue?.toString() ?? \"\",\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { GuidString } from "@itwin/core-bentley";
|
|
5
5
|
import { EntityProps } from "@itwin/core-common";
|
|
6
6
|
import { InstanceId, InstanceKey } from "./EC";
|
|
7
|
-
import { NodeKey
|
|
7
|
+
import { NodeKey } from "./hierarchy/Key";
|
|
8
8
|
/**
|
|
9
9
|
* A single key that identifies something in an iTwin.js application
|
|
10
10
|
* @public
|
|
@@ -32,7 +32,7 @@ export interface KeySetJSON {
|
|
|
32
32
|
/** JSON representation of a list of instance keys */
|
|
33
33
|
instanceKeys: Array<[string, string]>;
|
|
34
34
|
/** An array of serialized node keys */
|
|
35
|
-
nodeKeys:
|
|
35
|
+
nodeKeys: NodeKey[];
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* A class that holds multiple [[Key]] objects. It's basically
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeySet.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/KeySet.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAA2B,UAAU,EAAoB,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"KeySet.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/KeySet.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { CompressedId64Set, Guid, Id64 } from "@itwin/core-bentley";
|
|
9
9
|
import { PresentationError, PresentationStatus } from "./Error";
|
|
10
|
-
import { NodeKey } from "./hierarchy/Key";
|
|
11
10
|
/** @public */
|
|
12
11
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
13
12
|
export var Key;
|
|
@@ -35,6 +34,11 @@ export var Key;
|
|
|
35
34
|
* @public
|
|
36
35
|
*/
|
|
37
36
|
export class KeySet {
|
|
37
|
+
// note: all keys are stored as strings because we need ability to find them by value
|
|
38
|
+
_instanceKeys; // lower case class name => instance ids
|
|
39
|
+
_lowerCaseMap; // lower case class name => most recent class name
|
|
40
|
+
_nodeKeys;
|
|
41
|
+
_guid;
|
|
38
42
|
/**
|
|
39
43
|
* Creates an instance of KeySet.
|
|
40
44
|
* @param source Optional source to initialize from.
|
|
@@ -90,9 +94,7 @@ export class KeySet {
|
|
|
90
94
|
get nodeKeys() {
|
|
91
95
|
const set = new Set();
|
|
92
96
|
for (const serialized of this._nodeKeys) {
|
|
93
|
-
|
|
94
|
-
const key = NodeKey.fromJSON(JSON.parse(serialized));
|
|
95
|
-
set.add(key);
|
|
97
|
+
set.add(JSON.parse(serialized));
|
|
96
98
|
}
|
|
97
99
|
return set;
|
|
98
100
|
}
|
|
@@ -124,8 +126,7 @@ export class KeySet {
|
|
|
124
126
|
}
|
|
125
127
|
addKeySet(keyset, pred) {
|
|
126
128
|
for (const key of keyset._nodeKeys) {
|
|
127
|
-
|
|
128
|
-
if (!pred || pred(NodeKey.fromJSON(JSON.parse(key)))) {
|
|
129
|
+
if (!pred || pred(JSON.parse(key))) {
|
|
129
130
|
this._nodeKeys.add(key);
|
|
130
131
|
}
|
|
131
132
|
}
|
|
@@ -382,8 +383,7 @@ export class KeySet {
|
|
|
382
383
|
return true;
|
|
383
384
|
}
|
|
384
385
|
}
|
|
385
|
-
|
|
386
|
-
return some(this._nodeKeys, (serializedKey) => callback(NodeKey.fromJSON(JSON.parse(serializedKey))));
|
|
386
|
+
return some(this._nodeKeys, (serializedKey) => callback(JSON.parse(serializedKey)));
|
|
387
387
|
}
|
|
388
388
|
/** Iterate over all keys in this keyset. */
|
|
389
389
|
forEach(callback) {
|
|
@@ -393,8 +393,7 @@ export class KeySet {
|
|
|
393
393
|
ids.forEach((id) => callback({ className: recentClassName, id }, index++));
|
|
394
394
|
});
|
|
395
395
|
this._nodeKeys.forEach((serializedKey) => {
|
|
396
|
-
|
|
397
|
-
callback(NodeKey.fromJSON(JSON.parse(serializedKey)), index++);
|
|
396
|
+
callback(JSON.parse(serializedKey), index++);
|
|
398
397
|
});
|
|
399
398
|
}
|
|
400
399
|
/** Iterate over all keys in this keyset in batches */
|
|
@@ -431,7 +430,6 @@ export class KeySet {
|
|
|
431
430
|
instanceKeys.push([className, compressedIds.length > 0 ? compressedIds : Id64.invalid]);
|
|
432
431
|
}
|
|
433
432
|
}
|
|
434
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
435
433
|
const nodeKeys = [];
|
|
436
434
|
for (const serializedKey of this._nodeKeys.values()) {
|
|
437
435
|
nodeKeys.push(JSON.parse(serializedKey));
|