@itwin/presentation-common 4.6.0-dev.9 → 4.7.0-dev.3

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.
Files changed (112) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/presentation-common/CommonLoggerCategory.js +1 -1
  3. package/lib/cjs/presentation-common/CommonLoggerCategory.js.map +1 -1
  4. package/lib/cjs/presentation-common/Diagnostics.js +1 -1
  5. package/lib/cjs/presentation-common/Diagnostics.js.map +1 -1
  6. package/lib/cjs/presentation-common/EC.js +7 -7
  7. package/lib/cjs/presentation-common/EC.js.map +1 -1
  8. package/lib/cjs/presentation-common/Error.js +1 -1
  9. package/lib/cjs/presentation-common/Error.js.map +1 -1
  10. package/lib/cjs/presentation-common/KeySet.js +4 -4
  11. package/lib/cjs/presentation-common/KeySet.js.map +1 -1
  12. package/lib/cjs/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
  13. package/lib/cjs/presentation-common/LabelDefinition.js +2 -2
  14. package/lib/cjs/presentation-common/LabelDefinition.js.map +1 -1
  15. package/lib/cjs/presentation-common/LocalizationHelper.js.map +1 -1
  16. package/lib/cjs/presentation-common/PresentationRpcInterface.js +2 -2
  17. package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
  18. package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
  19. package/lib/cjs/presentation-common/RulesetVariables.js +2 -2
  20. package/lib/cjs/presentation-common/RulesetVariables.js.map +1 -1
  21. package/lib/cjs/presentation-common/RulesetsFactory.js +2 -1
  22. package/lib/cjs/presentation-common/RulesetsFactory.js.map +1 -1
  23. package/lib/cjs/presentation-common/Update.js +2 -2
  24. package/lib/cjs/presentation-common/Update.js.map +1 -1
  25. package/lib/cjs/presentation-common/Utils.js.map +1 -1
  26. package/lib/cjs/presentation-common/content/Category.js +1 -1
  27. package/lib/cjs/presentation-common/content/Category.js.map +1 -1
  28. package/lib/cjs/presentation-common/content/Content.js.map +1 -1
  29. package/lib/cjs/presentation-common/content/ContentTraverser.js.map +1 -1
  30. package/lib/cjs/presentation-common/content/Descriptor.js +3 -3
  31. package/lib/cjs/presentation-common/content/Descriptor.js.map +1 -1
  32. package/lib/cjs/presentation-common/content/DisplayTypes.d.ts +1 -1
  33. package/lib/cjs/presentation-common/content/DisplayTypes.d.ts.map +1 -1
  34. package/lib/cjs/presentation-common/content/DisplayTypes.js +1 -1
  35. package/lib/cjs/presentation-common/content/DisplayTypes.js.map +1 -1
  36. package/lib/cjs/presentation-common/content/Fields.js +2 -2
  37. package/lib/cjs/presentation-common/content/Fields.js.map +1 -1
  38. package/lib/cjs/presentation-common/content/Item.js.map +1 -1
  39. package/lib/cjs/presentation-common/content/Property.js +1 -1
  40. package/lib/cjs/presentation-common/content/Property.js.map +1 -1
  41. package/lib/cjs/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -1
  42. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js +1 -0
  43. package/lib/cjs/presentation-common/content/PropertyValueFormatter.js.map +1 -1
  44. package/lib/cjs/presentation-common/content/TypeDescription.js +1 -1
  45. package/lib/cjs/presentation-common/content/TypeDescription.js.map +1 -1
  46. package/lib/cjs/presentation-common/content/Value.js +4 -4
  47. package/lib/cjs/presentation-common/content/Value.js.map +1 -1
  48. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js +1 -1
  49. package/lib/cjs/presentation-common/hierarchy/HierarchyLevel.js.map +1 -1
  50. package/lib/cjs/presentation-common/hierarchy/Key.js +3 -3
  51. package/lib/cjs/presentation-common/hierarchy/Key.js.map +1 -1
  52. package/lib/cjs/presentation-common/hierarchy/Node.js +1 -1
  53. package/lib/cjs/presentation-common/hierarchy/Node.js.map +1 -1
  54. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js +2 -2
  55. package/lib/cjs/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  56. package/lib/cjs/presentation-common/rules/RelationshipDirection.js +1 -1
  57. package/lib/cjs/presentation-common/rules/RelationshipDirection.js.map +1 -1
  58. package/lib/cjs/presentation-common/rules/Rule.d.ts +2 -2
  59. package/lib/cjs/presentation-common/rules/Rule.d.ts.map +1 -1
  60. package/lib/cjs/presentation-common/rules/Rule.js +1 -1
  61. package/lib/cjs/presentation-common/rules/Rule.js.map +1 -1
  62. package/lib/cjs/presentation-common/rules/Variables.js +1 -1
  63. package/lib/cjs/presentation-common/rules/Variables.js.map +1 -1
  64. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js +1 -1
  65. package/lib/cjs/presentation-common/rules/content/ContentSpecification.js.map +1 -1
  66. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js +1 -1
  67. package/lib/cjs/presentation-common/rules/content/modifiers/PropertyEditorsSpecification.js.map +1 -1
  68. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js +2 -2
  69. package/lib/cjs/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.js.map +1 -1
  70. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js +3 -3
  71. package/lib/cjs/presentation-common/rules/customization/GroupingRule.js.map +1 -1
  72. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js +1 -1
  73. package/lib/cjs/presentation-common/rules/customization/InstanceLabelOverride.js.map +1 -1
  74. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js +1 -1
  75. package/lib/cjs/presentation-common/rules/hierarchy/ChildNodeSpecification.js.map +1 -1
  76. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js +1 -1
  77. package/lib/cjs/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.js.map +1 -1
  78. package/lib/esm/presentation-common/Diagnostics.js.map +1 -1
  79. package/lib/esm/presentation-common/EC.js.map +1 -1
  80. package/lib/esm/presentation-common/Error.js.map +1 -1
  81. package/lib/esm/presentation-common/KeySet.js +3 -3
  82. package/lib/esm/presentation-common/KeySet.js.map +1 -1
  83. package/lib/esm/presentation-common/KoqPropertyValueFormatter.js.map +1 -1
  84. package/lib/esm/presentation-common/LabelDefinition.js.map +1 -1
  85. package/lib/esm/presentation-common/LocalizationHelper.js.map +1 -1
  86. package/lib/esm/presentation-common/PresentationRpcInterface.js +1 -2
  87. package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
  88. package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
  89. package/lib/esm/presentation-common/RulesetVariables.js.map +1 -1
  90. package/lib/esm/presentation-common/RulesetsFactory.js +2 -1
  91. package/lib/esm/presentation-common/RulesetsFactory.js.map +1 -1
  92. package/lib/esm/presentation-common/Update.js.map +1 -1
  93. package/lib/esm/presentation-common/Utils.js.map +1 -1
  94. package/lib/esm/presentation-common/content/Category.js.map +1 -1
  95. package/lib/esm/presentation-common/content/Content.js.map +1 -1
  96. package/lib/esm/presentation-common/content/ContentTraverser.js.map +1 -1
  97. package/lib/esm/presentation-common/content/Descriptor.js.map +1 -1
  98. package/lib/esm/presentation-common/content/DisplayTypes.d.ts +1 -1
  99. package/lib/esm/presentation-common/content/DisplayTypes.d.ts.map +1 -1
  100. package/lib/esm/presentation-common/content/Fields.js.map +1 -1
  101. package/lib/esm/presentation-common/content/Item.js.map +1 -1
  102. package/lib/esm/presentation-common/content/PropertyValueFormatter.d.ts.map +1 -1
  103. package/lib/esm/presentation-common/content/PropertyValueFormatter.js +1 -0
  104. package/lib/esm/presentation-common/content/PropertyValueFormatter.js.map +1 -1
  105. package/lib/esm/presentation-common/content/Value.js.map +1 -1
  106. package/lib/esm/presentation-common/hierarchy/Key.js +1 -1
  107. package/lib/esm/presentation-common/hierarchy/Key.js.map +1 -1
  108. package/lib/esm/presentation-common/hierarchy/Node.js.map +1 -1
  109. package/lib/esm/presentation-common/hierarchy/NodePathElement.js.map +1 -1
  110. package/lib/esm/presentation-common/rules/Rule.d.ts +2 -2
  111. package/lib/esm/presentation-common/rules/Rule.d.ts.map +1 -1
  112. package/package.json +13 -12
@@ -1 +1 @@
1
- {"version":3,"file":"RelatedPropertiesSpecification.js","sourceRoot":"","sources":["../../../../../../src/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAKH;;;GAGG;AACH,IAAY,mBAYX;AAZD,WAAY,mBAAmB;IAC7B;;;OAGG;IACH,oDAA6B,CAAA;IAE7B;;;OAGG;IACH,0DAAmC,CAAA;AACrC,CAAC,EAZW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAY9B;AAED;;;GAGG;AACH,IAAY,8BAWX;AAXD,WAAY,8BAA8B;IACxC;;;OAGG;IACH,iDAAe,CAAA;IAEf;;OAEG;IACH,2CAAS,CAAA;AACX,CAAC,EAXW,8BAA8B,GAA9B,sCAA8B,KAA9B,sCAA8B,QAWzC","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 PresentationRules\r\n */\r\n\r\nimport { RelationshipPathSpecification } from \"../../RelationshipPathSpecification\";\r\nimport { PropertySpecification } from \"../PropertySpecification\";\r\n\r\n/**\r\n * Meaning of the relationship.\r\n * @public\r\n */\r\nexport enum RelationshipMeaning {\r\n /**\r\n * The properties should be displayed as if they belonged to the [primary instance]($docs/presentation/content/Terminology.md#primary-instance).\r\n * Generally that means they assigned a category, that's nested under the default category.\r\n */\r\n SameInstance = \"SameInstance\",\r\n\r\n /**\r\n * The properties should be distinguished from properties of the [primary instance]($docs/presentation/content/Terminology.md#primary-instance)\r\n * and shown separately to make it clear they belong to another instance. Generally that means they're assigned a separate root category.\r\n */\r\n RelatedInstance = \"RelatedInstance\",\r\n}\r\n\r\n/**\r\n * Special values that can be used in [[RelatedPropertiesSpecification.propertyNames]]\r\n * @public\r\n */\r\nexport enum RelatedPropertiesSpecialValues {\r\n /**\r\n * Used to specify that no properties should be included. Usually\r\n * used together with [[RelatedPropertiesSpecification.nestedRelatedProperties]]\r\n */\r\n None = \"_none_\",\r\n\r\n /**\r\n * Used to specify that all properties should be included.\r\n */\r\n All = \"*\",\r\n}\r\n\r\n/**\r\n * This specification allows including related instance properties into the content.\r\n *\r\n * @see [Related properties specification specification reference documentation page]($docs/presentation/content/RelatedPropertiesSpecification.md)\r\n * @public\r\n */\r\nexport interface RelatedPropertiesSpecification {\r\n /**\r\n * Specifies a chain of [relationship path specifications]($docs/presentation/RelationshipPathSpecification.md) that\r\n * forms a path from the content instance to the related instance(s) whose properties should additionally be loaded.\r\n */\r\n propertiesSource: RelationshipPathSpecification;\r\n\r\n /**\r\n * Condition for filtering instances targeted by the [[propertiesSource]] attribute.\r\n *\r\n * **See:** [ECExpressions available in instance filter]($docs/presentation/Content/ECExpressions.md#instance-filter)\r\n */\r\n instanceFilter?: string;\r\n\r\n /**\r\n * The attribute tells whether the target class specified through [[propertiesSource]] should be handled\r\n * polymorphically. This means properties of the concrete class are loaded in addition to properties of the\r\n * target class itself.\r\n *\r\n * @note There's a difference between loading properties and instances polymorphically. This attribute\r\n * only controls polymorphism of properties, while instances are always looked up in a polymorphic fashion.\r\n */\r\n handleTargetClassPolymorphically?: boolean;\r\n\r\n /**\r\n * Should the field containing related properties be assigned the [[NestedContentField.autoExpand]]\r\n * attribute. The attribute tells UI components showing the properties that they should be initially displayed in the expanded state.\r\n */\r\n autoExpand?: boolean;\r\n\r\n /**\r\n * Specifies whether the specification should be ignored if another higher priority specification for the same relationship already exists.\r\n * @beta\r\n */\r\n skipIfDuplicate?: boolean;\r\n\r\n /**\r\n * The attribute describes what the related properties mean to the [primary instance]($docs/presentation/content/Terminology.md#primary-instance)\r\n * whose properties are displayed.\r\n * @see RelationshipMeaning\r\n */\r\n relationshipMeaning?: `${RelationshipMeaning}`;\r\n\r\n /** The attribute allows loading additional related properties that are related to the target instance of this specification. */\r\n nestedRelatedProperties?: RelatedPropertiesSpecification[];\r\n\r\n /**\r\n * List of names or definitions of related class properties that should be included in the content.\r\n * @see RelatedPropertiesSpecialValues\r\n */\r\n properties?: Array<string | PropertySpecification> | `${RelatedPropertiesSpecialValues}`;\r\n\r\n /**\r\n * List of names or definitions of relationship class properties that should be included in the content.\r\n * @see RelatedPropertiesSpecialValues\r\n */\r\n relationshipProperties?: Array<string | PropertySpecification> | `${RelatedPropertiesSpecialValues}`;\r\n\r\n /**\r\n * Specifies whether a relationship category should be created regardless of whether any relationship properties were included.\r\n */\r\n forceCreateRelationshipCategory?: boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"RelatedPropertiesSpecification.js","sourceRoot":"","sources":["../../../../../../src/presentation-common/rules/content/modifiers/RelatedPropertiesSpecification.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAKH;;;GAGG;AACH,IAAY,mBAYX;AAZD,WAAY,mBAAmB;IAC7B;;;OAGG;IACH,oDAA6B,CAAA;IAE7B;;;OAGG;IACH,0DAAmC,CAAA;AACrC,CAAC,EAZW,mBAAmB,mCAAnB,mBAAmB,QAY9B;AAED;;;GAGG;AACH,IAAY,8BAWX;AAXD,WAAY,8BAA8B;IACxC;;;OAGG;IACH,iDAAe,CAAA;IAEf;;OAEG;IACH,2CAAS,CAAA;AACX,CAAC,EAXW,8BAA8B,8CAA9B,8BAA8B,QAWzC","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 PresentationRules\r\n */\r\n\r\nimport { RelationshipPathSpecification } from \"../../RelationshipPathSpecification\";\r\nimport { PropertySpecification } from \"../PropertySpecification\";\r\n\r\n/**\r\n * Meaning of the relationship.\r\n * @public\r\n */\r\nexport enum RelationshipMeaning {\r\n /**\r\n * The properties should be displayed as if they belonged to the [primary instance]($docs/presentation/content/Terminology.md#primary-instance).\r\n * Generally that means they assigned a category, that's nested under the default category.\r\n */\r\n SameInstance = \"SameInstance\",\r\n\r\n /**\r\n * The properties should be distinguished from properties of the [primary instance]($docs/presentation/content/Terminology.md#primary-instance)\r\n * and shown separately to make it clear they belong to another instance. Generally that means they're assigned a separate root category.\r\n */\r\n RelatedInstance = \"RelatedInstance\",\r\n}\r\n\r\n/**\r\n * Special values that can be used in [[RelatedPropertiesSpecification.propertyNames]]\r\n * @public\r\n */\r\nexport enum RelatedPropertiesSpecialValues {\r\n /**\r\n * Used to specify that no properties should be included. Usually\r\n * used together with [[RelatedPropertiesSpecification.nestedRelatedProperties]]\r\n */\r\n None = \"_none_\",\r\n\r\n /**\r\n * Used to specify that all properties should be included.\r\n */\r\n All = \"*\",\r\n}\r\n\r\n/**\r\n * This specification allows including related instance properties into the content.\r\n *\r\n * @see [Related properties specification specification reference documentation page]($docs/presentation/content/RelatedPropertiesSpecification.md)\r\n * @public\r\n */\r\nexport interface RelatedPropertiesSpecification {\r\n /**\r\n * Specifies a chain of [relationship path specifications]($docs/presentation/RelationshipPathSpecification.md) that\r\n * forms a path from the content instance to the related instance(s) whose properties should additionally be loaded.\r\n */\r\n propertiesSource: RelationshipPathSpecification;\r\n\r\n /**\r\n * Condition for filtering instances targeted by the [[propertiesSource]] attribute.\r\n *\r\n * **See:** [ECExpressions available in instance filter]($docs/presentation/Content/ECExpressions.md#instance-filter)\r\n */\r\n instanceFilter?: string;\r\n\r\n /**\r\n * The attribute tells whether the target class specified through [[propertiesSource]] should be handled\r\n * polymorphically. This means properties of the concrete class are loaded in addition to properties of the\r\n * target class itself.\r\n *\r\n * @note There's a difference between loading properties and instances polymorphically. This attribute\r\n * only controls polymorphism of properties, while instances are always looked up in a polymorphic fashion.\r\n */\r\n handleTargetClassPolymorphically?: boolean;\r\n\r\n /**\r\n * Should the field containing related properties be assigned the [[NestedContentField.autoExpand]]\r\n * attribute. The attribute tells UI components showing the properties that they should be initially displayed in the expanded state.\r\n */\r\n autoExpand?: boolean;\r\n\r\n /**\r\n * Specifies whether the specification should be ignored if another higher priority specification for the same relationship already exists.\r\n * @beta\r\n */\r\n skipIfDuplicate?: boolean;\r\n\r\n /**\r\n * The attribute describes what the related properties mean to the [primary instance]($docs/presentation/content/Terminology.md#primary-instance)\r\n * whose properties are displayed.\r\n * @see RelationshipMeaning\r\n */\r\n relationshipMeaning?: `${RelationshipMeaning}`;\r\n\r\n /** The attribute allows loading additional related properties that are related to the target instance of this specification. */\r\n nestedRelatedProperties?: RelatedPropertiesSpecification[];\r\n\r\n /**\r\n * List of names or definitions of related class properties that should be included in the content.\r\n * @see RelatedPropertiesSpecialValues\r\n */\r\n properties?: Array<string | PropertySpecification> | `${RelatedPropertiesSpecialValues}`;\r\n\r\n /**\r\n * List of names or definitions of relationship class properties that should be included in the content.\r\n * @see RelatedPropertiesSpecialValues\r\n */\r\n relationshipProperties?: Array<string | PropertySpecification> | `${RelatedPropertiesSpecialValues}`;\r\n\r\n /**\r\n * Specifies whether a relationship category should be created regardless of whether any relationship properties were included.\r\n */\r\n forceCreateRelationshipCategory?: boolean;\r\n}\r\n"]}
@@ -17,7 +17,7 @@ var GroupingSpecificationTypes;
17
17
  GroupingSpecificationTypes["Class"] = "Class";
18
18
  GroupingSpecificationTypes["Property"] = "Property";
19
19
  GroupingSpecificationTypes["SameLabelInstance"] = "SameLabelInstance";
20
- })(GroupingSpecificationTypes = exports.GroupingSpecificationTypes || (exports.GroupingSpecificationTypes = {}));
20
+ })(GroupingSpecificationTypes || (exports.GroupingSpecificationTypes = GroupingSpecificationTypes = {}));
21
21
  /**
22
22
  * Specifies hierarchy creation stages used to apply [[SameLabelInstanceGroup]] grouping.
23
23
  * @public
@@ -34,7 +34,7 @@ var SameLabelInstanceGroupApplicationStage;
34
34
  * returning even the first node - avoid using with large numbers of nodes.
35
35
  */
36
36
  SameLabelInstanceGroupApplicationStage["PostProcess"] = "PostProcess";
37
- })(SameLabelInstanceGroupApplicationStage = exports.SameLabelInstanceGroupApplicationStage || (exports.SameLabelInstanceGroupApplicationStage = {}));
37
+ })(SameLabelInstanceGroupApplicationStage || (exports.SameLabelInstanceGroupApplicationStage = SameLabelInstanceGroupApplicationStage = {}));
38
38
  /**
39
39
  * Used in [[PropertyGroup]] to specify the type of value to use
40
40
  * for grouping and sorting
@@ -48,5 +48,5 @@ var PropertyGroupingValue;
48
48
  PropertyGroupingValue["PropertyValue"] = "PropertyValue";
49
49
  /** By display label */
50
50
  PropertyGroupingValue["DisplayLabel"] = "DisplayLabel";
51
- })(PropertyGroupingValue = exports.PropertyGroupingValue || (exports.PropertyGroupingValue = {}));
51
+ })(PropertyGroupingValue || (exports.PropertyGroupingValue = PropertyGroupingValue = {}));
52
52
  //# sourceMappingURL=GroupingRule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupingRule.js","sourceRoot":"","sources":["../../../../../src/presentation-common/rules/customization/GroupingRule.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAsCH;;;GAGG;AACH,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IACpC,6CAAe,CAAA;IACf,mDAAqB,CAAA;IACrB,qEAAuC,CAAA;AACzC,CAAC,EAJW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAIrC;AAgED;;;GAGG;AACH,IAAY,sCAYX;AAZD,WAAY,sCAAsC;IAChD,qCAAqC;IACrC,yDAAe,CAAA;IAEf;;;;;;OAMG;IACH,qEAA2B,CAAA;AAC7B,CAAC,EAZW,sCAAsC,GAAtC,8CAAsC,KAAtC,8CAAsC,QAYjD;AAyDD;;;;;;GAMG;AACH,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,wBAAwB;IACxB,wDAA+B,CAAA;IAE/B,uBAAuB;IACvB,sDAA6B,CAAA;AAC/B,CAAC,EANW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAMhC","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 PresentationRules\r\n */\r\n\r\nimport { SingleSchemaClassSpecification } from \"../ClassSpecifications\";\r\nimport { RuleBase } from \"../Rule\";\r\n\r\n/**\r\n * Grouping rules provide advanced ways to group instances when creating hierarchies.\r\n *\r\n * @see [Grouping rule reference documentation page]($docs/presentation/hierarchies/GroupingRule.md)\r\n * @public\r\n */\r\nexport interface GroupingRule extends RuleBase {\r\n /** Used for serializing to JSON. */\r\n ruleType: \"Grouping\";\r\n\r\n /**\r\n * An [ECExpression]($docs/presentation/hierarchies/ECExpressions.md#rule-condition) that results in\r\n * a boolean value. If specified, the grouping rule applies only to instance nodes that cause the condition\r\n * to evaluate to `true`.\r\n */\r\n condition?: string;\r\n\r\n /** Specification of ECClass which should be grouped using this rule. */\r\n class: SingleSchemaClassSpecification;\r\n\r\n /**\r\n * Specifies a list of [grouping specifications]($docs/presentation/hierarchies/GroupingRule.md#grouping-specifications)\r\n * which describe the kind of grouping that should be applied.\r\n */\r\n groups: GroupingSpecification[];\r\n}\r\n\r\n/**\r\n * Grouping rule specifications.\r\n * @public\r\n */\r\nexport declare type GroupingSpecification = ClassGroup | PropertyGroup | SameLabelInstanceGroup;\r\n\r\n/**\r\n * Available types of [[GroupingSpecification]].\r\n * @public\r\n */\r\nexport enum GroupingSpecificationTypes {\r\n Class = \"Class\",\r\n Property = \"Property\",\r\n SameLabelInstance = \"SameLabelInstance\",\r\n}\r\n\r\n/**\r\n * Base interface for all [[GroupingSpecification]] implementations. Not\r\n * meant to be used directly, see `GroupingSpecification`.\r\n *\r\n * @public\r\n */\r\nexport interface GroupingSpecificationBase {\r\n /**\r\n * Type of the subclass\r\n * @see GroupingSpecificationTypes\r\n */\r\n specType: `${GroupingSpecificationTypes}`;\r\n}\r\n\r\n/**\r\n * Base class grouping allows grouping ECInstance nodes by their base class (as opposed to the hierarchy\r\n * specifications' `groupByClass` attribute, which always groups by direct class).\r\n *\r\n * @see [Base class grouping documentation section]($docs/presentation/hierarchies/GroupingRule.md#base-class-grouping)\r\n * @public\r\n */\r\nexport interface ClassGroup extends GroupingSpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"Class\";\r\n\r\n /** Specifies whether a grouping node should be created if there is only one item in that group. */\r\n createGroupForSingleItem?: boolean;\r\n\r\n /**\r\n * Specification of the base ECClass to group by. If specified, allows grouping by a subclass of the class\r\n * specified by rule's `class` attribute.\r\n */\r\n baseClass?: SingleSchemaClassSpecification;\r\n}\r\n\r\n/**\r\n * Allows grouping multiple instances with the same label into one ECInstances type of node. Similar to display label grouping,\r\n * but instead of showing a grouping node with multiple grouped ECInstance nodes, it shows a single ECInstances node which represents\r\n * multiple ECInstances.\r\n *\r\n * @see [Same label instance grouping documentation section]($docs/presentation/hierarchies/GroupingRule.md#same-label-instance-grouping)\r\n * @public\r\n */\r\nexport interface SameLabelInstanceGroup extends GroupingSpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"SameLabelInstance\";\r\n\r\n /**\r\n * Grouping nodes by label is an expensive operation because it requires the whole hierarchy level to be created before even the first\r\n * grouped node can be produced. To alleviate the performance impact when this specification is used, two `applicationStage` settings have been introduced:\r\n *\r\n * - `\"Query\"` groups instances during ECSql query, which can often make use of database indices and is generally fairly quick. It is chosen\r\n * as the default option, however, it fails to produce grouping nodes when certain ruleset specifications are involved.\r\n *\r\n * - `\"PostProcess\"` groups instances after the whole hierarchy level is built. It incurs a large performance penalty, but it will\r\n * produce the expected result in all cases.\r\n *\r\n * @see SameLabelInstanceGroupApplicationStage\r\n */\r\n applicationStage?: `${SameLabelInstanceGroupApplicationStage}`;\r\n}\r\n\r\n/**\r\n * Specifies hierarchy creation stages used to apply [[SameLabelInstanceGroup]] grouping.\r\n * @public\r\n */\r\nexport enum SameLabelInstanceGroupApplicationStage {\r\n /** Apply grouping at query stage. */\r\n Query = \"Query\",\r\n\r\n /**\r\n * Apply grouping at post-processing stage.\r\n *\r\n * This allows grouping nodes created by different hierarchy specifications at\r\n * a higher performance cost as it requires loading the whole hierarchy level before\r\n * returning even the first node - avoid using with large numbers of nodes.\r\n */\r\n PostProcess = \"PostProcess\",\r\n}\r\n\r\n/**\r\n * Property grouping allows grouping by a property of the instance by value or by given ranges of values.\r\n *\r\n * @see [Property grouping documentation section]($docs/presentation/hierarchies/GroupingRule.md#property-grouping)\r\n * @public\r\n */\r\nexport interface PropertyGroup extends GroupingSpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"Property\";\r\n\r\n /**\r\n * Name of the ECProperty which is used for grouping. The property must exist on the ECClass specified by the\r\n * rule's `class` attribute and it must be of either a primitive or a navigation type.\r\n *\r\n * @minLength 1\r\n */\r\n propertyName: string;\r\n\r\n /**\r\n * Specifies grouping node's image ID. If set, the ID is assigned to [[Node.imageId]] and\r\n * it's up to the UI component to decide what to do with it.\r\n *\r\n * @minLength 1\r\n */\r\n imageId?: string;\r\n\r\n /** Specifies whether a grouping node should be created if there is only one item in that group. */\r\n createGroupForSingleItem?: boolean;\r\n\r\n /**\r\n * Should a separate grouping node be created for nodes whose grouping value is not set or is set to an empty string.\r\n */\r\n createGroupForUnspecifiedValues?: boolean;\r\n\r\n /**\r\n * Specifies whether instances should be grouped using property's display or raw value.\r\n *\r\n * @see PropertyGroupingValue\r\n * @deprecated in 3.x. Display value should always be used for grouping.\r\n */\r\n groupingValue?: `${PropertyGroupingValue}`; // eslint-disable-line deprecation/deprecation\r\n\r\n /**\r\n * Specifies whether nodes should be sorted by their display label or the grouping property's value. In most cases the result\r\n * is the same, unless a [label override rule]($docs/presentation/customization/LabelOverride.md) is used to change node's display label.\r\n *\r\n * @see PropertyGroupingValue\r\n * @deprecated in 3.x. Property grouping nodes should always be sorted by display label.\r\n */\r\n sortingValue?: `${PropertyGroupingValue}`; // eslint-disable-line deprecation/deprecation\r\n\r\n /** Ranges into which the grouping values are divided. Instances are grouped by value if no ranges are specified. */\r\n ranges?: PropertyRangeGroupSpecification[];\r\n}\r\n\r\n/**\r\n * Used in [[PropertyGroup]] to specify the type of value to use\r\n * for grouping and sorting\r\n *\r\n * @public\r\n * @deprecated in 3.x. The attributes using this enum are deprecated.\r\n */\r\nexport enum PropertyGroupingValue {\r\n /** By property value */\r\n PropertyValue = \"PropertyValue\",\r\n\r\n /** By display label */\r\n DisplayLabel = \"DisplayLabel\",\r\n}\r\n\r\n/**\r\n * Describes a grouping range.\r\n *\r\n * @see [Property range group specification documentation section]($docs/presentation/hierarchies/GroupingRule.md#attribute-ranges)\r\n * @public\r\n */\r\nexport interface PropertyRangeGroupSpecification {\r\n /**\r\n * ID of an image to use for the grouping node. Defaults to [[PropertyGroup.imageId]] specified in [[PropertyGroup]].\r\n *\r\n * @minLength 1\r\n */\r\n imageId?: string;\r\n\r\n /**\r\n * Grouping node label. May be [localized]($docs/presentation/advanced/Localization.md).\r\n * Defaults to `{from value} - {to value}`.\r\n *\r\n * @minLength 1\r\n */\r\n label?: string;\r\n\r\n /**\r\n * Value that defines the range start (inclusive).\r\n *\r\n * @minLength 1\r\n */\r\n fromValue: string;\r\n\r\n /**\r\n * Value that defines the range end (inclusive).\r\n *\r\n * @minLength 1\r\n */\r\n toValue: string;\r\n}\r\n"]}
1
+ {"version":3,"file":"GroupingRule.js","sourceRoot":"","sources":["../../../../../src/presentation-common/rules/customization/GroupingRule.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAsCH;;;GAGG;AACH,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IACpC,6CAAe,CAAA;IACf,mDAAqB,CAAA;IACrB,qEAAuC,CAAA;AACzC,CAAC,EAJW,0BAA0B,0CAA1B,0BAA0B,QAIrC;AAgED;;;GAGG;AACH,IAAY,sCAYX;AAZD,WAAY,sCAAsC;IAChD,qCAAqC;IACrC,yDAAe,CAAA;IAEf;;;;;;OAMG;IACH,qEAA2B,CAAA;AAC7B,CAAC,EAZW,sCAAsC,sDAAtC,sCAAsC,QAYjD;AAyDD;;;;;;GAMG;AACH,IAAY,qBAMX;AAND,WAAY,qBAAqB;IAC/B,wBAAwB;IACxB,wDAA+B,CAAA;IAE/B,uBAAuB;IACvB,sDAA6B,CAAA;AAC/B,CAAC,EANW,qBAAqB,qCAArB,qBAAqB,QAMhC","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 PresentationRules\r\n */\r\n\r\nimport { SingleSchemaClassSpecification } from \"../ClassSpecifications\";\r\nimport { RuleBase } from \"../Rule\";\r\n\r\n/**\r\n * Grouping rules provide advanced ways to group instances when creating hierarchies.\r\n *\r\n * @see [Grouping rule reference documentation page]($docs/presentation/hierarchies/GroupingRule.md)\r\n * @public\r\n */\r\nexport interface GroupingRule extends RuleBase {\r\n /** Used for serializing to JSON. */\r\n ruleType: \"Grouping\";\r\n\r\n /**\r\n * An [ECExpression]($docs/presentation/hierarchies/ECExpressions.md#rule-condition) that results in\r\n * a boolean value. If specified, the grouping rule applies only to instance nodes that cause the condition\r\n * to evaluate to `true`.\r\n */\r\n condition?: string;\r\n\r\n /** Specification of ECClass which should be grouped using this rule. */\r\n class: SingleSchemaClassSpecification;\r\n\r\n /**\r\n * Specifies a list of [grouping specifications]($docs/presentation/hierarchies/GroupingRule.md#grouping-specifications)\r\n * which describe the kind of grouping that should be applied.\r\n */\r\n groups: GroupingSpecification[];\r\n}\r\n\r\n/**\r\n * Grouping rule specifications.\r\n * @public\r\n */\r\nexport declare type GroupingSpecification = ClassGroup | PropertyGroup | SameLabelInstanceGroup;\r\n\r\n/**\r\n * Available types of [[GroupingSpecification]].\r\n * @public\r\n */\r\nexport enum GroupingSpecificationTypes {\r\n Class = \"Class\",\r\n Property = \"Property\",\r\n SameLabelInstance = \"SameLabelInstance\",\r\n}\r\n\r\n/**\r\n * Base interface for all [[GroupingSpecification]] implementations. Not\r\n * meant to be used directly, see `GroupingSpecification`.\r\n *\r\n * @public\r\n */\r\nexport interface GroupingSpecificationBase {\r\n /**\r\n * Type of the subclass\r\n * @see GroupingSpecificationTypes\r\n */\r\n specType: `${GroupingSpecificationTypes}`;\r\n}\r\n\r\n/**\r\n * Base class grouping allows grouping ECInstance nodes by their base class (as opposed to the hierarchy\r\n * specifications' `groupByClass` attribute, which always groups by direct class).\r\n *\r\n * @see [Base class grouping documentation section]($docs/presentation/hierarchies/GroupingRule.md#base-class-grouping)\r\n * @public\r\n */\r\nexport interface ClassGroup extends GroupingSpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"Class\";\r\n\r\n /** Specifies whether a grouping node should be created if there is only one item in that group. */\r\n createGroupForSingleItem?: boolean;\r\n\r\n /**\r\n * Specification of the base ECClass to group by. If specified, allows grouping by a subclass of the class\r\n * specified by rule's `class` attribute.\r\n */\r\n baseClass?: SingleSchemaClassSpecification;\r\n}\r\n\r\n/**\r\n * Allows grouping multiple instances with the same label into one ECInstances type of node. Similar to display label grouping,\r\n * but instead of showing a grouping node with multiple grouped ECInstance nodes, it shows a single ECInstances node which represents\r\n * multiple ECInstances.\r\n *\r\n * @see [Same label instance grouping documentation section]($docs/presentation/hierarchies/GroupingRule.md#same-label-instance-grouping)\r\n * @public\r\n */\r\nexport interface SameLabelInstanceGroup extends GroupingSpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"SameLabelInstance\";\r\n\r\n /**\r\n * Grouping nodes by label is an expensive operation because it requires the whole hierarchy level to be created before even the first\r\n * grouped node can be produced. To alleviate the performance impact when this specification is used, two `applicationStage` settings have been introduced:\r\n *\r\n * - `\"Query\"` groups instances during ECSql query, which can often make use of database indices and is generally fairly quick. It is chosen\r\n * as the default option, however, it fails to produce grouping nodes when certain ruleset specifications are involved.\r\n *\r\n * - `\"PostProcess\"` groups instances after the whole hierarchy level is built. It incurs a large performance penalty, but it will\r\n * produce the expected result in all cases.\r\n *\r\n * @see SameLabelInstanceGroupApplicationStage\r\n */\r\n applicationStage?: `${SameLabelInstanceGroupApplicationStage}`;\r\n}\r\n\r\n/**\r\n * Specifies hierarchy creation stages used to apply [[SameLabelInstanceGroup]] grouping.\r\n * @public\r\n */\r\nexport enum SameLabelInstanceGroupApplicationStage {\r\n /** Apply grouping at query stage. */\r\n Query = \"Query\",\r\n\r\n /**\r\n * Apply grouping at post-processing stage.\r\n *\r\n * This allows grouping nodes created by different hierarchy specifications at\r\n * a higher performance cost as it requires loading the whole hierarchy level before\r\n * returning even the first node - avoid using with large numbers of nodes.\r\n */\r\n PostProcess = \"PostProcess\",\r\n}\r\n\r\n/**\r\n * Property grouping allows grouping by a property of the instance by value or by given ranges of values.\r\n *\r\n * @see [Property grouping documentation section]($docs/presentation/hierarchies/GroupingRule.md#property-grouping)\r\n * @public\r\n */\r\nexport interface PropertyGroup extends GroupingSpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"Property\";\r\n\r\n /**\r\n * Name of the ECProperty which is used for grouping. The property must exist on the ECClass specified by the\r\n * rule's `class` attribute and it must be of either a primitive or a navigation type.\r\n *\r\n * @minLength 1\r\n */\r\n propertyName: string;\r\n\r\n /**\r\n * Specifies grouping node's image ID. If set, the ID is assigned to [[Node.imageId]] and\r\n * it's up to the UI component to decide what to do with it.\r\n *\r\n * @minLength 1\r\n */\r\n imageId?: string;\r\n\r\n /** Specifies whether a grouping node should be created if there is only one item in that group. */\r\n createGroupForSingleItem?: boolean;\r\n\r\n /**\r\n * Should a separate grouping node be created for nodes whose grouping value is not set or is set to an empty string.\r\n */\r\n createGroupForUnspecifiedValues?: boolean;\r\n\r\n /**\r\n * Specifies whether instances should be grouped using property's display or raw value.\r\n *\r\n * @see PropertyGroupingValue\r\n * @deprecated in 3.x. Display value should always be used for grouping.\r\n */\r\n groupingValue?: `${PropertyGroupingValue}`; // eslint-disable-line deprecation/deprecation\r\n\r\n /**\r\n * Specifies whether nodes should be sorted by their display label or the grouping property's value. In most cases the result\r\n * is the same, unless a [label override rule]($docs/presentation/customization/LabelOverride.md) is used to change node's display label.\r\n *\r\n * @see PropertyGroupingValue\r\n * @deprecated in 3.x. Property grouping nodes should always be sorted by display label.\r\n */\r\n sortingValue?: `${PropertyGroupingValue}`; // eslint-disable-line deprecation/deprecation\r\n\r\n /** Ranges into which the grouping values are divided. Instances are grouped by value if no ranges are specified. */\r\n ranges?: PropertyRangeGroupSpecification[];\r\n}\r\n\r\n/**\r\n * Used in [[PropertyGroup]] to specify the type of value to use\r\n * for grouping and sorting\r\n *\r\n * @public\r\n * @deprecated in 3.x. The attributes using this enum are deprecated.\r\n */\r\nexport enum PropertyGroupingValue {\r\n /** By property value */\r\n PropertyValue = \"PropertyValue\",\r\n\r\n /** By display label */\r\n DisplayLabel = \"DisplayLabel\",\r\n}\r\n\r\n/**\r\n * Describes a grouping range.\r\n *\r\n * @see [Property range group specification documentation section]($docs/presentation/hierarchies/GroupingRule.md#attribute-ranges)\r\n * @public\r\n */\r\nexport interface PropertyRangeGroupSpecification {\r\n /**\r\n * ID of an image to use for the grouping node. Defaults to [[PropertyGroup.imageId]] specified in [[PropertyGroup]].\r\n *\r\n * @minLength 1\r\n */\r\n imageId?: string;\r\n\r\n /**\r\n * Grouping node label. May be [localized]($docs/presentation/advanced/Localization.md).\r\n * Defaults to `{from value} - {to value}`.\r\n *\r\n * @minLength 1\r\n */\r\n label?: string;\r\n\r\n /**\r\n * Value that defines the range start (inclusive).\r\n *\r\n * @minLength 1\r\n */\r\n fromValue: string;\r\n\r\n /**\r\n * Value that defines the range end (inclusive).\r\n *\r\n * @minLength 1\r\n */\r\n toValue: string;\r\n}\r\n"]}
@@ -22,5 +22,5 @@ var InstanceLabelOverrideValueSpecificationType;
22
22
  InstanceLabelOverrideValueSpecificationType["LocalId"] = "LocalId";
23
23
  InstanceLabelOverrideValueSpecificationType["String"] = "String";
24
24
  InstanceLabelOverrideValueSpecificationType["RelatedInstanceLabel"] = "RelatedInstanceLabel";
25
- })(InstanceLabelOverrideValueSpecificationType = exports.InstanceLabelOverrideValueSpecificationType || (exports.InstanceLabelOverrideValueSpecificationType = {}));
25
+ })(InstanceLabelOverrideValueSpecificationType || (exports.InstanceLabelOverrideValueSpecificationType = InstanceLabelOverrideValueSpecificationType = {}));
26
26
  //# sourceMappingURL=InstanceLabelOverride.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InstanceLabelOverride.js","sourceRoot":"","sources":["../../../../../src/presentation-common/rules/customization/InstanceLabelOverride.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AA4BH;;;GAGG;AACH,IAAY,2CASX;AATD,WAAY,2CAA2C;IACrD,sEAAuB,CAAA;IACvB,oEAAqB,CAAA;IACrB,sEAAuB,CAAA;IACvB,wEAAyB,CAAA;IACzB,0EAA2B,CAAA;IAC3B,kEAAmB,CAAA;IACnB,gEAAiB,CAAA;IACjB,4FAA6C,CAAA;AAC/C,CAAC,EATW,2CAA2C,GAA3C,mDAA2C,KAA3C,mDAA2C,QAStD","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 PresentationRules\r\n */\r\n\r\nimport { SingleSchemaClassSpecification } from \"../ClassSpecifications\";\r\nimport { RelationshipPathSpecification } from \"../RelationshipPathSpecification\";\r\nimport { RuleBase } from \"../Rule\";\r\n\r\n/**\r\n * Instance label override rule provides a way to set instance label to one of its property values,\r\n * other attributes and/or combination of them.\r\n *\r\n * @see [Instance label override reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverride extends RuleBase {\r\n /** Used for serializing to JSON. */\r\n ruleType: \"InstanceLabelOverride\";\r\n\r\n /**\r\n * Specifies the ECClass to apply this rule to.\r\n */\r\n class: SingleSchemaClassSpecification;\r\n\r\n /**\r\n * Specifications of values used to override label. The first non-empty value is used as the actual label.\r\n */\r\n values: InstanceLabelOverrideValueSpecification[];\r\n}\r\n\r\n/**\r\n * Types of possible [[InstanceLabelOverride]] label values.\r\n * @public\r\n */\r\nexport enum InstanceLabelOverrideValueSpecificationType {\r\n Composite = \"Composite\",\r\n Property = \"Property\",\r\n ClassName = \"ClassName\",\r\n ClassLabel = \"ClassLabel\",\r\n BriefcaseId = \"BriefcaseId\",\r\n LocalId = \"LocalId\",\r\n String = \"String\",\r\n RelatedInstanceLabel = \"RelatedInstanceLabel\",\r\n}\r\n\r\n/**\r\n * Base interface for all [[InstanceLabelOverrideValueSpecification]] implementations.\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideValueSpecificationBase {\r\n /**\r\n * Type of the specification\r\n * @see InstanceLabelOverrideValueSpecificationType\r\n */\r\n specType: `${InstanceLabelOverrideValueSpecificationType}`;\r\n}\r\n\r\n/**\r\n * Specification allows creating a label value composited using multiple other specifications.\r\n *\r\n * @see [Composite value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#composite-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideCompositeValueSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"Composite\";\r\n\r\n /**\r\n * Parts of the value.\r\n *\r\n * If any of the parts with `isRequired` flag evaluate to an empty string, the\r\n * result of this specification is also an empty string.\r\n */\r\n parts: Array<{ spec: InstanceLabelOverrideValueSpecification; isRequired?: boolean }>;\r\n\r\n /** Separator to use when joining the parts. Defaults to a space character. */\r\n separator?: string;\r\n}\r\n\r\n/**\r\n * Specification uses property value as the label content.\r\n *\r\n * @see [Property value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#property-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverridePropertyValueSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"Property\";\r\n\r\n /**\r\n * Name of the property whose value should be used.\r\n * @note A property with this name must exist on the property class (see [[propertySource]]).\r\n */\r\n propertyName: string;\r\n\r\n /**\r\n * [Specification of the relationship path]($docs/presentation/RelationshipPathSpecification.md) from [[InstanceLabelOverride.class]]\r\n * to class of the property. If omitted, [[InstanceLabelOverride.class]] is used as property class.\r\n */\r\n propertySource?: RelationshipPathSpecification;\r\n}\r\n\r\n/**\r\n * Specification uses ECClass name as the label content.\r\n *\r\n * @see [Class name value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#class-name-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideClassNameSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"ClassName\";\r\n\r\n /** Should full (`{schemaName}.{className}`) class name be used */\r\n full?: boolean;\r\n}\r\n\r\n/**\r\n * Specification uses ECClass display label as the label content.\r\n *\r\n * @see [Class label value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#class-label-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideClassLabelSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"ClassLabel\";\r\n}\r\n\r\n/**\r\n * Specification returns ECInstance's briefcase ID in base36 format.\r\n *\r\n * @see [BriefcaseId value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#briefcaseid-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideBriefcaseIdSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"BriefcaseId\";\r\n}\r\n\r\n/**\r\n * Specification returns ECInstance's local ID in base36 format.\r\n *\r\n * @see [LocalId value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#localid-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideLocalIdSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"LocalId\";\r\n}\r\n\r\n/**\r\n * Specification uses the specified value as the label content.\r\n *\r\n * @see [String value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#string-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideStringValueSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"String\";\r\n\r\n /** The value to use as the label content. */\r\n value: string;\r\n}\r\n\r\n/**\r\n * Specification uses label of another related instance as the label content.\r\n *\r\n * @see [Related instance label value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#related-instance-label-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideRelatedInstanceLabelSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"RelatedInstanceLabel\";\r\n\r\n /**\r\n * [Specification of the relationship path]($docs/presentation/RelationshipPathSpecification.md) from `InstanceLabelOverride.class`\r\n * to class of the related instance.\r\n */\r\n pathToRelatedInstance: RelationshipPathSpecification;\r\n}\r\n\r\n/**\r\n * Specification to define how the label for [[InstanceLabelOverride]] should be created.\r\n * @public\r\n */\r\nexport type InstanceLabelOverrideValueSpecification =\r\n | InstanceLabelOverrideCompositeValueSpecification\r\n | InstanceLabelOverridePropertyValueSpecification\r\n | InstanceLabelOverrideStringValueSpecification\r\n | InstanceLabelOverrideClassNameSpecification\r\n | InstanceLabelOverrideClassLabelSpecification\r\n | InstanceLabelOverrideBriefcaseIdSpecification\r\n | InstanceLabelOverrideLocalIdSpecification\r\n | InstanceLabelOverrideRelatedInstanceLabelSpecification;\r\n"]}
1
+ {"version":3,"file":"InstanceLabelOverride.js","sourceRoot":"","sources":["../../../../../src/presentation-common/rules/customization/InstanceLabelOverride.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AA4BH;;;GAGG;AACH,IAAY,2CASX;AATD,WAAY,2CAA2C;IACrD,sEAAuB,CAAA;IACvB,oEAAqB,CAAA;IACrB,sEAAuB,CAAA;IACvB,wEAAyB,CAAA;IACzB,0EAA2B,CAAA;IAC3B,kEAAmB,CAAA;IACnB,gEAAiB,CAAA;IACjB,4FAA6C,CAAA;AAC/C,CAAC,EATW,2CAA2C,2DAA3C,2CAA2C,QAStD","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 PresentationRules\r\n */\r\n\r\nimport { SingleSchemaClassSpecification } from \"../ClassSpecifications\";\r\nimport { RelationshipPathSpecification } from \"../RelationshipPathSpecification\";\r\nimport { RuleBase } from \"../Rule\";\r\n\r\n/**\r\n * Instance label override rule provides a way to set instance label to one of its property values,\r\n * other attributes and/or combination of them.\r\n *\r\n * @see [Instance label override reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverride extends RuleBase {\r\n /** Used for serializing to JSON. */\r\n ruleType: \"InstanceLabelOverride\";\r\n\r\n /**\r\n * Specifies the ECClass to apply this rule to.\r\n */\r\n class: SingleSchemaClassSpecification;\r\n\r\n /**\r\n * Specifications of values used to override label. The first non-empty value is used as the actual label.\r\n */\r\n values: InstanceLabelOverrideValueSpecification[];\r\n}\r\n\r\n/**\r\n * Types of possible [[InstanceLabelOverride]] label values.\r\n * @public\r\n */\r\nexport enum InstanceLabelOverrideValueSpecificationType {\r\n Composite = \"Composite\",\r\n Property = \"Property\",\r\n ClassName = \"ClassName\",\r\n ClassLabel = \"ClassLabel\",\r\n BriefcaseId = \"BriefcaseId\",\r\n LocalId = \"LocalId\",\r\n String = \"String\",\r\n RelatedInstanceLabel = \"RelatedInstanceLabel\",\r\n}\r\n\r\n/**\r\n * Base interface for all [[InstanceLabelOverrideValueSpecification]] implementations.\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideValueSpecificationBase {\r\n /**\r\n * Type of the specification\r\n * @see InstanceLabelOverrideValueSpecificationType\r\n */\r\n specType: `${InstanceLabelOverrideValueSpecificationType}`;\r\n}\r\n\r\n/**\r\n * Specification allows creating a label value composited using multiple other specifications.\r\n *\r\n * @see [Composite value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#composite-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideCompositeValueSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"Composite\";\r\n\r\n /**\r\n * Parts of the value.\r\n *\r\n * If any of the parts with `isRequired` flag evaluate to an empty string, the\r\n * result of this specification is also an empty string.\r\n */\r\n parts: Array<{ spec: InstanceLabelOverrideValueSpecification; isRequired?: boolean }>;\r\n\r\n /** Separator to use when joining the parts. Defaults to a space character. */\r\n separator?: string;\r\n}\r\n\r\n/**\r\n * Specification uses property value as the label content.\r\n *\r\n * @see [Property value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#property-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverridePropertyValueSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"Property\";\r\n\r\n /**\r\n * Name of the property whose value should be used.\r\n * @note A property with this name must exist on the property class (see [[propertySource]]).\r\n */\r\n propertyName: string;\r\n\r\n /**\r\n * [Specification of the relationship path]($docs/presentation/RelationshipPathSpecification.md) from [[InstanceLabelOverride.class]]\r\n * to class of the property. If omitted, [[InstanceLabelOverride.class]] is used as property class.\r\n */\r\n propertySource?: RelationshipPathSpecification;\r\n}\r\n\r\n/**\r\n * Specification uses ECClass name as the label content.\r\n *\r\n * @see [Class name value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#class-name-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideClassNameSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"ClassName\";\r\n\r\n /** Should full (`{schemaName}.{className}`) class name be used */\r\n full?: boolean;\r\n}\r\n\r\n/**\r\n * Specification uses ECClass display label as the label content.\r\n *\r\n * @see [Class label value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#class-label-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideClassLabelSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"ClassLabel\";\r\n}\r\n\r\n/**\r\n * Specification returns ECInstance's briefcase ID in base36 format.\r\n *\r\n * @see [BriefcaseId value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#briefcaseid-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideBriefcaseIdSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"BriefcaseId\";\r\n}\r\n\r\n/**\r\n * Specification returns ECInstance's local ID in base36 format.\r\n *\r\n * @see [LocalId value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#localid-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideLocalIdSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"LocalId\";\r\n}\r\n\r\n/**\r\n * Specification uses the specified value as the label content.\r\n *\r\n * @see [String value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#string-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideStringValueSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"String\";\r\n\r\n /** The value to use as the label content. */\r\n value: string;\r\n}\r\n\r\n/**\r\n * Specification uses label of another related instance as the label content.\r\n *\r\n * @see [Related instance label value specification reference documentation page]($docs/presentation/customization/InstanceLabelOverride.md#related-instance-label-value-specification)\r\n * @public\r\n */\r\nexport interface InstanceLabelOverrideRelatedInstanceLabelSpecification extends InstanceLabelOverrideValueSpecificationBase {\r\n specType: \"RelatedInstanceLabel\";\r\n\r\n /**\r\n * [Specification of the relationship path]($docs/presentation/RelationshipPathSpecification.md) from `InstanceLabelOverride.class`\r\n * to class of the related instance.\r\n */\r\n pathToRelatedInstance: RelationshipPathSpecification;\r\n}\r\n\r\n/**\r\n * Specification to define how the label for [[InstanceLabelOverride]] should be created.\r\n * @public\r\n */\r\nexport type InstanceLabelOverrideValueSpecification =\r\n | InstanceLabelOverrideCompositeValueSpecification\r\n | InstanceLabelOverridePropertyValueSpecification\r\n | InstanceLabelOverrideStringValueSpecification\r\n | InstanceLabelOverrideClassNameSpecification\r\n | InstanceLabelOverrideClassLabelSpecification\r\n | InstanceLabelOverrideBriefcaseIdSpecification\r\n | InstanceLabelOverrideLocalIdSpecification\r\n | InstanceLabelOverrideRelatedInstanceLabelSpecification;\r\n"]}
@@ -18,5 +18,5 @@ var ChildNodeSpecificationTypes;
18
18
  ChildNodeSpecificationTypes["InstanceNodesOfSpecificClasses"] = "InstanceNodesOfSpecificClasses";
19
19
  ChildNodeSpecificationTypes["CustomQueryInstanceNodes"] = "CustomQueryInstanceNodes";
20
20
  ChildNodeSpecificationTypes["CustomNode"] = "CustomNode";
21
- })(ChildNodeSpecificationTypes = exports.ChildNodeSpecificationTypes || (exports.ChildNodeSpecificationTypes = {}));
21
+ })(ChildNodeSpecificationTypes || (exports.ChildNodeSpecificationTypes = ChildNodeSpecificationTypes = {}));
22
22
  //# sourceMappingURL=ChildNodeSpecification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChildNodeSpecification.js","sourceRoot":"","sources":["../../../../../src/presentation-common/rules/hierarchy/ChildNodeSpecification.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AASH;;;GAGG;AACH,IAAY,2BAKX;AALD,WAAY,2BAA2B;IACrC,4EAA6C,CAAA;IAC7C,gGAAiE,CAAA;IACjE,oFAAqD,CAAA;IACrD,wDAAyB,CAAA;AAC3B,CAAC,EALW,2BAA2B,GAA3B,mCAA2B,KAA3B,mCAA2B,QAKtC","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 PresentationRules\r\n */\r\n\r\nimport { RelatedInstanceSpecification } from \"../RelatedInstanceSpecification\";\r\nimport { ChildNodeRule } from \"./ChildNodeRule\";\r\nimport { CustomNodeSpecification } from \"./CustomNodeSpecification\";\r\nimport { CustomQueryInstanceNodesSpecification } from \"./CustomQueryInstanceNodesSpecification\";\r\nimport { InstanceNodesOfSpecificClassesSpecification } from \"./InstanceNodesOfSpecificClassesSpecification\";\r\nimport { RelatedInstanceNodesSpecification } from \"./RelatedInstanceNodesSpecification\";\r\n\r\n/**\r\n * Used for serializing array of [[ChildNodeSpecification]]\r\n * @public\r\n */\r\nexport enum ChildNodeSpecificationTypes {\r\n RelatedInstanceNodes = \"RelatedInstanceNodes\",\r\n InstanceNodesOfSpecificClasses = \"InstanceNodesOfSpecificClasses\",\r\n CustomQueryInstanceNodes = \"CustomQueryInstanceNodes\",\r\n CustomNode = \"CustomNode\",\r\n}\r\n\r\n/**\r\n * Base interface for all [[ChildNodeSpecification]] implementations.\r\n *\r\n * @see [Child node specifications reference documentation section]($docs/presentation/hierarchies/ChildNodeRule.md#attribute-specifications)\r\n * @public\r\n */\r\nexport interface ChildNodeSpecificationBase {\r\n /**\r\n * Used for serializing to JSON.\r\n * @see ChildNodeSpecificationTypes\r\n */\r\n specType: `${ChildNodeSpecificationTypes}`;\r\n\r\n /**\r\n * Controls the order in which specifications are handled — specification with higher priority value is\r\n * handled first. If priorities are equal, the specifications are handled in the order they appear in the\r\n * ruleset.\r\n *\r\n * @type integer\r\n */\r\n priority?: number;\r\n\r\n /**\r\n * This attribute allows telling the engine that nodes created by this specification always or never have children.\r\n */\r\n hasChildren?: \"Always\" | \"Never\" | \"Unknown\";\r\n\r\n /**\r\n * When `true`, instances nodes produced by this specification are omitted and their children appear one\r\n * hierarchy level higher.\r\n */\r\n hideNodesInHierarchy?: boolean;\r\n\r\n /**\r\n * Specifies whether nodes created through this specification should be hidden if they have no child nodes.\r\n */\r\n hideIfNoChildren?: boolean;\r\n\r\n /**\r\n * When specified [ECExpression]($docs/presentation/hierarchies/ECExpressions.md#specification) evaluates\r\n * to `true`, nodes produced by this specification are omitted and their children appear one hierarchy level\r\n * higher.\r\n */\r\n hideExpression?: string;\r\n\r\n /**\r\n * Suppress sorting of nodes returned by this specification. With this attribute set to `true`, the order\r\n * of returned nodes is undefined.\r\n */\r\n doNotSort?: boolean;\r\n\r\n /**\r\n * Specifies whether similar ancestor nodes' checking should be suppressed when creating nodes based on this\r\n * specification. See more in [infinite hierarchies prevention page]($docs/presentation/hierarchies/InfiniteHierarchiesPrevention.md).\r\n */\r\n suppressSimilarAncestorsCheck?: boolean;\r\n\r\n /**\r\n * Specifications of [related instances]($docs/presentation/RelatedInstanceSpecification.md) that can be used\r\n * when creating the nodes.\r\n */\r\n relatedInstances?: RelatedInstanceSpecification[];\r\n\r\n /**\r\n * Specifications of [nested child node rules]($docs/presentation/hierarchies/Terminology.md#nested-rule) that\r\n * allow creating child nodes without the need of supplying a condition to match the parent node.\r\n */\r\n nestedRules?: ChildNodeRule[];\r\n}\r\n\r\n/**\r\n * A container of default grouping properties. Used for specifications that support\r\n * default grouping. Not meant to be used directly, see [[ChildNodeSpecification]].\r\n *\r\n * @public\r\n */\r\nexport interface DefaultGroupingPropertiesContainer {\r\n /** Controls whether returned instances should be grouped by ECClass. Defaults to `true`. */\r\n groupByClass?: boolean;\r\n\r\n /** Controls whether returned instances should be grouped by label. Defaults to `true`. */\r\n groupByLabel?: boolean;\r\n}\r\n\r\n/**\r\n * Hierarchy rule specifications that define what nodes are going to be returned by the rule.\r\n *\r\n * @see [Child node specifications reference documentation section]($docs/presentation/hierarchies/ChildNodeRule.md#attribute-specifications)\r\n * @public\r\n */\r\nexport type ChildNodeSpecification =\r\n | CustomNodeSpecification\r\n | InstanceNodesOfSpecificClassesSpecification\r\n | RelatedInstanceNodesSpecification\r\n | CustomQueryInstanceNodesSpecification;\r\n"]}
1
+ {"version":3,"file":"ChildNodeSpecification.js","sourceRoot":"","sources":["../../../../../src/presentation-common/rules/hierarchy/ChildNodeSpecification.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AASH;;;GAGG;AACH,IAAY,2BAKX;AALD,WAAY,2BAA2B;IACrC,4EAA6C,CAAA;IAC7C,gGAAiE,CAAA;IACjE,oFAAqD,CAAA;IACrD,wDAAyB,CAAA;AAC3B,CAAC,EALW,2BAA2B,2CAA3B,2BAA2B,QAKtC","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 PresentationRules\r\n */\r\n\r\nimport { RelatedInstanceSpecification } from \"../RelatedInstanceSpecification\";\r\nimport { ChildNodeRule } from \"./ChildNodeRule\";\r\nimport { CustomNodeSpecification } from \"./CustomNodeSpecification\";\r\nimport { CustomQueryInstanceNodesSpecification } from \"./CustomQueryInstanceNodesSpecification\";\r\nimport { InstanceNodesOfSpecificClassesSpecification } from \"./InstanceNodesOfSpecificClassesSpecification\";\r\nimport { RelatedInstanceNodesSpecification } from \"./RelatedInstanceNodesSpecification\";\r\n\r\n/**\r\n * Used for serializing array of [[ChildNodeSpecification]]\r\n * @public\r\n */\r\nexport enum ChildNodeSpecificationTypes {\r\n RelatedInstanceNodes = \"RelatedInstanceNodes\",\r\n InstanceNodesOfSpecificClasses = \"InstanceNodesOfSpecificClasses\",\r\n CustomQueryInstanceNodes = \"CustomQueryInstanceNodes\",\r\n CustomNode = \"CustomNode\",\r\n}\r\n\r\n/**\r\n * Base interface for all [[ChildNodeSpecification]] implementations.\r\n *\r\n * @see [Child node specifications reference documentation section]($docs/presentation/hierarchies/ChildNodeRule.md#attribute-specifications)\r\n * @public\r\n */\r\nexport interface ChildNodeSpecificationBase {\r\n /**\r\n * Used for serializing to JSON.\r\n * @see ChildNodeSpecificationTypes\r\n */\r\n specType: `${ChildNodeSpecificationTypes}`;\r\n\r\n /**\r\n * Controls the order in which specifications are handled — specification with higher priority value is\r\n * handled first. If priorities are equal, the specifications are handled in the order they appear in the\r\n * ruleset.\r\n *\r\n * @type integer\r\n */\r\n priority?: number;\r\n\r\n /**\r\n * This attribute allows telling the engine that nodes created by this specification always or never have children.\r\n */\r\n hasChildren?: \"Always\" | \"Never\" | \"Unknown\";\r\n\r\n /**\r\n * When `true`, instances nodes produced by this specification are omitted and their children appear one\r\n * hierarchy level higher.\r\n */\r\n hideNodesInHierarchy?: boolean;\r\n\r\n /**\r\n * Specifies whether nodes created through this specification should be hidden if they have no child nodes.\r\n */\r\n hideIfNoChildren?: boolean;\r\n\r\n /**\r\n * When specified [ECExpression]($docs/presentation/hierarchies/ECExpressions.md#specification) evaluates\r\n * to `true`, nodes produced by this specification are omitted and their children appear one hierarchy level\r\n * higher.\r\n */\r\n hideExpression?: string;\r\n\r\n /**\r\n * Suppress sorting of nodes returned by this specification. With this attribute set to `true`, the order\r\n * of returned nodes is undefined.\r\n */\r\n doNotSort?: boolean;\r\n\r\n /**\r\n * Specifies whether similar ancestor nodes' checking should be suppressed when creating nodes based on this\r\n * specification. See more in [infinite hierarchies prevention page]($docs/presentation/hierarchies/InfiniteHierarchiesPrevention.md).\r\n */\r\n suppressSimilarAncestorsCheck?: boolean;\r\n\r\n /**\r\n * Specifications of [related instances]($docs/presentation/RelatedInstanceSpecification.md) that can be used\r\n * when creating the nodes.\r\n */\r\n relatedInstances?: RelatedInstanceSpecification[];\r\n\r\n /**\r\n * Specifications of [nested child node rules]($docs/presentation/hierarchies/Terminology.md#nested-rule) that\r\n * allow creating child nodes without the need of supplying a condition to match the parent node.\r\n */\r\n nestedRules?: ChildNodeRule[];\r\n}\r\n\r\n/**\r\n * A container of default grouping properties. Used for specifications that support\r\n * default grouping. Not meant to be used directly, see [[ChildNodeSpecification]].\r\n *\r\n * @public\r\n */\r\nexport interface DefaultGroupingPropertiesContainer {\r\n /** Controls whether returned instances should be grouped by ECClass. Defaults to `true`. */\r\n groupByClass?: boolean;\r\n\r\n /** Controls whether returned instances should be grouped by label. Defaults to `true`. */\r\n groupByLabel?: boolean;\r\n}\r\n\r\n/**\r\n * Hierarchy rule specifications that define what nodes are going to be returned by the rule.\r\n *\r\n * @see [Child node specifications reference documentation section]($docs/presentation/hierarchies/ChildNodeRule.md#attribute-specifications)\r\n * @public\r\n */\r\nexport type ChildNodeSpecification =\r\n | CustomNodeSpecification\r\n | InstanceNodesOfSpecificClassesSpecification\r\n | RelatedInstanceNodesSpecification\r\n | CustomQueryInstanceNodesSpecification;\r\n"]}
@@ -16,5 +16,5 @@ var QuerySpecificationTypes;
16
16
  (function (QuerySpecificationTypes) {
17
17
  QuerySpecificationTypes["String"] = "String";
18
18
  QuerySpecificationTypes["ECPropertyValue"] = "ECPropertyValue";
19
- })(QuerySpecificationTypes = exports.QuerySpecificationTypes || (exports.QuerySpecificationTypes = {}));
19
+ })(QuerySpecificationTypes || (exports.QuerySpecificationTypes = QuerySpecificationTypes = {}));
20
20
  //# sourceMappingURL=CustomQueryInstanceNodesSpecification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomQueryInstanceNodesSpecification.js","sourceRoot":"","sources":["../../../../../src/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AA8BH;;;GAGG;AACH,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,4CAAiB,CAAA;IACjB,8DAAmC,CAAA;AACrC,CAAC,EAHW,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAGlC","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 PresentationRules\r\n */\r\n\r\nimport { SingleSchemaClassSpecification } from \"../ClassSpecifications\";\r\nimport { ChildNodeSpecificationBase, DefaultGroupingPropertiesContainer } from \"./ChildNodeSpecification\";\r\n\r\n/**\r\n * Returns nodes for instances returned by a provided ECSQL query.\r\n *\r\n * @see [Custom query instance nodes specification reference documentation page]($docs/presentation/hierarchies/CustomQueryInstanceNodes.md)\r\n * @public\r\n */\r\nexport interface CustomQueryInstanceNodesSpecification extends ChildNodeSpecificationBase, DefaultGroupingPropertiesContainer {\r\n /** Used for serializing to JSON. */\r\n specType: \"CustomQueryInstanceNodes\";\r\n\r\n /**\r\n * Specifications of queries used to create the content. Query specifications define the actual\r\n * results of the specification.\r\n */\r\n queries?: QuerySpecification[];\r\n}\r\n\r\n/**\r\n * Query specifications used in [[CustomQueryInstanceNodesSpecification]].\r\n *\r\n * @see [Custom query specifications reference documentation section]($docs/presentation/hierarchies/CustomQueryInstanceNodes.md#attribute-queries)\r\n * @public\r\n */\r\nexport declare type QuerySpecification = StringQuerySpecification | ECPropertyValueQuerySpecification;\r\n\r\n/**\r\n * Used for serializing array of [[QuerySpecification]] to JSON.\r\n * @public\r\n */\r\nexport enum QuerySpecificationTypes {\r\n String = \"String\",\r\n ECPropertyValue = \"ECPropertyValue\",\r\n}\r\n\r\n/**\r\n * Base interface for all [[QuerySpecification]] implementations.\r\n * @public\r\n */\r\nexport interface QuerySpecificationBase {\r\n /**\r\n * Used for serializing to JSON.\r\n * @see QuerySpecificationTypes\r\n */\r\n specType: `${QuerySpecificationTypes}`;\r\n\r\n /**\r\n * Specification of ECClass whose instances the query returns. The specification may also point to a\r\n * base class of instances returned by the query. If the query returns instances that are not of this\r\n * class, they aren't included in the result set.\r\n */\r\n class: SingleSchemaClassSpecification;\r\n}\r\n\r\n/**\r\n * The specification contains an ECSQL query which is used to query for instances.\r\n *\r\n * @see [String query specification reference documentation section]($docs/presentation/hierarchies/CustomQueryInstanceNodes.md#string-query-specification)\r\n * @public\r\n */\r\nexport interface StringQuerySpecification extends QuerySpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"String\";\r\n\r\n /** Specifies the search ECSQL query. */\r\n query: string;\r\n}\r\n\r\n/**\r\n * The specification specifies the name of the parent node instance property whose value is the ECSQL\r\n * used to query for instances.\r\n *\r\n * @see [ECProperty value query specification reference documentation section]($docs/presentation/hierarchies/CustomQueryInstanceNodes.md#ecproperty-value-query-specification)\r\n * @public\r\n */\r\nexport interface ECPropertyValueQuerySpecification extends QuerySpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"ECPropertyValue\";\r\n\r\n /**\r\n * Specifies name of the parent instance property whose value contains the ECSQL query.\r\n */\r\n parentPropertyName: string;\r\n}\r\n"]}
1
+ {"version":3,"file":"CustomQueryInstanceNodesSpecification.js","sourceRoot":"","sources":["../../../../../src/presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AA8BH;;;GAGG;AACH,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,4CAAiB,CAAA;IACjB,8DAAmC,CAAA;AACrC,CAAC,EAHW,uBAAuB,uCAAvB,uBAAuB,QAGlC","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 PresentationRules\r\n */\r\n\r\nimport { SingleSchemaClassSpecification } from \"../ClassSpecifications\";\r\nimport { ChildNodeSpecificationBase, DefaultGroupingPropertiesContainer } from \"./ChildNodeSpecification\";\r\n\r\n/**\r\n * Returns nodes for instances returned by a provided ECSQL query.\r\n *\r\n * @see [Custom query instance nodes specification reference documentation page]($docs/presentation/hierarchies/CustomQueryInstanceNodes.md)\r\n * @public\r\n */\r\nexport interface CustomQueryInstanceNodesSpecification extends ChildNodeSpecificationBase, DefaultGroupingPropertiesContainer {\r\n /** Used for serializing to JSON. */\r\n specType: \"CustomQueryInstanceNodes\";\r\n\r\n /**\r\n * Specifications of queries used to create the content. Query specifications define the actual\r\n * results of the specification.\r\n */\r\n queries?: QuerySpecification[];\r\n}\r\n\r\n/**\r\n * Query specifications used in [[CustomQueryInstanceNodesSpecification]].\r\n *\r\n * @see [Custom query specifications reference documentation section]($docs/presentation/hierarchies/CustomQueryInstanceNodes.md#attribute-queries)\r\n * @public\r\n */\r\nexport declare type QuerySpecification = StringQuerySpecification | ECPropertyValueQuerySpecification;\r\n\r\n/**\r\n * Used for serializing array of [[QuerySpecification]] to JSON.\r\n * @public\r\n */\r\nexport enum QuerySpecificationTypes {\r\n String = \"String\",\r\n ECPropertyValue = \"ECPropertyValue\",\r\n}\r\n\r\n/**\r\n * Base interface for all [[QuerySpecification]] implementations.\r\n * @public\r\n */\r\nexport interface QuerySpecificationBase {\r\n /**\r\n * Used for serializing to JSON.\r\n * @see QuerySpecificationTypes\r\n */\r\n specType: `${QuerySpecificationTypes}`;\r\n\r\n /**\r\n * Specification of ECClass whose instances the query returns. The specification may also point to a\r\n * base class of instances returned by the query. If the query returns instances that are not of this\r\n * class, they aren't included in the result set.\r\n */\r\n class: SingleSchemaClassSpecification;\r\n}\r\n\r\n/**\r\n * The specification contains an ECSQL query which is used to query for instances.\r\n *\r\n * @see [String query specification reference documentation section]($docs/presentation/hierarchies/CustomQueryInstanceNodes.md#string-query-specification)\r\n * @public\r\n */\r\nexport interface StringQuerySpecification extends QuerySpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"String\";\r\n\r\n /** Specifies the search ECSQL query. */\r\n query: string;\r\n}\r\n\r\n/**\r\n * The specification specifies the name of the parent node instance property whose value is the ECSQL\r\n * used to query for instances.\r\n *\r\n * @see [ECProperty value query specification reference documentation section]($docs/presentation/hierarchies/CustomQueryInstanceNodes.md#ecproperty-value-query-specification)\r\n * @public\r\n */\r\nexport interface ECPropertyValueQuerySpecification extends QuerySpecificationBase {\r\n /** Used for serializing to JSON. */\r\n specType: \"ECPropertyValue\";\r\n\r\n /**\r\n * Specifies name of the parent instance property whose value contains the ECSQL query.\r\n */\r\n parentPropertyName: string;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Diagnostics.js","sourceRoot":"","sources":["../../../src/presentation-common/Diagnostics.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAQH;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAoD,EAAE,GAAoD;IACrJ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;QAChB,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,gBAAgB,GACpB,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO;QAChC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI;YAClE,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM;gBAChC,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;oBACtC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,OAAO,CAAC;IACpB,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAoD,EAAE,GAAoD;IACrJ,MAAM,aAAa,GAA8B,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7H,MAAM,aAAa,GAA8B,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7H,IAAI,aAAa,KAAK,aAAa,EAAE;QACnC,OAAO,CAAC,CAAC;KACV;IACD,IAAI,aAAa,KAAK,OAAO,EAAE;QAC7B,OAAO,CAAC,CAAC;KACV;IACD,IAAI,aAAa,KAAK,SAAS,EAAE;QAC/B,OAAO,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,IAAI,aAAa,KAAK,MAAM,EAAE;QAC5B,OAAO,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1E;IACD,IAAI,aAAa,KAAK,OAAO,EAAE;QAC7B,OAAO,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtG;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AA6FD;;;GAGG;AACH,2DAA2D;AAC3D,MAAM,KAAW,mBAAmB,CAOnC;AAPD,WAAiB,mBAAmB;IAClC,SAAgB,SAAS,CAAC,KAA0B;QAClD,OAAO,CAAC,CAAE,KAAa,CAAC,OAAO,CAAC;IAClC,CAAC;IAFe,6BAAS,YAExB,CAAA;IACD,SAAgB,OAAO,CAAC,KAA0B;QAChD,OAAO,CAAC,CAAE,KAAa,CAAC,KAAK,CAAC;IAChC,CAAC;IAFe,2BAAO,UAEtB,CAAA;AACH,CAAC,EAPgB,mBAAmB,KAAnB,mBAAmB,QAOnC","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\n/**\r\n * Type of diagnostics logger severity.\r\n * @beta\r\n */\r\nexport type DiagnosticsLoggerSeverity = \"error\" | \"warning\" | \"info\" | \"debug\" | \"trace\";\r\n\r\n/**\r\n * Returns lower severity of the given two. Examples:\r\n * ```\r\n * combineDiagnosticsSeverities(\"error\", \"error\") === \"error\"\r\n * combineDiagnosticsSeverities(\"error\", \"debug\") === \"debug\"\r\n * combineDiagnosticsSeverities(\"debug\", \"error\") === \"debug\"\r\n * ```\r\n * @internal\r\n */\r\nexport function combineDiagnosticsSeverities(lhs: undefined | boolean | DiagnosticsLoggerSeverity, rhs: undefined | boolean | DiagnosticsLoggerSeverity) {\r\n if (!lhs && !rhs) {\r\n return undefined;\r\n }\r\n const combinedSeverity: DiagnosticsLoggerSeverity =\r\n lhs === \"trace\" || rhs === \"trace\"\r\n ? \"trace\"\r\n : lhs === \"debug\" || lhs === true || rhs === \"debug\" || rhs === true\r\n ? \"debug\"\r\n : lhs === \"info\" || rhs === \"info\"\r\n ? \"info\"\r\n : lhs === \"warning\" || rhs === \"warning\"\r\n ? \"warning\"\r\n : \"error\";\r\n return combinedSeverity;\r\n}\r\n\r\n/**\r\n * Returns 0 if the given severities are equal after normalization, negative if `lhs` is lower, positive if higher. Examples:\r\n * ```\r\n * compareDiagnosticsSeverities(\"error\", \"error\") === 0\r\n * compareDiagnosticsSeverities(\"error\", false) === 0\r\n * compareDiagnosticsSeverities(\"error\", undefined) === 0\r\n * compareDiagnosticsSeverities(\"debug\", true) === 0\r\n * compareDiagnosticsSeverities(\"debug\", \"error\") < 0\r\n * compareDiagnosticsSeverities(\"error\", \"debug\") > 0\r\n * ```\r\n * @internal\r\n */\r\nexport function compareDiagnosticsSeverities(lhs: undefined | boolean | DiagnosticsLoggerSeverity, rhs: undefined | boolean | DiagnosticsLoggerSeverity) {\r\n const normalizedLhs: DiagnosticsLoggerSeverity = lhs === undefined || lhs === false ? \"error\" : lhs === true ? \"debug\" : lhs;\r\n const normalizedRhs: DiagnosticsLoggerSeverity = rhs === undefined || rhs === false ? \"error\" : rhs === true ? \"debug\" : rhs;\r\n if (normalizedLhs === normalizedRhs) {\r\n return 0;\r\n }\r\n if (normalizedLhs === \"error\") {\r\n return 1;\r\n }\r\n if (normalizedLhs === \"warning\") {\r\n return normalizedRhs === \"error\" ? -1 : 1;\r\n }\r\n if (normalizedLhs === \"info\") {\r\n return normalizedRhs === \"warning\" || normalizedRhs === \"error\" ? -1 : 1;\r\n }\r\n if (normalizedLhs === \"debug\") {\r\n return normalizedRhs === \"info\" || normalizedRhs === \"warning\" || normalizedRhs === \"error\" ? -1 : 1;\r\n }\r\n return -1;\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics information.\r\n * @beta\r\n */\r\nexport interface Diagnostics {\r\n logs?: DiagnosticsScopeLogs[];\r\n}\r\n\r\n/**\r\n * Data structure with client diagnostics information.\r\n * @beta\r\n */\r\nexport interface ClientDiagnostics extends Diagnostics {\r\n backendVersion?: string;\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics options.\r\n * @beta\r\n */\r\nexport interface DiagnosticsOptions {\r\n /**\r\n * Flag specifying that performance should be measured, or\r\n * minimum duration in milliseconds for which performance metric should be included.\r\n */\r\n perf?: boolean | { minimumDuration: number };\r\n /** Severity for developer log messages */\r\n dev?: boolean | DiagnosticsLoggerSeverity;\r\n /** Severity for presentation rules' editor log messages */\r\n editor?: boolean | DiagnosticsLoggerSeverity;\r\n}\r\n\r\n/**\r\n * A function that can be called after receiving diagnostics.\r\n * @beta\r\n */\r\nexport type ClientDiagnosticsHandler = (logs: ClientDiagnostics) => void;\r\n\r\n/**\r\n * Data structure for client diagnostics options.\r\n * @beta\r\n */\r\nexport interface ClientDiagnosticsOptions extends DiagnosticsOptions {\r\n backendVersion?: boolean;\r\n handler: ClientDiagnosticsHandler;\r\n}\r\n\r\n/**\r\n * Data structure which contains client diagnostics options.\r\n * @public\r\n */\r\nexport interface ClientDiagnosticsAttribute {\r\n /**\r\n * Diagnostics options.\r\n * @beta\r\n */\r\n diagnostics?: ClientDiagnosticsOptions;\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics log message information.\r\n * @beta\r\n */\r\nexport interface DiagnosticsLogMessage {\r\n severity: {\r\n dev?: DiagnosticsLoggerSeverity;\r\n editor?: DiagnosticsLoggerSeverity;\r\n };\r\n category: string;\r\n message: string;\r\n timestamp: number;\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics scope information.\r\n * @beta\r\n */\r\nexport interface DiagnosticsScopeLogs {\r\n scope: string;\r\n scopeCreateTimestamp?: number;\r\n duration?: number;\r\n logs?: DiagnosticsLogEntry[];\r\n attributes?: { [attributeKey: string]: string | string[] };\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics log entry.\r\n * @beta\r\n */\r\nexport type DiagnosticsLogEntry = DiagnosticsLogMessage | DiagnosticsScopeLogs;\r\n\r\n/**\r\n * Functions related to diagnostics log entry.\r\n * @beta\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport namespace DiagnosticsLogEntry {\r\n export function isMessage(entry: DiagnosticsLogEntry): entry is DiagnosticsLogMessage {\r\n return !!(entry as any).message;\r\n }\r\n export function isScope(entry: DiagnosticsLogEntry): entry is DiagnosticsScopeLogs {\r\n return !!(entry as any).scope;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Diagnostics.js","sourceRoot":"","sources":["../../../src/presentation-common/Diagnostics.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAQH;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAoD,EAAE,GAAoD;IACrJ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,gBAAgB,GACpB,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO;QAChC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI;YAClE,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM;gBAChC,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;oBACtC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,OAAO,CAAC;IACpB,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAoD,EAAE,GAAoD;IACrJ,MAAM,aAAa,GAA8B,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7H,MAAM,aAAa,GAA8B,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7H,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AA6FD;;;GAGG;AACH,2DAA2D;AAC3D,MAAM,KAAW,mBAAmB,CAOnC;AAPD,WAAiB,mBAAmB;IAClC,SAAgB,SAAS,CAAC,KAA0B;QAClD,OAAO,CAAC,CAAE,KAAa,CAAC,OAAO,CAAC;IAClC,CAAC;IAFe,6BAAS,YAExB,CAAA;IACD,SAAgB,OAAO,CAAC,KAA0B;QAChD,OAAO,CAAC,CAAE,KAAa,CAAC,KAAK,CAAC;IAChC,CAAC;IAFe,2BAAO,UAEtB,CAAA;AACH,CAAC,EAPgB,mBAAmB,KAAnB,mBAAmB,QAOnC","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\n/**\r\n * Type of diagnostics logger severity.\r\n * @beta\r\n */\r\nexport type DiagnosticsLoggerSeverity = \"error\" | \"warning\" | \"info\" | \"debug\" | \"trace\";\r\n\r\n/**\r\n * Returns lower severity of the given two. Examples:\r\n * ```\r\n * combineDiagnosticsSeverities(\"error\", \"error\") === \"error\"\r\n * combineDiagnosticsSeverities(\"error\", \"debug\") === \"debug\"\r\n * combineDiagnosticsSeverities(\"debug\", \"error\") === \"debug\"\r\n * ```\r\n * @internal\r\n */\r\nexport function combineDiagnosticsSeverities(lhs: undefined | boolean | DiagnosticsLoggerSeverity, rhs: undefined | boolean | DiagnosticsLoggerSeverity) {\r\n if (!lhs && !rhs) {\r\n return undefined;\r\n }\r\n const combinedSeverity: DiagnosticsLoggerSeverity =\r\n lhs === \"trace\" || rhs === \"trace\"\r\n ? \"trace\"\r\n : lhs === \"debug\" || lhs === true || rhs === \"debug\" || rhs === true\r\n ? \"debug\"\r\n : lhs === \"info\" || rhs === \"info\"\r\n ? \"info\"\r\n : lhs === \"warning\" || rhs === \"warning\"\r\n ? \"warning\"\r\n : \"error\";\r\n return combinedSeverity;\r\n}\r\n\r\n/**\r\n * Returns 0 if the given severities are equal after normalization, negative if `lhs` is lower, positive if higher. Examples:\r\n * ```\r\n * compareDiagnosticsSeverities(\"error\", \"error\") === 0\r\n * compareDiagnosticsSeverities(\"error\", false) === 0\r\n * compareDiagnosticsSeverities(\"error\", undefined) === 0\r\n * compareDiagnosticsSeverities(\"debug\", true) === 0\r\n * compareDiagnosticsSeverities(\"debug\", \"error\") < 0\r\n * compareDiagnosticsSeverities(\"error\", \"debug\") > 0\r\n * ```\r\n * @internal\r\n */\r\nexport function compareDiagnosticsSeverities(lhs: undefined | boolean | DiagnosticsLoggerSeverity, rhs: undefined | boolean | DiagnosticsLoggerSeverity) {\r\n const normalizedLhs: DiagnosticsLoggerSeverity = lhs === undefined || lhs === false ? \"error\" : lhs === true ? \"debug\" : lhs;\r\n const normalizedRhs: DiagnosticsLoggerSeverity = rhs === undefined || rhs === false ? \"error\" : rhs === true ? \"debug\" : rhs;\r\n if (normalizedLhs === normalizedRhs) {\r\n return 0;\r\n }\r\n if (normalizedLhs === \"error\") {\r\n return 1;\r\n }\r\n if (normalizedLhs === \"warning\") {\r\n return normalizedRhs === \"error\" ? -1 : 1;\r\n }\r\n if (normalizedLhs === \"info\") {\r\n return normalizedRhs === \"warning\" || normalizedRhs === \"error\" ? -1 : 1;\r\n }\r\n if (normalizedLhs === \"debug\") {\r\n return normalizedRhs === \"info\" || normalizedRhs === \"warning\" || normalizedRhs === \"error\" ? -1 : 1;\r\n }\r\n return -1;\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics information.\r\n * @beta\r\n */\r\nexport interface Diagnostics {\r\n logs?: DiagnosticsScopeLogs[];\r\n}\r\n\r\n/**\r\n * Data structure with client diagnostics information.\r\n * @beta\r\n */\r\nexport interface ClientDiagnostics extends Diagnostics {\r\n backendVersion?: string;\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics options.\r\n * @beta\r\n */\r\nexport interface DiagnosticsOptions {\r\n /**\r\n * Flag specifying that performance should be measured, or\r\n * minimum duration in milliseconds for which performance metric should be included.\r\n */\r\n perf?: boolean | { minimumDuration: number };\r\n /** Severity for developer log messages */\r\n dev?: boolean | DiagnosticsLoggerSeverity;\r\n /** Severity for presentation rules' editor log messages */\r\n editor?: boolean | DiagnosticsLoggerSeverity;\r\n}\r\n\r\n/**\r\n * A function that can be called after receiving diagnostics.\r\n * @beta\r\n */\r\nexport type ClientDiagnosticsHandler = (logs: ClientDiagnostics) => void;\r\n\r\n/**\r\n * Data structure for client diagnostics options.\r\n * @beta\r\n */\r\nexport interface ClientDiagnosticsOptions extends DiagnosticsOptions {\r\n backendVersion?: boolean;\r\n handler: ClientDiagnosticsHandler;\r\n}\r\n\r\n/**\r\n * Data structure which contains client diagnostics options.\r\n * @public\r\n */\r\nexport interface ClientDiagnosticsAttribute {\r\n /**\r\n * Diagnostics options.\r\n * @beta\r\n */\r\n diagnostics?: ClientDiagnosticsOptions;\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics log message information.\r\n * @beta\r\n */\r\nexport interface DiagnosticsLogMessage {\r\n severity: {\r\n dev?: DiagnosticsLoggerSeverity;\r\n editor?: DiagnosticsLoggerSeverity;\r\n };\r\n category: string;\r\n message: string;\r\n timestamp: number;\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics scope information.\r\n * @beta\r\n */\r\nexport interface DiagnosticsScopeLogs {\r\n scope: string;\r\n scopeCreateTimestamp?: number;\r\n duration?: number;\r\n logs?: DiagnosticsLogEntry[];\r\n attributes?: { [attributeKey: string]: string | string[] };\r\n}\r\n\r\n/**\r\n * Data structure for diagnostics log entry.\r\n * @beta\r\n */\r\nexport type DiagnosticsLogEntry = DiagnosticsLogMessage | DiagnosticsScopeLogs;\r\n\r\n/**\r\n * Functions related to diagnostics log entry.\r\n * @beta\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport namespace DiagnosticsLogEntry {\r\n export function isMessage(entry: DiagnosticsLogEntry): entry is DiagnosticsLogMessage {\r\n return !!(entry as any).message;\r\n }\r\n export function isScope(entry: DiagnosticsLogEntry): entry is DiagnosticsScopeLogs {\r\n return !!(entry as any).scope;\r\n }\r\n}\r\n"]}
@@ -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 deprecation/deprecation\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 deprecation/deprecation\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 deprecation/deprecation\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 deprecation/deprecation\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 /**\r\n * Persistence unit identifier.\r\n * @alpha Still not entirely clear how kind of quantities will be handled and what data we'll need\r\n */\r\n persistenceUnit: string;\r\n /**\r\n * Active format that was used to format property value.\r\n * @alpha Still not entirely clear how kind of quantities will be handled and what data we'll need\r\n */\r\n activeFormat?: FormatProps;\r\n}\r\n\r\n/**\r\n * A data structure for storing navigation property information.\r\n * @beta\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 * @beta\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 * @beta\r\n */\r\n// eslint-disable-next-line deprecation/deprecation\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 /**\r\n * Navigation property info if the field is navigation type\r\n * @beta\r\n */\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 deprecation/deprecation\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 /** @beta */\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 deprecation/deprecation\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\n// eslint-disable-next-line deprecation/deprecation\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\n// eslint-disable-next-line deprecation/deprecation\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 * 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 deprecation/deprecation\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 deprecation/deprecation\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 deprecation/deprecation\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 deprecation/deprecation\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 /**\r\n * Persistence unit identifier.\r\n * @alpha Still not entirely clear how kind of quantities will be handled and what data we'll need\r\n */\r\n persistenceUnit: string;\r\n /**\r\n * Active format that was used to format property value.\r\n * @alpha Still not entirely clear how kind of quantities will be handled and what data we'll need\r\n */\r\n activeFormat?: FormatProps;\r\n}\r\n\r\n/**\r\n * A data structure for storing navigation property information.\r\n * @beta\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 * @beta\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 * @beta\r\n */\r\n// eslint-disable-next-line deprecation/deprecation\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 /**\r\n * Navigation property info if the field is navigation type\r\n * @beta\r\n */\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 deprecation/deprecation\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 /** @beta */\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 deprecation/deprecation\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\n// eslint-disable-next-line deprecation/deprecation\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\n// eslint-disable-next-line deprecation/deprecation\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 +1 @@
1
- {"version":3,"file":"Error.js","sourceRoot":"","sources":["../../../src/presentation-common/Error.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAwBX;AAxBD,WAAY,kBAAkB;IAC5B,sBAAsB;IACtB,iEAAW,CAAA;IAEX,6BAA6B;IAC7B,mEAAY,CAAA;IAEZ,qBAAqB;IACrB,iEAAe,CAAA;IAEf,yCAAyC;IACzC,mFAA0B,CAAA;IAE1B,sCAAsC;IACtC,yFAA6B,CAAA;IAE7B,kCAAkC;IAClC,qFAA2B,CAAA;IAE3B;;;OAGG;IACH,mFAA0B,CAAA;AAC5B,CAAC,EAxBW,kBAAkB,KAAlB,kBAAkB,QAwB7B;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD;;;;;;;OAOG;IACH,YAAmB,WAA+B,EAAE,OAAgB,EAAE,WAAiC;QACrG,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,gEAAgE;IAC7C,SAAS;QAC1B,IAAI,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,kBAAkB,IAAI,CAAC,WAAW,GAAG,CAAC;SAC/C;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","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 { BentleyError, GetMetaDataFunction } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * Status codes used by Presentation APIs.\r\n * @public\r\n */\r\nexport enum PresentationStatus {\r\n /** Success result. */\r\n Success = 0,\r\n\r\n /** Request was cancelled. */\r\n Canceled = 1,\r\n\r\n /** Error: Unknown */\r\n Error = 0x10000,\r\n\r\n /** Error: Backend is not initialized. */\r\n NotInitialized = Error + 1,\r\n\r\n /** Error: Result set is too large. */\r\n ResultSetTooLarge = Error + 2,\r\n\r\n /** Error: Argument is invalid. */\r\n InvalidArgument = Error + 3,\r\n\r\n /**\r\n * Timeout for the request was reached which prevented it from being fulfilled. Frontend may\r\n * repeat the request.\r\n */\r\n BackendTimeout = Error + 7,\r\n}\r\n\r\n/**\r\n * An error type thrown by Presentation APIs.\r\n * @public\r\n */\r\nexport class PresentationError extends BentleyError {\r\n /**\r\n * Creates an instance of Error.\r\n * @param errorNumber Error code\r\n * @param message Optional brief description of the error. The `message` property combined with the `name`\r\n * property is used by the `Error.prototype.toString()` method to create a string representation of the Error.\r\n * @param log Optional log function which logs the error.\r\n * @param getMetaData Optional function that returns meta-data related to an error.\r\n */\r\n public constructor(errorNumber: PresentationStatus, message?: string, getMetaData?: GetMetaDataFunction) {\r\n super(errorNumber, message, getMetaData);\r\n }\r\n\r\n /**\r\n * Returns the name of each error status. The name is used by the `Error.prototype.toString()`\r\n * method to create a string representation of the error.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected override _initName(): string {\r\n let value = PresentationStatus[this.errorNumber];\r\n if (!value) {\r\n value = `Unknown Error (${this.errorNumber})`;\r\n }\r\n return value;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Error.js","sourceRoot":"","sources":["../../../src/presentation-common/Error.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAExE;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAwBX;AAxBD,WAAY,kBAAkB;IAC5B,sBAAsB;IACtB,iEAAW,CAAA;IAEX,6BAA6B;IAC7B,mEAAY,CAAA;IAEZ,qBAAqB;IACrB,iEAAe,CAAA;IAEf,yCAAyC;IACzC,mFAA0B,CAAA;IAE1B,sCAAsC;IACtC,yFAA6B,CAAA;IAE7B,kCAAkC;IAClC,qFAA2B,CAAA;IAE3B;;;OAGG;IACH,mFAA0B,CAAA;AAC5B,CAAC,EAxBW,kBAAkB,KAAlB,kBAAkB,QAwB7B;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD;;;;;;;OAOG;IACH,YAAmB,WAA+B,EAAE,OAAgB,EAAE,WAAiC;QACrG,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,gEAAgE;IAC7C,SAAS;QAC1B,IAAI,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,kBAAkB,IAAI,CAAC,WAAW,GAAG,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","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 { BentleyError, GetMetaDataFunction } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * Status codes used by Presentation APIs.\r\n * @public\r\n */\r\nexport enum PresentationStatus {\r\n /** Success result. */\r\n Success = 0,\r\n\r\n /** Request was cancelled. */\r\n Canceled = 1,\r\n\r\n /** Error: Unknown */\r\n Error = 0x10000,\r\n\r\n /** Error: Backend is not initialized. */\r\n NotInitialized = Error + 1,\r\n\r\n /** Error: Result set is too large. */\r\n ResultSetTooLarge = Error + 2,\r\n\r\n /** Error: Argument is invalid. */\r\n InvalidArgument = Error + 3,\r\n\r\n /**\r\n * Timeout for the request was reached which prevented it from being fulfilled. Frontend may\r\n * repeat the request.\r\n */\r\n BackendTimeout = Error + 7,\r\n}\r\n\r\n/**\r\n * An error type thrown by Presentation APIs.\r\n * @public\r\n */\r\nexport class PresentationError extends BentleyError {\r\n /**\r\n * Creates an instance of Error.\r\n * @param errorNumber Error code\r\n * @param message Optional brief description of the error. The `message` property combined with the `name`\r\n * property is used by the `Error.prototype.toString()` method to create a string representation of the Error.\r\n * @param log Optional log function which logs the error.\r\n * @param getMetaData Optional function that returns meta-data related to an error.\r\n */\r\n public constructor(errorNumber: PresentationStatus, message?: string, getMetaData?: GetMetaDataFunction) {\r\n super(errorNumber, message, getMetaData);\r\n }\r\n\r\n /**\r\n * Returns the name of each error status. The name is used by the `Error.prototype.toString()`\r\n * method to create a string representation of the error.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n protected override _initName(): string {\r\n let value = PresentationStatus[this.errorNumber];\r\n if (!value) {\r\n value = `Unknown Error (${this.errorNumber})`;\r\n }\r\n return value;\r\n }\r\n}\r\n"]}
@@ -190,7 +190,7 @@ export class KeySet {
190
190
  this._nodeKeys.add(JSON.stringify(value));
191
191
  }
192
192
  else {
193
- throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
193
+ throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${JSON.stringify(value)}`);
194
194
  }
195
195
  }
196
196
  if (this.size !== sizeBefore) {
@@ -242,7 +242,7 @@ export class KeySet {
242
242
  this._nodeKeys.delete(JSON.stringify(value));
243
243
  }
244
244
  else {
245
- throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
245
+ throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${JSON.stringify(value)}`);
246
246
  }
247
247
  if (this.size !== sizeBefore) {
248
248
  this.recalculateGuid();
@@ -267,7 +267,7 @@ export class KeySet {
267
267
  if (Key.isNodeKey(value)) {
268
268
  return this._nodeKeys.has(JSON.stringify(value));
269
269
  }
270
- throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${value}`);
270
+ throw new PresentationError(PresentationStatus.InvalidArgument, `Invalid argument: value = ${JSON.stringify(value)}`);
271
271
  }
272
272
  hasKeySet(readonlyKeys, checkType) {
273
273
  // note: cast-away read-onlyness to access private members...