UNPKG

@itwin/core-common

Version:

iTwin.js components common to frontend and backend

84 lines 4.07 kB
"use strict"; /*--------------------------------------------------------------------------------------------- * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ /** @packageDocumentation * @module Geometry */ Object.defineProperty(exports, "__esModule", { value: true }); exports.ModelGeometryChanges = exports.ElementGeometryChange = void 0; const core_bentley_1 = require("@itwin/core-bentley"); const core_geometry_1 = require("@itwin/core-geometry"); /** Represents a change to the geometry of a [GeometricElement]($backend), as exposed by [[ModelGeometryChanges.elements]]. * @public */ var ElementGeometryChange; (function (ElementGeometryChange) { function* extantIterator(props, type) { let index = 0; const ids = core_bentley_1.CompressedId64Set.iterable(props.ids); for (const id of ids) { (0, core_bentley_1.assert)(undefined !== props.ranges[index]); const range = core_geometry_1.Range3d.fromJSON(props.ranges[index]); index++; yield { type, id, range }; } } function extantIterable(props, type) { return { [Symbol.iterator]: () => extantIterator(props, type) }; } /** Obtain an iterator over the geometry changes for a single [GeometricModel]($backend). A given element will appear at most once. */ function* iterator(modelChanges) { if (modelChanges.inserted) yield* extantIterable(modelChanges.inserted, core_bentley_1.DbOpcode.Insert); if (modelChanges.updated) yield* extantIterable(modelChanges.updated, core_bentley_1.DbOpcode.Update); if (modelChanges.deleted) for (const id of core_bentley_1.CompressedId64Set.iterable(modelChanges.deleted)) yield { type: core_bentley_1.DbOpcode.Delete, id }; } ElementGeometryChange.iterator = iterator; /** Obtain an iterable over the geometry changes for a single [GeometricModel]($backend). A given element will appear at most once. */ function iterable(modelChanges) { return { [Symbol.iterator]: () => iterator(modelChanges) }; } ElementGeometryChange.iterable = iterable; })(ElementGeometryChange || (exports.ElementGeometryChange = ElementGeometryChange = {})); /** Represents geometric changes to a set of [GeometricElement]($backend)s belonging to a single [GeometricModel]($backend). * @see [GraphicalEditingScope]($frontend) to monitor these changes. * @public */ var ModelGeometryChanges; (function (ModelGeometryChanges) { /** Obtain an iterator over the geometry changes for a set of models. A given model will appear at most once. */ function* iterator(modelChanges) { for (const props of modelChanges) yield fromJSON(props); } ModelGeometryChanges.iterator = iterator; /** Obtain an iterable over the geometry changes for a set of models. A given model will appear at most once. */ function iterable(modelChanges) { return { [Symbol.iterator]: () => iterator(modelChanges) }; } ModelGeometryChanges.iterable = iterable; /** Instantiate from wire format. */ function fromJSON(props) { return { id: props.id, geometryGuid: props.guid, range: core_geometry_1.Range3d.fromJSON(props.range), elements: ElementGeometryChange.iterable(props), }; } ModelGeometryChanges.fromJSON = fromJSON; /** Obtain the ModelGeometryChanges for the specified model Id. */ function findByModelId(changes, modelId) { for (const change of changes) if (change.id === modelId) return change; return undefined; } ModelGeometryChanges.findByModelId = findByModelId; })(ModelGeometryChanges || (exports.ModelGeometryChanges = ModelGeometryChanges = {})); //# sourceMappingURL=ModelGeometryChanges.js.map