@itwin/presentation-common 4.0.0-dev.8 → 4.0.0-dev.81
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 +51 -1
- package/Ruleset.schema.json +15 -0
- package/lib/cjs/assets/locales/en/Presentation.json +19 -0
- package/lib/cjs/assets/locales/en-PSEUDO/Presentation.json +19 -0
- package/lib/cjs/presentation-common/AsyncTasks.d.ts +22 -22
- package/lib/cjs/presentation-common/AsyncTasks.js +38 -38
- package/lib/cjs/presentation-common/CommonLoggerCategory.d.ts +12 -12
- package/lib/cjs/presentation-common/CommonLoggerCategory.js +20 -20
- package/lib/cjs/presentation-common/Diagnostics.d.ts +125 -125
- package/lib/cjs/presentation-common/Diagnostics.d.ts.map +1 -1
- package/lib/cjs/presentation-common/Diagnostics.js +72 -72
- package/lib/cjs/presentation-common/EC.d.ts +347 -350
- package/lib/cjs/presentation-common/EC.d.ts.map +1 -1
- package/lib/cjs/presentation-common/EC.js +290 -290
- package/lib/cjs/presentation-common/EC.js.map +1 -1
- package/lib/cjs/presentation-common/ElementProperties.d.ts +123 -123
- package/lib/cjs/presentation-common/ElementProperties.d.ts.map +1 -1
- package/lib/cjs/presentation-common/ElementProperties.js +9 -9
- package/lib/cjs/presentation-common/Error.d.ts +47 -45
- package/lib/cjs/presentation-common/Error.d.ts.map +1 -1
- package/lib/cjs/presentation-common/Error.js +64 -62
- package/lib/cjs/presentation-common/Error.js.map +1 -1
- package/lib/cjs/presentation-common/InstanceFilterDefinition.d.ts +93 -93
- package/lib/cjs/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
- package/lib/cjs/presentation-common/InstanceFilterDefinition.js +9 -9
- package/lib/cjs/presentation-common/KeySet.d.ts +146 -146
- package/lib/cjs/presentation-common/KeySet.d.ts.map +1 -1
- package/lib/cjs/presentation-common/KeySet.js +428 -428
- package/lib/cjs/presentation-common/KoqPropertyValueFormatter.d.ts +20 -0
- package/lib/cjs/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -0
- package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js +156 -0
- package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js.map +1 -0
- package/lib/cjs/presentation-common/LabelDefinition.d.ts +93 -87
- package/lib/cjs/presentation-common/LabelDefinition.d.ts.map +1 -1
- package/lib/cjs/presentation-common/LabelDefinition.js +78 -73
- package/lib/cjs/presentation-common/LabelDefinition.js.map +1 -1
- package/lib/cjs/presentation-common/LocalizationHelper.d.ts +29 -29
- package/lib/cjs/presentation-common/LocalizationHelper.d.ts.map +1 -1
- package/lib/cjs/presentation-common/LocalizationHelper.js +113 -110
- package/lib/cjs/presentation-common/LocalizationHelper.js.map +1 -1
- package/lib/cjs/presentation-common/PresentationIpcInterface.d.ts +27 -40
- package/lib/cjs/presentation-common/PresentationIpcInterface.d.ts.map +1 -1
- package/lib/cjs/presentation-common/PresentationIpcInterface.js +12 -12
- package/lib/cjs/presentation-common/PresentationIpcInterface.js.map +1 -1
- package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts +279 -261
- package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
- package/lib/cjs/presentation-common/PresentationManagerOptions.js +23 -23
- package/lib/cjs/presentation-common/PresentationManagerOptions.js.map +1 -1
- package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts +186 -186
- package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
- package/lib/cjs/presentation-common/PresentationRpcInterface.js +108 -104
- package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
- package/lib/cjs/presentation-common/RegisteredRuleset.d.ts +26 -26
- package/lib/cjs/presentation-common/RegisteredRuleset.js +33 -33
- package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts +82 -83
- package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
- package/lib/cjs/presentation-common/RpcRequestsHandler.js +166 -171
- package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
- package/lib/cjs/presentation-common/RulesetVariables.d.ts +171 -171
- package/lib/cjs/presentation-common/RulesetVariables.d.ts.map +1 -1
- package/lib/cjs/presentation-common/RulesetVariables.js +55 -55
- package/lib/cjs/presentation-common/RulesetsFactory.d.ts +44 -44
- package/lib/cjs/presentation-common/RulesetsFactory.d.ts.map +1 -1
- package/lib/cjs/presentation-common/RulesetsFactory.js +223 -223
- package/lib/cjs/presentation-common/RulesetsFactory.js.map +1 -1
- package/lib/cjs/presentation-common/Update.d.ts +150 -213
- package/lib/cjs/presentation-common/Update.d.ts.map +1 -1
- package/lib/cjs/presentation-common/Update.js +114 -226
- package/lib/cjs/presentation-common/Update.js.map +1 -1
- package/lib/cjs/presentation-common/Utils.d.ts +62 -62
- package/lib/cjs/presentation-common/Utils.d.ts.map +1 -1
- package/lib/cjs/presentation-common/Utils.js +43 -43
- package/lib/cjs/presentation-common/content/Category.d.ts +49 -49
- package/lib/cjs/presentation-common/content/Category.js +48 -48
- package/lib/cjs/presentation-common/content/Content.d.ts +38 -38
- package/lib/cjs/presentation-common/content/Content.js +56 -56
- package/lib/cjs/presentation-common/content/ContentTraverser.d.ts +271 -271
- package/lib/cjs/presentation-common/content/ContentTraverser.js +437 -439
- package/lib/cjs/presentation-common/content/ContentTraverser.js.map +1 -1
- package/lib/cjs/presentation-common/content/Descriptor.d.ts +328 -328
- package/lib/cjs/presentation-common/content/Descriptor.js +191 -193
- package/lib/cjs/presentation-common/content/Descriptor.js.map +1 -1
- package/lib/cjs/presentation-common/content/DisplayTypes.d.ts +21 -21
- package/lib/cjs/presentation-common/content/DisplayTypes.js +29 -29
- package/lib/cjs/presentation-common/content/Editor.d.ts +15 -15
- package/lib/cjs/presentation-common/content/Editor.js +9 -9
- package/lib/cjs/presentation-common/content/Fields.d.ts +298 -301
- package/lib/cjs/presentation-common/content/Fields.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Fields.js +393 -397
- package/lib/cjs/presentation-common/content/Fields.js.map +1 -1
- package/lib/cjs/presentation-common/content/Item.d.ts +85 -85
- package/lib/cjs/presentation-common/content/Item.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Item.js +84 -84
- package/lib/cjs/presentation-common/content/Item.js.map +1 -1
- package/lib/cjs/presentation-common/content/Property.d.ts +57 -57
- package/lib/cjs/presentation-common/content/Property.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Property.js +40 -40
- package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts +29 -0
- package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -0
- package/lib/cjs/presentation-common/content/PropertyValueFormatter.js +139 -0
- package/lib/cjs/presentation-common/content/PropertyValueFormatter.js.map +1 -0
- package/lib/cjs/presentation-common/content/Renderer.d.ts +11 -11
- package/lib/cjs/presentation-common/content/Renderer.js +9 -9
- package/lib/cjs/presentation-common/content/TypeDescription.d.ts +72 -72
- package/lib/cjs/presentation-common/content/TypeDescription.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/TypeDescription.js +23 -23
- package/lib/cjs/presentation-common/content/Value.d.ts +204 -189
- package/lib/cjs/presentation-common/content/Value.d.ts.map +1 -1
- package/lib/cjs/presentation-common/content/Value.js +281 -273
- package/lib/cjs/presentation-common/content/Value.js.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.d.ts +37 -37
- package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js +31 -31
- package/lib/cjs/presentation-common/hierarchy/Key.d.ts +246 -246
- package/lib/cjs/presentation-common/hierarchy/Key.d.ts.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/Key.js +121 -121
- package/lib/cjs/presentation-common/hierarchy/Key.js.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/Node.d.ts +154 -154
- package/lib/cjs/presentation-common/hierarchy/Node.d.ts.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/Node.js +106 -106
- package/lib/cjs/presentation-common/hierarchy/Node.js.map +1 -1
- package/lib/cjs/presentation-common/hierarchy/NodePathElement.d.ts +96 -96
- package/lib/cjs/presentation-common/hierarchy/NodePathElement.js +122 -122
- package/lib/cjs/presentation-common/rules/ClassSpecifications.d.ts +45 -45
- package/lib/cjs/presentation-common/rules/ClassSpecifications.js +9 -9
- package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.d.ts +31 -31
- package/lib/cjs/presentation-common/rules/RelatedInstanceSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/RelationshipDirection.d.ts +13 -13
- package/lib/cjs/presentation-common/rules/RelationshipDirection.js +21 -21
- package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.d.ts +56 -56
- package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/RelationshipPathSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/Rule.d.ts +76 -76
- package/lib/cjs/presentation-common/rules/Rule.js +35 -35
- package/lib/cjs/presentation-common/rules/Ruleset.d.ts +65 -65
- package/lib/cjs/presentation-common/rules/Ruleset.js +9 -9
- package/lib/cjs/presentation-common/rules/SchemasSpecification.d.ts +41 -41
- package/lib/cjs/presentation-common/rules/SchemasSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/Variables.d.ts +58 -58
- package/lib/cjs/presentation-common/rules/Variables.js +25 -25
- package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.d.ts +41 -41
- package/lib/cjs/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.d.ts +25 -25
- package/lib/cjs/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/content/ContentRule.d.ts +30 -30
- package/lib/cjs/presentation-common/rules/content/ContentRule.js +9 -9
- package/lib/cjs/presentation-common/rules/content/ContentSpecification.d.ts +58 -58
- package/lib/cjs/presentation-common/rules/content/ContentSpecification.js +20 -20
- package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.d.ts +19 -19
- package/lib/cjs/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +9 -9
- package/lib/cjs/presentation-common/rules/content/PropertySpecification.d.ts +86 -86
- package/lib/cjs/presentation-common/rules/content/PropertySpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.d.ts +28 -28
- package/lib/cjs/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.d.ts +25 -25
- package/lib/cjs/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.d.ts +64 -57
- package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js +9 -9
- package/lib/cjs/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
- package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.d.ts +17 -17
- package/lib/cjs/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts +107 -107
- package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts +108 -108
- package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +21 -21
- package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.d.ts +96 -96
- package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +43 -43
- package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.d.ts +44 -44
- package/lib/cjs/presentation-common/rules/customization/CheckBoxRule.js +9 -9
- package/lib/cjs/presentation-common/rules/customization/CustomizationRule.d.ts +36 -36
- package/lib/cjs/presentation-common/rules/customization/CustomizationRule.js +9 -9
- package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.d.ts +27 -27
- package/lib/cjs/presentation-common/rules/customization/ExtendedDataRule.js +9 -9
- package/lib/cjs/presentation-common/rules/customization/GroupingRule.d.ts +207 -207
- package/lib/cjs/presentation-common/rules/customization/GroupingRule.js +51 -51
- package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.d.ts +29 -29
- package/lib/cjs/presentation-common/rules/customization/ImageIdOverride.js +9 -9
- package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.d.ts +158 -158
- package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js +25 -25
- package/lib/cjs/presentation-common/rules/customization/LabelOverride.d.ts +40 -40
- package/lib/cjs/presentation-common/rules/customization/LabelOverride.js +9 -9
- package/lib/cjs/presentation-common/rules/customization/SortingRule.d.ts +58 -58
- package/lib/cjs/presentation-common/rules/customization/SortingRule.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/customization/SortingRule.js +9 -9
- package/lib/cjs/presentation-common/rules/customization/StyleOverride.d.ts +48 -48
- package/lib/cjs/presentation-common/rules/customization/StyleOverride.js +9 -9
- package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.d.ts +14 -14
- package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeRule.js +9 -9
- package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts +98 -98
- package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js +21 -21
- package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts +31 -31
- package/lib/cjs/presentation-common/rules/hierarchy/CustomNodeSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.d.ts +79 -79
- package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +19 -19
- package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts +39 -39
- package/lib/cjs/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.d.ts +50 -50
- package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.d.ts.map +1 -1
- package/lib/cjs/presentation-common/rules/hierarchy/NavigationRule.js +9 -9
- package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.d.ts +27 -27
- package/lib/cjs/presentation-common/rules/hierarchy/NodeArtifactsRule.js +9 -9
- package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.d.ts +27 -27
- package/lib/cjs/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +9 -9
- package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.d.ts +16 -16
- package/lib/cjs/presentation-common/rules/hierarchy/RootNodeRule.js +9 -9
- package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.d.ts +35 -35
- package/lib/cjs/presentation-common/rules/hierarchy/SubCondition.js +9 -9
- package/lib/cjs/presentation-common/selection/SelectionScope.d.ts +38 -38
- package/lib/cjs/presentation-common/selection/SelectionScope.d.ts.map +1 -1
- package/lib/cjs/presentation-common/selection/SelectionScope.js +9 -9
- package/lib/cjs/presentation-common.d.ts +114 -112
- package/lib/cjs/presentation-common.d.ts.map +1 -1
- package/lib/cjs/presentation-common.js +134 -128
- package/lib/cjs/presentation-common.js.map +1 -1
- package/lib/esm/presentation-common/AsyncTasks.d.ts +22 -22
- package/lib/esm/presentation-common/AsyncTasks.js +34 -34
- package/lib/esm/presentation-common/CommonLoggerCategory.d.ts +12 -12
- package/lib/esm/presentation-common/CommonLoggerCategory.js +17 -17
- package/lib/esm/presentation-common/Diagnostics.d.ts +125 -125
- package/lib/esm/presentation-common/Diagnostics.d.ts.map +1 -1
- package/lib/esm/presentation-common/Diagnostics.js +67 -67
- package/lib/esm/presentation-common/EC.d.ts +347 -350
- package/lib/esm/presentation-common/EC.d.ts.map +1 -1
- package/lib/esm/presentation-common/EC.js +287 -287
- package/lib/esm/presentation-common/EC.js.map +1 -1
- package/lib/esm/presentation-common/ElementProperties.d.ts +123 -123
- package/lib/esm/presentation-common/ElementProperties.d.ts.map +1 -1
- package/lib/esm/presentation-common/ElementProperties.js +8 -8
- package/lib/esm/presentation-common/Error.d.ts +47 -45
- package/lib/esm/presentation-common/Error.d.ts.map +1 -1
- package/lib/esm/presentation-common/Error.js +60 -58
- package/lib/esm/presentation-common/Error.js.map +1 -1
- package/lib/esm/presentation-common/InstanceFilterDefinition.d.ts +93 -93
- package/lib/esm/presentation-common/InstanceFilterDefinition.d.ts.map +1 -1
- package/lib/esm/presentation-common/InstanceFilterDefinition.js +8 -8
- package/lib/esm/presentation-common/KeySet.d.ts +146 -146
- package/lib/esm/presentation-common/KeySet.d.ts.map +1 -1
- package/lib/esm/presentation-common/KeySet.js +424 -424
- package/lib/esm/presentation-common/KoqPropertyValueFormatter.d.ts +20 -0
- package/lib/esm/presentation-common/KoqPropertyValueFormatter.d.ts.map +1 -0
- package/lib/esm/presentation-common/KoqPropertyValueFormatter.js +152 -0
- package/lib/esm/presentation-common/KoqPropertyValueFormatter.js.map +1 -0
- package/lib/esm/presentation-common/LabelDefinition.d.ts +93 -87
- package/lib/esm/presentation-common/LabelDefinition.d.ts.map +1 -1
- package/lib/esm/presentation-common/LabelDefinition.js +75 -70
- package/lib/esm/presentation-common/LabelDefinition.js.map +1 -1
- package/lib/esm/presentation-common/LocalizationHelper.d.ts +29 -29
- package/lib/esm/presentation-common/LocalizationHelper.d.ts.map +1 -1
- package/lib/esm/presentation-common/LocalizationHelper.js +109 -106
- package/lib/esm/presentation-common/LocalizationHelper.js.map +1 -1
- package/lib/esm/presentation-common/PresentationIpcInterface.d.ts +27 -40
- package/lib/esm/presentation-common/PresentationIpcInterface.d.ts.map +1 -1
- package/lib/esm/presentation-common/PresentationIpcInterface.js +9 -9
- package/lib/esm/presentation-common/PresentationIpcInterface.js.map +1 -1
- package/lib/esm/presentation-common/PresentationManagerOptions.d.ts +279 -261
- package/lib/esm/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
- package/lib/esm/presentation-common/PresentationManagerOptions.js +18 -18
- package/lib/esm/presentation-common/PresentationManagerOptions.js.map +1 -1
- package/lib/esm/presentation-common/PresentationRpcInterface.d.ts +186 -186
- package/lib/esm/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
- package/lib/esm/presentation-common/PresentationRpcInterface.js +105 -100
- package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
- package/lib/esm/presentation-common/RegisteredRuleset.d.ts +26 -26
- package/lib/esm/presentation-common/RegisteredRuleset.js +29 -29
- package/lib/esm/presentation-common/RpcRequestsHandler.d.ts +82 -83
- package/lib/esm/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
- package/lib/esm/presentation-common/RpcRequestsHandler.js +162 -167
- package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
- package/lib/esm/presentation-common/RulesetVariables.d.ts +171 -171
- package/lib/esm/presentation-common/RulesetVariables.d.ts.map +1 -1
- package/lib/esm/presentation-common/RulesetVariables.js +52 -52
- package/lib/esm/presentation-common/RulesetsFactory.d.ts +44 -44
- package/lib/esm/presentation-common/RulesetsFactory.d.ts.map +1 -1
- package/lib/esm/presentation-common/RulesetsFactory.js +219 -219
- package/lib/esm/presentation-common/RulesetsFactory.js.map +1 -1
- package/lib/esm/presentation-common/Update.d.ts +150 -213
- package/lib/esm/presentation-common/Update.d.ts.map +1 -1
- package/lib/esm/presentation-common/Update.js +111 -223
- package/lib/esm/presentation-common/Update.js.map +1 -1
- package/lib/esm/presentation-common/Utils.d.ts +62 -62
- package/lib/esm/presentation-common/Utils.d.ts.map +1 -1
- package/lib/esm/presentation-common/Utils.js +39 -39
- package/lib/esm/presentation-common/content/Category.d.ts +49 -49
- package/lib/esm/presentation-common/content/Category.js +45 -45
- package/lib/esm/presentation-common/content/Content.d.ts +38 -38
- package/lib/esm/presentation-common/content/Content.js +52 -52
- package/lib/esm/presentation-common/content/ContentTraverser.d.ts +271 -271
- package/lib/esm/presentation-common/content/ContentTraverser.js +427 -429
- package/lib/esm/presentation-common/content/ContentTraverser.js.map +1 -1
- package/lib/esm/presentation-common/content/Descriptor.d.ts +328 -328
- package/lib/esm/presentation-common/content/Descriptor.js +187 -189
- package/lib/esm/presentation-common/content/Descriptor.js.map +1 -1
- package/lib/esm/presentation-common/content/DisplayTypes.d.ts +21 -21
- package/lib/esm/presentation-common/content/DisplayTypes.js +26 -26
- package/lib/esm/presentation-common/content/Editor.d.ts +15 -15
- package/lib/esm/presentation-common/content/Editor.js +8 -8
- package/lib/esm/presentation-common/content/Fields.d.ts +298 -301
- package/lib/esm/presentation-common/content/Fields.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Fields.js +386 -390
- package/lib/esm/presentation-common/content/Fields.js.map +1 -1
- package/lib/esm/presentation-common/content/Item.d.ts +85 -85
- package/lib/esm/presentation-common/content/Item.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Item.js +80 -80
- package/lib/esm/presentation-common/content/Item.js.map +1 -1
- package/lib/esm/presentation-common/content/Property.d.ts +57 -57
- package/lib/esm/presentation-common/content/Property.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Property.js +37 -37
- package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts +29 -0
- package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -0
- package/lib/esm/presentation-common/content/PropertyValueFormatter.js +134 -0
- package/lib/esm/presentation-common/content/PropertyValueFormatter.js.map +1 -0
- package/lib/esm/presentation-common/content/Renderer.d.ts +11 -11
- package/lib/esm/presentation-common/content/Renderer.js +8 -8
- package/lib/esm/presentation-common/content/TypeDescription.d.ts +72 -72
- package/lib/esm/presentation-common/content/TypeDescription.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/TypeDescription.js +20 -20
- package/lib/esm/presentation-common/content/Value.d.ts +204 -189
- package/lib/esm/presentation-common/content/Value.d.ts.map +1 -1
- package/lib/esm/presentation-common/content/Value.js +278 -270
- package/lib/esm/presentation-common/content/Value.js.map +1 -1
- package/lib/esm/presentation-common/hierarchy/HierarchyLevel.d.ts +37 -37
- package/lib/esm/presentation-common/hierarchy/HierarchyLevel.js +28 -28
- package/lib/esm/presentation-common/hierarchy/Key.d.ts +246 -246
- package/lib/esm/presentation-common/hierarchy/Key.d.ts.map +1 -1
- package/lib/esm/presentation-common/hierarchy/Key.js +118 -118
- package/lib/esm/presentation-common/hierarchy/Key.js.map +1 -1
- package/lib/esm/presentation-common/hierarchy/Node.d.ts +154 -154
- package/lib/esm/presentation-common/hierarchy/Node.d.ts.map +1 -1
- package/lib/esm/presentation-common/hierarchy/Node.js +103 -103
- package/lib/esm/presentation-common/hierarchy/Node.js.map +1 -1
- package/lib/esm/presentation-common/hierarchy/NodePathElement.d.ts +96 -96
- package/lib/esm/presentation-common/hierarchy/NodePathElement.js +119 -119
- package/lib/esm/presentation-common/rules/ClassSpecifications.d.ts +45 -45
- package/lib/esm/presentation-common/rules/ClassSpecifications.js +8 -8
- package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.d.ts +31 -31
- package/lib/esm/presentation-common/rules/RelatedInstanceSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/RelationshipDirection.d.ts +13 -13
- package/lib/esm/presentation-common/rules/RelationshipDirection.js +18 -18
- package/lib/esm/presentation-common/rules/RelationshipPathSpecification.d.ts +56 -56
- package/lib/esm/presentation-common/rules/RelationshipPathSpecification.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/RelationshipPathSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/Rule.d.ts +76 -76
- package/lib/esm/presentation-common/rules/Rule.js +32 -32
- package/lib/esm/presentation-common/rules/Ruleset.d.ts +65 -65
- package/lib/esm/presentation-common/rules/Ruleset.js +8 -8
- package/lib/esm/presentation-common/rules/SchemasSpecification.d.ts +41 -41
- package/lib/esm/presentation-common/rules/SchemasSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/Variables.d.ts +58 -58
- package/lib/esm/presentation-common/rules/Variables.js +22 -22
- package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.d.ts +41 -41
- package/lib/esm/presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.d.ts +25 -25
- package/lib/esm/presentation-common/rules/content/ContentRelatedInstancesSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/content/ContentRule.d.ts +30 -30
- package/lib/esm/presentation-common/rules/content/ContentRule.js +8 -8
- package/lib/esm/presentation-common/rules/content/ContentSpecification.d.ts +58 -58
- package/lib/esm/presentation-common/rules/content/ContentSpecification.js +17 -17
- package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.d.ts +19 -19
- package/lib/esm/presentation-common/rules/content/DefaultPropertyCategoryOverride.js +8 -8
- package/lib/esm/presentation-common/rules/content/PropertySpecification.d.ts +86 -86
- package/lib/esm/presentation-common/rules/content/PropertySpecification.js +8 -8
- package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.d.ts +28 -28
- package/lib/esm/presentation-common/rules/content/SelectedNodeInstancesSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.d.ts +25 -25
- package/lib/esm/presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.d.ts +64 -57
- package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js +8 -8
- package/lib/esm/presentation-common/rules/content/modifiers/ContentModifier.js.map +1 -1
- package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.d.ts +17 -17
- package/lib/esm/presentation-common/rules/content/modifiers/CustomRendererSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts +107 -107
- package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/content/modifiers/PropertyCategorySpecification.js +8 -8
- package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.d.ts +108 -108
- package/lib/esm/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +18 -18
- package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.d.ts +96 -96
- package/lib/esm/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +40 -40
- package/lib/esm/presentation-common/rules/customization/CheckBoxRule.d.ts +44 -44
- package/lib/esm/presentation-common/rules/customization/CheckBoxRule.js +8 -8
- package/lib/esm/presentation-common/rules/customization/CustomizationRule.d.ts +36 -36
- package/lib/esm/presentation-common/rules/customization/CustomizationRule.js +8 -8
- package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.d.ts +27 -27
- package/lib/esm/presentation-common/rules/customization/ExtendedDataRule.js +8 -8
- package/lib/esm/presentation-common/rules/customization/GroupingRule.d.ts +207 -207
- package/lib/esm/presentation-common/rules/customization/GroupingRule.js +48 -48
- package/lib/esm/presentation-common/rules/customization/ImageIdOverride.d.ts +29 -29
- package/lib/esm/presentation-common/rules/customization/ImageIdOverride.js +8 -8
- package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.d.ts +158 -158
- package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/customization/InstanceLabelOverride.js +22 -22
- package/lib/esm/presentation-common/rules/customization/LabelOverride.d.ts +40 -40
- package/lib/esm/presentation-common/rules/customization/LabelOverride.js +8 -8
- package/lib/esm/presentation-common/rules/customization/SortingRule.d.ts +58 -58
- package/lib/esm/presentation-common/rules/customization/SortingRule.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/customization/SortingRule.js +8 -8
- package/lib/esm/presentation-common/rules/customization/StyleOverride.d.ts +48 -48
- package/lib/esm/presentation-common/rules/customization/StyleOverride.js +8 -8
- package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.d.ts +14 -14
- package/lib/esm/presentation-common/rules/hierarchy/ChildNodeRule.js +8 -8
- package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts +98 -98
- package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/hierarchy/ChildNodeSpecification.js +18 -18
- package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.d.ts +31 -31
- package/lib/esm/presentation-common/rules/hierarchy/CustomNodeSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.d.ts +79 -79
- package/lib/esm/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +16 -16
- package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.d.ts +39 -39
- package/lib/esm/presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.d.ts +50 -50
- package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.d.ts.map +1 -1
- package/lib/esm/presentation-common/rules/hierarchy/NavigationRule.js +8 -8
- package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.d.ts +27 -27
- package/lib/esm/presentation-common/rules/hierarchy/NodeArtifactsRule.js +8 -8
- package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.d.ts +27 -27
- package/lib/esm/presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification.js +8 -8
- package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.d.ts +16 -16
- package/lib/esm/presentation-common/rules/hierarchy/RootNodeRule.js +8 -8
- package/lib/esm/presentation-common/rules/hierarchy/SubCondition.d.ts +35 -35
- package/lib/esm/presentation-common/rules/hierarchy/SubCondition.js +8 -8
- package/lib/esm/presentation-common/selection/SelectionScope.d.ts +38 -38
- package/lib/esm/presentation-common/selection/SelectionScope.d.ts.map +1 -1
- package/lib/esm/presentation-common/selection/SelectionScope.js +8 -8
- package/lib/esm/presentation-common.d.ts +114 -112
- package/lib/esm/presentation-common.d.ts.map +1 -1
- package/lib/esm/presentation-common.js +118 -116
- package/lib/esm/presentation-common.js.map +1 -1
- package/lib/public/locales/en/Presentation.json +19 -0
- package/package.json +17 -15
- package/lib/cjs/assets/locales/en/BisCore.json +0 -18
- package/lib/cjs/assets/locales/en/ECPresentation.json +0 -9
- package/lib/cjs/assets/locales/en/RulesEngine.json +0 -6
- package/lib/cjs/assets/locales/en-PSEUDO/BisCore.json +0 -18
- package/lib/cjs/assets/locales/en-PSEUDO/ECPresentation.json +0 -9
- package/lib/cjs/assets/locales/en-PSEUDO/RulesEngine.json +0 -6
- package/lib/public/locales/en/BisCore.json +0 -18
- package/lib/public/locales/en/ECPresentation.json +0 -9
- package/lib/public/locales/en/RulesEngine.json +0 -6
|
@@ -1,440 +1,438 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
/** @packageDocumentation
|
|
7
|
-
* @module Content
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.parseCombinedFieldNames = exports.combineFieldNames = exports.FIELD_NAMES_SEPARATOR = exports.addFieldHierarchy = exports.createFieldHierarchies = exports.traverseContentItem = exports.traverseContent = exports.traverseFieldHierarchy = void 0;
|
|
11
|
-
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
|
-
const Content_1 = require("./Content");
|
|
13
|
-
const Fields_1 = require("./Fields");
|
|
14
|
-
const Item_1 = require("./Item");
|
|
15
|
-
const TypeDescription_1 = require("./TypeDescription");
|
|
16
|
-
const Value_1 = require("./Value");
|
|
17
|
-
/**
|
|
18
|
-
* An utility for traversing field hierarchy. Stops traversal as soon as `cb` returns `false`.
|
|
19
|
-
* @public
|
|
20
|
-
*/
|
|
21
|
-
function traverseFieldHierarchy(hierarchy, cb) {
|
|
22
|
-
if (cb(hierarchy))
|
|
23
|
-
hierarchy.childFields.forEach((childHierarchy) => traverseFieldHierarchy(childHierarchy, cb));
|
|
24
|
-
}
|
|
25
|
-
exports.traverseFieldHierarchy = traverseFieldHierarchy;
|
|
26
|
-
/**
|
|
27
|
-
* An utility to traverse content using provided visitor. Provides means to parse content into different formats,
|
|
28
|
-
* for different components.
|
|
29
|
-
* @public
|
|
30
|
-
*/
|
|
31
|
-
function traverseContent(visitor, content) {
|
|
32
|
-
if (!visitor.startContent({ descriptor: content.descriptor }))
|
|
33
|
-
return;
|
|
34
|
-
try {
|
|
35
|
-
const fieldHierarchies = createFieldHierarchies(content.descriptor.fields);
|
|
36
|
-
visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });
|
|
37
|
-
content.contentSet.forEach((item) => {
|
|
38
|
-
traverseContentItemFields(visitor, fieldHierarchies, item);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
finally {
|
|
42
|
-
visitor.finishContent();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.traverseContent = traverseContent;
|
|
46
|
-
/**
|
|
47
|
-
* An utility for calling [[traverseContent]] when there's only one content item.
|
|
48
|
-
* @public
|
|
49
|
-
*/
|
|
50
|
-
function traverseContentItem(visitor, descriptor, item) {
|
|
51
|
-
traverseContent(visitor, new Content_1.Content(descriptor, [item]));
|
|
52
|
-
}
|
|
53
|
-
exports.traverseContentItem = traverseContentItem;
|
|
54
|
-
class VisitedCategories {
|
|
55
|
-
constructor(_visitor, category) {
|
|
56
|
-
this._visitor = _visitor;
|
|
57
|
-
const stack = [];
|
|
58
|
-
let curr = category;
|
|
59
|
-
while (curr) {
|
|
60
|
-
stack.push(curr);
|
|
61
|
-
curr = curr.parent;
|
|
62
|
-
}
|
|
63
|
-
stack.reverse();
|
|
64
|
-
this._didVisitAllHierarchy = true;
|
|
65
|
-
this._visitedCategories = [];
|
|
66
|
-
for (curr of stack) {
|
|
67
|
-
if (this._visitor.startCategory({ category: curr })) {
|
|
68
|
-
this._visitedCategories.push(curr);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
this._didVisitAllHierarchy = false;
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
dispose() {
|
|
77
|
-
while (this._visitedCategories.pop())
|
|
78
|
-
this._visitor.finishCategory();
|
|
79
|
-
}
|
|
80
|
-
get shouldContinue() { return this._didVisitAllHierarchy; }
|
|
81
|
-
}
|
|
82
|
-
function traverseContentItemFields(visitor, fieldHierarchies, item) {
|
|
83
|
-
if (!visitor.startItem({ item }))
|
|
84
|
-
return;
|
|
85
|
-
try {
|
|
86
|
-
fieldHierarchies.forEach((fieldHierarchy) => {
|
|
87
|
-
(0, core_bentley_1.using)(new VisitedCategories(visitor, fieldHierarchy.field.category), (res) => {
|
|
88
|
-
if (res.shouldContinue)
|
|
89
|
-
traverseContentItemField(visitor, fieldHierarchy, item);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
finally {
|
|
94
|
-
visitor.finishItem();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
function traverseContentItemField(visitor, fieldHierarchy, item) {
|
|
98
|
-
if (!visitor.startField({ hierarchy: fieldHierarchy }))
|
|
99
|
-
return;
|
|
100
|
-
try {
|
|
101
|
-
const rootToThisField = createFieldPath(fieldHierarchy.field);
|
|
102
|
-
let parentFieldName;
|
|
103
|
-
const pathUpToField = rootToThisField.slice(undefined, -1);
|
|
104
|
-
for (let i = 0; i < pathUpToField.length; ++i) {
|
|
105
|
-
const parentField = pathUpToField[i];
|
|
106
|
-
const nextField = rootToThisField[i + 1];
|
|
107
|
-
if (item.isFieldMerged(parentField.name)) {
|
|
108
|
-
visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: parentField, parentFieldName });
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const { emptyNestedItem, convertedItem } = convertNestedContentItemToStructArrayItem(item, parentField, nextField);
|
|
112
|
-
if (emptyNestedItem)
|
|
113
|
-
return;
|
|
114
|
-
item = convertedItem;
|
|
115
|
-
parentFieldName = combineFieldNames(parentField.name, parentFieldName);
|
|
116
|
-
}
|
|
117
|
-
if (item.isFieldMerged(fieldHierarchy.field.name)) {
|
|
118
|
-
visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: fieldHierarchy.field, parentFieldName });
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
if (fieldHierarchy.field.isNestedContentField()) {
|
|
122
|
-
fieldHierarchy = convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, parentFieldName);
|
|
123
|
-
const { emptyNestedItem, convertedItem } = convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy);
|
|
124
|
-
if (emptyNestedItem)
|
|
125
|
-
return;
|
|
126
|
-
item = convertedItem;
|
|
127
|
-
}
|
|
128
|
-
else if (pathUpToField.length > 0) {
|
|
129
|
-
fieldHierarchy = {
|
|
130
|
-
...fieldHierarchy,
|
|
131
|
-
field: Object.assign(fieldHierarchy.field.clone(), {
|
|
132
|
-
type: {
|
|
133
|
-
valueFormat: TypeDescription_1.PropertyValueFormat.Array,
|
|
134
|
-
typeName: `${fieldHierarchy.field.type.typeName}[]`,
|
|
135
|
-
memberType: fieldHierarchy.field.type,
|
|
136
|
-
},
|
|
137
|
-
}),
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
traverseContentItemFieldValue(visitor, fieldHierarchy, item.mergedFieldNames, fieldHierarchy.field.type, parentFieldName, item.values[fieldHierarchy.field.name], item.displayValues[fieldHierarchy.field.name]);
|
|
141
|
-
}
|
|
142
|
-
finally {
|
|
143
|
-
visitor.finishField();
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue) {
|
|
147
|
-
if (rawValue !== undefined) {
|
|
148
|
-
if (valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Array) {
|
|
149
|
-
(0, core_bentley_1.assert)(Value_1.Value.isArray(rawValue));
|
|
150
|
-
(0, core_bentley_1.assert)(Value_1.DisplayValue.isArray(displayValue));
|
|
151
|
-
return traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);
|
|
152
|
-
}
|
|
153
|
-
if (valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Struct) {
|
|
154
|
-
(0, core_bentley_1.assert)(Value_1.Value.isMap(rawValue));
|
|
155
|
-
(0, core_bentley_1.assert)(Value_1.DisplayValue.isMap(displayValue));
|
|
156
|
-
return traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);
|
|
160
|
-
}
|
|
161
|
-
function traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValues, displayValues) {
|
|
162
|
-
(0, core_bentley_1.assert)(rawValues.length === displayValues.length);
|
|
163
|
-
(0, core_bentley_1.assert)(valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Array);
|
|
164
|
-
if (!visitor.startArray({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues }))
|
|
165
|
-
return;
|
|
166
|
-
try {
|
|
167
|
-
const itemType = valueType.memberType;
|
|
168
|
-
rawValues.forEach((_, i) => {
|
|
169
|
-
traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, itemType, parentFieldName, rawValues[i], displayValues[i]);
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
finally {
|
|
173
|
-
visitor.finishArray();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
function traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValues, displayValues) {
|
|
177
|
-
(0, core_bentley_1.assert)(valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Struct);
|
|
178
|
-
if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues }))
|
|
179
|
-
return;
|
|
180
|
-
try {
|
|
181
|
-
if (fieldHierarchy.field.isNestedContentField())
|
|
182
|
-
parentFieldName = combineFieldNames(fieldHierarchy.field.name, parentFieldName);
|
|
183
|
-
valueType.members.forEach((memberDescription) => {
|
|
184
|
-
let memberField = fieldHierarchy.childFields.find((f) => f.field.name === memberDescription.name);
|
|
185
|
-
if (!memberField) {
|
|
186
|
-
// Not finding a member field means we're traversing an ECStruct. We still need to carry member information, so we
|
|
187
|
-
// create a fake field to represent the member
|
|
188
|
-
memberField = {
|
|
189
|
-
field: new Fields_1.Field(fieldHierarchy.field.category, memberDescription.name, memberDescription.label, memberDescription.type, fieldHierarchy.field.isReadonly, 0),
|
|
190
|
-
childFields: [],
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
traverseContentItemFieldValue(visitor, memberField, mergedFieldNames, memberDescription.type, parentFieldName, rawValues[memberDescription.name], displayValues[memberDescription.name]);
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
finally {
|
|
197
|
-
visitor.finishStruct();
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
function traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue) {
|
|
201
|
-
if (-1 !== mergedFieldNames.indexOf(fieldHierarchy.field.name)) {
|
|
202
|
-
visitor.processMergedValue({ mergedField: fieldHierarchy.field, requestedField: fieldHierarchy.field, parentFieldName });
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
visitor.processPrimitiveValue({ field: fieldHierarchy.field, valueType, parentFieldName, rawValue, displayValue });
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Parses a list of [[Field]] objects into a list of [[FieldHierarchy]].
|
|
209
|
-
*
|
|
210
|
-
* @param ignoreCategories Enables adding all of the `nestedFields` to parent field's `childFields`
|
|
211
|
-
* without considering categories.
|
|
212
|
-
*
|
|
213
|
-
* @public
|
|
214
|
-
*/
|
|
215
|
-
function createFieldHierarchies(fields, ignoreCategories) {
|
|
216
|
-
const hierarchies = new Array();
|
|
217
|
-
const visitField = (category, field, parentField) => {
|
|
218
|
-
let childFields = [];
|
|
219
|
-
if (field.isNestedContentField()) {
|
|
220
|
-
// visit all nested fields
|
|
221
|
-
childFields = visitFields(field.nestedFields, field);
|
|
222
|
-
if (0 === childFields.length)
|
|
223
|
-
return undefined;
|
|
224
|
-
}
|
|
225
|
-
const fieldHierarchy = { field, childFields };
|
|
226
|
-
if (category ===
|
|
227
|
-
// if categories of this field and its parent field match - return the field hierarchy without
|
|
228
|
-
// including it as a top level field
|
|
229
|
-
return fieldHierarchy;
|
|
230
|
-
}
|
|
231
|
-
addFieldHierarchy(hierarchies, fieldHierarchy);
|
|
232
|
-
return undefined;
|
|
233
|
-
};
|
|
234
|
-
const visitFields = (visitedFields, parentField) => {
|
|
235
|
-
const includedFields = [];
|
|
236
|
-
visitedFields.forEach((field) => {
|
|
237
|
-
const visitedField = visitField(field.category, field, parentField);
|
|
238
|
-
if (visitedField)
|
|
239
|
-
includedFields.push(visitedField);
|
|
240
|
-
});
|
|
241
|
-
return includedFields;
|
|
242
|
-
};
|
|
243
|
-
visitFields(fields, undefined);
|
|
244
|
-
return hierarchies;
|
|
245
|
-
}
|
|
246
|
-
exports.createFieldHierarchies = createFieldHierarchies;
|
|
247
|
-
function findRelatedFields(rootFields, hierarchy) {
|
|
248
|
-
// build a list of parent fields in hierarchy
|
|
249
|
-
const fields = [];
|
|
250
|
-
let currField = hierarchy.field;
|
|
251
|
-
while (currField) {
|
|
252
|
-
fields.push(currField);
|
|
253
|
-
currField = currField.parent;
|
|
254
|
-
}
|
|
255
|
-
for (let rootIndex = 0; rootIndex < rootFields.length; ++rootIndex) {
|
|
256
|
-
const rootFieldHierarchy = rootFields[rootIndex];
|
|
257
|
-
if (rootFieldHierarchy.field.category !== hierarchy.field.category) {
|
|
258
|
-
// only interested in fields with the same category
|
|
259
|
-
continue;
|
|
260
|
-
}
|
|
261
|
-
let first = true;
|
|
262
|
-
currField = rootFieldHierarchy.field;
|
|
263
|
-
while (currField) {
|
|
264
|
-
const index = fields.findIndex((f) => f.name === currField.name);
|
|
265
|
-
if (-1 !== index) {
|
|
266
|
-
return {
|
|
267
|
-
existing: {
|
|
268
|
-
field: currField,
|
|
269
|
-
hierarchy: first ? rootFieldHierarchy : undefined,
|
|
270
|
-
index: rootIndex,
|
|
271
|
-
},
|
|
272
|
-
matchingField: fields[index],
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
currField = currField.parent;
|
|
276
|
-
first = false;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
return undefined;
|
|
280
|
-
}
|
|
281
|
-
function buildParentHierarchy(hierarchy, parentField) {
|
|
282
|
-
// note: parentField is found by walking up the parentship relationship
|
|
283
|
-
// from hierarchy.field, so we expect to always find it here
|
|
284
|
-
while (hierarchy.field !== parentField) {
|
|
285
|
-
const hierarchyParent = hierarchy.field.parent;
|
|
286
|
-
(0, core_bentley_1.assert)(hierarchyParent !== undefined);
|
|
287
|
-
hierarchy = { field: hierarchyParent, childFields: [hierarchy] };
|
|
288
|
-
}
|
|
289
|
-
return hierarchy;
|
|
290
|
-
}
|
|
291
|
-
function mergeHierarchies(lhs, rhs) {
|
|
292
|
-
(0, core_bentley_1.assert)(lhs.field.name === rhs.field.name);
|
|
293
|
-
const result = {
|
|
294
|
-
field: lhs.field.clone(),
|
|
295
|
-
childFields: [...lhs.childFields],
|
|
296
|
-
};
|
|
297
|
-
rhs.childFields.forEach((rhsChildHierarchy) => {
|
|
298
|
-
const indexInResult = result.childFields.findIndex((resultHierarchy) => resultHierarchy.field.name === rhsChildHierarchy.field.name);
|
|
299
|
-
if (indexInResult !== -1)
|
|
300
|
-
result.childFields[indexInResult] = mergeHierarchies(result.childFields[indexInResult], rhsChildHierarchy);
|
|
301
|
-
else
|
|
302
|
-
result.childFields.push(rhsChildHierarchy);
|
|
303
|
-
});
|
|
304
|
-
return result;
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Adds a field hierarchy into root field hierarchies list. *
|
|
308
|
-
* @public
|
|
309
|
-
*/
|
|
310
|
-
function addFieldHierarchy(rootHierarchies, hierarchy) {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
const
|
|
318
|
-
const
|
|
319
|
-
const
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
currField
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
path
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
*
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
*
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
const
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
const
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
result.
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
return { emptyNestedItem: false, convertedItem };
|
|
439
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module Content
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.parseCombinedFieldNames = exports.combineFieldNames = exports.FIELD_NAMES_SEPARATOR = exports.addFieldHierarchy = exports.createFieldHierarchies = exports.traverseContentItem = exports.traverseContent = exports.traverseFieldHierarchy = void 0;
|
|
11
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
|
+
const Content_1 = require("./Content");
|
|
13
|
+
const Fields_1 = require("./Fields");
|
|
14
|
+
const Item_1 = require("./Item");
|
|
15
|
+
const TypeDescription_1 = require("./TypeDescription");
|
|
16
|
+
const Value_1 = require("./Value");
|
|
17
|
+
/**
|
|
18
|
+
* An utility for traversing field hierarchy. Stops traversal as soon as `cb` returns `false`.
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
function traverseFieldHierarchy(hierarchy, cb) {
|
|
22
|
+
if (cb(hierarchy))
|
|
23
|
+
hierarchy.childFields.forEach((childHierarchy) => traverseFieldHierarchy(childHierarchy, cb));
|
|
24
|
+
}
|
|
25
|
+
exports.traverseFieldHierarchy = traverseFieldHierarchy;
|
|
26
|
+
/**
|
|
27
|
+
* An utility to traverse content using provided visitor. Provides means to parse content into different formats,
|
|
28
|
+
* for different components.
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
function traverseContent(visitor, content) {
|
|
32
|
+
if (!visitor.startContent({ descriptor: content.descriptor }))
|
|
33
|
+
return;
|
|
34
|
+
try {
|
|
35
|
+
const fieldHierarchies = createFieldHierarchies(content.descriptor.fields);
|
|
36
|
+
visitor.processFieldHierarchies({ hierarchies: fieldHierarchies });
|
|
37
|
+
content.contentSet.forEach((item) => {
|
|
38
|
+
traverseContentItemFields(visitor, fieldHierarchies, item);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
visitor.finishContent();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.traverseContent = traverseContent;
|
|
46
|
+
/**
|
|
47
|
+
* An utility for calling [[traverseContent]] when there's only one content item.
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
function traverseContentItem(visitor, descriptor, item) {
|
|
51
|
+
traverseContent(visitor, new Content_1.Content(descriptor, [item]));
|
|
52
|
+
}
|
|
53
|
+
exports.traverseContentItem = traverseContentItem;
|
|
54
|
+
class VisitedCategories {
|
|
55
|
+
constructor(_visitor, category) {
|
|
56
|
+
this._visitor = _visitor;
|
|
57
|
+
const stack = [];
|
|
58
|
+
let curr = category;
|
|
59
|
+
while (curr) {
|
|
60
|
+
stack.push(curr);
|
|
61
|
+
curr = curr.parent;
|
|
62
|
+
}
|
|
63
|
+
stack.reverse();
|
|
64
|
+
this._didVisitAllHierarchy = true;
|
|
65
|
+
this._visitedCategories = [];
|
|
66
|
+
for (curr of stack) {
|
|
67
|
+
if (this._visitor.startCategory({ category: curr })) {
|
|
68
|
+
this._visitedCategories.push(curr);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this._didVisitAllHierarchy = false;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
dispose() {
|
|
77
|
+
while (this._visitedCategories.pop())
|
|
78
|
+
this._visitor.finishCategory();
|
|
79
|
+
}
|
|
80
|
+
get shouldContinue() { return this._didVisitAllHierarchy; }
|
|
81
|
+
}
|
|
82
|
+
function traverseContentItemFields(visitor, fieldHierarchies, item) {
|
|
83
|
+
if (!visitor.startItem({ item }))
|
|
84
|
+
return;
|
|
85
|
+
try {
|
|
86
|
+
fieldHierarchies.forEach((fieldHierarchy) => {
|
|
87
|
+
(0, core_bentley_1.using)(new VisitedCategories(visitor, fieldHierarchy.field.category), (res) => {
|
|
88
|
+
if (res.shouldContinue)
|
|
89
|
+
traverseContentItemField(visitor, fieldHierarchy, item);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
visitor.finishItem();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function traverseContentItemField(visitor, fieldHierarchy, item) {
|
|
98
|
+
if (!visitor.startField({ hierarchy: fieldHierarchy }))
|
|
99
|
+
return;
|
|
100
|
+
try {
|
|
101
|
+
const rootToThisField = createFieldPath(fieldHierarchy.field);
|
|
102
|
+
let parentFieldName;
|
|
103
|
+
const pathUpToField = rootToThisField.slice(undefined, -1);
|
|
104
|
+
for (let i = 0; i < pathUpToField.length; ++i) {
|
|
105
|
+
const parentField = pathUpToField[i];
|
|
106
|
+
const nextField = rootToThisField[i + 1];
|
|
107
|
+
if (item.isFieldMerged(parentField.name)) {
|
|
108
|
+
visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: parentField, parentFieldName });
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const { emptyNestedItem, convertedItem } = convertNestedContentItemToStructArrayItem(item, parentField, nextField);
|
|
112
|
+
if (emptyNestedItem)
|
|
113
|
+
return;
|
|
114
|
+
item = convertedItem;
|
|
115
|
+
parentFieldName = combineFieldNames(parentField.name, parentFieldName);
|
|
116
|
+
}
|
|
117
|
+
if (item.isFieldMerged(fieldHierarchy.field.name)) {
|
|
118
|
+
visitor.processMergedValue({ requestedField: fieldHierarchy.field, mergedField: fieldHierarchy.field, parentFieldName });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (fieldHierarchy.field.isNestedContentField()) {
|
|
122
|
+
fieldHierarchy = convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, parentFieldName);
|
|
123
|
+
const { emptyNestedItem, convertedItem } = convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy);
|
|
124
|
+
if (emptyNestedItem)
|
|
125
|
+
return;
|
|
126
|
+
item = convertedItem;
|
|
127
|
+
}
|
|
128
|
+
else if (pathUpToField.length > 0) {
|
|
129
|
+
fieldHierarchy = {
|
|
130
|
+
...fieldHierarchy,
|
|
131
|
+
field: Object.assign(fieldHierarchy.field.clone(), {
|
|
132
|
+
type: {
|
|
133
|
+
valueFormat: TypeDescription_1.PropertyValueFormat.Array,
|
|
134
|
+
typeName: `${fieldHierarchy.field.type.typeName}[]`,
|
|
135
|
+
memberType: fieldHierarchy.field.type,
|
|
136
|
+
},
|
|
137
|
+
}),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
traverseContentItemFieldValue(visitor, fieldHierarchy, item.mergedFieldNames, fieldHierarchy.field.type, parentFieldName, item.values[fieldHierarchy.field.name], item.displayValues[fieldHierarchy.field.name]);
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
visitor.finishField();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue) {
|
|
147
|
+
if (rawValue !== undefined) {
|
|
148
|
+
if (valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Array) {
|
|
149
|
+
(0, core_bentley_1.assert)(Value_1.Value.isArray(rawValue));
|
|
150
|
+
(0, core_bentley_1.assert)(Value_1.DisplayValue.isArray(displayValue));
|
|
151
|
+
return traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);
|
|
152
|
+
}
|
|
153
|
+
if (valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Struct) {
|
|
154
|
+
(0, core_bentley_1.assert)(Value_1.Value.isMap(rawValue));
|
|
155
|
+
(0, core_bentley_1.assert)(Value_1.DisplayValue.isMap(displayValue));
|
|
156
|
+
return traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue);
|
|
160
|
+
}
|
|
161
|
+
function traverseContentItemArrayFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValues, displayValues) {
|
|
162
|
+
(0, core_bentley_1.assert)(rawValues.length === displayValues.length);
|
|
163
|
+
(0, core_bentley_1.assert)(valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Array);
|
|
164
|
+
if (!visitor.startArray({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues }))
|
|
165
|
+
return;
|
|
166
|
+
try {
|
|
167
|
+
const itemType = valueType.memberType;
|
|
168
|
+
rawValues.forEach((_, i) => {
|
|
169
|
+
traverseContentItemFieldValue(visitor, fieldHierarchy, mergedFieldNames, itemType, parentFieldName, rawValues[i], displayValues[i]);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
visitor.finishArray();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function traverseContentItemStructFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValues, displayValues) {
|
|
177
|
+
(0, core_bentley_1.assert)(valueType.valueFormat === TypeDescription_1.PropertyValueFormat.Struct);
|
|
178
|
+
if (!visitor.startStruct({ hierarchy: fieldHierarchy, valueType, parentFieldName, rawValues, displayValues }))
|
|
179
|
+
return;
|
|
180
|
+
try {
|
|
181
|
+
if (fieldHierarchy.field.isNestedContentField())
|
|
182
|
+
parentFieldName = combineFieldNames(fieldHierarchy.field.name, parentFieldName);
|
|
183
|
+
valueType.members.forEach((memberDescription) => {
|
|
184
|
+
let memberField = fieldHierarchy.childFields.find((f) => f.field.name === memberDescription.name);
|
|
185
|
+
if (!memberField) {
|
|
186
|
+
// Not finding a member field means we're traversing an ECStruct. We still need to carry member information, so we
|
|
187
|
+
// create a fake field to represent the member
|
|
188
|
+
memberField = {
|
|
189
|
+
field: new Fields_1.Field(fieldHierarchy.field.category, memberDescription.name, memberDescription.label, memberDescription.type, fieldHierarchy.field.isReadonly, 0),
|
|
190
|
+
childFields: [],
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
traverseContentItemFieldValue(visitor, memberField, mergedFieldNames, memberDescription.type, parentFieldName, rawValues[memberDescription.name], displayValues[memberDescription.name]);
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
visitor.finishStruct();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function traverseContentItemPrimitiveFieldValue(visitor, fieldHierarchy, mergedFieldNames, valueType, parentFieldName, rawValue, displayValue) {
|
|
201
|
+
if (-1 !== mergedFieldNames.indexOf(fieldHierarchy.field.name)) {
|
|
202
|
+
visitor.processMergedValue({ mergedField: fieldHierarchy.field, requestedField: fieldHierarchy.field, parentFieldName });
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
visitor.processPrimitiveValue({ field: fieldHierarchy.field, valueType, parentFieldName, rawValue, displayValue });
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Parses a list of [[Field]] objects into a list of [[FieldHierarchy]].
|
|
209
|
+
*
|
|
210
|
+
* @param ignoreCategories Enables adding all of the `nestedFields` to parent field's `childFields`
|
|
211
|
+
* without considering categories.
|
|
212
|
+
*
|
|
213
|
+
* @public
|
|
214
|
+
*/
|
|
215
|
+
function createFieldHierarchies(fields, ignoreCategories) {
|
|
216
|
+
const hierarchies = new Array();
|
|
217
|
+
const visitField = (category, field, parentField) => {
|
|
218
|
+
let childFields = [];
|
|
219
|
+
if (field.isNestedContentField()) {
|
|
220
|
+
// visit all nested fields
|
|
221
|
+
childFields = visitFields(field.nestedFields, field);
|
|
222
|
+
if (0 === childFields.length)
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
const fieldHierarchy = { field, childFields };
|
|
226
|
+
if (category === parentField?.category || ignoreCategories && parentField) {
|
|
227
|
+
// if categories of this field and its parent field match - return the field hierarchy without
|
|
228
|
+
// including it as a top level field
|
|
229
|
+
return fieldHierarchy;
|
|
230
|
+
}
|
|
231
|
+
addFieldHierarchy(hierarchies, fieldHierarchy);
|
|
232
|
+
return undefined;
|
|
233
|
+
};
|
|
234
|
+
const visitFields = (visitedFields, parentField) => {
|
|
235
|
+
const includedFields = [];
|
|
236
|
+
visitedFields.forEach((field) => {
|
|
237
|
+
const visitedField = visitField(field.category, field, parentField);
|
|
238
|
+
if (visitedField)
|
|
239
|
+
includedFields.push(visitedField);
|
|
240
|
+
});
|
|
241
|
+
return includedFields;
|
|
242
|
+
};
|
|
243
|
+
visitFields(fields, undefined);
|
|
244
|
+
return hierarchies;
|
|
245
|
+
}
|
|
246
|
+
exports.createFieldHierarchies = createFieldHierarchies;
|
|
247
|
+
function findRelatedFields(rootFields, hierarchy) {
|
|
248
|
+
// build a list of parent fields in hierarchy
|
|
249
|
+
const fields = [];
|
|
250
|
+
let currField = hierarchy.field;
|
|
251
|
+
while (currField) {
|
|
252
|
+
fields.push(currField);
|
|
253
|
+
currField = currField.parent;
|
|
254
|
+
}
|
|
255
|
+
for (let rootIndex = 0; rootIndex < rootFields.length; ++rootIndex) {
|
|
256
|
+
const rootFieldHierarchy = rootFields[rootIndex];
|
|
257
|
+
if (rootFieldHierarchy.field.category !== hierarchy.field.category) {
|
|
258
|
+
// only interested in fields with the same category
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
let first = true;
|
|
262
|
+
currField = rootFieldHierarchy.field;
|
|
263
|
+
while (currField) {
|
|
264
|
+
const index = fields.findIndex((f) => f.name === currField.name);
|
|
265
|
+
if (-1 !== index) {
|
|
266
|
+
return {
|
|
267
|
+
existing: {
|
|
268
|
+
field: currField,
|
|
269
|
+
hierarchy: first ? rootFieldHierarchy : undefined,
|
|
270
|
+
index: rootIndex,
|
|
271
|
+
},
|
|
272
|
+
matchingField: fields[index],
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
currField = currField.parent;
|
|
276
|
+
first = false;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return undefined;
|
|
280
|
+
}
|
|
281
|
+
function buildParentHierarchy(hierarchy, parentField) {
|
|
282
|
+
// note: parentField is found by walking up the parentship relationship
|
|
283
|
+
// from hierarchy.field, so we expect to always find it here
|
|
284
|
+
while (hierarchy.field !== parentField) {
|
|
285
|
+
const hierarchyParent = hierarchy.field.parent;
|
|
286
|
+
(0, core_bentley_1.assert)(hierarchyParent !== undefined);
|
|
287
|
+
hierarchy = { field: hierarchyParent, childFields: [hierarchy] };
|
|
288
|
+
}
|
|
289
|
+
return hierarchy;
|
|
290
|
+
}
|
|
291
|
+
function mergeHierarchies(lhs, rhs) {
|
|
292
|
+
(0, core_bentley_1.assert)(lhs.field.name === rhs.field.name);
|
|
293
|
+
const result = {
|
|
294
|
+
field: lhs.field.clone(),
|
|
295
|
+
childFields: [...lhs.childFields],
|
|
296
|
+
};
|
|
297
|
+
rhs.childFields.forEach((rhsChildHierarchy) => {
|
|
298
|
+
const indexInResult = result.childFields.findIndex((resultHierarchy) => resultHierarchy.field.name === rhsChildHierarchy.field.name);
|
|
299
|
+
if (indexInResult !== -1)
|
|
300
|
+
result.childFields[indexInResult] = mergeHierarchies(result.childFields[indexInResult], rhsChildHierarchy);
|
|
301
|
+
else
|
|
302
|
+
result.childFields.push(rhsChildHierarchy);
|
|
303
|
+
});
|
|
304
|
+
return result;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Adds a field hierarchy into root field hierarchies list. *
|
|
308
|
+
* @public
|
|
309
|
+
*/
|
|
310
|
+
function addFieldHierarchy(rootHierarchies, hierarchy) {
|
|
311
|
+
const match = findRelatedFields(rootHierarchies, hierarchy);
|
|
312
|
+
if (!match) {
|
|
313
|
+
rootHierarchies.push(hierarchy);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
const targetHierarchy = rootHierarchies[match.existing.index];
|
|
317
|
+
const existingHierarchy = match.existing.hierarchy ?? buildParentHierarchy(targetHierarchy, match.existing.field);
|
|
318
|
+
const insertHierarchy = buildParentHierarchy(hierarchy, match.matchingField);
|
|
319
|
+
const mergedHierarchy = mergeHierarchies(existingHierarchy, insertHierarchy);
|
|
320
|
+
mergedHierarchy.field.category = hierarchy.field.category;
|
|
321
|
+
rootHierarchies[match.existing.index] = mergedHierarchy;
|
|
322
|
+
}
|
|
323
|
+
exports.addFieldHierarchy = addFieldHierarchy;
|
|
324
|
+
function createFieldPath(field) {
|
|
325
|
+
const path = [field];
|
|
326
|
+
let currField = field;
|
|
327
|
+
while (currField.parent) {
|
|
328
|
+
currField = currField.parent;
|
|
329
|
+
path.push(currField);
|
|
330
|
+
}
|
|
331
|
+
path.reverse();
|
|
332
|
+
return path;
|
|
333
|
+
}
|
|
334
|
+
/** @internal */
|
|
335
|
+
exports.FIELD_NAMES_SEPARATOR = "$";
|
|
336
|
+
/**
|
|
337
|
+
* Combines given field names in a way that allows them to be parsed back into a list of individual names using the [[parseCombinedFieldNames]] function.
|
|
338
|
+
* @public
|
|
339
|
+
*/
|
|
340
|
+
function combineFieldNames(fieldName, parentFieldName) {
|
|
341
|
+
return parentFieldName ? `${parentFieldName}${exports.FIELD_NAMES_SEPARATOR}${fieldName}` : fieldName;
|
|
342
|
+
}
|
|
343
|
+
exports.combineFieldNames = combineFieldNames;
|
|
344
|
+
/**
|
|
345
|
+
* Parses given combined field names string, constructed using [[combineFieldNames]], into a list of individual field names.
|
|
346
|
+
* @public
|
|
347
|
+
*/
|
|
348
|
+
function parseCombinedFieldNames(combinedName) {
|
|
349
|
+
return combinedName ? combinedName.split(exports.FIELD_NAMES_SEPARATOR) : [];
|
|
350
|
+
}
|
|
351
|
+
exports.parseCombinedFieldNames = parseCombinedFieldNames;
|
|
352
|
+
function convertNestedContentItemToStructArrayItem(item, field, nextField) {
|
|
353
|
+
const value = item.values[field.name] ?? [];
|
|
354
|
+
(0, core_bentley_1.assert)(Value_1.Value.isNestedContent(value));
|
|
355
|
+
if (value.length === 0)
|
|
356
|
+
return { emptyNestedItem: true, convertedItem: item };
|
|
357
|
+
const nextFieldValues = { raw: [], display: [] };
|
|
358
|
+
value.forEach((ncv) => {
|
|
359
|
+
const nextRawValue = ncv.values[nextField.name];
|
|
360
|
+
const nextDisplayValue = ncv.displayValues[nextField.name];
|
|
361
|
+
if (nextField.isNestedContentField()) {
|
|
362
|
+
if (nextRawValue) {
|
|
363
|
+
(0, core_bentley_1.assert)(Value_1.Value.isNestedContent(nextRawValue));
|
|
364
|
+
nextFieldValues.raw.push(...nextRawValue);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
nextFieldValues.raw.push(nextRawValue);
|
|
369
|
+
nextFieldValues.display.push(nextDisplayValue);
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
const convertedItem = new Item_1.Item(item.primaryKeys, item.label, item.imageId, item.classInfo, { [nextField.name]: nextFieldValues.raw }, { [nextField.name]: nextFieldValues.display }, item.mergedFieldNames, item.extendedData); // eslint-disable-line deprecation/deprecation
|
|
373
|
+
return { emptyNestedItem: false, convertedItem };
|
|
374
|
+
}
|
|
375
|
+
function convertNestedContentFieldHierarchyToStructArrayHierarchy(fieldHierarchy, parentFieldName) {
|
|
376
|
+
const fieldName = fieldHierarchy.field.name;
|
|
377
|
+
const convertedChildFieldHierarchies = fieldHierarchy.childFields.map((child) => {
|
|
378
|
+
if (child.field.isNestedContentField())
|
|
379
|
+
return convertNestedContentFieldHierarchyToStructArrayHierarchy(child, combineFieldNames(fieldName, parentFieldName));
|
|
380
|
+
return child;
|
|
381
|
+
});
|
|
382
|
+
const convertedFieldHierarchy = {
|
|
383
|
+
field: Object.assign(fieldHierarchy.field.clone(), {
|
|
384
|
+
type: {
|
|
385
|
+
valueFormat: TypeDescription_1.PropertyValueFormat.Array,
|
|
386
|
+
typeName: `${fieldHierarchy.field.type.typeName}[]`,
|
|
387
|
+
memberType: {
|
|
388
|
+
valueFormat: TypeDescription_1.PropertyValueFormat.Struct,
|
|
389
|
+
typeName: fieldHierarchy.field.type.typeName,
|
|
390
|
+
members: convertedChildFieldHierarchies.map((member) => ({
|
|
391
|
+
name: member.field.name,
|
|
392
|
+
label: member.field.label,
|
|
393
|
+
type: member.field.type,
|
|
394
|
+
})),
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
}),
|
|
398
|
+
childFields: convertedChildFieldHierarchies,
|
|
399
|
+
};
|
|
400
|
+
return convertedFieldHierarchy;
|
|
401
|
+
}
|
|
402
|
+
function convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, ncvs) {
|
|
403
|
+
const result = { raw: [], display: [], mergedFieldNames: [] };
|
|
404
|
+
ncvs.forEach((ncv) => {
|
|
405
|
+
const values = { ...ncv.values };
|
|
406
|
+
const displayValues = { ...ncv.displayValues };
|
|
407
|
+
const mergedFieldNames = [...ncv.mergedFieldNames];
|
|
408
|
+
fieldHierarchy.childFields.forEach((childFieldHierarchy) => {
|
|
409
|
+
const childFieldName = childFieldHierarchy.field.name;
|
|
410
|
+
if (-1 !== ncv.mergedFieldNames.indexOf(childFieldName)) {
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
if (childFieldHierarchy.field.isNestedContentField()) {
|
|
414
|
+
const value = values[childFieldName];
|
|
415
|
+
(0, core_bentley_1.assert)(Value_1.Value.isNestedContent(value));
|
|
416
|
+
const convertedValues = convertNestedContentValuesToStructArrayValuesRecursive(childFieldHierarchy, value);
|
|
417
|
+
values[childFieldName] = convertedValues.raw;
|
|
418
|
+
displayValues[childFieldName] = convertedValues.display;
|
|
419
|
+
mergedFieldNames.push(...convertedValues.mergedFieldNames);
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
result.raw.push(values);
|
|
423
|
+
result.display.push(displayValues);
|
|
424
|
+
result.mergedFieldNames.push(...mergedFieldNames);
|
|
425
|
+
});
|
|
426
|
+
return result;
|
|
427
|
+
}
|
|
428
|
+
function convertNestedContentFieldHierarchyItemToStructArrayItem(item, fieldHierarchy) {
|
|
429
|
+
const fieldName = fieldHierarchy.field.name;
|
|
430
|
+
const rawValue = item.values[fieldName];
|
|
431
|
+
(0, core_bentley_1.assert)(Value_1.Value.isNestedContent(rawValue));
|
|
432
|
+
if (rawValue.length === 0)
|
|
433
|
+
return { emptyNestedItem: true, convertedItem: item };
|
|
434
|
+
const converted = convertNestedContentValuesToStructArrayValuesRecursive(fieldHierarchy, rawValue);
|
|
435
|
+
const convertedItem = new Item_1.Item(item.primaryKeys, item.label, item.imageId, item.classInfo, { [fieldName]: converted.raw }, { [fieldName]: converted.display }, converted.mergedFieldNames, item.extendedData); // eslint-disable-line deprecation/deprecation
|
|
436
|
+
return { emptyNestedItem: false, convertedItem };
|
|
437
|
+
}
|
|
440
438
|
//# sourceMappingURL=ContentTraverser.js.map
|