@itwin/core-common 5.9.0-dev.15 → 5.9.0-dev.17

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ViewDetails.js","sourceRoot":"","sources":["../../src/ViewDetails.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAc,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAmB,QAAQ,EAAS,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAuB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAyBxE;;;GAGG;AACH,MAAM,CAAN,IAAY,mBAWX;AAXD,WAAY,mBAAmB;IAC7B,8BAA8B;IAC9B,6DAAQ,CAAA;IACR,UAAU;IACV,mEAAW,CAAA;IACX,YAAY;IACZ,mEAAW,CAAA;IACX,YAAY;IACZ,mEAAW,CAAA;IACX,mDAAmD;IACnD,qEAAY,CAAA;AACd,CAAC,EAXW,mBAAmB,KAAnB,mBAAmB,QAW9B;AAcD;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACtB,gBAAgB;IACG,KAAK,CAAmB;IACnC,WAAW,CAAc;IAEjC,0EAA0E;IAC1D,mBAAmB,GAAG,IAAI,OAAO,EAA6C,CAAC;IAE/F,gBAAgB;IAChB,YAAmB,cAAkD;QACnE,IAAI,CAAC,cAAc,CAAC,WAAW;YAC7B,cAAc,CAAC,WAAW,GAAG,EAAE,CAAC;QAElC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC;IAC1C,CAAC;IAED,8DAA8D;IAC9D,IAAW,2BAA2B;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,IAAW,2BAA2B,CAAC,EAAc;QACnD,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IAED,+EAA+E;IACxE,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;IAE3B,0FAA0F;IAC1F,IAAW,eAAe;QACxB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5D,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IACD,IAAW,eAAe,CAAC,IAAY;QACrC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,CAAC;IAED,0CAA0C;IAC1C,IAAW,eAAe;QACxB,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC;IACD,IAAW,eAAe,CAAC,WAAgC;QACzD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAChG,CAAC;IAED,gDAAgD;IAChD,IAAW,WAAW;QACpB,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAW,WAAW,CAAC,WAAmB;QACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IACvE,CAAC;IAED,qCAAqC;IACrC,IAAW,WAAW;QACpB,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAClB,CAAC;IACD,IAAW,WAAW,CAAC,OAAc;QACnC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,CAAC;IACD,IAAW,UAAU,CAAC,IAA4B;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,OAAO,KAAK,IAAI;YAClB,OAAO;QAET,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;YAE3B,0CAA0C;YAC1C,IAAI,CAAC,IAAI,CAAC,OAAO;gBACf,OAAO;QACX,CAAC;QAED,IAAI,GAAG,IAAI,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAExC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO;YACd,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;;YAEhC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;;AAGH;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,WAAW;IACpC,gBAAgB,CAAmB;IAE3C,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,KAA2B,CAAC;IAC1C,CAAC;IAED,oFAAoF;IACpE,wBAAwB,GAAG,IAAI,OAAO,EAAwC,CAAC;IAE/F,gBAAgB;IAChB,YAAmB,cAAoD;QACrE,KAAK,CAAC,cAAc,CAAC,CAAC;IACxB,CAAC;IAED,yFAAyF;IACzF,IAAW,oBAAoB;QAC7B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;IACD,IAAW,oBAAoB,CAAC,KAAc;QAC5C,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACH,IAAW,eAAe;QACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACxB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAEjF,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IACD,IAAW,eAAe,CAAC,MAAuB;QAChD,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACa,OAAO;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Views\n */\n\nimport { assert, BeEvent, Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\nimport { ClipVector, ClipVectorProps, Geometry, XAndY } from \"@itwin/core-geometry\";\nimport { ModelClipGroupProps, ModelClipGroups } from \"./ModelClipGroup\";\n\n/** Properties of a [[ViewDefinitionProps]] stored as JSON.\n * @see [[ViewDefinitionProps.jsonProperties]].\n * @see [[ViewDetails3dProps]] for additional properties specific to 3d views.\n * @public\n * @extensions\n */\nexport interface ViewDetailsProps {\n /** Id of the aux coord system. Default: invalid. */\n acs?: Id64String;\n /** Aspect ratio skew (x/y) used to exaggerate the y axis of the view. Default: 1.0. */\n aspectSkew?: number;\n /** Grid orientation. Default: WorldXY. */\n gridOrient?: GridOrientationType;\n /** Default: 10. */\n gridPerRef?: number;\n /** Default: 1.0. */\n gridSpaceX?: number;\n /** Default: same as gridSpaceX. */\n gridSpaceY?: number;\n /** Describes the [ClipVector]($core-geometry) applied to the view. */\n clip?: ClipVectorProps;\n}\n\n/** Describes the orientation of the grid displayed within a [Viewport]($frontend).\n * @public\n * @extensions\n */\nexport enum GridOrientationType {\n /** Oriented with the view. */\n View = 0,\n /** Top */\n WorldXY = 1,\n /** Right */\n WorldYZ = 2,\n /** Front */\n WorldXZ = 3,\n /** Oriented by the auxiliary coordinate system. */\n AuxCoord = 4,\n}\n\n/** Properties of a [[ViewDefinition3dProps]] stored as JSON.\n * @see [[ViewDefinition3dProps.jsonProperties]].\n * @public\n * @extensions\n */\nexport interface ViewDetails3dProps extends ViewDetailsProps {\n /** Whether viewing tools are prohibited from operating in 3 dimensions on this view. Default: false. */\n disable3dManipulations?: boolean;\n /** Defines how to clip groups of models. */\n modelClipGroups?: ModelClipGroupProps[];\n}\n\n/** Encapsulates access to optional view details stored in JSON properties.\n * @see [[ViewDetailsProps]] for the JSON representation.\n * @see [ViewDefinition.details]($backend) and [ViewState.details]($frontend).\n * @public\n */\nexport class ViewDetails {\n /** @internal */\n protected readonly _json: ViewDetailsProps;\n private _clipVector?: ClipVector;\n\n /** Event raised just before assignment to the [[clipVector]] property. */\n public readonly onClipVectorChanged = new BeEvent<(newClip: ClipVector | undefined) => void>();\n\n /** @internal */\n public constructor(jsonProperties: { viewDetails?: ViewDetailsProps }) {\n if (!jsonProperties.viewDetails)\n jsonProperties.viewDetails = {};\n\n this._json = jsonProperties.viewDetails;\n }\n\n /** The Id of the auxiliary coordinate system for the view. */\n public get auxiliaryCoordinateSystemId(): Id64String {\n return Id64.fromJSON(this._json.acs);\n }\n public set auxiliaryCoordinateSystemId(id: Id64String) {\n this._json.acs = Id64.isValidId64(id) ? id : undefined;\n }\n\n /** Maximum aspect ratio skew. Apps can override this by changing its value. */\n public static maxSkew = 25;\n\n /** The aspect ratio skew (x/y, usually 1.0) used to exaggerate the y axis of the view. */\n public get aspectRatioSkew(): number {\n const maxSkew = ViewDetails.maxSkew;\n const skew = JsonUtils.asDouble(this._json.aspectSkew, 1.0);\n return Geometry.clamp(skew, 1 / maxSkew, maxSkew);\n }\n public set aspectRatioSkew(skew: number) {\n this._json.aspectSkew = 1.0 !== skew ? skew : undefined;\n }\n\n /** The orientation of the view's grid. */\n public get gridOrientation(): GridOrientationType {\n return JsonUtils.asInt(this._json.gridOrient, GridOrientationType.WorldXY);\n }\n public set gridOrientation(orientation: GridOrientationType) {\n this._json.gridOrient = GridOrientationType.WorldXY === orientation ? undefined : orientation;\n }\n\n /** The number of grids per ref for the view. */\n public get gridsPerRef(): number {\n return JsonUtils.asInt(this._json.gridPerRef, 10);\n }\n public set gridsPerRef(gridsPerRef: number) {\n this._json.gridPerRef = 10 === gridsPerRef ? undefined : gridsPerRef;\n }\n\n /** The grid spacing for the view. */\n public get gridSpacing(): XAndY {\n const x = JsonUtils.asDouble(this._json.gridSpaceX, 1.0);\n const y = JsonUtils.asDouble(this._json.gridSpaceY, x);\n return { x, y };\n }\n public set gridSpacing(spacing: XAndY) {\n this._json.gridSpaceX = 1.0 !== spacing.x ? spacing.x : undefined;\n this._json.gridSpaceY = spacing.x !== spacing.y ? spacing.y : undefined;\n }\n\n /** Clipping volume for the view.\n * @note Do *not* modify the returned ClipVector. If you wish to change the ClipVector, clone the returned ClipVector, modify it as desired, and pass the clone back to the setter.\n */\n public get clipVector(): ClipVector | undefined {\n if (undefined === this._clipVector) {\n const clip = this._json.clip;\n this._clipVector = (undefined !== clip ? ClipVector.fromJSON(clip) : ClipVector.createEmpty());\n }\n\n return this._clipVector.isValid ? this._clipVector : undefined;\n }\n public set clipVector(clip: ClipVector | undefined) {\n const curClip = this.clipVector;\n if (curClip === clip)\n return;\n\n if (!curClip) {\n assert(undefined !== clip);\n\n // An empty clip is equivalent to no clip.\n if (!clip.isValid)\n return;\n }\n\n clip = clip ?? ClipVector.createEmpty();\n\n this.onClipVectorChanged.raiseEvent(clip.isValid ? clip : undefined);\n\n this._clipVector = clip;\n if (clip.isValid)\n this._json.clip = clip.toJSON();\n else\n delete this._json.clip;\n }\n\n /** Returns the internal JSON representation. This is *not* a copy.\n * @internal\n */\n public getJSON(): Readonly<ViewDetailsProps> {\n return this._json;\n }\n}\n\n/** Encapsulates access to optional 3d view details stored in JSON properties.\n * @see [[ViewDetails3dProps]] for the JSON representation.\n * @public\n */\nexport class ViewDetails3d extends ViewDetails {\n private _modelClipGroups?: ModelClipGroups;\n\n private get _json3d(): ViewDetails3dProps {\n return this._json as ViewDetails3dProps;\n }\n\n /** Event raised when just before assignment to the [[modelClipGroups]] property. */\n public readonly onModelClipGroupsChanged = new BeEvent<(newGroups: ModelClipGroups) => void>();\n\n /** @internal */\n public constructor(jsonProperties: { viewDetails?: ViewDetails3dProps }) {\n super(jsonProperties);\n }\n\n /** Controls whether viewing tools are allowed to operate on the view in 3 dimensions. */\n public get allow3dManipulations(): boolean {\n return !JsonUtils.asBool(this._json3d.disable3dManipulations, false);\n }\n public set allow3dManipulations(allow: boolean) {\n this._json3d.disable3dManipulations = allow ? undefined : true;\n }\n\n /** Groups of models associated with [ClipVector]($core-geometry)s by which those models should be clipped.\n * If the view and the model both have a clip vector defined, geometry in the model will be clipped by the intersection of the two clip vectors.\n * [[ViewFlags.clipVolume]] has no effect on model clips, only the view clip - model clips are always applied.\n * @note Do **not** modify the returned object directly. Instead, clone it, modify the clone, and pass the clone to the property setter.\n */\n public get modelClipGroups(): ModelClipGroups {\n if (!this._modelClipGroups)\n this._modelClipGroups = ModelClipGroups.fromJSON(this._json3d.modelClipGroups);\n\n return this._modelClipGroups;\n }\n public set modelClipGroups(groups: ModelClipGroups) {\n this.onModelClipGroupsChanged.raiseEvent(groups);\n this._modelClipGroups = groups;\n this._json3d.modelClipGroups = groups.toJSON();\n }\n\n /** Returns the internal JSON representation. This is *not* a copy.\n * @internal\n */\n public override getJSON(): Readonly<ViewDetails3dProps> {\n return this._json3d;\n }\n}\n"]}
1
+ {"version":3,"file":"ViewDetails.js","sourceRoot":"","sources":["../../src/ViewDetails.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Views\n */\n\nimport { assert, BeEvent, Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\nimport { ClipVector, ClipVectorProps, Geometry, XAndY } from \"@itwin/core-geometry\";\nimport { ModelClipGroupProps, ModelClipGroups } from \"./ModelClipGroup\";\n\n/** Properties of a [[ViewDefinitionProps]] stored as JSON.\n * @see [[ViewDefinitionProps.jsonProperties]].\n * @see [[ViewDetails3dProps]] for additional properties specific to 3d views.\n * @public\n * @extensions\n */\nexport interface ViewDetailsProps {\n /** Id of the aux coord system. Default: invalid. */\n acs?: Id64String;\n /** Aspect ratio skew (x/y) used to exaggerate the y axis of the view. Default: 1.0. */\n aspectSkew?: number;\n /** Grid orientation. Default: WorldXY. */\n gridOrient?: GridOrientationType;\n /** Default: 10. */\n gridPerRef?: number;\n /** Default: 1.0. */\n gridSpaceX?: number;\n /** Default: same as gridSpaceX. */\n gridSpaceY?: number;\n /** Describes the [ClipVector]($core-geometry) applied to the view. */\n clip?: ClipVectorProps;\n}\n\n/** Describes the orientation of the grid displayed within a [Viewport]($frontend).\n * @public\n * @extensions\n */\nexport enum GridOrientationType {\n /** Oriented with the view. */\n View = 0,\n /** Top */\n WorldXY = 1,\n /** Right */\n WorldYZ = 2,\n /** Front */\n WorldXZ = 3,\n /** Oriented by the auxiliary coordinate system. */\n AuxCoord = 4,\n}\n\n/** Properties of a [[ViewDefinition3dProps]] stored as JSON.\n * @see [[ViewDefinition3dProps.jsonProperties]].\n * @public\n * @extensions\n */\nexport interface ViewDetails3dProps extends ViewDetailsProps {\n /** Whether viewing tools are prohibited from operating in 3 dimensions on this view. Default: false. */\n disable3dManipulations?: boolean;\n /** Defines how to clip groups of models. */\n modelClipGroups?: ModelClipGroupProps[];\n}\n\n/** Encapsulates access to optional view details stored in JSON properties.\n * @see [[ViewDetailsProps]] for the JSON representation.\n * @see [ViewDefinition.details]($backend) and [ViewState.details]($frontend).\n * @public\n */\nexport class ViewDetails {\n /** @internal */\n protected readonly _json: ViewDetailsProps;\n private _clipVector?: ClipVector;\n\n /** Event raised just before assignment to the [[clipVector]] property. */\n public readonly onClipVectorChanged = new BeEvent<(newClip: ClipVector | undefined) => void>();\n\n /** @internal */\n public constructor(jsonProperties: { viewDetails?: ViewDetailsProps }) {\n if (!jsonProperties.viewDetails)\n jsonProperties.viewDetails = {};\n\n this._json = jsonProperties.viewDetails;\n }\n\n /** The Id of the auxiliary coordinate system for the view. */\n public get auxiliaryCoordinateSystemId(): Id64String {\n return Id64.fromJSON(this._json.acs);\n }\n public set auxiliaryCoordinateSystemId(id: Id64String) {\n this._json.acs = Id64.isValidId64(id) ? id : undefined;\n }\n\n /** Maximum aspect ratio skew. Apps can override this by changing its value. */\n public static maxSkew = 25;\n\n /** The aspect ratio skew (x/y, usually 1.0) used to exaggerate the y axis of the view. */\n public get aspectRatioSkew(): number {\n const maxSkew = ViewDetails.maxSkew;\n const skew = JsonUtils.asDouble(this._json.aspectSkew, 1.0);\n return Geometry.clamp(skew, 1 / maxSkew, maxSkew);\n }\n public set aspectRatioSkew(skew: number) {\n this._json.aspectSkew = 1.0 !== skew ? skew : undefined;\n }\n\n /** The orientation of the view's grid. */\n public get gridOrientation(): GridOrientationType {\n return JsonUtils.asInt(this._json.gridOrient, GridOrientationType.WorldXY);\n }\n public set gridOrientation(orientation: GridOrientationType) {\n this._json.gridOrient = GridOrientationType.WorldXY === orientation ? undefined : orientation;\n }\n\n /** The number of grids per ref for the view. */\n public get gridsPerRef(): number {\n return JsonUtils.asInt(this._json.gridPerRef, 10);\n }\n public set gridsPerRef(gridsPerRef: number) {\n this._json.gridPerRef = 10 === gridsPerRef ? undefined : gridsPerRef;\n }\n\n /** The grid spacing for the view. */\n public get gridSpacing(): XAndY {\n const x = JsonUtils.asDouble(this._json.gridSpaceX, 1.0);\n const y = JsonUtils.asDouble(this._json.gridSpaceY, x);\n return { x, y };\n }\n public set gridSpacing(spacing: XAndY) {\n this._json.gridSpaceX = 1.0 !== spacing.x ? spacing.x : undefined;\n this._json.gridSpaceY = spacing.x !== spacing.y ? spacing.y : undefined;\n }\n\n /** Clipping volume for the view.\n * @note Do *not* modify the returned ClipVector. If you wish to change the ClipVector, clone the returned ClipVector, modify it as desired, and pass the clone back to the setter.\n */\n public get clipVector(): ClipVector | undefined {\n if (undefined === this._clipVector) {\n const clip = this._json.clip;\n this._clipVector = (undefined !== clip ? ClipVector.fromJSON(clip) : ClipVector.createEmpty());\n }\n\n return this._clipVector.isValid ? this._clipVector : undefined;\n }\n public set clipVector(clip: ClipVector | undefined) {\n const curClip = this.clipVector;\n if (curClip === clip)\n return;\n\n if (!curClip) {\n assert(undefined !== clip);\n\n // An empty clip is equivalent to no clip.\n if (!clip.isValid)\n return;\n }\n\n clip = clip ?? ClipVector.createEmpty();\n\n this.onClipVectorChanged.raiseEvent(clip.isValid ? clip : undefined);\n\n this._clipVector = clip;\n if (clip.isValid)\n this._json.clip = clip.toJSON();\n else\n delete this._json.clip;\n }\n\n /** Returns the internal JSON representation. This is *not* a copy.\n * @internal\n */\n public getJSON(): Readonly<ViewDetailsProps> {\n return this._json;\n }\n}\n\n/** Encapsulates access to optional 3d view details stored in JSON properties.\n * @see [[ViewDetails3dProps]] for the JSON representation.\n * @public\n */\nexport class ViewDetails3d extends ViewDetails {\n private _modelClipGroups?: ModelClipGroups;\n\n private get _json3d(): ViewDetails3dProps {\n return this._json;\n }\n\n /** Event raised when just before assignment to the [[modelClipGroups]] property. */\n public readonly onModelClipGroupsChanged = new BeEvent<(newGroups: ModelClipGroups) => void>();\n\n /** @internal */\n public constructor(jsonProperties: { viewDetails?: ViewDetails3dProps }) {\n super(jsonProperties);\n }\n\n /** Controls whether viewing tools are allowed to operate on the view in 3 dimensions. */\n public get allow3dManipulations(): boolean {\n return !JsonUtils.asBool(this._json3d.disable3dManipulations, false);\n }\n public set allow3dManipulations(allow: boolean) {\n this._json3d.disable3dManipulations = allow ? undefined : true;\n }\n\n /** Groups of models associated with [ClipVector]($core-geometry)s by which those models should be clipped.\n * If the view and the model both have a clip vector defined, geometry in the model will be clipped by the intersection of the two clip vectors.\n * [[ViewFlags.clipVolume]] has no effect on model clips, only the view clip - model clips are always applied.\n * @note Do **not** modify the returned object directly. Instead, clone it, modify the clone, and pass the clone to the property setter.\n */\n public get modelClipGroups(): ModelClipGroups {\n if (!this._modelClipGroups)\n this._modelClipGroups = ModelClipGroups.fromJSON(this._json3d.modelClipGroups);\n\n return this._modelClipGroups;\n }\n public set modelClipGroups(groups: ModelClipGroups) {\n this.onModelClipGroupsChanged.raiseEvent(groups);\n this._modelClipGroups = groups;\n this._json3d.modelClipGroups = groups.toJSON();\n }\n\n /** Returns the internal JSON representation. This is *not* a copy.\n * @internal\n */\n public override getJSON(): Readonly<ViewDetails3dProps> {\n return this._json3d;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TileIO.js","sourceRoot":"","sources":["../../../src/tile/TileIO.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAc,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAN,IAAY,UASX;AATD,WAAY,UAAU;IACpB,iDAAW,CAAA;IACX,oDAAiB,CAAA;IACjB,oDAAiB,CAAA;IACjB,oDAAiB,CAAA;IACjB,wDAAmB,CAAA;IACnB,oDAAiB,CAAA;IACjB,oDAAiB,CAAA;IACjB,+CAAc,CAAA;AAChB,CAAC,EATW,UAAU,KAAV,UAAU,QASrB;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU,CAAC,OAAO,CAAC;QACxB,KAAK,UAAU,CAAC,IAAI,CAAC;QACrB,KAAK,UAAU,CAAC,IAAI,CAAC;QACrB,KAAK,UAAU,CAAC,MAAM,CAAC;QACvB,KAAK,UAAU,CAAC,IAAI,CAAC;QACrB,KAAK,UAAU,CAAC,IAAI,CAAC;QACrB,KAAK,UAAU,CAAC,IAAI,CAAC;QACrB,KAAK,UAAU,CAAC,GAAG;YACjB,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,MAAM,MAAM,GAAG,YAA0B,CAAC;IAC1C,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cASX;AATD,WAAY,cAAc;IACxB,yDAAW,CAAA;IACX,yEAAe,CAAA;IACf,qEAAa,CAAA;IACb,6EAAiB,CAAA;IACjB,mEAAY,CAAA;IACZ,iFAAmB,CAAA;IACnB,6EAAiB,CAAA;IACjB,2DAAQ,CAAA;AACV,CAAC,EATW,cAAc,KAAd,cAAc,QASzB;AAED,MAAM,kBAAkB,GAAG;IACzB,SAAS;IACT,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,uBAAuB;IACvB,uBAAuB;IACvB,UAAU;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C,YAAmB,MAAsB,EAAE,OAAgB;QACzD,IAAI,SAAS,KAAK,OAAO;YACvB,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEvC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,IAAW,WAAW,KAAc,OAAO,cAAc,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;CAC3F;AAED;;;;GAIG;AACH,MAAM,OAAgB,UAAU;IACtB,OAAO,CAAa;IACrB,OAAO,CAAS;IAEvB,6FAA6F;IAC7F,YAAmB,MAAkB;QACnC,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,IAAW,MAAM,KAAiB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAKxD,mDAAmD;IACzC,UAAU;QAClB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAkB,EAAE,MAAgB;IAC9E,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,EAC5B,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,EACxB,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAE3B,IAAI,SAAS,KAAK,MAAM;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tile\n */\n\nimport { BentleyError, ByteStream } from \"@itwin/core-bentley\";\nimport { Point3d } from \"@itwin/core-geometry\";\n\n/** Type codes for various tile formats. Often these are embedded as 32-bit 'magic numbers' in a binary stream to indicate the format.\n * @internal\n */\nexport enum TileFormat {\n Unknown = 0,\n B3dm = 0x6d643362, // \"b3dm\"\n Gltf = 0x46546c67, // \"glTF\"\n Pnts = 0x73746e70, // \"pnts\"\n IModel = 0x6c644d69, // \"iMdl\"\n Cmpt = 0x74706d63, // cmpt\n I3dm = 0x6d643369, // i3dm\n A3x = 0x583341, // A3X0 (numeric 0 not char '0')\n}\n\n/** Given a magic number, return whether it identifies a known tile format.\n * @internal\n */\nexport function isKnownTileFormat(format: number) {\n switch (format) {\n case TileFormat.Unknown:\n case TileFormat.B3dm:\n case TileFormat.Gltf:\n case TileFormat.IModel:\n case TileFormat.Pnts:\n case TileFormat.Cmpt:\n case TileFormat.I3dm:\n case TileFormat.A3x:\n return true;\n default:\n return false;\n }\n}\n\n/** Given a magic number, attempt to convert it to a known TileFormat.\n * @internal\n */\nexport function tileFormatFromNumber(formatNumber: number): TileFormat {\n const format = formatNumber as TileFormat;\n return isKnownTileFormat(format) ? format : TileFormat.Unknown;\n}\n\n/** Status codes for tile reading operations\n * @internal\n */\nexport enum TileReadStatus {\n Success = 0,\n InvalidTileData,\n InvalidHeader,\n InvalidBatchTable,\n InvalidScene,\n InvalidFeatureTable,\n NewerMajorVersion,\n Canceled,\n}\n\nconst readStatusMessages = [\n \"Success\",\n \"Invalid tile data\",\n \"Invalid tile header\",\n \"Invalid batch table\",\n \"Invalid scene\",\n \"Invalid feature table\",\n \"Major version too new\",\n \"Canceled\",\n];\n\n/** Exception thrown by functions that deserialize tiles.\n * @internal\n */\nexport class TileReadError extends BentleyError {\n public constructor(status: TileReadStatus, message?: string) {\n if (undefined === message)\n message = readStatusMessages[status];\n\n super(status, message);\n }\n\n public get wasCanceled(): boolean { return TileReadStatus.Canceled === this.errorNumber; }\n}\n\n/** The base header preceding tile data of most formats, identifying the tile format and version of that format.\n * Specific tile formats may define their own headers as sub-types of this Header, appending\n * additional format-specific data.\n * @internal\n */\nexport abstract class TileHeader {\n private _format: TileFormat;\n public version: number;\n\n /** Construct a Header from the binary data at the supplied stream's current read position */\n public constructor(stream: ByteStream) {\n this._format = tileFormatFromNumber(stream.readUint32());\n this.version = stream.readUint32();\n }\n\n public get format(): TileFormat { return this._format; }\n\n /** Returns whether the header represents valid data */\n public abstract get isValid(): boolean;\n\n /** Mark the header as representing invalid data */\n protected invalidate(): void {\n this._format = TileFormat.Unknown;\n }\n}\n\n/** Read 3 64-bit floating point numbers at the byte stream's current read position, advance by 24 bytes, and return a Point3d constructed from the 3 numbers.\n * @internal\n */\nexport function nextPoint3d64FromByteStream(stream: ByteStream, result?: Point3d): Point3d {\n const x = stream.readFloat64(),\n y = stream.readFloat64(),\n z = stream.readFloat64();\n\n if (undefined === result)\n return new Point3d(x, y, z);\n\n result.set(x, y, z);\n return result;\n}\n"]}
1
+ {"version":3,"file":"TileIO.js","sourceRoot":"","sources":["../../../src/tile/TileIO.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tile\n */\n\nimport { BentleyError, ByteStream } from \"@itwin/core-bentley\";\nimport { Point3d } from \"@itwin/core-geometry\";\n\n/** Type codes for various tile formats. Often these are embedded as 32-bit 'magic numbers' in a binary stream to indicate the format.\n * @internal\n */\nexport enum TileFormat {\n Unknown = 0,\n B3dm = 0x6d643362, // \"b3dm\"\n Gltf = 0x46546c67, // \"glTF\"\n Pnts = 0x73746e70, // \"pnts\"\n IModel = 0x6c644d69, // \"iMdl\"\n Cmpt = 0x74706d63, // cmpt\n I3dm = 0x6d643369, // i3dm\n A3x = 0x583341, // A3X0 (numeric 0 not char '0')\n}\n\n/** Given a magic number, return whether it identifies a known tile format.\n * @internal\n */\nexport function isKnownTileFormat(format: number) {\n switch (format) {\n case TileFormat.Unknown:\n case TileFormat.B3dm:\n case TileFormat.Gltf:\n case TileFormat.IModel:\n case TileFormat.Pnts:\n case TileFormat.Cmpt:\n case TileFormat.I3dm:\n case TileFormat.A3x:\n return true;\n default:\n return false;\n }\n}\n\n/** Given a magic number, attempt to convert it to a known TileFormat.\n * @internal\n */\nexport function tileFormatFromNumber(formatNumber: number): TileFormat {\n const format = formatNumber;\n return isKnownTileFormat(format) ? format : TileFormat.Unknown;\n}\n\n/** Status codes for tile reading operations\n * @internal\n */\nexport enum TileReadStatus {\n Success = 0,\n InvalidTileData,\n InvalidHeader,\n InvalidBatchTable,\n InvalidScene,\n InvalidFeatureTable,\n NewerMajorVersion,\n Canceled,\n}\n\nconst readStatusMessages = [\n \"Success\",\n \"Invalid tile data\",\n \"Invalid tile header\",\n \"Invalid batch table\",\n \"Invalid scene\",\n \"Invalid feature table\",\n \"Major version too new\",\n \"Canceled\",\n];\n\n/** Exception thrown by functions that deserialize tiles.\n * @internal\n */\nexport class TileReadError extends BentleyError {\n public constructor(status: TileReadStatus, message?: string) {\n if (undefined === message)\n message = readStatusMessages[status];\n\n super(status, message);\n }\n\n public get wasCanceled(): boolean { return TileReadStatus.Canceled === this.errorNumber; }\n}\n\n/** The base header preceding tile data of most formats, identifying the tile format and version of that format.\n * Specific tile formats may define their own headers as sub-types of this Header, appending\n * additional format-specific data.\n * @internal\n */\nexport abstract class TileHeader {\n private _format: TileFormat;\n public version: number;\n\n /** Construct a Header from the binary data at the supplied stream's current read position */\n public constructor(stream: ByteStream) {\n this._format = tileFormatFromNumber(stream.readUint32());\n this.version = stream.readUint32();\n }\n\n public get format(): TileFormat { return this._format; }\n\n /** Returns whether the header represents valid data */\n public abstract get isValid(): boolean;\n\n /** Mark the header as representing invalid data */\n protected invalidate(): void {\n this._format = TileFormat.Unknown;\n }\n}\n\n/** Read 3 64-bit floating point numbers at the byte stream's current read position, advance by 24 bytes, and return a Point3d constructed from the 3 numbers.\n * @internal\n */\nexport function nextPoint3d64FromByteStream(stream: ByteStream, result?: Point3d): Point3d {\n const x = stream.readFloat64(),\n y = stream.readFloat64(),\n z = stream.readFloat64();\n\n if (undefined === result)\n return new Point3d(x, y, z);\n\n result.set(x, y, z);\n return result;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-common",
3
- "version": "5.9.0-dev.15",
3
+ "version": "5.9.0-dev.17",
4
4
  "description": "iTwin.js components common to frontend and backend",
5
5
  "main": "lib/cjs/core-common.js",
6
6
  "module": "lib/esm/core-common.js",
@@ -27,8 +27,8 @@
27
27
  "js-base64": "^3.6.1"
28
28
  },
29
29
  "peerDependencies": {
30
- "@itwin/core-bentley": "5.9.0-dev.15",
31
- "@itwin/core-geometry": "5.9.0-dev.15"
30
+ "@itwin/core-bentley": "5.9.0-dev.17",
31
+ "@itwin/core-geometry": "5.9.0-dev.17"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@itwin/eslint-plugin": "^6.0.0",
@@ -42,9 +42,9 @@
42
42
  "rimraf": "^6.0.1",
43
43
  "typescript": "~5.6.2",
44
44
  "vitest": "^3.0.6",
45
- "@itwin/build-tools": "5.9.0-dev.15",
46
- "@itwin/core-geometry": "5.9.0-dev.15",
47
- "@itwin/core-bentley": "5.9.0-dev.15"
45
+ "@itwin/core-bentley": "5.9.0-dev.17",
46
+ "@itwin/build-tools": "5.9.0-dev.17",
47
+ "@itwin/core-geometry": "5.9.0-dev.17"
48
48
  },
49
49
  "nyc": {
50
50
  "extends": "./node_modules/@itwin/build-tools/.nycrc",