@itwin/imodel-components-react 4.13.4 → 4.14.1

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.
Files changed (200) hide show
  1. package/CHANGELOG.md +5 -5
  2. package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts.map +1 -1
  3. package/lib/cjs/imodel-components-react/UiIModelComponents.js +1 -2
  4. package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
  5. package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts.map +1 -1
  6. package/lib/cjs/imodel-components-react/color/AlphaSlider.js +0 -16
  7. package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
  8. package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts.map +1 -1
  9. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +0 -1
  10. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  11. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts.map +1 -1
  12. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +0 -1
  13. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  14. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts.map +1 -1
  15. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +0 -4
  16. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  17. package/lib/cjs/imodel-components-react/color/HueSlider.d.ts.map +1 -1
  18. package/lib/cjs/imodel-components-react/color/HueSlider.js +0 -21
  19. package/lib/cjs/imodel-components-react/color/HueSlider.js.map +1 -1
  20. package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts.map +1 -1
  21. package/lib/cjs/imodel-components-react/color/SaturationPicker.js +0 -25
  22. package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
  23. package/lib/cjs/imodel-components-react/color/Swatch.d.ts.map +1 -1
  24. package/lib/cjs/imodel-components-react/color/Swatch.js +0 -1
  25. package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
  26. package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts.map +1 -1
  27. package/lib/cjs/imodel-components-react/editors/ColorEditor.js +2 -13
  28. package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
  29. package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts.map +1 -1
  30. package/lib/cjs/imodel-components-react/editors/WeightEditor.js +2 -11
  31. package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
  32. package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts.map +1 -1
  33. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +0 -6
  34. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  35. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
  36. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +1 -15
  37. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  38. package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts.map +1 -1
  39. package/lib/cjs/imodel-components-react/lineweight/Swatch.js +0 -1
  40. package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
  41. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts.map +1 -1
  42. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +0 -9
  43. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  44. package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts.map +1 -1
  45. package/lib/cjs/imodel-components-react/navigationaids/Cube.js +0 -1
  46. package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
  47. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
  48. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +1 -27
  49. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  50. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +1 -1
  51. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +9 -34
  52. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  53. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts.map +1 -1
  54. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +0 -1
  55. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  56. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.d.ts.map +1 -1
  57. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js +2 -6
  58. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  59. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.d.ts.map +1 -1
  60. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js +2 -12
  61. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  62. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.d.ts.map +1 -1
  63. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js +2 -7
  64. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  65. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +1 -1
  66. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +0 -7
  67. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  68. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts.map +1 -1
  69. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +0 -1
  70. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  71. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts.map +1 -1
  72. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +0 -1
  73. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  74. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts.map +1 -1
  75. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +2 -5
  76. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  77. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts.map +1 -1
  78. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +6 -12
  79. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  80. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +1 -1
  81. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +0 -1
  82. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  83. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts.map +1 -1
  84. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js +2 -10
  85. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  86. package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts.map +1 -1
  87. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +0 -2
  88. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  89. package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts.map +1 -1
  90. package/lib/cjs/imodel-components-react/timeline/Scrubber.js +0 -6
  91. package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +1 -1
  92. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts.map +1 -1
  93. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +0 -1
  94. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  95. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
  96. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +0 -17
  97. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  98. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts.map +1 -1
  99. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +0 -1
  100. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  101. package/lib/esm/imodel-components-react/UiIModelComponents.d.ts.map +1 -1
  102. package/lib/esm/imodel-components-react/UiIModelComponents.js +1 -2
  103. package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
  104. package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts.map +1 -1
  105. package/lib/esm/imodel-components-react/color/AlphaSlider.js +0 -16
  106. package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +1 -1
  107. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts.map +1 -1
  108. package/lib/esm/imodel-components-react/color/ColorPickerButton.js +0 -1
  109. package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  110. package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts.map +1 -1
  111. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js +0 -1
  112. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  113. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts.map +1 -1
  114. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +0 -4
  115. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  116. package/lib/esm/imodel-components-react/color/HueSlider.d.ts.map +1 -1
  117. package/lib/esm/imodel-components-react/color/HueSlider.js +0 -21
  118. package/lib/esm/imodel-components-react/color/HueSlider.js.map +1 -1
  119. package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts.map +1 -1
  120. package/lib/esm/imodel-components-react/color/SaturationPicker.js +0 -25
  121. package/lib/esm/imodel-components-react/color/SaturationPicker.js.map +1 -1
  122. package/lib/esm/imodel-components-react/color/Swatch.d.ts.map +1 -1
  123. package/lib/esm/imodel-components-react/color/Swatch.js +0 -1
  124. package/lib/esm/imodel-components-react/color/Swatch.js.map +1 -1
  125. package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts.map +1 -1
  126. package/lib/esm/imodel-components-react/editors/ColorEditor.js +2 -13
  127. package/lib/esm/imodel-components-react/editors/ColorEditor.js.map +1 -1
  128. package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts.map +1 -1
  129. package/lib/esm/imodel-components-react/editors/WeightEditor.js +2 -11
  130. package/lib/esm/imodel-components-react/editors/WeightEditor.js.map +1 -1
  131. package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts.map +1 -1
  132. package/lib/esm/imodel-components-react/inputs/QuantityInput.js +0 -6
  133. package/lib/esm/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  134. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
  135. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +1 -15
  136. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  137. package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts.map +1 -1
  138. package/lib/esm/imodel-components-react/lineweight/Swatch.js +0 -1
  139. package/lib/esm/imodel-components-react/lineweight/Swatch.js.map +1 -1
  140. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts.map +1 -1
  141. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +0 -9
  142. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  143. package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts.map +1 -1
  144. package/lib/esm/imodel-components-react/navigationaids/Cube.js +0 -1
  145. package/lib/esm/imodel-components-react/navigationaids/Cube.js.map +1 -1
  146. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
  147. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +1 -27
  148. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  149. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +1 -1
  150. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +9 -34
  151. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  152. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts.map +1 -1
  153. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js +0 -1
  154. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  155. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts.map +1 -1
  156. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js +2 -6
  157. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  158. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts.map +1 -1
  159. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js +2 -12
  160. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  161. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts.map +1 -1
  162. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js +2 -7
  163. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  164. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +1 -1
  165. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +0 -7
  166. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  167. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts.map +1 -1
  168. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +0 -1
  169. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  170. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts.map +1 -1
  171. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js +0 -1
  172. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  173. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts.map +1 -1
  174. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +2 -5
  175. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  176. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts.map +1 -1
  177. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js +6 -12
  178. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  179. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +1 -1
  180. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +0 -1
  181. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  182. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts.map +1 -1
  183. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js +2 -10
  184. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  185. package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts.map +1 -1
  186. package/lib/esm/imodel-components-react/timeline/InlineEdit.js +0 -2
  187. package/lib/esm/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  188. package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts.map +1 -1
  189. package/lib/esm/imodel-components-react/timeline/Scrubber.js +0 -6
  190. package/lib/esm/imodel-components-react/timeline/Scrubber.js.map +1 -1
  191. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts.map +1 -1
  192. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js +0 -1
  193. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  194. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
  195. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +0 -17
  196. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  197. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts.map +1 -1
  198. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js +0 -1
  199. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  200. package/package.json +5 -5
@@ -84,7 +84,6 @@ class DrawingNavigationAid extends React.Component {
84
84
  const animation = Math.min(1, this.state.animation +
85
85
  delta / (1000 * (this.props.animationTime || 0.4)));
86
86
  this._updateFrustum();
87
- // istanbul ignore next
88
87
  if (this._mounted) {
89
88
  this.setState({ animation }, () => {
90
89
  this._animationFrame = setTimeout(this._animation, 16.667);
@@ -104,7 +103,6 @@ class DrawingNavigationAid extends React.Component {
104
103
  const startDrawingZoom = this.state.drawingZoom;
105
104
  const startOrigin = this.state.origin;
106
105
  const startRotation = this.state.rotation;
107
- // istanbul ignore next
108
106
  if (this._mounted) {
109
107
  this.setState({
110
108
  startMapOrigin,
@@ -113,7 +111,6 @@ class DrawingNavigationAid extends React.Component {
113
111
  startRotation,
114
112
  startMapExtents,
115
113
  }, () => {
116
- // istanbul ignore else
117
114
  if (this.props.onAnimationEnd)
118
115
  this.props.onAnimationEnd();
119
116
  if (hasViewportMoved)
@@ -127,14 +124,12 @@ class DrawingNavigationAid extends React.Component {
127
124
  this._lastPanTime = t - 16.667;
128
125
  const delta = t - this._lastPanTime;
129
126
  this._lastPanTime = t;
130
- // istanbul ignore else
131
127
  if (!this.state.panningDirection.isAlmostZero && this.state.isMoving) {
132
128
  const { panningDirection } = this.state;
133
129
  const offset = panningDirection.scale(delta / 1000 / this.state.drawingZoom);
134
130
  const mapOrigin = this.state.mapOrigin.plus(offset);
135
131
  const origin = this.state.origin.plus(offset);
136
132
  this._updateFrustum();
137
- // istanbul ignore next
138
133
  if (this._mounted) {
139
134
  this.setState({ mapOrigin, origin, panningDirection }, () => {
140
135
  this._animationFrame = setTimeout(this._panAnimation, 16.667);
@@ -149,7 +144,6 @@ class DrawingNavigationAid extends React.Component {
149
144
  // Synchronize with rotation coming from the Viewport
150
145
  this._handleViewRotationChangeEvent = (args // eslint-disable-line deprecation/deprecation
151
146
  ) => {
152
- // istanbul ignore else
153
147
  if (!this.state.isMoving &&
154
148
  !this.state.isPanning &&
155
149
  this.props.viewport === args.viewport) {
@@ -179,7 +173,6 @@ class DrawingNavigationAid extends React.Component {
179
173
  view: args.viewport.view.clone(),
180
174
  });
181
175
  }
182
- // istanbul ignore next
183
176
  if (this._mounted) {
184
177
  this.setState({
185
178
  startOrigin: origin,
@@ -211,7 +204,6 @@ class DrawingNavigationAid extends React.Component {
211
204
  });
212
205
  };
213
206
  this._handleKeyUp = (event) => {
214
- // istanbul ignore else
215
207
  if (event.key === ts_key_enum_1.Key.Escape.valueOf() &&
216
208
  this.state.mode === MapMode.Opened) {
217
209
  this._closeLargeMap();
@@ -242,7 +234,6 @@ class DrawingNavigationAid extends React.Component {
242
234
  this._processWindowDrag(movement);
243
235
  }
244
236
  else {
245
- // istanbul ignore else
246
237
  if (this.state.isPanning && this.state.mode === MapMode.Opened) {
247
238
  const vect = core_geometry_1.Vector3d.create(movement.x / this.state.drawingZoom, -movement.y / this.state.drawingZoom, 0);
248
239
  const offset = this.state.rotateMinimapWithView || this._isViewport3D()
@@ -266,7 +257,6 @@ class DrawingNavigationAid extends React.Component {
266
257
  this._processWindowEndDrag();
267
258
  }
268
259
  else if (this.state.isPanning) {
269
- // istanbul ignore else
270
260
  if (this.state.mode === MapMode.Opened) {
271
261
  event.stopPropagation();
272
262
  this.setState({ isPanning: false });
@@ -280,7 +270,6 @@ class DrawingNavigationAid extends React.Component {
280
270
  }
281
271
  this._lastClientXY = core_geometry_1.Point2d.create(event.clientX, event.clientY);
282
272
  };
283
- // istanbul ignore next - unable to test touch
284
273
  this._handleWindowTouchStart = (event) => {
285
274
  if (1 !== event.targetTouches.length)
286
275
  return;
@@ -291,7 +280,6 @@ class DrawingNavigationAid extends React.Component {
291
280
  this._lastClientXY = mouseStart.clone();
292
281
  this.setState({ isMoving: true });
293
282
  };
294
- // istanbul ignore next - unable to test touch
295
283
  this._onTouchMove = (event) => {
296
284
  if (1 !== event.targetTouches.length)
297
285
  return;
@@ -301,7 +289,6 @@ class DrawingNavigationAid extends React.Component {
301
289
  this._processWindowDrag(movement);
302
290
  this._lastClientXY = mouse;
303
291
  };
304
- // istanbul ignore next - unable to test touch
305
292
  this._onTouchEnd = (event) => {
306
293
  if (0 !== event.targetTouches.length)
307
294
  return;
@@ -322,9 +309,7 @@ class DrawingNavigationAid extends React.Component {
322
309
  return this.props.openSize;
323
310
  };
324
311
  this._openLargeMap = () => {
325
- // istanbul ignore else
326
312
  if (this.state.mode === MapMode.Closed && this.state.animation === 1.0) {
327
- // istanbul ignore else
328
313
  if (this._rootElement.current) {
329
314
  const rect = this._rootElement.current.getBoundingClientRect();
330
315
  this._rootOffset = rect;
@@ -344,7 +329,6 @@ class DrawingNavigationAid extends React.Component {
344
329
  }
345
330
  };
346
331
  this._closeLargeMap = () => {
347
- // istanbul ignore else
348
332
  if (this.state.mode === MapMode.Opened && this.state.animation === 1.0) {
349
333
  const startMapOrigin = this.state.mapOrigin;
350
334
  const mapOrigin = this.state.origin.clone();
@@ -398,7 +382,6 @@ class DrawingNavigationAid extends React.Component {
398
382
  return norm.scale(magnitude); // norm is only undefined when vect is zero, in which it would have returned at magnitudeVector.isAlmostZero
399
383
  };
400
384
  this._handleWheel = (event) => {
401
- // istanbul ignore else
402
385
  if (this.state.mode === MapMode.Opened && this.state.animation === 1) {
403
386
  const { mapOrigin, drawingZoom } = this.state;
404
387
  const mapSize = this._getOpenedMapSize();
@@ -539,10 +522,10 @@ class DrawingNavigationAid extends React.Component {
539
522
  : halfMapExtents;
540
523
  const viewManager = this.props.viewManagerOverride
541
524
  ? this.props.viewManagerOverride
542
- : /* istanbul ignore next */ core_frontend_1.IModelApp.viewManager;
525
+ : core_frontend_1.IModelApp.viewManager;
543
526
  const screenViewport = this.props.screenViewportOverride
544
527
  ? this.props.screenViewportOverride
545
- : /* istanbul ignore next */ core_frontend_1.ScreenViewport;
528
+ : core_frontend_1.ScreenViewport;
546
529
  const nodes = (React.createElement("div", { className: (0, classnames_1.default)("components-drawing-navigation-aid", this.props.className), "data-testid": "components-drawing-navigation-aid", ref: this._rootElement, onWheel: this._handleWheel, onMouseDown: this._handleDrawingMouseDown, style: rootStyle, role: "presentation" },
547
530
  React.createElement(DrawingNavigationCanvas, { view: this.state.view, viewManagerOverride: viewManager, screenViewportOverride: screenViewport, viewId: viewId, origin: map.plus(offset).minus(mapOffset), extents: e, zoom: dz, rotation: rotateMinimapWithView || is3D ? rotation : core_geometry_1.Matrix3d.createIdentity() }),
548
531
  React.createElement("div", { className: "drawing-container", "data-testid": "drawing-container", ref: this._viewContainerElement },
@@ -622,7 +605,6 @@ class DrawingNavigationAid extends React.Component {
622
605
  setTimeout(() => {
623
606
  const startMapOrigin = this.state.mapOrigin;
624
607
  const mapOrigin = this.state.origin.clone();
625
- // istanbul ignore next
626
608
  if (this._mounted) {
627
609
  this.setState({ startMapOrigin, mapOrigin, animation: 0 }, () => {
628
610
  this._animationFrame = setTimeout(this._animation, 16.667);
@@ -674,7 +656,6 @@ class DrawingNavigationCanvas extends React.Component {
674
656
  super(...arguments);
675
657
  this._canvasElement = React.createRef();
676
658
  this._update = () => {
677
- // istanbul ignore else
678
659
  if (this._vp) {
679
660
  const max = Math.max(this.props.extents.x, this.props.extents.y);
680
661
  this._vp.view.extentLimits = { max, min: core_geometry_1.Constant.oneMillimeter };
@@ -692,11 +673,10 @@ class DrawingNavigationCanvas extends React.Component {
692
673
  if (this._canvasElement.current && this.props.view !== undefined) {
693
674
  const viewManager = this.props.viewManagerOverride
694
675
  ? this.props.viewManagerOverride
695
- : /* istanbul ignore next */ core_frontend_1.IModelApp.viewManager;
696
- /* istanbul ignore next */
676
+ : core_frontend_1.IModelApp.viewManager;
697
677
  const screenViewport = this.props.screenViewportOverride
698
678
  ? this.props.screenViewportOverride
699
- : /* istanbul ignore next */ core_frontend_1.ScreenViewport;
679
+ : core_frontend_1.ScreenViewport;
700
680
  const previousView = viewManager.selectedView;
701
681
  this._vp = screenViewport.create(this._canvasElement.current, this.props.view);
702
682
  this.customizeViewport(this._vp);
@@ -706,35 +686,30 @@ class DrawingNavigationCanvas extends React.Component {
706
686
  }
707
687
  }
708
688
  customizeViewport(vp) {
709
- /* istanbul ignore next */
710
689
  if (vp.logo.style)
711
690
  vp.logo.style.display = "none";
712
- /* istanbul ignore next */
713
691
  if (vp.viewFlags.acsTriad)
714
692
  vp.viewFlags = vp.viewFlags.with("acsTriad", false);
715
693
  }
716
694
  componentDidUpdate(oldProps) {
717
695
  const viewManager = this.props.viewManagerOverride
718
696
  ? this.props.viewManagerOverride
719
- : /* istanbul ignore next */ core_frontend_1.IModelApp.viewManager;
697
+ : core_frontend_1.IModelApp.viewManager;
720
698
  if (this.props.view !== undefined) {
721
699
  if (oldProps.view !== this.props.view) {
722
700
  const screenViewport = this.props.screenViewportOverride
723
701
  ? this.props.screenViewportOverride
724
- : /* istanbul ignore next */ core_frontend_1.ScreenViewport;
702
+ : core_frontend_1.ScreenViewport;
725
703
  if (oldProps !== undefined &&
726
704
  oldProps.viewId !== "" &&
727
705
  oldProps.viewId !== this.props.viewId &&
728
706
  this._vp) {
729
707
  viewManager.dropViewport(this._vp, true);
730
708
  }
731
- // istanbul ignore else
732
709
  if (this._canvasElement.current &&
733
710
  (this.props.canvasSizeOverride ||
734
- /* istanbul ignore next */ (this._canvasElement.current
735
- .clientWidth !== 0 &&
736
- /* istanbul ignore next */ this._canvasElement.current
737
- .clientHeight !== 0))) {
711
+ (this._canvasElement.current.clientWidth !== 0 &&
712
+ this._canvasElement.current.clientHeight !== 0))) {
738
713
  const previousView = viewManager.selectedView;
739
714
  this._vp = screenViewport.create(this._canvasElement.current, this.props.view.clone());
740
715
  this.customizeViewport(this._vp);
@@ -755,7 +730,7 @@ class DrawingNavigationCanvas extends React.Component {
755
730
  if (this._vp) {
756
731
  const viewManager = this.props.viewManagerOverride
757
732
  ? this.props.viewManagerOverride
758
- : /* istanbul ignore next */ core_frontend_1.IModelApp.viewManager;
733
+ : core_frontend_1.IModelApp.viewManager;
759
734
  viewManager.dropViewport(this._vp, true);
760
735
  }
761
736
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DrawingNavigationAid.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/navigationaids/DrawingNavigationAid.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAqC;AACrC,4DAAoC;AACpC,6CAA+B;AAC/B,oDAAsC;AACtC,6CAAkC;AAClC,wDAQ8B;AAO9B,wDAAiE;AAEjE,kDAAyC;AACzC,8DAA2D;AAE3D,iFAA8E;AAC9E,oEAKoC;AAEpC,gDAAgD;AAChD,0DAA0D;AAE1D;;;GAGG;AACH,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,gCAAqB,CAAA;IACrB,gCAAqB,CAAA;AACvB,CAAC,EAHW,OAAO,uBAAP,OAAO,QAGlB;AA6DD;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,KAAK,CAAC,SAG/C;IAiBC,YAAY,KAAgC;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QAjBP,iBAAY,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QACjD,0BAAqB,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAC1D,iBAAY,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QACjD,gBAAW,GAAY,OAAO,CAAC,QAAQ,CAAC;YAC9C,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QAGK,aAAQ,GAAY,KAAK,CAAC;QAkQ1B,kBAAa,GAAG,GAAG,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC,CAAC;QAOM,eAAU,GAAG,GAAG,EAAE;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,SAAS;oBAClB,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC,CACrD,CAAC;gBACF,IAAI,CAAC,cAAc,EAAE,CAAC;gBAEtB,uBAAuB;gBACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;wBAChC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,gBAAgB,GACpB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBACxD,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,uBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,wBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CACX;oBACE,cAAc;oBACd,gBAAgB;oBAChB,WAAW;oBACX,aAAa;oBACb,eAAe;iBAChB,EACD,GAAG,EAAE;oBACH,uBAAuB;oBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;wBAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC3D,IAAI,gBAAgB;wBAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAClD,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAIM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;gBAAE,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC;YACpE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CACnC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CACtC,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,uBAAuB;gBACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE;wBAC1D,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBAChE,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAiCF,qDAAqD;QAC7C,mCAA8B,GAAG,CACvC,IAAiC,CAAC,8CAA8C;UAChF,EAAE;YACF,uBAAuB;YACvB,IACE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACpB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;gBACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EACrC,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;gBACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;gBAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtD,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,WAAW,CAAC;oBAC/C,CAAC,CAAC,WAAW,CAAC;gBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM,SAAS,GACb,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5D,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvD,SAAS,GAAG,SAAS,CAAC,IAAI,CACxB,wBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9D,CAAC;gBACF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;oBAChD,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;wBACtD,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAC9C,OAAO,EACP,QAAQ,CACT,CAAC;oBACR,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EACvB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CACxB,CAAC;oBACF,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;oBAC9C,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC/B,IAAI,CAAC,QAAQ,CAAC;wBACZ,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAC7B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;qBACjC,CAAC,CAAC;gBACL,CAAC;gBACD,uBAAuB;gBACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC;wBACZ,WAAW,EAAE,MAAM;wBACnB,MAAM;wBACN,OAAO;wBACP,aAAa,EAAE,QAAQ;wBACvB,QAAQ;wBACR,cAAc,EAAE,SAAS;wBACzB,SAAS;wBACT,gBAAgB,EAAE,WAAW;wBAC7B,WAAW;qBACZ,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,WAAoB,KAAK,EAAE,EAAE;YACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,WAAW,CAAC;gBAC1D,CAAC,CAAC,WAAW,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,iDAAuB,CAAC,uBAAuB,CAC7C,MAAM,EACN,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC;QAEM,wBAAmB,GAAG,GAAG,EAAE;YACjC,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE;gBAC5C,IAAI,IAAI,CAAC,SAAS;oBAChB,IAAI,CAAC,8BAA8B,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAA0B,EAAE,EAAE;YACpD,uBAAuB;YACvB,IACE,KAAK,CAAC,GAAG,KAAK,iBAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAClC,CAAC;gBACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAY,uBAAO,CAAC,UAAU,EAAE,CAAC;QA2C9C,qBAAgB,GAAG,CAAC,KAAuB,EAAE,EAAE;YACrD,0EAA0E;YAC1E,MAAM,UAAU,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC;QAEM,4BAAuB,GAAG,CAAC,KAAuB,EAAE,EAAE;YAC5D,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;QAEM,2BAAsB,GAAG,CAAC,KAAuB,EAAE,EAAE;YAC3D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,KAAuB,EAAE,EAAE;YACrD,MAAM,KAAK,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,4BAA4B;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,uBAAuB;gBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC/D,MAAM,IAAI,GAAG,wBAAQ,CAAC,MAAM,CAC1B,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACpC,CAAC,CACF,CAAC;oBACF,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;wBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC;wBACnD,CAAC,CAAC,IAAI,CAAC;oBACX,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,KAAuB,EAAE,EAAE;YACxD,MAAM,KAAK,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,IACE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;gBAClC,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,qBAAqB,CAAC,OAAO;oBAClD,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAC7C,CAAC;gBACD,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAChC,uBAAuB;gBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;oBACvC,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,IACL,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC;gBAC9B,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO;oBACxB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvD,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAC1C,CAAC;gBACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC;QAEF,8CAA8C;QACtC,4BAAuB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC/C,IAAI,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;gBAAE,OAAO;YAC7C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,uBAAO,CAAC,MAAM,CAC/B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAC9B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAC/B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,8CAA8C;QACtC,iBAAY,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC3C,IAAI,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;gBAAE,OAAO;YAC7C,MAAM,KAAK,GAAG,uBAAO,CAAC,MAAM,CAC1B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAC9B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAC/B,CAAC;YACF,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,4BAA4B;YAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC;QAEF,8CAA8C;QACtC,gBAAW,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC1C,IAAI,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;gBAAE,OAAO;YAC7C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,KAAK,CAAC,cAAc,CAAC,MAAM;gBACnC,IAAI,CAAC,aAAa,GAAG,uBAAO,CAAC,MAAM,CACjC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAC/B,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAChC,CAAC,CAAC,8DAA8D;YACnE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC;QAkBM,sBAAiB,GAAG,GAAa,EAAE;YACzC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;gBACpC,OAAO,oBAAoB,CAAC,uBAAuB,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC,CAAC;QAEM,sBAAiB,GAAG,GAAa,EAAE;YACzC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;gBACnC,OAAO,oBAAoB,CAAC,uBAAuB,CACjD,IAAI,CAAC,WAAW,CAAC,KAAK,EACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CACrB,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;gBACvE,uBAAuB;gBACvB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,CAAC;gBACD,MAAM,eAAe,GAAG,wBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACnE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,IAAI,CAAC,QAAQ,CACX;oBACE,IAAI,EAAE,OAAO,CAAC,MAAM;oBACpB,QAAQ,EAAE,KAAK;oBACf,SAAS,EAAE,KAAK;oBAChB,UAAU;oBACV,eAAe;oBACf,SAAS,EAAE,CAAC;iBACb,EACD,GAAG,EAAE;oBACH,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrD,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEM,mBAAc,GAAG,GAAG,EAAE;YAC5B,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;gBACvE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5C,MAAM,eAAe,GAAG,wBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACnE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;oBACpB,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,EAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACpB,CAAC;gBACR,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;gBACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAChD,IAAI,CAAC,QAAQ,CACX;oBACE,IAAI,EAAE,OAAO,CAAC,MAAM;oBACpB,cAAc;oBACd,SAAS;oBACT,gBAAgB;oBAChB,WAAW;oBACX,QAAQ,EAAE,KAAK;oBACf,SAAS,EAAE,KAAK;oBAChB,eAAe;oBACf,UAAU;oBACV,gBAAgB,EAAE,wBAAQ,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,CAAC;iBACb,EACD,GAAG,EAAE;oBACH,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC7D,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI;gBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;gBACpB,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,EAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACpB,CAAC;YAER,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAE3E,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,uBAAuB;YAChD,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC,0EAA0E;YAEtG,MAAM,IAAI,GAAG,wBAAQ,CAAC,UAAU,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9C,CAAC;YACF,MAAM,UAAU,GACd,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI;gBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC;YAEX,qBAAqB;YACrB,MAAM,eAAe,GAAG,wBAAQ,CAAC,MAAM,CACrC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAClE,CAAC;YACF,IAAI,eAAe,CAAC,YAAY;gBAAE,OAAO,wBAAQ,CAAC,UAAU,EAAE,CAAC;YAC/D,MAAM,SAAS,GACb,CAAC,IAAI,CAAC,GAAG,CACP,eAAe,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACpD,eAAe,CAChB;gBACC,eAAe,CAAC;gBAClB,YAAY,CAAC;YAEf,MAAM,IAAI,GAAG,wBAAQ,CAAC,UAAU,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9C,CAAC,CAAC,0DAA0D;YAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,4GAA4G;QAC7I,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAAuB,EAAE,EAAE;YACjD,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;gBACrE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC/B,MAAM,IAAI,GAAG,wBAAQ,CAAC,MAAM,CAC1B,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EACrB,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EACtB,CAAC,CACF,CAAC;oBACF,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI;wBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC;wBACnD,CAAC,CAAC,IAAI,CAAC;oBACX,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC/B,MAAM,IAAI,GAAG,wBAAQ,CAAC,MAAM,CAC1B,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,EAC5B,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,EAC7B,CAAC,CACF,CAAC;oBACF,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI;wBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC;wBACnD,CAAC,CAAC,IAAI,CAAC;oBACX,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;QAEM,mBAAc,GAAG,GAAG,EAAE;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAG,EAAE;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtD,CAAC,CAAC,wBAAQ,CAAC,UAAU,EAAE;gBACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;qBAChB,uBAAuB,CAAC,WAAW,CAAC;qBACpC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CACX;gBACE,SAAS,EAAE,CAAC;gBACZ,WAAW;gBACX,MAAM;gBACN,cAAc;gBACd,SAAS;gBACT,aAAa;gBACb,QAAQ,EAAE,wBAAQ,CAAC,cAAc,EAAE;aACpC,EACD,GAAG,EAAE;gBACH,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC7D,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAx0BA,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;QACpD,MAAM,UAAU,GACd,IAAI,KAAK,OAAO,CAAC,MAAM;YACrB,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1B,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,UAAU,CAAC;QAEnC,IAAI,CAAC,KAAK,GAAG;YACX,WAAW,EAAE,uBAAO,CAAC,UAAU,EAAE;YACjC,MAAM,EAAE,uBAAO,CAAC,UAAU,EAAE;YAC5B,OAAO,EAAE,wBAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,aAAa,EAAE,wBAAQ,CAAC,cAAc,EAAE;YACxC,QAAQ,EAAE,wBAAQ,CAAC,cAAc,EAAE;YAEnC,cAAc,EAAE,uBAAO,CAAC,UAAU,EAAE;YACpC,SAAS,EAAE,uBAAO,CAAC,UAAU,EAAE;YAC/B,eAAe;YACf,UAAU;YAEV,UAAU,EAAE,uBAAO,CAAC,UAAU,EAAE;YAChC,gBAAgB,EAAE,wBAAQ,CAAC,UAAU,EAAE;YACvC,gBAAgB,EAAE,GAAG;YACrB,WAAW,EAAE,GAAG;YAEhB,IAAI;YACJ,SAAS,EAAE,GAAG;YAEd,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACnE,IAAI,EAAE,KAAK,CAAC,WAAW;YAEvB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;YAChB,qBAAqB,EACnB,KAAK,CAAC,4BAA4B,KAAK,SAAS;gBAC9C,CAAC,CAAC,KAAK,CAAC,4BAA4B;gBACpC,CAAC,CAAC,KAAK;SACZ,CAAC;IACJ,CAAC;IAED,gBAAgB;IACA,MAAM;QACpB,MAAM,EACJ,WAAW,EACX,MAAM,EACN,OAAO,EACP,aAAa,EACb,QAAQ,EACR,cAAc,EACd,SAAS,EACT,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,MAAM,EACN,IAAI,EACJ,qBAAqB,GACtB,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,MAAM,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,wBAAQ,CAAC,oBAAoB,CACvC,uBAAO,CAAC,sBAAsB,CAC5B,aAAa,CAAC,YAAY,EAAE,EAC5B,CAAC,EACD,QAAQ,CAAC,YAAY,EAAE,CACxB,CACF,CAAC;QACF,MAAM,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,wBAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QAElE,MAAM,SAAS,GAAwB;YACrC,KAAK,EAAE,EAAE,CAAC,CAAC;YACX,MAAM,EAAE,EAAE,CAAC,CAAC;YACZ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;SACpB,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAElC,MAAM,GAAG,GACP,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC,CAAC,wBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GACR,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,wBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,aAAa,KAAK,OAAO,KAAK,KAAK;YAC9C,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE;YACtB,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI;YACjC,eAAe,CAAC,SAAS;gBACvB,WAAW;oBACX,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;oBACxD,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;oBACxD,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;oBACxD,GAAG,KAAK,KAAK,KAAK,SAAS,CAAC;QAChC,MAAM,WAAW,GACf,SAAS,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAC3C,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC7B,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC7D,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACvC,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GACV,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,wBAAQ,CAAC,UAAU,EAAE;YACvB,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEvE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,SAAS,GACb,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,cAAc,CAAC;YAClD,CAAC,CAAC,cAAc,CAAC;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAChC,CAAC,CAAC,0BAA0B,CAAC,yBAAS,CAAC,WAAW,CAAC;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB;YACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB;YACnC,CAAC,CAAC,0BAA0B,CAAC,8BAAc,CAAC;QAC9C,MAAM,KAAK,GAAG,CACZ,6BACE,SAAS,EAAE,IAAA,oBAAU,EACnB,mCAAmC,EACnC,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,iBACW,mCAAmC,EAC/C,GAAG,EAAE,IAAI,CAAC,YAAY,EACtB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,WAAW,EAAE,IAAI,CAAC,uBAAuB,EACzC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAC,cAAc;YAEnB,oBAAC,uBAAuB,IACtB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,mBAAmB,EAAE,WAAW,EAChC,sBAAsB,EAAE,cAAc,EACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EACzC,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,EAAE,EACR,QAAQ,EACN,qBAAqB,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAQ,CAAC,cAAc,EAAE,GAEtE;YACF,6BACE,SAAS,EAAC,mBAAmB,iBACjB,mBAAmB,EAC/B,GAAG,EAAE,IAAI,CAAC,qBAAqB;gBAE/B,6BACE,SAAS,EAAC,qBAAqB,iBACnB,qBAAqB,EACjC,WAAW,EAAE,IAAI,CAAC,sBAAsB,EACxC,YAAY,EAAE,IAAI,CAAC,uBAAuB,EAC1C,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,IAAI,CAAC,YAAY,EACtB,IAAI,EAAC,cAAc,GACnB;gBACD,CAAC,IAAI,IAAI,CACR,6BACE,SAAS,EAAE,IAAA,oBAAU,EAAC,qBAAqB,EAAE,MAAM,EAAE;wBACnD,OAAO,EAAE,qBAAqB;qBAC/B,CAAC,iBACU,qBAAqB,EACjC,KAAK,EACH,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW;wBACrC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;wBACxB,CAAC,CAAC,EAAE,EAER,KAAK,EAAE,uCAAkB,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAC1D,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,IAAI,EAAC,cAAc;oBAEnB,oBAAC,iBAAI,IAAC,QAAQ,EAAE,oBAAC,mCAAa,OAAG,GAAI,CACjC,CACP;gBACA,CAAC,GAAG,CAAC,UAAU,IAAI,CAClB,6BACE,SAAS,EAAC,iBAAiB,iBACf,yBAAyB,EACrC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAChE,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,IAEX,uCAAkB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAC7C,CACP;gBACA,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,IAAI,CAC1C;oBACE,6BACE,SAAS,EAAC,OAAO,iBACL,sBAAsB,EAClC,OAAO,EAAE,IAAI,CAAC,cAAc,EAC5B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC;wBAEZ,6BAAK,SAAS,EAAC,iBAAiB;4BAC9B,oBAAC,iBAAI,IAAC,QAAQ,EAAE,oBAAC,+BAAS,OAAG,GAAI,CAC7B,CACF;oBACN,6BAAK,SAAS,EAAC,MAAM;wBACnB,6BACE,SAAS,EAAC,kBAAkB,iBAChB,wBAAwB,EACpC,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC;4BAEZ,oBAAC,iBAAI,IAAC,QAAQ,EAAE,oBAAC,4BAAM,OAAG,GAAI,CAC1B;wBACN,6BACE,SAAS,EAAC,kBAAkB,iBAChB,yBAAyB,EACrC,OAAO,EAAE,IAAI,CAAC,cAAc,EAC5B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC;4BAEZ,oBAAC,iBAAI,IAAC,QAAQ,EAAE,oBAAC,+BAAS,OAAG,GAAI,CAC7B,CACF,CACL,CACJ,CACG,CACF,CACP,CAAC;QACF,IACE,IAAI,KAAK,OAAO,CAAC,MAAM;YACvB,CAAC,SAAS,KAAK,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAC/D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;YACzE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9C,aAAa,CAAC,EAAE,GAAG,2BAA2B,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IA4Fe,iBAAiB;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,iDAAuB,CAAC,yBAAyB,CAAC,WAAW,CAC3D,IAAI,CAAC,8BAA8B,CACpC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAuB,CAAC,CAAC;QACnE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAA0B,CAAC,CAAC;QACpE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAuB,CAAC,CAAC;QACnE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAmB,CAAC,CAAC;IAC7D,CAAC;IAEe,oBAAoB;QAClC,iDAAuB,CAAC,yBAAyB,CAAC,cAAc,CAC9D,IAAI,CAAC,8BAA8B,CACpC,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAuB,CAAC,CAAC;QACtE,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAA0B,CAAC,CAAC;QACvE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAuB,CAAC,CAAC;QACtE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAmB,CAAC,CAAC;QAC9D,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAE3D,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAChC,2BAA2B,CACV,CAAC;QACpB,IAAI,EAAE,IAAI,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAoGO,kBAAkB,CAAC,QAAiB;QAC1C,MAAM,IAAI,GAAG,wBAAQ,CAAC,MAAM,CAC1B,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACpC,CAAC,CACF,CAAC;QACF,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAC/D,IAAI,CAAC,QAAQ,CACX,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,EACnE,GAAG,EAAE;YACH,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;gBAC/D,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACvC,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5C,uBAAuB;gBACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE;wBAC9D,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC;IACH,CAAC;;AAnhBH,oDA+3BC;AAxmBgB,iCAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAC1C,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,AADlB,CACmB;AA6W9C,gBAAgB;AACF,4CAAuB,GAAG,GAAa,EAAE;IACrD,OAAO,wBAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,AAFoC,CAEnC;AAEF,gBAAgB;AACF,4CAAuB,GAAG,CACtC,WAAmB,CAAC,EACpB,WAAmB,CAAC,EACV,EAAE;IACZ,OAAO,wBAAQ,CAAC,MAAM,CACpB,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,EAC1D,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CACtC,CAAC;AACJ,CAAC,AARoC,CAQnC;AA6MF,gBAAgB;AACF,gDAA2B,GAAG,CAC1C,OAAiB,EACjB,QAAkB,EAClB,EAAE;IACF,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,mFAAmF;IACnF,MAAM,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAElC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE/B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QACjC,MAAM,EAAE,GAAG,QAAQ,GAAG,SAAS,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;QAChC,MAAM,EAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;QACjC,mCAAmC;QACnC,OAAO,wBAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QACjC,MAAM,EAAE,GAAG,QAAQ,GAAG,SAAS,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;QAChC,OAAO,wBAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC,AA7BwC,CA6BvC;AAgBJ,gBAAgB;AAChB,MAAa,uBAAwB,SAAQ,KAAK,CAAC,SAAuC;IAA1F;;QACU,mBAAc,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QA2CnD,YAAO,GAAG,GAAG,EAAE;YACrB,uBAAuB;YACvB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,wBAAQ,CAAC,aAAa,EAAE,CAAC;gBAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;IAyDJ,CAAC;IA3GiB,MAAM;QACpB,OAAO,CACL,6BACE,SAAS,EAAC,gBAAgB,iBACd,gBAAgB,EAC5B,GAAG,EAAE,IAAI,CAAC,cAAc,GACnB,CACR,CAAC;IACJ,CAAC;IAEe,iBAAiB;QAC/B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChC,CAAC,CAAC,0BAA0B,CAAC,yBAAS,CAAC,WAAW,CAAC;YACrD,0BAA0B;YAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB;gBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB;gBACnC,CAAC,CAAC,0BAA0B,CAAC,8BAAc,CAAC;YAC9C,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YAC9C,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,CAC9B,IAAI,CAAC,cAAc,CAAC,OAAO,EAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,KAAK,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,8BAA8B;YAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,EAAkB;QAC1C,0BAA0B;QAC1B,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK;YAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAElD,0BAA0B;QAC1B,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ;YACvB,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAce,kBAAkB,CAAC,QAAsC;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAChC,CAAC,CAAC,0BAA0B,CAAC,yBAAS,CAAC,WAAW,CAAC;QACrD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB;oBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB;oBACnC,CAAC,CAAC,0BAA0B,CAAC,8BAAc,CAAC;gBAC9C,IACE,QAAQ,KAAK,SAAS;oBACtB,QAAQ,CAAC,MAAM,KAAK,EAAE;oBACtB,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;oBACrC,IAAI,CAAC,GAAG,EACR,CAAC;oBACD,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC3C,CAAC;gBACD,uBAAuB;gBACvB,IACE,IAAI,CAAC,cAAc,CAAC,OAAO;oBAC3B,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB;wBAC5B,0BAA0B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO;6BACpD,WAAW,KAAK,CAAC;4BAClB,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO;iCACnD,YAAY,KAAK,CAAC,CAAC,CAAC,EAC3B,CAAC;oBACD,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;oBAC9C,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,CAC9B,IAAI,CAAC,cAAc,CAAC,OAAO,EAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CACxB,CAAC;oBACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,KAAK,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,8BAA8B;oBAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;iBAAM,IACL,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChD,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;gBACjC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACpD,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAEe,oBAAoB;QAClC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChC,CAAC,CAAC,0BAA0B,CAAC,yBAAS,CAAC,WAAW,CAAC;YACrD,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF;AA/GD,0DA+GC","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 NavigationAids\n */\n\nimport \"./DrawingNavigationAid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Key } from \"ts-key-enum\";\nimport {\n Constant,\n Geometry,\n Matrix3d,\n Point2d,\n Point3d,\n Point4d,\n Vector3d,\n} from \"@itwin/core-geometry\";\nimport type {\n IModelConnection,\n ViewManager,\n Viewport,\n ViewState,\n} from \"@itwin/core-frontend\";\nimport { IModelApp, ScreenViewport } from \"@itwin/core-frontend\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Icon } from \"@itwin/core-react\";\nimport { UiIModelComponents } from \"../UiIModelComponents\";\nimport type { ViewRotationChangeEventArgs } from \"../viewport/ViewportComponentEvents\";\nimport { ViewportComponentEvents } from \"../viewport/ViewportComponentEvents\";\nimport {\n SvgAdd,\n SvgRemove,\n SvgRotateLeft,\n SvgSortUp,\n} from \"@itwin/itwinui-icons-react\";\n\n// cSpell:ignore Quaternion Quaternions unrotate\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n\n/**\n * Enum for mode that minimap is currently in\n * @internal\n */\nexport enum MapMode {\n Opened = \"map-opened\",\n Closed = \"map-closed\",\n}\n\n/** Properties for the [[DrawingNavigationAid]] component\n * @public\n */\nexport interface DrawingNavigationAidProps extends CommonProps {\n iModelConnection: IModelConnection;\n viewport?: Viewport;\n\n // used only in testing\n\n /** @internal */\n animationTime?: number;\n /** @internal */\n openSize?: Vector3d;\n /** @internal */\n closeSize?: Vector3d;\n /** @internal */\n initialMapMode?: MapMode;\n /** @internal */\n onAnimationEnd?: () => void;\n /** @internal */\n initialRotateMinimapWithView?: boolean;\n /** @internal */\n initialView?: ViewState;\n /** @internal */\n viewManagerOverride?: ViewManager;\n /** @internal */\n screenViewportOverride?: typeof ScreenViewport;\n}\n\n/** @internal */\ninterface DrawingNavigationAidState {\n startOrigin: Point3d;\n origin: Point3d;\n extents: Vector3d;\n startRotation: Matrix3d;\n rotation: Matrix3d;\n\n startMapOrigin: Point3d;\n mapOrigin: Point3d;\n startMapExtents: Vector3d;\n mapExtents: Vector3d;\n\n mouseStart: Point2d;\n panningDirection: Vector3d;\n startDrawingZoom: number;\n drawingZoom: number;\n\n mode: MapMode;\n animation: number;\n\n isMoving: boolean;\n isPanning: boolean;\n\n viewId: string;\n view: ViewState | undefined;\n\n rotateMinimapWithView: boolean;\n}\n\n/**\n * A Drawing Navigation Aid.\n * @public\n */\nexport class DrawingNavigationAid extends React.Component<\n DrawingNavigationAidProps,\n DrawingNavigationAidState\n> {\n private _rootElement = React.createRef<HTMLDivElement>();\n private _viewContainerElement = React.createRef<HTMLDivElement>();\n private _viewElement = React.createRef<HTMLDivElement>();\n private _rootOffset: DOMRect = DOMRect.fromRect({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n });\n private _viewport: Viewport | undefined;\n private _animationFrame: any;\n private _mounted: boolean = false;\n\n /** @internal */\n public override readonly state: Readonly<DrawingNavigationAidState>;\n\n constructor(props: DrawingNavigationAidProps) {\n super(props);\n const mode = props.initialMapMode || MapMode.Closed;\n const mapExtents =\n mode === MapMode.Closed\n ? this._getClosedMapSize()\n : this._getOpenedMapSize();\n const startMapExtents = mapExtents;\n\n this.state = {\n startOrigin: Point3d.createZero(),\n origin: Point3d.createZero(),\n extents: Vector3d.create(1, 1, 1),\n startRotation: Matrix3d.createIdentity(),\n rotation: Matrix3d.createIdentity(),\n\n startMapOrigin: Point3d.createZero(),\n mapOrigin: Point3d.createZero(),\n startMapExtents,\n mapExtents,\n\n mouseStart: Point2d.createZero(),\n panningDirection: Vector3d.createZero(),\n startDrawingZoom: 1.0,\n drawingZoom: 1.0,\n\n mode,\n animation: 1.0,\n\n viewId: props.initialView !== undefined ? props.initialView.id : \"\",\n view: props.initialView,\n\n isMoving: false,\n isPanning: false,\n rotateMinimapWithView:\n props.initialRotateMinimapWithView !== undefined\n ? props.initialRotateMinimapWithView\n : false,\n };\n }\n\n /** @internal */\n public override render(): React.ReactNode {\n const {\n startOrigin,\n origin,\n extents,\n startRotation,\n rotation,\n startMapOrigin,\n mapOrigin,\n startMapExtents,\n mapExtents,\n startDrawingZoom,\n drawingZoom,\n animation,\n viewId,\n mode,\n rotateMinimapWithView,\n } = this.state;\n\n const a = DrawingNavigationAid._animationFn(animation);\n const rot = Matrix3d.createFromQuaternion(\n Point4d.interpolateQuaternions(\n startRotation.toQuaternion(),\n a,\n rotation.toQuaternion()\n )\n );\n const or = startOrigin.interpolate(a, origin);\n const map = startMapOrigin.interpolate(a, mapOrigin);\n const sz = startMapExtents.interpolate(a, mapExtents);\n const dz = Geometry.interpolate(startDrawingZoom, a, drawingZoom);\n\n const rootStyle: React.CSSProperties = {\n width: sz.x,\n height: sz.y,\n ...this.props.style,\n };\n const is3D = this._isViewport3D();\n\n const tOr =\n rotateMinimapWithView || is3D\n ? rotation.multiplyVector(Vector3d.createFrom(or))\n : Vector3d.createFrom(or);\n const tMap =\n rotateMinimapWithView || is3D\n ? rotation.multiplyVector(Vector3d.createFrom(map))\n : Vector3d.createFrom(map);\n\n const tPosX = (tOr.x - extents.x / 2 - tMap.x) * dz + sz.x / 2;\n const tPosY = (-tOr.y - extents.y / 2 + tMap.y) * dz + sz.y / 2;\n const viewWindowStyle = {\n transform: `translate(${tPosX}px, ${tPosY}px)`,\n height: extents.y * dz,\n width: extents.x * dz,\n };\n if (!rotateMinimapWithView && !is3D)\n viewWindowStyle.transform =\n \"matrix3d(\" +\n `${rot.at(0, 0)}, ${rot.at(1, 0)}, ${rot.at(2, 0)}, 0, ` +\n `${rot.at(0, 1)}, ${rot.at(1, 1)}, ${rot.at(2, 1)}, 0, ` +\n `${rot.at(0, 2)}, ${rot.at(1, 2)}, ${rot.at(2, 2)}, 0, ` +\n `${tPosX}, ${tPosY}, 0, 1)`;\n const isAnimating =\n animation !== 1 && !startMapExtents.isExactEqual(mapExtents);\n if (mode === MapMode.Opened || isAnimating) {\n rootStyle.position = \"fixed\";\n rootStyle.right = window.innerWidth - this._rootOffset.right;\n rootStyle.top = this._rootOffset.top;\n }\n\n const halfExtents = extents.scale(0.5);\n const offset =\n rotateMinimapWithView || is3D\n ? Vector3d.createZero()\n : rotation.multiplyTransposeVector(halfExtents).minus(halfExtents);\n\n const e = sz.scale(1 / dz);\n const halfMapExtents = e.scale(0.5);\n const mapOffset =\n rotateMinimapWithView || is3D\n ? rotation.multiplyTransposeVector(halfMapExtents)\n : halfMapExtents;\n const viewManager = this.props.viewManagerOverride\n ? this.props.viewManagerOverride\n : /* istanbul ignore next */ IModelApp.viewManager;\n const screenViewport = this.props.screenViewportOverride\n ? this.props.screenViewportOverride\n : /* istanbul ignore next */ ScreenViewport;\n const nodes = (\n <div\n className={classnames(\n \"components-drawing-navigation-aid\",\n this.props.className\n )}\n data-testid=\"components-drawing-navigation-aid\"\n ref={this._rootElement}\n onWheel={this._handleWheel}\n onMouseDown={this._handleDrawingMouseDown}\n style={rootStyle}\n role=\"presentation\"\n >\n <DrawingNavigationCanvas\n view={this.state.view}\n viewManagerOverride={viewManager}\n screenViewportOverride={screenViewport}\n viewId={viewId}\n origin={map.plus(offset).minus(mapOffset)}\n extents={e}\n zoom={dz}\n rotation={\n rotateMinimapWithView || is3D ? rotation : Matrix3d.createIdentity()\n }\n />\n <div\n className=\"drawing-container\"\n data-testid=\"drawing-container\"\n ref={this._viewContainerElement}\n >\n <div\n className=\"drawing-view-window\"\n data-testid=\"drawing-view-window\"\n onMouseDown={this._handleWindowMouseDown}\n onTouchStart={this._handleWindowTouchStart}\n style={viewWindowStyle}\n ref={this._viewElement}\n role=\"presentation\"\n />\n {!is3D && (\n <div\n className={classnames(\"toggle-rotate-style\", \"icon\", {\n checked: rotateMinimapWithView,\n })}\n data-testid=\"toggle-rotate-style\"\n style={\n mode === MapMode.Closed && !isAnimating\n ? { bottom: 2, left: 2 }\n : {}\n }\n title={UiIModelComponents.translate(\"drawing.rotateStyle\")}\n onClick={this._toggleRotationMode}\n role=\"presentation\"\n >\n <Icon iconSpec={<SvgRotateLeft />} />\n </div>\n )}\n {!rot.isIdentity && (\n <div\n className=\"unrotate-button\"\n data-testid=\"drawing-unrotate-button\"\n style={mode === MapMode.Closed && !isAnimating ? { top: 2 } : {}}\n onClick={this._handleUnrotate}\n role=\"button\"\n tabIndex={-1}\n >\n {UiIModelComponents.translate(\"drawing.unrotate\")}\n </div>\n )}\n {mode === MapMode.Opened && !isAnimating && (\n <>\n <div\n className=\"close\"\n data-testid=\"drawing-close-button\"\n onClick={this._closeLargeMap}\n role=\"button\"\n tabIndex={-1}\n >\n <div className=\"close-icon icon\">\n <Icon iconSpec={<SvgSortUp />} />\n </div>\n </div>\n <div className=\"zoom\">\n <div\n className=\"zoom-button icon\"\n data-testid=\"drawing-zoom-in-button\"\n onClick={this._handleZoomIn}\n role=\"button\"\n tabIndex={-1}\n >\n <Icon iconSpec={<SvgAdd />} />\n </div>\n <div\n className=\"zoom-button icon\"\n data-testid=\"drawing-zoom-out-button\"\n onClick={this._handleZoomOut}\n role=\"button\"\n tabIndex={-1}\n >\n <Icon iconSpec={<SvgRemove />} />\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n );\n if (\n mode === MapMode.Closed &&\n (animation === 1.0 || startMapExtents.isExactEqual(mapExtents))\n ) {\n return nodes;\n } else {\n let drawingPortal = document.querySelector(\"#components-drawing-portal\");\n if (!drawingPortal) {\n drawingPortal = document.createElement(\"div\");\n drawingPortal.id = \"components-drawing-portal\";\n document.body.appendChild(drawingPortal);\n }\n return ReactDOM.createPortal(nodes, drawingPortal);\n }\n }\n\n private _isViewport3D = () => {\n return this.state.view !== undefined && this.state.view.is3d();\n };\n\n private _lastTime: number | undefined;\n\n private static _animationFn = (t: number) =>\n t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t;\n\n private _animation = () => {\n const t = Date.now();\n const delta = this._lastTime ? t - this._lastTime : 16;\n this._lastTime = t;\n if (this.state.animation !== 1) {\n const animation = Math.min(\n 1,\n this.state.animation +\n delta / (1000 * (this.props.animationTime || 0.4))\n );\n this._updateFrustum();\n\n // istanbul ignore next\n if (this._mounted) {\n this.setState({ animation }, () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n });\n }\n } else {\n this._lastTime = undefined;\n this._animationEnd();\n }\n };\n\n private _animationEnd = () => {\n const hasViewportMoved =\n !this.state.origin.isAlmostEqual(this.state.startOrigin) ||\n !this.state.rotation.isAlmostEqual(this.state.startRotation);\n const startMapOrigin = Point3d.createFrom(this.state.mapOrigin);\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const startDrawingZoom = this.state.drawingZoom;\n const startOrigin = this.state.origin;\n const startRotation = this.state.rotation;\n // istanbul ignore next\n if (this._mounted) {\n this.setState(\n {\n startMapOrigin,\n startDrawingZoom,\n startOrigin,\n startRotation,\n startMapExtents,\n },\n () => {\n // istanbul ignore else\n if (this.props.onAnimationEnd) this.props.onAnimationEnd();\n if (hasViewportMoved) this._updateFrustum(true);\n }\n );\n }\n };\n\n private _lastPanTime: number | undefined;\n\n private _panAnimation = () => {\n const t = Date.now();\n if (this._lastPanTime === undefined) this._lastPanTime = t - 16.667;\n const delta = t - this._lastPanTime;\n this._lastPanTime = t;\n // istanbul ignore else\n if (!this.state.panningDirection.isAlmostZero && this.state.isMoving) {\n const { panningDirection } = this.state;\n const offset = panningDirection.scale(\n delta / 1000 / this.state.drawingZoom\n );\n const mapOrigin = this.state.mapOrigin.plus(offset);\n\n const origin = this.state.origin.plus(offset);\n this._updateFrustum();\n // istanbul ignore next\n if (this._mounted) {\n this.setState({ mapOrigin, origin, panningDirection }, () => {\n this._animationFrame = setTimeout(this._panAnimation, 16.667);\n });\n }\n } else {\n this._lastPanTime = undefined;\n this._updateFrustum(true);\n }\n };\n\n public override componentDidMount() {\n this._mounted = true;\n ViewportComponentEvents.onViewRotationChangeEvent.addListener(\n this._handleViewRotationChangeEvent\n );\n window.addEventListener(\"mousedown\", this._handleMouseDown as any);\n window.addEventListener(\"mouseup\", this._handleMouseDragEnd as any);\n window.addEventListener(\"mousemove\", this._handleMouseDrag as any);\n window.addEventListener(\"keyup\", this._handleKeyUp as any);\n }\n\n public override componentWillUnmount() {\n ViewportComponentEvents.onViewRotationChangeEvent.removeListener(\n this._handleViewRotationChangeEvent\n );\n window.removeEventListener(\"mousedown\", this._handleMouseDown as any);\n window.removeEventListener(\"mouseup\", this._handleMouseDragEnd as any);\n window.removeEventListener(\"mousemove\", this._handleMouseDrag as any);\n window.removeEventListener(\"keyup\", this._handleKeyUp as any);\n clearTimeout(this._animationFrame);\n if (this.props.onAnimationEnd) this.props.onAnimationEnd();\n\n const rt = document.getElementById(\n \"components-drawing-portal\"\n ) as HTMLDivElement;\n if (rt && rt.parentElement !== null && rt.children.length === 0) {\n rt.parentElement.removeChild(rt);\n }\n this._mounted = false;\n }\n\n // Synchronize with rotation coming from the Viewport\n private _handleViewRotationChangeEvent = (\n args: ViewRotationChangeEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n // istanbul ignore else\n if (\n !this.state.isMoving &&\n !this.state.isPanning &&\n this.props.viewport === args.viewport\n ) {\n const extents = args.viewport.view.getExtents().clone();\n const rotation = args.viewport.view.getRotation().clone();\n const halfExtents = extents.scale(0.5);\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? rotation.multiplyTransposeVector(halfExtents)\n : halfExtents;\n const origin = args.viewport.view.getOrigin().plus(offset);\n const deltaZoom =\n (this.state.extents.x - extents.x) / this.state.extents.x;\n let drawingZoom = this.state.drawingZoom / (1 - deltaZoom);\n const deltaOrigin = origin.minus(this.state.origin);\n let mapOrigin = this.state.mapOrigin.plus(deltaOrigin);\n mapOrigin = mapOrigin.plus(\n Vector3d.createFrom(origin.minus(mapOrigin)).scale(deltaZoom)\n );\n if (this.state.viewId !== args.viewport.view.id) {\n const rect =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? extents\n : DrawingNavigationAid.findRotatedWindowDimensions(\n extents,\n rotation\n );\n const maxRectDim = Math.max(rect.y, rect.x);\n const maxExtentDim = Math.max(\n this.state.mapExtents.x,\n this.state.mapExtents.y\n );\n drawingZoom = maxExtentDim / (3 * maxRectDim);\n mapOrigin = origin.clone();\n this._viewport = args.viewport;\n this.setState({\n viewId: args.viewport.view.id,\n view: args.viewport.view.clone(),\n });\n }\n // istanbul ignore next\n if (this._mounted) {\n this.setState({\n startOrigin: origin,\n origin,\n extents,\n startRotation: rotation,\n rotation,\n startMapOrigin: mapOrigin,\n mapOrigin,\n startDrawingZoom: drawingZoom,\n drawingZoom,\n });\n }\n }\n };\n\n private _updateFrustum = (complete: boolean = false) => {\n const halfExtents = this.state.extents.scale(0.5);\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? this.state.rotation.multiplyTransposeVector(halfExtents)\n : halfExtents;\n const origin = this.state.origin.minus(offset);\n ViewportComponentEvents.setDrawingViewportState(\n origin,\n this.state.rotation,\n complete\n );\n };\n\n private _toggleRotationMode = () => {\n const rotateMinimapWithView = !this.state.rotateMinimapWithView;\n this.setState({ rotateMinimapWithView }, () => {\n if (this._viewport)\n this._handleViewRotationChangeEvent({ viewport: this._viewport });\n });\n };\n\n private _handleKeyUp = (event: React.KeyboardEvent) => {\n // istanbul ignore else\n if (\n event.key === Key.Escape.valueOf() &&\n this.state.mode === MapMode.Opened\n ) {\n this._closeLargeMap();\n }\n };\n\n private _lastClientXY: Point2d = Point2d.createZero();\n\n private _processWindowDrag(movement: Point2d) {\n const vect = Vector3d.create(\n movement.x / this.state.drawingZoom,\n -movement.y / this.state.drawingZoom,\n 0\n );\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? this.state.rotation.multiplyTransposeVector(vect)\n : vect;\n const origin = this.state.origin.plus(offset);\n const panningDirection = this._getPanVector();\n const wasAlmostZero = this.state.panningDirection.isAlmostZero;\n this.setState(\n { startOrigin: origin, origin, panningDirection, isPanning: false },\n () => {\n this._updateFrustum();\n if (wasAlmostZero && !this.state.panningDirection.isAlmostZero) {\n this._animationFrame = setTimeout(this._panAnimation, 16.667);\n }\n }\n );\n }\n\n private _processWindowEndDrag() {\n this.setState({ isMoving: false });\n this._updateFrustum(true);\n if (this.state.mode === MapMode.Closed) {\n setTimeout(() => {\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.origin.clone();\n // istanbul ignore next\n if (this._mounted) {\n this.setState({ startMapOrigin, mapOrigin, animation: 0 }, () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n });\n }\n }, 0);\n }\n }\n\n private _handleMouseDown = (event: React.MouseEvent) => {\n // Used only to determine if mouse was moved between mousedown and mouseup\n const mouseStart = Point2d.create(event.clientX, event.clientY);\n this.setState({ mouseStart });\n this._lastClientXY = Point2d.create(event.clientX, event.clientY);\n };\n\n private _handleDrawingMouseDown = (event: React.MouseEvent) => {\n if (this.state.mode === MapMode.Opened) {\n event.preventDefault();\n this.setState({ isPanning: true });\n }\n };\n\n private _handleWindowMouseDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setState({ isMoving: true });\n };\n\n private _handleMouseDrag = (event: React.MouseEvent) => {\n const mouse = Point2d.create(event.clientX, event.clientY);\n const movement = mouse.minus(this._lastClientXY);\n if (this.state.isMoving) {\n // add scaled mouse movement\n this._processWindowDrag(movement);\n } else {\n // istanbul ignore else\n if (this.state.isPanning && this.state.mode === MapMode.Opened) {\n const vect = Vector3d.create(\n movement.x / this.state.drawingZoom,\n -movement.y / this.state.drawingZoom,\n 0\n );\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? this.state.rotation.multiplyTransposeVector(vect)\n : vect;\n const mapOrigin = this.state.mapOrigin.minus(offset);\n this.setState({ startMapOrigin: mapOrigin, mapOrigin });\n }\n }\n this._lastClientXY = mouse;\n };\n\n private _handleMouseDragEnd = (event: React.MouseEvent) => {\n const mouse = Point2d.create(event.clientX, event.clientY);\n if (\n mouse.isAlmostEqual(this.state.mouseStart) &&\n this.state.mode === MapMode.Closed &&\n (event.target === this._viewContainerElement.current ||\n event.target === this._viewElement.current)\n ) {\n this._openLargeMap();\n } else if (this.state.isMoving) {\n this._processWindowEndDrag();\n } else if (this.state.isPanning) {\n // istanbul ignore else\n if (this.state.mode === MapMode.Opened) {\n event.stopPropagation();\n this.setState({ isPanning: false });\n }\n } else if (\n (!(event.target instanceof Node) ||\n (this._rootElement.current &&\n !this._rootElement.current.contains(event.target))) &&\n mouse.isAlmostEqual(this.state.mouseStart)\n ) {\n this._closeLargeMap();\n }\n this._lastClientXY = Point2d.create(event.clientX, event.clientY);\n };\n\n // istanbul ignore next - unable to test touch\n private _handleWindowTouchStart = (event: any) => {\n if (1 !== event.targetTouches.length) return;\n window.addEventListener(\"touchmove\", this._onTouchMove, false);\n window.addEventListener(\"touchend\", this._onTouchEnd, false);\n const mouseStart = Point2d.create(\n event.targetTouches[0].clientX,\n event.targetTouches[0].clientY\n );\n this.setState({ mouseStart });\n this._lastClientXY = mouseStart.clone();\n this.setState({ isMoving: true });\n };\n\n // istanbul ignore next - unable to test touch\n private _onTouchMove = (event: TouchEvent) => {\n if (1 !== event.targetTouches.length) return;\n const mouse = Point2d.create(\n event.targetTouches[0].clientX,\n event.targetTouches[0].clientY\n );\n const movement = mouse.minus(this._lastClientXY);\n // add scaled mouse movement\n this._processWindowDrag(movement);\n this._lastClientXY = mouse;\n };\n\n // istanbul ignore next - unable to test touch\n private _onTouchEnd = (event: TouchEvent) => {\n if (0 !== event.targetTouches.length) return;\n this._processWindowEndDrag();\n if (0 !== event.changedTouches.length)\n this._lastClientXY = Point2d.create(\n event.changedTouches[0].clientX,\n event.changedTouches[0].clientY\n ); // Doesn't seem necessary...but _handleMouseDragEnd sets it...\n window.removeEventListener(\"touchmove\", this._onTouchMove);\n window.removeEventListener(\"touchend\", this._onTouchEnd);\n };\n\n /** @internal */\n public static getDefaultClosedMapSize = (): Vector3d => {\n return Vector3d.create(96, 96);\n };\n\n /** @internal */\n public static getDefaultOpenedMapSize = (\n paddingX: number = 0,\n paddingY: number = 0\n ): Vector3d => {\n return Vector3d.create(\n window.innerWidth / 3 - 2 * (window.innerWidth - paddingX),\n window.innerHeight / 3 - 2 * paddingY\n );\n };\n\n private _getClosedMapSize = (): Vector3d => {\n if (this.props.closeSize === undefined)\n return DrawingNavigationAid.getDefaultClosedMapSize();\n return this.props.closeSize;\n };\n\n private _getOpenedMapSize = (): Vector3d => {\n if (this.props.openSize === undefined)\n return DrawingNavigationAid.getDefaultOpenedMapSize(\n this._rootOffset.right,\n this._rootOffset.top\n );\n return this.props.openSize;\n };\n\n private _openLargeMap = () => {\n // istanbul ignore else\n if (this.state.mode === MapMode.Closed && this.state.animation === 1.0) {\n // istanbul ignore else\n if (this._rootElement.current) {\n const rect = this._rootElement.current.getBoundingClientRect();\n this._rootOffset = rect;\n }\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const mapExtents = this._getOpenedMapSize();\n this.setState(\n {\n mode: MapMode.Opened,\n isMoving: false,\n isPanning: false,\n mapExtents,\n startMapExtents,\n animation: 0,\n },\n () => {\n this._animationFrame = setTimeout(this._animation);\n }\n );\n }\n };\n\n private _closeLargeMap = () => {\n // istanbul ignore else\n if (this.state.mode === MapMode.Opened && this.state.animation === 1.0) {\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.origin.clone();\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const mapExtents = this._getClosedMapSize();\n const rect =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? this.state.extents\n : DrawingNavigationAid.findRotatedWindowDimensions(\n this.state.extents,\n this.state.rotation\n );\n const maxRectDim = Math.max(rect.y, rect.x);\n const maxExtentDim = Math.max(mapExtents.x, mapExtents.y);\n const drawingZoom = maxExtentDim / (3 * maxRectDim);\n const startDrawingZoom = this.state.drawingZoom;\n this.setState(\n {\n mode: MapMode.Closed,\n startMapOrigin,\n mapOrigin,\n startDrawingZoom,\n drawingZoom,\n isMoving: false,\n isPanning: false,\n startMapExtents,\n mapExtents,\n panningDirection: Vector3d.createZero(),\n animation: 0,\n },\n () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n }\n );\n }\n };\n\n private _getPanVector = () => {\n const is3D = this._isViewport3D();\n const rect =\n this.state.rotateMinimapWithView || is3D\n ? this.state.extents\n : DrawingNavigationAid.findRotatedWindowDimensions(\n this.state.extents,\n this.state.rotation\n );\n\n const mapExtents = this.state.mapExtents.scale(1 / this.state.drawingZoom);\n\n const maxMagnitude = 80; // maximum acceleration\n const magnitudeTravel = 30; // How far, in pixels, that magnitude increases from 0 to max acceleration\n\n const diff = Vector3d.createFrom(\n this.state.origin.minus(this.state.mapOrigin)\n );\n const diffVector =\n this.state.rotateMinimapWithView || is3D\n ? this.state.rotation.multiplyVector(diff)\n : diff;\n\n // capture any values\n const magnitudeVector = Vector3d.create(\n Math.max(0, Math.abs(diffVector.x) - (mapExtents.x - rect.x) / 2),\n Math.max(0, Math.abs(diffVector.y) - (mapExtents.y - rect.y) / 2)\n );\n if (magnitudeVector.isAlmostZero) return Vector3d.createZero();\n const magnitude =\n (Math.min(\n magnitudeVector.magnitude() * this.state.drawingZoom,\n magnitudeTravel\n ) /\n magnitudeTravel) *\n maxMagnitude;\n\n const vect = Vector3d.createFrom(\n this.state.origin.minus(this.state.mapOrigin)\n ); // vect will never be zero or magnitude would also be zero\n const norm = vect.normalize();\n return norm!.scale(magnitude); // norm is only undefined when vect is zero, in which it would have returned at magnitudeVector.isAlmostZero\n };\n\n private _handleWheel = (event: React.WheelEvent) => {\n // istanbul ignore else\n if (this.state.mode === MapMode.Opened && this.state.animation === 1) {\n const { mapOrigin, drawingZoom } = this.state;\n const mapSize = this._getOpenedMapSize();\n\n const mouseX = event.clientX - this._rootOffset.right + mapSize.x / 2;\n const mouseY = event.clientY - this._rootOffset.top - mapSize.y / 2;\n const is3D = this._isViewport3D();\n if (event.deltaY < 0) {\n const zoom = drawingZoom * 1.1;\n const vect = Vector3d.create(\n (mouseX * 0.1) / zoom,\n (-mouseY * 0.1) / zoom,\n 0\n );\n const offset =\n this.state.rotateMinimapWithView || is3D\n ? this.state.rotation.multiplyTransposeVector(vect)\n : vect;\n const m = mapOrigin.plus(offset);\n this.setState({ mapOrigin: m, drawingZoom: zoom });\n }\n if (event.deltaY > 0) {\n const zoom = drawingZoom / 1.1;\n const vect = Vector3d.create(\n (mouseX * 0.1) / drawingZoom,\n (-mouseY * 0.1) / drawingZoom,\n 0\n );\n const offset =\n this.state.rotateMinimapWithView || is3D\n ? this.state.rotation.multiplyTransposeVector(vect)\n : vect;\n const m = mapOrigin.minus(offset);\n this.setState({ mapOrigin: m, drawingZoom: zoom });\n }\n }\n };\n\n private _handleZoomIn = () => {\n const zoom = this.state.drawingZoom * 1.4;\n this.setState({ drawingZoom: zoom });\n };\n\n private _handleZoomOut = () => {\n const zoom = this.state.drawingZoom / 1.4;\n this.setState({ drawingZoom: zoom });\n };\n\n private _handleUnrotate = () => {\n const startRotation = this.state.rotation;\n const halfExtents = this.state.extents.scale(0.5);\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? Vector3d.createZero()\n : this.state.rotation\n .multiplyTransposeVector(halfExtents)\n .minus(halfExtents);\n const startOrigin = this.state.origin;\n const origin = this.state.origin.plus(offset);\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.mapOrigin.plus(offset);\n this.setState(\n {\n animation: 0,\n startOrigin,\n origin,\n startMapOrigin,\n mapOrigin,\n startRotation,\n rotation: Matrix3d.createIdentity(),\n },\n () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n }\n );\n };\n\n /** @internal */\n public static findRotatedWindowDimensions = (\n extents: Vector3d,\n rotation: Matrix3d\n ) => {\n const cos = rotation.at(0, 0);\n const sin = rotation.at(1, 0);\n // extents.x/y should be divided in half, but we don't have to do that immediately.\n const cosWidth = cos * extents.x;\n const sinHeight = sin * extents.y;\n\n const sinWidth = cos * extents.x;\n const cosHeight = sin * extents.y;\n\n const a = Math.atan2(sin, cos);\n\n if (a % Math.PI >= 0 && a % Math.PI < Math.PI / 2) {\n const y1 = -cosHeight - sinWidth;\n const x2 = cosWidth + sinHeight;\n const y3 = cosHeight + sinWidth;\n const x4 = -cosWidth - sinHeight;\n // Instead, divide total difference\n return Vector3d.create(Math.abs(x2 - x4) / 2, Math.abs(y1 - y3) / 2);\n } else {\n const x1 = -cosWidth + sinHeight;\n const y2 = -cosHeight + sinWidth;\n const x3 = cosWidth - sinHeight;\n const y4 = cosHeight - sinWidth;\n return Vector3d.create(Math.abs(x1 - x3) / 2, Math.abs(y2 - y4) / 2);\n }\n };\n}\n\n/** @internal */\nexport interface DrawingNavigationCanvasProps {\n view: ViewState | undefined;\n viewId?: string;\n origin: Point3d;\n extents: Vector3d;\n zoom: number;\n rotation: Matrix3d;\n viewManagerOverride?: ViewManager;\n screenViewportOverride?: typeof ScreenViewport;\n canvasSizeOverride?: boolean;\n}\n\n/** @internal */\nexport class DrawingNavigationCanvas extends React.Component<DrawingNavigationCanvasProps> {\n private _canvasElement = React.createRef<HTMLDivElement>();\n private _vp?: ScreenViewport;\n\n public override render(): React.ReactNode {\n return (\n <div\n className=\"drawing-canvas\"\n data-testid=\"drawing-canvas\"\n ref={this._canvasElement}\n ></div>\n );\n }\n\n public override componentDidMount() {\n if (this._canvasElement.current && this.props.view !== undefined) {\n const viewManager = this.props.viewManagerOverride\n ? this.props.viewManagerOverride\n : /* istanbul ignore next */ IModelApp.viewManager;\n /* istanbul ignore next */\n const screenViewport = this.props.screenViewportOverride\n ? this.props.screenViewportOverride\n : /* istanbul ignore next */ ScreenViewport;\n const previousView = viewManager.selectedView;\n this._vp = screenViewport.create(\n this._canvasElement.current,\n this.props.view\n );\n this.customizeViewport(this._vp);\n viewManager.addViewport(this._vp);\n void viewManager.setSelectedView(previousView); // switch to original viewport\n this._update();\n }\n }\n\n private customizeViewport(vp: ScreenViewport): void {\n /* istanbul ignore next */\n if (vp.logo.style) vp.logo.style.display = \"none\";\n\n /* istanbul ignore next */\n if (vp.viewFlags.acsTriad)\n vp.viewFlags = vp.viewFlags.with(\"acsTriad\", false);\n }\n\n private _update = () => {\n // istanbul ignore else\n if (this._vp) {\n const max = Math.max(this.props.extents.x, this.props.extents.y);\n this._vp.view.extentLimits = { max, min: Constant.oneMillimeter };\n this._vp.view.setOrigin(this.props.origin);\n this._vp.view.setRotation(this.props.rotation);\n this._vp.view.setExtents(this.props.extents);\n this._vp.applyViewState(this._vp.view);\n }\n };\n\n public override componentDidUpdate(oldProps: DrawingNavigationCanvasProps) {\n const viewManager = this.props.viewManagerOverride\n ? this.props.viewManagerOverride\n : /* istanbul ignore next */ IModelApp.viewManager;\n if (this.props.view !== undefined) {\n if (oldProps.view !== this.props.view) {\n const screenViewport = this.props.screenViewportOverride\n ? this.props.screenViewportOverride\n : /* istanbul ignore next */ ScreenViewport;\n if (\n oldProps !== undefined &&\n oldProps.viewId !== \"\" &&\n oldProps.viewId !== this.props.viewId &&\n this._vp\n ) {\n viewManager.dropViewport(this._vp, true);\n }\n // istanbul ignore else\n if (\n this._canvasElement.current &&\n (this.props.canvasSizeOverride ||\n /* istanbul ignore next */ (this._canvasElement.current\n .clientWidth !== 0 &&\n /* istanbul ignore next */ this._canvasElement.current\n .clientHeight !== 0))\n ) {\n const previousView = viewManager.selectedView;\n this._vp = screenViewport.create(\n this._canvasElement.current,\n this.props.view.clone()\n );\n this.customizeViewport(this._vp);\n viewManager.addViewport(this._vp);\n void viewManager.setSelectedView(previousView); // switch to original viewport\n this._update();\n }\n } else if (\n !this.props.origin.isExactEqual(oldProps.origin) ||\n !this.props.extents.isExactEqual(oldProps.extents) ||\n this.props.zoom !== oldProps.zoom ||\n !this.props.rotation.isExactEqual(oldProps.rotation)\n ) {\n this._update();\n }\n }\n }\n\n public override componentWillUnmount() {\n if (this._vp) {\n const viewManager = this.props.viewManagerOverride\n ? this.props.viewManagerOverride\n : /* istanbul ignore next */ IModelApp.viewManager;\n viewManager.dropViewport(this._vp, true);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"DrawingNavigationAid.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/navigationaids/DrawingNavigationAid.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAqC;AACrC,4DAAoC;AACpC,6CAA+B;AAC/B,oDAAsC;AACtC,6CAAkC;AAClC,wDAQ8B;AAO9B,wDAAiE;AAEjE,kDAAyC;AACzC,8DAA2D;AAE3D,iFAA8E;AAC9E,oEAKoC;AAEpC,gDAAgD;AAChD,0DAA0D;AAE1D;;;GAGG;AACH,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,gCAAqB,CAAA;IACrB,gCAAqB,CAAA;AACvB,CAAC,EAHW,OAAO,uBAAP,OAAO,QAGlB;AA6DD;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,KAAK,CAAC,SAG/C;IAiBC,YAAY,KAAgC;QAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QAjBP,iBAAY,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QACjD,0BAAqB,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAC1D,iBAAY,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QACjD,gBAAW,GAAY,OAAO,CAAC,QAAQ,CAAC;YAC9C,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QAGK,aAAQ,GAAY,KAAK,CAAC;QAkQ1B,kBAAa,GAAG,GAAG,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC,CAAC;QAOM,eAAU,GAAG,GAAG,EAAE;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,SAAS;oBAClB,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC,CACrD,CAAC;gBACF,IAAI,CAAC,cAAc,EAAE,CAAC;gBAEtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;wBAChC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,gBAAgB,GACpB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBACxD,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,uBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,wBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CACX;oBACE,cAAc;oBACd,gBAAgB;oBAChB,WAAW;oBACX,aAAa;oBACb,eAAe;iBAChB,EACD,GAAG,EAAE;oBACH,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;wBAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;oBAC3D,IAAI,gBAAgB;wBAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAClD,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAIM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;gBAAE,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC;YACpE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YACpC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CACnC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CACtC,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE;wBAC1D,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBAChE,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAiCF,qDAAqD;QAC7C,mCAA8B,GAAG,CACvC,IAAiC,CAAC,8CAA8C;UAChF,EAAE;YACF,IACE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACpB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;gBACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EACrC,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;gBACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;gBAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtD,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,WAAW,CAAC;oBAC/C,CAAC,CAAC,WAAW,CAAC;gBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM,SAAS,GACb,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5D,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvD,SAAS,GAAG,SAAS,CAAC,IAAI,CACxB,wBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9D,CAAC;gBACF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;oBAChD,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;wBACtD,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAC9C,OAAO,EACP,QAAQ,CACT,CAAC;oBACR,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EACvB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CACxB,CAAC;oBACF,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;oBAC9C,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC/B,IAAI,CAAC,QAAQ,CAAC;wBACZ,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAC7B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;qBACjC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC;wBACZ,WAAW,EAAE,MAAM;wBACnB,MAAM;wBACN,OAAO;wBACP,aAAa,EAAE,QAAQ;wBACvB,QAAQ;wBACR,cAAc,EAAE,SAAS;wBACzB,SAAS;wBACT,gBAAgB,EAAE,WAAW;wBAC7B,WAAW;qBACZ,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,WAAoB,KAAK,EAAE,EAAE;YACrD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,WAAW,CAAC;gBAC1D,CAAC,CAAC,WAAW,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,iDAAuB,CAAC,uBAAuB,CAC7C,MAAM,EACN,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC;QAEM,wBAAmB,GAAG,GAAG,EAAE;YACjC,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE;gBAC5C,IAAI,IAAI,CAAC,SAAS;oBAChB,IAAI,CAAC,8BAA8B,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAA0B,EAAE,EAAE;YACpD,IACE,KAAK,CAAC,GAAG,KAAK,iBAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAClC,CAAC;gBACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAY,uBAAO,CAAC,UAAU,EAAE,CAAC;QA0C9C,qBAAgB,GAAG,CAAC,KAAuB,EAAE,EAAE;YACrD,0EAA0E;YAC1E,MAAM,UAAU,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC;QAEM,4BAAuB,GAAG,CAAC,KAAuB,EAAE,EAAE;YAC5D,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;QAEM,2BAAsB,GAAG,CAAC,KAAuB,EAAE,EAAE;YAC3D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,KAAuB,EAAE,EAAE;YACrD,MAAM,KAAK,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,4BAA4B;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC/D,MAAM,IAAI,GAAG,wBAAQ,CAAC,MAAM,CAC1B,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACpC,CAAC,CACF,CAAC;oBACF,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;wBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC;wBACnD,CAAC,CAAC,IAAI,CAAC;oBACX,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC;QAEM,wBAAmB,GAAG,CAAC,KAAuB,EAAE,EAAE;YACxD,MAAM,KAAK,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,IACE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;gBAClC,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,qBAAqB,CAAC,OAAO;oBAClD,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAC7C,CAAC;gBACD,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;oBACvC,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,IACL,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC;gBAC9B,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO;oBACxB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvD,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAC1C,CAAC;gBACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC;QAEM,4BAAuB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC/C,IAAI,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;gBAAE,OAAO;YAC7C,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,uBAAO,CAAC,MAAM,CAC/B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAC9B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAC/B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC3C,IAAI,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;gBAAE,OAAO;YAC7C,MAAM,KAAK,GAAG,uBAAO,CAAC,MAAM,CAC1B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAC9B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAC/B,CAAC;YACF,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjD,4BAA4B;YAC5B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC;QAEM,gBAAW,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC1C,IAAI,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;gBAAE,OAAO;YAC7C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,KAAK,CAAC,cAAc,CAAC,MAAM;gBACnC,IAAI,CAAC,aAAa,GAAG,uBAAO,CAAC,MAAM,CACjC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAC/B,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAChC,CAAC,CAAC,8DAA8D;YACnE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC;QAkBM,sBAAiB,GAAG,GAAa,EAAE;YACzC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;gBACpC,OAAO,oBAAoB,CAAC,uBAAuB,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC,CAAC;QAEM,sBAAiB,GAAG,GAAa,EAAE;YACzC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;gBACnC,OAAO,oBAAoB,CAAC,uBAAuB,CACjD,IAAI,CAAC,WAAW,CAAC,KAAK,EACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CACrB,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;gBACvE,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;oBAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,CAAC;gBACD,MAAM,eAAe,GAAG,wBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACnE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,IAAI,CAAC,QAAQ,CACX;oBACE,IAAI,EAAE,OAAO,CAAC,MAAM;oBACpB,QAAQ,EAAE,KAAK;oBACf,SAAS,EAAE,KAAK;oBAChB,UAAU;oBACV,eAAe;oBACf,SAAS,EAAE,CAAC;iBACb,EACD,GAAG,EAAE;oBACH,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrD,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEM,mBAAc,GAAG,GAAG,EAAE;YAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;gBACvE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5C,MAAM,eAAe,GAAG,wBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACnE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;oBACpB,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,EAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACpB,CAAC;gBACR,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;gBACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAChD,IAAI,CAAC,QAAQ,CACX;oBACE,IAAI,EAAE,OAAO,CAAC,MAAM;oBACpB,cAAc;oBACd,SAAS;oBACT,gBAAgB;oBAChB,WAAW;oBACX,QAAQ,EAAE,KAAK;oBACf,SAAS,EAAE,KAAK;oBAChB,eAAe;oBACf,UAAU;oBACV,gBAAgB,EAAE,wBAAQ,CAAC,UAAU,EAAE;oBACvC,SAAS,EAAE,CAAC;iBACb,EACD,GAAG,EAAE;oBACH,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC7D,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI;gBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;gBACpB,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,CAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,EAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACpB,CAAC;YAER,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAE3E,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,uBAAuB;YAChD,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC,0EAA0E;YAEtG,MAAM,IAAI,GAAG,wBAAQ,CAAC,UAAU,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9C,CAAC;YACF,MAAM,UAAU,GACd,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI;gBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC;YAEX,qBAAqB;YACrB,MAAM,eAAe,GAAG,wBAAQ,CAAC,MAAM,CACrC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EACjE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAClE,CAAC;YACF,IAAI,eAAe,CAAC,YAAY;gBAAE,OAAO,wBAAQ,CAAC,UAAU,EAAE,CAAC;YAC/D,MAAM,SAAS,GACb,CAAC,IAAI,CAAC,GAAG,CACP,eAAe,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACpD,eAAe,CAChB;gBACC,eAAe,CAAC;gBAClB,YAAY,CAAC;YAEf,MAAM,IAAI,GAAG,wBAAQ,CAAC,UAAU,CAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAC9C,CAAC,CAAC,0DAA0D;YAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,4GAA4G;QAC7I,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAAuB,EAAE,EAAE;YACjD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;gBACrE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC/B,MAAM,IAAI,GAAG,wBAAQ,CAAC,MAAM,CAC1B,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EACrB,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,EACtB,CAAC,CACF,CAAC;oBACF,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI;wBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC;wBACnD,CAAC,CAAC,IAAI,CAAC;oBACX,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;oBAC/B,MAAM,IAAI,GAAG,wBAAQ,CAAC,MAAM,CAC1B,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,EAC5B,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,WAAW,EAC7B,CAAC,CACF,CAAC;oBACF,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI;wBACtC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC;wBACnD,CAAC,CAAC,IAAI,CAAC;oBACX,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;QAEM,mBAAc,GAAG,GAAG,EAAE;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAG,EAAE;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtD,CAAC,CAAC,wBAAQ,CAAC,UAAU,EAAE;gBACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;qBAChB,uBAAuB,CAAC,WAAW,CAAC;qBACpC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CACX;gBACE,SAAS,EAAE,CAAC;gBACZ,WAAW;gBACX,MAAM;gBACN,cAAc;gBACd,SAAS;gBACT,aAAa;gBACb,QAAQ,EAAE,wBAAQ,CAAC,cAAc,EAAE;aACpC,EACD,GAAG,EAAE;gBACH,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC7D,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;QAtzBA,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;QACpD,MAAM,UAAU,GACd,IAAI,KAAK,OAAO,CAAC,MAAM;YACrB,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1B,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,UAAU,CAAC;QAEnC,IAAI,CAAC,KAAK,GAAG;YACX,WAAW,EAAE,uBAAO,CAAC,UAAU,EAAE;YACjC,MAAM,EAAE,uBAAO,CAAC,UAAU,EAAE;YAC5B,OAAO,EAAE,wBAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjC,aAAa,EAAE,wBAAQ,CAAC,cAAc,EAAE;YACxC,QAAQ,EAAE,wBAAQ,CAAC,cAAc,EAAE;YAEnC,cAAc,EAAE,uBAAO,CAAC,UAAU,EAAE;YACpC,SAAS,EAAE,uBAAO,CAAC,UAAU,EAAE;YAC/B,eAAe;YACf,UAAU;YAEV,UAAU,EAAE,uBAAO,CAAC,UAAU,EAAE;YAChC,gBAAgB,EAAE,wBAAQ,CAAC,UAAU,EAAE;YACvC,gBAAgB,EAAE,GAAG;YACrB,WAAW,EAAE,GAAG;YAEhB,IAAI;YACJ,SAAS,EAAE,GAAG;YAEd,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACnE,IAAI,EAAE,KAAK,CAAC,WAAW;YAEvB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;YAChB,qBAAqB,EACnB,KAAK,CAAC,4BAA4B,KAAK,SAAS;gBAC9C,CAAC,CAAC,KAAK,CAAC,4BAA4B;gBACpC,CAAC,CAAC,KAAK;SACZ,CAAC;IACJ,CAAC;IAED,gBAAgB;IACA,MAAM;QACpB,MAAM,EACJ,WAAW,EACX,MAAM,EACN,OAAO,EACP,aAAa,EACb,QAAQ,EACR,cAAc,EACd,SAAS,EACT,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,MAAM,EACN,IAAI,EACJ,qBAAqB,GACtB,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,MAAM,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,wBAAQ,CAAC,oBAAoB,CACvC,uBAAO,CAAC,sBAAsB,CAC5B,aAAa,CAAC,YAAY,EAAE,EAC5B,CAAC,EACD,QAAQ,CAAC,YAAY,EAAE,CACxB,CACF,CAAC;QACF,MAAM,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,wBAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QAElE,MAAM,SAAS,GAAwB;YACrC,KAAK,EAAE,EAAE,CAAC,CAAC;YACX,MAAM,EAAE,EAAE,CAAC,CAAC;YACZ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;SACpB,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAElC,MAAM,GAAG,GACP,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC,CAAC,wBAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GACR,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,wBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,aAAa,KAAK,OAAO,KAAK,KAAK;YAC9C,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE;YACtB,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI;YACjC,eAAe,CAAC,SAAS;gBACvB,WAAW;oBACX,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;oBACxD,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;oBACxD,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;oBACxD,GAAG,KAAK,KAAK,KAAK,SAAS,CAAC;QAChC,MAAM,WAAW,GACf,SAAS,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAC3C,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC7B,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC7D,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACvC,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GACV,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,wBAAQ,CAAC,UAAU,EAAE;YACvB,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEvE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,SAAS,GACb,qBAAqB,IAAI,IAAI;YAC3B,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,cAAc,CAAC;YAClD,CAAC,CAAC,cAAc,CAAC;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAChC,CAAC,CAAC,yBAAS,CAAC,WAAW,CAAC;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB;YACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB;YACnC,CAAC,CAAC,8BAAc,CAAC;QACnB,MAAM,KAAK,GAAG,CACZ,6BACE,SAAS,EAAE,IAAA,oBAAU,EACnB,mCAAmC,EACnC,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,iBACW,mCAAmC,EAC/C,GAAG,EAAE,IAAI,CAAC,YAAY,EACtB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,WAAW,EAAE,IAAI,CAAC,uBAAuB,EACzC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAC,cAAc;YAEnB,oBAAC,uBAAuB,IACtB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,mBAAmB,EAAE,WAAW,EAChC,sBAAsB,EAAE,cAAc,EACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EACzC,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,EAAE,EACR,QAAQ,EACN,qBAAqB,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAQ,CAAC,cAAc,EAAE,GAEtE;YACF,6BACE,SAAS,EAAC,mBAAmB,iBACjB,mBAAmB,EAC/B,GAAG,EAAE,IAAI,CAAC,qBAAqB;gBAE/B,6BACE,SAAS,EAAC,qBAAqB,iBACnB,qBAAqB,EACjC,WAAW,EAAE,IAAI,CAAC,sBAAsB,EACxC,YAAY,EAAE,IAAI,CAAC,uBAAuB,EAC1C,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,IAAI,CAAC,YAAY,EACtB,IAAI,EAAC,cAAc,GACnB;gBACD,CAAC,IAAI,IAAI,CACR,6BACE,SAAS,EAAE,IAAA,oBAAU,EAAC,qBAAqB,EAAE,MAAM,EAAE;wBACnD,OAAO,EAAE,qBAAqB;qBAC/B,CAAC,iBACU,qBAAqB,EACjC,KAAK,EACH,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW;wBACrC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;wBACxB,CAAC,CAAC,EAAE,EAER,KAAK,EAAE,uCAAkB,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAC1D,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,IAAI,EAAC,cAAc;oBAEnB,oBAAC,iBAAI,IAAC,QAAQ,EAAE,oBAAC,mCAAa,OAAG,GAAI,CACjC,CACP;gBACA,CAAC,GAAG,CAAC,UAAU,IAAI,CAClB,6BACE,SAAS,EAAC,iBAAiB,iBACf,yBAAyB,EACrC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAChE,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,IAEX,uCAAkB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAC7C,CACP;gBACA,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,IAAI,CAC1C;oBACE,6BACE,SAAS,EAAC,OAAO,iBACL,sBAAsB,EAClC,OAAO,EAAE,IAAI,CAAC,cAAc,EAC5B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC;wBAEZ,6BAAK,SAAS,EAAC,iBAAiB;4BAC9B,oBAAC,iBAAI,IAAC,QAAQ,EAAE,oBAAC,+BAAS,OAAG,GAAI,CAC7B,CACF;oBACN,6BAAK,SAAS,EAAC,MAAM;wBACnB,6BACE,SAAS,EAAC,kBAAkB,iBAChB,wBAAwB,EACpC,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC;4BAEZ,oBAAC,iBAAI,IAAC,QAAQ,EAAE,oBAAC,4BAAM,OAAG,GAAI,CAC1B;wBACN,6BACE,SAAS,EAAC,kBAAkB,iBAChB,yBAAyB,EACrC,OAAO,EAAE,IAAI,CAAC,cAAc,EAC5B,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC;4BAEZ,oBAAC,iBAAI,IAAC,QAAQ,EAAE,oBAAC,+BAAS,OAAG,GAAI,CAC7B,CACF,CACL,CACJ,CACG,CACF,CACP,CAAC;QACF,IACE,IAAI,KAAK,OAAO,CAAC,MAAM;YACvB,CAAC,SAAS,KAAK,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAC/D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;YACzE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9C,aAAa,CAAC,EAAE,GAAG,2BAA2B,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAuFe,iBAAiB;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,iDAAuB,CAAC,yBAAyB,CAAC,WAAW,CAC3D,IAAI,CAAC,8BAA8B,CACpC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAuB,CAAC,CAAC;QACnE,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAA0B,CAAC,CAAC;QACpE,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAuB,CAAC,CAAC;QACnE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAmB,CAAC,CAAC;IAC7D,CAAC;IAEe,oBAAoB;QAClC,iDAAuB,CAAC,yBAAyB,CAAC,cAAc,CAC9D,IAAI,CAAC,8BAA8B,CACpC,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAuB,CAAC,CAAC;QACtE,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAA0B,CAAC,CAAC;QACvE,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAuB,CAAC,CAAC;QACtE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAmB,CAAC,CAAC;QAC9D,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;YAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAE3D,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAChC,2BAA2B,CACV,CAAC;QACpB,IAAI,EAAE,IAAI,EAAE,CAAC,aAAa,KAAK,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAiGO,kBAAkB,CAAC,QAAiB;QAC1C,MAAM,IAAI,GAAG,wBAAQ,CAAC,MAAM,CAC1B,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACpC,CAAC,CACF,CAAC;QACF,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAC/D,IAAI,CAAC,QAAQ,CACX,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,EACnE,GAAG,EAAE;YACH,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;gBAC/D,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACvC,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE;wBAC9D,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAC7D,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC;IACH,CAAC;;AA1gBH,oDA62BC;AAtlBgB,iCAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAC1C,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,AADlB,CACmB;AA+V9C,gBAAgB;AACF,4CAAuB,GAAG,GAAa,EAAE;IACrD,OAAO,wBAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,AAFoC,CAEnC;AAEF,gBAAgB;AACF,4CAAuB,GAAG,CACtC,WAAmB,CAAC,EACpB,WAAmB,CAAC,EACV,EAAE;IACZ,OAAO,wBAAQ,CAAC,MAAM,CACpB,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,EAC1D,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CACtC,CAAC;AACJ,CAAC,AARoC,CAQnC;AAyMF,gBAAgB;AACF,gDAA2B,GAAG,CAC1C,OAAiB,EACjB,QAAkB,EAClB,EAAE;IACF,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,mFAAmF;IACnF,MAAM,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAElC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE/B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,EAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QACjC,MAAM,EAAE,GAAG,QAAQ,GAAG,SAAS,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;QAChC,MAAM,EAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;QACjC,mCAAmC;QACnC,OAAO,wBAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;QACjC,MAAM,EAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QACjC,MAAM,EAAE,GAAG,QAAQ,GAAG,SAAS,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;QAChC,OAAO,wBAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC,AA7BwC,CA6BvC;AAgBJ,gBAAgB;AAChB,MAAa,uBAAwB,SAAQ,KAAK,CAAC,SAAuC;IAA1F;;QACU,mBAAc,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAyCnD,YAAO,GAAG,GAAG,EAAE;YACrB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,wBAAQ,CAAC,aAAa,EAAE,CAAC;gBAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;IAsDJ,CAAC;IArGiB,MAAM;QACpB,OAAO,CACL,6BACE,SAAS,EAAC,gBAAgB,iBACd,gBAAgB,EAC5B,GAAG,EAAE,IAAI,CAAC,cAAc,GACnB,CACR,CAAC;IACJ,CAAC;IAEe,iBAAiB;QAC/B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChC,CAAC,CAAC,yBAAS,CAAC,WAAW,CAAC;YAE1B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB;gBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB;gBACnC,CAAC,CAAC,8BAAc,CAAC;YACnB,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YAC9C,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,CAC9B,IAAI,CAAC,cAAc,CAAC,OAAO,EAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,KAAK,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,8BAA8B;YAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,EAAkB;QAC1C,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK;YAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAElD,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ;YACvB,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAae,kBAAkB,CAAC,QAAsC;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAChC,CAAC,CAAC,yBAAS,CAAC,WAAW,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACtC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB;oBACtD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB;oBACnC,CAAC,CAAC,8BAAc,CAAC;gBACnB,IACE,QAAQ,KAAK,SAAS;oBACtB,QAAQ,CAAC,MAAM,KAAK,EAAE;oBACtB,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;oBACrC,IAAI,CAAC,GAAG,EACR,CAAC;oBACD,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC3C,CAAC;gBACD,IACE,IAAI,CAAC,cAAc,CAAC,OAAO;oBAC3B,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB;wBAC5B,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC;4BAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,EACpD,CAAC;oBACD,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;oBAC9C,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,CAC9B,IAAI,CAAC,cAAc,CAAC,OAAO,EAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CACxB,CAAC;oBACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,KAAK,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,8BAA8B;oBAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;iBAAM,IACL,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChD,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;gBACjC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACpD,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAEe,oBAAoB;QAClC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChC,CAAC,CAAC,yBAAS,CAAC,WAAW,CAAC;YAC1B,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF;AAzGD,0DAyGC","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 NavigationAids\n */\n\nimport \"./DrawingNavigationAid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Key } from \"ts-key-enum\";\nimport {\n Constant,\n Geometry,\n Matrix3d,\n Point2d,\n Point3d,\n Point4d,\n Vector3d,\n} from \"@itwin/core-geometry\";\nimport type {\n IModelConnection,\n ViewManager,\n Viewport,\n ViewState,\n} from \"@itwin/core-frontend\";\nimport { IModelApp, ScreenViewport } from \"@itwin/core-frontend\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Icon } from \"@itwin/core-react\";\nimport { UiIModelComponents } from \"../UiIModelComponents\";\nimport type { ViewRotationChangeEventArgs } from \"../viewport/ViewportComponentEvents\";\nimport { ViewportComponentEvents } from \"../viewport/ViewportComponentEvents\";\nimport {\n SvgAdd,\n SvgRemove,\n SvgRotateLeft,\n SvgSortUp,\n} from \"@itwin/itwinui-icons-react\";\n\n// cSpell:ignore Quaternion Quaternions unrotate\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n\n/**\n * Enum for mode that minimap is currently in\n * @internal\n */\nexport enum MapMode {\n Opened = \"map-opened\",\n Closed = \"map-closed\",\n}\n\n/** Properties for the [[DrawingNavigationAid]] component\n * @public\n */\nexport interface DrawingNavigationAidProps extends CommonProps {\n iModelConnection: IModelConnection;\n viewport?: Viewport;\n\n // used only in testing\n\n /** @internal */\n animationTime?: number;\n /** @internal */\n openSize?: Vector3d;\n /** @internal */\n closeSize?: Vector3d;\n /** @internal */\n initialMapMode?: MapMode;\n /** @internal */\n onAnimationEnd?: () => void;\n /** @internal */\n initialRotateMinimapWithView?: boolean;\n /** @internal */\n initialView?: ViewState;\n /** @internal */\n viewManagerOverride?: ViewManager;\n /** @internal */\n screenViewportOverride?: typeof ScreenViewport;\n}\n\n/** @internal */\ninterface DrawingNavigationAidState {\n startOrigin: Point3d;\n origin: Point3d;\n extents: Vector3d;\n startRotation: Matrix3d;\n rotation: Matrix3d;\n\n startMapOrigin: Point3d;\n mapOrigin: Point3d;\n startMapExtents: Vector3d;\n mapExtents: Vector3d;\n\n mouseStart: Point2d;\n panningDirection: Vector3d;\n startDrawingZoom: number;\n drawingZoom: number;\n\n mode: MapMode;\n animation: number;\n\n isMoving: boolean;\n isPanning: boolean;\n\n viewId: string;\n view: ViewState | undefined;\n\n rotateMinimapWithView: boolean;\n}\n\n/**\n * A Drawing Navigation Aid.\n * @public\n */\nexport class DrawingNavigationAid extends React.Component<\n DrawingNavigationAidProps,\n DrawingNavigationAidState\n> {\n private _rootElement = React.createRef<HTMLDivElement>();\n private _viewContainerElement = React.createRef<HTMLDivElement>();\n private _viewElement = React.createRef<HTMLDivElement>();\n private _rootOffset: DOMRect = DOMRect.fromRect({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n });\n private _viewport: Viewport | undefined;\n private _animationFrame: any;\n private _mounted: boolean = false;\n\n /** @internal */\n public override readonly state: Readonly<DrawingNavigationAidState>;\n\n constructor(props: DrawingNavigationAidProps) {\n super(props);\n const mode = props.initialMapMode || MapMode.Closed;\n const mapExtents =\n mode === MapMode.Closed\n ? this._getClosedMapSize()\n : this._getOpenedMapSize();\n const startMapExtents = mapExtents;\n\n this.state = {\n startOrigin: Point3d.createZero(),\n origin: Point3d.createZero(),\n extents: Vector3d.create(1, 1, 1),\n startRotation: Matrix3d.createIdentity(),\n rotation: Matrix3d.createIdentity(),\n\n startMapOrigin: Point3d.createZero(),\n mapOrigin: Point3d.createZero(),\n startMapExtents,\n mapExtents,\n\n mouseStart: Point2d.createZero(),\n panningDirection: Vector3d.createZero(),\n startDrawingZoom: 1.0,\n drawingZoom: 1.0,\n\n mode,\n animation: 1.0,\n\n viewId: props.initialView !== undefined ? props.initialView.id : \"\",\n view: props.initialView,\n\n isMoving: false,\n isPanning: false,\n rotateMinimapWithView:\n props.initialRotateMinimapWithView !== undefined\n ? props.initialRotateMinimapWithView\n : false,\n };\n }\n\n /** @internal */\n public override render(): React.ReactNode {\n const {\n startOrigin,\n origin,\n extents,\n startRotation,\n rotation,\n startMapOrigin,\n mapOrigin,\n startMapExtents,\n mapExtents,\n startDrawingZoom,\n drawingZoom,\n animation,\n viewId,\n mode,\n rotateMinimapWithView,\n } = this.state;\n\n const a = DrawingNavigationAid._animationFn(animation);\n const rot = Matrix3d.createFromQuaternion(\n Point4d.interpolateQuaternions(\n startRotation.toQuaternion(),\n a,\n rotation.toQuaternion()\n )\n );\n const or = startOrigin.interpolate(a, origin);\n const map = startMapOrigin.interpolate(a, mapOrigin);\n const sz = startMapExtents.interpolate(a, mapExtents);\n const dz = Geometry.interpolate(startDrawingZoom, a, drawingZoom);\n\n const rootStyle: React.CSSProperties = {\n width: sz.x,\n height: sz.y,\n ...this.props.style,\n };\n const is3D = this._isViewport3D();\n\n const tOr =\n rotateMinimapWithView || is3D\n ? rotation.multiplyVector(Vector3d.createFrom(or))\n : Vector3d.createFrom(or);\n const tMap =\n rotateMinimapWithView || is3D\n ? rotation.multiplyVector(Vector3d.createFrom(map))\n : Vector3d.createFrom(map);\n\n const tPosX = (tOr.x - extents.x / 2 - tMap.x) * dz + sz.x / 2;\n const tPosY = (-tOr.y - extents.y / 2 + tMap.y) * dz + sz.y / 2;\n const viewWindowStyle = {\n transform: `translate(${tPosX}px, ${tPosY}px)`,\n height: extents.y * dz,\n width: extents.x * dz,\n };\n if (!rotateMinimapWithView && !is3D)\n viewWindowStyle.transform =\n \"matrix3d(\" +\n `${rot.at(0, 0)}, ${rot.at(1, 0)}, ${rot.at(2, 0)}, 0, ` +\n `${rot.at(0, 1)}, ${rot.at(1, 1)}, ${rot.at(2, 1)}, 0, ` +\n `${rot.at(0, 2)}, ${rot.at(1, 2)}, ${rot.at(2, 2)}, 0, ` +\n `${tPosX}, ${tPosY}, 0, 1)`;\n const isAnimating =\n animation !== 1 && !startMapExtents.isExactEqual(mapExtents);\n if (mode === MapMode.Opened || isAnimating) {\n rootStyle.position = \"fixed\";\n rootStyle.right = window.innerWidth - this._rootOffset.right;\n rootStyle.top = this._rootOffset.top;\n }\n\n const halfExtents = extents.scale(0.5);\n const offset =\n rotateMinimapWithView || is3D\n ? Vector3d.createZero()\n : rotation.multiplyTransposeVector(halfExtents).minus(halfExtents);\n\n const e = sz.scale(1 / dz);\n const halfMapExtents = e.scale(0.5);\n const mapOffset =\n rotateMinimapWithView || is3D\n ? rotation.multiplyTransposeVector(halfMapExtents)\n : halfMapExtents;\n const viewManager = this.props.viewManagerOverride\n ? this.props.viewManagerOverride\n : IModelApp.viewManager;\n const screenViewport = this.props.screenViewportOverride\n ? this.props.screenViewportOverride\n : ScreenViewport;\n const nodes = (\n <div\n className={classnames(\n \"components-drawing-navigation-aid\",\n this.props.className\n )}\n data-testid=\"components-drawing-navigation-aid\"\n ref={this._rootElement}\n onWheel={this._handleWheel}\n onMouseDown={this._handleDrawingMouseDown}\n style={rootStyle}\n role=\"presentation\"\n >\n <DrawingNavigationCanvas\n view={this.state.view}\n viewManagerOverride={viewManager}\n screenViewportOverride={screenViewport}\n viewId={viewId}\n origin={map.plus(offset).minus(mapOffset)}\n extents={e}\n zoom={dz}\n rotation={\n rotateMinimapWithView || is3D ? rotation : Matrix3d.createIdentity()\n }\n />\n <div\n className=\"drawing-container\"\n data-testid=\"drawing-container\"\n ref={this._viewContainerElement}\n >\n <div\n className=\"drawing-view-window\"\n data-testid=\"drawing-view-window\"\n onMouseDown={this._handleWindowMouseDown}\n onTouchStart={this._handleWindowTouchStart}\n style={viewWindowStyle}\n ref={this._viewElement}\n role=\"presentation\"\n />\n {!is3D && (\n <div\n className={classnames(\"toggle-rotate-style\", \"icon\", {\n checked: rotateMinimapWithView,\n })}\n data-testid=\"toggle-rotate-style\"\n style={\n mode === MapMode.Closed && !isAnimating\n ? { bottom: 2, left: 2 }\n : {}\n }\n title={UiIModelComponents.translate(\"drawing.rotateStyle\")}\n onClick={this._toggleRotationMode}\n role=\"presentation\"\n >\n <Icon iconSpec={<SvgRotateLeft />} />\n </div>\n )}\n {!rot.isIdentity && (\n <div\n className=\"unrotate-button\"\n data-testid=\"drawing-unrotate-button\"\n style={mode === MapMode.Closed && !isAnimating ? { top: 2 } : {}}\n onClick={this._handleUnrotate}\n role=\"button\"\n tabIndex={-1}\n >\n {UiIModelComponents.translate(\"drawing.unrotate\")}\n </div>\n )}\n {mode === MapMode.Opened && !isAnimating && (\n <>\n <div\n className=\"close\"\n data-testid=\"drawing-close-button\"\n onClick={this._closeLargeMap}\n role=\"button\"\n tabIndex={-1}\n >\n <div className=\"close-icon icon\">\n <Icon iconSpec={<SvgSortUp />} />\n </div>\n </div>\n <div className=\"zoom\">\n <div\n className=\"zoom-button icon\"\n data-testid=\"drawing-zoom-in-button\"\n onClick={this._handleZoomIn}\n role=\"button\"\n tabIndex={-1}\n >\n <Icon iconSpec={<SvgAdd />} />\n </div>\n <div\n className=\"zoom-button icon\"\n data-testid=\"drawing-zoom-out-button\"\n onClick={this._handleZoomOut}\n role=\"button\"\n tabIndex={-1}\n >\n <Icon iconSpec={<SvgRemove />} />\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n );\n if (\n mode === MapMode.Closed &&\n (animation === 1.0 || startMapExtents.isExactEqual(mapExtents))\n ) {\n return nodes;\n } else {\n let drawingPortal = document.querySelector(\"#components-drawing-portal\");\n if (!drawingPortal) {\n drawingPortal = document.createElement(\"div\");\n drawingPortal.id = \"components-drawing-portal\";\n document.body.appendChild(drawingPortal);\n }\n return ReactDOM.createPortal(nodes, drawingPortal);\n }\n }\n\n private _isViewport3D = () => {\n return this.state.view !== undefined && this.state.view.is3d();\n };\n\n private _lastTime: number | undefined;\n\n private static _animationFn = (t: number) =>\n t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t;\n\n private _animation = () => {\n const t = Date.now();\n const delta = this._lastTime ? t - this._lastTime : 16;\n this._lastTime = t;\n if (this.state.animation !== 1) {\n const animation = Math.min(\n 1,\n this.state.animation +\n delta / (1000 * (this.props.animationTime || 0.4))\n );\n this._updateFrustum();\n\n if (this._mounted) {\n this.setState({ animation }, () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n });\n }\n } else {\n this._lastTime = undefined;\n this._animationEnd();\n }\n };\n\n private _animationEnd = () => {\n const hasViewportMoved =\n !this.state.origin.isAlmostEqual(this.state.startOrigin) ||\n !this.state.rotation.isAlmostEqual(this.state.startRotation);\n const startMapOrigin = Point3d.createFrom(this.state.mapOrigin);\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const startDrawingZoom = this.state.drawingZoom;\n const startOrigin = this.state.origin;\n const startRotation = this.state.rotation;\n if (this._mounted) {\n this.setState(\n {\n startMapOrigin,\n startDrawingZoom,\n startOrigin,\n startRotation,\n startMapExtents,\n },\n () => {\n if (this.props.onAnimationEnd) this.props.onAnimationEnd();\n if (hasViewportMoved) this._updateFrustum(true);\n }\n );\n }\n };\n\n private _lastPanTime: number | undefined;\n\n private _panAnimation = () => {\n const t = Date.now();\n if (this._lastPanTime === undefined) this._lastPanTime = t - 16.667;\n const delta = t - this._lastPanTime;\n this._lastPanTime = t;\n if (!this.state.panningDirection.isAlmostZero && this.state.isMoving) {\n const { panningDirection } = this.state;\n const offset = panningDirection.scale(\n delta / 1000 / this.state.drawingZoom\n );\n const mapOrigin = this.state.mapOrigin.plus(offset);\n\n const origin = this.state.origin.plus(offset);\n this._updateFrustum();\n if (this._mounted) {\n this.setState({ mapOrigin, origin, panningDirection }, () => {\n this._animationFrame = setTimeout(this._panAnimation, 16.667);\n });\n }\n } else {\n this._lastPanTime = undefined;\n this._updateFrustum(true);\n }\n };\n\n public override componentDidMount() {\n this._mounted = true;\n ViewportComponentEvents.onViewRotationChangeEvent.addListener(\n this._handleViewRotationChangeEvent\n );\n window.addEventListener(\"mousedown\", this._handleMouseDown as any);\n window.addEventListener(\"mouseup\", this._handleMouseDragEnd as any);\n window.addEventListener(\"mousemove\", this._handleMouseDrag as any);\n window.addEventListener(\"keyup\", this._handleKeyUp as any);\n }\n\n public override componentWillUnmount() {\n ViewportComponentEvents.onViewRotationChangeEvent.removeListener(\n this._handleViewRotationChangeEvent\n );\n window.removeEventListener(\"mousedown\", this._handleMouseDown as any);\n window.removeEventListener(\"mouseup\", this._handleMouseDragEnd as any);\n window.removeEventListener(\"mousemove\", this._handleMouseDrag as any);\n window.removeEventListener(\"keyup\", this._handleKeyUp as any);\n clearTimeout(this._animationFrame);\n if (this.props.onAnimationEnd) this.props.onAnimationEnd();\n\n const rt = document.getElementById(\n \"components-drawing-portal\"\n ) as HTMLDivElement;\n if (rt && rt.parentElement !== null && rt.children.length === 0) {\n rt.parentElement.removeChild(rt);\n }\n this._mounted = false;\n }\n\n // Synchronize with rotation coming from the Viewport\n private _handleViewRotationChangeEvent = (\n args: ViewRotationChangeEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n if (\n !this.state.isMoving &&\n !this.state.isPanning &&\n this.props.viewport === args.viewport\n ) {\n const extents = args.viewport.view.getExtents().clone();\n const rotation = args.viewport.view.getRotation().clone();\n const halfExtents = extents.scale(0.5);\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? rotation.multiplyTransposeVector(halfExtents)\n : halfExtents;\n const origin = args.viewport.view.getOrigin().plus(offset);\n const deltaZoom =\n (this.state.extents.x - extents.x) / this.state.extents.x;\n let drawingZoom = this.state.drawingZoom / (1 - deltaZoom);\n const deltaOrigin = origin.minus(this.state.origin);\n let mapOrigin = this.state.mapOrigin.plus(deltaOrigin);\n mapOrigin = mapOrigin.plus(\n Vector3d.createFrom(origin.minus(mapOrigin)).scale(deltaZoom)\n );\n if (this.state.viewId !== args.viewport.view.id) {\n const rect =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? extents\n : DrawingNavigationAid.findRotatedWindowDimensions(\n extents,\n rotation\n );\n const maxRectDim = Math.max(rect.y, rect.x);\n const maxExtentDim = Math.max(\n this.state.mapExtents.x,\n this.state.mapExtents.y\n );\n drawingZoom = maxExtentDim / (3 * maxRectDim);\n mapOrigin = origin.clone();\n this._viewport = args.viewport;\n this.setState({\n viewId: args.viewport.view.id,\n view: args.viewport.view.clone(),\n });\n }\n if (this._mounted) {\n this.setState({\n startOrigin: origin,\n origin,\n extents,\n startRotation: rotation,\n rotation,\n startMapOrigin: mapOrigin,\n mapOrigin,\n startDrawingZoom: drawingZoom,\n drawingZoom,\n });\n }\n }\n };\n\n private _updateFrustum = (complete: boolean = false) => {\n const halfExtents = this.state.extents.scale(0.5);\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? this.state.rotation.multiplyTransposeVector(halfExtents)\n : halfExtents;\n const origin = this.state.origin.minus(offset);\n ViewportComponentEvents.setDrawingViewportState(\n origin,\n this.state.rotation,\n complete\n );\n };\n\n private _toggleRotationMode = () => {\n const rotateMinimapWithView = !this.state.rotateMinimapWithView;\n this.setState({ rotateMinimapWithView }, () => {\n if (this._viewport)\n this._handleViewRotationChangeEvent({ viewport: this._viewport });\n });\n };\n\n private _handleKeyUp = (event: React.KeyboardEvent) => {\n if (\n event.key === Key.Escape.valueOf() &&\n this.state.mode === MapMode.Opened\n ) {\n this._closeLargeMap();\n }\n };\n\n private _lastClientXY: Point2d = Point2d.createZero();\n\n private _processWindowDrag(movement: Point2d) {\n const vect = Vector3d.create(\n movement.x / this.state.drawingZoom,\n -movement.y / this.state.drawingZoom,\n 0\n );\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? this.state.rotation.multiplyTransposeVector(vect)\n : vect;\n const origin = this.state.origin.plus(offset);\n const panningDirection = this._getPanVector();\n const wasAlmostZero = this.state.panningDirection.isAlmostZero;\n this.setState(\n { startOrigin: origin, origin, panningDirection, isPanning: false },\n () => {\n this._updateFrustum();\n if (wasAlmostZero && !this.state.panningDirection.isAlmostZero) {\n this._animationFrame = setTimeout(this._panAnimation, 16.667);\n }\n }\n );\n }\n\n private _processWindowEndDrag() {\n this.setState({ isMoving: false });\n this._updateFrustum(true);\n if (this.state.mode === MapMode.Closed) {\n setTimeout(() => {\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.origin.clone();\n if (this._mounted) {\n this.setState({ startMapOrigin, mapOrigin, animation: 0 }, () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n });\n }\n }, 0);\n }\n }\n\n private _handleMouseDown = (event: React.MouseEvent) => {\n // Used only to determine if mouse was moved between mousedown and mouseup\n const mouseStart = Point2d.create(event.clientX, event.clientY);\n this.setState({ mouseStart });\n this._lastClientXY = Point2d.create(event.clientX, event.clientY);\n };\n\n private _handleDrawingMouseDown = (event: React.MouseEvent) => {\n if (this.state.mode === MapMode.Opened) {\n event.preventDefault();\n this.setState({ isPanning: true });\n }\n };\n\n private _handleWindowMouseDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setState({ isMoving: true });\n };\n\n private _handleMouseDrag = (event: React.MouseEvent) => {\n const mouse = Point2d.create(event.clientX, event.clientY);\n const movement = mouse.minus(this._lastClientXY);\n if (this.state.isMoving) {\n // add scaled mouse movement\n this._processWindowDrag(movement);\n } else {\n if (this.state.isPanning && this.state.mode === MapMode.Opened) {\n const vect = Vector3d.create(\n movement.x / this.state.drawingZoom,\n -movement.y / this.state.drawingZoom,\n 0\n );\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? this.state.rotation.multiplyTransposeVector(vect)\n : vect;\n const mapOrigin = this.state.mapOrigin.minus(offset);\n this.setState({ startMapOrigin: mapOrigin, mapOrigin });\n }\n }\n this._lastClientXY = mouse;\n };\n\n private _handleMouseDragEnd = (event: React.MouseEvent) => {\n const mouse = Point2d.create(event.clientX, event.clientY);\n if (\n mouse.isAlmostEqual(this.state.mouseStart) &&\n this.state.mode === MapMode.Closed &&\n (event.target === this._viewContainerElement.current ||\n event.target === this._viewElement.current)\n ) {\n this._openLargeMap();\n } else if (this.state.isMoving) {\n this._processWindowEndDrag();\n } else if (this.state.isPanning) {\n if (this.state.mode === MapMode.Opened) {\n event.stopPropagation();\n this.setState({ isPanning: false });\n }\n } else if (\n (!(event.target instanceof Node) ||\n (this._rootElement.current &&\n !this._rootElement.current.contains(event.target))) &&\n mouse.isAlmostEqual(this.state.mouseStart)\n ) {\n this._closeLargeMap();\n }\n this._lastClientXY = Point2d.create(event.clientX, event.clientY);\n };\n\n private _handleWindowTouchStart = (event: any) => {\n if (1 !== event.targetTouches.length) return;\n window.addEventListener(\"touchmove\", this._onTouchMove, false);\n window.addEventListener(\"touchend\", this._onTouchEnd, false);\n const mouseStart = Point2d.create(\n event.targetTouches[0].clientX,\n event.targetTouches[0].clientY\n );\n this.setState({ mouseStart });\n this._lastClientXY = mouseStart.clone();\n this.setState({ isMoving: true });\n };\n\n private _onTouchMove = (event: TouchEvent) => {\n if (1 !== event.targetTouches.length) return;\n const mouse = Point2d.create(\n event.targetTouches[0].clientX,\n event.targetTouches[0].clientY\n );\n const movement = mouse.minus(this._lastClientXY);\n // add scaled mouse movement\n this._processWindowDrag(movement);\n this._lastClientXY = mouse;\n };\n\n private _onTouchEnd = (event: TouchEvent) => {\n if (0 !== event.targetTouches.length) return;\n this._processWindowEndDrag();\n if (0 !== event.changedTouches.length)\n this._lastClientXY = Point2d.create(\n event.changedTouches[0].clientX,\n event.changedTouches[0].clientY\n ); // Doesn't seem necessary...but _handleMouseDragEnd sets it...\n window.removeEventListener(\"touchmove\", this._onTouchMove);\n window.removeEventListener(\"touchend\", this._onTouchEnd);\n };\n\n /** @internal */\n public static getDefaultClosedMapSize = (): Vector3d => {\n return Vector3d.create(96, 96);\n };\n\n /** @internal */\n public static getDefaultOpenedMapSize = (\n paddingX: number = 0,\n paddingY: number = 0\n ): Vector3d => {\n return Vector3d.create(\n window.innerWidth / 3 - 2 * (window.innerWidth - paddingX),\n window.innerHeight / 3 - 2 * paddingY\n );\n };\n\n private _getClosedMapSize = (): Vector3d => {\n if (this.props.closeSize === undefined)\n return DrawingNavigationAid.getDefaultClosedMapSize();\n return this.props.closeSize;\n };\n\n private _getOpenedMapSize = (): Vector3d => {\n if (this.props.openSize === undefined)\n return DrawingNavigationAid.getDefaultOpenedMapSize(\n this._rootOffset.right,\n this._rootOffset.top\n );\n return this.props.openSize;\n };\n\n private _openLargeMap = () => {\n if (this.state.mode === MapMode.Closed && this.state.animation === 1.0) {\n if (this._rootElement.current) {\n const rect = this._rootElement.current.getBoundingClientRect();\n this._rootOffset = rect;\n }\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const mapExtents = this._getOpenedMapSize();\n this.setState(\n {\n mode: MapMode.Opened,\n isMoving: false,\n isPanning: false,\n mapExtents,\n startMapExtents,\n animation: 0,\n },\n () => {\n this._animationFrame = setTimeout(this._animation);\n }\n );\n }\n };\n\n private _closeLargeMap = () => {\n if (this.state.mode === MapMode.Opened && this.state.animation === 1.0) {\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.origin.clone();\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const mapExtents = this._getClosedMapSize();\n const rect =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? this.state.extents\n : DrawingNavigationAid.findRotatedWindowDimensions(\n this.state.extents,\n this.state.rotation\n );\n const maxRectDim = Math.max(rect.y, rect.x);\n const maxExtentDim = Math.max(mapExtents.x, mapExtents.y);\n const drawingZoom = maxExtentDim / (3 * maxRectDim);\n const startDrawingZoom = this.state.drawingZoom;\n this.setState(\n {\n mode: MapMode.Closed,\n startMapOrigin,\n mapOrigin,\n startDrawingZoom,\n drawingZoom,\n isMoving: false,\n isPanning: false,\n startMapExtents,\n mapExtents,\n panningDirection: Vector3d.createZero(),\n animation: 0,\n },\n () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n }\n );\n }\n };\n\n private _getPanVector = () => {\n const is3D = this._isViewport3D();\n const rect =\n this.state.rotateMinimapWithView || is3D\n ? this.state.extents\n : DrawingNavigationAid.findRotatedWindowDimensions(\n this.state.extents,\n this.state.rotation\n );\n\n const mapExtents = this.state.mapExtents.scale(1 / this.state.drawingZoom);\n\n const maxMagnitude = 80; // maximum acceleration\n const magnitudeTravel = 30; // How far, in pixels, that magnitude increases from 0 to max acceleration\n\n const diff = Vector3d.createFrom(\n this.state.origin.minus(this.state.mapOrigin)\n );\n const diffVector =\n this.state.rotateMinimapWithView || is3D\n ? this.state.rotation.multiplyVector(diff)\n : diff;\n\n // capture any values\n const magnitudeVector = Vector3d.create(\n Math.max(0, Math.abs(diffVector.x) - (mapExtents.x - rect.x) / 2),\n Math.max(0, Math.abs(diffVector.y) - (mapExtents.y - rect.y) / 2)\n );\n if (magnitudeVector.isAlmostZero) return Vector3d.createZero();\n const magnitude =\n (Math.min(\n magnitudeVector.magnitude() * this.state.drawingZoom,\n magnitudeTravel\n ) /\n magnitudeTravel) *\n maxMagnitude;\n\n const vect = Vector3d.createFrom(\n this.state.origin.minus(this.state.mapOrigin)\n ); // vect will never be zero or magnitude would also be zero\n const norm = vect.normalize();\n return norm!.scale(magnitude); // norm is only undefined when vect is zero, in which it would have returned at magnitudeVector.isAlmostZero\n };\n\n private _handleWheel = (event: React.WheelEvent) => {\n if (this.state.mode === MapMode.Opened && this.state.animation === 1) {\n const { mapOrigin, drawingZoom } = this.state;\n const mapSize = this._getOpenedMapSize();\n\n const mouseX = event.clientX - this._rootOffset.right + mapSize.x / 2;\n const mouseY = event.clientY - this._rootOffset.top - mapSize.y / 2;\n const is3D = this._isViewport3D();\n if (event.deltaY < 0) {\n const zoom = drawingZoom * 1.1;\n const vect = Vector3d.create(\n (mouseX * 0.1) / zoom,\n (-mouseY * 0.1) / zoom,\n 0\n );\n const offset =\n this.state.rotateMinimapWithView || is3D\n ? this.state.rotation.multiplyTransposeVector(vect)\n : vect;\n const m = mapOrigin.plus(offset);\n this.setState({ mapOrigin: m, drawingZoom: zoom });\n }\n if (event.deltaY > 0) {\n const zoom = drawingZoom / 1.1;\n const vect = Vector3d.create(\n (mouseX * 0.1) / drawingZoom,\n (-mouseY * 0.1) / drawingZoom,\n 0\n );\n const offset =\n this.state.rotateMinimapWithView || is3D\n ? this.state.rotation.multiplyTransposeVector(vect)\n : vect;\n const m = mapOrigin.minus(offset);\n this.setState({ mapOrigin: m, drawingZoom: zoom });\n }\n }\n };\n\n private _handleZoomIn = () => {\n const zoom = this.state.drawingZoom * 1.4;\n this.setState({ drawingZoom: zoom });\n };\n\n private _handleZoomOut = () => {\n const zoom = this.state.drawingZoom / 1.4;\n this.setState({ drawingZoom: zoom });\n };\n\n private _handleUnrotate = () => {\n const startRotation = this.state.rotation;\n const halfExtents = this.state.extents.scale(0.5);\n const offset =\n this.state.rotateMinimapWithView || this._isViewport3D()\n ? Vector3d.createZero()\n : this.state.rotation\n .multiplyTransposeVector(halfExtents)\n .minus(halfExtents);\n const startOrigin = this.state.origin;\n const origin = this.state.origin.plus(offset);\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.mapOrigin.plus(offset);\n this.setState(\n {\n animation: 0,\n startOrigin,\n origin,\n startMapOrigin,\n mapOrigin,\n startRotation,\n rotation: Matrix3d.createIdentity(),\n },\n () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n }\n );\n };\n\n /** @internal */\n public static findRotatedWindowDimensions = (\n extents: Vector3d,\n rotation: Matrix3d\n ) => {\n const cos = rotation.at(0, 0);\n const sin = rotation.at(1, 0);\n // extents.x/y should be divided in half, but we don't have to do that immediately.\n const cosWidth = cos * extents.x;\n const sinHeight = sin * extents.y;\n\n const sinWidth = cos * extents.x;\n const cosHeight = sin * extents.y;\n\n const a = Math.atan2(sin, cos);\n\n if (a % Math.PI >= 0 && a % Math.PI < Math.PI / 2) {\n const y1 = -cosHeight - sinWidth;\n const x2 = cosWidth + sinHeight;\n const y3 = cosHeight + sinWidth;\n const x4 = -cosWidth - sinHeight;\n // Instead, divide total difference\n return Vector3d.create(Math.abs(x2 - x4) / 2, Math.abs(y1 - y3) / 2);\n } else {\n const x1 = -cosWidth + sinHeight;\n const y2 = -cosHeight + sinWidth;\n const x3 = cosWidth - sinHeight;\n const y4 = cosHeight - sinWidth;\n return Vector3d.create(Math.abs(x1 - x3) / 2, Math.abs(y2 - y4) / 2);\n }\n };\n}\n\n/** @internal */\nexport interface DrawingNavigationCanvasProps {\n view: ViewState | undefined;\n viewId?: string;\n origin: Point3d;\n extents: Vector3d;\n zoom: number;\n rotation: Matrix3d;\n viewManagerOverride?: ViewManager;\n screenViewportOverride?: typeof ScreenViewport;\n canvasSizeOverride?: boolean;\n}\n\n/** @internal */\nexport class DrawingNavigationCanvas extends React.Component<DrawingNavigationCanvasProps> {\n private _canvasElement = React.createRef<HTMLDivElement>();\n private _vp?: ScreenViewport;\n\n public override render(): React.ReactNode {\n return (\n <div\n className=\"drawing-canvas\"\n data-testid=\"drawing-canvas\"\n ref={this._canvasElement}\n ></div>\n );\n }\n\n public override componentDidMount() {\n if (this._canvasElement.current && this.props.view !== undefined) {\n const viewManager = this.props.viewManagerOverride\n ? this.props.viewManagerOverride\n : IModelApp.viewManager;\n\n const screenViewport = this.props.screenViewportOverride\n ? this.props.screenViewportOverride\n : ScreenViewport;\n const previousView = viewManager.selectedView;\n this._vp = screenViewport.create(\n this._canvasElement.current,\n this.props.view\n );\n this.customizeViewport(this._vp);\n viewManager.addViewport(this._vp);\n void viewManager.setSelectedView(previousView); // switch to original viewport\n this._update();\n }\n }\n\n private customizeViewport(vp: ScreenViewport): void {\n if (vp.logo.style) vp.logo.style.display = \"none\";\n\n if (vp.viewFlags.acsTriad)\n vp.viewFlags = vp.viewFlags.with(\"acsTriad\", false);\n }\n\n private _update = () => {\n if (this._vp) {\n const max = Math.max(this.props.extents.x, this.props.extents.y);\n this._vp.view.extentLimits = { max, min: Constant.oneMillimeter };\n this._vp.view.setOrigin(this.props.origin);\n this._vp.view.setRotation(this.props.rotation);\n this._vp.view.setExtents(this.props.extents);\n this._vp.applyViewState(this._vp.view);\n }\n };\n\n public override componentDidUpdate(oldProps: DrawingNavigationCanvasProps) {\n const viewManager = this.props.viewManagerOverride\n ? this.props.viewManagerOverride\n : IModelApp.viewManager;\n if (this.props.view !== undefined) {\n if (oldProps.view !== this.props.view) {\n const screenViewport = this.props.screenViewportOverride\n ? this.props.screenViewportOverride\n : ScreenViewport;\n if (\n oldProps !== undefined &&\n oldProps.viewId !== \"\" &&\n oldProps.viewId !== this.props.viewId &&\n this._vp\n ) {\n viewManager.dropViewport(this._vp, true);\n }\n if (\n this._canvasElement.current &&\n (this.props.canvasSizeOverride ||\n (this._canvasElement.current.clientWidth !== 0 &&\n this._canvasElement.current.clientHeight !== 0))\n ) {\n const previousView = viewManager.selectedView;\n this._vp = screenViewport.create(\n this._canvasElement.current,\n this.props.view.clone()\n );\n this.customizeViewport(this._vp);\n viewManager.addViewport(this._vp);\n void viewManager.setSelectedView(previousView); // switch to original viewport\n this._update();\n }\n } else if (\n !this.props.origin.isExactEqual(oldProps.origin) ||\n !this.props.extents.isExactEqual(oldProps.extents) ||\n this.props.zoom !== oldProps.zoom ||\n !this.props.rotation.isExactEqual(oldProps.rotation)\n ) {\n this._update();\n }\n }\n }\n\n public override componentWillUnmount() {\n if (this._vp) {\n const viewManager = this.props.viewManagerOverride\n ? this.props.viewManagerOverride\n : IModelApp.viewManager;\n viewManager.dropViewport(this._vp, true);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FormatSample.d.ts","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatSample.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAqFpD"}
1
+ {"version":3,"file":"FormatSample.d.ts","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatSample.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAoFpD"}
@@ -62,7 +62,6 @@ function FormatSample(props) {
62
62
  setSampleValue(event.target.value);
63
63
  }, []);
64
64
  const handleKeyDown = React.useCallback((e) => {
65
- // istanbul ignore else
66
65
  if (e.key === ts_key_enum_1.Key.Enter.valueOf()) {
67
66
  let newValue = Number.parseFloat(sampleValue);
68
67
  if (Number.isNaN(newValue))
@@ -1 +1 @@
1
- {"version":3,"file":"FormatSample.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatSample.tsx"],"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 QuantityFormat\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { FormatterSpec } from \"@itwin/core-quantity\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Icon } from \"@itwin/core-react\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { SvgProgressForward } from \"@itwin/itwinui-icons-react\";\nimport { useTranslation } from \"../useTranslation\";\n\n/** Properties of [[FormatSample]] component.\n * @alpha\n */\nexport interface FormatSampleProps extends CommonProps {\n formatSpec?: FormatterSpec;\n initialMagnitude?: number;\n hideLabels?: boolean;\n}\n\n/** Component to show the persistence value and formatted value given a FormatterSpec.\n * @alpha\n */\nexport function FormatSample(props: FormatSampleProps) {\n const { initialMagnitude, formatSpec, hideLabels } = props;\n const { translate } = useTranslation();\n const initialValue = initialMagnitude ?? 0;\n const [magnitude, setMagnitude] = React.useState(initialValue);\n const [sampleValue, setSampleValue] = React.useState(initialValue.toString());\n\n React.useEffect(() => {\n const value = initialMagnitude ?? 0;\n setMagnitude(value);\n setSampleValue(value.toString());\n }, [initialMagnitude]);\n\n const handleOnValueBlur = React.useCallback(() => {\n let newValue = Number.parseFloat(sampleValue);\n if (Number.isNaN(newValue)) newValue = 0;\n setMagnitude(newValue);\n setSampleValue(newValue.toString());\n }, [sampleValue]);\n\n const handleOnValueChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setSampleValue(event.target.value);\n },\n []\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n // istanbul ignore else\n if (e.key === Key.Enter.valueOf()) {\n let newValue = Number.parseFloat(sampleValue);\n if (Number.isNaN(newValue)) newValue = 0;\n setMagnitude(newValue);\n setSampleValue(newValue.toString());\n e.preventDefault();\n }\n },\n [sampleValue]\n );\n\n const activePersistenceUnitLabel = formatSpec\n ? formatSpec.persistenceUnit.label\n : \"\";\n const formattedValue = formatSpec\n ? formatSpec.applyFormatting(magnitude)\n : \"\";\n\n return (\n <>\n {!hideLabels && (\n <span className={\"uicore-label\"}>\n {translate(\"QuantityFormat.labels.value\")}\n </span>\n )}\n <span className=\"components-inline\">\n <Input\n data-testid=\"format-sample-input\"\n className=\"components-quantity-persistence-input\"\n value={sampleValue}\n onChange={handleOnValueChange}\n onKeyDown={handleKeyDown}\n onBlur={handleOnValueBlur}\n size=\"small\"\n />\n {activePersistenceUnitLabel}\n </span>\n {!hideLabels && (\n <span className={\"uicore-label\"}>\n {translate(\"QuantityFormat.labels.formatted\")}\n </span>\n )}\n <span data-testid=\"progress-forward\">\n {hideLabels && formattedValue.length > 0 && (\n <Icon iconSpec={<SvgProgressForward />} />\n )}\n <span\n data-testid=\"format-sample-formatted\"\n className={\"uicore-label components-quantity-formatted-sample\"}\n >\n {formattedValue}\n </span>\n </span>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"FormatSample.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatSample.tsx"],"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 QuantityFormat\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { FormatterSpec } from \"@itwin/core-quantity\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Icon } from \"@itwin/core-react\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { SvgProgressForward } from \"@itwin/itwinui-icons-react\";\nimport { useTranslation } from \"../useTranslation\";\n\n/** Properties of [[FormatSample]] component.\n * @alpha\n */\nexport interface FormatSampleProps extends CommonProps {\n formatSpec?: FormatterSpec;\n initialMagnitude?: number;\n hideLabels?: boolean;\n}\n\n/** Component to show the persistence value and formatted value given a FormatterSpec.\n * @alpha\n */\nexport function FormatSample(props: FormatSampleProps) {\n const { initialMagnitude, formatSpec, hideLabels } = props;\n const { translate } = useTranslation();\n const initialValue = initialMagnitude ?? 0;\n const [magnitude, setMagnitude] = React.useState(initialValue);\n const [sampleValue, setSampleValue] = React.useState(initialValue.toString());\n\n React.useEffect(() => {\n const value = initialMagnitude ?? 0;\n setMagnitude(value);\n setSampleValue(value.toString());\n }, [initialMagnitude]);\n\n const handleOnValueBlur = React.useCallback(() => {\n let newValue = Number.parseFloat(sampleValue);\n if (Number.isNaN(newValue)) newValue = 0;\n setMagnitude(newValue);\n setSampleValue(newValue.toString());\n }, [sampleValue]);\n\n const handleOnValueChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setSampleValue(event.target.value);\n },\n []\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === Key.Enter.valueOf()) {\n let newValue = Number.parseFloat(sampleValue);\n if (Number.isNaN(newValue)) newValue = 0;\n setMagnitude(newValue);\n setSampleValue(newValue.toString());\n e.preventDefault();\n }\n },\n [sampleValue]\n );\n\n const activePersistenceUnitLabel = formatSpec\n ? formatSpec.persistenceUnit.label\n : \"\";\n const formattedValue = formatSpec\n ? formatSpec.applyFormatting(magnitude)\n : \"\";\n\n return (\n <>\n {!hideLabels && (\n <span className={\"uicore-label\"}>\n {translate(\"QuantityFormat.labels.value\")}\n </span>\n )}\n <span className=\"components-inline\">\n <Input\n data-testid=\"format-sample-input\"\n className=\"components-quantity-persistence-input\"\n value={sampleValue}\n onChange={handleOnValueChange}\n onKeyDown={handleKeyDown}\n onBlur={handleOnValueBlur}\n size=\"small\"\n />\n {activePersistenceUnitLabel}\n </span>\n {!hideLabels && (\n <span className={\"uicore-label\"}>\n {translate(\"QuantityFormat.labels.formatted\")}\n </span>\n )}\n <span data-testid=\"progress-forward\">\n {hideLabels && formattedValue.length > 0 && (\n <Icon iconSpec={<SvgProgressForward />} />\n )}\n <span\n data-testid=\"format-sample-formatted\"\n className={\"uicore-label components-quantity-formatted-sample\"}\n >\n {formattedValue}\n </span>\n </span>\n </>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FormatUnitLabel.d.ts","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatUnitLabel.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAqDxD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBA4F1D"}
1
+ {"version":3,"file":"FormatUnitLabel.d.ts","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/FormatUnitLabel.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAoDxD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,qBAuF1D"}