@itwin/presentation-common 3.4.0-dev.48 → 3.4.0-dev.55

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.
@@ -149,10 +149,9 @@ const createComparison = (type, name, operator, value) => {
149
149
  compareValue = value.toString();
150
150
  break;
151
151
  }
152
- if (type.typeName === "navigation" && typeof value === "object" && core_bentley_1.Id64.isId64(value.id)) {
152
+ if (type.typeName === "navigation" && typeof value === "object" && core_bentley_1.Id64.isId64(value.id))
153
153
  // note: this is temporary until we support hex ids in instance filters
154
154
  compareValue = hexToDec(value.id);
155
- }
156
155
  if (type.typeName === "point2d" || type.typeName === "point3d") {
157
156
  if (typeof value !== "object")
158
157
  throw new Error("Expecting point values to be supplied as objects");
@@ -167,12 +166,10 @@ const createComparison = (type, name, operator, value) => {
167
166
  comparison += ` AND ${createComparison(dimensionType, `${name}.z`, operator, pointValue.z)}`;
168
167
  return comparison;
169
168
  }
170
- if (type.typeName === "double") {
169
+ if (type.typeName === "double")
171
170
  return `CompareDoubles(${name}, ${compareValue}) ${operator} 0`;
172
- }
173
- if (type.typeName === "dateTime") {
171
+ if (type.typeName === "dateTime")
174
172
  return `CompareDateTimes(${name}, ${compareValue}) ${operator} 0`;
175
- }
176
173
  return `${name} ${operator} ${compareValue}`;
177
174
  };
178
175
  const createMultiClassSpecification = (classInfo) => {
@@ -1 +1 @@
1
- {"version":3,"file":"RulesetsFactory.js","sourceRoot":"","sources":["../../../src/presentation-common/RulesetsFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Core\n */\n\nimport { Guid, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Field, PropertiesField } from \"./content/Fields\";\nimport { Item } from \"./content/Item\";\nimport { PrimitiveTypeDescription, PropertyValueFormat } from \"./content/TypeDescription\";\nimport { DisplayValue, Value } from \"./content/Value\";\nimport { ClassInfo, InstanceKey, RelationshipPath } from \"./EC\";\nimport { MultiSchemaClassesSpecification, SingleSchemaClassSpecification } from \"./rules/ClassSpecifications\";\nimport { ContentSpecificationTypes } from \"./rules/content/ContentSpecification\";\nimport { RelatedInstanceSpecification } from \"./rules/RelatedInstanceSpecification\";\nimport { RelationshipDirection } from \"./rules/RelationshipDirection\";\nimport { RuleTypes } from \"./rules/Rule\";\nimport { Ruleset } from \"./rules/Ruleset\";\n\n/**\n * A factory class that can be used to create presentation rulesets targeted towards\n * specific use cases.\n *\n * @public\n */\nexport class RulesetsFactory {\n private createSimilarInstancesRulesetInfo(field: Field, record: Item) {\n if (!field.isPropertiesField())\n throw new Error(\"Can only create 'similar instances' ruleset for properties-based records\");\n if (field.type.valueFormat !== PropertyValueFormat.Primitive)\n throw new Error(\"Can only create 'similar instances' ruleset for primitive properties\");\n if (field.properties.length === 0)\n throw new Error(\"Invalid properties' field with no properties\");\n if (record.isFieldMerged(field.name))\n throw new Error(\"Can't create 'similar instances' ruleset for merged values\");\n if (!record.classInfo)\n throw new Error(\"Can't create 'similar instances' for records based on multiple different ECClass instances\");\n const propertyName = getPropertyName(field);\n const propertyValue = getPropertyValue(record, field);\n const relatedInstanceInfo = createRelatedInstanceSpecInfo(field);\n const relatedClass = relatedInstanceInfo?.class;\n const ruleset: Ruleset = {\n id: `SimilarInstances/${propertyName}/${Guid.createValue()}`,\n rules: [],\n };\n ruleset.rules.push({\n ruleType: RuleTypes.Content,\n specifications: [{\n specType: ContentSpecificationTypes.ContentInstancesOfSpecificClasses,\n classes: createMultiClassSpecification(record.classInfo),\n handleInstancesPolymorphically: true,\n relatedInstances: relatedInstanceInfo ? [relatedInstanceInfo.spec] : [],\n instanceFilter: createInstanceFilter(relatedInstanceInfo?.spec, field.type, propertyName, propertyValue.raw),\n }],\n });\n return { ruleset, relatedClass, propertyName, propertyValue };\n }\n\n /**\n * Create a ruleset with content rules for getting instances are of the\n * same ECClass and have the same property value as the provided `record`.\n * @param field A field identifying which property of the record we should use\n * @param record A record whose similar instances should be found\n * @param computeDisplayValue Optional callback function to calculate display value that's\n * used in ruleset's description. If not provided, display value from record is used instead.\n */\n public async createSimilarInstancesRuleset(field: Field, record: Item, computeDisplayValue?: ComputeDisplayValueCallback): Promise<{ ruleset: Ruleset, description: string }> {\n const info = this.createSimilarInstancesRulesetInfo(field, record);\n const description = await createDescriptionAsync(record, info.relatedClass, field, info.propertyValue, computeDisplayValue);\n return { ruleset: info.ruleset, description };\n }\n}\n\n/**\n * Definition of a function for calculating a display value.\n * @public\n */\nexport type ComputeDisplayValueCallback = (type: string, value: PrimitivePropertyValue, displayValue: string) => Promise<string>;\n\ninterface PrimitiveValueDef {\n raw: PrimitivePropertyValue;\n display: string;\n}\n\n/**\n * Value of a primitive property.\n * @public\n */\nexport type PrimitivePropertyValue = string | number | boolean | Point | InstanceKey | undefined;\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ntype Point = { x: number, y: number, z?: number };\n\nconst toString = (displayValue: Value | DisplayValue): string => {\n if (!displayValue)\n return \"NULL\";\n return displayValue.toString();\n};\n\nconst createDescription = (record: Item, relatedClass: ClassInfo | undefined, field: Field, value: string): string => {\n const classInfo = relatedClass ?? record.classInfo!;\n return `[${classInfo.label}].[${field.label}] = ${value}`;\n};\n\nconst createDescriptionAsync = async (record: Item, relatedClass: ClassInfo | undefined, field: Field, value: PrimitiveValueDef, computeDisplayValue?: ComputeDisplayValueCallback): Promise<string> => {\n const displayValue = computeDisplayValue ? await computeDisplayValue(field.type.typeName, value.raw, value.display) : toString(value.display);\n return createDescription(record, relatedClass, field, displayValue);\n};\n\nconst getPropertyName = (field: PropertiesField) => {\n let name = field.properties[0].property.name;\n if (field.type.typeName === \"navigation\")\n name += \".Id\";\n return name;\n};\n\nconst isPrimitivePropertyValue = (value: Value): value is PrimitivePropertyValue => {\n if (Value.isPrimitive(value)) {\n return true;\n }\n\n if (Value.isMap(value)) {\n if (typeof value.x === \"number\"\n && typeof value.y === \"number\"\n && (value.z === undefined || typeof value.z === \"number\")) {\n return true;\n }\n\n if (typeof value.className === \"string\" && typeof value.id === \"string\") {\n return true;\n }\n }\n\n return false;\n};\n\nconst getPropertyValue = (record: Item, field: Field): PrimitiveValueDef => {\n const fieldNamesStack = [];\n let currField: Field | undefined = field;\n while (currField) {\n fieldNamesStack.push(currField.name);\n currField = currField.parent;\n }\n let currFieldName = fieldNamesStack.pop();\n let displayValue: DisplayValue = record.displayValues[currFieldName!];\n let value: Value = record.values[currFieldName!];\n currFieldName = fieldNamesStack.pop();\n while (currFieldName) {\n if (!Value.isNestedContent(value) || value.length === 0)\n throw new Error(\"Invalid record value\");\n if (value.length > 1)\n throw new Error(\"Can't create 'similar instances' for records related through many part of *-to-many relationship\");\n if (value[0].mergedFieldNames.indexOf(currFieldName) !== -1)\n throw new Error(\"Can't create 'similar instances' ruleset for merged values\");\n displayValue = value[0].displayValues[currFieldName];\n value = value[0].values[currFieldName];\n currFieldName = fieldNamesStack.pop();\n }\n if (!isPrimitivePropertyValue(value))\n throw new Error(\"Can only create 'similar instances' ruleset for primitive values\");\n return { raw: value, display: toString(displayValue) };\n};\n\nconst createInstanceFilter = (\n relatedInstanceSpec: Readonly<RelatedInstanceSpecification> | undefined,\n propertyType: PrimitiveTypeDescription,\n propertyName: string,\n propertyValue: PrimitivePropertyValue,\n): string => {\n const alias = relatedInstanceSpec ? relatedInstanceSpec.alias : \"this\";\n return createComparison(propertyType, `${alias}.${propertyName}`, \"=\", propertyValue);\n};\n\ntype Operator = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\";\nconst createComparison = (type: PrimitiveTypeDescription, name: string, operator: Operator, value: PrimitivePropertyValue): string => {\n let compareValue = \"\";\n switch (typeof value) {\n case \"undefined\": compareValue = \"NULL\"; break;\n case \"string\": compareValue = `\"${value.replace(/\"/g, `\"\"`)}\"`; break;\n case \"boolean\": compareValue = value ? \"TRUE\" : \"FALSE\"; break;\n case \"number\": compareValue = value.toString(); break;\n }\n if (type.typeName === \"navigation\" && typeof value === \"object\" && Id64.isId64((value as InstanceKey).id)) {\n // note: this is temporary until we support hex ids in instance filters\n compareValue = hexToDec((value as InstanceKey).id);\n }\n if (type.typeName === \"point2d\" || type.typeName === \"point3d\") {\n if (typeof value !== \"object\")\n throw new Error(\"Expecting point values to be supplied as objects\");\n const dimensionType: PrimitiveTypeDescription = {\n valueFormat: PropertyValueFormat.Primitive,\n typeName: \"double\",\n };\n const pointValue = value as Point;\n let comparison = `${createComparison(dimensionType, `${name}.x`, operator, pointValue.x)}`;\n comparison += ` AND ${createComparison(dimensionType, `${name}.y`, operator, pointValue.y)}`;\n if (type.typeName === \"point3d\" && pointValue.z !== undefined)\n comparison += ` AND ${createComparison(dimensionType, `${name}.z`, operator, pointValue.z)}`;\n return comparison;\n }\n if (type.typeName === \"double\") {\n return `CompareDoubles(${name}, ${compareValue}) ${operator} 0`;\n }\n if (type.typeName === \"dateTime\") {\n return `CompareDateTimes(${name}, ${compareValue}) ${operator} 0`;\n }\n return `${name} ${operator} ${compareValue}`;\n};\n\nconst createMultiClassSpecification = (classInfo: Readonly<ClassInfo>): MultiSchemaClassesSpecification => {\n const [schemaName, className] = classInfo.name.split(\":\");\n return { schemaName, classNames: [className] };\n};\n\nconst createSingleClassSpecification = (classInfo: Readonly<ClassInfo>): SingleSchemaClassSpecification => {\n const [schemaName, className] = classInfo.name.split(\":\");\n return { schemaName, className };\n};\n\nconst createRelatedInstanceSpec = (pathFromSelectToPropertyClass: RelationshipPath, index: number): { spec: RelatedInstanceSpecification, class: ClassInfo } => ({\n spec: {\n relationshipPath: pathFromSelectToPropertyClass.map((step) => ({\n relationship: createSingleClassSpecification(step.relationshipInfo),\n direction: step.isForwardRelationship ? RelationshipDirection.Forward : RelationshipDirection.Backward,\n targetClass: createSingleClassSpecification(step.targetClassInfo),\n })),\n isRequired: true,\n alias: `related_${index}`,\n },\n class: pathFromSelectToPropertyClass[pathFromSelectToPropertyClass.length - 1].targetClassInfo,\n});\n\nconst createPathFromSelectToPropertyClass = (field: PropertiesField): RelationshipPath => {\n let currField: Field = field;\n const pathFromPropertyToSelectClass: RelationshipPath = [];\n while (currField.parent) {\n pathFromPropertyToSelectClass.push(...currField.parent.pathToPrimaryClass);\n currField = currField.parent;\n }\n return RelationshipPath.reverse(pathFromPropertyToSelectClass);\n};\n\nconst createRelatedInstanceSpecInfo = (field: PropertiesField): { spec: RelatedInstanceSpecification, class: ClassInfo } | undefined => {\n const path = createPathFromSelectToPropertyClass(field);\n return path.length ? createRelatedInstanceSpec(path, 0) : undefined;\n};\n\nconst hexToDec = (id: Id64String) => {\n const digits = [0];\n for (let i = 2; i < id.length; ++i) {\n let carry = parseInt(id.charAt(i), 16);\n for (let j = 0; j < digits.length; ++j) {\n digits[j] = digits[j] * 16 + carry;\n carry = digits[j] / 10 | 0;\n digits[j] %= 10;\n }\n while (carry > 0) {\n digits.push(carry % 10);\n carry = carry / 10 | 0;\n }\n }\n return digits.reverse().join(\"\");\n};\n"]}
1
+ {"version":3,"file":"RulesetsFactory.js","sourceRoot":"","sources":["../../../src/presentation-common/RulesetsFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Core\n */\n\nimport { Guid, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Field, PropertiesField } from \"./content/Fields\";\nimport { Item } from \"./content/Item\";\nimport { PrimitiveTypeDescription, PropertyValueFormat } from \"./content/TypeDescription\";\nimport { DisplayValue, Value } from \"./content/Value\";\nimport { ClassInfo, InstanceKey, RelationshipPath } from \"./EC\";\nimport { MultiSchemaClassesSpecification, SingleSchemaClassSpecification } from \"./rules/ClassSpecifications\";\nimport { ContentSpecificationTypes } from \"./rules/content/ContentSpecification\";\nimport { RelatedInstanceSpecification } from \"./rules/RelatedInstanceSpecification\";\nimport { RelationshipDirection } from \"./rules/RelationshipDirection\";\nimport { RuleTypes } from \"./rules/Rule\";\nimport { Ruleset } from \"./rules/Ruleset\";\n\n/**\n * A factory class that can be used to create presentation rulesets targeted towards\n * specific use cases.\n *\n * @public\n */\nexport class RulesetsFactory {\n private createSimilarInstancesRulesetInfo(field: Field, record: Item) {\n if (!field.isPropertiesField())\n throw new Error(\"Can only create 'similar instances' ruleset for properties-based records\");\n if (field.type.valueFormat !== PropertyValueFormat.Primitive)\n throw new Error(\"Can only create 'similar instances' ruleset for primitive properties\");\n if (field.properties.length === 0)\n throw new Error(\"Invalid properties' field with no properties\");\n if (record.isFieldMerged(field.name))\n throw new Error(\"Can't create 'similar instances' ruleset for merged values\");\n if (!record.classInfo)\n throw new Error(\"Can't create 'similar instances' for records based on multiple different ECClass instances\");\n const propertyName = getPropertyName(field);\n const propertyValue = getPropertyValue(record, field);\n const relatedInstanceInfo = createRelatedInstanceSpecInfo(field);\n const relatedClass = relatedInstanceInfo?.class;\n const ruleset: Ruleset = {\n id: `SimilarInstances/${propertyName}/${Guid.createValue()}`,\n rules: [],\n };\n ruleset.rules.push({\n ruleType: RuleTypes.Content,\n specifications: [{\n specType: ContentSpecificationTypes.ContentInstancesOfSpecificClasses,\n classes: createMultiClassSpecification(record.classInfo),\n handleInstancesPolymorphically: true,\n relatedInstances: relatedInstanceInfo ? [relatedInstanceInfo.spec] : [],\n instanceFilter: createInstanceFilter(relatedInstanceInfo?.spec, field.type, propertyName, propertyValue.raw),\n }],\n });\n return { ruleset, relatedClass, propertyName, propertyValue };\n }\n\n /**\n * Create a ruleset with content rules for getting instances are of the\n * same ECClass and have the same property value as the provided `record`.\n * @param field A field identifying which property of the record we should use\n * @param record A record whose similar instances should be found\n * @param computeDisplayValue Optional callback function to calculate display value that's\n * used in ruleset's description. If not provided, display value from record is used instead.\n */\n public async createSimilarInstancesRuleset(field: Field, record: Item, computeDisplayValue?: ComputeDisplayValueCallback): Promise<{ ruleset: Ruleset, description: string }> {\n const info = this.createSimilarInstancesRulesetInfo(field, record);\n const description = await createDescriptionAsync(record, info.relatedClass, field, info.propertyValue, computeDisplayValue);\n return { ruleset: info.ruleset, description };\n }\n}\n\n/**\n * Definition of a function for calculating a display value.\n * @public\n */\nexport type ComputeDisplayValueCallback = (type: string, value: PrimitivePropertyValue, displayValue: string) => Promise<string>;\n\ninterface PrimitiveValueDef {\n raw: PrimitivePropertyValue;\n display: string;\n}\n\n/**\n * Value of a primitive property.\n * @public\n */\nexport type PrimitivePropertyValue = string | number | boolean | Point | InstanceKey | undefined;\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ntype Point = { x: number, y: number, z?: number };\n\nconst toString = (displayValue: Value | DisplayValue): string => {\n if (!displayValue)\n return \"NULL\";\n return displayValue.toString();\n};\n\nconst createDescription = (record: Item, relatedClass: ClassInfo | undefined, field: Field, value: string): string => {\n const classInfo = relatedClass ?? record.classInfo!;\n return `[${classInfo.label}].[${field.label}] = ${value}`;\n};\n\nconst createDescriptionAsync = async (record: Item, relatedClass: ClassInfo | undefined, field: Field, value: PrimitiveValueDef, computeDisplayValue?: ComputeDisplayValueCallback): Promise<string> => {\n const displayValue = computeDisplayValue ? await computeDisplayValue(field.type.typeName, value.raw, value.display) : toString(value.display);\n return createDescription(record, relatedClass, field, displayValue);\n};\n\nconst getPropertyName = (field: PropertiesField) => {\n let name = field.properties[0].property.name;\n if (field.type.typeName === \"navigation\")\n name += \".Id\";\n return name;\n};\n\nconst isPrimitivePropertyValue = (value: Value): value is PrimitivePropertyValue => {\n if (Value.isPrimitive(value)) {\n return true;\n }\n\n if (Value.isMap(value)) {\n if (typeof value.x === \"number\"\n && typeof value.y === \"number\"\n && (value.z === undefined || typeof value.z === \"number\")) {\n return true;\n }\n\n if (typeof value.className === \"string\" && typeof value.id === \"string\") {\n return true;\n }\n }\n\n return false;\n};\n\nconst getPropertyValue = (record: Item, field: Field): PrimitiveValueDef => {\n const fieldNamesStack = [];\n let currField: Field | undefined = field;\n while (currField) {\n fieldNamesStack.push(currField.name);\n currField = currField.parent;\n }\n let currFieldName = fieldNamesStack.pop();\n let displayValue: DisplayValue = record.displayValues[currFieldName!];\n let value: Value = record.values[currFieldName!];\n currFieldName = fieldNamesStack.pop();\n while (currFieldName) {\n if (!Value.isNestedContent(value) || value.length === 0)\n throw new Error(\"Invalid record value\");\n if (value.length > 1)\n throw new Error(\"Can't create 'similar instances' for records related through many part of *-to-many relationship\");\n if (value[0].mergedFieldNames.indexOf(currFieldName) !== -1)\n throw new Error(\"Can't create 'similar instances' ruleset for merged values\");\n displayValue = value[0].displayValues[currFieldName];\n value = value[0].values[currFieldName];\n currFieldName = fieldNamesStack.pop();\n }\n if (!isPrimitivePropertyValue(value))\n throw new Error(\"Can only create 'similar instances' ruleset for primitive values\");\n return { raw: value, display: toString(displayValue) };\n};\n\nconst createInstanceFilter = (\n relatedInstanceSpec: Readonly<RelatedInstanceSpecification> | undefined,\n propertyType: PrimitiveTypeDescription,\n propertyName: string,\n propertyValue: PrimitivePropertyValue,\n): string => {\n const alias = relatedInstanceSpec ? relatedInstanceSpec.alias : \"this\";\n return createComparison(propertyType, `${alias}.${propertyName}`, \"=\", propertyValue);\n};\n\ntype Operator = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\";\nconst createComparison = (type: PrimitiveTypeDescription, name: string, operator: Operator, value: PrimitivePropertyValue): string => {\n let compareValue = \"\";\n switch (typeof value) {\n case \"undefined\":\n compareValue = \"NULL\";\n break;\n case \"string\":\n compareValue = `\"${value.replace(/\"/g, `\"\"`)}\"`;\n break;\n case \"boolean\":\n compareValue = value ? \"TRUE\" : \"FALSE\";\n break;\n case \"number\":\n compareValue = value.toString();\n break;\n }\n\n if (type.typeName === \"navigation\" && typeof value === \"object\" && Id64.isId64((value as InstanceKey).id))\n // note: this is temporary until we support hex ids in instance filters\n compareValue = hexToDec((value as InstanceKey).id);\n\n if (type.typeName === \"point2d\" || type.typeName === \"point3d\") {\n if (typeof value !== \"object\")\n throw new Error(\"Expecting point values to be supplied as objects\");\n\n const dimensionType: PrimitiveTypeDescription = {\n valueFormat: PropertyValueFormat.Primitive,\n typeName: \"double\",\n };\n\n const pointValue = value as Point;\n let comparison = `${createComparison(dimensionType, `${name}.x`, operator, pointValue.x)}`;\n comparison += ` AND ${createComparison(dimensionType, `${name}.y`, operator, pointValue.y)}`;\n if (type.typeName === \"point3d\" && pointValue.z !== undefined)\n comparison += ` AND ${createComparison(dimensionType, `${name}.z`, operator, pointValue.z)}`;\n\n return comparison;\n }\n\n if (type.typeName === \"double\")\n return `CompareDoubles(${name}, ${compareValue}) ${operator} 0`;\n\n if (type.typeName === \"dateTime\")\n return `CompareDateTimes(${name}, ${compareValue}) ${operator} 0`;\n\n return `${name} ${operator} ${compareValue}`;\n};\n\nconst createMultiClassSpecification = (classInfo: Readonly<ClassInfo>): MultiSchemaClassesSpecification => {\n const [schemaName, className] = classInfo.name.split(\":\");\n return { schemaName, classNames: [className] };\n};\n\nconst createSingleClassSpecification = (classInfo: Readonly<ClassInfo>): SingleSchemaClassSpecification => {\n const [schemaName, className] = classInfo.name.split(\":\");\n return { schemaName, className };\n};\n\nconst createRelatedInstanceSpec = (pathFromSelectToPropertyClass: RelationshipPath, index: number): { spec: RelatedInstanceSpecification, class: ClassInfo } => ({\n spec: {\n relationshipPath: pathFromSelectToPropertyClass.map((step) => ({\n relationship: createSingleClassSpecification(step.relationshipInfo),\n direction: step.isForwardRelationship ? RelationshipDirection.Forward : RelationshipDirection.Backward,\n targetClass: createSingleClassSpecification(step.targetClassInfo),\n })),\n isRequired: true,\n alias: `related_${index}`,\n },\n class: pathFromSelectToPropertyClass[pathFromSelectToPropertyClass.length - 1].targetClassInfo,\n});\n\nconst createPathFromSelectToPropertyClass = (field: PropertiesField): RelationshipPath => {\n let currField: Field = field;\n const pathFromPropertyToSelectClass: RelationshipPath = [];\n while (currField.parent) {\n pathFromPropertyToSelectClass.push(...currField.parent.pathToPrimaryClass);\n currField = currField.parent;\n }\n return RelationshipPath.reverse(pathFromPropertyToSelectClass);\n};\n\nconst createRelatedInstanceSpecInfo = (field: PropertiesField): { spec: RelatedInstanceSpecification, class: ClassInfo } | undefined => {\n const path = createPathFromSelectToPropertyClass(field);\n return path.length ? createRelatedInstanceSpec(path, 0) : undefined;\n};\n\nconst hexToDec = (id: Id64String) => {\n const digits = [0];\n for (let i = 2; i < id.length; ++i) {\n let carry = parseInt(id.charAt(i), 16);\n for (let j = 0; j < digits.length; ++j) {\n digits[j] = digits[j] * 16 + carry;\n carry = digits[j] / 10 | 0;\n digits[j] %= 10;\n }\n while (carry > 0) {\n digits.push(carry % 10);\n carry = carry / 10 | 0;\n }\n }\n return digits.reverse().join(\"\");\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Value.d.ts","sourceRoot":"","sources":["../../../../src/presentation-common/content/Value.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Value.d.ts","sourceRoot":"","sources":["../../../../src/presentation-common/content/Value.ts"],"names":[],"mappings":"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"}
@@ -13,16 +13,24 @@ const EC_1 = require("../EC");
13
13
  var Value;
14
14
  (function (Value) {
15
15
  /** Is the value a primitive */
16
- function isPrimitive(value) { return isPrimitiveValue(value); }
16
+ function isPrimitive(value) {
17
+ return isPrimitiveValue(value);
18
+ }
17
19
  Value.isPrimitive = isPrimitive;
18
20
  /** Is the value an array */
19
- function isArray(value) { return isArrayValue(value); }
21
+ function isArray(value) {
22
+ return isArrayValue(value);
23
+ }
20
24
  Value.isArray = isArray;
21
25
  /** Is the value a map / struct */
22
- function isMap(value) { return isMapValue(value); }
26
+ function isMap(value) {
27
+ return isMapValue(value);
28
+ }
23
29
  Value.isMap = isMap;
24
30
  /** Is the value a nested content value */
25
- function isNestedContent(value) { return isNestedContentValue(value); }
31
+ function isNestedContent(value) {
32
+ return isNestedContentValue(value);
33
+ }
26
34
  Value.isNestedContent = isNestedContent;
27
35
  /** Serialize [[Value]] to JSON */
28
36
  function fromJSON(json) {
@@ -55,13 +63,19 @@ var Value;
55
63
  var DisplayValue;
56
64
  (function (DisplayValue) {
57
65
  /** Is the value a primitive */
58
- function isPrimitive(value) { return isPrimitiveValue(value); }
66
+ function isPrimitive(value) {
67
+ return isPrimitiveValue(value);
68
+ }
59
69
  DisplayValue.isPrimitive = isPrimitive;
60
70
  /** Is the value an array */
61
- function isArray(value) { return isArrayValue(value); }
71
+ function isArray(value) {
72
+ return isArrayValue(value);
73
+ }
62
74
  DisplayValue.isArray = isArray;
63
75
  /** Is the value a map / struct */
64
- function isMap(value) { return isMapValue(value); }
76
+ function isMap(value) {
77
+ return isMapValue(value);
78
+ }
65
79
  DisplayValue.isMap = isMap;
66
80
  /** Serialize [[DisplayValue]] to JSON */
67
81
  function fromJSON(json) {
@@ -1 +1 @@
1
- {"version":3,"file":"Value.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/Value.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Content\n */\n\nimport { InstanceKey, InstanceKeyJSON } from \"../EC\";\nimport { ValuesDictionary } from \"../Utils\";\n\n/**\n * Raw value type\n * @public\n */\nexport type Value = string | number | boolean | undefined | ValuesMap | ValuesArray | NestedContentValue[];\n\n/** @public */\nexport namespace Value { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is the value a primitive */\n export function isPrimitive(value: Value): value is string | number | boolean | undefined { return isPrimitiveValue(value); }\n\n /** Is the value an array */\n export function isArray(value: Value): value is ValuesArray { return isArrayValue(value); }\n\n /** Is the value a map / struct */\n export function isMap(value: Value): value is ValuesMap { return isMapValue(value); }\n\n /** Is the value a nested content value */\n export function isNestedContent(value: Value): value is NestedContentValue[] { return isNestedContentValue(value); }\n\n /** Serialize [[Value]] to JSON */\n export function fromJSON(json: ValueJSON): Value {\n if (json === null)\n return undefined;\n if (isNestedContentValue(json))\n return json.map(NestedContentValue.fromJSON);\n if (isArrayValue(json))\n return valuesArrayFromJSON(json);\n if (isMapValue(json))\n return valuesMapFromJSON(json);\n return json;\n }\n\n /** Deserialize [[Value]] from JSON */\n export function toJSON(value: Value): ValueJSON {\n if (undefined === value)\n return null;\n if (isNestedContentValue(value))\n return value.map(NestedContentValue.toJSON);\n if (isArrayValue(value))\n return valuesArrayToJSON(value);\n if (isMapValue(value))\n return valuesMapToJSON(value);\n return value;\n }\n}\n\n/**\n * A map of raw values\n * @public\n */\nexport interface ValuesMap extends ValuesDictionary<Value> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * An array of raw values\n * @public\n */\nexport interface ValuesArray extends Array<Value> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Display value type.\n * @public\n */\nexport type DisplayValue = string | undefined | DisplayValuesMap | DisplayValuesArray;\n\n/** @public */\nexport namespace DisplayValue { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is the value a primitive */\n export function isPrimitive(value: DisplayValue): value is string | undefined { return isPrimitiveValue(value); }\n\n /** Is the value an array */\n export function isArray(value: DisplayValue): value is DisplayValuesArray { return isArrayValue(value); }\n\n /** Is the value a map / struct */\n export function isMap(value: DisplayValue): value is DisplayValuesMap { return isMapValue(value); }\n\n /** Serialize [[DisplayValue]] to JSON */\n export function fromJSON(json: DisplayValueJSON): DisplayValue {\n if (json === null)\n return undefined;\n if (isArrayValue(json))\n return displayValuesArrayFromJSON(json);\n if (isMapValue(json))\n return displayValuesMapFromJSON(json);\n return json;\n }\n\n /** Deserialize [[DisplayValue]] from JSON */\n export function toJSON(value: DisplayValue): DisplayValueJSON {\n if (undefined === value)\n return null;\n if (isArrayValue(value))\n return displayValuesArrayToJSON(value);\n if (isMapValue(value))\n return displayValuesMapToJSON(value);\n return value;\n }\n}\n\n/**\n * A map of display values\n * @public\n */\nexport interface DisplayValuesMap extends ValuesDictionary<DisplayValue> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * An array of display values\n * @public\n */\nexport interface DisplayValuesArray extends Array<DisplayValue> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Data structure that describes nested content value.\n * @public\n */\nexport interface NestedContentValue {\n /** Keys of instances whose content is contained in this value */\n primaryKeys: InstanceKey[];\n /** Content values map */\n values: ValuesDictionary<Value>;\n /** Content display values map */\n displayValues: ValuesDictionary<DisplayValue>;\n /** Names of fields whose values are merged */\n mergedFieldNames: string[];\n}\n\n/** @public */\nexport namespace NestedContentValue {\n /** Serialize [[NestedContentValue]] to JSON */\n export function toJSON(json: NestedContentValue): NestedContentValueJSON {\n return {\n primaryKeys: json.primaryKeys.map(InstanceKey.toJSON),\n values: valuesMapToJSON(json.values),\n displayValues: displayValuesMapToJSON(json.displayValues),\n mergedFieldNames: json.mergedFieldNames,\n };\n }\n\n /** Deserialize [[NestedContentValue]] from JSON */\n export function fromJSON(json: NestedContentValueJSON): NestedContentValue {\n return {\n primaryKeys: json.primaryKeys.map(InstanceKey.fromJSON),\n values: valuesMapFromJSON(json.values),\n displayValues: displayValuesMapFromJSON(json.displayValues),\n mergedFieldNames: json.mergedFieldNames,\n };\n }\n}\n\n/**\n * JSON representation of [[Value]]\n * @public\n */\nexport type ValueJSON = string | number | boolean | null | ValuesMapJSON | ValuesArrayJSON | NestedContentValueJSON[];\n\n/**\n * JSON representation of [[ValuesMap]]\n * @public\n */\nexport interface ValuesMapJSON extends ValuesDictionary<ValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[ValuesArray]]\n * @public\n */\nexport interface ValuesArrayJSON extends Array<ValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[DisplayValue]]\n * @public\n */\nexport type DisplayValueJSON = string | null | DisplayValuesMapJSON | DisplayValuesArrayJSON;\n\n/**\n * JSON representation of [[DisplayValuesMap]]\n * @public\n */\nexport interface DisplayValuesMapJSON extends ValuesDictionary<DisplayValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[DisplayValuesArray]]\n * @public\n */\nexport interface DisplayValuesArrayJSON extends Array<DisplayValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[NestedContentValue]]\n * @public\n */\nexport interface NestedContentValueJSON {\n primaryKeys: InstanceKeyJSON[];\n values: ValuesDictionary<ValueJSON>;\n displayValues: ValuesDictionary<DisplayValueJSON>;\n mergedFieldNames: string[];\n}\n\n/**\n * A group of raw values and their common display value.\n * @public\n */\nexport interface DisplayValueGroup {\n /** Common display value for all grouped raw values */\n displayValue: DisplayValue;\n /** A list of grouped raw values */\n groupedRawValues: Value[];\n}\n\n/**\n * JSON representation of [[DisplayValueGroup]].\n * @public\n */\nexport interface DisplayValueGroupJSON {\n displayValue: DisplayValueJSON;\n groupedRawValues: ValueJSON[];\n}\n\n/** @public */\nexport namespace DisplayValueGroup {\n /** Serialize [[DisplayValueGroup]] to JSON */\n export function toJSON(group: DisplayValueGroup): DisplayValueGroupJSON {\n return {\n displayValue: DisplayValue.toJSON(group.displayValue),\n groupedRawValues: group.groupedRawValues.map(Value.toJSON),\n };\n }\n\n /** Deserialize [[DisplayValueGroup]] from JSON */\n export function fromJSON(json: DisplayValueGroupJSON): DisplayValueGroup {\n return {\n displayValue: DisplayValue.fromJSON(json.displayValue),\n groupedRawValues: json.groupedRawValues.map(Value.fromJSON),\n };\n }\n}\n\nfunction isNestedContentValue(v: Value | ValueJSON): v is NestedContentValue[] | NestedContentValueJSON[] {\n return (v !== undefined) && Array.isArray(v)\n && ((v.length === 0)\n || (v[0] as NestedContentValue).primaryKeys !== undefined\n && (v[0] as NestedContentValue).values !== undefined\n && (v[0] as NestedContentValue).displayValues !== undefined\n && (v[0] as NestedContentValue).mergedFieldNames !== undefined);\n}\nfunction isArrayValue(v: Value | ValueJSON | DisplayValue | DisplayValueJSON): v is ValuesArray | ValuesArrayJSON | DisplayValuesArray | DisplayValuesArrayJSON {\n // note: we don't guarantee by 100% that v is ValuesArray | DisplayValuesArray, but merely make compiler happy.\n // we have other means to determine the type of value.\n return (v !== undefined) && Array.isArray(v);\n}\nfunction isMapValue(v: Value | ValueJSON | DisplayValue | DisplayValueJSON): v is ValuesMap | ValuesMapJSON | DisplayValuesMap | DisplayValuesMapJSON {\n return (v !== undefined) && (typeof v === \"object\") && !Array.isArray(v);\n}\nfunction isPrimitiveValue(v: Value | DisplayValue): v is string | number | boolean | undefined {\n return !isArrayValue(v) && !isMapValue(v);\n}\n\nfunction valuesArrayFromJSON(json: ValuesArrayJSON): ValuesArray {\n return json.map(Value.fromJSON);\n}\nfunction valuesArrayToJSON(values: ValuesArray): ValuesArrayJSON {\n return values.map(Value.toJSON);\n}\nfunction valuesMapFromJSON(json: ValuesMapJSON): ValuesMap {\n const map: ValuesMap = {};\n for (const key in json) {\n /* istanbul ignore else */\n if (json.hasOwnProperty(key)) {\n map[key] = Value.fromJSON(json[key]);\n }\n }\n return map;\n}\nfunction valuesMapToJSON(values: ValuesMap): ValuesMapJSON {\n const map: ValuesMapJSON = {};\n for (const key in values) {\n /* istanbul ignore else */\n if (values.hasOwnProperty(key)) {\n map[key] = Value.toJSON(values[key]);\n }\n }\n return map;\n}\n\nfunction displayValuesArrayFromJSON(json: DisplayValuesArrayJSON): DisplayValuesArray {\n return json.map(DisplayValue.fromJSON);\n}\nfunction displayValuesArrayToJSON(values: DisplayValuesArray): DisplayValuesArrayJSON {\n return values.map(DisplayValue.toJSON);\n}\nfunction displayValuesMapFromJSON(json: DisplayValuesMapJSON): DisplayValuesMap {\n const map: DisplayValuesMap = {};\n for (const key in json) {\n /* istanbul ignore else */\n if (json.hasOwnProperty(key)) {\n map[key] = DisplayValue.fromJSON(json[key]);\n }\n }\n return map;\n}\nfunction displayValuesMapToJSON(values: DisplayValuesMap): DisplayValuesMapJSON {\n const map: DisplayValuesMapJSON = {};\n for (const key in values) {\n /* istanbul ignore else */\n if (values.hasOwnProperty(key)) {\n map[key] = DisplayValue.toJSON(values[key]);\n }\n }\n return map;\n}\n"]}
1
+ {"version":3,"file":"Value.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/Value.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Content\n */\n\nimport { InstanceKey, InstanceKeyJSON } from \"../EC\";\nimport { ValuesDictionary } from \"../Utils\";\n\n/**\n * Raw value type\n * @public\n */\nexport type Value = string | number | boolean | undefined | ValuesMap | ValuesArray | NestedContentValue[];\n\n/** @public */\nexport namespace Value { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is the value a primitive */\n export function isPrimitive(value: Value): value is string | number | boolean | undefined {\n return isPrimitiveValue(value);\n }\n\n /** Is the value an array */\n export function isArray(value: Value): value is ValuesArray {\n return isArrayValue(value);\n }\n\n /** Is the value a map / struct */\n export function isMap(value: Value): value is ValuesMap {\n return isMapValue(value);\n }\n\n /** Is the value a nested content value */\n export function isNestedContent(value: Value): value is NestedContentValue[] {\n return isNestedContentValue(value);\n }\n\n /** Serialize [[Value]] to JSON */\n export function fromJSON(json: ValueJSON): Value {\n if (json === null)\n return undefined;\n if (isNestedContentValue(json))\n return json.map(NestedContentValue.fromJSON);\n if (isArrayValue(json))\n return valuesArrayFromJSON(json);\n if (isMapValue(json))\n return valuesMapFromJSON(json);\n return json;\n }\n\n /** Deserialize [[Value]] from JSON */\n export function toJSON(value: Value): ValueJSON {\n if (undefined === value)\n return null;\n if (isNestedContentValue(value))\n return value.map(NestedContentValue.toJSON);\n if (isArrayValue(value))\n return valuesArrayToJSON(value);\n if (isMapValue(value))\n return valuesMapToJSON(value);\n return value;\n }\n}\n\n/**\n * A map of raw values\n * @public\n */\nexport interface ValuesMap extends ValuesDictionary<Value> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * An array of raw values\n * @public\n */\nexport interface ValuesArray extends Array<Value> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Display value type.\n * @public\n */\nexport type DisplayValue = string | undefined | DisplayValuesMap | DisplayValuesArray;\n\n/** @public */\nexport namespace DisplayValue { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is the value a primitive */\n export function isPrimitive(value: DisplayValue): value is string | undefined {\n return isPrimitiveValue(value);\n }\n\n /** Is the value an array */\n export function isArray(value: DisplayValue): value is DisplayValuesArray {\n return isArrayValue(value);\n }\n\n /** Is the value a map / struct */\n export function isMap(value: DisplayValue): value is DisplayValuesMap {\n return isMapValue(value);\n }\n\n /** Serialize [[DisplayValue]] to JSON */\n export function fromJSON(json: DisplayValueJSON): DisplayValue {\n if (json === null)\n return undefined;\n if (isArrayValue(json))\n return displayValuesArrayFromJSON(json);\n if (isMapValue(json))\n return displayValuesMapFromJSON(json);\n return json;\n }\n\n /** Deserialize [[DisplayValue]] from JSON */\n export function toJSON(value: DisplayValue): DisplayValueJSON {\n if (undefined === value)\n return null;\n if (isArrayValue(value))\n return displayValuesArrayToJSON(value);\n if (isMapValue(value))\n return displayValuesMapToJSON(value);\n return value;\n }\n}\n\n/**\n * A map of display values\n * @public\n */\nexport interface DisplayValuesMap extends ValuesDictionary<DisplayValue> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * An array of display values\n * @public\n */\nexport interface DisplayValuesArray extends Array<DisplayValue> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Data structure that describes nested content value.\n * @public\n */\nexport interface NestedContentValue {\n /** Keys of instances whose content is contained in this value */\n primaryKeys: InstanceKey[];\n /** Content values map */\n values: ValuesDictionary<Value>;\n /** Content display values map */\n displayValues: ValuesDictionary<DisplayValue>;\n /** Names of fields whose values are merged */\n mergedFieldNames: string[];\n}\n\n/** @public */\nexport namespace NestedContentValue {\n /** Serialize [[NestedContentValue]] to JSON */\n export function toJSON(json: NestedContentValue): NestedContentValueJSON {\n return {\n primaryKeys: json.primaryKeys.map(InstanceKey.toJSON),\n values: valuesMapToJSON(json.values),\n displayValues: displayValuesMapToJSON(json.displayValues),\n mergedFieldNames: json.mergedFieldNames,\n };\n }\n\n /** Deserialize [[NestedContentValue]] from JSON */\n export function fromJSON(json: NestedContentValueJSON): NestedContentValue {\n return {\n primaryKeys: json.primaryKeys.map(InstanceKey.fromJSON),\n values: valuesMapFromJSON(json.values),\n displayValues: displayValuesMapFromJSON(json.displayValues),\n mergedFieldNames: json.mergedFieldNames,\n };\n }\n}\n\n/**\n * JSON representation of [[Value]]\n * @public\n */\nexport type ValueJSON = string | number | boolean | null | ValuesMapJSON | ValuesArrayJSON | NestedContentValueJSON[];\n\n/**\n * JSON representation of [[ValuesMap]]\n * @public\n */\nexport interface ValuesMapJSON extends ValuesDictionary<ValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[ValuesArray]]\n * @public\n */\nexport interface ValuesArrayJSON extends Array<ValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[DisplayValue]]\n * @public\n */\nexport type DisplayValueJSON = string | null | DisplayValuesMapJSON | DisplayValuesArrayJSON;\n\n/**\n * JSON representation of [[DisplayValuesMap]]\n * @public\n */\nexport interface DisplayValuesMapJSON extends ValuesDictionary<DisplayValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[DisplayValuesArray]]\n * @public\n */\nexport interface DisplayValuesArrayJSON extends Array<DisplayValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[NestedContentValue]]\n * @public\n */\nexport interface NestedContentValueJSON {\n primaryKeys: InstanceKeyJSON[];\n values: ValuesDictionary<ValueJSON>;\n displayValues: ValuesDictionary<DisplayValueJSON>;\n mergedFieldNames: string[];\n}\n\n/**\n * A group of raw values and their common display value.\n * @public\n */\nexport interface DisplayValueGroup {\n /** Common display value for all grouped raw values */\n displayValue: DisplayValue;\n /** A list of grouped raw values */\n groupedRawValues: Value[];\n}\n\n/**\n * JSON representation of [[DisplayValueGroup]].\n * @public\n */\nexport interface DisplayValueGroupJSON {\n displayValue: DisplayValueJSON;\n groupedRawValues: ValueJSON[];\n}\n\n/** @public */\nexport namespace DisplayValueGroup {\n /** Serialize [[DisplayValueGroup]] to JSON */\n export function toJSON(group: DisplayValueGroup): DisplayValueGroupJSON {\n return {\n displayValue: DisplayValue.toJSON(group.displayValue),\n groupedRawValues: group.groupedRawValues.map(Value.toJSON),\n };\n }\n\n /** Deserialize [[DisplayValueGroup]] from JSON */\n export function fromJSON(json: DisplayValueGroupJSON): DisplayValueGroup {\n return {\n displayValue: DisplayValue.fromJSON(json.displayValue),\n groupedRawValues: json.groupedRawValues.map(Value.fromJSON),\n };\n }\n}\n\nfunction isNestedContentValue(v: Value | ValueJSON): v is NestedContentValue[] | NestedContentValueJSON[] {\n return (v !== undefined) && Array.isArray(v)\n && ((v.length === 0)\n || (v[0] as NestedContentValue).primaryKeys !== undefined\n && (v[0] as NestedContentValue).values !== undefined\n && (v[0] as NestedContentValue).displayValues !== undefined\n && (v[0] as NestedContentValue).mergedFieldNames !== undefined);\n}\nfunction isArrayValue(v: Value | ValueJSON | DisplayValue | DisplayValueJSON): v is ValuesArray | ValuesArrayJSON | DisplayValuesArray | DisplayValuesArrayJSON {\n // note: we don't guarantee by 100% that v is ValuesArray | DisplayValuesArray, but merely make compiler happy.\n // we have other means to determine the type of value.\n return (v !== undefined) && Array.isArray(v);\n}\nfunction isMapValue(v: Value | ValueJSON | DisplayValue | DisplayValueJSON): v is ValuesMap | ValuesMapJSON | DisplayValuesMap | DisplayValuesMapJSON {\n return (v !== undefined) && (typeof v === \"object\") && !Array.isArray(v);\n}\nfunction isPrimitiveValue(v: Value | DisplayValue): v is string | number | boolean | undefined {\n return !isArrayValue(v) && !isMapValue(v);\n}\n\nfunction valuesArrayFromJSON(json: ValuesArrayJSON): ValuesArray {\n return json.map(Value.fromJSON);\n}\nfunction valuesArrayToJSON(values: ValuesArray): ValuesArrayJSON {\n return values.map(Value.toJSON);\n}\nfunction valuesMapFromJSON(json: ValuesMapJSON): ValuesMap {\n const map: ValuesMap = {};\n for (const key in json) {\n /* istanbul ignore else */\n if (json.hasOwnProperty(key)) {\n map[key] = Value.fromJSON(json[key]);\n }\n }\n return map;\n}\nfunction valuesMapToJSON(values: ValuesMap): ValuesMapJSON {\n const map: ValuesMapJSON = {};\n for (const key in values) {\n /* istanbul ignore else */\n if (values.hasOwnProperty(key)) {\n map[key] = Value.toJSON(values[key]);\n }\n }\n return map;\n}\n\nfunction displayValuesArrayFromJSON(json: DisplayValuesArrayJSON): DisplayValuesArray {\n return json.map(DisplayValue.fromJSON);\n}\nfunction displayValuesArrayToJSON(values: DisplayValuesArray): DisplayValuesArrayJSON {\n return values.map(DisplayValue.toJSON);\n}\nfunction displayValuesMapFromJSON(json: DisplayValuesMapJSON): DisplayValuesMap {\n const map: DisplayValuesMap = {};\n for (const key in json) {\n /* istanbul ignore else */\n if (json.hasOwnProperty(key)) {\n map[key] = DisplayValue.fromJSON(json[key]);\n }\n }\n return map;\n}\nfunction displayValuesMapToJSON(values: DisplayValuesMap): DisplayValuesMapJSON {\n const map: DisplayValuesMapJSON = {};\n for (const key in values) {\n /* istanbul ignore else */\n if (values.hasOwnProperty(key)) {\n map[key] = DisplayValue.toJSON(values[key]);\n }\n }\n return map;\n}\n"]}
@@ -145,10 +145,9 @@ const createComparison = (type, name, operator, value) => {
145
145
  compareValue = value.toString();
146
146
  break;
147
147
  }
148
- if (type.typeName === "navigation" && typeof value === "object" && Id64.isId64(value.id)) {
148
+ if (type.typeName === "navigation" && typeof value === "object" && Id64.isId64(value.id))
149
149
  // note: this is temporary until we support hex ids in instance filters
150
150
  compareValue = hexToDec(value.id);
151
- }
152
151
  if (type.typeName === "point2d" || type.typeName === "point3d") {
153
152
  if (typeof value !== "object")
154
153
  throw new Error("Expecting point values to be supplied as objects");
@@ -163,12 +162,10 @@ const createComparison = (type, name, operator, value) => {
163
162
  comparison += ` AND ${createComparison(dimensionType, `${name}.z`, operator, pointValue.z)}`;
164
163
  return comparison;
165
164
  }
166
- if (type.typeName === "double") {
165
+ if (type.typeName === "double")
167
166
  return `CompareDoubles(${name}, ${compareValue}) ${operator} 0`;
168
- }
169
- if (type.typeName === "dateTime") {
167
+ if (type.typeName === "dateTime")
170
168
  return `CompareDateTimes(${name}, ${compareValue}) ${operator} 0`;
171
- }
172
169
  return `${name} ${operator} ${compareValue}`;
173
170
  };
174
171
  const createMultiClassSpecification = (classInfo) => {
@@ -1 +1 @@
1
- {"version":3,"file":"RulesetsFactory.js","sourceRoot":"","sources":["../../../src/presentation-common/RulesetsFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Core\n */\n\nimport { Guid, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Field, PropertiesField } from \"./content/Fields\";\nimport { Item } from \"./content/Item\";\nimport { PrimitiveTypeDescription, PropertyValueFormat } from \"./content/TypeDescription\";\nimport { DisplayValue, Value } from \"./content/Value\";\nimport { ClassInfo, InstanceKey, RelationshipPath } from \"./EC\";\nimport { MultiSchemaClassesSpecification, SingleSchemaClassSpecification } from \"./rules/ClassSpecifications\";\nimport { ContentSpecificationTypes } from \"./rules/content/ContentSpecification\";\nimport { RelatedInstanceSpecification } from \"./rules/RelatedInstanceSpecification\";\nimport { RelationshipDirection } from \"./rules/RelationshipDirection\";\nimport { RuleTypes } from \"./rules/Rule\";\nimport { Ruleset } from \"./rules/Ruleset\";\n\n/**\n * A factory class that can be used to create presentation rulesets targeted towards\n * specific use cases.\n *\n * @public\n */\nexport class RulesetsFactory {\n private createSimilarInstancesRulesetInfo(field: Field, record: Item) {\n if (!field.isPropertiesField())\n throw new Error(\"Can only create 'similar instances' ruleset for properties-based records\");\n if (field.type.valueFormat !== PropertyValueFormat.Primitive)\n throw new Error(\"Can only create 'similar instances' ruleset for primitive properties\");\n if (field.properties.length === 0)\n throw new Error(\"Invalid properties' field with no properties\");\n if (record.isFieldMerged(field.name))\n throw new Error(\"Can't create 'similar instances' ruleset for merged values\");\n if (!record.classInfo)\n throw new Error(\"Can't create 'similar instances' for records based on multiple different ECClass instances\");\n const propertyName = getPropertyName(field);\n const propertyValue = getPropertyValue(record, field);\n const relatedInstanceInfo = createRelatedInstanceSpecInfo(field);\n const relatedClass = relatedInstanceInfo?.class;\n const ruleset: Ruleset = {\n id: `SimilarInstances/${propertyName}/${Guid.createValue()}`,\n rules: [],\n };\n ruleset.rules.push({\n ruleType: RuleTypes.Content,\n specifications: [{\n specType: ContentSpecificationTypes.ContentInstancesOfSpecificClasses,\n classes: createMultiClassSpecification(record.classInfo),\n handleInstancesPolymorphically: true,\n relatedInstances: relatedInstanceInfo ? [relatedInstanceInfo.spec] : [],\n instanceFilter: createInstanceFilter(relatedInstanceInfo?.spec, field.type, propertyName, propertyValue.raw),\n }],\n });\n return { ruleset, relatedClass, propertyName, propertyValue };\n }\n\n /**\n * Create a ruleset with content rules for getting instances are of the\n * same ECClass and have the same property value as the provided `record`.\n * @param field A field identifying which property of the record we should use\n * @param record A record whose similar instances should be found\n * @param computeDisplayValue Optional callback function to calculate display value that's\n * used in ruleset's description. If not provided, display value from record is used instead.\n */\n public async createSimilarInstancesRuleset(field: Field, record: Item, computeDisplayValue?: ComputeDisplayValueCallback): Promise<{ ruleset: Ruleset, description: string }> {\n const info = this.createSimilarInstancesRulesetInfo(field, record);\n const description = await createDescriptionAsync(record, info.relatedClass, field, info.propertyValue, computeDisplayValue);\n return { ruleset: info.ruleset, description };\n }\n}\n\n/**\n * Definition of a function for calculating a display value.\n * @public\n */\nexport type ComputeDisplayValueCallback = (type: string, value: PrimitivePropertyValue, displayValue: string) => Promise<string>;\n\ninterface PrimitiveValueDef {\n raw: PrimitivePropertyValue;\n display: string;\n}\n\n/**\n * Value of a primitive property.\n * @public\n */\nexport type PrimitivePropertyValue = string | number | boolean | Point | InstanceKey | undefined;\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ntype Point = { x: number, y: number, z?: number };\n\nconst toString = (displayValue: Value | DisplayValue): string => {\n if (!displayValue)\n return \"NULL\";\n return displayValue.toString();\n};\n\nconst createDescription = (record: Item, relatedClass: ClassInfo | undefined, field: Field, value: string): string => {\n const classInfo = relatedClass ?? record.classInfo!;\n return `[${classInfo.label}].[${field.label}] = ${value}`;\n};\n\nconst createDescriptionAsync = async (record: Item, relatedClass: ClassInfo | undefined, field: Field, value: PrimitiveValueDef, computeDisplayValue?: ComputeDisplayValueCallback): Promise<string> => {\n const displayValue = computeDisplayValue ? await computeDisplayValue(field.type.typeName, value.raw, value.display) : toString(value.display);\n return createDescription(record, relatedClass, field, displayValue);\n};\n\nconst getPropertyName = (field: PropertiesField) => {\n let name = field.properties[0].property.name;\n if (field.type.typeName === \"navigation\")\n name += \".Id\";\n return name;\n};\n\nconst isPrimitivePropertyValue = (value: Value): value is PrimitivePropertyValue => {\n if (Value.isPrimitive(value)) {\n return true;\n }\n\n if (Value.isMap(value)) {\n if (typeof value.x === \"number\"\n && typeof value.y === \"number\"\n && (value.z === undefined || typeof value.z === \"number\")) {\n return true;\n }\n\n if (typeof value.className === \"string\" && typeof value.id === \"string\") {\n return true;\n }\n }\n\n return false;\n};\n\nconst getPropertyValue = (record: Item, field: Field): PrimitiveValueDef => {\n const fieldNamesStack = [];\n let currField: Field | undefined = field;\n while (currField) {\n fieldNamesStack.push(currField.name);\n currField = currField.parent;\n }\n let currFieldName = fieldNamesStack.pop();\n let displayValue: DisplayValue = record.displayValues[currFieldName!];\n let value: Value = record.values[currFieldName!];\n currFieldName = fieldNamesStack.pop();\n while (currFieldName) {\n if (!Value.isNestedContent(value) || value.length === 0)\n throw new Error(\"Invalid record value\");\n if (value.length > 1)\n throw new Error(\"Can't create 'similar instances' for records related through many part of *-to-many relationship\");\n if (value[0].mergedFieldNames.indexOf(currFieldName) !== -1)\n throw new Error(\"Can't create 'similar instances' ruleset for merged values\");\n displayValue = value[0].displayValues[currFieldName];\n value = value[0].values[currFieldName];\n currFieldName = fieldNamesStack.pop();\n }\n if (!isPrimitivePropertyValue(value))\n throw new Error(\"Can only create 'similar instances' ruleset for primitive values\");\n return { raw: value, display: toString(displayValue) };\n};\n\nconst createInstanceFilter = (\n relatedInstanceSpec: Readonly<RelatedInstanceSpecification> | undefined,\n propertyType: PrimitiveTypeDescription,\n propertyName: string,\n propertyValue: PrimitivePropertyValue,\n): string => {\n const alias = relatedInstanceSpec ? relatedInstanceSpec.alias : \"this\";\n return createComparison(propertyType, `${alias}.${propertyName}`, \"=\", propertyValue);\n};\n\ntype Operator = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\";\nconst createComparison = (type: PrimitiveTypeDescription, name: string, operator: Operator, value: PrimitivePropertyValue): string => {\n let compareValue = \"\";\n switch (typeof value) {\n case \"undefined\": compareValue = \"NULL\"; break;\n case \"string\": compareValue = `\"${value.replace(/\"/g, `\"\"`)}\"`; break;\n case \"boolean\": compareValue = value ? \"TRUE\" : \"FALSE\"; break;\n case \"number\": compareValue = value.toString(); break;\n }\n if (type.typeName === \"navigation\" && typeof value === \"object\" && Id64.isId64((value as InstanceKey).id)) {\n // note: this is temporary until we support hex ids in instance filters\n compareValue = hexToDec((value as InstanceKey).id);\n }\n if (type.typeName === \"point2d\" || type.typeName === \"point3d\") {\n if (typeof value !== \"object\")\n throw new Error(\"Expecting point values to be supplied as objects\");\n const dimensionType: PrimitiveTypeDescription = {\n valueFormat: PropertyValueFormat.Primitive,\n typeName: \"double\",\n };\n const pointValue = value as Point;\n let comparison = `${createComparison(dimensionType, `${name}.x`, operator, pointValue.x)}`;\n comparison += ` AND ${createComparison(dimensionType, `${name}.y`, operator, pointValue.y)}`;\n if (type.typeName === \"point3d\" && pointValue.z !== undefined)\n comparison += ` AND ${createComparison(dimensionType, `${name}.z`, operator, pointValue.z)}`;\n return comparison;\n }\n if (type.typeName === \"double\") {\n return `CompareDoubles(${name}, ${compareValue}) ${operator} 0`;\n }\n if (type.typeName === \"dateTime\") {\n return `CompareDateTimes(${name}, ${compareValue}) ${operator} 0`;\n }\n return `${name} ${operator} ${compareValue}`;\n};\n\nconst createMultiClassSpecification = (classInfo: Readonly<ClassInfo>): MultiSchemaClassesSpecification => {\n const [schemaName, className] = classInfo.name.split(\":\");\n return { schemaName, classNames: [className] };\n};\n\nconst createSingleClassSpecification = (classInfo: Readonly<ClassInfo>): SingleSchemaClassSpecification => {\n const [schemaName, className] = classInfo.name.split(\":\");\n return { schemaName, className };\n};\n\nconst createRelatedInstanceSpec = (pathFromSelectToPropertyClass: RelationshipPath, index: number): { spec: RelatedInstanceSpecification, class: ClassInfo } => ({\n spec: {\n relationshipPath: pathFromSelectToPropertyClass.map((step) => ({\n relationship: createSingleClassSpecification(step.relationshipInfo),\n direction: step.isForwardRelationship ? RelationshipDirection.Forward : RelationshipDirection.Backward,\n targetClass: createSingleClassSpecification(step.targetClassInfo),\n })),\n isRequired: true,\n alias: `related_${index}`,\n },\n class: pathFromSelectToPropertyClass[pathFromSelectToPropertyClass.length - 1].targetClassInfo,\n});\n\nconst createPathFromSelectToPropertyClass = (field: PropertiesField): RelationshipPath => {\n let currField: Field = field;\n const pathFromPropertyToSelectClass: RelationshipPath = [];\n while (currField.parent) {\n pathFromPropertyToSelectClass.push(...currField.parent.pathToPrimaryClass);\n currField = currField.parent;\n }\n return RelationshipPath.reverse(pathFromPropertyToSelectClass);\n};\n\nconst createRelatedInstanceSpecInfo = (field: PropertiesField): { spec: RelatedInstanceSpecification, class: ClassInfo } | undefined => {\n const path = createPathFromSelectToPropertyClass(field);\n return path.length ? createRelatedInstanceSpec(path, 0) : undefined;\n};\n\nconst hexToDec = (id: Id64String) => {\n const digits = [0];\n for (let i = 2; i < id.length; ++i) {\n let carry = parseInt(id.charAt(i), 16);\n for (let j = 0; j < digits.length; ++j) {\n digits[j] = digits[j] * 16 + carry;\n carry = digits[j] / 10 | 0;\n digits[j] %= 10;\n }\n while (carry > 0) {\n digits.push(carry % 10);\n carry = carry / 10 | 0;\n }\n }\n return digits.reverse().join(\"\");\n};\n"]}
1
+ {"version":3,"file":"RulesetsFactory.js","sourceRoot":"","sources":["../../../src/presentation-common/RulesetsFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Core\n */\n\nimport { Guid, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { Field, PropertiesField } from \"./content/Fields\";\nimport { Item } from \"./content/Item\";\nimport { PrimitiveTypeDescription, PropertyValueFormat } from \"./content/TypeDescription\";\nimport { DisplayValue, Value } from \"./content/Value\";\nimport { ClassInfo, InstanceKey, RelationshipPath } from \"./EC\";\nimport { MultiSchemaClassesSpecification, SingleSchemaClassSpecification } from \"./rules/ClassSpecifications\";\nimport { ContentSpecificationTypes } from \"./rules/content/ContentSpecification\";\nimport { RelatedInstanceSpecification } from \"./rules/RelatedInstanceSpecification\";\nimport { RelationshipDirection } from \"./rules/RelationshipDirection\";\nimport { RuleTypes } from \"./rules/Rule\";\nimport { Ruleset } from \"./rules/Ruleset\";\n\n/**\n * A factory class that can be used to create presentation rulesets targeted towards\n * specific use cases.\n *\n * @public\n */\nexport class RulesetsFactory {\n private createSimilarInstancesRulesetInfo(field: Field, record: Item) {\n if (!field.isPropertiesField())\n throw new Error(\"Can only create 'similar instances' ruleset for properties-based records\");\n if (field.type.valueFormat !== PropertyValueFormat.Primitive)\n throw new Error(\"Can only create 'similar instances' ruleset for primitive properties\");\n if (field.properties.length === 0)\n throw new Error(\"Invalid properties' field with no properties\");\n if (record.isFieldMerged(field.name))\n throw new Error(\"Can't create 'similar instances' ruleset for merged values\");\n if (!record.classInfo)\n throw new Error(\"Can't create 'similar instances' for records based on multiple different ECClass instances\");\n const propertyName = getPropertyName(field);\n const propertyValue = getPropertyValue(record, field);\n const relatedInstanceInfo = createRelatedInstanceSpecInfo(field);\n const relatedClass = relatedInstanceInfo?.class;\n const ruleset: Ruleset = {\n id: `SimilarInstances/${propertyName}/${Guid.createValue()}`,\n rules: [],\n };\n ruleset.rules.push({\n ruleType: RuleTypes.Content,\n specifications: [{\n specType: ContentSpecificationTypes.ContentInstancesOfSpecificClasses,\n classes: createMultiClassSpecification(record.classInfo),\n handleInstancesPolymorphically: true,\n relatedInstances: relatedInstanceInfo ? [relatedInstanceInfo.spec] : [],\n instanceFilter: createInstanceFilter(relatedInstanceInfo?.spec, field.type, propertyName, propertyValue.raw),\n }],\n });\n return { ruleset, relatedClass, propertyName, propertyValue };\n }\n\n /**\n * Create a ruleset with content rules for getting instances are of the\n * same ECClass and have the same property value as the provided `record`.\n * @param field A field identifying which property of the record we should use\n * @param record A record whose similar instances should be found\n * @param computeDisplayValue Optional callback function to calculate display value that's\n * used in ruleset's description. If not provided, display value from record is used instead.\n */\n public async createSimilarInstancesRuleset(field: Field, record: Item, computeDisplayValue?: ComputeDisplayValueCallback): Promise<{ ruleset: Ruleset, description: string }> {\n const info = this.createSimilarInstancesRulesetInfo(field, record);\n const description = await createDescriptionAsync(record, info.relatedClass, field, info.propertyValue, computeDisplayValue);\n return { ruleset: info.ruleset, description };\n }\n}\n\n/**\n * Definition of a function for calculating a display value.\n * @public\n */\nexport type ComputeDisplayValueCallback = (type: string, value: PrimitivePropertyValue, displayValue: string) => Promise<string>;\n\ninterface PrimitiveValueDef {\n raw: PrimitivePropertyValue;\n display: string;\n}\n\n/**\n * Value of a primitive property.\n * @public\n */\nexport type PrimitivePropertyValue = string | number | boolean | Point | InstanceKey | undefined;\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ntype Point = { x: number, y: number, z?: number };\n\nconst toString = (displayValue: Value | DisplayValue): string => {\n if (!displayValue)\n return \"NULL\";\n return displayValue.toString();\n};\n\nconst createDescription = (record: Item, relatedClass: ClassInfo | undefined, field: Field, value: string): string => {\n const classInfo = relatedClass ?? record.classInfo!;\n return `[${classInfo.label}].[${field.label}] = ${value}`;\n};\n\nconst createDescriptionAsync = async (record: Item, relatedClass: ClassInfo | undefined, field: Field, value: PrimitiveValueDef, computeDisplayValue?: ComputeDisplayValueCallback): Promise<string> => {\n const displayValue = computeDisplayValue ? await computeDisplayValue(field.type.typeName, value.raw, value.display) : toString(value.display);\n return createDescription(record, relatedClass, field, displayValue);\n};\n\nconst getPropertyName = (field: PropertiesField) => {\n let name = field.properties[0].property.name;\n if (field.type.typeName === \"navigation\")\n name += \".Id\";\n return name;\n};\n\nconst isPrimitivePropertyValue = (value: Value): value is PrimitivePropertyValue => {\n if (Value.isPrimitive(value)) {\n return true;\n }\n\n if (Value.isMap(value)) {\n if (typeof value.x === \"number\"\n && typeof value.y === \"number\"\n && (value.z === undefined || typeof value.z === \"number\")) {\n return true;\n }\n\n if (typeof value.className === \"string\" && typeof value.id === \"string\") {\n return true;\n }\n }\n\n return false;\n};\n\nconst getPropertyValue = (record: Item, field: Field): PrimitiveValueDef => {\n const fieldNamesStack = [];\n let currField: Field | undefined = field;\n while (currField) {\n fieldNamesStack.push(currField.name);\n currField = currField.parent;\n }\n let currFieldName = fieldNamesStack.pop();\n let displayValue: DisplayValue = record.displayValues[currFieldName!];\n let value: Value = record.values[currFieldName!];\n currFieldName = fieldNamesStack.pop();\n while (currFieldName) {\n if (!Value.isNestedContent(value) || value.length === 0)\n throw new Error(\"Invalid record value\");\n if (value.length > 1)\n throw new Error(\"Can't create 'similar instances' for records related through many part of *-to-many relationship\");\n if (value[0].mergedFieldNames.indexOf(currFieldName) !== -1)\n throw new Error(\"Can't create 'similar instances' ruleset for merged values\");\n displayValue = value[0].displayValues[currFieldName];\n value = value[0].values[currFieldName];\n currFieldName = fieldNamesStack.pop();\n }\n if (!isPrimitivePropertyValue(value))\n throw new Error(\"Can only create 'similar instances' ruleset for primitive values\");\n return { raw: value, display: toString(displayValue) };\n};\n\nconst createInstanceFilter = (\n relatedInstanceSpec: Readonly<RelatedInstanceSpecification> | undefined,\n propertyType: PrimitiveTypeDescription,\n propertyName: string,\n propertyValue: PrimitivePropertyValue,\n): string => {\n const alias = relatedInstanceSpec ? relatedInstanceSpec.alias : \"this\";\n return createComparison(propertyType, `${alias}.${propertyName}`, \"=\", propertyValue);\n};\n\ntype Operator = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\";\nconst createComparison = (type: PrimitiveTypeDescription, name: string, operator: Operator, value: PrimitivePropertyValue): string => {\n let compareValue = \"\";\n switch (typeof value) {\n case \"undefined\":\n compareValue = \"NULL\";\n break;\n case \"string\":\n compareValue = `\"${value.replace(/\"/g, `\"\"`)}\"`;\n break;\n case \"boolean\":\n compareValue = value ? \"TRUE\" : \"FALSE\";\n break;\n case \"number\":\n compareValue = value.toString();\n break;\n }\n\n if (type.typeName === \"navigation\" && typeof value === \"object\" && Id64.isId64((value as InstanceKey).id))\n // note: this is temporary until we support hex ids in instance filters\n compareValue = hexToDec((value as InstanceKey).id);\n\n if (type.typeName === \"point2d\" || type.typeName === \"point3d\") {\n if (typeof value !== \"object\")\n throw new Error(\"Expecting point values to be supplied as objects\");\n\n const dimensionType: PrimitiveTypeDescription = {\n valueFormat: PropertyValueFormat.Primitive,\n typeName: \"double\",\n };\n\n const pointValue = value as Point;\n let comparison = `${createComparison(dimensionType, `${name}.x`, operator, pointValue.x)}`;\n comparison += ` AND ${createComparison(dimensionType, `${name}.y`, operator, pointValue.y)}`;\n if (type.typeName === \"point3d\" && pointValue.z !== undefined)\n comparison += ` AND ${createComparison(dimensionType, `${name}.z`, operator, pointValue.z)}`;\n\n return comparison;\n }\n\n if (type.typeName === \"double\")\n return `CompareDoubles(${name}, ${compareValue}) ${operator} 0`;\n\n if (type.typeName === \"dateTime\")\n return `CompareDateTimes(${name}, ${compareValue}) ${operator} 0`;\n\n return `${name} ${operator} ${compareValue}`;\n};\n\nconst createMultiClassSpecification = (classInfo: Readonly<ClassInfo>): MultiSchemaClassesSpecification => {\n const [schemaName, className] = classInfo.name.split(\":\");\n return { schemaName, classNames: [className] };\n};\n\nconst createSingleClassSpecification = (classInfo: Readonly<ClassInfo>): SingleSchemaClassSpecification => {\n const [schemaName, className] = classInfo.name.split(\":\");\n return { schemaName, className };\n};\n\nconst createRelatedInstanceSpec = (pathFromSelectToPropertyClass: RelationshipPath, index: number): { spec: RelatedInstanceSpecification, class: ClassInfo } => ({\n spec: {\n relationshipPath: pathFromSelectToPropertyClass.map((step) => ({\n relationship: createSingleClassSpecification(step.relationshipInfo),\n direction: step.isForwardRelationship ? RelationshipDirection.Forward : RelationshipDirection.Backward,\n targetClass: createSingleClassSpecification(step.targetClassInfo),\n })),\n isRequired: true,\n alias: `related_${index}`,\n },\n class: pathFromSelectToPropertyClass[pathFromSelectToPropertyClass.length - 1].targetClassInfo,\n});\n\nconst createPathFromSelectToPropertyClass = (field: PropertiesField): RelationshipPath => {\n let currField: Field = field;\n const pathFromPropertyToSelectClass: RelationshipPath = [];\n while (currField.parent) {\n pathFromPropertyToSelectClass.push(...currField.parent.pathToPrimaryClass);\n currField = currField.parent;\n }\n return RelationshipPath.reverse(pathFromPropertyToSelectClass);\n};\n\nconst createRelatedInstanceSpecInfo = (field: PropertiesField): { spec: RelatedInstanceSpecification, class: ClassInfo } | undefined => {\n const path = createPathFromSelectToPropertyClass(field);\n return path.length ? createRelatedInstanceSpec(path, 0) : undefined;\n};\n\nconst hexToDec = (id: Id64String) => {\n const digits = [0];\n for (let i = 2; i < id.length; ++i) {\n let carry = parseInt(id.charAt(i), 16);\n for (let j = 0; j < digits.length; ++j) {\n digits[j] = digits[j] * 16 + carry;\n carry = digits[j] / 10 | 0;\n digits[j] %= 10;\n }\n while (carry > 0) {\n digits.push(carry % 10);\n carry = carry / 10 | 0;\n }\n }\n return digits.reverse().join(\"\");\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Value.d.ts","sourceRoot":"","sources":["../../../../src/presentation-common/content/Value.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Value.d.ts","sourceRoot":"","sources":["../../../../src/presentation-common/content/Value.ts"],"names":[],"mappings":"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"}
@@ -10,16 +10,24 @@ import { InstanceKey } from "../EC";
10
10
  export var Value;
11
11
  (function (Value) {
12
12
  /** Is the value a primitive */
13
- function isPrimitive(value) { return isPrimitiveValue(value); }
13
+ function isPrimitive(value) {
14
+ return isPrimitiveValue(value);
15
+ }
14
16
  Value.isPrimitive = isPrimitive;
15
17
  /** Is the value an array */
16
- function isArray(value) { return isArrayValue(value); }
18
+ function isArray(value) {
19
+ return isArrayValue(value);
20
+ }
17
21
  Value.isArray = isArray;
18
22
  /** Is the value a map / struct */
19
- function isMap(value) { return isMapValue(value); }
23
+ function isMap(value) {
24
+ return isMapValue(value);
25
+ }
20
26
  Value.isMap = isMap;
21
27
  /** Is the value a nested content value */
22
- function isNestedContent(value) { return isNestedContentValue(value); }
28
+ function isNestedContent(value) {
29
+ return isNestedContentValue(value);
30
+ }
23
31
  Value.isNestedContent = isNestedContent;
24
32
  /** Serialize [[Value]] to JSON */
25
33
  function fromJSON(json) {
@@ -52,13 +60,19 @@ export var Value;
52
60
  export var DisplayValue;
53
61
  (function (DisplayValue) {
54
62
  /** Is the value a primitive */
55
- function isPrimitive(value) { return isPrimitiveValue(value); }
63
+ function isPrimitive(value) {
64
+ return isPrimitiveValue(value);
65
+ }
56
66
  DisplayValue.isPrimitive = isPrimitive;
57
67
  /** Is the value an array */
58
- function isArray(value) { return isArrayValue(value); }
68
+ function isArray(value) {
69
+ return isArrayValue(value);
70
+ }
59
71
  DisplayValue.isArray = isArray;
60
72
  /** Is the value a map / struct */
61
- function isMap(value) { return isMapValue(value); }
73
+ function isMap(value) {
74
+ return isMapValue(value);
75
+ }
62
76
  DisplayValue.isMap = isMap;
63
77
  /** Serialize [[DisplayValue]] to JSON */
64
78
  function fromJSON(json) {
@@ -1 +1 @@
1
- {"version":3,"file":"Value.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/Value.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Content\n */\n\nimport { InstanceKey, InstanceKeyJSON } from \"../EC\";\nimport { ValuesDictionary } from \"../Utils\";\n\n/**\n * Raw value type\n * @public\n */\nexport type Value = string | number | boolean | undefined | ValuesMap | ValuesArray | NestedContentValue[];\n\n/** @public */\nexport namespace Value { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is the value a primitive */\n export function isPrimitive(value: Value): value is string | number | boolean | undefined { return isPrimitiveValue(value); }\n\n /** Is the value an array */\n export function isArray(value: Value): value is ValuesArray { return isArrayValue(value); }\n\n /** Is the value a map / struct */\n export function isMap(value: Value): value is ValuesMap { return isMapValue(value); }\n\n /** Is the value a nested content value */\n export function isNestedContent(value: Value): value is NestedContentValue[] { return isNestedContentValue(value); }\n\n /** Serialize [[Value]] to JSON */\n export function fromJSON(json: ValueJSON): Value {\n if (json === null)\n return undefined;\n if (isNestedContentValue(json))\n return json.map(NestedContentValue.fromJSON);\n if (isArrayValue(json))\n return valuesArrayFromJSON(json);\n if (isMapValue(json))\n return valuesMapFromJSON(json);\n return json;\n }\n\n /** Deserialize [[Value]] from JSON */\n export function toJSON(value: Value): ValueJSON {\n if (undefined === value)\n return null;\n if (isNestedContentValue(value))\n return value.map(NestedContentValue.toJSON);\n if (isArrayValue(value))\n return valuesArrayToJSON(value);\n if (isMapValue(value))\n return valuesMapToJSON(value);\n return value;\n }\n}\n\n/**\n * A map of raw values\n * @public\n */\nexport interface ValuesMap extends ValuesDictionary<Value> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * An array of raw values\n * @public\n */\nexport interface ValuesArray extends Array<Value> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Display value type.\n * @public\n */\nexport type DisplayValue = string | undefined | DisplayValuesMap | DisplayValuesArray;\n\n/** @public */\nexport namespace DisplayValue { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is the value a primitive */\n export function isPrimitive(value: DisplayValue): value is string | undefined { return isPrimitiveValue(value); }\n\n /** Is the value an array */\n export function isArray(value: DisplayValue): value is DisplayValuesArray { return isArrayValue(value); }\n\n /** Is the value a map / struct */\n export function isMap(value: DisplayValue): value is DisplayValuesMap { return isMapValue(value); }\n\n /** Serialize [[DisplayValue]] to JSON */\n export function fromJSON(json: DisplayValueJSON): DisplayValue {\n if (json === null)\n return undefined;\n if (isArrayValue(json))\n return displayValuesArrayFromJSON(json);\n if (isMapValue(json))\n return displayValuesMapFromJSON(json);\n return json;\n }\n\n /** Deserialize [[DisplayValue]] from JSON */\n export function toJSON(value: DisplayValue): DisplayValueJSON {\n if (undefined === value)\n return null;\n if (isArrayValue(value))\n return displayValuesArrayToJSON(value);\n if (isMapValue(value))\n return displayValuesMapToJSON(value);\n return value;\n }\n}\n\n/**\n * A map of display values\n * @public\n */\nexport interface DisplayValuesMap extends ValuesDictionary<DisplayValue> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * An array of display values\n * @public\n */\nexport interface DisplayValuesArray extends Array<DisplayValue> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Data structure that describes nested content value.\n * @public\n */\nexport interface NestedContentValue {\n /** Keys of instances whose content is contained in this value */\n primaryKeys: InstanceKey[];\n /** Content values map */\n values: ValuesDictionary<Value>;\n /** Content display values map */\n displayValues: ValuesDictionary<DisplayValue>;\n /** Names of fields whose values are merged */\n mergedFieldNames: string[];\n}\n\n/** @public */\nexport namespace NestedContentValue {\n /** Serialize [[NestedContentValue]] to JSON */\n export function toJSON(json: NestedContentValue): NestedContentValueJSON {\n return {\n primaryKeys: json.primaryKeys.map(InstanceKey.toJSON),\n values: valuesMapToJSON(json.values),\n displayValues: displayValuesMapToJSON(json.displayValues),\n mergedFieldNames: json.mergedFieldNames,\n };\n }\n\n /** Deserialize [[NestedContentValue]] from JSON */\n export function fromJSON(json: NestedContentValueJSON): NestedContentValue {\n return {\n primaryKeys: json.primaryKeys.map(InstanceKey.fromJSON),\n values: valuesMapFromJSON(json.values),\n displayValues: displayValuesMapFromJSON(json.displayValues),\n mergedFieldNames: json.mergedFieldNames,\n };\n }\n}\n\n/**\n * JSON representation of [[Value]]\n * @public\n */\nexport type ValueJSON = string | number | boolean | null | ValuesMapJSON | ValuesArrayJSON | NestedContentValueJSON[];\n\n/**\n * JSON representation of [[ValuesMap]]\n * @public\n */\nexport interface ValuesMapJSON extends ValuesDictionary<ValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[ValuesArray]]\n * @public\n */\nexport interface ValuesArrayJSON extends Array<ValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[DisplayValue]]\n * @public\n */\nexport type DisplayValueJSON = string | null | DisplayValuesMapJSON | DisplayValuesArrayJSON;\n\n/**\n * JSON representation of [[DisplayValuesMap]]\n * @public\n */\nexport interface DisplayValuesMapJSON extends ValuesDictionary<DisplayValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[DisplayValuesArray]]\n * @public\n */\nexport interface DisplayValuesArrayJSON extends Array<DisplayValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[NestedContentValue]]\n * @public\n */\nexport interface NestedContentValueJSON {\n primaryKeys: InstanceKeyJSON[];\n values: ValuesDictionary<ValueJSON>;\n displayValues: ValuesDictionary<DisplayValueJSON>;\n mergedFieldNames: string[];\n}\n\n/**\n * A group of raw values and their common display value.\n * @public\n */\nexport interface DisplayValueGroup {\n /** Common display value for all grouped raw values */\n displayValue: DisplayValue;\n /** A list of grouped raw values */\n groupedRawValues: Value[];\n}\n\n/**\n * JSON representation of [[DisplayValueGroup]].\n * @public\n */\nexport interface DisplayValueGroupJSON {\n displayValue: DisplayValueJSON;\n groupedRawValues: ValueJSON[];\n}\n\n/** @public */\nexport namespace DisplayValueGroup {\n /** Serialize [[DisplayValueGroup]] to JSON */\n export function toJSON(group: DisplayValueGroup): DisplayValueGroupJSON {\n return {\n displayValue: DisplayValue.toJSON(group.displayValue),\n groupedRawValues: group.groupedRawValues.map(Value.toJSON),\n };\n }\n\n /** Deserialize [[DisplayValueGroup]] from JSON */\n export function fromJSON(json: DisplayValueGroupJSON): DisplayValueGroup {\n return {\n displayValue: DisplayValue.fromJSON(json.displayValue),\n groupedRawValues: json.groupedRawValues.map(Value.fromJSON),\n };\n }\n}\n\nfunction isNestedContentValue(v: Value | ValueJSON): v is NestedContentValue[] | NestedContentValueJSON[] {\n return (v !== undefined) && Array.isArray(v)\n && ((v.length === 0)\n || (v[0] as NestedContentValue).primaryKeys !== undefined\n && (v[0] as NestedContentValue).values !== undefined\n && (v[0] as NestedContentValue).displayValues !== undefined\n && (v[0] as NestedContentValue).mergedFieldNames !== undefined);\n}\nfunction isArrayValue(v: Value | ValueJSON | DisplayValue | DisplayValueJSON): v is ValuesArray | ValuesArrayJSON | DisplayValuesArray | DisplayValuesArrayJSON {\n // note: we don't guarantee by 100% that v is ValuesArray | DisplayValuesArray, but merely make compiler happy.\n // we have other means to determine the type of value.\n return (v !== undefined) && Array.isArray(v);\n}\nfunction isMapValue(v: Value | ValueJSON | DisplayValue | DisplayValueJSON): v is ValuesMap | ValuesMapJSON | DisplayValuesMap | DisplayValuesMapJSON {\n return (v !== undefined) && (typeof v === \"object\") && !Array.isArray(v);\n}\nfunction isPrimitiveValue(v: Value | DisplayValue): v is string | number | boolean | undefined {\n return !isArrayValue(v) && !isMapValue(v);\n}\n\nfunction valuesArrayFromJSON(json: ValuesArrayJSON): ValuesArray {\n return json.map(Value.fromJSON);\n}\nfunction valuesArrayToJSON(values: ValuesArray): ValuesArrayJSON {\n return values.map(Value.toJSON);\n}\nfunction valuesMapFromJSON(json: ValuesMapJSON): ValuesMap {\n const map: ValuesMap = {};\n for (const key in json) {\n /* istanbul ignore else */\n if (json.hasOwnProperty(key)) {\n map[key] = Value.fromJSON(json[key]);\n }\n }\n return map;\n}\nfunction valuesMapToJSON(values: ValuesMap): ValuesMapJSON {\n const map: ValuesMapJSON = {};\n for (const key in values) {\n /* istanbul ignore else */\n if (values.hasOwnProperty(key)) {\n map[key] = Value.toJSON(values[key]);\n }\n }\n return map;\n}\n\nfunction displayValuesArrayFromJSON(json: DisplayValuesArrayJSON): DisplayValuesArray {\n return json.map(DisplayValue.fromJSON);\n}\nfunction displayValuesArrayToJSON(values: DisplayValuesArray): DisplayValuesArrayJSON {\n return values.map(DisplayValue.toJSON);\n}\nfunction displayValuesMapFromJSON(json: DisplayValuesMapJSON): DisplayValuesMap {\n const map: DisplayValuesMap = {};\n for (const key in json) {\n /* istanbul ignore else */\n if (json.hasOwnProperty(key)) {\n map[key] = DisplayValue.fromJSON(json[key]);\n }\n }\n return map;\n}\nfunction displayValuesMapToJSON(values: DisplayValuesMap): DisplayValuesMapJSON {\n const map: DisplayValuesMapJSON = {};\n for (const key in values) {\n /* istanbul ignore else */\n if (values.hasOwnProperty(key)) {\n map[key] = DisplayValue.toJSON(values[key]);\n }\n }\n return map;\n}\n"]}
1
+ {"version":3,"file":"Value.js","sourceRoot":"","sources":["../../../../src/presentation-common/content/Value.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Content\n */\n\nimport { InstanceKey, InstanceKeyJSON } from \"../EC\";\nimport { ValuesDictionary } from \"../Utils\";\n\n/**\n * Raw value type\n * @public\n */\nexport type Value = string | number | boolean | undefined | ValuesMap | ValuesArray | NestedContentValue[];\n\n/** @public */\nexport namespace Value { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is the value a primitive */\n export function isPrimitive(value: Value): value is string | number | boolean | undefined {\n return isPrimitiveValue(value);\n }\n\n /** Is the value an array */\n export function isArray(value: Value): value is ValuesArray {\n return isArrayValue(value);\n }\n\n /** Is the value a map / struct */\n export function isMap(value: Value): value is ValuesMap {\n return isMapValue(value);\n }\n\n /** Is the value a nested content value */\n export function isNestedContent(value: Value): value is NestedContentValue[] {\n return isNestedContentValue(value);\n }\n\n /** Serialize [[Value]] to JSON */\n export function fromJSON(json: ValueJSON): Value {\n if (json === null)\n return undefined;\n if (isNestedContentValue(json))\n return json.map(NestedContentValue.fromJSON);\n if (isArrayValue(json))\n return valuesArrayFromJSON(json);\n if (isMapValue(json))\n return valuesMapFromJSON(json);\n return json;\n }\n\n /** Deserialize [[Value]] from JSON */\n export function toJSON(value: Value): ValueJSON {\n if (undefined === value)\n return null;\n if (isNestedContentValue(value))\n return value.map(NestedContentValue.toJSON);\n if (isArrayValue(value))\n return valuesArrayToJSON(value);\n if (isMapValue(value))\n return valuesMapToJSON(value);\n return value;\n }\n}\n\n/**\n * A map of raw values\n * @public\n */\nexport interface ValuesMap extends ValuesDictionary<Value> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * An array of raw values\n * @public\n */\nexport interface ValuesArray extends Array<Value> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Display value type.\n * @public\n */\nexport type DisplayValue = string | undefined | DisplayValuesMap | DisplayValuesArray;\n\n/** @public */\nexport namespace DisplayValue { // eslint-disable-line @typescript-eslint/no-redeclare\n /** Is the value a primitive */\n export function isPrimitive(value: DisplayValue): value is string | undefined {\n return isPrimitiveValue(value);\n }\n\n /** Is the value an array */\n export function isArray(value: DisplayValue): value is DisplayValuesArray {\n return isArrayValue(value);\n }\n\n /** Is the value a map / struct */\n export function isMap(value: DisplayValue): value is DisplayValuesMap {\n return isMapValue(value);\n }\n\n /** Serialize [[DisplayValue]] to JSON */\n export function fromJSON(json: DisplayValueJSON): DisplayValue {\n if (json === null)\n return undefined;\n if (isArrayValue(json))\n return displayValuesArrayFromJSON(json);\n if (isMapValue(json))\n return displayValuesMapFromJSON(json);\n return json;\n }\n\n /** Deserialize [[DisplayValue]] from JSON */\n export function toJSON(value: DisplayValue): DisplayValueJSON {\n if (undefined === value)\n return null;\n if (isArrayValue(value))\n return displayValuesArrayToJSON(value);\n if (isMapValue(value))\n return displayValuesMapToJSON(value);\n return value;\n }\n}\n\n/**\n * A map of display values\n * @public\n */\nexport interface DisplayValuesMap extends ValuesDictionary<DisplayValue> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * An array of display values\n * @public\n */\nexport interface DisplayValuesArray extends Array<DisplayValue> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * Data structure that describes nested content value.\n * @public\n */\nexport interface NestedContentValue {\n /** Keys of instances whose content is contained in this value */\n primaryKeys: InstanceKey[];\n /** Content values map */\n values: ValuesDictionary<Value>;\n /** Content display values map */\n displayValues: ValuesDictionary<DisplayValue>;\n /** Names of fields whose values are merged */\n mergedFieldNames: string[];\n}\n\n/** @public */\nexport namespace NestedContentValue {\n /** Serialize [[NestedContentValue]] to JSON */\n export function toJSON(json: NestedContentValue): NestedContentValueJSON {\n return {\n primaryKeys: json.primaryKeys.map(InstanceKey.toJSON),\n values: valuesMapToJSON(json.values),\n displayValues: displayValuesMapToJSON(json.displayValues),\n mergedFieldNames: json.mergedFieldNames,\n };\n }\n\n /** Deserialize [[NestedContentValue]] from JSON */\n export function fromJSON(json: NestedContentValueJSON): NestedContentValue {\n return {\n primaryKeys: json.primaryKeys.map(InstanceKey.fromJSON),\n values: valuesMapFromJSON(json.values),\n displayValues: displayValuesMapFromJSON(json.displayValues),\n mergedFieldNames: json.mergedFieldNames,\n };\n }\n}\n\n/**\n * JSON representation of [[Value]]\n * @public\n */\nexport type ValueJSON = string | number | boolean | null | ValuesMapJSON | ValuesArrayJSON | NestedContentValueJSON[];\n\n/**\n * JSON representation of [[ValuesMap]]\n * @public\n */\nexport interface ValuesMapJSON extends ValuesDictionary<ValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[ValuesArray]]\n * @public\n */\nexport interface ValuesArrayJSON extends Array<ValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[DisplayValue]]\n * @public\n */\nexport type DisplayValueJSON = string | null | DisplayValuesMapJSON | DisplayValuesArrayJSON;\n\n/**\n * JSON representation of [[DisplayValuesMap]]\n * @public\n */\nexport interface DisplayValuesMapJSON extends ValuesDictionary<DisplayValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[DisplayValuesArray]]\n * @public\n */\nexport interface DisplayValuesArrayJSON extends Array<DisplayValueJSON> { } // eslint-disable-line @typescript-eslint/no-empty-interface\n\n/**\n * JSON representation of [[NestedContentValue]]\n * @public\n */\nexport interface NestedContentValueJSON {\n primaryKeys: InstanceKeyJSON[];\n values: ValuesDictionary<ValueJSON>;\n displayValues: ValuesDictionary<DisplayValueJSON>;\n mergedFieldNames: string[];\n}\n\n/**\n * A group of raw values and their common display value.\n * @public\n */\nexport interface DisplayValueGroup {\n /** Common display value for all grouped raw values */\n displayValue: DisplayValue;\n /** A list of grouped raw values */\n groupedRawValues: Value[];\n}\n\n/**\n * JSON representation of [[DisplayValueGroup]].\n * @public\n */\nexport interface DisplayValueGroupJSON {\n displayValue: DisplayValueJSON;\n groupedRawValues: ValueJSON[];\n}\n\n/** @public */\nexport namespace DisplayValueGroup {\n /** Serialize [[DisplayValueGroup]] to JSON */\n export function toJSON(group: DisplayValueGroup): DisplayValueGroupJSON {\n return {\n displayValue: DisplayValue.toJSON(group.displayValue),\n groupedRawValues: group.groupedRawValues.map(Value.toJSON),\n };\n }\n\n /** Deserialize [[DisplayValueGroup]] from JSON */\n export function fromJSON(json: DisplayValueGroupJSON): DisplayValueGroup {\n return {\n displayValue: DisplayValue.fromJSON(json.displayValue),\n groupedRawValues: json.groupedRawValues.map(Value.fromJSON),\n };\n }\n}\n\nfunction isNestedContentValue(v: Value | ValueJSON): v is NestedContentValue[] | NestedContentValueJSON[] {\n return (v !== undefined) && Array.isArray(v)\n && ((v.length === 0)\n || (v[0] as NestedContentValue).primaryKeys !== undefined\n && (v[0] as NestedContentValue).values !== undefined\n && (v[0] as NestedContentValue).displayValues !== undefined\n && (v[0] as NestedContentValue).mergedFieldNames !== undefined);\n}\nfunction isArrayValue(v: Value | ValueJSON | DisplayValue | DisplayValueJSON): v is ValuesArray | ValuesArrayJSON | DisplayValuesArray | DisplayValuesArrayJSON {\n // note: we don't guarantee by 100% that v is ValuesArray | DisplayValuesArray, but merely make compiler happy.\n // we have other means to determine the type of value.\n return (v !== undefined) && Array.isArray(v);\n}\nfunction isMapValue(v: Value | ValueJSON | DisplayValue | DisplayValueJSON): v is ValuesMap | ValuesMapJSON | DisplayValuesMap | DisplayValuesMapJSON {\n return (v !== undefined) && (typeof v === \"object\") && !Array.isArray(v);\n}\nfunction isPrimitiveValue(v: Value | DisplayValue): v is string | number | boolean | undefined {\n return !isArrayValue(v) && !isMapValue(v);\n}\n\nfunction valuesArrayFromJSON(json: ValuesArrayJSON): ValuesArray {\n return json.map(Value.fromJSON);\n}\nfunction valuesArrayToJSON(values: ValuesArray): ValuesArrayJSON {\n return values.map(Value.toJSON);\n}\nfunction valuesMapFromJSON(json: ValuesMapJSON): ValuesMap {\n const map: ValuesMap = {};\n for (const key in json) {\n /* istanbul ignore else */\n if (json.hasOwnProperty(key)) {\n map[key] = Value.fromJSON(json[key]);\n }\n }\n return map;\n}\nfunction valuesMapToJSON(values: ValuesMap): ValuesMapJSON {\n const map: ValuesMapJSON = {};\n for (const key in values) {\n /* istanbul ignore else */\n if (values.hasOwnProperty(key)) {\n map[key] = Value.toJSON(values[key]);\n }\n }\n return map;\n}\n\nfunction displayValuesArrayFromJSON(json: DisplayValuesArrayJSON): DisplayValuesArray {\n return json.map(DisplayValue.fromJSON);\n}\nfunction displayValuesArrayToJSON(values: DisplayValuesArray): DisplayValuesArrayJSON {\n return values.map(DisplayValue.toJSON);\n}\nfunction displayValuesMapFromJSON(json: DisplayValuesMapJSON): DisplayValuesMap {\n const map: DisplayValuesMap = {};\n for (const key in json) {\n /* istanbul ignore else */\n if (json.hasOwnProperty(key)) {\n map[key] = DisplayValue.fromJSON(json[key]);\n }\n }\n return map;\n}\nfunction displayValuesMapToJSON(values: DisplayValuesMap): DisplayValuesMapJSON {\n const map: DisplayValuesMapJSON = {};\n for (const key in values) {\n /* istanbul ignore else */\n if (values.hasOwnProperty(key)) {\n map[key] = DisplayValue.toJSON(values[key]);\n }\n }\n return map;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/presentation-common",
3
- "version": "3.4.0-dev.48",
3
+ "version": "3.4.0-dev.55",
4
4
  "description": "Common pieces for iModel.js presentation packages",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -21,16 +21,16 @@
21
21
  "module": "lib/esm/presentation-common.js",
22
22
  "typings": "lib/cjs/presentation-common",
23
23
  "peerDependencies": {
24
- "@itwin/core-bentley": "^3.4.0-dev.48",
25
- "@itwin/core-common": "^3.4.0-dev.48",
26
- "@itwin/core-quantity": "^3.4.0-dev.48"
24
+ "@itwin/core-bentley": "^3.4.0-dev.55",
25
+ "@itwin/core-common": "^3.4.0-dev.55",
26
+ "@itwin/core-quantity": "^3.4.0-dev.55"
27
27
  },
28
28
  "devDependencies": {
29
- "@itwin/build-tools": "3.4.0-dev.48",
30
- "@itwin/core-bentley": "3.4.0-dev.48",
31
- "@itwin/core-common": "3.4.0-dev.48",
32
- "@itwin/core-quantity": "3.4.0-dev.48",
33
- "@itwin/eslint-plugin": "3.4.0-dev.48",
29
+ "@itwin/build-tools": "3.4.0-dev.55",
30
+ "@itwin/core-bentley": "3.4.0-dev.55",
31
+ "@itwin/core-common": "3.4.0-dev.55",
32
+ "@itwin/core-quantity": "3.4.0-dev.55",
33
+ "@itwin/eslint-plugin": "3.4.0-dev.55",
34
34
  "@types/chai": "4.3.1",
35
35
  "@types/chai-as-promised": "^7",
36
36
  "@types/chai-jest-snapshot": "^1.3.0",