@itwin/presentation-common 4.9.0-dev.23 → 4.9.0-dev.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/lib/cjs/presentation-common/ElementProperties.d.ts +4 -0
  2. package/lib/cjs/presentation-common/ElementProperties.d.ts.map +1 -1
  3. package/lib/cjs/presentation-common/ElementProperties.js +188 -0
  4. package/lib/cjs/presentation-common/ElementProperties.js.map +1 -1
  5. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts +6 -1
  6. package/lib/cjs/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  7. package/lib/cjs/presentation-common/PresentationManagerOptions.js.map +1 -1
  8. package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts +1 -1
  9. package/lib/cjs/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  10. package/lib/cjs/presentation-common/PresentationRpcInterface.js.map +1 -1
  11. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts +1 -3
  12. package/lib/cjs/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  13. package/lib/cjs/presentation-common/RpcRequestsHandler.js +0 -3
  14. package/lib/cjs/presentation-common/RpcRequestsHandler.js.map +1 -1
  15. package/lib/cjs/presentation-common.d.ts +1 -1
  16. package/lib/cjs/presentation-common.d.ts.map +1 -1
  17. package/lib/cjs/presentation-common.js +1 -1
  18. package/lib/cjs/presentation-common.js.map +1 -1
  19. package/lib/esm/presentation-common/ElementProperties.d.ts +4 -0
  20. package/lib/esm/presentation-common/ElementProperties.d.ts.map +1 -1
  21. package/lib/esm/presentation-common/ElementProperties.js +186 -1
  22. package/lib/esm/presentation-common/ElementProperties.js.map +1 -1
  23. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts +6 -1
  24. package/lib/esm/presentation-common/PresentationManagerOptions.d.ts.map +1 -1
  25. package/lib/esm/presentation-common/PresentationManagerOptions.js.map +1 -1
  26. package/lib/esm/presentation-common/PresentationRpcInterface.d.ts +1 -1
  27. package/lib/esm/presentation-common/PresentationRpcInterface.d.ts.map +1 -1
  28. package/lib/esm/presentation-common/PresentationRpcInterface.js.map +1 -1
  29. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts +1 -3
  30. package/lib/esm/presentation-common/RpcRequestsHandler.d.ts.map +1 -1
  31. package/lib/esm/presentation-common/RpcRequestsHandler.js +0 -3
  32. package/lib/esm/presentation-common/RpcRequestsHandler.js.map +1 -1
  33. package/lib/esm/presentation-common.d.ts +1 -1
  34. package/lib/esm/presentation-common.d.ts.map +1 -1
  35. package/lib/esm/presentation-common.js +1 -1
  36. package/lib/esm/presentation-common.js.map +1 -1
  37. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"RpcRequestsHandler.js","sourceRoot":"","sources":["../../../src/presentation-common/RpcRequestsHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RPC\r\n */\r\n\r\nimport { BeDuration, BeTimePoint, Guid, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps, RpcManager } from \"@itwin/core-common\";\r\nimport { PresentationCommonLoggerCategory } from \"./CommonLoggerCategory\";\r\nimport { DescriptorJSON, DescriptorOverrides } from \"./content/Descriptor\";\r\nimport { ItemJSON } from \"./content/Item\";\r\nimport { DisplayValueGroupJSON } from \"./content/Value\";\r\nimport { ClientDiagnostics, ClientDiagnosticsAttribute, ClientDiagnosticsHandler } from \"./Diagnostics\";\r\nimport { InstanceKey } from \"./EC\";\r\nimport { ElementProperties } from \"./ElementProperties\";\r\nimport { PresentationError, PresentationStatus } from \"./Error\";\r\nimport { NodeKey } from \"./hierarchy/Key\";\r\nimport { NodeJSON } from \"./hierarchy/Node\";\r\nimport { NodePathElementJSON } from \"./hierarchy/NodePathElement\";\r\nimport { KeySetJSON } from \"./KeySet\";\r\nimport { LabelDefinition } from \"./LabelDefinition\";\r\nimport {\r\n ComputeSelectionRequestOptions,\r\n ContentDescriptorRequestOptions,\r\n ContentInstanceKeysRequestOptions,\r\n ContentRequestOptions,\r\n ContentSourcesRequestOptions,\r\n DisplayLabelRequestOptions,\r\n DisplayLabelsRequestOptions,\r\n DistinctValuesRequestOptions,\r\n FilterByInstancePathsHierarchyRequestOptions,\r\n FilterByTextHierarchyRequestOptions,\r\n HierarchyLevelDescriptorRequestOptions,\r\n HierarchyRequestOptions,\r\n Paged,\r\n RequestOptions,\r\n RequestOptionsWithRuleset,\r\n SelectionScopeRequestOptions,\r\n SingleElementPropertiesRequestOptions,\r\n} from \"./PresentationManagerOptions\";\r\nimport { ContentSourcesRpcResult, PresentationRpcInterface, PresentationRpcRequestOptions, PresentationRpcResponse } from \"./PresentationRpcInterface\";\r\nimport { Ruleset } from \"./rules/Ruleset\";\r\nimport { RulesetVariableJSON } from \"./RulesetVariables\";\r\nimport { SelectionScope } from \"./selection/SelectionScope\";\r\nimport { PagedResponse } from \"./Utils\";\r\n\r\n/**\r\n * Default timeout for how long we're going to wait for RPC request to be fulfilled before throwing\r\n * a timeout error.\r\n */\r\nconst DEFAULT_REQUEST_TIMEOUT = 10 * 60 * 1000; // 10 minutes\r\n\r\n/**\r\n * Configuration parameters for [[RpcRequestsHandler]].\r\n *\r\n * @internal\r\n */\r\nexport interface RpcRequestsHandlerProps {\r\n /**\r\n * Optional ID used to identify client that requests data. If not specified,\r\n * the handler creates a unique GUID as a client id.\r\n * @internal\r\n */\r\n clientId?: string;\r\n\r\n /** @internal */\r\n timeout?: number;\r\n}\r\n\r\n/**\r\n * RPC requests handler that wraps [[PresentationRpcInterface]] and\r\n * adds handling for cases when backend needs to be synced with client\r\n * state.\r\n *\r\n * @internal\r\n */\r\nexport class RpcRequestsHandler {\r\n /** Timeout for how long the handler going to wait for RPC request to be fulfilled before throwing a timeout error. */\r\n public readonly timeout: number;\r\n\r\n /** ID that identifies this handler as a client */\r\n public readonly clientId: string;\r\n\r\n public constructor(props?: RpcRequestsHandlerProps) {\r\n this.clientId = props?.clientId ?? Guid.createValue();\r\n this.timeout = props?.timeout ?? DEFAULT_REQUEST_TIMEOUT;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private get rpcClient(): PresentationRpcInterface {\r\n return RpcManager.getClientForInterface(PresentationRpcInterface);\r\n }\r\n\r\n private async requestWithTimeout<TResult>(func: () => PresentationRpcResponse<TResult>, diagnosticsHandler?: ClientDiagnosticsHandler): Promise<TResult> {\r\n const start = BeTimePoint.now();\r\n const timeout = BeDuration.fromMilliseconds(this.timeout);\r\n let diagnostics: ClientDiagnostics | undefined;\r\n while (start.plus(timeout).isInFuture) {\r\n try {\r\n const response = await func();\r\n diagnostics = response.diagnostics;\r\n switch (response.statusCode) {\r\n case PresentationStatus.Success:\r\n return response.result!;\r\n case PresentationStatus.BackendTimeout:\r\n break;\r\n default:\r\n throw new PresentationError(response.statusCode, response.errorMessage);\r\n }\r\n } finally {\r\n diagnosticsHandler && diagnostics && diagnosticsHandler(diagnostics);\r\n }\r\n }\r\n throw new PresentationError(PresentationStatus.BackendTimeout);\r\n }\r\n\r\n /**\r\n * Send the request to backend.\r\n *\r\n * If the backend responds with [[PresentationStatus.BackendTimeout]], the request is repeated until we hit `timeout` or get\r\n * a response. If the response is other than [[PresentationStatus.BackendTimeout]] or [[PresentationStatus.Success]], a [[PresentationError]]\r\n * is thrown with the details from the response.\r\n */\r\n public async request<TResult, TOptions extends RequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute, TArg = any>(\r\n func: (token: IModelRpcProps, options: PresentationRpcRequestOptions<TOptions>, ...args: TArg[]) => PresentationRpcResponse<TResult>,\r\n options: TOptions,\r\n ...additionalOptions: TArg[]\r\n ): Promise<TResult> {\r\n const { imodel, diagnostics, ...optionsNoIModel } = options;\r\n const { handler: diagnosticsHandler, ...diagnosticsOptions } = diagnostics ?? {};\r\n if (isOptionsWithRuleset(optionsNoIModel)) {\r\n optionsNoIModel.rulesetOrId = cleanupRuleset(optionsNoIModel.rulesetOrId);\r\n }\r\n const rpcOptions: PresentationRpcRequestOptions<TOptions> = {\r\n ...optionsNoIModel,\r\n clientId: this.clientId,\r\n };\r\n if (diagnostics) {\r\n rpcOptions.diagnostics = diagnosticsOptions;\r\n }\r\n const doRequest = async () => func(imodel, rpcOptions, ...additionalOptions);\r\n return this.requestWithTimeout(doRequest, diagnosticsHandler);\r\n }\r\n\r\n public async getNodesCount(options: HierarchyRequestOptions<IModelRpcProps, NodeKey, RulesetVariableJSON> & ClientDiagnosticsAttribute): Promise<number> {\r\n return this.request<number, typeof options>(this.rpcClient.getNodesCount.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getPagedNodes(\r\n options: Paged<HierarchyRequestOptions<IModelRpcProps, NodeKey, RulesetVariableJSON>> & ClientDiagnosticsAttribute,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): Promise<PagedResponse<NodeJSON>> {\r\n // eslint-disable-next-line deprecation/deprecation\r\n return this.request<PagedResponse<NodeJSON>, typeof options>(this.rpcClient.getPagedNodes.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getNodesDescriptor(\r\n options: HierarchyLevelDescriptorRequestOptions<IModelRpcProps, NodeKey, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n ): Promise<DescriptorJSON | undefined> {\r\n const response = await this.request<string | DescriptorJSON | undefined, typeof options>(this.rpcClient.getNodesDescriptor.bind(this.rpcClient), options);\r\n if (typeof response === \"string\") {\r\n return JSON.parse(response);\r\n }\r\n return response;\r\n }\r\n\r\n public async getNodePaths(\r\n options: FilterByInstancePathsHierarchyRequestOptions<IModelRpcProps, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): Promise<NodePathElementJSON[]> {\r\n // eslint-disable-next-line deprecation/deprecation\r\n return this.request<NodePathElementJSON[], typeof options>(this.rpcClient.getNodePaths.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getFilteredNodePaths(\r\n options: FilterByTextHierarchyRequestOptions<IModelRpcProps, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): Promise<NodePathElementJSON[]> {\r\n // eslint-disable-next-line deprecation/deprecation\r\n return this.request<NodePathElementJSON[], typeof options>(this.rpcClient.getFilteredNodePaths.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getContentSources(options: ContentSourcesRequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute): Promise<ContentSourcesRpcResult> {\r\n return this.request<ContentSourcesRpcResult, typeof options>(this.rpcClient.getContentSources.bind(this.rpcClient), options);\r\n }\r\n public async getContentDescriptor(\r\n options: ContentDescriptorRequestOptions<IModelRpcProps, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n ): Promise<DescriptorJSON | undefined> {\r\n return this.request<DescriptorJSON | undefined, typeof options>(this.rpcClient.getContentDescriptor.bind(this.rpcClient), options);\r\n }\r\n public async getContentSetSize(\r\n options: ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n ): Promise<number> {\r\n return this.request<number, typeof options>(this.rpcClient.getContentSetSize.bind(this.rpcClient), options);\r\n }\r\n public async getPagedContent(\r\n options: Paged<ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute>,\r\n ) {\r\n return this.request<{ descriptor: DescriptorJSON; contentSet: PagedResponse<ItemJSON> } | undefined, typeof options>(\r\n this.rpcClient.getPagedContent.bind(this.rpcClient),\r\n options,\r\n );\r\n }\r\n public async getPagedContentSet(\r\n options: Paged<ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute>,\r\n ) {\r\n return this.request<PagedResponse<ItemJSON>, typeof options>(this.rpcClient.getPagedContentSet.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getPagedDistinctValues(\r\n options: DistinctValuesRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): Promise<PagedResponse<DisplayValueGroupJSON>> {\r\n // eslint-disable-next-line deprecation/deprecation\r\n return this.request<PagedResponse<DisplayValueGroupJSON>, typeof options>(this.rpcClient.getPagedDistinctValues.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getElementProperties(\r\n options: SingleElementPropertiesRequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute,\r\n ): Promise<ElementProperties | undefined> {\r\n return this.request<ElementProperties | undefined, typeof options>(this.rpcClient.getElementProperties.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getContentInstanceKeys(\r\n options: ContentInstanceKeysRequestOptions<IModelRpcProps, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n ): Promise<{ total: number; items: KeySetJSON }> {\r\n return this.request<{ total: number; items: KeySetJSON }, typeof options>(this.rpcClient.getContentInstanceKeys.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getDisplayLabelDefinition(\r\n options: DisplayLabelRequestOptions<IModelRpcProps, InstanceKey> & ClientDiagnosticsAttribute,\r\n ): Promise<LabelDefinition> {\r\n return this.request<LabelDefinition, typeof options>(this.rpcClient.getDisplayLabelDefinition.bind(this.rpcClient), options);\r\n }\r\n public async getPagedDisplayLabelDefinitions(\r\n options: DisplayLabelsRequestOptions<IModelRpcProps, InstanceKey> & ClientDiagnosticsAttribute,\r\n ): Promise<PagedResponse<LabelDefinition>> {\r\n return this.request<PagedResponse<LabelDefinition>, typeof options>(this.rpcClient.getPagedDisplayLabelDefinitions.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getSelectionScopes(options: SelectionScopeRequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute): Promise<SelectionScope[]> {\r\n return this.request<SelectionScope[], typeof options>(this.rpcClient.getSelectionScopes.bind(this.rpcClient), options);\r\n }\r\n public async computeSelection(options: ComputeSelectionRequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute): Promise<KeySetJSON> {\r\n return this.request<KeySetJSON, typeof options>(\r\n // eslint-disable-next-line deprecation/deprecation\r\n this.rpcClient.computeSelection.bind(this.rpcClient),\r\n options,\r\n );\r\n }\r\n}\r\n\r\nfunction isOptionsWithRuleset(options: Object): options is { rulesetOrId: Ruleset } {\r\n return typeof (options as RequestOptionsWithRuleset<any, any>).rulesetOrId === \"object\";\r\n}\r\n\r\ntype RulesetWithRequiredProperties = {\r\n [key in keyof Ruleset]-?: true;\r\n};\r\n\r\nconst RULESET_SUPPORTED_PROPERTIES_OBJ: RulesetWithRequiredProperties = {\r\n id: true,\r\n rules: true,\r\n version: true,\r\n requiredSchemas: true,\r\n supplementationInfo: true,\r\n vars: true,\r\n};\r\n\r\nfunction cleanupRuleset(ruleset: Ruleset): Ruleset {\r\n const cleanedUpRuleset: Ruleset = { ...ruleset };\r\n\r\n for (const propertyKey of Object.keys(cleanedUpRuleset)) {\r\n if (!RULESET_SUPPORTED_PROPERTIES_OBJ.hasOwnProperty(propertyKey)) {\r\n if (propertyKey === \"$schema\") {\r\n delete (cleanedUpRuleset as any)[propertyKey];\r\n } else {\r\n Logger.logWarning(\r\n PresentationCommonLoggerCategory.Package,\r\n `Provided ruleset contains unrecognized attribute '${propertyKey}'. It either doesn't exist or may be no longer supported.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n return cleanedUpRuleset;\r\n}\r\n"]}
1
+ {"version":3,"file":"RpcRequestsHandler.js","sourceRoot":"","sources":["../../../src/presentation-common/RpcRequestsHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RPC\r\n */\r\n\r\nimport { BeDuration, BeTimePoint, Guid, Logger } from \"@itwin/core-bentley\";\r\nimport { IModelRpcProps, RpcManager } from \"@itwin/core-common\";\r\nimport { PresentationCommonLoggerCategory } from \"./CommonLoggerCategory\";\r\nimport { DescriptorJSON, DescriptorOverrides } from \"./content/Descriptor\";\r\nimport { ItemJSON } from \"./content/Item\";\r\nimport { DisplayValueGroupJSON } from \"./content/Value\";\r\nimport { ClientDiagnostics, ClientDiagnosticsAttribute, ClientDiagnosticsHandler } from \"./Diagnostics\";\r\nimport { InstanceKey } from \"./EC\";\r\nimport { PresentationError, PresentationStatus } from \"./Error\";\r\nimport { NodeKey } from \"./hierarchy/Key\";\r\nimport { NodeJSON } from \"./hierarchy/Node\";\r\nimport { NodePathElementJSON } from \"./hierarchy/NodePathElement\";\r\nimport { KeySetJSON } from \"./KeySet\";\r\nimport { LabelDefinition } from \"./LabelDefinition\";\r\nimport {\r\n ComputeSelectionRequestOptions,\r\n ContentDescriptorRequestOptions,\r\n ContentInstanceKeysRequestOptions,\r\n ContentRequestOptions,\r\n ContentSourcesRequestOptions,\r\n DisplayLabelRequestOptions,\r\n DisplayLabelsRequestOptions,\r\n DistinctValuesRequestOptions,\r\n FilterByInstancePathsHierarchyRequestOptions,\r\n FilterByTextHierarchyRequestOptions,\r\n HierarchyLevelDescriptorRequestOptions,\r\n HierarchyRequestOptions,\r\n Paged,\r\n RequestOptions,\r\n RequestOptionsWithRuleset,\r\n SelectionScopeRequestOptions,\r\n} from \"./PresentationManagerOptions\";\r\nimport { ContentSourcesRpcResult, PresentationRpcInterface, PresentationRpcRequestOptions, PresentationRpcResponse } from \"./PresentationRpcInterface\";\r\nimport { Ruleset } from \"./rules/Ruleset\";\r\nimport { RulesetVariableJSON } from \"./RulesetVariables\";\r\nimport { SelectionScope } from \"./selection/SelectionScope\";\r\nimport { PagedResponse } from \"./Utils\";\r\n\r\n/**\r\n * Default timeout for how long we're going to wait for RPC request to be fulfilled before throwing\r\n * a timeout error.\r\n */\r\nconst DEFAULT_REQUEST_TIMEOUT = 10 * 60 * 1000; // 10 minutes\r\n\r\n/**\r\n * Configuration parameters for [[RpcRequestsHandler]].\r\n *\r\n * @internal\r\n */\r\nexport interface RpcRequestsHandlerProps {\r\n /**\r\n * Optional ID used to identify client that requests data. If not specified,\r\n * the handler creates a unique GUID as a client id.\r\n * @internal\r\n */\r\n clientId?: string;\r\n\r\n /** @internal */\r\n timeout?: number;\r\n}\r\n\r\n/**\r\n * RPC requests handler that wraps [[PresentationRpcInterface]] and\r\n * adds handling for cases when backend needs to be synced with client\r\n * state.\r\n *\r\n * @internal\r\n */\r\nexport class RpcRequestsHandler {\r\n /** Timeout for how long the handler going to wait for RPC request to be fulfilled before throwing a timeout error. */\r\n public readonly timeout: number;\r\n\r\n /** ID that identifies this handler as a client */\r\n public readonly clientId: string;\r\n\r\n public constructor(props?: RpcRequestsHandlerProps) {\r\n this.clientId = props?.clientId ?? Guid.createValue();\r\n this.timeout = props?.timeout ?? DEFAULT_REQUEST_TIMEOUT;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private get rpcClient(): PresentationRpcInterface {\r\n return RpcManager.getClientForInterface(PresentationRpcInterface);\r\n }\r\n\r\n private async requestWithTimeout<TResult>(func: () => PresentationRpcResponse<TResult>, diagnosticsHandler?: ClientDiagnosticsHandler): Promise<TResult> {\r\n const start = BeTimePoint.now();\r\n const timeout = BeDuration.fromMilliseconds(this.timeout);\r\n let diagnostics: ClientDiagnostics | undefined;\r\n while (start.plus(timeout).isInFuture) {\r\n try {\r\n const response = await func();\r\n diagnostics = response.diagnostics;\r\n switch (response.statusCode) {\r\n case PresentationStatus.Success:\r\n return response.result!;\r\n case PresentationStatus.BackendTimeout:\r\n break;\r\n default:\r\n throw new PresentationError(response.statusCode, response.errorMessage);\r\n }\r\n } finally {\r\n diagnosticsHandler && diagnostics && diagnosticsHandler(diagnostics);\r\n }\r\n }\r\n throw new PresentationError(PresentationStatus.BackendTimeout);\r\n }\r\n\r\n /**\r\n * Send the request to backend.\r\n *\r\n * If the backend responds with [[PresentationStatus.BackendTimeout]], the request is repeated until we hit `timeout` or get\r\n * a response. If the response is other than [[PresentationStatus.BackendTimeout]] or [[PresentationStatus.Success]], a [[PresentationError]]\r\n * is thrown with the details from the response.\r\n */\r\n public async request<TResult, TOptions extends RequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute, TArg = any>(\r\n func: (token: IModelRpcProps, options: PresentationRpcRequestOptions<TOptions>, ...args: TArg[]) => PresentationRpcResponse<TResult>,\r\n options: TOptions,\r\n ...additionalOptions: TArg[]\r\n ): Promise<TResult> {\r\n const { imodel, diagnostics, ...optionsNoIModel } = options;\r\n const { handler: diagnosticsHandler, ...diagnosticsOptions } = diagnostics ?? {};\r\n if (isOptionsWithRuleset(optionsNoIModel)) {\r\n optionsNoIModel.rulesetOrId = cleanupRuleset(optionsNoIModel.rulesetOrId);\r\n }\r\n const rpcOptions: PresentationRpcRequestOptions<TOptions> = {\r\n ...optionsNoIModel,\r\n clientId: this.clientId,\r\n };\r\n if (diagnostics) {\r\n rpcOptions.diagnostics = diagnosticsOptions;\r\n }\r\n const doRequest = async () => func(imodel, rpcOptions, ...additionalOptions);\r\n return this.requestWithTimeout(doRequest, diagnosticsHandler);\r\n }\r\n\r\n public async getNodesCount(options: HierarchyRequestOptions<IModelRpcProps, NodeKey, RulesetVariableJSON> & ClientDiagnosticsAttribute): Promise<number> {\r\n return this.request<number, typeof options>(this.rpcClient.getNodesCount.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getPagedNodes(\r\n options: Paged<HierarchyRequestOptions<IModelRpcProps, NodeKey, RulesetVariableJSON>> & ClientDiagnosticsAttribute,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): Promise<PagedResponse<NodeJSON>> {\r\n // eslint-disable-next-line deprecation/deprecation\r\n return this.request<PagedResponse<NodeJSON>, typeof options>(this.rpcClient.getPagedNodes.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getNodesDescriptor(\r\n options: HierarchyLevelDescriptorRequestOptions<IModelRpcProps, NodeKey, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n ): Promise<DescriptorJSON | undefined> {\r\n const response = await this.request<string | DescriptorJSON | undefined, typeof options>(this.rpcClient.getNodesDescriptor.bind(this.rpcClient), options);\r\n if (typeof response === \"string\") {\r\n return JSON.parse(response);\r\n }\r\n return response;\r\n }\r\n\r\n public async getNodePaths(\r\n options: FilterByInstancePathsHierarchyRequestOptions<IModelRpcProps, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): Promise<NodePathElementJSON[]> {\r\n // eslint-disable-next-line deprecation/deprecation\r\n return this.request<NodePathElementJSON[], typeof options>(this.rpcClient.getNodePaths.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getFilteredNodePaths(\r\n options: FilterByTextHierarchyRequestOptions<IModelRpcProps, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): Promise<NodePathElementJSON[]> {\r\n // eslint-disable-next-line deprecation/deprecation\r\n return this.request<NodePathElementJSON[], typeof options>(this.rpcClient.getFilteredNodePaths.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getContentSources(options: ContentSourcesRequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute): Promise<ContentSourcesRpcResult> {\r\n return this.request<ContentSourcesRpcResult, typeof options>(this.rpcClient.getContentSources.bind(this.rpcClient), options);\r\n }\r\n public async getContentDescriptor(\r\n options: ContentDescriptorRequestOptions<IModelRpcProps, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n ): Promise<DescriptorJSON | undefined> {\r\n return this.request<DescriptorJSON | undefined, typeof options>(this.rpcClient.getContentDescriptor.bind(this.rpcClient), options);\r\n }\r\n public async getContentSetSize(\r\n options: ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n ): Promise<number> {\r\n return this.request<number, typeof options>(this.rpcClient.getContentSetSize.bind(this.rpcClient), options);\r\n }\r\n public async getPagedContent(\r\n options: Paged<ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute>,\r\n ) {\r\n return this.request<{ descriptor: DescriptorJSON; contentSet: PagedResponse<ItemJSON> } | undefined, typeof options>(\r\n this.rpcClient.getPagedContent.bind(this.rpcClient),\r\n options,\r\n );\r\n }\r\n public async getPagedContentSet(\r\n options: Paged<ContentRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute>,\r\n ) {\r\n return this.request<PagedResponse<ItemJSON>, typeof options>(this.rpcClient.getPagedContentSet.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getPagedDistinctValues(\r\n options: DistinctValuesRequestOptions<IModelRpcProps, DescriptorOverrides, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n // eslint-disable-next-line deprecation/deprecation\r\n ): Promise<PagedResponse<DisplayValueGroupJSON>> {\r\n // eslint-disable-next-line deprecation/deprecation\r\n return this.request<PagedResponse<DisplayValueGroupJSON>, typeof options>(this.rpcClient.getPagedDistinctValues.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getContentInstanceKeys(\r\n options: ContentInstanceKeysRequestOptions<IModelRpcProps, KeySetJSON, RulesetVariableJSON> & ClientDiagnosticsAttribute,\r\n ): Promise<{ total: number; items: KeySetJSON }> {\r\n return this.request<{ total: number; items: KeySetJSON }, typeof options>(this.rpcClient.getContentInstanceKeys.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getDisplayLabelDefinition(\r\n options: DisplayLabelRequestOptions<IModelRpcProps, InstanceKey> & ClientDiagnosticsAttribute,\r\n ): Promise<LabelDefinition> {\r\n return this.request<LabelDefinition, typeof options>(this.rpcClient.getDisplayLabelDefinition.bind(this.rpcClient), options);\r\n }\r\n public async getPagedDisplayLabelDefinitions(\r\n options: DisplayLabelsRequestOptions<IModelRpcProps, InstanceKey> & ClientDiagnosticsAttribute,\r\n ): Promise<PagedResponse<LabelDefinition>> {\r\n return this.request<PagedResponse<LabelDefinition>, typeof options>(this.rpcClient.getPagedDisplayLabelDefinitions.bind(this.rpcClient), options);\r\n }\r\n\r\n public async getSelectionScopes(options: SelectionScopeRequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute): Promise<SelectionScope[]> {\r\n return this.request<SelectionScope[], typeof options>(this.rpcClient.getSelectionScopes.bind(this.rpcClient), options);\r\n }\r\n public async computeSelection(options: ComputeSelectionRequestOptions<IModelRpcProps> & ClientDiagnosticsAttribute): Promise<KeySetJSON> {\r\n return this.request<KeySetJSON, typeof options>(\r\n // eslint-disable-next-line deprecation/deprecation\r\n this.rpcClient.computeSelection.bind(this.rpcClient),\r\n options,\r\n );\r\n }\r\n}\r\n\r\nfunction isOptionsWithRuleset(options: Object): options is { rulesetOrId: Ruleset } {\r\n return typeof (options as RequestOptionsWithRuleset<any, any>).rulesetOrId === \"object\";\r\n}\r\n\r\ntype RulesetWithRequiredProperties = {\r\n [key in keyof Ruleset]-?: true;\r\n};\r\n\r\nconst RULESET_SUPPORTED_PROPERTIES_OBJ: RulesetWithRequiredProperties = {\r\n id: true,\r\n rules: true,\r\n version: true,\r\n requiredSchemas: true,\r\n supplementationInfo: true,\r\n vars: true,\r\n};\r\n\r\nfunction cleanupRuleset(ruleset: Ruleset): Ruleset {\r\n const cleanedUpRuleset: Ruleset = { ...ruleset };\r\n\r\n for (const propertyKey of Object.keys(cleanedUpRuleset)) {\r\n if (!RULESET_SUPPORTED_PROPERTIES_OBJ.hasOwnProperty(propertyKey)) {\r\n if (propertyKey === \"$schema\") {\r\n delete (cleanedUpRuleset as any)[propertyKey];\r\n } else {\r\n Logger.logWarning(\r\n PresentationCommonLoggerCategory.Package,\r\n `Provided ruleset contains unrecognized attribute '${propertyKey}'. It either doesn't exist or may be no longer supported.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n return cleanedUpRuleset;\r\n}\r\n"]}
@@ -29,7 +29,6 @@ export * from "./presentation-common/KoqPropertyValueFormatter";
29
29
  */
30
30
  export * from "./presentation-common/PresentationRpcInterface";
31
31
  export * from "./presentation-common/RpcRequestsHandler";
32
- export * from "./presentation-common/ElementProperties";
33
32
  /**
34
33
  * @module UnifiedSelection
35
34
  *
@@ -56,6 +55,7 @@ export * from "./presentation-common/content/TypeDescription";
56
55
  export * from "./presentation-common/content/Value";
57
56
  export * from "./presentation-common/content/ContentTraverser";
58
57
  export * from "./presentation-common/content/PropertyValueFormatter";
58
+ export * from "./presentation-common/ElementProperties";
59
59
  /**
60
60
  * @module Hierarchies
61
61
  *
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-common.d.ts","sourceRoot":"","sources":["../../src/presentation-common.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAEhE;;;;;;GAMG;AACH,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AACzD,cAAc,yCAAyC,CAAC;AAExD;;;;;GAKG;AACH,cAAc,gDAAgD,CAAC;AAE/D;;;;;GAKG;AACH,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qCAAqC,CAAC;AACpD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,sDAAsD,CAAC;AAErE;;;;;GAKG;AACH,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iDAAiD,CAAC;AAEhE;;;;;GAKG;AACH,cAAc,qDAAqD,CAAC;AACpE,cAAc,8DAA8D,CAAC;AAC7E,cAAc,+DAA+D,CAAC;AAC9E,cAAc,6EAA6E,CAAC;AAC5F,cAAc,mFAAmF,CAAC;AAClG,cAAc,sDAAsD,CAAC;AACrE,cAAc,yDAAyD,CAAC;AACxE,cAAc,yEAAyE,CAAC;AACxF,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,wDAAwD,CAAC;AACvE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,4DAA4D,CAAC;AAC3E,cAAc,wDAAwD,CAAC;AACvE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,iEAAiE,CAAC;AAChF,cAAc,yDAAyD,CAAC;AACxE,cAAc,uDAAuD,CAAC;AACtE,cAAc,yDAAyD,CAAC;AACxE,cAAc,oFAAoF,CAAC;AACnG,cAAc,0EAA0E,CAAC;AACzF,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,wEAAwE,CAAC;AACvF,cAAc,qEAAqE,CAAC;AACpF,cAAc,iFAAiF,CAAC;AAChG,cAAc,+DAA+D,CAAC;AAC9E,cAAc,6EAA6E,CAAC;AAC5F,cAAc,4EAA4E,CAAC;AAC3F,cAAc,2EAA2E,CAAC;AAC1F,cAAc,8EAA8E,CAAC;AAC7F,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,mDAAmD,CAAC;AAClE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"presentation-common.d.ts","sourceRoot":"","sources":["../../src/presentation-common.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAEhE;;;;;;GAMG;AACH,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0CAA0C,CAAC;AAEzD;;;;;GAKG;AACH,cAAc,gDAAgD,CAAC;AAE/D;;;;;GAKG;AACH,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qCAAqC,CAAC;AACpD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,sDAAsD,CAAC;AACrE,cAAc,yCAAyC,CAAC;AAExD;;;;;GAKG;AACH,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iDAAiD,CAAC;AAEhE;;;;;GAKG;AACH,cAAc,qDAAqD,CAAC;AACpE,cAAc,8DAA8D,CAAC;AAC7E,cAAc,+DAA+D,CAAC;AAC9E,cAAc,6EAA6E,CAAC;AAC5F,cAAc,mFAAmF,CAAC;AAClG,cAAc,sDAAsD,CAAC;AACrE,cAAc,yDAAyD,CAAC;AACxE,cAAc,yEAAyE,CAAC;AACxF,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,cAAc,wDAAwD,CAAC;AACvE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,4DAA4D,CAAC;AAC3E,cAAc,wDAAwD,CAAC;AACvE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,iEAAiE,CAAC;AAChF,cAAc,yDAAyD,CAAC;AACxE,cAAc,uDAAuD,CAAC;AACtE,cAAc,yDAAyD,CAAC;AACxE,cAAc,oFAAoF,CAAC;AACnG,cAAc,0EAA0E,CAAC;AACzF,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,wEAAwE,CAAC;AACvF,cAAc,qEAAqE,CAAC;AACpF,cAAc,iFAAiF,CAAC;AAChG,cAAc,+DAA+D,CAAC;AAC9E,cAAc,6EAA6E,CAAC;AAC5F,cAAc,4EAA4E,CAAC;AAC3F,cAAc,2EAA2E,CAAC;AAC1F,cAAc,8EAA8E,CAAC;AAC7F,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,mDAAmD,CAAC;AAClE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC"}
@@ -49,7 +49,6 @@ __exportStar(require("./presentation-common/KoqPropertyValueFormatter"), exports
49
49
  */
50
50
  __exportStar(require("./presentation-common/PresentationRpcInterface"), exports);
51
51
  __exportStar(require("./presentation-common/RpcRequestsHandler"), exports);
52
- __exportStar(require("./presentation-common/ElementProperties"), exports);
53
52
  /**
54
53
  * @module UnifiedSelection
55
54
  *
@@ -76,6 +75,7 @@ __exportStar(require("./presentation-common/content/TypeDescription"), exports);
76
75
  __exportStar(require("./presentation-common/content/Value"), exports);
77
76
  __exportStar(require("./presentation-common/content/ContentTraverser"), exports);
78
77
  __exportStar(require("./presentation-common/content/PropertyValueFormatter"), exports);
78
+ __exportStar(require("./presentation-common/ElementProperties"), exports);
79
79
  /**
80
80
  * @module Hierarchies
81
81
  *
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-common.js","sourceRoot":"","sources":["../../src/presentation-common.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG;;;;;GAKG;AACH,mEAAiD;AACjD,oEAAkD;AAClD,2DAAyC;AACzC,8DAA4C;AAC5C,+DAA6C;AAC7C,wEAAsD;AACtD,mFAAiE;AACjE,0EAAwD;AACxD,yEAAuD;AACvD,wEAAsD;AACtD,+DAA6C;AAC7C,8DAA4C;AAC5C,iFAA+D;AAC/D,2EAAyD;AACzD,iFAA+D;AAC/D,kFAAgE;AAEhE;;;;;;GAMG;AACH,iFAA+D;AAC/D,2EAAyD;AACzD,0EAAwD;AAExD;;;;;GAKG;AACH,iFAA+D;AAE/D;;;;;GAKG;AACH,yEAAuD;AACvD,wEAAsD;AACtD,2EAAyD;AACzD,6EAA2D;AAC3D,uEAAqD;AACrD,uEAAqD;AACrD,qEAAmD;AACnD,yEAAuD;AACvD,yEAAuD;AACvD,gFAA8D;AAC9D,sEAAoD;AACpD,iFAA+D;AAC/D,uFAAqE;AAErE;;;;;GAKG;AACH,iFAA+D;AAC/D,sEAAoD;AACpD,uEAAqD;AACrD,kFAAgE;AAEhE;;;;;GAKG;AACH,sFAAoE;AACpE,+FAA6E;AAC7E,gGAA8E;AAC9E,8GAA4F;AAC5F,oHAAkG;AAClG,uFAAqE;AACrE,0FAAwE;AACxE,0GAAwF;AACxF,qFAAmE;AACnE,qFAAmE;AACnE,yFAAuE;AACvE,8FAA4E;AAC5E,6FAA2E;AAC3E,yFAAuE;AACvE,4FAA0E;AAC1E,kGAAgF;AAChF,0FAAwE;AACxE,wFAAsE;AACtE,0FAAwE;AACxE,qHAAmG;AACnG,2GAAyF;AACzF,kFAAgE;AAChE,2FAAyE;AACzE,4FAA0E;AAC1E,yGAAuF;AACvF,sGAAoF;AACpF,kHAAgG;AAChG,gGAA8E;AAC9E,8GAA4F;AAC5F,6GAA2F;AAC3F,4GAA0F;AAC1F,+GAA6F;AAC7F,kFAAgE;AAChE,2FAAyE;AACzE,oFAAkE;AAClE,4FAA0E;AAC1E,mEAAiD;AACjD,sEAAoD;AACpD,mFAAiE;AACjE,wEAAsD","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * @module Core\r\n *\r\n * @docs-group-description Core\r\n * Common types used all across Presentation packages.\r\n */\r\nexport * from \"./presentation-common/AsyncTasks\";\r\nexport * from \"./presentation-common/Diagnostics\";\r\nexport * from \"./presentation-common/EC\";\r\nexport * from \"./presentation-common/Error\";\r\nexport * from \"./presentation-common/KeySet\";\r\nexport * from \"./presentation-common/LabelDefinition\";\r\nexport * from \"./presentation-common/PresentationManagerOptions\";\r\nexport * from \"./presentation-common/RegisteredRuleset\";\r\nexport * from \"./presentation-common/RulesetVariables\";\r\nexport * from \"./presentation-common/RulesetsFactory\";\r\nexport * from \"./presentation-common/Update\";\r\nexport * from \"./presentation-common/Utils\";\r\nexport * from \"./presentation-common/PresentationIpcInterface\";\r\nexport * from \"./presentation-common/LocalizationHelper\";\r\nexport * from \"./presentation-common/InstanceFilterDefinition\";\r\nexport * from \"./presentation-common/KoqPropertyValueFormatter\";\r\n\r\n/**\r\n * @module RPC\r\n *\r\n * @docs-group-description RPC\r\n * Types used for RPC communication between frontend and backend. Generally should\r\n * only be used internally by presentation packages.\r\n */\r\nexport * from \"./presentation-common/PresentationRpcInterface\";\r\nexport * from \"./presentation-common/RpcRequestsHandler\";\r\nexport * from \"./presentation-common/ElementProperties\";\r\n\r\n/**\r\n * @module UnifiedSelection\r\n *\r\n * @docs-group-description UnifiedSelection\r\n * Types related to [unified selection]($docs/presentation/unified-selection/index.md).\r\n */\r\nexport * from \"./presentation-common/selection/SelectionScope\";\r\n\r\n/**\r\n * @module Content\r\n *\r\n * @docs-group-description Content\r\n * Types related to presentation [content]($docs/presentation/content/index.md).\r\n */\r\nexport * from \"./presentation-common/content/Category\";\r\nexport * from \"./presentation-common/content/Content\";\r\nexport * from \"./presentation-common/content/Descriptor\";\r\nexport * from \"./presentation-common/content/DisplayTypes\";\r\nexport * from \"./presentation-common/content/Editor\";\r\nexport * from \"./presentation-common/content/Fields\";\r\nexport * from \"./presentation-common/content/Item\";\r\nexport * from \"./presentation-common/content/Property\";\r\nexport * from \"./presentation-common/content/Renderer\";\r\nexport * from \"./presentation-common/content/TypeDescription\";\r\nexport * from \"./presentation-common/content/Value\";\r\nexport * from \"./presentation-common/content/ContentTraverser\";\r\nexport * from \"./presentation-common/content/PropertyValueFormatter\";\r\n\r\n/**\r\n * @module Hierarchies\r\n *\r\n * @docs-group-description Hierarchies\r\n * Types related to presentation [hierarchies]($docs/presentation/hierarchies/index.md).\r\n */\r\nexport * from \"./presentation-common/hierarchy/HierarchyLevel\";\r\nexport * from \"./presentation-common/hierarchy/Key\";\r\nexport * from \"./presentation-common/hierarchy/Node\";\r\nexport * from \"./presentation-common/hierarchy/NodePathElement\";\r\n\r\n/**\r\n * @module PresentationRules\r\n *\r\n * @docs-group-description PresentationRules\r\n * Types for defining the presentation ruleset.\r\n */\r\nexport * from \"./presentation-common/rules/hierarchy/ChildNodeRule\";\r\nexport * from \"./presentation-common/rules/hierarchy/ChildNodeSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/CustomNodeSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/NavigationRule\";\r\nexport * from \"./presentation-common/rules/hierarchy/NodeArtifactsRule\";\r\nexport * from \"./presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/RootNodeRule\";\r\nexport * from \"./presentation-common/rules/hierarchy/SubCondition\";\r\nexport * from \"./presentation-common/rules/customization/CheckBoxRule\";\r\nexport * from \"./presentation-common/rules/customization/CustomizationRule\";\r\nexport * from \"./presentation-common/rules/customization/ExtendedDataRule\";\r\nexport * from \"./presentation-common/rules/customization/GroupingRule\";\r\nexport * from \"./presentation-common/rules/customization/ImageIdOverride\";\r\nexport * from \"./presentation-common/rules/customization/InstanceLabelOverride\";\r\nexport * from \"./presentation-common/rules/customization/LabelOverride\";\r\nexport * from \"./presentation-common/rules/customization/SortingRule\";\r\nexport * from \"./presentation-common/rules/customization/StyleOverride\";\r\nexport * from \"./presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification\";\r\nexport * from \"./presentation-common/rules/content/ContentRelatedInstancesSpecification\";\r\nexport * from \"./presentation-common/rules/content/ContentRule\";\r\nexport * from \"./presentation-common/rules/content/ContentSpecification\";\r\nexport * from \"./presentation-common/rules/content/PropertySpecification\";\r\nexport * from \"./presentation-common/rules/content/SelectedNodeInstancesSpecification\";\r\nexport * from \"./presentation-common/rules/content/DefaultPropertyCategoryOverride\";\r\nexport * from \"./presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification\";\r\nexport * from \"./presentation-common/rules/content/modifiers/ContentModifier\";\r\nexport * from \"./presentation-common/rules/content/modifiers/PropertyCategorySpecification\";\r\nexport * from \"./presentation-common/rules/content/modifiers/PropertyEditorsSpecification\";\r\nexport * from \"./presentation-common/rules/content/modifiers/CustomRendererSpecification\";\r\nexport * from \"./presentation-common/rules/content/modifiers/RelatedPropertiesSpecification\";\r\nexport * from \"./presentation-common/rules/ClassSpecifications\";\r\nexport * from \"./presentation-common/rules/RelatedInstanceSpecification\";\r\nexport * from \"./presentation-common/rules/RelationshipDirection\";\r\nexport * from \"./presentation-common/rules/RelationshipPathSpecification\";\r\nexport * from \"./presentation-common/rules/Rule\";\r\nexport * from \"./presentation-common/rules/Ruleset\";\r\nexport * from \"./presentation-common/rules/SchemasSpecification\";\r\nexport * from \"./presentation-common/rules/Variables\";\r\n"]}
1
+ {"version":3,"file":"presentation-common.js","sourceRoot":"","sources":["../../src/presentation-common.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG;;;;;GAKG;AACH,mEAAiD;AACjD,oEAAkD;AAClD,2DAAyC;AACzC,8DAA4C;AAC5C,+DAA6C;AAC7C,wEAAsD;AACtD,mFAAiE;AACjE,0EAAwD;AACxD,yEAAuD;AACvD,wEAAsD;AACtD,+DAA6C;AAC7C,8DAA4C;AAC5C,iFAA+D;AAC/D,2EAAyD;AACzD,iFAA+D;AAC/D,kFAAgE;AAEhE;;;;;;GAMG;AACH,iFAA+D;AAC/D,2EAAyD;AAEzD;;;;;GAKG;AACH,iFAA+D;AAE/D;;;;;GAKG;AACH,yEAAuD;AACvD,wEAAsD;AACtD,2EAAyD;AACzD,6EAA2D;AAC3D,uEAAqD;AACrD,uEAAqD;AACrD,qEAAmD;AACnD,yEAAuD;AACvD,yEAAuD;AACvD,gFAA8D;AAC9D,sEAAoD;AACpD,iFAA+D;AAC/D,uFAAqE;AACrE,0EAAwD;AAExD;;;;;GAKG;AACH,iFAA+D;AAC/D,sEAAoD;AACpD,uEAAqD;AACrD,kFAAgE;AAEhE;;;;;GAKG;AACH,sFAAoE;AACpE,+FAA6E;AAC7E,gGAA8E;AAC9E,8GAA4F;AAC5F,oHAAkG;AAClG,uFAAqE;AACrE,0FAAwE;AACxE,0GAAwF;AACxF,qFAAmE;AACnE,qFAAmE;AACnE,yFAAuE;AACvE,8FAA4E;AAC5E,6FAA2E;AAC3E,yFAAuE;AACvE,4FAA0E;AAC1E,kGAAgF;AAChF,0FAAwE;AACxE,wFAAsE;AACtE,0FAAwE;AACxE,qHAAmG;AACnG,2GAAyF;AACzF,kFAAgE;AAChE,2FAAyE;AACzE,4FAA0E;AAC1E,yGAAuF;AACvF,sGAAoF;AACpF,kHAAgG;AAChG,gGAA8E;AAC9E,8GAA4F;AAC5F,6GAA2F;AAC3F,4GAA0F;AAC1F,+GAA6F;AAC7F,kFAAgE;AAChE,2FAAyE;AACzE,oFAAkE;AAClE,4FAA0E;AAC1E,mEAAiD;AACjD,sEAAoD;AACpD,mFAAiE;AACjE,wEAAsD","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * @module Core\r\n *\r\n * @docs-group-description Core\r\n * Common types used all across Presentation packages.\r\n */\r\nexport * from \"./presentation-common/AsyncTasks\";\r\nexport * from \"./presentation-common/Diagnostics\";\r\nexport * from \"./presentation-common/EC\";\r\nexport * from \"./presentation-common/Error\";\r\nexport * from \"./presentation-common/KeySet\";\r\nexport * from \"./presentation-common/LabelDefinition\";\r\nexport * from \"./presentation-common/PresentationManagerOptions\";\r\nexport * from \"./presentation-common/RegisteredRuleset\";\r\nexport * from \"./presentation-common/RulesetVariables\";\r\nexport * from \"./presentation-common/RulesetsFactory\";\r\nexport * from \"./presentation-common/Update\";\r\nexport * from \"./presentation-common/Utils\";\r\nexport * from \"./presentation-common/PresentationIpcInterface\";\r\nexport * from \"./presentation-common/LocalizationHelper\";\r\nexport * from \"./presentation-common/InstanceFilterDefinition\";\r\nexport * from \"./presentation-common/KoqPropertyValueFormatter\";\r\n\r\n/**\r\n * @module RPC\r\n *\r\n * @docs-group-description RPC\r\n * Types used for RPC communication between frontend and backend. Generally should\r\n * only be used internally by presentation packages.\r\n */\r\nexport * from \"./presentation-common/PresentationRpcInterface\";\r\nexport * from \"./presentation-common/RpcRequestsHandler\";\r\n\r\n/**\r\n * @module UnifiedSelection\r\n *\r\n * @docs-group-description UnifiedSelection\r\n * Types related to [unified selection]($docs/presentation/unified-selection/index.md).\r\n */\r\nexport * from \"./presentation-common/selection/SelectionScope\";\r\n\r\n/**\r\n * @module Content\r\n *\r\n * @docs-group-description Content\r\n * Types related to presentation [content]($docs/presentation/content/index.md).\r\n */\r\nexport * from \"./presentation-common/content/Category\";\r\nexport * from \"./presentation-common/content/Content\";\r\nexport * from \"./presentation-common/content/Descriptor\";\r\nexport * from \"./presentation-common/content/DisplayTypes\";\r\nexport * from \"./presentation-common/content/Editor\";\r\nexport * from \"./presentation-common/content/Fields\";\r\nexport * from \"./presentation-common/content/Item\";\r\nexport * from \"./presentation-common/content/Property\";\r\nexport * from \"./presentation-common/content/Renderer\";\r\nexport * from \"./presentation-common/content/TypeDescription\";\r\nexport * from \"./presentation-common/content/Value\";\r\nexport * from \"./presentation-common/content/ContentTraverser\";\r\nexport * from \"./presentation-common/content/PropertyValueFormatter\";\r\nexport * from \"./presentation-common/ElementProperties\";\r\n\r\n/**\r\n * @module Hierarchies\r\n *\r\n * @docs-group-description Hierarchies\r\n * Types related to presentation [hierarchies]($docs/presentation/hierarchies/index.md).\r\n */\r\nexport * from \"./presentation-common/hierarchy/HierarchyLevel\";\r\nexport * from \"./presentation-common/hierarchy/Key\";\r\nexport * from \"./presentation-common/hierarchy/Node\";\r\nexport * from \"./presentation-common/hierarchy/NodePathElement\";\r\n\r\n/**\r\n * @module PresentationRules\r\n *\r\n * @docs-group-description PresentationRules\r\n * Types for defining the presentation ruleset.\r\n */\r\nexport * from \"./presentation-common/rules/hierarchy/ChildNodeRule\";\r\nexport * from \"./presentation-common/rules/hierarchy/ChildNodeSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/CustomNodeSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/CustomQueryInstanceNodesSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/InstanceNodesOfSpecificClassesSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/NavigationRule\";\r\nexport * from \"./presentation-common/rules/hierarchy/NodeArtifactsRule\";\r\nexport * from \"./presentation-common/rules/hierarchy/RelatedInstanceNodesSpecification\";\r\nexport * from \"./presentation-common/rules/hierarchy/RootNodeRule\";\r\nexport * from \"./presentation-common/rules/hierarchy/SubCondition\";\r\nexport * from \"./presentation-common/rules/customization/CheckBoxRule\";\r\nexport * from \"./presentation-common/rules/customization/CustomizationRule\";\r\nexport * from \"./presentation-common/rules/customization/ExtendedDataRule\";\r\nexport * from \"./presentation-common/rules/customization/GroupingRule\";\r\nexport * from \"./presentation-common/rules/customization/ImageIdOverride\";\r\nexport * from \"./presentation-common/rules/customization/InstanceLabelOverride\";\r\nexport * from \"./presentation-common/rules/customization/LabelOverride\";\r\nexport * from \"./presentation-common/rules/customization/SortingRule\";\r\nexport * from \"./presentation-common/rules/customization/StyleOverride\";\r\nexport * from \"./presentation-common/rules/content/ContentInstancesOfSpecificClassesSpecification\";\r\nexport * from \"./presentation-common/rules/content/ContentRelatedInstancesSpecification\";\r\nexport * from \"./presentation-common/rules/content/ContentRule\";\r\nexport * from \"./presentation-common/rules/content/ContentSpecification\";\r\nexport * from \"./presentation-common/rules/content/PropertySpecification\";\r\nexport * from \"./presentation-common/rules/content/SelectedNodeInstancesSpecification\";\r\nexport * from \"./presentation-common/rules/content/DefaultPropertyCategoryOverride\";\r\nexport * from \"./presentation-common/rules/content/modifiers/CalculatedPropertiesSpecification\";\r\nexport * from \"./presentation-common/rules/content/modifiers/ContentModifier\";\r\nexport * from \"./presentation-common/rules/content/modifiers/PropertyCategorySpecification\";\r\nexport * from \"./presentation-common/rules/content/modifiers/PropertyEditorsSpecification\";\r\nexport * from \"./presentation-common/rules/content/modifiers/CustomRendererSpecification\";\r\nexport * from \"./presentation-common/rules/content/modifiers/RelatedPropertiesSpecification\";\r\nexport * from \"./presentation-common/rules/ClassSpecifications\";\r\nexport * from \"./presentation-common/rules/RelatedInstanceSpecification\";\r\nexport * from \"./presentation-common/rules/RelationshipDirection\";\r\nexport * from \"./presentation-common/rules/RelationshipPathSpecification\";\r\nexport * from \"./presentation-common/rules/Rule\";\r\nexport * from \"./presentation-common/rules/Ruleset\";\r\nexport * from \"./presentation-common/rules/SchemasSpecification\";\r\nexport * from \"./presentation-common/rules/Variables\";\r\n"]}
@@ -2,6 +2,8 @@
2
2
  * @module RPC
3
3
  */
4
4
  import { Id64String } from "@itwin/core-bentley";
5
+ import { Descriptor } from "./content/Descriptor";
6
+ import { Item } from "./content/Item";
5
7
  /**
6
8
  * Data structure for storing element properties information in a simplified format.
7
9
  * @see [[Content]] for a format that stores all available element property data.
@@ -121,4 +123,6 @@ export type ElementPropertiesPropertyItem = ElementPropertiesPrimitivePropertyIt
121
123
  * @public
122
124
  */
123
125
  export type ElementPropertiesItem = ElementPropertiesCategoryItem | ElementPropertiesPropertyItem;
126
+ /** @internal */
127
+ export declare const buildElementProperties: (descriptor: Descriptor, item: Item) => ElementProperties;
124
128
  //# sourceMappingURL=ElementProperties.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElementProperties.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/ElementProperties.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,EAAE,EAAE,UAAU,CAAC;IACf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,KAAK,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;CACnD;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,IAAI,EAAE,UAAU,GAAG,kCAAkC,CAAC;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC9E,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,mCAAmC;IACnC,KAAK,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;CACnD;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAkC,SAAQ,yBAAyB;IAClF,mCAAmC;IACnC,IAAI,EAAE,kCAAkC,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,sCAAuC,SAAQ,iCAAiC;IAC/F,mCAAmC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,sCAAuC,SAAQ,iCAAiC;IAC/F,mCAAmC;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,8CAA8C;IAC9C,SAAS,EAAE,WAAW,GAAG,QAAQ,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,2CAA4C,SAAQ,sCAAsC;IACzG,8CAA8C;IAC9C,SAAS,EAAE,WAAW,CAAC;IACvB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,wCAAyC,SAAQ,sCAAsC;IACtG,8CAA8C;IAC9C,SAAS,EAAE,QAAQ,CAAC;IACpB,wBAAwB;IACxB,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,6BAA6B,CAAA;KAAE,CAAC,CAAC;CACzE;AAED;;;GAGG;AACH,MAAM,MAAM,kCAAkC,GAAG,2CAA2C,GAAG,wCAAwC,CAAC;AAExI;;;GAGG;AACH,MAAM,WAAW,mCAAoC,SAAQ,iCAAiC;IAC5F,mCAAmC;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,mCAAmC;IACnC,OAAO,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,6BAA6B,CAAA;KAAE,CAAC;CACnE;AAED;;;GAGG;AACH,MAAM,MAAM,kCAAkC,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElF;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,sCAAsC,GAAG,kCAAkC,GAAG,mCAAmC,CAAC;AAE9J;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,6BAA6B,GAAG,6BAA6B,CAAC"}
1
+ {"version":3,"file":"ElementProperties.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/ElementProperties.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAe/D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,EAAE,EAAE,UAAU,CAAC;IACf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,KAAK,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;CACnD;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,mCAAmC;IACnC,IAAI,EAAE,UAAU,GAAG,kCAAkC,CAAC;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC9E,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,mCAAmC;IACnC,KAAK,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;CACnD;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAkC,SAAQ,yBAAyB;IAClF,mCAAmC;IACnC,IAAI,EAAE,kCAAkC,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,sCAAuC,SAAQ,iCAAiC;IAC/F,mCAAmC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,sCAAuC,SAAQ,iCAAiC;IAC/F,mCAAmC;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,8CAA8C;IAC9C,SAAS,EAAE,WAAW,GAAG,QAAQ,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,2CAA4C,SAAQ,sCAAsC;IACzG,8CAA8C;IAC9C,SAAS,EAAE,WAAW,CAAC;IACvB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,wCAAyC,SAAQ,sCAAsC;IACtG,8CAA8C;IAC9C,SAAS,EAAE,QAAQ,CAAC;IACpB,wBAAwB;IACxB,MAAM,EAAE,KAAK,CAAC;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,6BAA6B,CAAA;KAAE,CAAC,CAAC;CACzE;AAED;;;GAGG;AACH,MAAM,MAAM,kCAAkC,GAAG,2CAA2C,GAAG,wCAAwC,CAAC;AAExI;;;GAGG;AACH,MAAM,WAAW,mCAAoC,SAAQ,iCAAiC;IAC5F,mCAAmC;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,mCAAmC;IACnC,OAAO,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,6BAA6B,CAAA;KAAE,CAAC;CACnE;AAED;;;GAGG;AACH,MAAM,MAAM,kCAAkC,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElF;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG,sCAAsC,GAAG,kCAAkC,GAAG,mCAAmC,CAAC;AAE9J;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,6BAA6B,GAAG,6BAA6B,CAAC;AAElG,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,eAAgB,UAAU,QAAQ,IAAI,KAAG,iBAI3E,CAAC"}
@@ -5,5 +5,190 @@
5
5
  /** @packageDocumentation
6
6
  * @module RPC
7
7
  */
8
- export {};
8
+ import { assert, Id64 } from "@itwin/core-bentley";
9
+ import { traverseContentItem, } from "./content/ContentTraverser";
10
+ import { PropertyValueFormat } from "./content/TypeDescription";
11
+ /** @internal */
12
+ export const buildElementProperties = (descriptor, item) => {
13
+ const builder = new ElementPropertiesBuilder();
14
+ traverseContentItem(builder, descriptor, item);
15
+ return builder.items[0];
16
+ };
17
+ class ElementPropertiesAppender {
18
+ constructor(_item, _onItemFinished) {
19
+ this._item = _item;
20
+ this._onItemFinished = _onItemFinished;
21
+ this._propertyItems = {};
22
+ this._categoryItemAppenders = {};
23
+ }
24
+ append(label, item) {
25
+ this._propertyItems[label] = item;
26
+ }
27
+ finish() {
28
+ // eslint-disable-next-line guard-for-in
29
+ for (const categoryName in this._categoryItemAppenders) {
30
+ const appender = this._categoryItemAppenders[categoryName];
31
+ appender.finish();
32
+ }
33
+ this._onItemFinished({
34
+ class: this._item.classInfo?.label ?? "",
35
+ id: this._item.primaryKeys[0]?.id ?? Id64.invalid,
36
+ label: this._item.label.displayValue,
37
+ items: this._propertyItems,
38
+ });
39
+ }
40
+ getCategoryAppender(parentAppender, category) {
41
+ let appender = this._categoryItemAppenders[category.name];
42
+ if (!appender) {
43
+ appender = new CategoryItemAppender(parentAppender, category);
44
+ this._categoryItemAppenders[category.name] = appender;
45
+ }
46
+ return appender;
47
+ }
48
+ }
49
+ class CategoryItemAppender {
50
+ constructor(_parentAppender, _category) {
51
+ this._parentAppender = _parentAppender;
52
+ this._category = _category;
53
+ this._items = {};
54
+ }
55
+ append(label, item) {
56
+ this._items[label] = item;
57
+ }
58
+ finish() {
59
+ if (Object.keys(this._items).length === 0) {
60
+ return;
61
+ }
62
+ this._parentAppender.append(this._category.label, {
63
+ type: "category",
64
+ items: this._items,
65
+ });
66
+ }
67
+ }
68
+ class ArrayItemAppender {
69
+ constructor(_parentAppender, _props) {
70
+ this._parentAppender = _parentAppender;
71
+ this._props = _props;
72
+ this._items = [];
73
+ }
74
+ append(_label, item) {
75
+ assert(item.type !== "category");
76
+ this._items.push(item);
77
+ }
78
+ finish() {
79
+ assert(this._props.valueType.valueFormat === PropertyValueFormat.Array);
80
+ if (this._props.valueType.memberType.valueFormat === PropertyValueFormat.Primitive) {
81
+ this._parentAppender.append(this._props.hierarchy.field.label, this.createPrimitivesArray());
82
+ }
83
+ else {
84
+ this._parentAppender.append(this._props.hierarchy.field.label, this.createStructsArray());
85
+ }
86
+ }
87
+ createPrimitivesArray() {
88
+ return {
89
+ type: "array",
90
+ valueType: "primitive",
91
+ values: this._items.map((item) => {
92
+ assert(item.type === "primitive");
93
+ return item.value;
94
+ }),
95
+ };
96
+ }
97
+ createStructsArray() {
98
+ return {
99
+ type: "array",
100
+ valueType: "struct",
101
+ values: this._items.map((item) => {
102
+ assert(item.type === "struct");
103
+ return item.members;
104
+ }),
105
+ };
106
+ }
107
+ }
108
+ class StructItemAppender {
109
+ constructor(_parentAppender, _props) {
110
+ this._parentAppender = _parentAppender;
111
+ this._props = _props;
112
+ this._members = {};
113
+ }
114
+ append(label, item) {
115
+ assert(item.type !== "category");
116
+ this._members[label] = item;
117
+ }
118
+ finish() {
119
+ assert(this._props.valueType.valueFormat === PropertyValueFormat.Struct);
120
+ this._parentAppender.append(this._props.hierarchy.field.label, {
121
+ type: "struct",
122
+ members: this._members,
123
+ });
124
+ }
125
+ }
126
+ class ElementPropertiesBuilder {
127
+ constructor() {
128
+ this._appendersStack = [];
129
+ this._items = [];
130
+ }
131
+ get items() {
132
+ return this._items;
133
+ }
134
+ get _currentAppender() {
135
+ const appender = this._appendersStack[this._appendersStack.length - 1];
136
+ assert(appender !== undefined);
137
+ return appender;
138
+ }
139
+ startContent(_props) {
140
+ return true;
141
+ }
142
+ finishContent() { }
143
+ processFieldHierarchies(_props) { }
144
+ startItem(props) {
145
+ this._elementPropertiesAppender = new ElementPropertiesAppender(props.item, (item) => this._items.push(item));
146
+ this._appendersStack.push(this._elementPropertiesAppender);
147
+ return true;
148
+ }
149
+ finishItem() {
150
+ this._appendersStack.pop();
151
+ assert(this._elementPropertiesAppender !== undefined);
152
+ this._elementPropertiesAppender.finish();
153
+ this._elementPropertiesAppender = undefined;
154
+ }
155
+ startCategory(props) {
156
+ assert(this._elementPropertiesAppender !== undefined);
157
+ this._appendersStack.push(this._elementPropertiesAppender.getCategoryAppender(this._currentAppender, props.category));
158
+ return true;
159
+ }
160
+ finishCategory() {
161
+ this._appendersStack.pop();
162
+ }
163
+ startField(_props) {
164
+ return true;
165
+ }
166
+ finishField() { }
167
+ startStruct(props) {
168
+ this._appendersStack.push(new StructItemAppender(this._currentAppender, props));
169
+ return true;
170
+ }
171
+ finishStruct() {
172
+ this._appendersStack.pop().finish();
173
+ }
174
+ startArray(props) {
175
+ this._appendersStack.push(new ArrayItemAppender(this._currentAppender, props));
176
+ return true;
177
+ }
178
+ finishArray() {
179
+ this._appendersStack.pop().finish();
180
+ }
181
+ processMergedValue(props) {
182
+ this._currentAppender.append(props.mergedField.label, {
183
+ type: "primitive",
184
+ value: "",
185
+ });
186
+ }
187
+ processPrimitiveValue(props) {
188
+ this._currentAppender.append(props.field.label, {
189
+ type: "primitive",
190
+ value: props.displayValue?.toString() ?? "",
191
+ });
192
+ }
193
+ }
9
194
  //# sourceMappingURL=ElementProperties.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElementProperties.js","sourceRoot":"","sources":["../../../src/presentation-common/ElementProperties.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RPC\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * Data structure for storing element properties information in a simplified format.\r\n * @see [[Content]] for a format that stores all available element property data.\r\n * @public\r\n */\r\nexport interface ElementProperties {\r\n /** Label of element's ECClass. */\r\n class: string;\r\n /** Element's ID. */\r\n id: Id64String;\r\n /** Element's label. */\r\n label: string;\r\n /** Container of property values */\r\n items: { [label: string]: ElementPropertiesItem };\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: \"category\" | ElementPropertiesPropertyValueType;\r\n}\r\n\r\n/**\r\n * Definition for a category. A category can nest other property items, including categories.\r\n * @public\r\n */\r\nexport interface ElementPropertiesCategoryItem extends ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: \"category\";\r\n /** Container of property values */\r\n items: { [label: string]: ElementPropertiesItem };\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesPropertyItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPropertyItemBase extends ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: ElementPropertiesPropertyValueType;\r\n}\r\n\r\n/**\r\n * Definition for a primitive property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPrimitivePropertyItem extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"primitive\";\r\n /** Display value of the property. */\r\n value: string;\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesArrayPropertyItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesArrayPropertyItemBase extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"array\";\r\n /** Type of values contained in this array. */\r\n valueType: \"primitive\" | \"struct\";\r\n}\r\n\r\n/**\r\n * Definition for a primitives' array property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPrimitiveArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {\r\n /** Type of values contained in this array. */\r\n valueType: \"primitive\";\r\n /** Array of display values. */\r\n values: string[];\r\n}\r\n\r\n/**\r\n * Definition for a structs' array property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesStructArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {\r\n /** Type of values contained in this array. */\r\n valueType: \"struct\";\r\n /** Array of structs. */\r\n values: Array<{ [memberLabel: string]: ElementPropertiesPropertyItem }>;\r\n}\r\n\r\n/**\r\n * Definition for an array property value.\r\n * @public\r\n */\r\nexport type ElementPropertiesArrayPropertyItem = ElementPropertiesPrimitiveArrayPropertyItem | ElementPropertiesStructArrayPropertyItem;\r\n\r\n/**\r\n * Definition for an struct property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesStructPropertyItem extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"struct\";\r\n /** Container of struct members. */\r\n members: { [memberLabel: string]: ElementPropertiesPropertyItem };\r\n}\r\n\r\n/**\r\n * Available element property types.\r\n * @public\r\n */\r\nexport type ElementPropertiesPropertyValueType = \"primitive\" | \"array\" | \"struct\";\r\n\r\n/**\r\n * Definition of a property value.\r\n * @public\r\n */\r\nexport type ElementPropertiesPropertyItem = ElementPropertiesPrimitivePropertyItem | ElementPropertiesArrayPropertyItem | ElementPropertiesStructPropertyItem;\r\n\r\n/**\r\n * Definition of a property item, including a property category.\r\n * @public\r\n */\r\nexport type ElementPropertiesItem = ElementPropertiesCategoryItem | ElementPropertiesPropertyItem;\r\n"]}
1
+ {"version":3,"file":"ElementProperties.js","sourceRoot":"","sources":["../../../src/presentation-common/ElementProperties.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RPC\r\n */\r\n\r\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { CategoryDescription } from \"./content/Category\";\r\nimport {\r\n IContentVisitor,\r\n ProcessFieldHierarchiesProps,\r\n ProcessMergedValueProps,\r\n ProcessPrimitiveValueProps,\r\n StartArrayProps,\r\n StartCategoryProps,\r\n StartContentProps,\r\n StartFieldProps,\r\n StartItemProps,\r\n StartStructProps,\r\n traverseContentItem,\r\n} from \"./content/ContentTraverser\";\r\nimport { Descriptor } from \"./content/Descriptor\";\r\nimport { Item } from \"./content/Item\";\r\nimport { PropertyValueFormat } from \"./content/TypeDescription\";\r\n\r\n/**\r\n * Data structure for storing element properties information in a simplified format.\r\n * @see [[Content]] for a format that stores all available element property data.\r\n * @public\r\n */\r\nexport interface ElementProperties {\r\n /** Label of element's ECClass. */\r\n class: string;\r\n /** Element's ID. */\r\n id: Id64String;\r\n /** Element's label. */\r\n label: string;\r\n /** Container of property values */\r\n items: { [label: string]: ElementPropertiesItem };\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: \"category\" | ElementPropertiesPropertyValueType;\r\n}\r\n\r\n/**\r\n * Definition for a category. A category can nest other property items, including categories.\r\n * @public\r\n */\r\nexport interface ElementPropertiesCategoryItem extends ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: \"category\";\r\n /** Container of property values */\r\n items: { [label: string]: ElementPropertiesItem };\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesPropertyItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPropertyItemBase extends ElementPropertiesItemBase {\r\n /** Type of the properties item. */\r\n type: ElementPropertiesPropertyValueType;\r\n}\r\n\r\n/**\r\n * Definition for a primitive property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPrimitivePropertyItem extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"primitive\";\r\n /** Display value of the property. */\r\n value: string;\r\n}\r\n\r\n/**\r\n * Base type for all [[ElementPropertiesArrayPropertyItem]] types.\r\n * @public\r\n */\r\nexport interface ElementPropertiesArrayPropertyItemBase extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"array\";\r\n /** Type of values contained in this array. */\r\n valueType: \"primitive\" | \"struct\";\r\n}\r\n\r\n/**\r\n * Definition for a primitives' array property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesPrimitiveArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {\r\n /** Type of values contained in this array. */\r\n valueType: \"primitive\";\r\n /** Array of display values. */\r\n values: string[];\r\n}\r\n\r\n/**\r\n * Definition for a structs' array property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesStructArrayPropertyItem extends ElementPropertiesArrayPropertyItemBase {\r\n /** Type of values contained in this array. */\r\n valueType: \"struct\";\r\n /** Array of structs. */\r\n values: Array<{ [memberLabel: string]: ElementPropertiesPropertyItem }>;\r\n}\r\n\r\n/**\r\n * Definition for an array property value.\r\n * @public\r\n */\r\nexport type ElementPropertiesArrayPropertyItem = ElementPropertiesPrimitiveArrayPropertyItem | ElementPropertiesStructArrayPropertyItem;\r\n\r\n/**\r\n * Definition for an struct property value.\r\n * @public\r\n */\r\nexport interface ElementPropertiesStructPropertyItem extends ElementPropertiesPropertyItemBase {\r\n /** Type of the properties item. */\r\n type: \"struct\";\r\n /** Container of struct members. */\r\n members: { [memberLabel: string]: ElementPropertiesPropertyItem };\r\n}\r\n\r\n/**\r\n * Available element property types.\r\n * @public\r\n */\r\nexport type ElementPropertiesPropertyValueType = \"primitive\" | \"array\" | \"struct\";\r\n\r\n/**\r\n * Definition of a property value.\r\n * @public\r\n */\r\nexport type ElementPropertiesPropertyItem = ElementPropertiesPrimitivePropertyItem | ElementPropertiesArrayPropertyItem | ElementPropertiesStructPropertyItem;\r\n\r\n/**\r\n * Definition of a property item, including a property category.\r\n * @public\r\n */\r\nexport type ElementPropertiesItem = ElementPropertiesCategoryItem | ElementPropertiesPropertyItem;\r\n\r\n/** @internal */\r\nexport const buildElementProperties = (descriptor: Descriptor, item: Item): ElementProperties => {\r\n const builder = new ElementPropertiesBuilder();\r\n traverseContentItem(builder, descriptor, item);\r\n return builder.items[0];\r\n};\r\n\r\ninterface IPropertiesAppender {\r\n append(label: string, item: ElementPropertiesItem): void;\r\n finish(): void;\r\n}\r\n\r\nclass ElementPropertiesAppender implements IPropertiesAppender {\r\n private _propertyItems: { [label: string]: ElementPropertiesItem } = {};\r\n private _categoryItemAppenders: { [categoryName: string]: IPropertiesAppender } = {};\r\n constructor(\r\n private _item: Item,\r\n private _onItemFinished: (item: ElementProperties) => void,\r\n ) {}\r\n\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n this._propertyItems[label] = item;\r\n }\r\n\r\n public finish(): void {\r\n // eslint-disable-next-line guard-for-in\r\n for (const categoryName in this._categoryItemAppenders) {\r\n const appender = this._categoryItemAppenders[categoryName];\r\n appender.finish();\r\n }\r\n\r\n this._onItemFinished({\r\n class: this._item.classInfo?.label ?? \"\",\r\n id: this._item.primaryKeys[0]?.id ?? Id64.invalid,\r\n label: this._item.label.displayValue,\r\n items: this._propertyItems,\r\n });\r\n }\r\n\r\n public getCategoryAppender(parentAppender: IPropertiesAppender, category: CategoryDescription): IPropertiesAppender {\r\n let appender = this._categoryItemAppenders[category.name];\r\n if (!appender) {\r\n appender = new CategoryItemAppender(parentAppender, category);\r\n this._categoryItemAppenders[category.name] = appender;\r\n }\r\n return appender;\r\n }\r\n}\r\n\r\nclass CategoryItemAppender implements IPropertiesAppender {\r\n private _items: { [label: string]: ElementPropertiesItem } = {};\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _category: CategoryDescription,\r\n ) {}\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n this._items[label] = item;\r\n }\r\n public finish(): void {\r\n if (Object.keys(this._items).length === 0) {\r\n return;\r\n }\r\n\r\n this._parentAppender.append(this._category.label, {\r\n type: \"category\",\r\n items: this._items,\r\n });\r\n }\r\n}\r\n\r\nclass ArrayItemAppender implements IPropertiesAppender {\r\n private _items: ElementPropertiesPropertyItem[] = [];\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _props: StartArrayProps,\r\n ) {}\r\n public append(_label: string, item: ElementPropertiesItem): void {\r\n assert(item.type !== \"category\");\r\n this._items.push(item);\r\n }\r\n public finish(): void {\r\n assert(this._props.valueType.valueFormat === PropertyValueFormat.Array);\r\n if (this._props.valueType.memberType.valueFormat === PropertyValueFormat.Primitive) {\r\n this._parentAppender.append(this._props.hierarchy.field.label, this.createPrimitivesArray());\r\n } else {\r\n this._parentAppender.append(this._props.hierarchy.field.label, this.createStructsArray());\r\n }\r\n }\r\n private createPrimitivesArray(): ElementPropertiesPrimitiveArrayPropertyItem {\r\n return {\r\n type: \"array\",\r\n valueType: \"primitive\",\r\n values: this._items.map((item) => {\r\n assert(item.type === \"primitive\");\r\n return item.value;\r\n }),\r\n };\r\n }\r\n private createStructsArray(): ElementPropertiesStructArrayPropertyItem {\r\n return {\r\n type: \"array\",\r\n valueType: \"struct\",\r\n values: this._items.map((item) => {\r\n assert(item.type === \"struct\");\r\n return item.members;\r\n }),\r\n };\r\n }\r\n}\r\n\r\nclass StructItemAppender implements IPropertiesAppender {\r\n private _members: { [label: string]: ElementPropertiesPropertyItem } = {};\r\n constructor(\r\n private _parentAppender: IPropertiesAppender,\r\n private _props: StartStructProps,\r\n ) {}\r\n public append(label: string, item: ElementPropertiesItem): void {\r\n assert(item.type !== \"category\");\r\n this._members[label] = item;\r\n }\r\n public finish(): void {\r\n assert(this._props.valueType.valueFormat === PropertyValueFormat.Struct);\r\n this._parentAppender.append(this._props.hierarchy.field.label, {\r\n type: \"struct\",\r\n members: this._members,\r\n });\r\n }\r\n}\r\n\r\nclass ElementPropertiesBuilder implements IContentVisitor {\r\n private _appendersStack: IPropertiesAppender[] = [];\r\n private _items: ElementProperties[] = [];\r\n private _elementPropertiesAppender: ElementPropertiesAppender | undefined;\r\n\r\n public get items(): ElementProperties[] {\r\n return this._items;\r\n }\r\n\r\n private get _currentAppender(): IPropertiesAppender {\r\n const appender = this._appendersStack[this._appendersStack.length - 1];\r\n assert(appender !== undefined);\r\n return appender;\r\n }\r\n\r\n public startContent(_props: StartContentProps): boolean {\r\n return true;\r\n }\r\n public finishContent(): void {}\r\n\r\n public processFieldHierarchies(_props: ProcessFieldHierarchiesProps): void {}\r\n\r\n public startItem(props: StartItemProps): boolean {\r\n this._elementPropertiesAppender = new ElementPropertiesAppender(props.item, (item) => this._items.push(item));\r\n this._appendersStack.push(this._elementPropertiesAppender);\r\n return true;\r\n }\r\n public finishItem(): void {\r\n this._appendersStack.pop();\r\n assert(this._elementPropertiesAppender !== undefined);\r\n this._elementPropertiesAppender.finish();\r\n this._elementPropertiesAppender = undefined;\r\n }\r\n\r\n public startCategory(props: StartCategoryProps): boolean {\r\n assert(this._elementPropertiesAppender !== undefined);\r\n this._appendersStack.push(this._elementPropertiesAppender.getCategoryAppender(this._currentAppender, props.category));\r\n return true;\r\n }\r\n public finishCategory(): void {\r\n this._appendersStack.pop();\r\n }\r\n\r\n public startField(_props: StartFieldProps): boolean {\r\n return true;\r\n }\r\n public finishField(): void {}\r\n\r\n public startStruct(props: StartStructProps): boolean {\r\n this._appendersStack.push(new StructItemAppender(this._currentAppender, props));\r\n return true;\r\n }\r\n public finishStruct(): void {\r\n this._appendersStack.pop()!.finish();\r\n }\r\n\r\n public startArray(props: StartArrayProps): boolean {\r\n this._appendersStack.push(new ArrayItemAppender(this._currentAppender, props));\r\n return true;\r\n }\r\n public finishArray(): void {\r\n this._appendersStack.pop()!.finish();\r\n }\r\n\r\n public processMergedValue(props: ProcessMergedValueProps): void {\r\n this._currentAppender.append(props.mergedField.label, {\r\n type: \"primitive\",\r\n value: \"\",\r\n });\r\n }\r\n public processPrimitiveValue(props: ProcessPrimitiveValueProps): void {\r\n this._currentAppender.append(props.field.label, {\r\n type: \"primitive\",\r\n value: props.displayValue?.toString() ?? \"\",\r\n });\r\n }\r\n}\r\n"]}
@@ -165,9 +165,14 @@ export type ElementPropertiesRequestOptions<TIModel, TParsedContent = ElementPro
165
165
  * Request type for single element properties requests.
166
166
  * @public
167
167
  */
168
- export interface SingleElementPropertiesRequestOptions<TIModel> extends RequestOptions<TIModel> {
168
+ export interface SingleElementPropertiesRequestOptions<TIModel, TParsedContent = ElementProperties> extends RequestOptions<TIModel> {
169
169
  /** ID of the element to get properties for. */
170
170
  elementId: Id64String;
171
+ /**
172
+ * Content parser that creates a result item based on given content descriptor and content item. Defaults
173
+ * to a parser that creates [[ElementProperties]] objects.
174
+ */
175
+ contentParser?: (descriptor: Descriptor, item: Item) => TParsedContent;
171
176
  }
172
177
  /**
173
178
  * Request type for multiple elements properties requests.
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationManagerOptions.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/PresentationManagerOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PresentationManagerOptions.d.ts","sourceRoot":"","sources":["../../../src/presentation-common/PresentationManagerOptions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationManagerOptions.js","sourceRoot":"","sources":["../../../src/presentation-common/PresentationManagerOptions.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AA8QH,gBAAgB;AAChB,MAAM,UAAU,gCAAgC,CAC9C,OAAwF;IAExF,OAAO,CAAC,CAAE,OAAmD,CAAC,UAAU,CAAC;AAC3E,CAAC;AAgDD;;;GAGG;AACH,MAAM,UAAU,uCAAuC,CACrD,OAAuH;IAEvH,OAAQ,OAA0D,CAAC,SAAS,KAAK,SAAS,CAAC;AAC7F,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { BeEvent, Id64String } from \"@itwin/core-bentley\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport { Descriptor, SelectionInfo } from \"./content/Descriptor\";\r\nimport { FieldDescriptor } from \"./content/Fields\";\r\nimport { Item } from \"./content/Item\";\r\nimport { InstanceKey } from \"./EC\";\r\nimport { ElementProperties } from \"./ElementProperties\";\r\nimport { InstanceFilterDefinition } from \"./InstanceFilterDefinition\";\r\nimport { Ruleset } from \"./rules/Ruleset\";\r\nimport { RulesetVariable } from \"./RulesetVariables\";\r\nimport { SelectionScopeProps } from \"./selection/SelectionScope\";\r\n\r\n/**\r\n * A generic request options type used for both hierarchy and content requests.\r\n * @public\r\n */\r\nexport interface RequestOptions<TIModel> {\r\n /** iModel to request data from */\r\n imodel: TIModel;\r\n\r\n /** Optional locale to use when formatting / localizing data */\r\n locale?: string;\r\n\r\n /**\r\n * Unit system to use when formatting property values with units. Default presentation\r\n * unit is used if unit system is not specified.\r\n */\r\n unitSystem?: UnitSystemKey;\r\n\r\n /**\r\n * Expected form of response. This property is set automatically on newer frontends.\r\n * `unparsed-json` — deliver response from native addon without parsing it.\r\n * @internal\r\n */\r\n transport?: \"unparsed-json\";\r\n}\r\n\r\n/**\r\n * Options for requests that require presentation ruleset. Not\r\n * meant to be used directly, see one of the subclasses.\r\n *\r\n * @public\r\n */\r\nexport interface RequestOptionsWithRuleset<TIModel, TRulesetVariable = RulesetVariable> extends RequestOptions<TIModel> {\r\n /** Ruleset or id of the ruleset to use when requesting data */\r\n rulesetOrId: Ruleset | string;\r\n\r\n /** Ruleset variables to use when requesting data */\r\n rulesetVariables?: TRulesetVariable[];\r\n}\r\n\r\n/**\r\n * Request type for hierarchy requests.\r\n * @public\r\n */\r\nexport interface HierarchyRequestOptions<TIModel, TNodeKey, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** Key of the parent node to get children for */\r\n parentKey?: TNodeKey;\r\n\r\n /**\r\n * An instance filter that should be applied for this hierarchy level.\r\n *\r\n * **Note:** May only be used on hierarchy levels that support filtering - check [[NavNode.supportsFiltering]] before\r\n * requesting filtered children.\r\n */\r\n instanceFilter?: InstanceFilterDefinition;\r\n\r\n /**\r\n * A limit to how many instances at most should be loaded for a hierarchy level. If the limit is exceeded,\r\n * the request fails with [[PresentationError]] having [[PresentationStatus.ResultSetTooLarge]] error number.\r\n *\r\n * Specifying the limit is useful when creating unlimited size result sets is not meaningful - this allows the library\r\n * to return early as soon as the limit is reached, instead of creating a very large result that's possibly too large to\r\n * be useful to be displayed to end users.\r\n *\r\n * @see [Hierarchies' filtering and limiting]($docs/presentation/hierarchies/FilteringLimiting.md)\r\n */\r\n sizeLimit?: number;\r\n}\r\n\r\n/**\r\n * Params for hierarchy level descriptor requests.\r\n * @public\r\n */\r\nexport interface HierarchyLevelDescriptorRequestOptions<TIModel, TNodeKey, TRulesetVariable = RulesetVariable>\r\n extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** Key of the parent node to get hierarchy level descriptor for. */\r\n parentKey?: TNodeKey;\r\n}\r\n\r\n/**\r\n * Request type of filtering hierarchies by given ECInstance paths.\r\n * @public\r\n */\r\nexport interface FilterByInstancePathsHierarchyRequestOptions<TIModel, TRulesetVariable = RulesetVariable>\r\n extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** A list of paths from root ECInstance to target ECInstance. */\r\n instancePaths: InstanceKey[][];\r\n\r\n /**\r\n * An optional index (`0 <= markedIndex < instancePaths.length`) to mark one of the instance paths. The\r\n * path is marked using `NodePathElement.isMarked` flag in the result.\r\n */\r\n markedIndex?: number;\r\n}\r\n\r\n/**\r\n * Request type of filtering hierarchies by given text.\r\n * @public\r\n */\r\nexport interface FilterByTextHierarchyRequestOptions<TIModel, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** Text to filter the hierarchy by. */\r\n filterText: string;\r\n}\r\n\r\n/**\r\n * Request type for content sources requests.\r\n * @public\r\n */\r\nexport interface ContentSourcesRequestOptions<TIModel> extends RequestOptions<TIModel> {\r\n /** Full names of classes to get content sources for. Format for a full class name: `SchemaName:ClassName`. */\r\n classes: string[];\r\n}\r\n\r\n/**\r\n * Request type for content descriptor requests.\r\n * @public\r\n */\r\nexport interface ContentDescriptorRequestOptions<TIModel, TKeySet, TRulesetVariable = RulesetVariable>\r\n extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /**\r\n * Content display type.\r\n * @see [[DefaultContentDisplayTypes]]\r\n */\r\n displayType: string;\r\n /**\r\n * Content flags used for content customization.\r\n * @see [[ContentFlags]]\r\n */\r\n contentFlags?: number;\r\n /** Input keys for getting the content */\r\n keys: TKeySet;\r\n /** Information about the selection event that was the cause of this content request */\r\n selection?: SelectionInfo;\r\n}\r\n\r\n/**\r\n * Request type for content requests.\r\n * @public\r\n */\r\nexport interface ContentRequestOptions<TIModel, TDescriptor, TKeySet, TRulesetVariable = RulesetVariable>\r\n extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** Content descriptor for customizing the returned content */\r\n descriptor: TDescriptor;\r\n /** Input keys for getting the content */\r\n keys: TKeySet;\r\n /**\r\n * Flag that specifies whether value formatting should be omitted or not.\r\n * Content is returned without `displayValues` when this is set to `true`.\r\n */\r\n omitFormattedValues?: boolean;\r\n}\r\n\r\n/**\r\n * Request type for distinct values' requests.\r\n * @public\r\n */\r\nexport interface DistinctValuesRequestOptions<TIModel, TDescriptor, TKeySet, TRulesetVariable = RulesetVariable>\r\n extends Paged<RequestOptionsWithRuleset<TIModel, TRulesetVariable>> {\r\n /** Content descriptor for customizing the returned content */\r\n descriptor: TDescriptor;\r\n /** Input keys for getting the content */\r\n keys: TKeySet;\r\n /** Descriptor for a field distinct values are requested for */\r\n fieldDescriptor: FieldDescriptor;\r\n}\r\n\r\n/**\r\n * Request type for element properties requests\r\n * @public\r\n * @deprecated in 4.x. Use [[SingleElementPropertiesRequestOptions]] or [[MultiElementPropertiesRequestOptions]] directly.\r\n */\r\nexport type ElementPropertiesRequestOptions<TIModel, TParsedContent = ElementProperties> =\r\n | SingleElementPropertiesRequestOptions<TIModel>\r\n | MultiElementPropertiesRequestOptions<TIModel, TParsedContent>;\r\n\r\n/**\r\n * Request type for single element properties requests.\r\n * @public\r\n */\r\nexport interface SingleElementPropertiesRequestOptions<TIModel> extends RequestOptions<TIModel> {\r\n /** ID of the element to get properties for. */\r\n elementId: Id64String;\r\n}\r\n\r\n/**\r\n * Request type for multiple elements properties requests.\r\n * @public\r\n */\r\nexport interface MultiElementPropertiesRequestOptions<TIModel, TParsedContent = ElementProperties> extends RequestOptions<TIModel> {\r\n /**\r\n * Classes of the elements to get properties for. If [[elementClasses]] is `undefined`, all classes\r\n * are used. Classes should be specified in one of these formats: \"<schema name or alias>.<class_name>\" or\r\n * \"<schema name or alias>:<class_name>\".\r\n */\r\n elementClasses?: string[];\r\n\r\n /**\r\n * Content parser that creates a result item based on given content descriptor and content item. Defaults\r\n * to a parser that creates [[ElementProperties]] objects.\r\n */\r\n contentParser?: (descriptor: Descriptor, item: Item) => TParsedContent;\r\n\r\n /**\r\n * The properties of multiple elements are going to be retrieved and returned in batches. Depending on the batch\r\n * size load on CPU vs MEMORY load may vary, so changing this attribute allows to fine tune the performance.\r\n * Defaults to `1000`.\r\n */\r\n batchSize?: number;\r\n}\r\n\r\n/**\r\n * Request type for content instance keys' requests.\r\n * @public\r\n */\r\nexport interface ContentInstanceKeysRequestOptions<TIModel, TKeySet, TRulesetVariable = RulesetVariable>\r\n extends Paged<RequestOptionsWithRuleset<TIModel, TRulesetVariable>> {\r\n /**\r\n * Content display type.\r\n * @see [[DefaultContentDisplayTypes]]\r\n */\r\n displayType?: string;\r\n /** Input keys for getting the content. */\r\n keys: TKeySet;\r\n}\r\n\r\n/**\r\n * Request type for label requests\r\n * @public\r\n */\r\nexport interface DisplayLabelRequestOptions<TIModel, TInstanceKey> extends RequestOptions<TIModel> {\r\n /** Key of ECInstance to get label for */\r\n key: TInstanceKey;\r\n}\r\n\r\n/**\r\n * Request type for labels requests\r\n * @public\r\n */\r\nexport interface DisplayLabelsRequestOptions<TIModel, TInstanceKey> extends RequestOptions<TIModel> {\r\n /** Keys of ECInstances to get labels for */\r\n keys: TInstanceKey[];\r\n}\r\n\r\n/**\r\n * Request options used for selection scope related requests\r\n * @public\r\n */\r\nexport interface SelectionScopeRequestOptions<TIModel> extends RequestOptions<TIModel> {} // eslint-disable-line @typescript-eslint/no-empty-interface\r\n\r\n/**\r\n * Request options used for calculating selection based on given instance keys and selection scope.\r\n * @public\r\n */\r\nexport interface ComputeSelectionRequestOptions<TIModel> extends RequestOptions<TIModel> {\r\n elementIds: Id64String[];\r\n scope: SelectionScopeProps;\r\n}\r\n/** @internal */\r\nexport function isComputeSelectionRequestOptions<TIModel>(\r\n options: ComputeSelectionRequestOptions<TIModel> | SelectionScopeRequestOptions<TIModel>,\r\n): options is ComputeSelectionRequestOptions<TIModel> {\r\n return !!(options as ComputeSelectionRequestOptions<TIModel>).elementIds;\r\n}\r\n\r\n/**\r\n * Data structure for comparing a hierarchy after ruleset or ruleset variable changes.\r\n * @public\r\n */\r\nexport interface HierarchyCompareOptions<TIModel, TNodeKey, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n prev: {\r\n rulesetOrId?: Ruleset | string;\r\n rulesetVariables?: TRulesetVariable[];\r\n };\r\n expandedNodeKeys?: TNodeKey[];\r\n continuationToken?: {\r\n prevHierarchyNode: string;\r\n currHierarchyNode: string;\r\n };\r\n resultSetSize?: number;\r\n}\r\n\r\n/**\r\n * Paging options\r\n * @public\r\n */\r\nexport interface PageOptions {\r\n /** Inclusive start 0-based index of the page */\r\n start?: number;\r\n /** Maximum size of the page */\r\n size?: number;\r\n}\r\n\r\n/**\r\n * A wrapper type that injects [[PageOptions]] into supplied type\r\n * @public\r\n */\r\nexport type Paged<TOptions extends {}> = TOptions & {\r\n /** Optional paging parameters */\r\n paging?: PageOptions;\r\n};\r\n\r\n/**\r\n * A wrapper type that injects priority into supplied type.\r\n * @public\r\n */\r\nexport type Prioritized<TOptions extends {}> = TOptions & {\r\n /** Optional priority */\r\n priority?: number;\r\n};\r\n\r\n/**\r\n * Checks if supplied request options are for single or multiple element properties.\r\n * @internal\r\n */\r\nexport function isSingleElementPropertiesRequestOptions<TIModel, TParsedContent = any>(\r\n options: SingleElementPropertiesRequestOptions<TIModel> | MultiElementPropertiesRequestOptions<TIModel, TParsedContent>,\r\n): options is SingleElementPropertiesRequestOptions<TIModel> {\r\n return (options as SingleElementPropertiesRequestOptions<TIModel>).elementId !== undefined;\r\n}\r\n\r\n/**\r\n * A wrapper type that injects cancelEvent into supplied type.\r\n * @public\r\n */\r\nexport type WithCancelEvent<TOptions extends {}> = TOptions & {\r\n /** Event which is triggered when the request is canceled */\r\n cancelEvent?: BeEvent<() => void>;\r\n};\r\n"]}
1
+ {"version":3,"file":"PresentationManagerOptions.js","sourceRoot":"","sources":["../../../src/presentation-common/PresentationManagerOptions.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAoRH,gBAAgB;AAChB,MAAM,UAAU,gCAAgC,CAC9C,OAAwF;IAExF,OAAO,CAAC,CAAE,OAAmD,CAAC,UAAU,CAAC;AAC3E,CAAC;AAgDD;;;GAGG;AACH,MAAM,UAAU,uCAAuC,CACrD,OAAuH;IAEvH,OAAQ,OAA0D,CAAC,SAAS,KAAK,SAAS,CAAC;AAC7F,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { BeEvent, Id64String } from \"@itwin/core-bentley\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport { Descriptor, SelectionInfo } from \"./content/Descriptor\";\r\nimport { FieldDescriptor } from \"./content/Fields\";\r\nimport { Item } from \"./content/Item\";\r\nimport { InstanceKey } from \"./EC\";\r\nimport { ElementProperties } from \"./ElementProperties\";\r\nimport { InstanceFilterDefinition } from \"./InstanceFilterDefinition\";\r\nimport { Ruleset } from \"./rules/Ruleset\";\r\nimport { RulesetVariable } from \"./RulesetVariables\";\r\nimport { SelectionScopeProps } from \"./selection/SelectionScope\";\r\n\r\n/**\r\n * A generic request options type used for both hierarchy and content requests.\r\n * @public\r\n */\r\nexport interface RequestOptions<TIModel> {\r\n /** iModel to request data from */\r\n imodel: TIModel;\r\n\r\n /** Optional locale to use when formatting / localizing data */\r\n locale?: string;\r\n\r\n /**\r\n * Unit system to use when formatting property values with units. Default presentation\r\n * unit is used if unit system is not specified.\r\n */\r\n unitSystem?: UnitSystemKey;\r\n\r\n /**\r\n * Expected form of response. This property is set automatically on newer frontends.\r\n * `unparsed-json` — deliver response from native addon without parsing it.\r\n * @internal\r\n */\r\n transport?: \"unparsed-json\";\r\n}\r\n\r\n/**\r\n * Options for requests that require presentation ruleset. Not\r\n * meant to be used directly, see one of the subclasses.\r\n *\r\n * @public\r\n */\r\nexport interface RequestOptionsWithRuleset<TIModel, TRulesetVariable = RulesetVariable> extends RequestOptions<TIModel> {\r\n /** Ruleset or id of the ruleset to use when requesting data */\r\n rulesetOrId: Ruleset | string;\r\n\r\n /** Ruleset variables to use when requesting data */\r\n rulesetVariables?: TRulesetVariable[];\r\n}\r\n\r\n/**\r\n * Request type for hierarchy requests.\r\n * @public\r\n */\r\nexport interface HierarchyRequestOptions<TIModel, TNodeKey, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** Key of the parent node to get children for */\r\n parentKey?: TNodeKey;\r\n\r\n /**\r\n * An instance filter that should be applied for this hierarchy level.\r\n *\r\n * **Note:** May only be used on hierarchy levels that support filtering - check [[NavNode.supportsFiltering]] before\r\n * requesting filtered children.\r\n */\r\n instanceFilter?: InstanceFilterDefinition;\r\n\r\n /**\r\n * A limit to how many instances at most should be loaded for a hierarchy level. If the limit is exceeded,\r\n * the request fails with [[PresentationError]] having [[PresentationStatus.ResultSetTooLarge]] error number.\r\n *\r\n * Specifying the limit is useful when creating unlimited size result sets is not meaningful - this allows the library\r\n * to return early as soon as the limit is reached, instead of creating a very large result that's possibly too large to\r\n * be useful to be displayed to end users.\r\n *\r\n * @see [Hierarchies' filtering and limiting]($docs/presentation/hierarchies/FilteringLimiting.md)\r\n */\r\n sizeLimit?: number;\r\n}\r\n\r\n/**\r\n * Params for hierarchy level descriptor requests.\r\n * @public\r\n */\r\nexport interface HierarchyLevelDescriptorRequestOptions<TIModel, TNodeKey, TRulesetVariable = RulesetVariable>\r\n extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** Key of the parent node to get hierarchy level descriptor for. */\r\n parentKey?: TNodeKey;\r\n}\r\n\r\n/**\r\n * Request type of filtering hierarchies by given ECInstance paths.\r\n * @public\r\n */\r\nexport interface FilterByInstancePathsHierarchyRequestOptions<TIModel, TRulesetVariable = RulesetVariable>\r\n extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** A list of paths from root ECInstance to target ECInstance. */\r\n instancePaths: InstanceKey[][];\r\n\r\n /**\r\n * An optional index (`0 <= markedIndex < instancePaths.length`) to mark one of the instance paths. The\r\n * path is marked using `NodePathElement.isMarked` flag in the result.\r\n */\r\n markedIndex?: number;\r\n}\r\n\r\n/**\r\n * Request type of filtering hierarchies by given text.\r\n * @public\r\n */\r\nexport interface FilterByTextHierarchyRequestOptions<TIModel, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** Text to filter the hierarchy by. */\r\n filterText: string;\r\n}\r\n\r\n/**\r\n * Request type for content sources requests.\r\n * @public\r\n */\r\nexport interface ContentSourcesRequestOptions<TIModel> extends RequestOptions<TIModel> {\r\n /** Full names of classes to get content sources for. Format for a full class name: `SchemaName:ClassName`. */\r\n classes: string[];\r\n}\r\n\r\n/**\r\n * Request type for content descriptor requests.\r\n * @public\r\n */\r\nexport interface ContentDescriptorRequestOptions<TIModel, TKeySet, TRulesetVariable = RulesetVariable>\r\n extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /**\r\n * Content display type.\r\n * @see [[DefaultContentDisplayTypes]]\r\n */\r\n displayType: string;\r\n /**\r\n * Content flags used for content customization.\r\n * @see [[ContentFlags]]\r\n */\r\n contentFlags?: number;\r\n /** Input keys for getting the content */\r\n keys: TKeySet;\r\n /** Information about the selection event that was the cause of this content request */\r\n selection?: SelectionInfo;\r\n}\r\n\r\n/**\r\n * Request type for content requests.\r\n * @public\r\n */\r\nexport interface ContentRequestOptions<TIModel, TDescriptor, TKeySet, TRulesetVariable = RulesetVariable>\r\n extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n /** Content descriptor for customizing the returned content */\r\n descriptor: TDescriptor;\r\n /** Input keys for getting the content */\r\n keys: TKeySet;\r\n /**\r\n * Flag that specifies whether value formatting should be omitted or not.\r\n * Content is returned without `displayValues` when this is set to `true`.\r\n */\r\n omitFormattedValues?: boolean;\r\n}\r\n\r\n/**\r\n * Request type for distinct values' requests.\r\n * @public\r\n */\r\nexport interface DistinctValuesRequestOptions<TIModel, TDescriptor, TKeySet, TRulesetVariable = RulesetVariable>\r\n extends Paged<RequestOptionsWithRuleset<TIModel, TRulesetVariable>> {\r\n /** Content descriptor for customizing the returned content */\r\n descriptor: TDescriptor;\r\n /** Input keys for getting the content */\r\n keys: TKeySet;\r\n /** Descriptor for a field distinct values are requested for */\r\n fieldDescriptor: FieldDescriptor;\r\n}\r\n\r\n/**\r\n * Request type for element properties requests\r\n * @public\r\n * @deprecated in 4.x. Use [[SingleElementPropertiesRequestOptions]] or [[MultiElementPropertiesRequestOptions]] directly.\r\n */\r\nexport type ElementPropertiesRequestOptions<TIModel, TParsedContent = ElementProperties> =\r\n | SingleElementPropertiesRequestOptions<TIModel>\r\n | MultiElementPropertiesRequestOptions<TIModel, TParsedContent>;\r\n\r\n/**\r\n * Request type for single element properties requests.\r\n * @public\r\n */\r\nexport interface SingleElementPropertiesRequestOptions<TIModel, TParsedContent = ElementProperties> extends RequestOptions<TIModel> {\r\n /** ID of the element to get properties for. */\r\n elementId: Id64String;\r\n\r\n /**\r\n * Content parser that creates a result item based on given content descriptor and content item. Defaults\r\n * to a parser that creates [[ElementProperties]] objects.\r\n */\r\n contentParser?: (descriptor: Descriptor, item: Item) => TParsedContent;\r\n}\r\n\r\n/**\r\n * Request type for multiple elements properties requests.\r\n * @public\r\n */\r\nexport interface MultiElementPropertiesRequestOptions<TIModel, TParsedContent = ElementProperties> extends RequestOptions<TIModel> {\r\n /**\r\n * Classes of the elements to get properties for. If [[elementClasses]] is `undefined`, all classes\r\n * are used. Classes should be specified in one of these formats: \"<schema name or alias>.<class_name>\" or\r\n * \"<schema name or alias>:<class_name>\".\r\n */\r\n elementClasses?: string[];\r\n\r\n /**\r\n * Content parser that creates a result item based on given content descriptor and content item. Defaults\r\n * to a parser that creates [[ElementProperties]] objects.\r\n */\r\n contentParser?: (descriptor: Descriptor, item: Item) => TParsedContent;\r\n\r\n /**\r\n * The properties of multiple elements are going to be retrieved and returned in batches. Depending on the batch\r\n * size load on CPU vs MEMORY load may vary, so changing this attribute allows to fine tune the performance.\r\n * Defaults to `1000`.\r\n */\r\n batchSize?: number;\r\n}\r\n\r\n/**\r\n * Request type for content instance keys' requests.\r\n * @public\r\n */\r\nexport interface ContentInstanceKeysRequestOptions<TIModel, TKeySet, TRulesetVariable = RulesetVariable>\r\n extends Paged<RequestOptionsWithRuleset<TIModel, TRulesetVariable>> {\r\n /**\r\n * Content display type.\r\n * @see [[DefaultContentDisplayTypes]]\r\n */\r\n displayType?: string;\r\n /** Input keys for getting the content. */\r\n keys: TKeySet;\r\n}\r\n\r\n/**\r\n * Request type for label requests\r\n * @public\r\n */\r\nexport interface DisplayLabelRequestOptions<TIModel, TInstanceKey> extends RequestOptions<TIModel> {\r\n /** Key of ECInstance to get label for */\r\n key: TInstanceKey;\r\n}\r\n\r\n/**\r\n * Request type for labels requests\r\n * @public\r\n */\r\nexport interface DisplayLabelsRequestOptions<TIModel, TInstanceKey> extends RequestOptions<TIModel> {\r\n /** Keys of ECInstances to get labels for */\r\n keys: TInstanceKey[];\r\n}\r\n\r\n/**\r\n * Request options used for selection scope related requests\r\n * @public\r\n */\r\nexport interface SelectionScopeRequestOptions<TIModel> extends RequestOptions<TIModel> {} // eslint-disable-line @typescript-eslint/no-empty-interface\r\n\r\n/**\r\n * Request options used for calculating selection based on given instance keys and selection scope.\r\n * @public\r\n */\r\nexport interface ComputeSelectionRequestOptions<TIModel> extends RequestOptions<TIModel> {\r\n elementIds: Id64String[];\r\n scope: SelectionScopeProps;\r\n}\r\n/** @internal */\r\nexport function isComputeSelectionRequestOptions<TIModel>(\r\n options: ComputeSelectionRequestOptions<TIModel> | SelectionScopeRequestOptions<TIModel>,\r\n): options is ComputeSelectionRequestOptions<TIModel> {\r\n return !!(options as ComputeSelectionRequestOptions<TIModel>).elementIds;\r\n}\r\n\r\n/**\r\n * Data structure for comparing a hierarchy after ruleset or ruleset variable changes.\r\n * @public\r\n */\r\nexport interface HierarchyCompareOptions<TIModel, TNodeKey, TRulesetVariable = RulesetVariable> extends RequestOptionsWithRuleset<TIModel, TRulesetVariable> {\r\n prev: {\r\n rulesetOrId?: Ruleset | string;\r\n rulesetVariables?: TRulesetVariable[];\r\n };\r\n expandedNodeKeys?: TNodeKey[];\r\n continuationToken?: {\r\n prevHierarchyNode: string;\r\n currHierarchyNode: string;\r\n };\r\n resultSetSize?: number;\r\n}\r\n\r\n/**\r\n * Paging options\r\n * @public\r\n */\r\nexport interface PageOptions {\r\n /** Inclusive start 0-based index of the page */\r\n start?: number;\r\n /** Maximum size of the page */\r\n size?: number;\r\n}\r\n\r\n/**\r\n * A wrapper type that injects [[PageOptions]] into supplied type\r\n * @public\r\n */\r\nexport type Paged<TOptions extends {}> = TOptions & {\r\n /** Optional paging parameters */\r\n paging?: PageOptions;\r\n};\r\n\r\n/**\r\n * A wrapper type that injects priority into supplied type.\r\n * @public\r\n */\r\nexport type Prioritized<TOptions extends {}> = TOptions & {\r\n /** Optional priority */\r\n priority?: number;\r\n};\r\n\r\n/**\r\n * Checks if supplied request options are for single or multiple element properties.\r\n * @internal\r\n */\r\nexport function isSingleElementPropertiesRequestOptions<TIModel, TParsedContent = any>(\r\n options: SingleElementPropertiesRequestOptions<TIModel> | MultiElementPropertiesRequestOptions<TIModel, TParsedContent>,\r\n): options is SingleElementPropertiesRequestOptions<TIModel> {\r\n return (options as SingleElementPropertiesRequestOptions<TIModel>).elementId !== undefined;\r\n}\r\n\r\n/**\r\n * A wrapper type that injects cancelEvent into supplied type.\r\n * @public\r\n */\r\nexport type WithCancelEvent<TOptions extends {}> = TOptions & {\r\n /** Event which is triggered when the request is canceled */\r\n cancelEvent?: BeEvent<() => void>;\r\n};\r\n"]}
@@ -104,7 +104,7 @@ export type ContentRpcRequestOptions = PresentationRpcRequestOptions<ContentRequ
104
104
  * Data structure for single element properties RPC request options.
105
105
  * @public
106
106
  */
107
- export type SingleElementPropertiesRpcRequestOptions = PresentationRpcRequestOptions<SingleElementPropertiesRequestOptions<never>>;
107
+ export type SingleElementPropertiesRpcRequestOptions = PresentationRpcRequestOptions<Omit<SingleElementPropertiesRequestOptions<never, never>, "contentParser">>;
108
108
  /**
109
109
  * Data structure for distinct values' request options.
110
110
  * @public