JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6019
  • Score
    100M100P100Q143902F
  • License MIT

The package acts as a layer between iTwin.js Core and Presentation packages.

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));