Package Exports
- @itwin/presentation-core-interop
- @itwin/presentation-core-interop/lib/cjs/presentation-core-interop.js
- @itwin/presentation-core-interop/lib/esm/presentation-core-interop.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@itwin/presentation-core-interop) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@itwin/presentation-core-interop
Copyright © Bentley Systems, Incorporated. All rights reserved. See LICENSE.md for license terms and full copyright notice.
The @itwin/presentation-core-interop
package acts as a layer between itwinjs-core
packages and presentation
packages:
@itwin/presentation-hierarchies
@itwin/unified-selection
Having this interop layer helps us evolve both sides without affecting one another in a major way.
API
createECSqlQueryExecutor
Maps an iModel in the form of itwinjs-core
IModelDb or IModelConnection to an instance of ECSqlQueryExecutor
, used in @itwin/presentation-hierarchies
and @itwin/unified-selection
packages.
Example:
import { IModelDb } from "@itwin/core-backend";
import { createECSqlQueryExecutor } from "@itwin/presentation-core-interop";
const imodel: IModelDb = getIModelDb();
const executor = createECSqlQueryExecutor(imodel);
for await (const row of executor.createQueryReader(MY_QUERY)) {
// TODO: do something with `row`
}
createECSchemaProvider
Maps an instance of itwinjs-core
SchemaContext class to an instance of ECSchemaProvider
, used in @itwin/presentation-hierarchies
and @itwin/unified-selection
packages.
Example:
import { SchemaContext } from "@itwin/ecschema-metadata";
import { createECSchemaProvider } from "@itwin/presentation-core-interop";
const schemas = new SchemaContext();
const schemaProvider = createECSchemaProvider(schemas);
// the created schema provider may be used in `@itwin/presentation-hierarchies` or `@itwin/unified-selection` packages
createValueFormatter
Creates an instance of IPrimitiveValueFormatter
that knows how to format primitive property values using their units' information. That information is retrieved from an iModel through itwinjs-core
SchemaContext.
Example:
import { SchemaContext } from "@itwin/ecschema-metadata";
import { createValueFormatter } from "@itwin/presentation-core-interop";
const schemaContext = new SchemaContext();
const formatter = createValueFormatter({ schemaContext, unitSystem: "metric" });
const formattedValue = await formatter({ type: "Double", value: 1.234, koqName: "MySchema.LengthKindOfQuantity" });
registerTxnListeners
Registers a number of transaction listeners on either the backend TxnManager or the frontend BriefcaseTxns and calls the given onChange
function whenever there's a change in an iModel holding the transaction manager.
Example:
import { BriefcaseDb } from "@itwin/core-backend";
import { registerTxnListeners } from "@itwin/presentation-core-interop";
import { HierarchyProvider } from "@itwin/presentation-hierarchies";
// get iModel and hierarchy provider from arbitrary sources
const db: BriefcaseDb = getIModel();
const provider: HierarchyProvider = getHierarchyProvider();
// register the listeners
const unregister = registerTxnListeners(db.txns, () => {
// notify provided about the changed data
provider.notifyDataSourceChanged();
// TODO: force the components using `provider` to reload
});
// clean up on iModel close
db.onClosed.addOnce(() => unregister());
createLogger
Maps the itwinjs-core
Logger class to an ILogger
interface used by Presentation packages.
Example:
import { Logger as CoreLogger } from "@itwin/core-bentley";
import { createLogger as createPresentationLogger } from "@itwin/presentation-core-interop";
import { setLogger as setPresentationLogger } from "@itwin/presentation-hierarchies";
setPresentationLogger(createPresentationLogger(CoreLogger));