@itwin/presentation-shared 2.0.0-alpha.1 → 2.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +296 -1
- package/README.md +27 -9
- package/lib/cjs/presentation-shared.d.ts +18 -10
- package/lib/cjs/presentation-shared.d.ts.map +1 -1
- package/lib/cjs/presentation-shared.js +11 -6
- package/lib/cjs/presentation-shared.js.map +1 -1
- package/lib/cjs/shared/ConcatenatedValue.d.ts +1 -1
- package/lib/cjs/shared/ConcatenatedValue.d.ts.map +1 -1
- package/lib/cjs/shared/ECSqlCore.d.ts +7 -2
- package/lib/cjs/shared/ECSqlCore.d.ts.map +1 -1
- package/lib/cjs/shared/Event.d.ts +20 -2
- package/lib/cjs/shared/Event.d.ts.map +1 -1
- package/lib/cjs/shared/Formatting.d.ts +1 -1
- package/lib/cjs/shared/Formatting.d.ts.map +1 -1
- package/lib/cjs/shared/Formatting.js +10 -6
- package/lib/cjs/shared/Formatting.js.map +1 -1
- package/lib/cjs/shared/InstanceLabelSelectClauseFactory.d.ts +5 -65
- package/lib/cjs/shared/InstanceLabelSelectClauseFactory.d.ts.map +1 -1
- package/lib/cjs/shared/InstanceLabelSelectClauseFactory.js +0 -136
- package/lib/cjs/shared/InstanceLabelSelectClauseFactory.js.map +1 -1
- package/lib/cjs/shared/Logging.js +2 -1
- package/lib/cjs/shared/Logging.js.map +1 -1
- package/lib/cjs/shared/MappedTypes.d.ts +3 -13
- package/lib/cjs/shared/MappedTypes.d.ts.map +1 -1
- package/lib/cjs/shared/Metadata.d.ts +225 -11
- package/lib/cjs/shared/Metadata.d.ts.map +1 -1
- package/lib/cjs/shared/Metadata.js +4 -1
- package/lib/cjs/shared/Metadata.js.map +1 -1
- package/lib/cjs/shared/Utils.d.ts +12 -1
- package/lib/cjs/shared/Utils.d.ts.map +1 -1
- package/lib/cjs/shared/Utils.js +37 -11
- package/lib/cjs/shared/Utils.js.map +1 -1
- package/lib/cjs/shared/Values.d.ts +27 -13
- package/lib/cjs/shared/Values.d.ts.map +1 -1
- package/lib/cjs/shared/Values.js +13 -51
- package/lib/cjs/shared/Values.js.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +20 -5
- package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.js +56 -25
- package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts +12 -3
- package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js +21 -6
- package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/index.d.ts +1 -1
- package/lib/cjs/shared/ecsql-snippets/index.d.ts.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/index.js +2 -1
- package/lib/cjs/shared/ecsql-snippets/index.js.map +1 -1
- package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts +17 -0
- package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js +54 -0
- package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts +39 -0
- package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js +63 -0
- package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts +12 -0
- package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js +40 -0
- package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts +198 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js +10 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts +34 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js +336 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/Utils.d.ts +7 -0
- package/lib/cjs/shared/instance-label-factory-impls/Utils.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/Utils.js +26 -0
- package/lib/cjs/shared/instance-label-factory-impls/Utils.js.map +1 -0
- package/lib/esm/presentation-shared.d.ts +18 -10
- package/lib/esm/presentation-shared.d.ts.map +1 -1
- package/lib/esm/presentation-shared.js +7 -4
- package/lib/esm/presentation-shared.js.map +1 -1
- package/lib/esm/shared/ConcatenatedValue.d.ts +1 -1
- package/lib/esm/shared/ConcatenatedValue.d.ts.map +1 -1
- package/lib/esm/shared/ECSqlCore.d.ts +7 -2
- package/lib/esm/shared/ECSqlCore.d.ts.map +1 -1
- package/lib/esm/shared/Event.d.ts +20 -2
- package/lib/esm/shared/Event.d.ts.map +1 -1
- package/lib/esm/shared/Formatting.d.ts +1 -1
- package/lib/esm/shared/Formatting.d.ts.map +1 -1
- package/lib/esm/shared/Formatting.js +10 -6
- package/lib/esm/shared/Formatting.js.map +1 -1
- package/lib/esm/shared/InstanceLabelSelectClauseFactory.d.ts +5 -65
- package/lib/esm/shared/InstanceLabelSelectClauseFactory.d.ts.map +1 -1
- package/lib/esm/shared/InstanceLabelSelectClauseFactory.js +0 -133
- package/lib/esm/shared/InstanceLabelSelectClauseFactory.js.map +1 -1
- package/lib/esm/shared/Logging.js +2 -1
- package/lib/esm/shared/Logging.js.map +1 -1
- package/lib/esm/shared/MappedTypes.d.ts +3 -13
- package/lib/esm/shared/MappedTypes.d.ts.map +1 -1
- package/lib/esm/shared/Metadata.d.ts +225 -11
- package/lib/esm/shared/Metadata.d.ts.map +1 -1
- package/lib/esm/shared/Metadata.js +4 -1
- package/lib/esm/shared/Metadata.js.map +1 -1
- package/lib/esm/shared/Utils.d.ts +12 -1
- package/lib/esm/shared/Utils.d.ts.map +1 -1
- package/lib/esm/shared/Utils.js +36 -11
- package/lib/esm/shared/Utils.js.map +1 -1
- package/lib/esm/shared/Values.d.ts +27 -13
- package/lib/esm/shared/Values.d.ts.map +1 -1
- package/lib/esm/shared/Values.js +13 -51
- package/lib/esm/shared/Values.js.map +1 -1
- package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +20 -5
- package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +1 -1
- package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.js +56 -25
- package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +1 -1
- package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts +12 -3
- package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +1 -1
- package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js +20 -6
- package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +1 -1
- package/lib/esm/shared/ecsql-snippets/index.d.ts +1 -1
- package/lib/esm/shared/ecsql-snippets/index.d.ts.map +1 -1
- package/lib/esm/shared/ecsql-snippets/index.js +1 -1
- package/lib/esm/shared/ecsql-snippets/index.js.map +1 -1
- package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts +17 -0
- package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js +51 -0
- package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts +39 -0
- package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js +60 -0
- package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts +12 -0
- package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js +37 -0
- package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts +198 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js +9 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts +34 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js +333 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/Utils.d.ts +7 -0
- package/lib/esm/shared/instance-label-factory-impls/Utils.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/Utils.js +21 -0
- package/lib/esm/shared/instance-label-factory-impls/Utils.js.map +1 -0
- package/package.json +16 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Formatting.js","sourceRoot":"","sources":["../../../src/shared/Formatting.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Formatting.js","sourceRoot":"","sources":["../../../src/shared/Formatting.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAW9C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAG7C;IACC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,iBAAiB,CAAC,SAAS,CAAC;QACjC,KAAK,EAAE,KAAK;QACZ,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5B,yCAAyC;YACzC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACzC,CAAC;YACD,sFAAsF;YACtF,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,UAAU,GAAG,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;IACjH,OAAO,KAAK,WAAW,KAA0B;QAC/C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBACb,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,MAAM,CACJ,OAAO,KAAK,CAAC,KAAK,KAAK,WAAW;YAChC,OAAO,KAAK,CAAC,KAAK,KAAK,SAAS;YAChC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAC/B,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAClC,CAAC;QACF,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA0B;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA0B;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA0B;IACtD,SAAS,OAAO,CAAC,YAAoC;QACnD,OAAO,OAAO,YAAY,KAAK,QAAQ;YACrC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAChC,CAAC,CAAC,OAAO,YAAY,KAAK,QAAQ;gBAChC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC;gBACxB,CAAC,CAAC,YAAY,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA0B;IACvD,SAAS,eAAe,CAAC,CAAS;QAChC,OAAO,sBAAsB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAE,CAAC;IAC/D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IACrH,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAClF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ConcatenatedValue } from "./ConcatenatedValue.js";
|
|
2
|
-
import { TypedValueSelectClauseProps } from "./ecsql-snippets/ECSqlValueSelectorSnippets.js";
|
|
3
|
-
import {
|
|
1
|
+
import type { ConcatenatedValue } from "./ConcatenatedValue.js";
|
|
2
|
+
import type { TypedValueSelectClauseProps } from "./ecsql-snippets/ECSqlValueSelectorSnippets.js";
|
|
3
|
+
import type { EC } from "./Metadata.js";
|
|
4
4
|
/**
|
|
5
5
|
* Props for `IInstanceLabelSelectClauseFactory.createSelectClause`.
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
|
-
interface CreateInstanceLabelSelectClauseProps {
|
|
8
|
+
export interface CreateInstanceLabelSelectClauseProps {
|
|
9
9
|
/**
|
|
10
10
|
* Alias of an ECSQL class referring to the target instance whose label should be selected.
|
|
11
11
|
*
|
|
@@ -26,7 +26,7 @@ interface CreateInstanceLabelSelectClauseProps {
|
|
|
26
26
|
* implementations may be able to create a more efficient select clause (e.g. drop some pieces of clause
|
|
27
27
|
* that don't apply for given class).
|
|
28
28
|
*/
|
|
29
|
-
className?:
|
|
29
|
+
className?: EC.FullClassName;
|
|
30
30
|
/**
|
|
31
31
|
* An optional function for concatenating multiple `TypedValueSelectClauseProps`. Selectors' concatenation
|
|
32
32
|
* is used when a label consists of multiple pieces, e.g.:
|
|
@@ -70,64 +70,4 @@ export interface IInstanceLabelSelectClauseFactory {
|
|
|
70
70
|
* @public
|
|
71
71
|
*/
|
|
72
72
|
export declare function parseInstanceLabel(value: string | undefined): ConcatenatedValue | string;
|
|
73
|
-
/**
|
|
74
|
-
* Creates a label select clause in a format `Class label [base36(briefcase id)-base36(local id)]`, where
|
|
75
|
-
* local and briefcase IDs are calculated based on ECInstance ID:
|
|
76
|
-
* - `{briefcase id} = ECInstanceId >> 40`
|
|
77
|
-
* - `{local id} = ECInstanceId & (1 << 40 - 1)`
|
|
78
|
-
*
|
|
79
|
-
* @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
|
|
80
|
-
* @public
|
|
81
|
-
*/
|
|
82
|
-
export declare function createDefaultInstanceLabelSelectClauseFactory(): IInstanceLabelSelectClauseFactory;
|
|
83
|
-
/**
|
|
84
|
-
* An association of a class and an instance label select clause factory method.
|
|
85
|
-
* @public
|
|
86
|
-
*/
|
|
87
|
-
interface ClassBasedLabelSelectClause {
|
|
88
|
-
/** Full class name */
|
|
89
|
-
className: string;
|
|
90
|
-
/** A factory method to create an instance label select clause */
|
|
91
|
-
clause: (props: CreateInstanceLabelSelectClauseProps) => Promise<string>;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Props for `createClassBasedInstanceLabelSelectClauseFactory`.
|
|
95
|
-
* @public
|
|
96
|
-
*/
|
|
97
|
-
interface ClassBasedInstanceLabelSelectClauseFactoryProps {
|
|
98
|
-
/** Access to ECClass hierarchy in the iModel. */
|
|
99
|
-
classHierarchyInspector: ECClassHierarchyInspector;
|
|
100
|
-
/**
|
|
101
|
-
* A prioritized list of instance label selectors associated to classes they should be applied to.
|
|
102
|
-
*
|
|
103
|
-
* Because the list may contain clauses for classes in the same class hierarchy, and the factory
|
|
104
|
-
* handles them in given order, the order of clauses should be from the most specific class to the
|
|
105
|
-
* most general one.
|
|
106
|
-
*/
|
|
107
|
-
clauses: ClassBasedLabelSelectClause[];
|
|
108
|
-
/**
|
|
109
|
-
* A fallback label clause factory for when class-based factory doesn't produce a label.
|
|
110
|
-
* Defaults to the result of `createDefaultInstanceLabelSelectClauseFactory`.
|
|
111
|
-
*/
|
|
112
|
-
defaultClauseFactory?: IInstanceLabelSelectClauseFactory;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Creates an instance label select clause based on its class.
|
|
116
|
-
* @public
|
|
117
|
-
*/
|
|
118
|
-
export declare function createClassBasedInstanceLabelSelectClauseFactory(props: ClassBasedInstanceLabelSelectClauseFactoryProps): IInstanceLabelSelectClauseFactory;
|
|
119
|
-
/**
|
|
120
|
-
* Props for `createBisInstanceLabelSelectClauseFactory`.
|
|
121
|
-
* @public
|
|
122
|
-
*/
|
|
123
|
-
interface BisInstanceLabelSelectClauseFactoryProps {
|
|
124
|
-
classHierarchyInspector: ECClassHierarchyInspector;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Creates a label select clause according to BIS instance label rules.
|
|
128
|
-
* @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
|
|
129
|
-
* @public
|
|
130
|
-
*/
|
|
131
|
-
export declare function createBisInstanceLabelSelectClauseFactory(props: BisInstanceLabelSelectClauseFactoryProps): IInstanceLabelSelectClauseFactory;
|
|
132
|
-
export {};
|
|
133
73
|
//# sourceMappingURL=InstanceLabelSelectClauseFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceLabelSelectClauseFactory.d.ts","sourceRoot":"","sources":["../../../src/shared/InstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"InstanceLabelSelectClauseFactory.d.ts","sourceRoot":"","sources":["../../../src/shared/InstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAClG,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAExC;;;GAGG;AACH,MAAM,WAAW,oCAAoC;IACnD;;;;;;;;;;OAUG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC;IAE7B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACtG;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iCAAiC;IAChD,qDAAqD;IACrD,kBAAkB,CAAC,KAAK,EAAE,oCAAoC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,MAAM,CAaxF"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { createConcatenatedValueJsonSelector, createRawPropertyValueSelector, } from "./ecsql-snippets/ECSqlValueSelectorSnippets.js";
|
|
6
5
|
/**
|
|
7
6
|
* Parses an instance label from query result into a string or a `ConcatenatedValue`. The latter type of result
|
|
8
7
|
* is expected when label selector is created using `IInstanceLabelSelectClauseFactory.createSelectClause` with
|
|
@@ -25,136 +24,4 @@ export function parseInstanceLabel(value) {
|
|
|
25
24
|
// not a JSON object/array
|
|
26
25
|
return value;
|
|
27
26
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Creates a label select clause in a format `Class label [base36(briefcase id)-base36(local id)]`, where
|
|
30
|
-
* local and briefcase IDs are calculated based on ECInstance ID:
|
|
31
|
-
* - `{briefcase id} = ECInstanceId >> 40`
|
|
32
|
-
* - `{local id} = ECInstanceId & (1 << 40 - 1)`
|
|
33
|
-
*
|
|
34
|
-
* @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
|
|
35
|
-
* @public
|
|
36
|
-
*/
|
|
37
|
-
export function createDefaultInstanceLabelSelectClauseFactory() {
|
|
38
|
-
return {
|
|
39
|
-
async createSelectClause(props) {
|
|
40
|
-
return `(
|
|
41
|
-
SELECT
|
|
42
|
-
${concatenate(props, [
|
|
43
|
-
{
|
|
44
|
-
selector: `COALESCE(
|
|
45
|
-
${createRawPropertyValueSelector("c", "DisplayLabel")},
|
|
46
|
-
${createRawPropertyValueSelector("c", "Name")}
|
|
47
|
-
)`,
|
|
48
|
-
},
|
|
49
|
-
...createECInstanceIdSuffixSelectors(props.classAlias),
|
|
50
|
-
])}
|
|
51
|
-
FROM [meta].[ECClassDef] AS [c]
|
|
52
|
-
WHERE [c].[ECInstanceId] = ${createRawPropertyValueSelector(props.classAlias, "ECClassId")}
|
|
53
|
-
)`;
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Creates an instance label select clause based on its class.
|
|
59
|
-
* @public
|
|
60
|
-
*/
|
|
61
|
-
export function createClassBasedInstanceLabelSelectClauseFactory(props) {
|
|
62
|
-
const { classHierarchyInspector, clauses: labelClausesByClass } = props;
|
|
63
|
-
const defaultClauseFactory = props.defaultClauseFactory ?? createDefaultInstanceLabelSelectClauseFactory();
|
|
64
|
-
async function getLabelClausesForClass(queryClassName) {
|
|
65
|
-
const matchingLabelClauses = await Promise.all(labelClausesByClass.map(async (entry) => {
|
|
66
|
-
if (await classHierarchyInspector.classDerivesFrom(entry.className, queryClassName)) {
|
|
67
|
-
// label selector is intended for a more specific class than we're selecting from - need to include it
|
|
68
|
-
// as query results (on polymorphic select) are going to include more specific class instances too
|
|
69
|
-
return entry;
|
|
70
|
-
}
|
|
71
|
-
if (await classHierarchyInspector.classDerivesFrom(queryClassName, entry.className)) {
|
|
72
|
-
// label selector is intended for a base class of what query is selecting - need to include it as
|
|
73
|
-
// we want base class label selectors to apply to subclass instances
|
|
74
|
-
return entry;
|
|
75
|
-
}
|
|
76
|
-
return undefined;
|
|
77
|
-
}));
|
|
78
|
-
function filterNotUndefined(x) {
|
|
79
|
-
return !!x;
|
|
80
|
-
}
|
|
81
|
-
return matchingLabelClauses.filter(filterNotUndefined);
|
|
82
|
-
}
|
|
83
|
-
return {
|
|
84
|
-
async createSelectClause(clauseProps) {
|
|
85
|
-
if (labelClausesByClass.length === 0) {
|
|
86
|
-
return defaultClauseFactory.createSelectClause(clauseProps);
|
|
87
|
-
}
|
|
88
|
-
const labelClausePromises = clauseProps.className ? await getLabelClausesForClass(clauseProps.className) : labelClausesByClass;
|
|
89
|
-
if (labelClausePromises.length === 0) {
|
|
90
|
-
return defaultClauseFactory.createSelectClause(clauseProps);
|
|
91
|
-
}
|
|
92
|
-
const labelClauses = await Promise.all(labelClausePromises.map(async ({ className, clause }) => ({
|
|
93
|
-
className,
|
|
94
|
-
clause: await clause(clauseProps),
|
|
95
|
-
})));
|
|
96
|
-
return `COALESCE(
|
|
97
|
-
${labelClauses
|
|
98
|
-
.map(({ className, clause }) => `
|
|
99
|
-
IIF(
|
|
100
|
-
${createRawPropertyValueSelector(clauseProps.classAlias, "ECClassId")} IS (${className}),
|
|
101
|
-
${clause.trim()},
|
|
102
|
-
NULL
|
|
103
|
-
)
|
|
104
|
-
`.trim())
|
|
105
|
-
.join(", ")},
|
|
106
|
-
${await defaultClauseFactory.createSelectClause(clauseProps)}
|
|
107
|
-
)`;
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Creates a label select clause according to BIS instance label rules.
|
|
113
|
-
* @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
|
|
114
|
-
* @public
|
|
115
|
-
*/
|
|
116
|
-
export function createBisInstanceLabelSelectClauseFactory(props) {
|
|
117
|
-
const clauses = [];
|
|
118
|
-
const factory = createClassBasedInstanceLabelSelectClauseFactory({
|
|
119
|
-
classHierarchyInspector: props.classHierarchyInspector,
|
|
120
|
-
clauses,
|
|
121
|
-
});
|
|
122
|
-
clauses.push({
|
|
123
|
-
className: "BisCore.GeometricElement",
|
|
124
|
-
clause: async ({ classAlias, ...rest }) => `
|
|
125
|
-
COALESCE(
|
|
126
|
-
${createRawPropertyValueSelector(classAlias, "CodeValue")},
|
|
127
|
-
${concatenate(rest, [{ selector: createRawPropertyValueSelector(classAlias, "UserLabel") }, ...createECInstanceIdSuffixSelectors(classAlias)], `${createRawPropertyValueSelector(classAlias, "UserLabel")} IS NOT NULL`)}
|
|
128
|
-
)
|
|
129
|
-
`,
|
|
130
|
-
}, {
|
|
131
|
-
className: "BisCore.Element",
|
|
132
|
-
clause: async ({ classAlias }) => `
|
|
133
|
-
COALESCE(
|
|
134
|
-
${createRawPropertyValueSelector(classAlias, "UserLabel")},
|
|
135
|
-
${createRawPropertyValueSelector(classAlias, "CodeValue")}
|
|
136
|
-
)
|
|
137
|
-
`,
|
|
138
|
-
}, {
|
|
139
|
-
className: "BisCore.Model",
|
|
140
|
-
clause: async ({ classAlias, ...rest }) => `(
|
|
141
|
-
SELECT ${await factory.createSelectClause({ ...rest, classAlias: "e", className: "BisCore.Element" })}
|
|
142
|
-
FROM [bis].[Element] AS [e]
|
|
143
|
-
WHERE [e].[ECInstanceId] = ${createRawPropertyValueSelector(classAlias, "ModeledElement", "Id")}
|
|
144
|
-
)`,
|
|
145
|
-
});
|
|
146
|
-
return factory;
|
|
147
|
-
}
|
|
148
|
-
function createECInstanceIdSuffixSelectors(classAlias) {
|
|
149
|
-
return [
|
|
150
|
-
{ value: ` [`, type: "String" },
|
|
151
|
-
{ selector: `CAST(base36(${createRawPropertyValueSelector(classAlias, "ECInstanceId")} >> 40) AS TEXT)` },
|
|
152
|
-
{ value: `-`, type: "String" },
|
|
153
|
-
{ selector: `CAST(base36(${createRawPropertyValueSelector(classAlias, "ECInstanceId")} & ((1 << 40) - 1)) AS TEXT)` },
|
|
154
|
-
{ value: `]`, type: "String" },
|
|
155
|
-
];
|
|
156
|
-
}
|
|
157
|
-
function concatenate(props, selectors, checkSelector) {
|
|
158
|
-
return (props.selectorsConcatenator ?? createConcatenatedValueJsonSelector)(selectors, checkSelector);
|
|
159
|
-
}
|
|
160
27
|
//# sourceMappingURL=InstanceLabelSelectClauseFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstanceLabelSelectClauseFactory.js","sourceRoot":"","sources":["../../../src/shared/InstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;
|
|
1
|
+
{"version":3,"file":"InstanceLabelSelectClauseFactory.js","sourceRoot":"","sources":["../../../src/shared/InstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAuEhG;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrG,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,0BAA0B;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* A logger implementation that does nothing.
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
|
-
/*
|
|
9
|
+
/* v8 ignore start */
|
|
10
10
|
export const NOOP_LOGGER = {
|
|
11
11
|
isEnabled: () => false,
|
|
12
12
|
logError: () => { },
|
|
@@ -14,4 +14,5 @@ export const NOOP_LOGGER = {
|
|
|
14
14
|
logInfo: () => { },
|
|
15
15
|
logTrace: () => { },
|
|
16
16
|
};
|
|
17
|
+
/* v8 ignore stop */
|
|
17
18
|
//# sourceMappingURL=Logging.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logging.js","sourceRoot":"","sources":["../../../src/shared/Logging.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AA0BhG;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"Logging.js","sourceRoot":"","sources":["../../../src/shared/Logging.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AA0BhG;;;GAGG;AACH,qBAAqB;AACrB,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;IACtB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;IAClB,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;IACpB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;IACjB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;CACnB,CAAC;AACF,oBAAoB"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Event } from "./Event.js";
|
|
2
1
|
/**
|
|
3
2
|
* An utility `Omit` type which works with union types.
|
|
4
3
|
* @public
|
|
@@ -10,18 +9,9 @@ export type OmitOverUnion<T, K extends PropertyKey> = T extends T ? Omit<T, K> :
|
|
|
10
9
|
*/
|
|
11
10
|
export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
|
|
12
11
|
/**
|
|
13
|
-
* Returns type of
|
|
12
|
+
* Returns type of `TFunc` parameter, when `TFunc` accepts exactly one object argument
|
|
13
|
+
* that can also be `undefined` / optional.
|
|
14
14
|
* @public
|
|
15
15
|
*/
|
|
16
|
-
export type Props<TFunc extends (...args: any[]) => any> = Parameters<TFunc>[
|
|
17
|
-
/**
|
|
18
|
-
* Returns type of the given `Event` listener.
|
|
19
|
-
* @public
|
|
20
|
-
*/
|
|
21
|
-
export type EventListener<TEvent extends Event> = TEvent extends Event<infer TListener> ? TListener : never;
|
|
22
|
-
/**
|
|
23
|
-
* Returns type of the given `Event` arguments.
|
|
24
|
-
* @public
|
|
25
|
-
*/
|
|
26
|
-
export type EventArgs<TEvent extends Event> = Props<EventListener<TEvent>>;
|
|
16
|
+
export type Props<TFunc extends (...args: any[]) => any> = Parameters<TFunc> extends [infer TProps] ? Exclude<TProps, undefined> extends object ? TProps : never : Parameters<TFunc> extends [(infer TProps)?] ? Exclude<TProps, undefined> extends object ? TProps | undefined : never : never;
|
|
27
17
|
//# sourceMappingURL=MappedTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MappedTypes.d.ts","sourceRoot":"","sources":["../../../src/shared/MappedTypes.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"MappedTypes.d.ts","sourceRoot":"","sources":["../../../src/shared/MappedTypes.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAEvF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI,SAAS,SAAS,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAC7G,WAAW,GACX,KAAK,CAAC;AAEV;;;;GAIG;AACH,MAAM,MAAM,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IACrD,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,GACpC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,GACvC,MAAM,GACN,KAAK,GACP,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,MAAM,GACvC,MAAM,GAAG,SAAS,GAClB,KAAK,GACP,KAAK,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ECSqlBinding } from "./ECSqlCore.js";
|
|
1
2
|
/**
|
|
2
3
|
* An interface for an object that knows how to get an ECSchema from an iModel.
|
|
3
4
|
*
|
|
@@ -13,7 +14,7 @@ export interface ECSchemaProvider {
|
|
|
13
14
|
* @public
|
|
14
15
|
*/
|
|
15
16
|
export interface ECClassHierarchyInspector {
|
|
16
|
-
classDerivesFrom(derivedClassFullName:
|
|
17
|
+
classDerivesFrom(derivedClassFullName: EC.FullClassName, candidateBaseClassFullName: EC.FullClassName): Promise<boolean> | boolean;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
20
|
* Creates a new `ECClassHierarchyInspector` that caches results of `derivesFrom` calls.
|
|
@@ -31,6 +32,22 @@ export declare function createCachingECClassHierarchyInspector(props: {
|
|
|
31
32
|
* @see `ECSchemaProvider`
|
|
32
33
|
*/
|
|
33
34
|
export declare namespace EC {
|
|
35
|
+
type FullClassNameDotNotation = `${string}.${string}`;
|
|
36
|
+
type FullClassNameColonNotation = `${string}:${string}`;
|
|
37
|
+
type FullClassName = FullClassNameColonNotation | FullClassNameDotNotation;
|
|
38
|
+
/**
|
|
39
|
+
* Schema version components.
|
|
40
|
+
* Note: comparison order is write > read > minor (not left-to-right).
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
interface SchemaVersion {
|
|
44
|
+
/** First component in "read.write.minor" string format. */
|
|
45
|
+
read: number;
|
|
46
|
+
/** Second component in "read.write.minor" string format (most significant for compatibility). */
|
|
47
|
+
write: number;
|
|
48
|
+
/** Third component in "read.write.minor" string format. */
|
|
49
|
+
minor: number;
|
|
50
|
+
}
|
|
34
51
|
/**
|
|
35
52
|
* Represents an ECSchema that contains classes, relationships, etc.
|
|
36
53
|
* @see https://www.itwinjs.org/reference/ecschema-metadata/metadata/schema/
|
|
@@ -38,6 +55,8 @@ export declare namespace EC {
|
|
|
38
55
|
*/
|
|
39
56
|
interface Schema {
|
|
40
57
|
name: string;
|
|
58
|
+
/** The schema version. Format: `"read.write.minor"`, comparison order: write > read > minor. */
|
|
59
|
+
version: SchemaVersion;
|
|
41
60
|
getClass(name: string): Promise<Class | undefined>;
|
|
42
61
|
getCustomAttributes(): Promise<CustomAttributeSet>;
|
|
43
62
|
}
|
|
@@ -48,9 +67,10 @@ export declare namespace EC {
|
|
|
48
67
|
*/
|
|
49
68
|
interface SchemaItem {
|
|
50
69
|
schema: Schema;
|
|
51
|
-
fullName:
|
|
70
|
+
fullName: FullClassName;
|
|
52
71
|
name: string;
|
|
53
72
|
label?: string;
|
|
73
|
+
description?: string;
|
|
54
74
|
}
|
|
55
75
|
/**
|
|
56
76
|
* Represents an ECClass.
|
|
@@ -63,6 +83,8 @@ export declare namespace EC {
|
|
|
63
83
|
is(other: Class): Promise<boolean>;
|
|
64
84
|
getProperty(name: string): Promise<Property | undefined>;
|
|
65
85
|
getProperties(): Promise<Array<Property>>;
|
|
86
|
+
/** Gets only the properties defined directly on this class, excluding those inherited from base classes. */
|
|
87
|
+
getOwnProperties(): Promise<Array<Property>>;
|
|
66
88
|
isEntityClass(): this is EntityClass;
|
|
67
89
|
isRelationshipClass(): this is RelationshipClass;
|
|
68
90
|
isStructClass(): this is StructClass;
|
|
@@ -94,6 +116,15 @@ export declare namespace EC {
|
|
|
94
116
|
* @public
|
|
95
117
|
*/
|
|
96
118
|
type KindOfQuantity = SchemaItem;
|
|
119
|
+
/**
|
|
120
|
+
* Represents a property category used to group related properties.
|
|
121
|
+
* @see https://www.itwinjs.org/reference/ecschema-metadata/metadata/propertycategory/
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
interface PropertyCategory extends SchemaItem {
|
|
125
|
+
/** Determines the display order of the category relative to other categories. Higher priority categories are displayed first. */
|
|
126
|
+
priority: number;
|
|
127
|
+
}
|
|
97
128
|
/**
|
|
98
129
|
* Represents a relationship constraint multiplicity.
|
|
99
130
|
* @see https://www.itwinjs.org/reference/ecschema-metadata/metadata/relationshipmultiplicity/
|
|
@@ -109,7 +140,7 @@ export declare namespace EC {
|
|
|
109
140
|
* @public
|
|
110
141
|
*/
|
|
111
142
|
interface RelationshipConstraint {
|
|
112
|
-
multiplicity
|
|
143
|
+
multiplicity: RelationshipConstraintMultiplicity;
|
|
113
144
|
polymorphic: boolean;
|
|
114
145
|
abstractConstraint: Promise<EntityClass | Mixin | RelationshipClass | undefined>;
|
|
115
146
|
}
|
|
@@ -154,6 +185,7 @@ export declare namespace EC {
|
|
|
154
185
|
class: Class;
|
|
155
186
|
label?: string;
|
|
156
187
|
kindOfQuantity: Promise<KindOfQuantity | undefined>;
|
|
188
|
+
category: Promise<PropertyCategory | undefined>;
|
|
157
189
|
isArray(): this is ArrayProperty;
|
|
158
190
|
isStruct(): this is StructProperty;
|
|
159
191
|
isPrimitive(): this is PrimitiveProperty;
|
|
@@ -241,8 +273,8 @@ export declare namespace EC {
|
|
|
241
273
|
* @public
|
|
242
274
|
*/
|
|
243
275
|
interface CustomAttributeSet {
|
|
244
|
-
[Symbol.iterator]: () => IterableIterator<[
|
|
245
|
-
get(className:
|
|
276
|
+
[Symbol.iterator]: () => IterableIterator<[FullClassName, CustomAttribute]>;
|
|
277
|
+
get(className: FullClassName): CustomAttribute | undefined;
|
|
246
278
|
}
|
|
247
279
|
/**
|
|
248
280
|
* Defines a custom attribute that may be applied to a class or property.
|
|
@@ -250,32 +282,213 @@ export declare namespace EC {
|
|
|
250
282
|
* @public
|
|
251
283
|
*/
|
|
252
284
|
interface CustomAttribute {
|
|
253
|
-
className:
|
|
285
|
+
className: FullClassName;
|
|
254
286
|
[propName: string]: any;
|
|
255
287
|
}
|
|
256
288
|
}
|
|
257
289
|
/**
|
|
258
|
-
*
|
|
290
|
+
* A union of all primitive value types supported by the Presentation packages.
|
|
291
|
+
*
|
|
292
|
+
* Compared to `EC.PrimitiveType`:
|
|
293
|
+
* - Adds `"Id"` to support id properties such as `ECInstanceId` or `ECClassId`, which have no equivalent in `EC.PrimitiveType`.
|
|
294
|
+
* - Excludes `"Binary"` and `"IGeometry"`, as properties of those types are not supported by the Presentation packages.
|
|
295
|
+
*
|
|
259
296
|
* @public
|
|
260
297
|
*/
|
|
261
298
|
export type PrimitiveValueType = "Id" | Exclude<EC.PrimitiveType, "Binary" | "IGeometry">;
|
|
299
|
+
/**
|
|
300
|
+
* A type descriptor for a value's shape.
|
|
301
|
+
*
|
|
302
|
+
* - `PrimitiveValueDescriptor`: a scalar primitive.
|
|
303
|
+
* - `StructValueDescriptor`: a named struct with typed members.
|
|
304
|
+
* - `ArrayValueDescriptor`: an ordered collection of a single element type.
|
|
305
|
+
* - `NavigationValueDescriptor`: a reference to another EC instance, carrying the reference's target class name.
|
|
306
|
+
*
|
|
307
|
+
* @public
|
|
308
|
+
*/
|
|
309
|
+
export type ValueDescriptor = PrimitiveValueDescriptor | StructValueDescriptor | ArrayValueDescriptor | NavigationValueDescriptor;
|
|
310
|
+
/**
|
|
311
|
+
* Describes a scalar primitive value.
|
|
312
|
+
*
|
|
313
|
+
* When the value is backed by an enumeration (only possible for `String`-, `Integer`- and
|
|
314
|
+
* `Long`-typed values), `enumeration` carries the enumeration's metadata (its declared enumerators
|
|
315
|
+
* and their labels) so consumers can map raw values to display labels without re-reading schema. The
|
|
316
|
+
* `type` discriminates the enumerator value type (`String` → `string`, `Integer | Long` → `number`).
|
|
317
|
+
*
|
|
318
|
+
* @public
|
|
319
|
+
*/
|
|
320
|
+
export type PrimitiveValueDescriptor = {
|
|
321
|
+
kind: "primitive";
|
|
322
|
+
} & ({
|
|
323
|
+
/** The primitive value type. */
|
|
324
|
+
type: Extract<PrimitiveValueType, "String">;
|
|
325
|
+
kindOfQuantity?: undefined;
|
|
326
|
+
/** Metadata of the enumeration backing this value, when it is enumeration-backed. */
|
|
327
|
+
enumeration?: EnumerationInfo<string>;
|
|
328
|
+
} | {
|
|
329
|
+
/** The primitive value type. */
|
|
330
|
+
type: Extract<PrimitiveValueType, "Integer" | "Long">;
|
|
331
|
+
/**
|
|
332
|
+
* Full name of the KindOfQuantity associated with this property (e.g., `"Units.LENGTH"`).
|
|
333
|
+
* Determines how the value should be formatted and which units to display.
|
|
334
|
+
*/
|
|
335
|
+
kindOfQuantity?: string;
|
|
336
|
+
/** Metadata of the enumeration backing this value, when it is enumeration-backed. */
|
|
337
|
+
enumeration?: EnumerationInfo<number>;
|
|
338
|
+
} | {
|
|
339
|
+
/** The primitive value type. */
|
|
340
|
+
type: Extract<PrimitiveValueType, "Double">;
|
|
341
|
+
/**
|
|
342
|
+
* Full name of the KindOfQuantity associated with this property (e.g., `"Units.LENGTH"`).
|
|
343
|
+
* Determines how the value should be formatted and which units to display.
|
|
344
|
+
*/
|
|
345
|
+
kindOfQuantity?: string;
|
|
346
|
+
enumeration?: undefined;
|
|
347
|
+
} | {
|
|
348
|
+
/** The primitive value type. */
|
|
349
|
+
type: Exclude<PrimitiveValueType, "Integer" | "Long" | "Double" | "String">;
|
|
350
|
+
kindOfQuantity?: undefined;
|
|
351
|
+
enumeration?: undefined;
|
|
352
|
+
});
|
|
353
|
+
/**
|
|
354
|
+
* Metadata about the enumeration backing a primitive value. Preserved on a
|
|
355
|
+
* `PrimitiveValueDescriptor` so consumers can map raw enum values to their display labels
|
|
356
|
+
* without re-reading schema.
|
|
357
|
+
* @public
|
|
358
|
+
*/
|
|
359
|
+
interface EnumerationInfo<TValue extends string | number = string | number> {
|
|
360
|
+
/** Name of the enumeration type (e.g., `"MySchema.MyEnum"` for schema-backed enums). */
|
|
361
|
+
name: string;
|
|
362
|
+
/** When `true`, values are restricted to the declared enumerators. */
|
|
363
|
+
isStrict: boolean;
|
|
364
|
+
/** The declared enumerators. */
|
|
365
|
+
enumerators: EnumeratorInfo<TValue>[];
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* A single enumerator of an `EnumerationInfo`.
|
|
369
|
+
* @public
|
|
370
|
+
*/
|
|
371
|
+
interface EnumeratorInfo<TValue extends string | number = string | number> {
|
|
372
|
+
/** Display label for the enumerator. */
|
|
373
|
+
label: string;
|
|
374
|
+
/** The enumerator's raw value (string- or integer-backed, per the owning descriptor's `type`). */
|
|
375
|
+
value: TValue;
|
|
376
|
+
/** Optional description. */
|
|
377
|
+
description?: string;
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Describes a named struct value with typed members.
|
|
381
|
+
* @public
|
|
382
|
+
*/
|
|
383
|
+
export interface StructValueDescriptor {
|
|
384
|
+
kind: "struct";
|
|
385
|
+
/** The list of named, typed members that make up this struct. */
|
|
386
|
+
members: StructMember[];
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Describes a single member of a `StructValueDescriptor`.
|
|
390
|
+
* @public
|
|
391
|
+
*/
|
|
392
|
+
interface StructMember {
|
|
393
|
+
/** The member's property name. */
|
|
394
|
+
name: string;
|
|
395
|
+
/** A human-readable label for display purposes. */
|
|
396
|
+
label: string;
|
|
397
|
+
/** The type descriptor for this member's value. */
|
|
398
|
+
type: ValueDescriptor;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Describes an ordered collection of values of a single element type.
|
|
402
|
+
* @public
|
|
403
|
+
*/
|
|
404
|
+
export interface ArrayValueDescriptor {
|
|
405
|
+
kind: "array";
|
|
406
|
+
/** The type descriptor for each element in the array. */
|
|
407
|
+
elementType: ValueDescriptor;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Describes a navigation property value — a reference to another EC instance.
|
|
411
|
+
* The runtime value is the referenced instance's id (`Id64String`); this descriptor
|
|
412
|
+
* additionally carries the reference's target class name as metadata, so consumers can
|
|
413
|
+
* build selects against the referenced instance (e.g. to resolve its label).
|
|
414
|
+
* @public
|
|
415
|
+
*/
|
|
416
|
+
export interface NavigationValueDescriptor {
|
|
417
|
+
kind: "navigation";
|
|
418
|
+
/**
|
|
419
|
+
* Full name of the relationship's target-constraint class the navigation points at
|
|
420
|
+
* (the referenced instance's class, or its base constraint class).
|
|
421
|
+
*/
|
|
422
|
+
targetClassName: EC.FullClassName;
|
|
423
|
+
}
|
|
262
424
|
/**
|
|
263
425
|
* Describes a single step through an ECRelationship from source ECClass to target ECClass.
|
|
264
426
|
* @public
|
|
265
427
|
*/
|
|
266
428
|
export interface RelationshipPathStep {
|
|
267
429
|
/** Full name of the source ECClass */
|
|
268
|
-
sourceClassName:
|
|
430
|
+
sourceClassName: EC.FullClassName;
|
|
269
431
|
/** Full name of the target ECClass */
|
|
270
|
-
targetClassName:
|
|
432
|
+
targetClassName: EC.FullClassName;
|
|
271
433
|
/** Full name of the ECRelationshipClass */
|
|
272
|
-
relationshipName:
|
|
434
|
+
relationshipName: EC.FullClassName;
|
|
273
435
|
/**
|
|
274
436
|
* Indicates that the relationship direction be reversed. This should be set to `true` when step direction
|
|
275
437
|
* doesn't match relationship direction, e.g. relationship is from source `A` to target `B` and the step
|
|
276
438
|
* describes a step from `B` to `A`.
|
|
277
439
|
*/
|
|
278
440
|
relationshipReverse?: boolean;
|
|
441
|
+
/**
|
|
442
|
+
* Optional filter applied to instances at this step.
|
|
443
|
+
* Only instances matching the filter will be included when traversing this relationship.
|
|
444
|
+
* The filter expression can reference target class properties and, for non-navigation-property
|
|
445
|
+
* relationships (link table relationships), also relationship class properties.
|
|
446
|
+
* Referencing relationship class properties via `relationshipAlias` is not supported for
|
|
447
|
+
* navigation-property steps because the relationship table is not part of the query in that case.
|
|
448
|
+
*/
|
|
449
|
+
instanceFilter?: {
|
|
450
|
+
/**
|
|
451
|
+
* ECSQL WHERE clause expression (without the WHERE keyword).
|
|
452
|
+
*
|
|
453
|
+
* Use `targetAlias` (defaults to `"this"`) followed by a dot to reference properties
|
|
454
|
+
* of the filtered class, and `relationshipAlias` (defaults to `"rel"`) to reference
|
|
455
|
+
* properties on the relationship class. At query generation time, the pipeline replaces
|
|
456
|
+
* all `{alias}.` occurrences (in both their bare `{alias}.` and bracket-quoted `[{alias}].`
|
|
457
|
+
* forms) with the actual query aliases.
|
|
458
|
+
*
|
|
459
|
+
* @example
|
|
460
|
+
* ```
|
|
461
|
+
* expression: "this.Area > :minArea AND rel.Priority > 0"
|
|
462
|
+
* ```
|
|
463
|
+
*/
|
|
464
|
+
expression: string;
|
|
465
|
+
/**
|
|
466
|
+
* The placeholder used in `expression` to reference the target class (`targetClassName`).
|
|
467
|
+
* Every occurrence of `{targetAlias}.` in the expression, whether bare (`{targetAlias}.`)
|
|
468
|
+
* or bracket-quoted (`[{targetAlias}].`), will be replaced with the actual query alias at
|
|
469
|
+
* query generation time.
|
|
470
|
+
*
|
|
471
|
+
* @default "this"
|
|
472
|
+
*/
|
|
473
|
+
targetAlias?: string;
|
|
474
|
+
/**
|
|
475
|
+
* The placeholder used in `expression` to reference the relationship class (`relationshipName`).
|
|
476
|
+
* Every occurrence of `{relationshipAlias}.` in the expression, whether bare (`{relationshipAlias}.`)
|
|
477
|
+
* or bracket-quoted (`[{relationshipAlias}].`), will be replaced with the actual relationship alias
|
|
478
|
+
* at query generation time.
|
|
479
|
+
*
|
|
480
|
+
* Only meaningful for non-navigation-property (link table) relationships. When the step uses a
|
|
481
|
+
* navigation property, the relationship table is not part of the query, so any reference via
|
|
482
|
+
* this alias will produce invalid ECSQL.
|
|
483
|
+
*
|
|
484
|
+
* @default "rel"
|
|
485
|
+
*/
|
|
486
|
+
relationshipAlias?: string;
|
|
487
|
+
/**
|
|
488
|
+
* Bind values for the expression, keyed by parameter name.
|
|
489
|
+
*/
|
|
490
|
+
bindings?: Record<string, ECSqlBinding>;
|
|
491
|
+
};
|
|
279
492
|
}
|
|
280
493
|
/**
|
|
281
494
|
* Describes a path from source ECClass to target ECClass through multiple ECRelationships.
|
|
@@ -287,5 +500,6 @@ export type RelationshipPath<TStep extends RelationshipPathStep = RelationshipPa
|
|
|
287
500
|
* @throws Error if the schema or class is not found.
|
|
288
501
|
* @public
|
|
289
502
|
*/
|
|
290
|
-
export declare function getClass(schemaProvider: ECSchemaProvider, fullClassName:
|
|
503
|
+
export declare function getClass(schemaProvider: ECSchemaProvider, fullClassName: EC.FullClassName): Promise<EC.Class>;
|
|
504
|
+
export {};
|
|
291
505
|
//# sourceMappingURL=Metadata.d.ts.map
|