@itwin/rpcinterface-full-stack-tests 5.1.0-dev.54 → 5.1.0-dev.56

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.
@@ -68072,6 +68072,10 @@ var RenderSchedule;
68072
68072
  cuttingPlane;
68073
68073
  /** The total time period represented by this timeline. */
68074
68074
  duration;
68075
+ /** Indicates whether the schedule editing session has been finalized and is no longer active.
68076
+ * @internal
68077
+ */
68078
+ isEditingCommitted = false;
68075
68079
  constructor(props) {
68076
68080
  this.duration = _itwin_core_geometry__WEBPACK_IMPORTED_MODULE_1__.Range1d.createNull();
68077
68081
  if (props.visibilityTimeline) {
@@ -99678,6 +99682,20 @@ class SchemaFormatsProvider {
99678
99682
  this._formatsRetrieved.clear();
99679
99683
  this.onFormatsChanged.raiseEvent({ formatsChanged });
99680
99684
  }
99685
+ /** When using a presentation unit from a KindOfQuantity, the label and description should come from the KindOfQuantity */
99686
+ convertToFormatDefinition(format, kindOfQuantity) {
99687
+ // Destructure all properties except 'rest'
99688
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
99689
+ const { name, label, description, $schema, schema, schemaVersion, schemaItemType,
99690
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
99691
+ customAttributes, originalECSpecMajorVersion, originalECSpecMinorVersion, ...rest } = format;
99692
+ return {
99693
+ ...rest,
99694
+ name: kindOfQuantity.fullName,
99695
+ label: kindOfQuantity.label ?? format.label,
99696
+ description: kindOfQuantity.description ?? format.description,
99697
+ };
99698
+ }
99681
99699
  async getKindOfQuantityFormatFromSchema(itemKey) {
99682
99700
  let kindOfQuantity;
99683
99701
  try {
@@ -99703,7 +99721,8 @@ class SchemaFormatsProvider {
99703
99721
  const currentUnitSystem = await unit.unitSystem;
99704
99722
  if (currentUnitSystem && matcher(currentUnitSystem)) {
99705
99723
  this._formatsRetrieved.add(itemKey.fullName);
99706
- return (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(format);
99724
+ const props = (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(format);
99725
+ return this.convertToFormatDefinition(props, kindOfQuantity);
99707
99726
  }
99708
99727
  }
99709
99728
  }
@@ -99712,14 +99731,16 @@ class SchemaFormatsProvider {
99712
99731
  const persistenceUnitSystem = await persistenceUnit?.unitSystem;
99713
99732
  if (persistenceUnitSystem && unitSystemMatchers.some((matcher) => matcher(persistenceUnitSystem))) {
99714
99733
  this._formatsRetrieved.add(itemKey.fullName);
99715
- return getPersistenceUnitFormatProps(persistenceUnit);
99734
+ const props = getPersistenceUnitFormatProps(persistenceUnit);
99735
+ return this.convertToFormatDefinition(props, kindOfQuantity);
99716
99736
  }
99717
99737
  const defaultFormat = kindOfQuantity.defaultPresentationFormat;
99718
99738
  if (!defaultFormat) {
99719
99739
  return undefined;
99720
99740
  }
99721
99741
  this._formatsRetrieved.add(itemKey.fullName);
99722
- return (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(await defaultFormat);
99742
+ const defaultProps = (0,_Metadata_OverrideFormat__WEBPACK_IMPORTED_MODULE_6__.getFormatProps)(await defaultFormat);
99743
+ return this.convertToFormatDefinition(defaultProps, kindOfQuantity);
99723
99744
  }
99724
99745
  /**
99725
99746
  * Retrieves a Format from a SchemaContext. If the format is part of a KindOfQuantity, the first presentation format in the KindOfQuantity that matches the current unit system will be retrieved.
@@ -108828,6 +108849,7 @@ __webpack_require__.r(__webpack_exports__);
108828
108849
  /* harmony import */ var _PlanarClipMaskState__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./PlanarClipMaskState */ "../../core/frontend/lib/esm/PlanarClipMaskState.js");
108829
108850
  /* harmony import */ var _tile_internal__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./tile/internal */ "../../core/frontend/lib/esm/tile/internal.js");
108830
108851
  /* harmony import */ var _common_internal_Symbols__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./common/internal/Symbols */ "../../core/frontend/lib/esm/common/internal/Symbols.js");
108852
+ /* harmony import */ var _internal_ScriptUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./internal/ScriptUtils */ "../../core/frontend/lib/esm/internal/ScriptUtils.js");
108831
108853
  /*---------------------------------------------------------------------------------------------
108832
108854
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
108833
108855
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -108846,6 +108868,7 @@ __webpack_require__.r(__webpack_exports__);
108846
108868
 
108847
108869
 
108848
108870
 
108871
+
108849
108872
  /** @internal */
108850
108873
  class TerrainDisplayOverrides {
108851
108874
  wantSkirts;
@@ -108868,6 +108891,14 @@ class DisplayStyleState extends _EntityState__WEBPACK_IMPORTED_MODULE_6__.Elemen
108868
108891
  */
108869
108892
  [_common_internal_Symbols__WEBPACK_IMPORTED_MODULE_10__._onScheduleScriptReferenceChanged] = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
108870
108893
  _scriptReference;
108894
+ /** Event raised when schedule script edits are made, providing changed element IDs and the editing scope.
108895
+ * @beta
108896
+ */
108897
+ onScheduleEditingChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
108898
+ /** Event raised when schedule script edits are committed (finalized).
108899
+ * @beta
108900
+ */
108901
+ onScheduleEditingCommitted = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
108871
108902
  /** Event raised just before the [[scheduleScript]] property is changed. */
108872
108903
  onScheduleScriptChanged = new _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeEvent();
108873
108904
  /** Event raised just after [[setOSMBuildingDisplay]] changes the enabled state of the OSM buildings. */
@@ -109070,6 +109101,62 @@ class DisplayStyleState extends _EntityState__WEBPACK_IMPORTED_MODULE_6__.Elemen
109070
109101
  if (this._queryRenderTimelinePropsPromise)
109071
109102
  await this._queryRenderTimelinePropsPromise;
109072
109103
  }
109104
+ /**
109105
+ * Begins or updates a schedule script editing session for the current display style.
109106
+ * During an editing session, changes to the schedule script are applied incrementally
109107
+ * using temporary dynamic tiles, allowing for interactive preview of visual changes like color,
109108
+ * transforms, visibility, and cutting planes — without requiring a full tile tree reload.
109109
+ *
109110
+ * Calling this method multiple times will update the current editing session with new script changes.
109111
+ * When all edits are complete, you must invoke [[commitScheduleEditing]] to finalize the session and
109112
+ * trigger a full tile tree refresh with the committed script.
109113
+ *
109114
+ * @note You cannot use schedule script editing while a @see [[GraphicalEditingScope]] is active.
109115
+ *
109116
+ * Example:
109117
+ * ```ts
109118
+ * [[include:ScheduleScript_editingMode]]
109119
+ * ```
109120
+ *
109121
+ * @beta
109122
+ */
109123
+ setScheduleEditing(newScript) {
109124
+ const prevScript = this.scheduleScript;
109125
+ const changes = [];
109126
+ const globalDelta = (0,_internal_ScriptUtils__WEBPACK_IMPORTED_MODULE_11__.getScriptDelta)(prevScript, newScript);
109127
+ for (const timeline of newScript.modelTimelines) {
109128
+ const ids = new Set();
109129
+ for (const et of timeline.elementTimelines) {
109130
+ for (const id of et.elementIds) {
109131
+ if (globalDelta.has(id))
109132
+ ids.add(id);
109133
+ }
109134
+ }
109135
+ if (ids.size > 0)
109136
+ changes.push({ timeline, elements: ids });
109137
+ }
109138
+ this.scheduleScript = newScript;
109139
+ this.onScheduleEditingChanged.raiseEvent(changes);
109140
+ for (const modelTimeline of this.scheduleScript.modelTimelines) {
109141
+ modelTimeline.isEditingCommitted = false;
109142
+ }
109143
+ }
109144
+ /**
109145
+ * Finalizes a script editing session previously started with [[setScheduleEditing]].
109146
+ * This applies all pending script changes and triggers a full tile tree reload to reflect them in the viewport.
109147
+ * After this call, the schedule script is considered committed and editing mode ends.
109148
+ *
109149
+ * @see [[setScheduleEditing]] to begin a schedule script editing session.
109150
+ * @beta
109151
+ */
109152
+ commitScheduleEditing() {
109153
+ this.onScheduleEditingCommitted.raiseEvent();
109154
+ if (!this.scheduleScript)
109155
+ return;
109156
+ for (const modelTimeline of this.scheduleScript.modelTimelines) {
109157
+ modelTimeline.isEditingCommitted = true;
109158
+ }
109159
+ }
109073
109160
  /** The [RenderSchedule.Script]($common) that animates the contents of the view, if any.
109074
109161
  * @see [[changeRenderTimeline]] to change the script.
109075
109162
  */
@@ -126642,6 +126729,22 @@ class Viewport {
126642
126729
  };
126643
126730
  removals.push(settings.onTimePointChanged.addListener(scheduleChanged));
126644
126731
  removals.push(style.onScheduleScriptChanged.addListener(scriptChanged));
126732
+ const scheduleEditingChanged = async (changes) => {
126733
+ for (const ref of this.getTileTreeRefs()) {
126734
+ const tree = ref.treeOwner.tileTree;
126735
+ await tree?.onScheduleEditingChanged(changes);
126736
+ }
126737
+ };
126738
+ const scheduleEditingCommitted = () => {
126739
+ for (const ref of this.getTileTreeRefs()) {
126740
+ const tree = ref.treeOwner.tileTree;
126741
+ tree?.onScheduleEditingCommitted();
126742
+ }
126743
+ };
126744
+ removals.push(style.onScheduleEditingChanged.addListener((changes) => {
126745
+ void scheduleEditingChanged(changes);
126746
+ }));
126747
+ removals.push(style.onScheduleEditingCommitted.addListener(scheduleEditingCommitted));
126645
126748
  removals.push(settings.onViewFlagsChanged.addListener((vf) => {
126646
126749
  if (vf.backgroundMap !== this.viewFlags.backgroundMap)
126647
126750
  this.invalidateController();
@@ -129734,6 +129837,7 @@ var GltfMeshMode;
129734
129837
  (function (GltfMeshMode) {
129735
129838
  GltfMeshMode[GltfMeshMode["Points"] = 0] = "Points";
129736
129839
  GltfMeshMode[GltfMeshMode["Lines"] = 1] = "Lines";
129840
+ GltfMeshMode[GltfMeshMode["LineLoop"] = 2] = "LineLoop";
129737
129841
  GltfMeshMode[GltfMeshMode["LineStrip"] = 3] = "LineStrip";
129738
129842
  GltfMeshMode[GltfMeshMode["Triangles"] = 4] = "Triangles";
129739
129843
  /** Not currently supported. */
@@ -137612,7 +137716,7 @@ __webpack_require__.r(__webpack_exports__);
137612
137716
  /**
137613
137717
  * @docs-group-description TileStorage
137614
137718
  * Class for working with cloud storage using iTwin/object-storage cloud providers
137615
- */
137719
+ */
137616
137720
 
137617
137721
 
137618
137722
  /***/ }),
@@ -138599,6 +138703,137 @@ class RealityDataSourceGoogle3dTilesImpl {
138599
138703
  }
138600
138704
 
138601
138705
 
138706
+ /***/ }),
138707
+
138708
+ /***/ "../../core/frontend/lib/esm/internal/ScriptUtils.js":
138709
+ /*!***********************************************************!*\
138710
+ !*** ../../core/frontend/lib/esm/internal/ScriptUtils.js ***!
138711
+ \***********************************************************/
138712
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
138713
+
138714
+ "use strict";
138715
+ __webpack_require__.r(__webpack_exports__);
138716
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
138717
+ /* harmony export */ getScriptDelta: () => (/* binding */ getScriptDelta)
138718
+ /* harmony export */ });
138719
+ /** @internal */
138720
+ function getScriptDelta(prev, next) {
138721
+ if (!prev || !prev.modelTimelines || prev.modelTimelines.length === 0) {
138722
+ return getAllElementIdsFromScript(next);
138723
+ }
138724
+ const changed = new Set();
138725
+ const prevModels = new Map(prev.modelTimelines.map(m => [m.modelId, m]));
138726
+ const nextModels = new Map(next.modelTimelines.map(m => [m.modelId, m]));
138727
+ for (const modelId of new Set([...prevModels.keys(), ...nextModels.keys()])) {
138728
+ const prevModel = prevModels.get(modelId);
138729
+ const nextModel = nextModels.get(modelId);
138730
+ if (!prevModel || !nextModel) {
138731
+ const timelines = (prevModel ?? nextModel)?.elementTimelines ?? [];
138732
+ for (const timeline of timelines)
138733
+ for (const id of timeline.elementIds)
138734
+ changed.add(id);
138735
+ continue;
138736
+ }
138737
+ const prevTimelineMap = new Map(prevModel.elementTimelines.map(et => [et.batchId, et]));
138738
+ const nextTimelineMap = new Map(nextModel.elementTimelines.map(et => [et.batchId, et]));
138739
+ const allBatchIds = new Set([...prevTimelineMap.keys(), ...nextTimelineMap.keys()]);
138740
+ for (const batchId of allBatchIds) {
138741
+ const prevTimeline = prevTimelineMap.get(batchId);
138742
+ const nextTimeline = nextTimelineMap.get(batchId);
138743
+ if (!prevTimeline || !nextTimeline) {
138744
+ const ids = (prevTimeline ?? nextTimeline)?.elementIds ?? [];
138745
+ for (const id of ids)
138746
+ changed.add(id);
138747
+ continue;
138748
+ }
138749
+ if (!isTimelineEntryEqual(prevTimeline, nextTimeline)) {
138750
+ for (const id of nextTimeline.elementIds)
138751
+ changed.add(id);
138752
+ }
138753
+ }
138754
+ }
138755
+ return changed;
138756
+ }
138757
+ function collectTimelineEntryTimes(timeline) {
138758
+ const result = new Set();
138759
+ if (timeline.cuttingPlane) {
138760
+ for (const entry of timeline.cuttingPlane) {
138761
+ result.add(entry.time);
138762
+ }
138763
+ }
138764
+ if (timeline.visibility) {
138765
+ for (const entry of timeline.visibility) {
138766
+ result.add(entry.time);
138767
+ }
138768
+ }
138769
+ if (timeline.transform) {
138770
+ for (const entry of timeline.transform) {
138771
+ result.add(entry.time);
138772
+ }
138773
+ }
138774
+ if (timeline.color) {
138775
+ for (const entry of timeline.color) {
138776
+ result.add(entry.time);
138777
+ }
138778
+ }
138779
+ return Array.from(result);
138780
+ }
138781
+ function isTimelineEntryEqual(a, b) {
138782
+ const timesSet = new Set([
138783
+ ...collectTimelineEntryTimes(a),
138784
+ ...collectTimelineEntryTimes(b),
138785
+ ]);
138786
+ let times = Array.from(timesSet).sort((x, y) => x - y);
138787
+ if (times.length === 0) {
138788
+ times = [0, 0.25, 0.5, 0.75, 1];
138789
+ }
138790
+ for (const [] of a.elementIds) {
138791
+ for (const t of times) {
138792
+ // Check visibility
138793
+ const v1 = a.getVisibility(t);
138794
+ const v2 = b.getVisibility(t);
138795
+ if (Math.abs(v1 - v2) > 0.01)
138796
+ return false;
138797
+ // Check Transform
138798
+ const tf1 = a.getAnimationTransform(t);
138799
+ const tf2 = b.getAnimationTransform(t);
138800
+ if (!tf1.isAlmostEqual(tf2))
138801
+ return false;
138802
+ // Check Color
138803
+ const c1 = a.getColor(t);
138804
+ const c2 = b.getColor(t);
138805
+ if ((c1 === undefined) !== (c2 === undefined))
138806
+ return false;
138807
+ if (c1 !== undefined && !c1.equals(c2))
138808
+ return false;
138809
+ // Cutting Plane (CLIPPING)
138810
+ const clip1 = a.getCuttingPlane?.(t);
138811
+ const clip2 = b.getCuttingPlane?.(t);
138812
+ const oneUndefined = (clip1 === undefined) !== (clip2 === undefined);
138813
+ if (oneUndefined)
138814
+ return false;
138815
+ if (clip1 && clip2) {
138816
+ if (!clip1.getOriginRef().isAlmostEqual(clip2.getOriginRef(), 1e-6) ||
138817
+ !clip1.getNormalRef().isAlmostEqual(clip2.getNormalRef(), 1e-6)) {
138818
+ return false;
138819
+ }
138820
+ }
138821
+ }
138822
+ }
138823
+ return true;
138824
+ }
138825
+ function getAllElementIdsFromScript(script) {
138826
+ const ids = new Set();
138827
+ for (const modelTimeline of script.modelTimelines) {
138828
+ for (const elementTimeline of modelTimeline.elementTimelines) {
138829
+ for (const id of elementTimeline.elementIds)
138830
+ ids.add(id);
138831
+ }
138832
+ }
138833
+ return ids;
138834
+ }
138835
+
138836
+
138602
138837
  /***/ }),
138603
138838
 
138604
138839
  /***/ "../../core/frontend/lib/esm/internal/cross-package.js":
@@ -172222,6 +172457,19 @@ class DynamicState {
172222
172457
  };
172223
172458
  }
172224
172459
  }
172460
+ class ScheduleScriptDynamicState {
172461
+ type = "dynamic";
172462
+ rootTile;
172463
+ _dispose;
172464
+ [Symbol.dispose]() {
172465
+ this._dispose();
172466
+ this.rootTile[Symbol.dispose]();
172467
+ }
172468
+ constructor(root, elemChanges) {
172469
+ this.rootTile = _tile_internal__WEBPACK_IMPORTED_MODULE_6__.DynamicIModelTile.create(root, elemChanges);
172470
+ this._dispose = () => { };
172471
+ }
172472
+ }
172225
172473
  /** The tile tree has been disposed. */
172226
172474
  class DisposedState {
172227
172475
  type = "disposed";
@@ -172460,6 +172708,51 @@ class IModelTileTree extends _tile_internal__WEBPACK_IMPORTED_MODULE_6__.TileTre
172460
172708
  get containsTransformNodes() {
172461
172709
  return undefined !== this._transformNodeRanges;
172462
172710
  }
172711
+ async onScheduleEditingChanged(changes) {
172712
+ const displayStyle = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.viewManager.selectedView?.displayStyle;
172713
+ const newScript = displayStyle?.scheduleScript;
172714
+ const scriptRef = newScript ? new _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.RenderSchedule.ScriptReference(displayStyle.id, newScript) : undefined;
172715
+ const scriptInfo = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.getScriptInfoForTreeId(this.modelId, scriptRef);
172716
+ if (scriptInfo?.timeline && this.timeline !== scriptInfo.timeline) {
172717
+ this.decoder = (0,_tile_internal__WEBPACK_IMPORTED_MODULE_6__.acquireImdlDecoder)({
172718
+ type: this.batchType,
172719
+ omitEdges: this.edgeOptions === false,
172720
+ timeline: scriptInfo.timeline,
172721
+ iModel: this.iModel,
172722
+ batchModelId: this.modelId,
172723
+ is3d: this.is3d,
172724
+ containsTransformNodes: this.containsTransformNodes,
172725
+ noWorker: !_IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.decodeImdlInWorker,
172726
+ });
172727
+ this._options.timeline = scriptInfo.timeline;
172728
+ }
172729
+ const relevantChange = changes.find((c) => c.timeline.modelId === this.modelId);
172730
+ if (!relevantChange || relevantChange.elements.size === 0)
172731
+ return;
172732
+ const elementIds = Array.from(relevantChange.elements);
172733
+ const placements = await this.iModel.elements.getPlacements(elementIds, {
172734
+ type: this.is3d ? "3d" : "2d",
172735
+ });
172736
+ if (placements.length === 0)
172737
+ return;
172738
+ const changedElements = placements.map((x) => {
172739
+ return {
172740
+ id: x.elementId,
172741
+ type: _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.DbOpcode.Update,
172742
+ range: x.calculateRange(),
172743
+ };
172744
+ });
172745
+ if (changedElements.length === 0)
172746
+ return;
172747
+ if (this._rootTile.tileState.type === "dynamic") {
172748
+ this._rootTile.transition(new StaticState(this._rootTile));
172749
+ }
172750
+ this._rootTile.transition(new ScheduleScriptDynamicState(this._rootTile, changedElements));
172751
+ }
172752
+ onScheduleEditingCommitted() {
172753
+ if (this._rootTile.tileState.type !== "static")
172754
+ this._rootTile.transition(new StaticState(this._rootTile));
172755
+ }
172463
172756
  }
172464
172757
 
172465
172758
 
@@ -174839,7 +175132,7 @@ class PrimaryTreeReference extends _tile_internal__WEBPACK_IMPORTED_MODULE_6__.T
174839
175132
  get treeOwner() {
174840
175133
  const newId = this.createTreeId(this.view, this._id.modelId);
174841
175134
  const timeline = _IModelApp__WEBPACK_IMPORTED_MODULE_3__.IModelApp.tileAdmin.getScriptInfoForTreeId(this._id.modelId, this.view.displayStyle[_common_internal_Symbols__WEBPACK_IMPORTED_MODULE_7__._scheduleScriptReference])?.timeline;
174842
- if (0 !== (0,_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.compareIModelTileTreeIds)(newId, this._id.treeId) || timeline !== this._id.timeline) {
175135
+ if (0 !== (0,_itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.compareIModelTileTreeIds)(newId, this._id.treeId) || timeline?.isEditingCommitted) {
174843
175136
  this._id = {
174844
175137
  modelId: this._id.modelId,
174845
175138
  is3d: this._id.is3d,
@@ -184955,6 +185248,7 @@ __webpack_require__.r(__webpack_exports__);
184955
185248
  /* harmony export */ GltfMeshData: () => (/* binding */ GltfMeshData),
184956
185249
  /* harmony export */ GltfReader: () => (/* binding */ GltfReader),
184957
185250
  /* harmony export */ GltfReaderProps: () => (/* binding */ GltfReaderProps),
185251
+ /* harmony export */ getMeshPrimitives: () => (/* binding */ getMeshPrimitives),
184958
185252
  /* harmony export */ readGltf: () => (/* binding */ readGltf),
184959
185253
  /* harmony export */ readGltfGraphics: () => (/* binding */ readGltfGraphics),
184960
185254
  /* harmony export */ readGltfTemplate: () => (/* binding */ readGltfTemplate)
@@ -185269,6 +185563,48 @@ function compareTextureKeys(lhs, rhs) {
185269
185563
  }
185270
185564
  ;
185271
185565
  ;
185566
+ /** @internal exported strictly for testing */
185567
+ function getMeshPrimitives(mesh) {
185568
+ const ext = mesh?.extensions?.EXT_mesh_primitive_restart;
185569
+ const meshPrimitives = mesh?.primitives;
185570
+ if (!meshPrimitives || meshPrimitives.length === 0 || !ext?.primitiveGroups || ext.primitiveGroups.length === 0) {
185571
+ return meshPrimitives;
185572
+ }
185573
+ // Note: per the spec, any violation of the extension's specification should cause us to fall back to mesh.primitives, if detecting the violation is feasible.
185574
+ // Start with a copy of mesh.primitives. For each group, replace the first primitive in the group with a primitive representing the entire group,
185575
+ // and set the rest of the primitives in the group to `undefined`.
185576
+ // This allows us to identify which remaining primitives do not use primitive restart, and any errors involving a primitive appearing in more than one group.
185577
+ const primitives = [...meshPrimitives];
185578
+ for (const group of ext.primitiveGroups) {
185579
+ // Spec: the group must not be empty and all indices must be valid array indices into mesh.primitives.
185580
+ const firstPrimitiveIndex = group.primitives[0];
185581
+ if (undefined === firstPrimitiveIndex || !meshPrimitives[firstPrimitiveIndex]) {
185582
+ return meshPrimitives;
185583
+ }
185584
+ const primitive = { ...meshPrimitives[firstPrimitiveIndex], indices: group.indices };
185585
+ // Spec: primitive restart only supported for these topologies.
185586
+ switch (primitive.mode) {
185587
+ case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.TriangleFan:
185588
+ case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.TriangleStrip:
185589
+ case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.LineStrip:
185590
+ case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.LineLoop:
185591
+ break;
185592
+ default:
185593
+ return meshPrimitives;
185594
+ }
185595
+ for (const primitiveIndex of group.primitives) {
185596
+ const thisPrimitive = primitives[primitiveIndex];
185597
+ // Spec: all primitives must use indexed geometry and a given primitive may appear in at most one group.
185598
+ // Spec: all primitives must have same topology.
185599
+ if (undefined === thisPrimitive?.indices || thisPrimitive.mode !== primitive.mode) {
185600
+ return meshPrimitives;
185601
+ }
185602
+ primitives[primitiveIndex] = undefined;
185603
+ }
185604
+ primitives[firstPrimitiveIndex] = primitive;
185605
+ }
185606
+ return primitives.filter((x) => x !== undefined);
185607
+ }
185272
185608
  /** Deserializes [glTF](https://www.khronos.org/gltf/).
185273
185609
  * @internal
185274
185610
  */
@@ -185856,8 +186192,9 @@ class GltfReader {
185856
186192
  const meshes = [];
185857
186193
  for (const meshKey of (0,_common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.getGltfNodeMeshIds)(node)) {
185858
186194
  const nodeMesh = this._meshes[meshKey];
185859
- if (nodeMesh?.primitives) {
185860
- for (const primitive of nodeMesh.primitives) {
186195
+ const primitives = getMeshPrimitives(nodeMesh);
186196
+ if (primitives) {
186197
+ for (const primitive of primitives) {
185861
186198
  const mesh = this.readMeshPrimitive(primitive, featureTable, thisBias);
185862
186199
  if (mesh) {
185863
186200
  meshes.push(mesh);
@@ -185911,6 +186248,7 @@ class GltfReader {
185911
186248
  let primitiveType = -1;
185912
186249
  switch (meshMode) {
185913
186250
  case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Lines:
186251
+ case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.LineStrip:
185914
186252
  primitiveType = _common_internal_render_MeshPrimitive__WEBPACK_IMPORTED_MODULE_11__.MeshPrimitiveType.Polyline;
185915
186253
  break;
185916
186254
  case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Points:
@@ -185992,7 +186330,8 @@ class GltfReader {
185992
186330
  }
185993
186331
  case _common_internal_render_MeshPrimitive__WEBPACK_IMPORTED_MODULE_11__.MeshPrimitiveType.Polyline:
185994
186332
  case _common_internal_render_MeshPrimitive__WEBPACK_IMPORTED_MODULE_11__.MeshPrimitiveType.Point: {
185995
- if (undefined !== mesh.primitive.polylines && !this.readPolylines(mesh.primitive.polylines, primitive, "indices", _common_internal_render_MeshPrimitive__WEBPACK_IMPORTED_MODULE_11__.MeshPrimitiveType.Point === primitiveType))
186333
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(meshMode === _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Points || meshMode === _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Lines || meshMode === _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.LineStrip);
186334
+ if (undefined !== mesh.primitive.polylines && !this.readPolylines(mesh.primitive.polylines, primitive, "indices", meshMode))
185996
186335
  return undefined;
185997
186336
  break;
185998
186337
  }
@@ -186461,27 +186800,48 @@ class GltfReader {
186461
186800
  }
186462
186801
  return true;
186463
186802
  }
186464
- readPolylines(polylines, json, accessorName, disjoint) {
186465
- const data = this.readBufferData32(json, accessorName);
186803
+ readPolylines(polylines, json, accessorName, mode) {
186804
+ const bufferView = this.getBufferView(json, accessorName);
186805
+ const data = bufferView?.toBufferData(_common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfDataType.UInt32);
186466
186806
  if (undefined === data)
186467
186807
  return false;
186468
186808
  const indices = new Array();
186469
- if (disjoint) {
186470
- for (let i = 0; i < data.count;)
186471
- indices.push(data.buffer[i++]);
186472
- }
186473
- else {
186474
- for (let i = 0; i < data.count;) {
186475
- const index0 = data.buffer[i++];
186476
- const index1 = data.buffer[i++];
186477
- if (0 === indices.length || index0 !== indices[indices.length - 1]) {
186478
- if (indices.length !== 0) {
186479
- polylines.push(new _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MeshPolyline(indices));
186809
+ switch (mode) {
186810
+ case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Points: {
186811
+ for (let i = 0; i < data.count;)
186812
+ indices.push(data.buffer[i++]);
186813
+ break;
186814
+ }
186815
+ case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.Lines: {
186816
+ for (let i = 0; i < data.count;) {
186817
+ const index0 = data.buffer[i++];
186818
+ const index1 = data.buffer[i++];
186819
+ if (0 === indices.length || index0 !== indices[indices.length - 1]) {
186820
+ if (indices.length !== 0) {
186821
+ polylines.push(new _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MeshPolyline(indices));
186822
+ indices.length = 0;
186823
+ }
186824
+ indices.push(index0);
186825
+ }
186826
+ indices.push(index1);
186827
+ }
186828
+ break;
186829
+ }
186830
+ case _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfMeshMode.LineStrip: {
186831
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(undefined !== bufferView); // compiler can't seem to infer this...
186832
+ const restart = _common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfDataType.UnsignedByte === bufferView.type ? 0xff : (_common_gltf_GltfSchema__WEBPACK_IMPORTED_MODULE_12__.GltfDataType.UnsignedShort === bufferView.type ? 0xffff : 0xffffffff);
186833
+ for (const index of data.buffer) {
186834
+ if (index === restart) {
186835
+ if (indices.length > 1) {
186836
+ polylines.push(new _itwin_core_common__WEBPACK_IMPORTED_MODULE_2__.MeshPolyline(indices));
186837
+ }
186480
186838
  indices.length = 0;
186481
186839
  }
186482
- indices.push(index0);
186840
+ else {
186841
+ indices.push(index);
186842
+ }
186483
186843
  }
186484
- indices.push(index1);
186844
+ break;
186485
186845
  }
186486
186846
  }
186487
186847
  if (indices.length !== 0)
@@ -191092,6 +191452,19 @@ class TileTree {
191092
191452
  */
191093
191453
  collectTileGeometry(_collector) {
191094
191454
  }
191455
+ /**
191456
+ * Invoked when a schedule script is edited.
191457
+ * Override to handle updates for affected elements or timelines.
191458
+ *
191459
+ * @internal
191460
+ */
191461
+ async onScheduleEditingChanged(_changes) { }
191462
+ /**
191463
+ * Invoked when a schedule script is committed during editing.
191464
+ * Override in specific tile tree types to handle the change.
191465
+ * @internal
191466
+ */
191467
+ onScheduleEditingCommitted() { }
191095
191468
  }
191096
191469
 
191097
191470
 
@@ -191778,6 +192151,7 @@ __webpack_require__.r(__webpack_exports__);
191778
192151
  /* harmony export */ getCesiumOSMBuildingsUrl: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_69__.getCesiumOSMBuildingsUrl),
191779
192152
  /* harmony export */ getCesiumTerrainProvider: () => (/* reexport safe */ _map_CesiumTerrainProvider__WEBPACK_IMPORTED_MODULE_69__.getCesiumTerrainProvider),
191780
192153
  /* harmony export */ getGcsConverterAvailable: () => (/* reexport safe */ _map_MapTileTree__WEBPACK_IMPORTED_MODULE_66__.getGcsConverterAvailable),
192154
+ /* harmony export */ getMeshPrimitives: () => (/* reexport safe */ _GltfReader__WEBPACK_IMPORTED_MODULE_32__.getMeshPrimitives),
191781
192155
  /* harmony export */ getMeshoptDecoder: () => (/* reexport safe */ _internal_tile_MeshoptCompression__WEBPACK_IMPORTED_MODULE_94__.getMeshoptDecoder),
191782
192156
  /* harmony export */ iModelTileParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTile__WEBPACK_IMPORTED_MODULE_80__.iModelTileParamsFromJSON),
191783
192157
  /* harmony export */ iModelTileTreeParamsFromJSON: () => (/* reexport safe */ _internal_tile_IModelTileTree__WEBPACK_IMPORTED_MODULE_82__.iModelTileTreeParamsFromJSON),
@@ -301033,6 +301407,13 @@ class Box extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
301033
301407
  if (transform.matrix.isSingular())
301034
301408
  return false;
301035
301409
  transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);
301410
+ if (transform.matrix.determinant() < 0.0) {
301411
+ // if mirror, reverse z-axis (origin and direction) to preserve outward normals
301412
+ this._localToWorld.origin.addInPlace(this._localToWorld.matrix.columnZ());
301413
+ this._localToWorld.matrix.scaleColumnsInPlace(1, 1, -1);
301414
+ [this._baseX, this._topX] = [this._topX, this._baseX];
301415
+ [this._baseY, this._topY] = [this._topY, this._baseY];
301416
+ }
301036
301417
  return true;
301037
301418
  }
301038
301419
  /**
@@ -301308,6 +301689,12 @@ class Cone extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
301308
301689
  if (transform.matrix.isSingular())
301309
301690
  return false;
301310
301691
  transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);
301692
+ if (transform.matrix.determinant() < 0.0) {
301693
+ // if mirror, reverse z-axis (origin and direction) to preserve outward normals
301694
+ this._localToWorld.origin.addInPlace(this._localToWorld.matrix.columnZ());
301695
+ this._localToWorld.matrix.scaleColumnsInPlace(1, 1, -1);
301696
+ [this._radiusA, this._radiusB] = [this._radiusB, this._radiusA];
301697
+ }
301311
301698
  return true;
301312
301699
  }
301313
301700
  /**
@@ -301644,11 +302031,16 @@ class LinearSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrim
301644
302031
  tryTransformInPlace(transform) {
301645
302032
  if (transform.matrix.isSingular())
301646
302033
  return false;
301647
- if (this._contour.tryTransformInPlace(transform)) {
301648
- transform.multiplyVector(this._direction, this._direction);
301649
- return true;
302034
+ if (!this._contour.tryTransformInPlace(transform))
302035
+ return false;
302036
+ transform.multiplyVector(this._direction, this._direction);
302037
+ if (transform.matrix.determinant() < 0.0) {
302038
+ // if mirror, reverse the sweep (origin and direction) to preserve outward normals
302039
+ if (!this._contour.tryTransformInPlace(_geometry3d_Transform__WEBPACK_IMPORTED_MODULE_7__.Transform.createTranslation(this._direction)))
302040
+ return false;
302041
+ this._direction.scaleInPlace(-1.0);
301650
302042
  }
301651
- return false;
302043
+ return true;
301652
302044
  }
301653
302045
  /** Return a coordinate frame (right handed unit vectors)
301654
302046
  * * origin on base contour
@@ -301933,7 +302325,7 @@ __webpack_require__.r(__webpack_exports__);
301933
302325
 
301934
302326
  /**
301935
302327
  * A ruled sweep (surface) is a collection of 2 or more contours.
301936
- * * All contours must have identical number and type of geometry. (paths, loops, parity regions, lines, arcs, other curves).
302328
+ * * All contours must have identical number and type of geometry: (paths, loops, parity regions, lines, arcs, other curves).
301937
302329
  * @public
301938
302330
  */
301939
302331
  class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
@@ -301999,6 +302391,10 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
301999
302391
  if (!contour.tryTransformInPlace(transform))
302000
302392
  return false;
302001
302393
  }
302394
+ if (transform.matrix.determinant() < 0.0) {
302395
+ // if mirror, reverse the sweep order to preserve outward normals
302396
+ this._contours.reverse();
302397
+ }
302002
302398
  return true;
302003
302399
  }
302004
302400
  /**
@@ -302266,8 +302662,11 @@ class Sphere extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive
302266
302662
  if (transform.matrix.isSingular())
302267
302663
  return false;
302268
302664
  transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);
302269
- if (transform.matrix.determinant() < 0.0)
302270
- this._latitudeSweep.reverseInPlace();
302665
+ if (transform.matrix.determinant() < 0.0) {
302666
+ // if mirror, reverse z-axis to preserve outward normals
302667
+ this._localToWorld.matrix.scaleColumnsInPlace(1, 1, -1);
302668
+ this._latitudeSweep.setStartEndRadians(-this._latitudeSweep.endRadians, -this._latitudeSweep.startRadians);
302669
+ }
302271
302670
  return true;
302272
302671
  }
302273
302672
  /**
@@ -302923,6 +303322,10 @@ class TorusPipe extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimit
302923
303322
  if (transform.matrix.isSingular())
302924
303323
  return false;
302925
303324
  transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);
303325
+ if (transform.matrix.determinant() < 0.0) {
303326
+ // if mirror, reverse z-axis to preserve outward normals
303327
+ this._localToWorld.matrix.scaleColumnsInPlace(1, 1, -1);
303328
+ }
302926
303329
  return true;
302927
303330
  }
302928
303331
  /**
@@ -329003,7 +329406,7 @@ class Formatter {
329003
329406
  let unitValue = 0.0;
329004
329407
  if (spec.format.type === _FormatEnums__WEBPACK_IMPORTED_MODULE_2__.FormatType.Ratio) {
329005
329408
  if (1 !== spec.format.units.length)
329006
- throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidCompositeFormat, `The Format ${spec.format.name} has an invalid unit specification, we require single presentation unit when using format type 'ratio'`);
329409
+ throw new _Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityError(_Exception__WEBPACK_IMPORTED_MODULE_1__.QuantityStatus.InvalidCompositeFormat, `The Format '${spec.format.name}' with type 'ratio' must have exactly one unit.`);
329007
329410
  try {
329008
329411
  unitValue = (0,_Quantity__WEBPACK_IMPORTED_MODULE_3__.applyConversion)(posMagnitude, unitConversion) + this.FPV_MINTHRESHOLD;
329009
329412
  }
@@ -331501,18 +331904,18 @@ class Settings {
331501
331904
  }
331502
331905
  }
331503
331906
  toString() {
331504
- return `Configurations:
331505
- backend location: ${this.Backend.location},
331506
- backend name: ${this.Backend.name},
331507
- backend version: ${this.Backend.version},
331508
- oidc client id: ${this.oidcClientId},
331509
- oidc scopes: ${this.oidcScopes},
331510
- applicationId: ${this.gprid},
331511
- log level: ${this.logLevel},
331512
- testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
331513
- testing PresentationRpcTest: ${this.runPresentationRpcTests},
331514
- testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
331515
- testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
331907
+ return `Configurations:
331908
+ backend location: ${this.Backend.location},
331909
+ backend name: ${this.Backend.name},
331910
+ backend version: ${this.Backend.version},
331911
+ oidc client id: ${this.oidcClientId},
331912
+ oidc scopes: ${this.oidcScopes},
331913
+ applicationId: ${this.gprid},
331914
+ log level: ${this.logLevel},
331915
+ testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
331916
+ testing PresentationRpcTest: ${this.runPresentationRpcTests},
331917
+ testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
331918
+ testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
331516
331919
  testing iModelWriteRpcTests: ${this.runiModelWriteRpcTests}`;
331517
331920
  }
331518
331921
  }
@@ -331726,7 +332129,7 @@ class TestContext {
331726
332129
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
331727
332130
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
331728
332131
  await core_frontend_1.NoRenderApp.startup({
331729
- applicationVersion: "5.1.0-dev.54",
332132
+ applicationVersion: "5.1.0-dev.56",
331730
332133
  applicationId: this.settings.gprid,
331731
332134
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
331732
332135
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -356813,7 +357216,7 @@ var loadLanguages = instance.loadLanguages;
356813
357216
  /***/ ((module) => {
356814
357217
 
356815
357218
  "use strict";
356816
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.0-dev.54","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
357219
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.1.0-dev.56","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf -g lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/ecschema-metadata":"workspace:*","@itwin/ecschema-rpcinterface-common":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@types/sinon":"^17.0.2","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^8.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^6.0.1","sinon":"^17.0.2","source-map-loader":"^5.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"2.2.0","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.3.0","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
356817
357220
 
356818
357221
  /***/ }),
356819
357222