@arcgis/core 4.34.0-next.74 → 4.34.0-next.75

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 (149) hide show
  1. package/PopupTemplate.js +1 -1
  2. package/applications/Components/QuantityFormatter.js +1 -1
  3. package/arcade/Pixel.js +5 -0
  4. package/arcade/featureSetUtils.js +1 -1
  5. package/arcade/featureset/actions/GroupBy.js +1 -1
  6. package/arcade/featureset/actions/OrderBy.js +1 -1
  7. package/arcade/functions/featuresetbase.js +1 -1
  8. package/arcade/functions/featuresetstring.js +1 -1
  9. package/arcade/functions/fieldStats.js +1 -1
  10. package/arcade/functions/geometry.js +1 -1
  11. package/arcade/functions/maths.js +1 -1
  12. package/arcade/functions/string.js +1 -1
  13. package/arcade/languageUtils.js +1 -1
  14. package/arcade.js +1 -1
  15. package/assets/esri/core/workers/RemoteClient.js +1 -1
  16. package/assets/esri/core/workers/chunks/009556f323e58271bc7a.js +1 -0
  17. package/assets/esri/core/workers/chunks/{11acefc48c0354e675df.js → 0309d008e50e55c7ff1d.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{dd447dfc50ee7f511b84.js → 19c1f1431c0b2f4525a2.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{7219ceab0b6fae2e69b6.js → 280af3640f8e93c1024e.js} +2 -2
  20. package/assets/esri/core/workers/chunks/{5a476e6743902e35f81a.js.LICENSE.txt → 280af3640f8e93c1024e.js.LICENSE.txt} +1 -1
  21. package/assets/esri/core/workers/chunks/{e3ad0a390387c5847aca.js → 356c96fad88558be9054.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{ada8e07ff12bc5d4a1d9.js → 37ff19a9c5c99bd4e7c7.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{d12f373fcf5848ddcd8a.js → 3f523bc8551e712c9bd4.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{5b7e5ec6aea1f7f9b005.js → 3fecfe4f8ca2a5fd7360.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{78b33c6d73824085c6d1.js → 48449abe795cb7a831eb.js} +1 -1
  26. package/assets/esri/core/workers/chunks/541bffd61006d0e36166.js +1 -0
  27. package/assets/esri/core/workers/chunks/{f4e9640306f64b1af7a3.js → 65ec21d29e8563fdbc55.js} +1 -1
  28. package/assets/esri/core/workers/chunks/67d9cfe02613cb73ee37.js.LICENSE.txt +1 -1
  29. package/assets/esri/core/workers/chunks/{fb669a2e50ca7aacac25.js → 71fef0a33b7ed9456e47.js} +1 -1
  30. package/assets/esri/core/workers/chunks/7430c462c350fdd26349.js +1 -0
  31. package/assets/esri/core/workers/chunks/{ff3fe5c97a98c8cab4ac.js → 7a23b127f551bf13ef54.js} +2 -2
  32. package/assets/esri/core/workers/chunks/{ff3fe5c97a98c8cab4ac.js.LICENSE.txt → 7a23b127f551bf13ef54.js.LICENSE.txt} +1 -1
  33. package/assets/esri/core/workers/chunks/{9c00c2263e52ad51c2a2.js → 8e428b0f33ef4688415e.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{d682dd49bb9ee7f48f93.js → 9304c3cdf732745577fd.js} +1 -1
  35. package/assets/esri/core/workers/chunks/93b2e0a300b2758a1ca4.js +1 -0
  36. package/assets/esri/core/workers/chunks/{8d642b34d40edfe02d8e.js → 9c64b78c5c9b35b31d98.js} +2 -2
  37. package/assets/esri/core/workers/chunks/{8d642b34d40edfe02d8e.js.LICENSE.txt → 9c64b78c5c9b35b31d98.js.LICENSE.txt} +1 -1
  38. package/assets/esri/core/workers/chunks/{6dc62c170e9583222df2.js → a25b75de1bca1dd21941.js} +1 -1
  39. package/assets/esri/core/workers/chunks/a6533bab3b2fbc1e2a47.js +1 -0
  40. package/assets/esri/core/workers/chunks/{5c53deb45bc142219c76.js → b15ff6c9ef2de8a49853.js} +2 -2
  41. package/assets/esri/core/workers/chunks/{5c53deb45bc142219c76.js.LICENSE.txt → b15ff6c9ef2de8a49853.js.LICENSE.txt} +1 -1
  42. package/assets/esri/core/workers/chunks/bccecd678faff927ac76.js +1 -0
  43. package/assets/esri/core/workers/chunks/{ce1f4508487298ab57b6.js → bd2dc1282c49125ede89.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{f542bdc994a5ea3aa9d1.js → c38360d912f256519e06.js} +1 -1
  45. package/assets/esri/core/workers/chunks/cd1869e183001266c4c1.js +2 -0
  46. package/assets/esri/core/workers/chunks/{626c18c1bbc50b3b16b2.js.LICENSE.txt → cd1869e183001266c4c1.js.LICENSE.txt} +1 -1
  47. package/assets/esri/core/workers/chunks/{90321feb56f3a84f6e58.js → d153b29c542c37ae1636.js} +2 -2
  48. package/assets/esri/core/workers/chunks/{90321feb56f3a84f6e58.js.LICENSE.txt → d153b29c542c37ae1636.js.LICENSE.txt} +1 -1
  49. package/assets/esri/core/workers/chunks/d55c55d39a253630d228.js +1 -0
  50. package/assets/esri/core/workers/chunks/{49f7a5523462aebf90fc.js → d66cdb9bb494da19696b.js} +2 -2
  51. package/assets/esri/core/workers/chunks/{49f7a5523462aebf90fc.js.LICENSE.txt → d66cdb9bb494da19696b.js.LICENSE.txt} +1 -1
  52. package/assets/esri/core/workers/chunks/ed773dab5965e42a2879.js +2 -0
  53. package/assets/esri/core/workers/chunks/{7219ceab0b6fae2e69b6.js.LICENSE.txt → ed773dab5965e42a2879.js.LICENSE.txt} +1 -1
  54. package/assets/esri/images/portal/xrexperience16.png +0 -0
  55. package/chunks/Fog.glsl.js +6 -6
  56. package/chunks/GlowComposition.glsl.js +31 -12
  57. package/chunks/LineMarker.glsl.js +37 -36
  58. package/chunks/RibbonLine.glsl.js +83 -83
  59. package/chunks/array.js +1 -1
  60. package/chunks/languageUtils.js +1 -1
  61. package/config.js +1 -1
  62. package/core/quantityFormatUtils.js +1 -1
  63. package/core/unitFormatUtils.js +1 -1
  64. package/core/unitUtils.js +1 -1
  65. package/form/FormTemplate.js +1 -1
  66. package/geometry/support/curves/circleUtils.js +1 -1
  67. package/geometry/support/curves/circularArcUtils.js +1 -1
  68. package/geometry/support/curves/closestPointOnCurve.js +1 -1
  69. package/geometry/support/curves/curveExtent.js +1 -1
  70. package/geometry/support/curves/lineUtils.js +5 -0
  71. package/interfaces.d.ts +270 -18
  72. package/kernel.js +1 -1
  73. package/layers/ImageryLayer.js +1 -1
  74. package/layers/ImageryTileLayer.js +1 -1
  75. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  76. package/layers/support/fieldUtils.js +1 -1
  77. package/package.json +2 -2
  78. package/portal/PortalItem.js +1 -1
  79. package/renderers/ClassBreaksRenderer.js +1 -1
  80. package/renderers/DictionaryRenderer.js +1 -1
  81. package/renderers/DotDensityRenderer.js +1 -1
  82. package/renderers/HeatmapRenderer.js +1 -1
  83. package/renderers/PieChartRenderer.js +1 -1
  84. package/renderers/UniqueValueRenderer.js +1 -1
  85. package/renderers/mixins/VisualVariablesMixin.js +1 -1
  86. package/support/arcadeUtils.js +1 -1
  87. package/support/loadArcade.js +1 -1
  88. package/support/revision.js +1 -1
  89. package/symbols/CIMSymbol.js +1 -1
  90. package/symbols/support/FeatureExpressionInfo.js +1 -1
  91. package/views/2d/layers/LayerView2D.js +1 -1
  92. package/views/3d/analysis/Dimension/DimensionVisualization.js +1 -1
  93. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  94. package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
  95. package/views/3d/analysis/Slice/ResizeManipulator.js +1 -1
  96. package/views/3d/analysis/Slice/RotateManipulator.js +1 -1
  97. package/views/3d/analysis/Slice/ShiftManipulator.js +1 -1
  98. package/views/3d/analysis/Viewshed/ViewshedFieldOfViewManipulation.js +1 -1
  99. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementTool.js +1 -1
  100. package/views/3d/environment/Fog.js +1 -1
  101. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  102. package/views/3d/interactive/visualElements/LineVisualElement.js +1 -1
  103. package/views/3d/interactive/visualElements/MarkerVisualElement.js +1 -1
  104. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  105. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  106. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  107. package/views/3d/layers/FlowSubView3D.js +1 -1
  108. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  109. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  110. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  111. package/views/3d/layers/support/Tiles3DIntersectionHandler.js +1 -1
  112. package/views/3d/state/SurfaceCollisionConstraint.js +1 -1
  113. package/views/3d/state/ViewStateManager.js +1 -1
  114. package/views/3d/state/controllers/SurfaceCollisionCorrectionController.js +1 -1
  115. package/views/3d/support/flow/FlowSubViewExtent3D.js +1 -1
  116. package/views/3d/support/flow/FlowSubViewTiles3D.js +1 -1
  117. package/views/3d/support/flow/FlowWorker.js +1 -1
  118. package/views/3d/support/flow/geometryUtils.js +1 -1
  119. package/views/3d/support/flow/loadUtils.js +1 -1
  120. package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +23 -13
  121. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +36 -23
  122. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +11 -11
  123. package/views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js +5 -0
  124. package/views/3d/webgl-engine/effects/glow/GlowComposition.glsl.js +1 -1
  125. package/views/3d/webgl-engine/effects/glow/GlowPresets.glsl.js +1 -1
  126. package/views/3d/webgl-engine/effects/glow/GlowRenderNode.js +1 -1
  127. package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
  128. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  129. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  130. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  131. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  132. package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
  133. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  134. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  135. package/views/GroundView.js +1 -1
  136. package/views/interactive/snapping/allLayerSnapping.js +1 -1
  137. package/views/layers/ImageryLayerView.js +1 -1
  138. package/views/support/LayerViewManager.js +1 -1
  139. package/widgets/Feature/support/arcadeFeatureUtils.js +1 -1
  140. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  141. package/assets/esri/core/workers/chunks/5a476e6743902e35f81a.js +0 -2
  142. package/assets/esri/core/workers/chunks/5a95688651d7e8b7101d.js +0 -1
  143. package/assets/esri/core/workers/chunks/626c18c1bbc50b3b16b2.js +0 -2
  144. package/assets/esri/core/workers/chunks/6da298da2ec09cced0b5.js +0 -1
  145. package/assets/esri/core/workers/chunks/8b1d2bbb2b2eb1830921.js +0 -1
  146. package/assets/esri/core/workers/chunks/a2f4b6d8da93f106852c.js +0 -1
  147. package/assets/esri/core/workers/chunks/d305ca524837c5dc81c8.js +0 -1
  148. package/assets/esri/core/workers/chunks/e6f2ac738df16fb5e13a.js +0 -1
  149. package/assets/esri/core/workers/chunks/e8d25d4ca9b335883f34.js +0 -1
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import t from"../core/Error.js";import{clone as s}from"../core/lang.js";import i from"../core/Logger.js";import{deepMerge as o}from"../core/object.js";import{watch as l}from"../core/reactiveUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import{cast as u}from"../core/accessorSupport/decorators/cast.js";import{enumeration as n}from"../core/accessorSupport/decorators/enumeration.js";import{reader as a}from"../core/accessorSupport/decorators/reader.js";import{subclass as p}from"../core/accessorSupport/decorators/subclass.js";import{writer as f}from"../core/accessorSupport/decorators/writer.js";import{diff as d}from"../core/accessorSupport/diffUtils.js";import{ensureString as c,ensureType as h}from"../core/accessorSupport/ensureType.js";import{collectArcadeFieldNames as m,collectField as y}from"../layers/support/fieldUtils.js";import b from"../portal/Portal.js";import g from"./Renderer.js";import{VisualVariablesMixin as v}from"./mixins/VisualVariablesMixin.js";import{rendererBackgroundFillSymbolProperty as _,rendererSymbolProperty as V}from"./support/commonProperties.js";import q from"./support/RendererLegendOptions.js";import I from"./support/UniqueValue.js";import S from"./support/UniqueValueClass.js";import w from"./support/UniqueValueGroup.js";import U from"./support/UniqueValueInfo.js";import{loadArcade as j}from"../support/loadArcade.js";import{f as F,t as O}from"../chunks/persistableUrlUtils.js";import G from"../symbols/WebStyleSymbol.js";import{fetchStyle as D}from"../symbols/support/styleUtils.js";import{ensureType as x}from"../symbols/support/typeUtils.js";var E;const M="uvInfos-watcher",R="uvGroups-watcher",N=",",L=h(U);function P(e){const{field1:t,field2:s,field3:i,fieldDelimiter:o,uniqueValueInfos:l,valueExpression:r}=e,u=!(!t||!s);return[{classes:(l??[]).map(e=>{const{symbol:l,label:n,value:a,description:p}=e,[f,d,c]=u?a?.toString()?.split(o||"")||[]:[a],h=[];return(t||r)&&h.push(f),s&&h.push(d),i&&h.push(c),{symbol:l,label:n,values:[h],description:p}})}]}function C(e){return null!=e&&""!==e&&("string"!=typeof e||""!==e.trim()&&"<null>"!==e.toLowerCase())||(e=null),e+""}let $=E=class extends(v(g)){constructor(e){super(e),this._valueInfoMap={},this._isDefaultSymbolDerived=!1,this._isInfosSource=null,this.type="unique-value",this.backgroundFillSymbol=null,this.orderByClassesEnabled=!1,this.valueExpressionTitle=null,this.legendOptions=null,this.defaultLabel=null,this.portal=null,this.styleOrigin=null,this.diff={uniqueValueInfos(e,t){if(!e&&!t)return;if(!e||!t)return{type:"complete",oldValue:e,newValue:t};let s=!1;const i={type:"collection",added:[],removed:[],changed:[],unchanged:[]};for(let o=0;o<t.length;o++){const l=e.find(e=>e.value===t[o].value);l?d(l,t[o])?(i.changed.push({type:"complete",oldValue:l,newValue:t[o]}),s=!0):i.unchanged.push({oldValue:l,newValue:t[o]}):(i.added.push(t[o]),s=!0)}for(let o=0;o<e.length;o++){t.find(t=>t.value===e[o].value)||(i.removed.push(e[o]),s=!0)}return s?i:void 0}},this._set("uniqueValueInfos",[]),this._set("uniqueValueGroups",[])}get _cache(){return{compiledFunc:null}}set field(e){this._set("field",e),this._updateFieldDelimiter(),this._updateUniqueValues()}castField(e){return null==e||"function"==typeof e?e:c(e)}writeField(e,s,o,l){"string"==typeof e?s[o]=e:l?.messages?l.messages.push(new t("property:unsupported","UniqueValueRenderer.field set to a function cannot be written to JSON")):i.getLogger(this).error(".field: cannot write field to JSON since it's not a string value")}set field2(e){this._set("field2",e),this._updateFieldDelimiter(),this._updateUniqueValues()}set field3(e){this._set("field3",e),this._updateUniqueValues()}set valueExpression(e){this._set("valueExpression",e),this._updateUniqueValues()}set defaultSymbol(e){this._isDefaultSymbolDerived=!1,this._set("defaultSymbol",e)}set fieldDelimiter(e){this._set("fieldDelimiter",e),this._updateUniqueValues()}readPortal(e,t,s){return s.portal||b.getDefault()}readStyleOrigin(e,t,s){if(t.styleName)return Object.freeze({styleName:t.styleName});if(t.styleUrl){const e=F(t.styleUrl,s);return Object.freeze({styleUrl:e})}}writeStyleOrigin(e,t,s,i){e.styleName?t.styleName=e.styleName:e.styleUrl&&(t.styleUrl=O(e.styleUrl,i))}set uniqueValueGroups(e){this.styleOrigin?i.getLogger(this).error("#uniqueValueGroups=","Cannot modify unique value groups of a UniqueValueRenderer created from a web style"):(this._set("uniqueValueGroups",e),this._updateInfosFromGroups(),this._isInfosSource=!1,this._watchUniqueValueGroups())}set uniqueValueInfos(e){this.styleOrigin?i.getLogger(this).error("#uniqueValueInfos=","Cannot modify unique value infos of a UniqueValueRenderer created from a web style"):(this._set("uniqueValueInfos",e),this._updateValueInfoMap(),this._updateGroupsFromInfos(),this._isInfosSource=!0,this._watchUniqueValueInfos())}addUniqueValueInfo(e,t){if(this.styleOrigin)return void i.getLogger(this).error("#addUniqueValueInfo()","Cannot modify unique value infos of a UniqueValueRenderer created from a web style");let s;s="object"==typeof e?L(e):new U({value:e,symbol:x(t)}),this.uniqueValueInfos?.push(s),this._valueInfoMap[C(s.value)]=s,this._updateGroupsFromInfos(),this._isInfosSource=!0,this._watchUniqueValueInfos()}removeUniqueValueInfo(e){if(this.styleOrigin)return void i.getLogger(this).error("#removeUniqueValueInfo()","Cannot modify unique value infos of a UniqueValueRenderer created from a web style");const t=this.uniqueValueInfos;if(t)for(let s=0;s<t.length;s++){const i=t[s];if(String(i.value)===String(e)){delete this._valueInfoMap[C(e)],t.splice(s,1);break}}this._updateGroupsFromInfos(),this._isInfosSource=!0,this._watchUniqueValueInfos()}async getUniqueValueInfo(e,t){let s=t;return this.valueExpression&&null==t?.arcade&&(s={...s,arcade:await j()}),this._getUniqueValueInfo(e,s)}getSymbol(e,t){if(this.valueExpression&&null==t?.arcade)return void i.getLogger(this).error("#getSymbol()","Please use getSymbolAsync if valueExpression is used");const s=this._getUniqueValueInfo(e,t);return s?.symbol||this.defaultSymbol}async getSymbolAsync(e,t){let s=t;if(this.valueExpression&&null==s?.arcade){const e=await j(),{arcadeUtils:t}=e;t.hasGeometryOperations(this.valueExpression)&&await t.enableGeometryOperations(),s={...s,arcade:e}}const i=this._getUniqueValueInfo(e,s);return i?.symbol||this.defaultSymbol}get symbols(){const e=[];for(const t of this.uniqueValueInfos??[])t.symbol&&e.push(t.symbol);return this.defaultSymbol&&e.push(this.defaultSymbol),e}getAttributeHash(){return this.visualVariables?.reduce((e,t)=>e+t.getAttributeHash(),"")??""}getMeshHash(){const e=JSON.stringify(this.backgroundFillSymbol),t=JSON.stringify(this.defaultSymbol),s=this.uniqueValueInfos?.reduce((e,t)=>e+t.getMeshHash(),"");return`${e}.${t}.${s}.${`${this.field}.${this.field2}.${this.field3}.${this.fieldDelimiter}`}.${this.valueExpression}`}clone(){const e=new E({field:this.field,field2:this.field2,field3:this.field3,defaultLabel:this.defaultLabel,defaultSymbol:s(this.defaultSymbol),orderByClassesEnabled:this.orderByClassesEnabled,valueExpression:this.valueExpression,valueExpressionTitle:this.valueExpressionTitle,fieldDelimiter:this.fieldDelimiter,visualVariables:s(this.visualVariables),legendOptions:s(this.legendOptions),authoringInfo:s(this.authoringInfo),backgroundFillSymbol:s(this.backgroundFillSymbol)});this._isDefaultSymbolDerived&&(e._isDefaultSymbolDerived=!0),e._set("portal",this.portal);const t=s(this.uniqueValueInfos),i=s(this.uniqueValueGroups);return this.styleOrigin&&(e._set("styleOrigin",Object.freeze(s(this.styleOrigin))),Object.freeze(t),Object.freeze(i)),e._set("uniqueValueInfos",t),e._updateValueInfoMap(),e._set("uniqueValueGroups",i),e._isInfosSource=this._isInfosSource,e._watchUniqueValueInfosAndGroups(),e}get arcadeRequired(){return this.arcadeRequiredForVisualVariables||!!this.valueExpression}async collectRequiredFields(e,t){const s=[this.collectVVRequiredFields(e,t),this.collectSymbolFields(e,t)];await Promise.all(s)}async collectSymbolFields(e,t){const s=[...this.symbols.map(s=>s.collectRequiredFields(e,t)),m(e,t,this.valueExpression)];y(e,t,this.field),y(e,t,this.field2),y(e,t,this.field3),await Promise.all(s)}populateFromStyle(){return D(this.styleOrigin,{portal:this.portal}).then(e=>{const t=[];return this._valueInfoMap={},e?.data&&Array.isArray(e.data.items)&&e.data.items.forEach(s=>{const i=new G({styleUrl:e.styleUrl,styleName:e.styleName,portal:this.portal,name:s.name});this.defaultSymbol||s.name!==e.data.defaultItem||(this.defaultSymbol=i,this._isDefaultSymbolDerived=!0);const o=new U({value:s.name,symbol:i});t.push(o),this._valueInfoMap[C(s.name)]=o}),this._set("uniqueValueInfos",Object.freeze(t)),this._updateGroupsFromInfos(!0),this._isInfosSource=null,this._watchUniqueValueInfos(),!this.defaultSymbol&&this.uniqueValueInfos?.length&&(this.defaultSymbol=this.uniqueValueInfos[0].symbol,this._isDefaultSymbolDerived=!0),this})}_updateFieldDelimiter(){this.field&&this.field2&&!this.fieldDelimiter&&this._set("fieldDelimiter",N)}_updateUniqueValues(){null!=this._isInfosSource&&(this._isInfosSource?this._updateGroupsFromInfos():this._updateInfosFromGroups())}_updateValueInfoMap(){this._valueInfoMap={};const{uniqueValueInfos:e}=this;if(e)for(const t of e)this._valueInfoMap[C(t.value)]=t}_watchUniqueValueInfosAndGroups(){this._watchUniqueValueInfos(),this._watchUniqueValueGroups()}_watchUniqueValueInfos(){this.removeHandles(M);const{uniqueValueInfos:e}=this;if(e){const t=[];for(const s of e)t.push(l(()=>({symbol:s.symbol,value:s.value,label:s.label,description:s.description}),(e,t)=>{e!==t&&(this._updateGroupsFromInfos(),this._isInfosSource=!0)},{sync:!0}));this.addHandles(t,M)}}_watchUniqueValueGroups(){this.removeHandles(R);const{uniqueValueGroups:e}=this;if(e){const t=[];for(const s of e){t.push(l(()=>({classes:s.classes}),(e,t)=>{e!==t&&(this._updateInfosFromGroups(),this._isInfosSource=!1)},{sync:!0}));for(const e of s.classes??[])t.push(l(()=>({symbol:e.symbol,values:e.values,label:e.label,description:e.description}),(e,t)=>{e!==t&&(this._updateInfosFromGroups(),this._isInfosSource=!1)},{sync:!0}))}this.addHandles(t,R)}}_updateInfosFromGroups(){if(!this.uniqueValueGroups)return this._set("uniqueValueInfos",null),this._updateValueInfoMap(),void this._watchUniqueValueInfos();const e=[],{field:t,field2:s,field3:i,fieldDelimiter:o,uniqueValueGroups:l,valueExpression:r}=this;if(!t&&!r)return this._set("uniqueValueInfos",e),this._updateValueInfoMap(),void this._watchUniqueValueInfos();const u=!(!t||!s);for(const n of l)for(const t of n.classes??[]){const{symbol:l,label:r,values:n,description:a}=t;for(const t of n??[]){const{value:n,value2:p,value3:f}=t,d=[n];s&&d.push(p),i&&d.push(f);const c=u?d.join(o||""):d[0]??void 0;e.push(new U({symbol:l,label:r,value:c,description:a}))}}this._set("uniqueValueInfos",e),this._updateValueInfoMap(),this._watchUniqueValueInfos()}_updateGroupsFromInfos(e=!1){if(!this.uniqueValueInfos)return this._set("uniqueValueGroups",null),void this._watchUniqueValueGroups();const{field:t,field2:s,valueExpression:i,fieldDelimiter:o,uniqueValueInfos:l}=this;if(!t&&!i||!l.length)return this._set("uniqueValueGroups",[]),void this._watchUniqueValueGroups();const r=!(!t||!s),u=l.map(e=>{const{symbol:t,label:s,value:i,description:l}=e,[u,n,a]=r?i?.toString()?.split(o||"")||[]:[i];return new S({symbol:t,label:s,description:l,values:[new I({value:u,value2:n,value3:a})]})}),n=[new w({classes:u})];e&&Object.freeze(n),this._set("uniqueValueGroups",n),this._watchUniqueValueGroups()}_getUniqueValueInfo(e,t){return this.valueExpression?this._getUnqiueValueInfoForExpression(e,t):this._getUnqiueValueInfoForFields(e)}_getUnqiueValueInfoForExpression(e,t){const{viewingMode:s,scale:i,spatialReference:o,arcade:l,timeZone:r}=t??{};let u=this._cache.compiledFunc;const n=l.arcadeUtils;if(!u){const e=n.createSyntaxTree(this.valueExpression);u=n.createFunction(e),this._cache.compiledFunc=u}const a=n.executeFunction(u,n.createExecContext(e,n.getViewInfo({viewingMode:s,scale:i,spatialReference:o}),r));return this._valueInfoMap[C(a)]}_getUnqiueValueInfoForFields(e){const t=this.field,s=e.attributes;let i;if(this.field2){const e=this.field2,o=this.field3,l=[];t&&l.push(s[t]),e&&l.push(s[e]),o&&l.push(s[o]),i=l.join(this.fieldDelimiter||"")}else t&&(i=s[t]);return this._valueInfoMap[C(i)]}static fromPortalStyle(e,t){const s=new E(t?.properties);s._set("styleOrigin",Object.freeze({styleName:e})),s._set("portal",t?.portal||b.getDefault());const o=s.populateFromStyle();return o.catch(t=>{i.getLogger(this.prototype).error(`#fromPortalStyle('${e}'[, ...])`,"Failed to create unique value renderer from style name",t)}),o}static fromStyleUrl(e,t){const s=new E(t?.properties);s._set("styleOrigin",Object.freeze({styleUrl:e}));const o=s.populateFromStyle();return o.catch(t=>{i.getLogger(this.prototype).error(`#fromStyleUrl('${e}'[, ...])`,"Failed to create unique value renderer from style URL",t)}),o}};e([r({readOnly:!0})],$.prototype,"_cache",null),e([n({uniqueValue:"unique-value"})],$.prototype,"type",void 0),e([r(_)],$.prototype,"backgroundFillSymbol",void 0),e([r({value:null,json:{type:String,read:{source:"field1"},write:{target:"field1"}}})],$.prototype,"field",null),e([u("field")],$.prototype,"castField",null),e([f("field")],$.prototype,"writeField",null),e([r({type:String,value:null,json:{write:!0}})],$.prototype,"field2",null),e([r({type:String,value:null,json:{write:!0}})],$.prototype,"field3",null),e([r({type:Boolean,json:{name:"drawInClassOrder",default:!1,write:!0,origins:{"web-scene":{write:!1}}}})],$.prototype,"orderByClassesEnabled",void 0),e([r({type:String,value:null,json:{write:!0}})],$.prototype,"valueExpression",null),e([r({type:String,json:{write:!0}})],$.prototype,"valueExpressionTitle",void 0),e([r({type:q,json:{write:!0}})],$.prototype,"legendOptions",void 0),e([r({type:String,json:{write:!0}})],$.prototype,"defaultLabel",void 0),e([r(o({...V},{json:{write:{overridePolicy(){return{enabled:!this._isDefaultSymbolDerived}}},origins:{"web-scene":{write:{overridePolicy(){return{enabled:!this._isDefaultSymbolDerived}}}}}}}))],$.prototype,"defaultSymbol",null),e([r({type:String,value:null,json:{write:!0}})],$.prototype,"fieldDelimiter",null),e([r({type:b,readOnly:!0})],$.prototype,"portal",void 0),e([a("portal",["styleName"])],$.prototype,"readPortal",null),e([r({readOnly:!0,json:{write:{enabled:!1,overridePolicy:()=>({enabled:!0})}}})],$.prototype,"styleOrigin",void 0),e([a("styleOrigin",["styleName","styleUrl"])],$.prototype,"readStyleOrigin",null),e([f("styleOrigin",{styleName:{type:String},styleUrl:{type:String}})],$.prototype,"writeStyleOrigin",null),e([r({type:[w],json:{read:{source:["uniqueValueGroups","uniqueValueInfos"],reader:(e,t,s)=>(t.uniqueValueGroups||P(t)).map(e=>w.fromJSON(e,s))},write:{overridePolicy(){return this.styleOrigin?{enabled:!1}:{enabled:!0}}}}})],$.prototype,"uniqueValueGroups",null),e([r({type:[U],json:{read:!1,write:{isRequired:!0,overridePolicy(){return this.styleOrigin?{enabled:!1}:{enabled:!0,isRequired:!0}}}}})],$.prototype,"uniqueValueInfos",null),$=E=e([p("esri.renderers.UniqueValueRenderer")],$);export{$ as default};
5
+ import{__decorate as e}from"tslib";import t from"../core/Error.js";import{clone as s}from"../core/lang.js";import i from"../core/Logger.js";import{deepMerge as o}from"../core/object.js";import{watch as l}from"../core/reactiveUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import{cast as u}from"../core/accessorSupport/decorators/cast.js";import{enumeration as n}from"../core/accessorSupport/decorators/enumeration.js";import{reader as a}from"../core/accessorSupport/decorators/reader.js";import{subclass as p}from"../core/accessorSupport/decorators/subclass.js";import{writer as f}from"../core/accessorSupport/decorators/writer.js";import{diff as d}from"../core/accessorSupport/diffUtils.js";import{ensureString as c,ensureType as h}from"../core/accessorSupport/ensureType.js";import{collectArcadeFieldNames as m,collectField as y}from"../layers/support/fieldUtils.js";import b from"../portal/Portal.js";import g from"./Renderer.js";import{VisualVariablesMixin as v}from"./mixins/VisualVariablesMixin.js";import{rendererBackgroundFillSymbolProperty as _,rendererSymbolProperty as V}from"./support/commonProperties.js";import q from"./support/RendererLegendOptions.js";import I from"./support/UniqueValue.js";import S from"./support/UniqueValueClass.js";import w from"./support/UniqueValueGroup.js";import U from"./support/UniqueValueInfo.js";import{loadArcade as j}from"../support/loadArcade.js";import{f as F,t as O}from"../chunks/persistableUrlUtils.js";import G from"../symbols/WebStyleSymbol.js";import{fetchStyle as D}from"../symbols/support/styleUtils.js";import{ensureType as x}from"../symbols/support/typeUtils.js";var E;const M="uvInfos-watcher",R="uvGroups-watcher",N=",",L=h(U);function P(e){const{field1:t,field2:s,field3:i,fieldDelimiter:o,uniqueValueInfos:l,valueExpression:r}=e,u=!(!t||!s);return[{classes:(l??[]).map(e=>{const{symbol:l,label:n,value:a,description:p}=e,[f,d,c]=u?a?.toString()?.split(o||"")||[]:[a],h=[];return(t||r)&&h.push(f),s&&h.push(d),i&&h.push(c),{symbol:l,label:n,values:[h],description:p}})}]}function C(e){return null!=e&&""!==e&&("string"!=typeof e||""!==e.trim()&&"<null>"!==e.toLowerCase())||(e=null),e+""}let $=E=class extends(v(g)){constructor(e){super(e),this._valueInfoMap={},this._isDefaultSymbolDerived=!1,this._isInfosSource=null,this.type="unique-value",this.backgroundFillSymbol=null,this.orderByClassesEnabled=!1,this.valueExpressionTitle=null,this.legendOptions=null,this.defaultLabel=null,this.portal=null,this.styleOrigin=null,this.diff={uniqueValueInfos(e,t){if(!e&&!t)return;if(!e||!t)return{type:"complete",oldValue:e,newValue:t};let s=!1;const i={type:"collection",added:[],removed:[],changed:[],unchanged:[]};for(let o=0;o<t.length;o++){const l=e.find(e=>e.value===t[o].value);l?d(l,t[o])?(i.changed.push({type:"complete",oldValue:l,newValue:t[o]}),s=!0):i.unchanged.push({oldValue:l,newValue:t[o]}):(i.added.push(t[o]),s=!0)}for(let o=0;o<e.length;o++){t.find(t=>t.value===e[o].value)||(i.removed.push(e[o]),s=!0)}return s?i:void 0}},this._set("uniqueValueInfos",[]),this._set("uniqueValueGroups",[])}get _cache(){return{compiledFunc:null}}set field(e){this._set("field",e),this._updateFieldDelimiter(),this._updateUniqueValues()}castField(e){return null==e||"function"==typeof e?e:c(e)}writeField(e,s,o,l){"string"==typeof e?s[o]=e:l?.messages?l.messages.push(new t("property:unsupported","UniqueValueRenderer.field set to a function cannot be written to JSON")):i.getLogger(this).error(".field: cannot write field to JSON since it's not a string value")}set field2(e){this._set("field2",e),this._updateFieldDelimiter(),this._updateUniqueValues()}set field3(e){this._set("field3",e),this._updateUniqueValues()}set valueExpression(e){this._set("valueExpression",e),this._updateUniqueValues()}set defaultSymbol(e){this._isDefaultSymbolDerived=!1,this._set("defaultSymbol",e)}set fieldDelimiter(e){this._set("fieldDelimiter",e),this._updateUniqueValues()}readPortal(e,t,s){return s.portal||b.getDefault()}readStyleOrigin(e,t,s){if(t.styleName)return Object.freeze({styleName:t.styleName});if(t.styleUrl){const e=F(t.styleUrl,s);return Object.freeze({styleUrl:e})}}writeStyleOrigin(e,t,s,i){e.styleName?t.styleName=e.styleName:e.styleUrl&&(t.styleUrl=O(e.styleUrl,i))}set uniqueValueGroups(e){this.styleOrigin?i.getLogger(this).error("#uniqueValueGroups=","Cannot modify unique value groups of a UniqueValueRenderer created from a web style"):(this._set("uniqueValueGroups",e),this._updateInfosFromGroups(),this._isInfosSource=!1,this._watchUniqueValueGroups())}set uniqueValueInfos(e){this.styleOrigin?i.getLogger(this).error("#uniqueValueInfos=","Cannot modify unique value infos of a UniqueValueRenderer created from a web style"):(this._set("uniqueValueInfos",e),this._updateValueInfoMap(),this._updateGroupsFromInfos(),this._isInfosSource=!0,this._watchUniqueValueInfos())}addUniqueValueInfo(e,t){if(this.styleOrigin)return void i.getLogger(this).error("#addUniqueValueInfo()","Cannot modify unique value infos of a UniqueValueRenderer created from a web style");let s;s="object"==typeof e?L(e):new U({value:e,symbol:x(t)}),this.uniqueValueInfos?.push(s),this._valueInfoMap[C(s.value)]=s,this._updateGroupsFromInfos(),this._isInfosSource=!0,this._watchUniqueValueInfos()}removeUniqueValueInfo(e){if(this.styleOrigin)return void i.getLogger(this).error("#removeUniqueValueInfo()","Cannot modify unique value infos of a UniqueValueRenderer created from a web style");const t=this.uniqueValueInfos;if(t)for(let s=0;s<t.length;s++){const i=t[s];if(String(i.value)===String(e)){delete this._valueInfoMap[C(e)],t.splice(s,1);break}}this._updateGroupsFromInfos(),this._isInfosSource=!0,this._watchUniqueValueInfos()}async getUniqueValueInfo(e,t){let s=t;return this.valueExpression&&null==t?.arcade&&(s={...s,arcade:await j()}),this._getUniqueValueInfo(e,s)}getSymbol(e,t){if(this.valueExpression&&null==t?.arcade)return void i.getLogger(this).error("#getSymbol()","Please use getSymbolAsync if valueExpression is used");const s=this._getUniqueValueInfo(e,t);return s?.symbol||this.defaultSymbol}async getSymbolAsync(e,t){let s=t;if(this.valueExpression&&null==s?.arcade){const e=await j(),{arcadeUtils:t}=e;t.hasGeometryOperations(this.valueExpression)&&await t.enableGeometryOperations(),s={...s,arcade:e}}const i=this._getUniqueValueInfo(e,s);return i?.symbol||this.defaultSymbol}get symbols(){const e=[];if(this._isInfosSource)for(const t of this.uniqueValueInfos??[])t.symbol&&e.push(t.symbol);else for(const t of this.uniqueValueGroups??[])for(const s of t.classes??[])s.symbol&&e.push(s.symbol);return this.defaultSymbol&&e.push(this.defaultSymbol),e}getAttributeHash(){return this.visualVariables?.reduce((e,t)=>e+t.getAttributeHash(),"")??""}getMeshHash(){const e=JSON.stringify(this.backgroundFillSymbol),t=JSON.stringify(this.defaultSymbol),s=this.uniqueValueInfos?.reduce((e,t)=>e+t.getMeshHash(),"");return`${e}.${t}.${s}.${`${this.field}.${this.field2}.${this.field3}.${this.fieldDelimiter}`}.${this.valueExpression}`}clone(){const e=new E({field:this.field,field2:this.field2,field3:this.field3,defaultLabel:this.defaultLabel,defaultSymbol:s(this.defaultSymbol),orderByClassesEnabled:this.orderByClassesEnabled,valueExpression:this.valueExpression,valueExpressionTitle:this.valueExpressionTitle,fieldDelimiter:this.fieldDelimiter,visualVariables:s(this.visualVariables),legendOptions:s(this.legendOptions),authoringInfo:s(this.authoringInfo),backgroundFillSymbol:s(this.backgroundFillSymbol)});this._isDefaultSymbolDerived&&(e._isDefaultSymbolDerived=!0),e._set("portal",this.portal);const t=s(this.uniqueValueInfos),i=s(this.uniqueValueGroups);return this.styleOrigin&&(e._set("styleOrigin",Object.freeze(s(this.styleOrigin))),Object.freeze(t),Object.freeze(i)),e._set("uniqueValueInfos",t),e._updateValueInfoMap(),e._set("uniqueValueGroups",i),e._isInfosSource=this._isInfosSource,e._watchUniqueValueInfosAndGroups(),e}get arcadeRequired(){return this.arcadeRequiredForVisualVariables||!!this.valueExpression}async collectRequiredFields(e,t){const s=[this.collectVVRequiredFields(e,t),this.collectSymbolFields(e,t)];await Promise.all(s)}async collectSymbolFields(e,t){const s=[...this.symbols.map(s=>s.collectRequiredFields(e,t)),m(e,t,null,this.valueExpression)];y(e,t,this.field),y(e,t,this.field2),y(e,t,this.field3),await Promise.all(s)}populateFromStyle(){return D(this.styleOrigin,{portal:this.portal}).then(e=>{const t=[];return this._valueInfoMap={},e?.data&&Array.isArray(e.data.items)&&e.data.items.forEach(s=>{const i=new G({styleUrl:e.styleUrl,styleName:e.styleName,portal:this.portal,name:s.name});this.defaultSymbol||s.name!==e.data.defaultItem||(this.defaultSymbol=i,this._isDefaultSymbolDerived=!0);const o=new U({value:s.name,symbol:i});t.push(o),this._valueInfoMap[C(s.name)]=o}),this._set("uniqueValueInfos",Object.freeze(t)),this._updateGroupsFromInfos(!0),this._isInfosSource=null,this._watchUniqueValueInfos(),!this.defaultSymbol&&this.uniqueValueInfos?.length&&(this.defaultSymbol=this.uniqueValueInfos[0].symbol,this._isDefaultSymbolDerived=!0),this})}_updateFieldDelimiter(){this.field&&this.field2&&!this.fieldDelimiter&&this._set("fieldDelimiter",N)}_updateUniqueValues(){null!=this._isInfosSource&&(this._isInfosSource?this._updateGroupsFromInfos():this._updateInfosFromGroups())}_updateValueInfoMap(){this._valueInfoMap={};const{uniqueValueInfos:e}=this;if(e)for(const t of e)this._valueInfoMap[C(t.value)]=t}_watchUniqueValueInfosAndGroups(){this._watchUniqueValueInfos(),this._watchUniqueValueGroups()}_watchUniqueValueInfos(){this.removeHandles(M);const{uniqueValueInfos:e}=this;if(e){const t=[];for(const s of e)t.push(l(()=>({symbol:s.symbol,value:s.value,label:s.label,description:s.description}),(e,t)=>{e!==t&&(this._updateGroupsFromInfos(),this._isInfosSource=!0)},{sync:!0}));this.addHandles(t,M)}}_watchUniqueValueGroups(){this.removeHandles(R);const{uniqueValueGroups:e}=this;if(e){const t=[];for(const s of e){t.push(l(()=>({classes:s.classes}),(e,t)=>{e!==t&&(this._updateInfosFromGroups(),this._isInfosSource=!1)},{sync:!0}));for(const e of s.classes??[])t.push(l(()=>({symbol:e.symbol,values:e.values,label:e.label,description:e.description}),(e,t)=>{e!==t&&(this._updateInfosFromGroups(),this._isInfosSource=!1)},{sync:!0}))}this.addHandles(t,R)}}_updateInfosFromGroups(){if(!this.uniqueValueGroups)return this._set("uniqueValueInfos",null),this._updateValueInfoMap(),void this._watchUniqueValueInfos();const e=[],{field:t,field2:s,field3:i,fieldDelimiter:o,uniqueValueGroups:l,valueExpression:r}=this;if(!t&&!r)return this._set("uniqueValueInfos",e),this._updateValueInfoMap(),void this._watchUniqueValueInfos();const u=!(!t||!s);for(const n of l)for(const t of n.classes??[]){const{symbol:l,label:r,values:n,description:a}=t;for(const t of n??[]){const{value:n,value2:p,value3:f}=t,d=[n];s&&d.push(p),i&&d.push(f);const c=u?d.join(o||""):d[0]??void 0;e.push(new U({symbol:l,label:r,value:c,description:a}))}}this._set("uniqueValueInfos",e),this._updateValueInfoMap(),this._watchUniqueValueInfos()}_updateGroupsFromInfos(e=!1){if(!this.uniqueValueInfos)return this._set("uniqueValueGroups",null),void this._watchUniqueValueGroups();const{field:t,field2:s,valueExpression:i,fieldDelimiter:o,uniqueValueInfos:l}=this;if(!t&&!i||!l.length)return this._set("uniqueValueGroups",[]),void this._watchUniqueValueGroups();const r=!(!t||!s),u=l.map(e=>{const{symbol:t,label:s,value:i,description:l}=e,[u,n,a]=r?i?.toString()?.split(o||"")||[]:[i];return new S({symbol:t,label:s,description:l,values:[new I({value:u,value2:n,value3:a})]})}),n=[new w({classes:u})];e&&Object.freeze(n),this._set("uniqueValueGroups",n),this._watchUniqueValueGroups()}_getUniqueValueInfo(e,t){return this.valueExpression?this._getUnqiueValueInfoForExpression(e,t):this._getUnqiueValueInfoForFields(e)}_getUnqiueValueInfoForExpression(e,t){const{viewingMode:s,scale:i,spatialReference:o,arcade:l,timeZone:r}=t??{};let u=this._cache.compiledFunc;const n=l.arcadeUtils;if(!u){const e=n.createSyntaxTree(this.valueExpression);u=n.createFunction(e),this._cache.compiledFunc=u}const a=n.executeFunction(u,n.createExecContext(e,n.getViewInfo({viewingMode:s,scale:i,spatialReference:o}),r));return this._valueInfoMap[C(a)]}_getUnqiueValueInfoForFields(e){const t=this.field,s=e.attributes;let i;if(this.field2){const e=this.field2,o=this.field3,l=[];t&&l.push(s[t]),e&&l.push(s[e]),o&&l.push(s[o]),i=l.join(this.fieldDelimiter||"")}else t&&(i=s[t]);return this._valueInfoMap[C(i)]}static fromPortalStyle(e,t){const s=new E(t?.properties);s._set("styleOrigin",Object.freeze({styleName:e})),s._set("portal",t?.portal||b.getDefault());const o=s.populateFromStyle();return o.catch(t=>{i.getLogger(this.prototype).error(`#fromPortalStyle('${e}'[, ...])`,"Failed to create unique value renderer from style name",t)}),o}static fromStyleUrl(e,t){const s=new E(t?.properties);s._set("styleOrigin",Object.freeze({styleUrl:e}));const o=s.populateFromStyle();return o.catch(t=>{i.getLogger(this.prototype).error(`#fromStyleUrl('${e}'[, ...])`,"Failed to create unique value renderer from style URL",t)}),o}};e([r({readOnly:!0})],$.prototype,"_cache",null),e([n({uniqueValue:"unique-value"})],$.prototype,"type",void 0),e([r(_)],$.prototype,"backgroundFillSymbol",void 0),e([r({value:null,json:{type:String,read:{source:"field1"},write:{target:"field1"}}})],$.prototype,"field",null),e([u("field")],$.prototype,"castField",null),e([f("field")],$.prototype,"writeField",null),e([r({type:String,value:null,json:{write:!0}})],$.prototype,"field2",null),e([r({type:String,value:null,json:{write:!0}})],$.prototype,"field3",null),e([r({type:Boolean,json:{name:"drawInClassOrder",default:!1,write:!0,origins:{"web-scene":{write:!1}}}})],$.prototype,"orderByClassesEnabled",void 0),e([r({type:String,value:null,json:{write:!0}})],$.prototype,"valueExpression",null),e([r({type:String,json:{write:!0}})],$.prototype,"valueExpressionTitle",void 0),e([r({type:q,json:{write:!0}})],$.prototype,"legendOptions",void 0),e([r({type:String,json:{write:!0}})],$.prototype,"defaultLabel",void 0),e([r(o({...V},{json:{write:{overridePolicy(){return{enabled:!this._isDefaultSymbolDerived}}},origins:{"web-scene":{write:{overridePolicy(){return{enabled:!this._isDefaultSymbolDerived}}}}}}}))],$.prototype,"defaultSymbol",null),e([r({type:String,value:null,json:{write:!0}})],$.prototype,"fieldDelimiter",null),e([r({type:b,readOnly:!0})],$.prototype,"portal",void 0),e([a("portal",["styleName"])],$.prototype,"readPortal",null),e([r({readOnly:!0,json:{write:{enabled:!1,overridePolicy:()=>({enabled:!0})}}})],$.prototype,"styleOrigin",void 0),e([a("styleOrigin",["styleName","styleUrl"])],$.prototype,"readStyleOrigin",null),e([f("styleOrigin",{styleName:{type:String},styleUrl:{type:String}})],$.prototype,"writeStyleOrigin",null),e([r({type:[w],json:{read:{source:["uniqueValueGroups","uniqueValueInfos"],reader:(e,t,s)=>(t.uniqueValueGroups||P(t)).map(e=>w.fromJSON(e,s))},write:{overridePolicy(){return this.styleOrigin?{enabled:!1}:{enabled:!0}}}}})],$.prototype,"uniqueValueGroups",null),e([r({type:[U],json:{read:!1,write:{isRequired:!0,overridePolicy(){return this.styleOrigin?{enabled:!1}:{enabled:!0,isRequired:!0}}}}})],$.prototype,"uniqueValueInfos",null),$=E=e([p("esri.renderers.UniqueValueRenderer")],$);export{$ as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as r}from"tslib";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{reader as s}from"../../core/accessorSupport/decorators/reader.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import{writer as e}from"../../core/accessorSupport/decorators/writer.js";import{collectField as t,collectArcadeFieldNames as o}from"../../layers/support/fieldUtils.js";import l from"../visualVariables/ColorVariable.js";import u from"../visualVariables/OpacityVariable.js";import p from"../visualVariables/RotationVariable.js";import V from"../visualVariables/SizeVariable.js";import c from"../visualVariables/VisualVariable.js";import n from"../visualVariables/VisualVariableFactory.js";import{matchRandomRotationExpression as b}from"../../support/arcadeExpressionUtils.js";const m={base:c,key:"type",typeMap:{opacity:u,color:l,rotation:p,size:V}},v=l=>{const u=l;let p=class extends u{constructor(){super(...arguments),this._vvFactory=new n}set visualVariables(r){this._vvFactory.visualVariables=r,this._set("visualVariables",this._vvFactory.visualVariables)}readVisualVariables(r,a,s){return this._vvFactory.readVariables(r,a,s)}writeVisualVariables(r,a,s,i){a[s]=this._vvFactory.writeVariables(r,i)}get arcadeRequiredForVisualVariables(){return this.visualVariables?.some(({arcadeRequired:r})=>r)??!1}hasVisualVariables(r,a){return r?this.getVisualVariablesForType(r,a).length>0:this.getVisualVariablesForType("size",a).length>0||this.getVisualVariablesForType("color",a).length>0||this.getVisualVariablesForType("opacity",a).length>0||this.getVisualVariablesForType("rotation",a).length>0}getVisualVariablesForType(r,a){return this.visualVariables?.filter(s=>s.type===r&&("string"==typeof a?s.target===a:!1!==a||!s.target))??[]}async collectVVRequiredFields(r,a){let s=[];this.visualVariables&&(s=s.concat(this.visualVariables));for(const i of s)i&&(i.field&&t(r,a,i.field),i.normalizationField&&t(r,a,i.normalizationField),i.valueExpression&&(y(i.valueExpression,r,a)||await o(r,a,i.valueExpression)))}};return r([a({types:[m],value:null,json:{write:!0}})],p.prototype,"visualVariables",null),r([s("visualVariables",["visualVariables","rotationType","rotationExpression"])],p.prototype,"readVisualVariables",null),r([e("visualVariables")],p.prototype,"writeVisualVariables",null),p=r([i("esri.renderers.mixins.VisualVariablesMixin")],p),p};function y(r,a,s){const i=b(r);return null!=i&&(t(a,s,i),!0)}export{v as VisualVariablesMixin};
5
+ import{__decorate as r}from"tslib";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{reader as s}from"../../core/accessorSupport/decorators/reader.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import{writer as e}from"../../core/accessorSupport/decorators/writer.js";import{collectField as t,collectArcadeFieldNames as o}from"../../layers/support/fieldUtils.js";import l from"../visualVariables/ColorVariable.js";import u from"../visualVariables/OpacityVariable.js";import p from"../visualVariables/RotationVariable.js";import V from"../visualVariables/SizeVariable.js";import n from"../visualVariables/VisualVariable.js";import c from"../visualVariables/VisualVariableFactory.js";import{matchRandomRotationExpression as b}from"../../support/arcadeExpressionUtils.js";const m={base:n,key:"type",typeMap:{opacity:u,color:l,rotation:p,size:V}},v=l=>{const u=l;let p=class extends u{constructor(){super(...arguments),this._vvFactory=new c}set visualVariables(r){this._vvFactory.visualVariables=r,this._set("visualVariables",this._vvFactory.visualVariables)}readVisualVariables(r,a,s){return this._vvFactory.readVariables(r,a,s)}writeVisualVariables(r,a,s,i){a[s]=this._vvFactory.writeVariables(r,i)}get arcadeRequiredForVisualVariables(){return this.visualVariables?.some(({arcadeRequired:r})=>r)??!1}hasVisualVariables(r,a){return r?this.getVisualVariablesForType(r,a).length>0:this.getVisualVariablesForType("size",a).length>0||this.getVisualVariablesForType("color",a).length>0||this.getVisualVariablesForType("opacity",a).length>0||this.getVisualVariablesForType("rotation",a).length>0}getVisualVariablesForType(r,a){return this.visualVariables?.filter(s=>s.type===r&&("string"==typeof a?s.target===a:!1!==a||!s.target))??[]}async collectVVRequiredFields(r,a){let s=[];this.visualVariables&&(s=s.concat(this.visualVariables));for(const i of s)i&&(i.field&&t(r,a,i.field),i.normalizationField&&t(r,a,i.normalizationField),i.valueExpression&&(y(i.valueExpression,r,a)||await o(r,a,null,i.valueExpression)))}};return r([a({types:[m],value:null,json:{write:!0}})],p.prototype,"visualVariables",null),r([s("visualVariables",["visualVariables","rotationType","rotationExpression"])],p.prototype,"readVisualVariables",null),r([e("visualVariables")],p.prototype,"writeVisualVariables",null),p=r([i("esri.renderers.mixins.VisualVariablesMixin")],p),p};function y(r,a,s){const i=b(r);return null!=i&&(t(a,s,i),!0)}export{v as VisualVariablesMixin};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{p as e,c as n,e as r,a as t,r as o,l as a,b as l,d as u,f as s,s as c,g as f,h as p}from"../chunks/arcade.js";export{i as arcade}from"../chunks/arcade.js";import{ArcadeDate as m}from"../arcade/ArcadeDate.js";import{toSymbolId as d}from"../arcade/arcadeEnvironment.js";import y from"../arcade/Dictionary.js";import v from"../arcade/Feature.js";import{j as x,e as g,k as j,m as S,l as h}from"../chunks/languageUtils.js";export{Voxel}from"../arcade/Voxel.js";import{clone as w}from"../core/lang.js";import{DateOnly as $}from"../core/sql/DateOnly.js";import{TimeOnly as b}from"../core/sql/TimeOnly.js";import E from"../geometry/Extent.js";import A from"../geometry/Multipoint.js";import F from"../geometry/Point.js";import P from"../geometry/Polygon.js";import C from"../geometry/Polyline.js";import{isArray as _,isString as D,isBoolean as I,isNumber as M}from"./guards.js";const R={vars:{$feature:"any",$view:"any"}};function T(e){return e.replaceAll(/[|\\{}()[\]^$+*?.]/g,"\\$&")}function k(e){return null==e?null:_(e)||x(e)?"array":g(e)?"date":D(e)?"text":I(e)?"boolean":M(e)?"number":e instanceof y?"dictionary":j(e)?"feature":e instanceof F?"point":e instanceof P?"polygon":e instanceof C?"polyline":e instanceof A?"multipoint":e instanceof E?"extent":e instanceof $?"dateOnly":e instanceof b?"time":S(e)?"featureSet":h(e)?"featureSetCollection":null}function z(n){if(!n)return null;try{return e(n)}catch(r){}return null}function J(e,r){const t="string"==typeof e?z(e):e;if(!t)return null;try{return r=r||w(R),n(t,r)}catch(o){}return null}function V(e,n,r){return{vars:{$feature:null==e?new v:v.createFromGraphic(e,r),$view:n?.view},spatialReference:n?.sr,timeZone:r??null}}function O(e,n,r){return v.createFromGraphicLikeObject(n,e,r,null)}function Z(e,n){null!=e.vars&&(e.vars.$feature=n)}function q(e,n){let t;try{t=r(e,n)}catch(o){t=null}return t}function G(e,n){let r;try{r=e?e(n):null}catch(t){r=null}return r}function L(e,n){try{return e?e(n):Promise.resolve(null)}catch(r){return Promise.resolve(null)}}const N=new Set(["$feature","$aggregatedFeatures","$voxel"].map(e=>d(e)));function U(e,n){if(!e)return[];const r="string"==typeof e?z(e):e;if(!r)return[];const o=t(r).filter(({varId:e})=>N.has(e)).map(({memberNamePattern:e})=>e).flatMap(e=>{if(e.includes("*")){if(null==n)return[];const r=new RegExp(`^${e.split(/\*+/).map(T).join(".*")}$`,"i");return n.filter(e=>r.test(e))}return e.toLowerCase()});return[...new Set(o.sort())]}function B(e){return o(e,"$view")}function H(e,n){return!!e&&o(e,n)}function K(e){if(!e||null==e.spatialReference&&(null==e.scale||null==e.viewingMode))return;let n,r;const{timeProperties:t,timeZone:o}=e;if(null!=t){const{currentStart:e,currentEnd:a}=t;null!=o?(n=null!=e?m.dateJSAndZoneToArcadeDate(e,o):null,r=null!=a?m.dateJSAndZoneToArcadeDate(a,o):null):(n=null!=e?m.dateJSToArcadeDate(e):null,r=null!=a?m.dateJSToArcadeDate(a):null)}return{view:e.viewingMode&&null!=e.scale?new y({__proto__:null,viewingMode:e.viewingMode,scale:e.scale,timeProperties:null!=n||null!=r?new y({__proto__:null,currentStart:n,currentEnd:r,startIncluded:!0,endIncluded:!0}):null}):null,sr:e.spatialReference}}function Q({url:e,spatialReference:n,lrucache:r,interceptor:t}){const o=s();return o?o.createFeatureSetCollectionFromService(e,n,r,t):null}function W({layer:e,spatialReference:n,outFields:r,returnGeometry:t,lrucache:o,interceptor:a}){if(null===e)return null;const i=s();return i?i.constructFeatureSet(e,n,r,t??!0,o,a):null}function X(e){if(null===e?.map)return null;const n=s();return n?n.createFeatureSetCollectionFromMap(e.map,e.spatialReference,e.lrucache,e.interceptor):null}function Y(e,n){return y.convertJsonToArcade(e,n)}function ee(e,n,r=[]){return a(e,n,r)}function ne(){return l()}function re(){return u()}function te(e){return"type"in e&&("class-breaks"===e.type||"dictionary"===e.type||"dot-density"===e.type||"pie-chart"===e.type||"simple"===e.type||"unique-value"===e.type)}function oe(e){return"esri.layers.support.LabelClass"===e.declaredClass}function ae(e){return"esri.PopupTemplate"===e.declaredClass}function ie(e,n){if(!e)return!1;if("string"==typeof e)return n(e);const r=e;if(te(r)){if("dot-density"===r.type){const e=r.attributes?.some(e=>n(e.valueExpression));if(e)return e}const e=r.visualVariables,t=!!e&&e.some(e=>{let r=n(e.valueExpression);return"size"===e.type&&(pe(e.minSize)&&(r=r||n(e.minSize.valueExpression)),pe(e.maxSize)&&(r=r||n(e.maxSize.valueExpression))),r});return!(!("valueExpression"in r)||!n(r.valueExpression))||t}if(oe(r)){const e=r.labelExpressionInfo?.expression;return!(!e||!n(e))||!1}return!!ae(r)&&(!!r.expressionInfos&&r.expressionInfos.some(e=>n(e.expression))||Array.isArray(r.content)&&r.content.some(e=>"expression"===e.type&&n(e.expressionInfo?.expression)))}function le(e){const n=z(e);return!!n&&f(n)}function ue(e){return ie(e,le)}function se(e){const n=z(e);return!!n&&p(n)}function ce(e){return ie(e,se)}function fe(e){return ie(e,e=>{const n=z(e);return!!n&&c(n)})}function pe(e){return e&&"esri.renderers.visualVariables.SizeVariable"===e.declaredClass}export{y as Dictionary,v as arcadeFeature,W as convertFeatureLayerToFeatureSet,Y as convertJsonToArcade,X as convertMapToFeatureSetCollection,Q as convertServiceUrlToWorkspace,V as createExecContext,O as createFeature,J as createFunction,z as createSyntaxTree,B as dependsOnView,re as enableFeatureSetOperations,ne as enableGeometryOperations,q as evalSyntaxTree,L as executeAsyncFunction,G as executeFunction,U as extractFieldNames,k as getArcadeType,K as getViewInfo,ue as hasGeometryFunctions,ce as hasGeometryOperations,H as hasVariable,ee as loadScriptDependencies,fe as requiresTrack,Z as updateExecContext};
5
+ import{p as e,c as r,e as n,a as t,r as o,l as a,b as l,d as s,f as u,s as c,g as f,h as p}from"../chunks/arcade.js";export{i as arcade}from"../chunks/arcade.js";import{ArcadeDate as m}from"../arcade/ArcadeDate.js";import{toSymbolId as d}from"../arcade/arcadeEnvironment.js";import y from"../arcade/Dictionary.js";import v from"../arcade/Feature.js";import{j as x,e as g,k as j,m as S,l as h}from"../chunks/languageUtils.js";export{Pixel}from"../arcade/Pixel.js";export{Voxel}from"../arcade/Voxel.js";import{clone as w}from"../core/lang.js";import{DateOnly as A}from"../core/sql/DateOnly.js";import{TimeOnly as $}from"../core/sql/TimeOnly.js";import b from"../geometry/Extent.js";import E from"../geometry/Multipoint.js";import F from"../geometry/Point.js";import P from"../geometry/Polygon.js";import C from"../geometry/Polyline.js";import{isArray as M,isString as _,isBoolean as D,isNumber as I}from"./guards.js";const R={vars:{$feature:"any",$view:"any"}};function T(e){return e.replaceAll(/[|\\{}()[\]^$+*?.]/g,"\\$&")}function k(e){return null==e?null:M(e)||x(e)?"array":g(e)?"date":_(e)?"text":D(e)?"boolean":I(e)?"number":e instanceof y?"dictionary":j(e)?"feature":e instanceof F?"point":e instanceof P?"polygon":e instanceof C?"polyline":e instanceof E?"multipoint":e instanceof b?"extent":e instanceof A?"dateOnly":e instanceof $?"time":S(e)?"featureSet":h(e)?"featureSetCollection":null}function z(r){if(!r)return null;try{return e(r)}catch(n){}return null}function J(e,n){const t="string"==typeof e?z(e):e;if(!t)return null;try{return n=n||w(R),r(t,n)}catch(o){}return null}function V(e,r,n){return{vars:{$feature:null==e?new v:v.createFromGraphic(e,n),$view:r?.view},spatialReference:r?.sr,timeZone:n??null}}function O(e,r,n){return v.createFromGraphicLikeObject(r,e,n,null)}function Z(e,r){null!=e.vars&&(e.vars.$feature=r)}function q(e,r){let t;try{t=n(e,r)}catch(o){t=null}return t}function G(e,r){let n;try{n=e?e(r):null}catch(t){n=null}return n}function L(e,r){try{return e?e(r):Promise.resolve(null)}catch(n){return Promise.resolve(null)}}const N=["$feature","$aggregatedFeatures","$voxel"].map(e=>d(e));function U(e,r){if(!e)return[];const n="string"==typeof e?z(e):e;if(!n)return[];const o=new Map;if(Array.isArray(r)||null==r)for(const t of N)o.set(t,r);else for(const[t,i]of r)o.set(d(t),i);const a=t(n).flatMap(({varId:e,memberNamePattern:r})=>{if(!o.has(e))return[];if(r.includes("*")){const n=o.get(e);if(null==n)return[];const t=new RegExp(`^${r.split(/\*+/).map(T).join(".*")}$`,"i");return n.filter(e=>t.test(e))}return r.toLowerCase()});return[...new Set(a.sort())]}function B(e){return o(e,"$view")}function H(e,r){return!!e&&o(e,r)}function K(e){if(!e||null==e.spatialReference&&(null==e.scale||null==e.viewingMode))return;let r,n;const{timeProperties:t,timeZone:o}=e;if(null!=t){const{currentStart:e,currentEnd:a}=t;null!=o?(r=null!=e?m.dateJSAndZoneToArcadeDate(e,o):null,n=null!=a?m.dateJSAndZoneToArcadeDate(a,o):null):(r=null!=e?m.dateJSToArcadeDate(e):null,n=null!=a?m.dateJSToArcadeDate(a):null)}return{view:e.viewingMode&&null!=e.scale?new y({__proto__:null,viewingMode:e.viewingMode,scale:e.scale,timeProperties:null!=r||null!=n?new y({__proto__:null,currentStart:r,currentEnd:n,startIncluded:!0,endIncluded:!0}):null}):null,sr:e.spatialReference}}function Q({url:e,spatialReference:r,lrucache:n,interceptor:t}){const o=u();return o?o.createFeatureSetCollectionFromService(e,r,n,t):null}function W({layer:e,spatialReference:r,outFields:n,returnGeometry:t,lrucache:o,interceptor:a}){if(null===e)return null;const i=u();return i?i.constructFeatureSet(e,r,n,t??!0,o,a):null}function X(e){if(null===e?.map)return null;const r=u();return r?r.createFeatureSetCollectionFromMap(e.map,e.spatialReference,e.lrucache,e.interceptor):null}function Y(e,r){return y.convertJsonToArcade(e,r)}function ee(e,r,n=[]){return a(e,r,n)}function re(){return l()}function ne(){return s()}function te(e){return"type"in e&&("class-breaks"===e.type||"dictionary"===e.type||"dot-density"===e.type||"pie-chart"===e.type||"simple"===e.type||"unique-value"===e.type)}function oe(e){return"esri.layers.support.LabelClass"===e.declaredClass}function ae(e){return"esri.PopupTemplate"===e.declaredClass}function ie(e,r){if(!e)return!1;if("string"==typeof e)return r(e);const n=e;if(te(n)){if("dot-density"===n.type){const e=n.attributes?.some(e=>r(e.valueExpression));if(e)return e}const e=n.visualVariables,t=!!e&&e.some(e=>{let n=r(e.valueExpression);return"size"===e.type&&(pe(e.minSize)&&(n=n||r(e.minSize.valueExpression)),pe(e.maxSize)&&(n=n||r(e.maxSize.valueExpression))),n});return!(!("valueExpression"in n)||!r(n.valueExpression))||t}if(oe(n)){const e=n.labelExpressionInfo?.expression;return!(!e||!r(e))||!1}return!!ae(n)&&(!!n.expressionInfos&&n.expressionInfos.some(e=>r(e.expression))||Array.isArray(n.content)&&n.content.some(e=>"expression"===e.type&&r(e.expressionInfo?.expression)))}function le(e){const r=z(e);return!!r&&f(r)}function se(e){return ie(e,le)}function ue(e){const r=z(e);return!!r&&p(r)}function ce(e){return ie(e,ue)}function fe(e){return ie(e,e=>{const r=z(e);return!!r&&c(r)})}function pe(e){return e&&"esri.renderers.visualVariables.SizeVariable"===e.declaredClass}export{y as Dictionary,v as arcadeFeature,W as convertFeatureLayerToFeatureSet,Y as convertJsonToArcade,X as convertMapToFeatureSetCollection,Q as convertServiceUrlToWorkspace,V as createExecContext,O as createFeature,J as createFunction,z as createSyntaxTree,B as dependsOnView,ne as enableFeatureSetOperations,re as enableGeometryOperations,q as evalSyntaxTree,L as executeAsyncFunction,G as executeFunction,U as extractFieldNames,k as getArcadeType,K as getViewInfo,se as hasGeometryFunctions,ce as hasGeometryOperations,H as hasVariable,ee as loadScriptDependencies,fe as requiresTrack,Z as updateExecContext};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- let a;function e(){return a||(a=(async()=>{const[a,e,r]=await Promise.all([import("./arcadeUtils.js"),import("../arcade/batchExec.js"),import("../arcade/functions/aiServices.js")]);return{arcade:a.arcade,arcadeUtils:a,batchExec:e,aiServices:r,Dictionary:a.Dictionary,Feature:a.arcadeFeature,Voxel:a.Voxel}})()),a}export{e as loadArcade};
5
+ let a;function e(){return a||(a=(async()=>{const[a,e,r]=await Promise.all([import("./arcadeUtils.js"),import("../arcade/batchExec.js"),import("../arcade/functions/aiServices.js")]);return{arcade:a.arcade,arcadeUtils:a,batchExec:e,aiServices:r,Dictionary:a.Dictionary,Feature:a.arcadeFeature,Voxel:a.Voxel,Pixel:a.Pixel}})()),a}export{e as loadArcade};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- const d="20250904",e="a55defd35517851cd6840615c0e71e534ba910d4";export{d as buildDate,e as commitHash};
5
+ const e="20250905",c="a6c3ecffcbcd91ee6f816995d636635e6e3f07bd";export{e as buildDate,c as commitHash};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as r}from"tslib";import{clone as o}from"../core/lang.js";import{numericHash as t}from"../core/string.js";import{property as e}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import{enumeration as s}from"../core/accessorSupport/decorators/enumeration.js";import{reader as a}from"../core/accessorSupport/decorators/reader.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{writer as p}from"../core/accessorSupport/decorators/writer.js";import{collectArcadeFieldNames as c}from"../layers/support/fieldUtils.js";import m from"./Symbol.js";var l;let n=l=class extends m{constructor(r){super(r),this.data=null,this.type="cim"}readData(r,o){return o}writeData(r,o){Object.assign(o,r)}async collectRequiredFields(r,o){if("CIMSymbolReference"===this.data?.type){const t=this.data.primitiveOverrides;if(t){const e=t.map(t=>{const e=t.valueExpressionInfo;return e?c(r,o,e.expression):null});await Promise.all(e)}}}clone(){return new l({data:o(this.data)})}hash(){return t(JSON.stringify(this.data)).toString()}};r([e({json:{write:!1}})],n.prototype,"color",void 0),r([e({json:{write:!0}})],n.prototype,"data",void 0),r([a("data",["symbol"])],n.prototype,"readData",null),r([p("data",{})],n.prototype,"writeData",null),r([s({CIMSymbolReference:"cim"},{readOnly:!0})],n.prototype,"type",void 0),n=l=r([i("esri.symbols.CIMSymbol")],n);export{n as default};
5
+ import{__decorate as r}from"tslib";import{clone as o}from"../core/lang.js";import{numericHash as t}from"../core/string.js";import{property as e}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import{enumeration as s}from"../core/accessorSupport/decorators/enumeration.js";import{reader as a}from"../core/accessorSupport/decorators/reader.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{writer as p}from"../core/accessorSupport/decorators/writer.js";import{collectArcadeFieldNames as c}from"../layers/support/fieldUtils.js";import l from"./Symbol.js";var m;let n=m=class extends l{constructor(r){super(r),this.data=null,this.type="cim"}readData(r,o){return o}writeData(r,o){Object.assign(o,r)}async collectRequiredFields(r,o){if("CIMSymbolReference"===this.data?.type){const t=this.data.primitiveOverrides;if(t){const e=t.map(t=>{const e=t.valueExpressionInfo;return e?c(r,o,null,e.expression):null});await Promise.all(e)}}}clone(){return new m({data:o(this.data)})}hash(){return t(JSON.stringify(this.data)).toString()}};r([e({json:{write:!1}})],n.prototype,"color",void 0),r([e({json:{write:!0}})],n.prototype,"data",void 0),r([a("data",["symbol"])],n.prototype,"readData",null),r([p("data",{})],n.prototype,"writeData",null),r([s({CIMSymbolReference:"cim"},{readOnly:!0})],n.prototype,"type",void 0),n=m=r([i("esri.symbols.CIMSymbol")],n);export{n as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as r}from"tslib";import{JSONSupport as e}from"../../core/JSONSupport.js";import{property as s}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import{collectArcadeFieldNames as t}from"../../layers/support/fieldUtils.js";var i;let p=i=class extends e{constructor(r){super(r),this.expression=void 0,this.title=void 0}async collectRequiredFields(r,e){return t(r,e,this.expression)}clone(){return new i({expression:this.expression,title:this.title})}equals(r){return this.expression===r.expression&&this.title===r.title}};r([s({type:String,json:{write:{isRequired:!0}}})],p.prototype,"expression",void 0),r([s({type:String,json:{write:!0}})],p.prototype,"title",void 0),p=i=r([o("esri.symbols.support.FeatureExpressionInfo")],p);const n=p;export{n as default};
5
+ import{__decorate as r}from"tslib";import{JSONSupport as e}from"../../core/JSONSupport.js";import{property as s}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import{collectArcadeFieldNames as t}from"../../layers/support/fieldUtils.js";var i;let p=i=class extends e{constructor(r){super(r),this.expression=void 0,this.title=void 0}async collectRequiredFields(r,e){return t(r,e,null,this.expression)}clone(){return new i({expression:this.expression,title:this.title})}equals(r){return this.expression===r.expression&&this.title===r.title}};r([s({type:String,json:{write:{isRequired:!0}}})],p.prototype,"expression",void 0),r([s({type:String,json:{write:!0}})],p.prototype,"title",void 0),p=i=r([o("esri.symbols.support.FeatureExpressionInfo")],p);const n=p;export{n as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as t}from"tslib";import e from"../../../core/Collection.js";import{referenceSetter as i}from"../../../core/collectionUtils.js";import{deprecatedFunction as s}from"../../../core/deprecate.js";import r from"../../../core/Error.js";import h from"../../../core/Logger.js";import{watch as o,on as a,syncAndInitial as n}from"../../../core/reactiveUtils.js";import{property as l}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/RandomLCG.js";import{subclass as p}from"../../../core/accessorSupport/decorators/subclass.js";import{isLinkChartView as c}from"../../../linkChart/utils.js";import{Container as d}from"../engine/Container.js";import{HighlightCounter as g}from"./support/HighlightCounter.js";import{createOrReuseHighlightGradient as u}from"./support/util.js";import{getDefaultHighlightOptions as m,setDefaultHighlightOptions as f}from"../support/highlightOptionsUtils.js";import y from"../../layers/support/ClipRect.js";import v from"../../layers/support/Geometry.js";import w from"../../layers/support/Path.js";import R from"../../support/HighlightOptions.js";import{isInEffectiveScaleRange as _}from"../../support/layerViewUtils.js";const S=e.ofType({key:"type",base:null,typeMap:{rect:y,path:w,geometry:v}}),H=new(e.ofType(R)),b=y=>{const v=y;let w=class extends v{constructor(){super(...arguments),this._highlightCounter=new g,this.attached=!1,this.clips=new S,this.highlights=null,this.lastUpdateId=-1,this.moving=!1,this.updateRequested=!1,this._visibleAtCurrentScale=!0}initialize(){const t=this.view?.spatialReferenceLocked??!0,e=this.view?.spatialReference;e&&t&&!this.spatialReferenceSupported?this.addResolvingPromise(Promise.reject(new r("layerview:spatial-reference-incompatible","The spatial reference of this layer does not meet the requirements of the view",{layer:this.layer}))):(this.container||(this.container=new d),this.container.fadeTransitionEnabled=!0,this.container.visible=!1,this.container.endTransitions(),this.addHandles([o(()=>this.suspended,t=>{this.container&&(this.container.visible=!t)},n),o(()=>this.updateSuspended,t=>{this.view&&!t&&this.updateRequested&&this.view.requestUpdate()},n),o(()=>this.layer?.opacity??1,t=>{this.container&&(this.container.opacity=t)},n),o(()=>this.layer&&"blendMode"in this.layer?this.layer.blendMode:"normal",t=>{this.container&&(this.container.blendMode=t)},n),o(()=>this.layer&&"effect"in this.layer?this.layer.effect:null,t=>{this.container&&(this.container.effect=t)},n),o(()=>this._mergedHighlights.items.map(t=>({name:t.name,options:{fillColor:t.color,haloColor:t.haloColor,fillOpacity:t.fillOpacity,haloOpacity:t.haloOpacity,haloWidth:t.haloWidth,haloBlur:t.haloBlur}})),()=>{this.container.highlightGradient=u(this.container.highlightGradient,this._mergedHighlights.items)},n),o(()=>this._mergedHighlights.items.map(t=>t.name),()=>{this._processHighlight()}),a(()=>this.clips,"change",()=>{this.container&&(this.container.clips=this.clips)},n),o(()=>({scale:this.view?.scale,scaleRange:this.layer&&"effectiveScaleRange"in this.layer?this.layer.effectiveScaleRange:null}),({scale:t,scaleRange:e})=>{const i=_(e,t);i!==this._visibleAtCurrentScale&&(this._visibleAtCurrentScale=i)},n)],"constructor"),this.view?.whenLayerView?this.view.whenLayerView(this.layer).then(t=>{t===this&&this.processAttach()},()=>{}):this.when().then(()=>{this.processAttach()},()=>{}))}destroy(){this.processDetach(),this.updateRequested=!1}get highlightOptions(){return this._logHighlightOptionsDeprecation(),m(this)}set highlightOptions(t){this._logHighlightOptionsDeprecation(),f(this,t)}_logHighlightOptionsDeprecation(){s(h.getLogger(this),"`LayerView.highlightOptions` is deprecated in favor of View.highlights",{replacement:"View.highlights",version:"4.33",see:"https://arcg.is/inbTa1#highlights",warnOnce:!0})}get hasHighlight(){return this._highlightCounter.size>0}get _mergedHighlights(){if(!this.view)return H;if(!this.highlights)return this.view.highlights;const t=this.view.highlights.clone();for(const e of this.highlights){const i=t.find(t=>t.name===e.name);i&&i.assignFrom(e)}return t}get highlightIds(){return Array.from(this._highlightCounter.objectIds)}get scheduler(){return this.view.scheduler}get spatialReferenceSupported(){const t=this.view?.spatialReference;return null==t||this.supportsSpatialReference(t)}get updating(){return this.spatialReferenceSupported&&(!this.attached||!this.suspended&&(this.updateRequested||this.isUpdating())||!!this._updatingHandles?.updating||this.container.transitioning)}get visibleAtCurrentScale(){return this._visibleAtCurrentScale}processAttach(){this.isResolved()&&!this.attached&&!this.destroyed&&this.spatialReferenceSupported&&(this.attach(),this.attached=!0,this.requestUpdate())}processDetach(){this.attached&&(this.attached=!1,this.removeHandles("attach"),this.detach(),this.updateRequested=!1)}requestUpdate(){this.destroyed||this.updateRequested||(this.updateRequested=!0,this.updateSuspended||this.view.requestUpdate())}processUpdate(t){!this.isFulfilled()||this.isResolved()?(this._set("updateParameters",t),this.updateRequested&&!this.updateSuspended&&(this.updateRequested=!1,this.update(t))):this.updateRequested=!1}hitTest(t,e){return Promise.resolve(null)}supportsSpatialReference(t){return!0}canResume(){if(!this.spatialReferenceSupported)return!1;switch(this.layer?.type){case"link-chart":case"knowledge-graph-sublayer":case"graphics":break;default:if(c(this.view)&&!this.view.inGeographicLayout)return!1}return!!super.canResume()&&this.visibleAtCurrentScale}getSuspendInfo(){const t=super.getSuspendInfo(),e=!this.spatialReferenceSupported;return e&&(t.spatialReferenceNotSupported=e),t}addAttachHandles(t){this.addHandles(t,"attach")}_addHighlights(t,e){this._highlightCounter.add(t,e)&&this._processHighlight()}_removeHighlights(t,e){this._highlightCounter.delete(t,e)&&this._processHighlight()}_processHighlight(){}_getHighlights(){const t=[];for(const[e,i]of this._highlightCounter.highlightNamesByObjectId){const s=this._getHighlightBits(i);t.push({objectId:e,highlightFlags:s})}return t}_getHighlightBits(t){const e=new Set(t);let i=1,s=0;if(!this.view)return 0;const r=this._mergedHighlights;for(const{name:h}of r)e.delete(h)&&(s=i),i<<=1;return s}};return t([l()],w.prototype,"attached",void 0),t([l({type:S,set(t){const e=i(t,this._get("clips"),S);this._set("clips",e)}})],w.prototype,"clips",void 0),t([l()],w.prototype,"container",void 0),t([l({type:R})],w.prototype,"highlightOptions",null),t([l({type:e.ofType(R)})],w.prototype,"highlights",void 0),t([l()],w.prototype,"_mergedHighlights",null),t([l()],w.prototype,"moving",void 0),t([l({readOnly:!0})],w.prototype,"spatialReferenceSupported",null),t([l({readOnly:!0})],w.prototype,"updateParameters",void 0),t([l()],w.prototype,"updateRequested",void 0),t([l()],w.prototype,"updating",null),t([l()],w.prototype,"view",void 0),t([l()],w.prototype,"_visibleAtCurrentScale",void 0),t([l({readOnly:!0})],w.prototype,"visibleAtCurrentScale",null),w=t([p("esri.views.2d.layers.LayerView2D")],w),w};export{b as LayerView2DMixin};
5
+ import{__decorate as t}from"tslib";import e from"../../../core/Collection.js";import{referenceSetter as i}from"../../../core/collectionUtils.js";import{deprecatedFunction as s}from"../../../core/deprecate.js";import r from"../../../core/Error.js";import h from"../../../core/Logger.js";import{watch as o,on as a,syncAndInitial as n}from"../../../core/reactiveUtils.js";import{property as l}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/RandomLCG.js";import{subclass as p}from"../../../core/accessorSupport/decorators/subclass.js";import{isLinkChartView as c}from"../../../linkChart/utils.js";import{Container as d}from"../engine/Container.js";import{HighlightCounter as g}from"./support/HighlightCounter.js";import{createOrReuseHighlightGradient as u}from"./support/util.js";import{getDefaultHighlightOptions as m,setDefaultHighlightOptions as f}from"../support/highlightOptionsUtils.js";import y from"../../layers/support/ClipRect.js";import v from"../../layers/support/Geometry.js";import w from"../../layers/support/Path.js";import R from"../../support/HighlightOptions.js";import{isInEffectiveScaleRange as _}from"../../support/layerViewUtils.js";const S=e.ofType({key:"type",base:null,typeMap:{rect:y,path:w,geometry:v}}),H=new(e.ofType(R)),b=y=>{const v=y;let w=class extends v{constructor(){super(...arguments),this._highlightCounter=new g,this.attached=!1,this.clips=new S,this.highlights=null,this.lastUpdateId=-1,this.moving=!1,this.updateRequested=!1,this._visibleAtCurrentScale=!0}initialize(){const t=this.view?.spatialReferenceLocked??!0,e=this.view?.spatialReference;e&&t&&!this.spatialReferenceSupported?this.addResolvingPromise(Promise.reject(new r("layerview:spatial-reference-incompatible","The spatial reference of this layer does not meet the requirements of the view",{layer:this.layer}))):(this.container||(this.container=new d),this.container.fadeTransitionEnabled=!0,this.container.visible=!1,this.container.endTransitions(),this.addHandles([o(()=>this.suspended,t=>{this.container&&(this.container.visible=!t)},n),o(()=>this.updateSuspended,t=>{this.view&&!t&&this.updateRequested&&this.view.requestUpdate()},n),o(()=>this.layer?.opacity??1,t=>{this.container&&(this.container.opacity=t)},n),o(()=>this.layer&&"blendMode"in this.layer?this.layer.blendMode:"normal",t=>{this.container&&(this.container.blendMode=t)},n),o(()=>this.layer&&"effect"in this.layer?this.layer.effect:null,t=>{this.container&&(this.container.effect=t)},n),o(()=>this._mergedHighlights.items.map(t=>({name:t.name,options:{fillColor:t.color,haloColor:t.haloColor,fillOpacity:t.fillOpacity,haloOpacity:t.haloOpacity,haloWidth:t.haloWidth,haloBlur:t.haloBlur}})),()=>{this.container.highlightGradient=u(this.container.highlightGradient,this._mergedHighlights.items)},n),o(()=>this._mergedHighlights.items.map(t=>t.name),()=>{this._processHighlight()}),a(()=>this.clips,"change",()=>{this.container&&(this.container.clips=this.clips)},n),o(()=>({scale:this.view?.scale,scaleRange:this.layer&&"effectiveScaleRange"in this.layer?this.layer.effectiveScaleRange:null}),({scale:t,scaleRange:e})=>{const i=_(e,t);i!==this._visibleAtCurrentScale&&(this._visibleAtCurrentScale=i)},n)],"constructor"),this.view?.whenLayerView?this.view.whenLayerView(this.layer).then(t=>{t===this&&this.processAttach()},()=>{}):this.when().then(()=>{this.processAttach()},()=>{}))}destroy(){this.processDetach(),this.updateRequested=!1}get highlightOptions(){return this._logHighlightOptionsDeprecation(),m(this)}set highlightOptions(t){this._logHighlightOptionsDeprecation(),f(this,t)}_logHighlightOptionsDeprecation(){s(h.getLogger(this),"`LayerView.highlightOptions` is deprecated in favor of View.highlights",{replacement:"View.highlights",version:"4.34",see:"https://arcg.is/inbTa1#highlights",warnOnce:!0})}get hasHighlight(){return this._highlightCounter.size>0}get _mergedHighlights(){if(!this.view)return H;if(!this.highlights)return this.view.highlights;const t=this.view.highlights.clone();for(const e of this.highlights){const i=t.find(t=>t.name===e.name);i&&i.assignFrom(e)}return t}get highlightIds(){return Array.from(this._highlightCounter.objectIds)}get scheduler(){return this.view.scheduler}get spatialReferenceSupported(){const t=this.view?.spatialReference;return null==t||this.supportsSpatialReference(t)}get updating(){return this.spatialReferenceSupported&&(!this.attached||!this.suspended&&(this.updateRequested||this.isUpdating())||!!this._updatingHandles?.updating||this.container.transitioning)}get visibleAtCurrentScale(){return this._visibleAtCurrentScale}processAttach(){this.isResolved()&&!this.attached&&!this.destroyed&&this.spatialReferenceSupported&&(this.attach(),this.attached=!0,this.requestUpdate())}processDetach(){this.attached&&(this.attached=!1,this.removeHandles("attach"),this.detach(),this.updateRequested=!1)}requestUpdate(){this.destroyed||this.updateRequested||(this.updateRequested=!0,this.updateSuspended||this.view.requestUpdate())}processUpdate(t){!this.isFulfilled()||this.isResolved()?(this._set("updateParameters",t),this.updateRequested&&!this.updateSuspended&&(this.updateRequested=!1,this.update(t))):this.updateRequested=!1}hitTest(t,e){return Promise.resolve(null)}supportsSpatialReference(t){return!0}canResume(){if(!this.spatialReferenceSupported)return!1;switch(this.layer?.type){case"link-chart":case"knowledge-graph-sublayer":case"graphics":break;default:if(c(this.view)&&!this.view.inGeographicLayout)return!1}return!!super.canResume()&&this.visibleAtCurrentScale}getSuspendInfo(){const t=super.getSuspendInfo(),e=!this.spatialReferenceSupported;return e&&(t.spatialReferenceNotSupported=e),t}addAttachHandles(t){this.addHandles(t,"attach")}_addHighlights(t,e){this._highlightCounter.add(t,e)&&this._processHighlight()}_removeHighlights(t,e){this._highlightCounter.delete(t,e)&&this._processHighlight()}_processHighlight(){}_getHighlights(){const t=[];for(const[e,i]of this._highlightCounter.highlightNamesByObjectId){const s=this._getHighlightBits(i);t.push({objectId:e,highlightFlags:s})}return t}_getHighlightBits(t){const e=new Set(t);let i=1,s=0;if(!this.view)return 0;const r=this._mergedHighlights;for(const{name:h}of r)e.delete(h)&&(s=i),i<<=1;return s}};return t([l()],w.prototype,"attached",void 0),t([l({type:S,set(t){const e=i(t,this._get("clips"),S);this._set("clips",e)}})],w.prototype,"clips",void 0),t([l()],w.prototype,"container",void 0),t([l({type:R})],w.prototype,"highlightOptions",null),t([l({type:e.ofType(R)})],w.prototype,"highlights",void 0),t([l()],w.prototype,"_mergedHighlights",null),t([l()],w.prototype,"moving",void 0),t([l({readOnly:!0})],w.prototype,"spatialReferenceSupported",null),t([l({readOnly:!0})],w.prototype,"updateParameters",void 0),t([l()],w.prototype,"updateRequested",void 0),t([l()],w.prototype,"updating",null),t([l()],w.prototype,"view",void 0),t([l()],w.prototype,"_visibleAtCurrentScale",void 0),t([l({readOnly:!0})],w.prototype,"visibleAtCurrentScale",null),w=t([p("esri.views.2d.layers.LayerView2D")],w),w};export{b as LayerView2DMixin};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as i}from"tslib";import e from"../../../../Color.js";import"../../../../intl.js";import s from"../../../../core/Accessor.js";import{destroyHandle as t}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{mapCollection as a}from"../../../../core/mapCollectionUtils.js";import{watch as r,syncAndInitial as o,when as n,sync as l}from"../../../../core/reactiveUtils.js";import{pt2px as m}from"../../../../core/screenUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as d}from"../../../../core/accessorSupport/decorators/subclass.js";import{ZEROS as h}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{LengthDimensionVisualization as p}from"./LengthDimensionVisualization.js";import{markerLineSizeFraction as f,offsetLineSizeFraction as u}from"./settings.js";import{LineMarkerMaterial as g}from"../../webgl-engine/materials/LineMarkerMaterial.js";import{createStipplePatternSimple as M}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as _}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{onLocaleChange as y}from"../../../../intl/locale.js";import{fetchMessageBundle as w}from"../../../../intl/messages.js";let v=class extends s{get analysis(){return this.analysisViewData.analysis}get visible(){return this.analysisViewData.visible}constructor(i){super(i),this.loadingMessages=!1,this._messages=null}initialize(){const i=this.isDecoration;this._markerMaterial=new g({width:1,anchor:1,color:h,placement:"begin-end",worldSpace:!0,hideOnShortSegments:!0,hasTip:!0,renderOccluded:4,markerPrimitive:"triangle",isDecoration:i}),this._dimensionLineMaterial=new _({width:1,color:h,renderOccluded:4,markerParameters:this._markerMaterial.parameters,isDecoration:i}),this._offsetLineMaterial=new _({width:1,color:h,renderOccluded:4,stipplePattern:M(5),isDecoration:i}),this._smallDimensionLineMaterial=new _({width:1,color:h,renderOccluded:4,isDecoration:i}),this._smallOffsetLineMaterial=new _({width:1,color:h,renderOccluded:4,stipplePattern:M(5),isDecoration:i});const s=a(()=>this.analysisViewData.computations,({computation:i})=>this._createVisualization(i));this._dimensionVisualizations=s,this.addHandles([t(s),r(()=>e.toUnitRGBA(this.analysis.style.color),i=>{for(const e of this._lineMaterials())e.setParameters({color:i})},o),r(()=>this.analysis.style.lineSize,i=>{const e=m(i);this._markerMaterial.setParameters({width:e*f}),this._dimensionLineMaterial.setParameters({width:e,markerParameters:this._markerMaterial.parameters});const s=Math.max(e*u,1);this._offsetLineMaterial.setParameters({width:s})},o),r(()=>({camera:this.view.state.camera,style:L(this.analysis)}),({camera:i,style:e})=>{for(const{visualization:s}of this._dimensionVisualizations)s.updateCameraDependentElements(i,s.computation.geometry,e),s.updateLabelStyle(e)}),r(()=>this.visible,i=>{for(const{visualization:e}of this._dimensionVisualizations)e.visible=i})]),this.addHandles([y(()=>this._updateMessageBundle()),n(()=>!this.loadingMessages,()=>{for(const{visualization:i}of this._dimensionVisualizations)i.updateUnitsMessages(this._messages)},l)]),this._updateMessageBundle()}get testInfo(){}_createVisualization(i){const e=new p({analysis:this.analysis,computation:i,view:this.view,visible:this.visible,markerMaterial:this._markerMaterial,dimensionLineMaterial:this._dimensionLineMaterial,offsetLineMaterial:this._offsetLineMaterial,smallDimensionLineMaterial:this._smallDimensionLineMaterial,smallOffsetLineMaterial:this._smallOffsetLineMaterial,messages:this._messages,isDecoration:this.isDecoration});return{visualization:e,remove:()=>e.destroy()}}_lineMaterials(){return[this._markerMaterial,this._dimensionLineMaterial,this._offsetLineMaterial,this._smallDimensionLineMaterial,this._smallOffsetLineMaterial]}async _updateMessageBundle(){this.loadingMessages=!0;try{this._messages=await w("esri/core/t9n/Units")}finally{this.loadingMessages=!1}}};function L(i){const{fontSize:e,lineSize:s,textColor:t,textBackgroundColor:a}=i.style;return{fontSize:e,lineSize:s,textBackgroundColor:a.clone(),textColor:t.clone()}}i([c({constructOnly:!0})],v.prototype,"analysisViewData",void 0),i([c({constructOnly:!0,nonNullable:!0})],v.prototype,"view",void 0),i([c({constructOnly:!0})],v.prototype,"isDecoration",void 0),i([c()],v.prototype,"analysis",null),i([c()],v.prototype,"visible",null),i([c()],v.prototype,"loadingMessages",void 0),v=i([d("esri.views.3d.analysis.Dimension.DimensionVisualization")],v);export{v as DimensionVisualization};
5
+ import{__decorate as i}from"tslib";import e from"../../../../Color.js";import"../../../../intl.js";import s from"../../../../core/Accessor.js";import{destroyHandle as t}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{mapCollection as a}from"../../../../core/mapCollectionUtils.js";import{watch as o,syncAndInitial as r,when as n,sync as l}from"../../../../core/reactiveUtils.js";import{pt2px as m}from"../../../../core/screenUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as h}from"../../../../core/accessorSupport/decorators/subclass.js";import{ZEROS as d}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{LengthDimensionVisualization as p}from"./LengthDimensionVisualization.js";import{markerLineSizeFraction as f,offsetLineSizeFraction as u}from"./settings.js";import{LineMarkerMaterial as g}from"../../webgl-engine/materials/LineMarkerMaterial.js";import{createStipplePatternSimple as M}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as _}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{onLocaleChange as y}from"../../../../intl/locale.js";import{fetchMessageBundle as w}from"../../../../intl/messages.js";let v=class extends s{get analysis(){return this.analysisViewData.analysis}get visible(){return this.analysisViewData.visible}constructor(i){super(i),this.loadingMessages=!1,this._messages=null}initialize(){const i=this.isDecoration;this._markerMaterial=new g({width:1,anchor:1,color:d,placement:"begin-end",worldSpace:!0,hideOnShortSegments:!0,hasTip:!0,renderOccluded:4,markerPrimitive:"triangle",isDecoration:i},this.view.state.isGlobal),this._dimensionLineMaterial=new _({width:1,color:d,renderOccluded:4,markerParameters:this._markerMaterial.parameters,isDecoration:i},this.view.state.isGlobal),this._offsetLineMaterial=new _({width:1,color:d,renderOccluded:4,stipplePattern:M(5),isDecoration:i},this.view.state.isGlobal),this._smallDimensionLineMaterial=new _({width:1,color:d,renderOccluded:4,isDecoration:i},this.view.state.isGlobal),this._smallOffsetLineMaterial=new _({width:1,color:d,renderOccluded:4,stipplePattern:M(5),isDecoration:i},this.view.state.isGlobal);const s=a(()=>this.analysisViewData.computations,({computation:i})=>this._createVisualization(i));this._dimensionVisualizations=s,this.addHandles([t(s),o(()=>e.toUnitRGBA(this.analysis.style.color),i=>{for(const e of this._lineMaterials())e.setParameters({color:i})},r),o(()=>this.analysis.style.lineSize,i=>{const e=m(i);this._markerMaterial.setParameters({width:e*f}),this._dimensionLineMaterial.setParameters({width:e,markerParameters:this._markerMaterial.parameters});const s=Math.max(e*u,1);this._offsetLineMaterial.setParameters({width:s})},r),o(()=>({camera:this.view.state.camera,style:L(this.analysis)}),({camera:i,style:e})=>{for(const{visualization:s}of this._dimensionVisualizations)s.updateCameraDependentElements(i,s.computation.geometry,e),s.updateLabelStyle(e)}),o(()=>this.visible,i=>{for(const{visualization:e}of this._dimensionVisualizations)e.visible=i})]),this.addHandles([y(()=>this._updateMessageBundle()),n(()=>!this.loadingMessages,()=>{for(const{visualization:i}of this._dimensionVisualizations)i.updateUnitsMessages(this._messages)},l)]),this._updateMessageBundle()}get testInfo(){}_createVisualization(i){const e=new p({analysis:this.analysis,computation:i,view:this.view,visible:this.visible,markerMaterial:this._markerMaterial,dimensionLineMaterial:this._dimensionLineMaterial,offsetLineMaterial:this._offsetLineMaterial,smallDimensionLineMaterial:this._smallDimensionLineMaterial,smallOffsetLineMaterial:this._smallOffsetLineMaterial,messages:this._messages,isDecoration:this.isDecoration});return{visualization:e,remove:()=>e.destroy()}}_lineMaterials(){return[this._markerMaterial,this._dimensionLineMaterial,this._offsetLineMaterial,this._smallDimensionLineMaterial,this._smallOffsetLineMaterial]}async _updateMessageBundle(){this.loadingMessages=!0;try{this._messages=await w("esri/core/t9n/Units")}finally{this.loadingMessages=!1}}};function L(i){const{fontSize:e,lineSize:s,textColor:t,textBackgroundColor:a}=i.style;return{fontSize:e,lineSize:s,textBackgroundColor:a.clone(),textColor:t.clone()}}i([c({constructOnly:!0})],v.prototype,"analysisViewData",void 0),i([c({constructOnly:!0,nonNullable:!0})],v.prototype,"view",void 0),i([c({constructOnly:!0})],v.prototype,"isDecoration",void 0),i([c()],v.prototype,"analysis",null),i([c()],v.prototype,"visible",null),i([c()],v.prototype,"loadingMessages",void 0),v=i([h("esri.views.3d.analysis.Dimension.DimensionVisualization")],v);export{v as DimensionVisualization};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as t}from"tslib";import e from"../../../../Color.js";import i from"../../../../analysis/LengthDimension.js";import a from"../../../../core/Accessor.js";import n from"../../../../core/Handles.js";import{destroyHandle as s,handlesGroup as o}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{equals as r}from"../../../../core/lang.js";import{mapCollection as p}from"../../../../core/mapCollectionUtils.js";import{releaseMaybe as l,destroyMaybe as u}from"../../../../core/maybe.js";import{memoize as d}from"../../../../core/memoize.js";import{ignoreAbortErrors as c}from"../../../../core/promiseUtils.js";import{watch as m,initial as h,sync as g,syncAndInitial as f,when as _}from"../../../../core/reactiveUtils.js";import{property as M}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/Logger.js";import{subclass as v}from"../../../../core/accessorSupport/decorators/subclass.js";import{create as y}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as C}from"../../../../core/support/UpdatingHandles.js";import S from"../../../../geometry/Point.js";import{clonePoint as w}from"../../../../layers/graphics/hydratedFeatures.js";import{reapplyConstraint as b,applyConstraint as P,computeConstraint as O,constraintDependencies as D}from"./lengthDimensionConstraintUtils.js";import{LengthDimensionManipulators as H,LengthDimensionPointManipulator as j,pointManipulatorHandles as T,createOffsetManipulator as x,offsetManipulatorHandles as G,LineOfSightOrientationManipulator as z,headingManipulatorHandles as U,rotationManipulatorHandles as I,createMeasureTypeManipulator as V,measureTypeManipulatorHandles as R,updateOffsetManipulatorTransform as A,updateHeadingManipulatorTransform as E,updateRotationManipulatorTransform as k,updateMeasureTypeManipulatorTransform as L,unfocusedOffsetWidth as F,focusedOffsetWidth as q}from"./lengthDimensionManipulatorUtils.js";import{isValidComputation as B,arePointsVerticallyAligned as N,computationToGeometryDependencies as J,computeGeometryFromDimension as K}from"./lengthDimensionUtils.js";import{disabledPointColor as Q,pointRadius as W,getTransparentAccentColor as X,getContrastColor as Y,initialOffsetPx as Z}from"./settings.js";import{getRotateHeadingTexture as $}from"../images/Factory.js";import{SnappingVisualizer3D as tt}from"../../interactive/SnappingVisualizer3D.js";import{LineVisualElement as et}from"../../interactive/visualElements/LineVisualElement.js";import{VerticesVisualElement as it}from"../../interactive/visualElements/VerticesVisualElement.js";import{ImageMaterial as at}from"../../webgl-engine/materials/ImageMaterial.js";import{createStipplePatternSimple as nt}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as st}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as ot}from"../../../interactive/coordinateHelper.js";import{EditGeometry as rt}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as pt}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as lt}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as ut}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{acquire as dt}from"../../../interactive/snapping/SnappingManagerPool.js";import{SnappingOperation as ct}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as mt}from"../../../interactive/snapping/snappingUtils.js";let ht=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new n,this._updatingHandles=new C,this._getSnappingContext=d(t=>new lt({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new pt(new rt("point",ot(!0,!1,this.view.spatialReference)),this.view.state.viewingMode),visualizer:new tt}));const{view:i}=t;this._snappingManagerResult=dt(i),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._focusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._thinOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(),this._thinOffsetManipulatorMaterial.setParameters({stipplePattern:nt(2)}),this._constraintSnappingIndicator=new et({view:i,attached:!0,width:1,renderOccluded:4,stipplePattern:nt(5),isDecoration:!0});const a=e.toUnitRGBA(Q);this._stagedStartIndicator=new it({view:i,attached:!1,elevationInfo:{mode:"absolute-height",offset:0},spatialReference:t.view.renderCoordsHelper.spatialReference,color:a,size:2*W,outlineSize:0,renderOccluded:4,isDecoration:!0})}initialize(){const{view:t}=this;this._snappingOperation=new ct({view:t});const i=X(t.effectiveTheme),a=Y(t.effectiveTheme),n=!t.stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._textureHandle=$(t.stage.textures,{accentColor:i,contrastColor:a,preMultiplyAlpha:n}),this._orientationManipulatorMaterial=new at({draped:!1,texture:this._textureHandle.texture,writeDepth:!1,renderOccluded:16,isDecoration:!0});const o=p(()=>this.analysisViewData.computations,({computation:t})=>this._createManipulators(t));this.addHandles([m(()=>({accentColor:X(t.effectiveTheme),contrastColor:Y(t.effectiveTheme)}),({accentColor:i,contrastColor:a})=>{const s=this._textureHandle;this._textureHandle=$(t.stage.textures,{accentColor:i,contrastColor:a,preMultiplyAlpha:n}),this._orientationManipulatorMaterial.setParameters({texture:this._textureHandle.texture}),s?.release();const o=e.toUnitRGBA(i);this._unfocusedOffsetManipulatorMaterial.setParameters({color:o}),this._focusedOffsetManipulatorMaterial.setParameters({color:o}),this._thinOffsetManipulatorMaterial.setParameters({color:o}),this._constraintSnappingIndicator.color=o},h),s(o),m(()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation}),({stagedPoint:t,stagedComputation:e})=>{if(null==e||null==t)return;const i=w(t,new S);this._applyPointUpdate(e,{endPoint:i})},g),m(()=>({stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}),(t,e)=>{const{stagedDimension:i,selectedComputation:a,firstGrabbedManipulator:n}=t;if(i===e?.stagedDimension&&n===e?.firstGrabbedManipulator){for(const s of[a,e?.selectedComputation])if(null!=s){const e=this._computationManipulators.get(s);null!=e&&this._updateManipulators(s,e,t)}}else for(const[s,o]of this._computationManipulators)this._updateManipulators(s,o,t)},f),m(()=>this.analysis.style.lineSize,t=>this._updateManipulatorStyle(t),h),m(()=>this.view.state.camera,()=>{null!=this._stagedComputation&&this._updateStagedDimensionOffset(this._stagedComputation)}),m(()=>{const t=this._stagedComputation;if(!t)return null;const e=t.elevationAlignedStartPoint,i=y();return null!=e&&this.view.renderCoordsHelper.toRenderCoords(e,i)?i:null},t=>{null!=t?(this._stagedStartIndicator.vertices=[t],this._stagedStartIndicator.attached=!0):this._stagedStartIndicator.attached=!1})]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles),mt(this,()=>{const t=this._activeComputation,e=this._stagedComputation;if(null==t||null!=e){const t=this.view.inputManager.latestPointerInfo?.type??"mouse",e=this._getSnappingContext(t);this._updatingHandles.addPromise(c(this._snappingOperation.snapAgainNearPreviousMapPoint(this._snappingManager,e)))}if(null!=t){const{start:e,end:i}=this._computationManipulators.get(t);if(e.grabbing||i.grabbing){const i=e.grabbing?"start":"end",a=this._computeConstraint(t);b(t,i,{constraint:a,view:this.view})}}})}destroy(){this._textureHandle=l(this._textureHandle),this._snappingOperation=u(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy(),this._stagedStartIndicator.destroy(),this._orientationManipulatorMaterial.dispose()}get updating(){return this._updatingHandles.updating||this._snappingManager.updating}get firstGrabbedManipulator(){return this.parentTool.firstGrabbedManipulator}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get snappingOptions(){return this._snappingManager.options}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(null!=this._stagedComputation)return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&null!=t?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1)?.computation;return null==t||null==e||e.dimension!==t?null:e}get _constraintHandles(){return[_(()=>this.analysisViewData.selectedComputation,t=>{t.previousConstraint=this._computeConstraint(t)},{...f,equals:r}),m(()=>{const t=this._activeComputation;if(null==t)return null;const{measureType:e,orientation:i}=t.dimension;return{measureType:e,orientation:i,computation:t}},(t,e)=>{if(null!=t&&null==e){const{measureType:e,orientation:i,computation:a}=t;switch(a.previousConstraint){case 0:a.preConstraintProperties={measureType:"horizontal",orientation:0};break;case 1:a.preConstraintProperties={measureType:"vertical",orientation:0};break;case 2:a.preConstraintProperties={measureType:"direct",orientation:i};break;default:a.preConstraintProperties={measureType:e,orientation:i}}}null==t&&null!=e&&(e.computation.preConstraintProperties=null)},g)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[m(()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation}),({stagedComputation:e,activeComputation:i})=>{const a=this._constraintSnappingIndicator;if(this.removeHandles(t),null!=i)if(i===e)a.attached=!0;else{const{start:e,end:n}=this._computationManipulators.get(i),s=()=>{a.attached=e.grabbing||n.grabbing};s(),this.addHandles([e.events.on("grab-changed",s),n.events.on("grab-changed",s)],t)}else a.attached=!1}),m(()=>{const t=this._activeComputation;return null!=t?{geometry:t.geometry,constraint:t.previousConstraint}:{}},({geometry:t,constraint:e})=>{const i=this._constraintSnappingIndicator;null!=t&&null!=e&&2!==e?(i.visible=!0,i.setGeometryFromSegment(t.directSegment)):i.visible=!1})]}removeStaged(){return null!=this._stagedDimension&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null,!0)}onDeactivate(){this.removeStaged(),this._resetSnappingState()}onClick(t){const{_stagedDimension:e}=this;if(null==e){const e=this._onUnstagedClick(t);return this.analysis.dimensions.add(e),null}return this._onStagedClick(t),e}onPointerMove({mapPoint:t,pointerType:e}){if("touch"===e)return;const i=this._getSnappingContext(e);this._updatingHandles.addPromise(c(this._snappingOperation.snap({point:t},this._snappingManager,i)))}onManipulatorSelectionChanged(){if(null!=this.analysisViewData.selectedComputation){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const n=new i({startPoint:w(a,new S),endPoint:null,measureType:"horizontal"});return this._stagedDimension=n,this._resetSnappingState(),n}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(null==i)return;let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const n=w(a,new S);this._applyPointUpdate(i,{endPoint:n}),this._stagedDimension=null,this._resetSnappingState()}_resetSnappingState(){this._snappingManager.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_createManipulators(t){const e=this._setupPointManipulator(t,{isStart:!0}),i=this._setupPointManipulator(t,{isStart:!1}),a=this._setupOffsetManipulator(t),n=this._setupHeadingManipulator(t),s=this._setupRotationManipulator(t),r=this._setupMeasureTypeManipulator(t,"direct"),p=this._setupMeasureTypeManipulator(t,"horizontal"),l=this._setupMeasureTypeManipulator(t,"vertical"),u=new H({start:e,end:i,offset:a,heading:n,rotation:s,direct:r,horizontal:p,vertical:l});this._setupComputationToManipulatorsSync(t,u),this._computationManipulators.set(t,u),this.manipulators.addMany(u.values());const d=o(u.values().map(t=>t.events.on("focus-changed",()=>{u.values().some(t=>t.focused)&&this._resetSnappingState()})));return{manipulators:u,remove:()=>{d.remove(),this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of u.values())this.manipulators.remove(t)}}}_setupComputationToManipulatorsSync(t,e){this._computationHandles.add([m(()=>t.geometry,()=>this._updateManipulators(t,e),{...f,equals:r})],t)}_setupPointManipulator(t,e){const{view:i}=this,{dimension:a}=t,n=new j(i,{metadata:a}),s=T(n,{isStart:e.isStart,createSnappingPipelineStep:t=>ut({snappingContext:this._getSnappingContext(t),snappingManager:this._snappingManager,updatingHandles:this._updatingHandles}),dimension:a,onUpdate:e=>this._applyPointUpdate(t,e),view:i});return this._computationHandles.add(s,t),n}_setupOffsetManipulator(t){const{view:e}=this,i=x(e,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,metadata:t.dimension}),a=G(i,{computation:t,view:e});return this._computationHandles.add(a,t),i}_setupHeadingManipulator(t){const{view:e}=this,i=new z(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),a=U(i,{computation:t,view:e});return this._computationHandles.add(a,t),i}_setupRotationManipulator(t){const{view:e}=this,i=new z(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),a=I(i,{computation:t,view:e});return this._computationHandles.add(a,t),i}_setupMeasureTypeManipulator(t,e){const{view:i}=this,a=V(i,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,thinOffsetManipulatorMaterial:this._thinOffsetManipulatorMaterial,metadata:t.dimension}),n=R(a,{computation:t,manipulatorMeasureType:e,view:i});return this._computationHandles.add(n,t),a}_updateManipulators(t,e,i={stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}){const{stagedDimension:a,selectedComputation:n,firstGrabbedManipulator:s}=i,{start:o,end:r,offset:p,heading:l,rotation:u}=e,d=n===t,c=B(t),{dimension:m}=t;for(const f of e.values()){const t=c&&null==a&&(null==s||f===s);f===p?(f.available=t,f.selected=d):f.available=t&&d}if(!c)return;null!=this._computeConstraint(t)?e.forEachMeasureTypeManipulator(t=>t.available=!1):e.manipulatorForMeasureType(m.measureType).available=!1;for(const f of[l,u])"direct"===m.measureType&&0!==m.offset||(f.available=!1);N(t)?u.available=!1:l.available=!1;const{geometry:h}=t;o.renderLocation=h.directSegment.startRenderSpace,r.renderLocation=h.directSegment.endRenderSpace;const{renderCoordsHelper:g}=this.view;A(p,h,g),l.available&&E(l,t,g),u.available&&k(u,t,g),e.forEachMeasureTypeManipulator((e,i)=>{e.available&&L(e,t,i,g)})}_updateManipulatorStyle(t){const e=F(t),i=q(t),a={lineSizePt:t,material:this._orientationManipulatorMaterial};for(const{offset:n,heading:s,rotation:o}of this._computationManipulators.values())n.radius=i/2,s.update(a),o.update(a);this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_applyPointUpdate(t,e){const{view:i}=this,a=J(t);"startPoint"in e&&(a.elevationAlignedStartPoint=e.startPoint),"endPoint"in e&&(a.elevationAlignedEndPoint=e.endPoint);const n=K(a,i.renderCoordsHelper);if(null==n)return;const s=this._computeConstraint({...a,geometry:n});P(t,e,{...a,constraint:s,unconstrainedGeometry:n,view:i}),t===this._stagedComputation&&this._updateStagedDimensionOffset(t)}_updateStagedDimensionOffset(t){if(null==t.geometry)return;t.geometry.directSegment.eval(.5,gt);const{state:e,renderCoordsHelper:i}=this.view,a=e.camera.computeScreenPixelSizeAt(gt);t.dimension.offset=Z*a*i.unitInMeters}_computeConstraint(t){return O(D(t,this._snappingManager.options),this.view)}_createOffsetManipulatorMaterial(){return new st({width:1,renderOccluded:4,writeDepth:!1,hasPolygonOffset:!0,isDecoration:!0})}get test(){}};t([M({constructOnly:!0})],ht.prototype,"analysis",void 0),t([M({constructOnly:!0})],ht.prototype,"analysisViewData",void 0),t([M({constructOnly:!0})],ht.prototype,"manipulators",void 0),t([M({constructOnly:!0})],ht.prototype,"parentTool",void 0),t([M({constructOnly:!0,nonNullable:!0})],ht.prototype,"view",void 0),t([M({readOnly:!0})],ht.prototype,"updating",null),t([M()],ht.prototype,"firstGrabbedManipulator",null),t([M()],ht.prototype,"hasGrabbedManipulators",null),t([M()],ht.prototype,"snappingOptions",null),t([M()],ht.prototype,"_stagedDimension",void 0),t([M()],ht.prototype,"_activeComputation",null),t([M()],ht.prototype,"_stagedComputation",null),ht=t([v("esri.views.3d.analysis.Dimension.LengthDimensionSubTool")],ht);const gt=y();export{ht as LengthDimensionSubTool};
5
+ import{__decorate as t}from"tslib";import e from"../../../../Color.js";import i from"../../../../analysis/LengthDimension.js";import a from"../../../../core/Accessor.js";import n from"../../../../core/Handles.js";import{destroyHandle as s,handlesGroup as o}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{equals as r}from"../../../../core/lang.js";import{mapCollection as p}from"../../../../core/mapCollectionUtils.js";import{releaseMaybe as l,destroyMaybe as u}from"../../../../core/maybe.js";import{memoize as d}from"../../../../core/memoize.js";import{ignoreAbortErrors as c}from"../../../../core/promiseUtils.js";import{watch as m,initial as h,sync as g,syncAndInitial as f,when as _}from"../../../../core/reactiveUtils.js";import{property as M}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/Logger.js";import{subclass as v}from"../../../../core/accessorSupport/decorators/subclass.js";import{create as y}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as C}from"../../../../core/support/UpdatingHandles.js";import S from"../../../../geometry/Point.js";import{clonePoint as w}from"../../../../layers/graphics/hydratedFeatures.js";import{reapplyConstraint as b,applyConstraint as P,computeConstraint as O,constraintDependencies as D}from"./lengthDimensionConstraintUtils.js";import{LengthDimensionManipulators as H,LengthDimensionPointManipulator as j,pointManipulatorHandles as T,createOffsetManipulator as x,offsetManipulatorHandles as G,LineOfSightOrientationManipulator as z,headingManipulatorHandles as U,rotationManipulatorHandles as I,createMeasureTypeManipulator as V,measureTypeManipulatorHandles as R,updateOffsetManipulatorTransform as A,updateHeadingManipulatorTransform as E,updateRotationManipulatorTransform as k,updateMeasureTypeManipulatorTransform as L,unfocusedOffsetWidth as F,focusedOffsetWidth as q}from"./lengthDimensionManipulatorUtils.js";import{isValidComputation as B,arePointsVerticallyAligned as N,computationToGeometryDependencies as J,computeGeometryFromDimension as K}from"./lengthDimensionUtils.js";import{disabledPointColor as Q,pointRadius as W,getTransparentAccentColor as X,getContrastColor as Y,initialOffsetPx as Z}from"./settings.js";import{getRotateHeadingTexture as $}from"../images/Factory.js";import{SnappingVisualizer3D as tt}from"../../interactive/SnappingVisualizer3D.js";import{LineVisualElement as et}from"../../interactive/visualElements/LineVisualElement.js";import{VerticesVisualElement as it}from"../../interactive/visualElements/VerticesVisualElement.js";import{ImageMaterial as at}from"../../webgl-engine/materials/ImageMaterial.js";import{createStipplePatternSimple as nt}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as st}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as ot}from"../../../interactive/coordinateHelper.js";import{EditGeometry as rt}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as pt}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as lt}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as ut}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{acquire as dt}from"../../../interactive/snapping/SnappingManagerPool.js";import{SnappingOperation as ct}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as mt}from"../../../interactive/snapping/snappingUtils.js";let ht=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new n,this._updatingHandles=new C,this._getSnappingContext=d(t=>new lt({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new pt(new rt("point",ot(!0,!1,this.view.spatialReference)),this.view.state.viewingMode),visualizer:new tt}));const{view:i}=t;this._snappingManagerResult=dt(i),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(i),this._focusedOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(i),this._thinOffsetManipulatorMaterial=this._createOffsetManipulatorMaterial(i),this._thinOffsetManipulatorMaterial.setParameters({stipplePattern:nt(2)}),this._constraintSnappingIndicator=new et({view:i,attached:!0,width:1,renderOccluded:4,stipplePattern:nt(5),isDecoration:!0});const a=e.toUnitRGBA(Q);this._stagedStartIndicator=new it({view:i,attached:!1,elevationInfo:{mode:"absolute-height",offset:0},spatialReference:t.view.renderCoordsHelper.spatialReference,color:a,size:2*W,outlineSize:0,renderOccluded:4,isDecoration:!0})}initialize(){const{view:t}=this;this._snappingOperation=new ct({view:t});const i=X(t.effectiveTheme),a=Y(t.effectiveTheme),n=!t.stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._textureHandle=$(t.stage.textures,{accentColor:i,contrastColor:a,preMultiplyAlpha:n}),this._orientationManipulatorMaterial=new at({draped:!1,texture:this._textureHandle.texture,writeDepth:!1,renderOccluded:16,isDecoration:!0});const o=p(()=>this.analysisViewData.computations,({computation:t})=>this._createManipulators(t));this.addHandles([m(()=>({accentColor:X(t.effectiveTheme),contrastColor:Y(t.effectiveTheme)}),({accentColor:i,contrastColor:a})=>{const s=this._textureHandle;this._textureHandle=$(t.stage.textures,{accentColor:i,contrastColor:a,preMultiplyAlpha:n}),this._orientationManipulatorMaterial.setParameters({texture:this._textureHandle.texture}),s?.release();const o=e.toUnitRGBA(i);this._unfocusedOffsetManipulatorMaterial.setParameters({color:o}),this._focusedOffsetManipulatorMaterial.setParameters({color:o}),this._thinOffsetManipulatorMaterial.setParameters({color:o}),this._constraintSnappingIndicator.color=o},h),s(o),m(()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation}),({stagedPoint:t,stagedComputation:e})=>{if(null==e||null==t)return;const i=w(t,new S);this._applyPointUpdate(e,{endPoint:i})},g),m(()=>({stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}),(t,e)=>{const{stagedDimension:i,selectedComputation:a,firstGrabbedManipulator:n}=t;if(i===e?.stagedDimension&&n===e?.firstGrabbedManipulator){for(const s of[a,e?.selectedComputation])if(null!=s){const e=this._computationManipulators.get(s);null!=e&&this._updateManipulators(s,e,t)}}else for(const[s,o]of this._computationManipulators)this._updateManipulators(s,o,t)},f),m(()=>this.analysis.style.lineSize,t=>this._updateManipulatorStyle(t),h),m(()=>this.view.state.camera,()=>{null!=this._stagedComputation&&this._updateStagedDimensionOffset(this._stagedComputation)}),m(()=>{const t=this._stagedComputation;if(!t)return null;const e=t.elevationAlignedStartPoint,i=y();return null!=e&&this.view.renderCoordsHelper.toRenderCoords(e,i)?i:null},t=>{null!=t?(this._stagedStartIndicator.vertices=[t],this._stagedStartIndicator.attached=!0):this._stagedStartIndicator.attached=!1})]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles),mt(this,()=>{const t=this._activeComputation,e=this._stagedComputation;if(null==t||null!=e){const t=this.view.inputManager.latestPointerInfo?.type??"mouse",e=this._getSnappingContext(t);this._updatingHandles.addPromise(c(this._snappingOperation.snapAgainNearPreviousMapPoint(this._snappingManager,e)))}if(null!=t){const{start:e,end:i}=this._computationManipulators.get(t);if(e.grabbing||i.grabbing){const i=e.grabbing?"start":"end",a=this._computeConstraint(t);b(t,i,{constraint:a,view:this.view})}}})}destroy(){this._textureHandle=l(this._textureHandle),this._snappingOperation=u(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy(),this._stagedStartIndicator.destroy(),this._orientationManipulatorMaterial.dispose()}get updating(){return this._updatingHandles.updating||this._snappingManager.updating}get firstGrabbedManipulator(){return this.parentTool.firstGrabbedManipulator}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get snappingOptions(){return this._snappingManager.options}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(null!=this._stagedComputation)return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&null!=t?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1)?.computation;return null==t||null==e||e.dimension!==t?null:e}get _constraintHandles(){return[_(()=>this.analysisViewData.selectedComputation,t=>{t.previousConstraint=this._computeConstraint(t)},{...f,equals:r}),m(()=>{const t=this._activeComputation;if(null==t)return null;const{measureType:e,orientation:i}=t.dimension;return{measureType:e,orientation:i,computation:t}},(t,e)=>{if(null!=t&&null==e){const{measureType:e,orientation:i,computation:a}=t;switch(a.previousConstraint){case 0:a.preConstraintProperties={measureType:"horizontal",orientation:0};break;case 1:a.preConstraintProperties={measureType:"vertical",orientation:0};break;case 2:a.preConstraintProperties={measureType:"direct",orientation:i};break;default:a.preConstraintProperties={measureType:e,orientation:i}}}null==t&&null!=e&&(e.computation.preConstraintProperties=null)},g)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[m(()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation}),({stagedComputation:e,activeComputation:i})=>{const a=this._constraintSnappingIndicator;if(this.removeHandles(t),null!=i)if(i===e)a.attached=!0;else{const{start:e,end:n}=this._computationManipulators.get(i),s=()=>{a.attached=e.grabbing||n.grabbing};s(),this.addHandles([e.events.on("grab-changed",s),n.events.on("grab-changed",s)],t)}else a.attached=!1}),m(()=>{const t=this._activeComputation;return null!=t?{geometry:t.geometry,constraint:t.previousConstraint}:{}},({geometry:t,constraint:e})=>{const i=this._constraintSnappingIndicator;null!=t&&null!=e&&2!==e?(i.visible=!0,i.setGeometryFromSegment(t.directSegment)):i.visible=!1})]}removeStaged(){return null!=this._stagedDimension&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null,!0)}onDeactivate(){this.removeStaged(),this._resetSnappingState()}onClick(t){const{_stagedDimension:e}=this;if(null==e){const e=this._onUnstagedClick(t);return this.analysis.dimensions.add(e),null}return this._onStagedClick(t),e}onPointerMove({mapPoint:t,pointerType:e}){if("touch"===e)return;const i=this._getSnappingContext(e);this._updatingHandles.addPromise(c(this._snappingOperation.snap({point:t},this._snappingManager,i)))}onManipulatorSelectionChanged(){if(null!=this.analysisViewData.selectedComputation){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const n=new i({startPoint:w(a,new S),endPoint:null,measureType:"horizontal"});return this._stagedDimension=n,this._resetSnappingState(),n}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(null==i)return;let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const n=w(a,new S);this._applyPointUpdate(i,{endPoint:n}),this._stagedDimension=null,this._resetSnappingState()}_resetSnappingState(){this._snappingManager.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_createManipulators(t){const e=this._setupPointManipulator(t,{isStart:!0}),i=this._setupPointManipulator(t,{isStart:!1}),a=this._setupOffsetManipulator(t),n=this._setupHeadingManipulator(t),s=this._setupRotationManipulator(t),r=this._setupMeasureTypeManipulator(t,"direct"),p=this._setupMeasureTypeManipulator(t,"horizontal"),l=this._setupMeasureTypeManipulator(t,"vertical"),u=new H({start:e,end:i,offset:a,heading:n,rotation:s,direct:r,horizontal:p,vertical:l});this._setupComputationToManipulatorsSync(t,u),this._computationManipulators.set(t,u),this.manipulators.addMany(u.values());const d=o(u.values().map(t=>t.events.on("focus-changed",()=>{u.values().some(t=>t.focused)&&this._resetSnappingState()})));return{manipulators:u,remove:()=>{d.remove(),this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of u.values())this.manipulators.remove(t)}}}_setupComputationToManipulatorsSync(t,e){this._computationHandles.add([m(()=>t.geometry,()=>this._updateManipulators(t,e),{...f,equals:r})],t)}_setupPointManipulator(t,e){const{view:i}=this,{dimension:a}=t,n=new j(i,{metadata:a}),s=T(n,{isStart:e.isStart,createSnappingPipelineStep:t=>ut({snappingContext:this._getSnappingContext(t),snappingManager:this._snappingManager,updatingHandles:this._updatingHandles}),dimension:a,onUpdate:e=>this._applyPointUpdate(t,e),view:i});return this._computationHandles.add(s,t),n}_setupOffsetManipulator(t){const{view:e}=this,i=x(e,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,metadata:t.dimension}),a=G(i,{computation:t,view:e});return this._computationHandles.add(a,t),i}_setupHeadingManipulator(t){const{view:e}=this,i=new z(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),a=U(i,{computation:t,view:e});return this._computationHandles.add(a,t),i}_setupRotationManipulator(t){const{view:e}=this,i=new z(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),a=I(i,{computation:t,view:e});return this._computationHandles.add(a,t),i}_setupMeasureTypeManipulator(t,e){const{view:i}=this,a=V(i,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,thinOffsetManipulatorMaterial:this._thinOffsetManipulatorMaterial,metadata:t.dimension}),n=R(a,{computation:t,manipulatorMeasureType:e,view:i});return this._computationHandles.add(n,t),a}_updateManipulators(t,e,i={stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}){const{stagedDimension:a,selectedComputation:n,firstGrabbedManipulator:s}=i,{start:o,end:r,offset:p,heading:l,rotation:u}=e,d=n===t,c=B(t),{dimension:m}=t;for(const f of e.values()){const t=c&&null==a&&(null==s||f===s);f===p?(f.available=t,f.selected=d):f.available=t&&d}if(!c)return;null!=this._computeConstraint(t)?e.forEachMeasureTypeManipulator(t=>t.available=!1):e.manipulatorForMeasureType(m.measureType).available=!1;for(const f of[l,u])"direct"===m.measureType&&0!==m.offset||(f.available=!1);N(t)?u.available=!1:l.available=!1;const{geometry:h}=t;o.renderLocation=h.directSegment.startRenderSpace,r.renderLocation=h.directSegment.endRenderSpace;const{renderCoordsHelper:g}=this.view;A(p,h,g),l.available&&E(l,t,g),u.available&&k(u,t,g),e.forEachMeasureTypeManipulator((e,i)=>{e.available&&L(e,t,i,g)})}_updateManipulatorStyle(t){const e=F(t),i=q(t),a={lineSizePt:t,material:this._orientationManipulatorMaterial};for(const{offset:n,heading:s,rotation:o}of this._computationManipulators.values())n.radius=i/2,s.update(a),o.update(a);this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_applyPointUpdate(t,e){const{view:i}=this,a=J(t);"startPoint"in e&&(a.elevationAlignedStartPoint=e.startPoint),"endPoint"in e&&(a.elevationAlignedEndPoint=e.endPoint);const n=K(a,i.renderCoordsHelper);if(null==n)return;const s=this._computeConstraint({...a,geometry:n});P(t,e,{...a,constraint:s,unconstrainedGeometry:n,view:i}),t===this._stagedComputation&&this._updateStagedDimensionOffset(t)}_updateStagedDimensionOffset(t){if(null==t.geometry)return;t.geometry.directSegment.eval(.5,gt);const{state:e,renderCoordsHelper:i}=this.view,a=e.camera.computeScreenPixelSizeAt(gt);t.dimension.offset=Z*a*i.unitInMeters}_computeConstraint(t){return O(D(t,this._snappingManager.options),this.view)}_createOffsetManipulatorMaterial(t){return new st({width:1,renderOccluded:4,writeDepth:!1,hasPolygonOffset:!0,isDecoration:!0},t.state.isGlobal)}get test(){}};t([M({constructOnly:!0})],ht.prototype,"analysis",void 0),t([M({constructOnly:!0})],ht.prototype,"analysisViewData",void 0),t([M({constructOnly:!0})],ht.prototype,"manipulators",void 0),t([M({constructOnly:!0})],ht.prototype,"parentTool",void 0),t([M({constructOnly:!0,nonNullable:!0})],ht.prototype,"view",void 0),t([M({readOnly:!0})],ht.prototype,"updating",null),t([M()],ht.prototype,"firstGrabbedManipulator",null),t([M()],ht.prototype,"hasGrabbedManipulators",null),t([M()],ht.prototype,"snappingOptions",null),t([M()],ht.prototype,"_stagedDimension",void 0),t([M()],ht.prototype,"_activeComputation",null),t([M()],ht.prototype,"_stagedComputation",null),ht=t([v("esri.views.3d.analysis.Dimension.LengthDimensionSubTool")],ht);const gt=y();export{ht as LengthDimensionSubTool};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../Color.js";import{lengthDimensionMeasureType as t}from"../../../../analysis/dimensionUtils.js";import{cyclicalDegrees as r}from"../../../../core/Cyclical.js";import{rad2deg as n}from"../../../../core/mathUtils.js";import{watch as i,initial as o}from"../../../../core/reactiveUtils.js";import{pt2px as a}from"../../../../core/screenUtils.js";import{identity as s,scale as c}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{g as m,c as d,q as u,l as p,i as f,a as g,d as h,h as v,e as y}from"../../../../chunks/vec32.js";import{fromValues as w,create as S,ZEROS as j}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as x}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import b from"../../../../geometry/Point.js";import{fromPositionAndNormal as H,create as M,signedDistance as P,getNormal as C}from"../../../../geometry/support/plane.js";import{sv3d as T}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as R}from"../../../../layers/graphics/hydratedFeatures.js";import{isValidComputation as z,computeOffsetForPoint as O,computeSegmentForMeasureType as U,computeOffsetAxis as _,dimensionStartToEnd as A,headingFromGeometry as L,computeGeometryFromDimension as k,computationToGeometryDependencies as E,directUp as D,directStartToEnd as G}from"./lengthDimensionUtils.js";import{getTransparentAccentColor as F,pointRadius as B,lengthFraction as W,minLengthMeters as I,linePaddingPx as q,focusedLinePaddingPx as N,orientationFocusMultiplier as J,orientationDiscScale as K,orientationCalloutWidth as Q,markerLineSizeFraction as V,orientationCalloutOffsetPx as X,orientationSnapThresholdDegrees as Y}from"./settings.js";import{Manipulator3D as Z}from"../../interactive/Manipulator3D.js";import{createManipulatorMaterial as $,worldScaledManipulatorSettings as ee,calculateTranslateRotateFromBases as te,rotateManipulatorDefaults as re,calculateInputRotationTransform as ne}from"../../interactive/manipulatorUtils.js";import{RenderObject as ie}from"../../interactive/RenderObject.js";import{hideManipulatorWhileDragging as oe,screenToMap3D as ae,screenToRenderPlane as se}from"../../interactive/editingTools/dragEventPipeline3D.js";import{EuclideanSegment as ce}from"../../interactive/visualElements/support/Segment.js";import{markerSizePerLineWidth as le}from"../../support/engineContent/marker.js";import{Attribute as me}from"../../webgl-engine/lib/Attribute.js";import{Geometry as de}from"../../webgl-engine/lib/Geometry.js";import{createSphereGeometry as ue,createPolylineGeometry as pe}from"../../webgl-engine/lib/GeometryUtil.js";import{RibbonLineMaterial as fe}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createManipulatorDragEventPipeline as ge,resetProperties as he,EventPipeline as ve}from"../../../interactive/dragEventPipeline.js";class ye{constructor(e){this.start=e.start,this.end=e.end,this.offset=e.offset,this.heading=e.heading,this.rotation=e.rotation,this.direct=e.direct,this.horizontal=e.horizontal,this.vertical=e.vertical}manipulatorName(e){return Object.keys(this).find(t=>this.hasOwnProperty(t)&&e===this[t])}values(){return[this.start,this.end,this.offset,this.heading,this.rotation,this.direct,this.horizontal,this.vertical]}forEachMeasureTypeManipulator(e){for(const r of t)e(this.manipulatorForMeasureType(r),r)}manipulatorForMeasureType(e){switch(e){case"direct":return this.direct;case"horizontal":return this.horizontal;case"vertical":return this.vertical}}}class we extends Z{constructor(t,r){const n=$(e.toUnitRGBA(F(t.effectiveTheme))),o=[new ie(ue(n,1,32,32),Ve)];super({view:t,renderObjects:o,metadata:r.metadata,available:!1,grabCursor:"crosshair",radius:B,collisionPriority:1}),this._themeHandle=i(()=>({color:e.toUnitRGBA(F(t.effectiveTheme))}),e=>n.setParameters(e))}destroy(){this._themeHandle.remove(),super.destroy()}}function Se(e,t){const r=[w(-.5,0,0),w(.5,0,0)],n=pe(t.unfocusedMaterial,r.map(e=>m(S(),e,W))),i=n.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new ie(n,9|Ve),new ie(i,2|Ve)],collisionType:{type:"line",paths:[r]},radius:Ke(t.lineSizePt)/2,metadata:t.metadata,available:!1,...ee})}class je extends Z{constructor(t,{lineSizePt:r,material:n,metadata:a}){super({view:t,autoScaleRenderObjects:!1,collisionPriority:1,metadata:a}),this._options={calloutColor:x(),lineSizePt:r,material:n},this._themeHandle=i(()=>e.toUnitRGBA(F(t.effectiveTheme)),e=>{this._options.calloutColor=e,Qe(this,xe({...this._options,metadata:this.metadata}))},o)}update({lineSizePt:e,material:t}){this._options.lineSizePt=e,this._options.material=t,Qe(this,xe({...this._options,metadata:this.metadata}))}destroy(){this._themeHandle.remove(),super.destroy()}}function xe({calloutColor:e,lineSizePt:t,material:r,metadata:n}){return{calloutLength:.25*le*V*a(t)+X,calloutColor:e,calloutWidth:Q,customStateMask:Ve,discScale:K,focusMultiplier:J,material:r,metadata:n}}function be(e,t){const r=[w(-.5,0,0),w(.5,0,0)],n=pe(t.thinOffsetManipulatorMaterial,r),i=pe(t.unfocusedMaterial,r.map(e=>m(S(),e,W))),o=i.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new ie(i,1|Ve),new ie(o,2|Ve),new ie(n,Ve)],collisionType:{type:"line",paths:[r]},radius:Ke(t.lineSizePt)/2,available:!1,metadata:t.metadata,...ee})}function He(e,{isStart:t,createSnappingPipelineStep:r,dimension:n,onUpdate:i,view:o}){const a=t?"startPoint":"endPoint",s=ge(e,(e,t,s,c)=>{const l=oe(e),{snappingStep:m,cancelSnapping:d}=r(c);s=s.next(l).next(he(n,[a,"measureType","orientation"])).next(d),t.next(l).next(ae(o)).next(...m).next(e=>{const t=R(e.mapEnd,new b);i("startPoint"===a?{startPoint:t}:{endPoint:t})})});return[s]}function Me(e,{computation:t,view:r}){return[ge(e,(e,n,i)=>{if(!z(t)||!e.selected)return;const{geometry:o,dimension:a}=t,s=oe(e);n.next(s).next(Ue(r,a,o.dimensionSegment,o.primaryOffsetAxis)),i.next(s).next(he(a,["offset"]))})]}function Pe(e,{computation:t,view:r}){return[ge(e,(e,n,i)=>{Re({cancel:i,computation:t,settingHeading:!0,steps:n,view:r})})]}function Ce(e,{computation:t,view:r}){return[ge(e,(e,n,i)=>{Re({cancel:i,computation:t,settingHeading:!1,steps:n,view:r})}),e.events.on("immediate-click",e=>{Te(e,t,r)})]}function Te(e,t,n){const{dimension:i,geometry:o}=t;if(90===i.orientation||270===i.orientation)return i.orientation=0,void e.stopPropagation();if(null==o)return;const{renderCoordsHelper:a}=n,s=k({...E(t),orientation:90},a),c=k({...E(t),orientation:270},a);if(null==s||null==c)return;const l=L(s,a),m=L(c,a),d=_e(o,n),u=r.shortestSignedDiff(d,l),p=r.shortestSignedDiff(d,m);i.orientation=Math.abs(u)<Math.abs(p)?90:270,e.stopPropagation()}function Re(e){const{cancel:t,computation:r,settingHeading:i,steps:o,view:a}=e;if(!z(r))return;const{renderCoordsHelper:s}=a,{dimension:c,geometry:l}=r,m=S(),u=Be(S(),l,l.directSegment,s),p=We(T.get(),{forHeading:i,geometry:l,renderCoordsHelper:s}),f=H(u,p,M()),g=i?c.orientation??L(l,a.renderCoordsHelper):c.orientation??0;o.next(se(a,f)).next(e=>{"start"===e.action&&d(m,e.renderStart);const t=C(f),r=ne(m,e.renderEnd,u,t);let o=g-n(r);i||(o=ze(o)),c.orientation=o}),t.next(he(c,["orientation"]))}function ze(e){const t=r.normalize(e)%90;return t<Y?e-t:90-t<Y?e+(90-t):e}function Oe(e,{computation:t,manipulatorMeasureType:r,view:n}){let i="direct",o=0,a=0;return[e.events.on("grab-changed",s=>{if("start"!==s.action||!z(t))return;const{dimension:c,geometry:l}=t;i=c.measureType,o=c.offset,a=c.orientation;const m=d(T.get(),e.renderLocation);c.measureType=r,c.offset=O(m,r,l,n.renderCoordsHelper),c.orientation=0}),ge(e,(e,s,c)=>{if(!z(t))return;const{geometry:l,dimension:m}=t,{renderCoordsHelper:d}=n,u=U($e,r,t,d),p=_(T.get(),{measureType:r,directSegment:l.directSegment,renderCoordsHelper:d}),f=oe(e);s.next(f).next(Ue(n,m,u,p)),c.next(f).next(e=>(m.measureType=i,m.offset=o,m.orientation=a,e))})]}function Ue(e,t,r,n){const i=h(T.get(),r.endRenderSpace,r.startRenderSpace);v(i,i,n);const o=H(r.startRenderSpace,i,M()),a=H(r.startRenderSpace,n,M()),s=t.offset;let c,l=0;const m=new ve;return m.next(se(e,o)).next(r=>{"start"===r.action&&(l=P(a,r.renderStart));const n=(P(a,r.renderEnd)-l)*e.renderCoordsHelper.unitInMeters;t.offset=s+n,c=r}),e=>(m.execute(e),c)}function _e(e,t){const{directSegment:r}=e,{renderCoordsHelper:n}=t,i=D(T.get(),e,n),o=G(T.get(),e),a=v(T.get(),o,i),{viewForward:s}=t.state.camera;y(a,s)>0&&m(a,a,-1);const c=r.eval(.5,T.get());return n.headingAtPosition(c,a)}function Ae(e,t,r){const{dimensionSegment:n,primaryOffsetAxis:i}=t,o=A(Xe,t),a=u(o,j)?s(Ze):te(o,i,j,Ze),l=Math.max(p(o),I/r.unitInMeters);c(a,a,f(Xe,l,l,l)),e.modelTransform=a,e.renderLocation=n.eval(.5,Xe)}function Le(e,t,r){Ee(e,t,r,{forHeading:!0})}function ke(e,t,r){Ee(e,t,r,{forHeading:!1})}function Ee(e,t,r,{forHeading:n}){const{dimension:i,geometry:o}=t,{primaryOffsetAxis:a}=o,s=m(De,a,i.offset>=0?1:-1),c=We(Ge,{forHeading:n,geometry:o,renderCoordsHelper:r});v(c,c,s);const l=te(s,c,j,Ze);e.modelTransform=l,e.renderLocation=Be(Xe,o,o.dimensionSegment,r)}const De=S(),Ge=S();function Fe(e,t,r,n){const{geometry:i}=t,o=U($e,r,t,n),a=_(Xe,{measureType:r,directSegment:i.directSegment,renderCoordsHelper:n}),s=g(Ye,o.endRenderSpace,o.startRenderSpace),l=te(s,a,j,Ze),m=p(s);c(l,l,f(Ye,m,m,m)),e.modelTransform=l,e.renderLocation=o.eval(.5,Ye)}function Be(e,t,r,n){const{startRenderSpace:i,endRenderSpace:o}=r,a=Ie(t,n)?i:o;return d(e,a)}function We(e,{forHeading:t,geometry:r,renderCoordsHelper:n}){return t?D(e,r,n):A(e,r,{invert:!0})}function Ie(e,t){const r=G(qe,e),n=D(Ne,e,t);return y(r,n)>0}const qe=S(),Ne=S();function Je(e){return a(e)+q}function Ke(e){return a(e)+N}function Qe(e,t){const r=t.material,n=t.focusMultiplier??re.focusMultiplier,i=t.calloutLength??re.calloutLength,o=re.discRadius*(t.discScale??1),a=o*n,s=(e,t)=>{const r=[0,1,2,2,3,0];return new de(t,[["position",new me([i-e,-e,0,i+e,-e,0,i+e,e,0,i-e,e,0],r,3,!0)],["uv0",new me([0,0,1,0,1,1,0,1],r,2,!0)]])},c=t.calloutWidth??re.calloutWidth,l=new fe({width:c,color:t.calloutColor,renderOccluded:4,isDecoration:!0}),m=pe(l,[[0,0,0],[i-o,0,0]]),d=pe(l,[[0,0,0],[i-a,0,0]]),u=t.customStateMask??0;e.collisionType={type:"disc",direction:[0,0,1],offset:[i,0,0]},e.focusMultiplier=n,e.metadata=t.metadata,e.radius=o,e.renderObjects=[new ie(s(o,r),1|u),new ie(m,1|u),new ie(s(a,r),2|u),new ie(d,2|u)]}const Ve=16,Xe=S(),Ye=S(),Ze=l(),$e=new ce;export{Ve as DidPointerMoveRecentlyFlag,ye as LengthDimensionManipulators,we as LengthDimensionPointManipulator,je as LineOfSightOrientationManipulator,_e as automaticHeadingFromCamera,be as createMeasureTypeManipulator,Se as createOffsetManipulator,Ke as focusedOffsetWidth,Pe as headingManipulatorHandles,Oe as measureTypeManipulatorHandles,Me as offsetManipulatorHandles,He as pointManipulatorHandles,Ce as rotationManipulatorHandles,ze as snapOrientationToNearestRightAngle,Je as unfocusedOffsetWidth,Le as updateHeadingManipulatorTransform,Fe as updateMeasureTypeManipulatorTransform,Ae as updateOffsetManipulatorTransform,ke as updateRotationManipulatorTransform};
5
+ import e from"../../../../Color.js";import{lengthDimensionMeasureType as t}from"../../../../analysis/dimensionUtils.js";import{cyclicalDegrees as r}from"../../../../core/Cyclical.js";import{rad2deg as n}from"../../../../core/mathUtils.js";import{watch as i,initial as o}from"../../../../core/reactiveUtils.js";import{pt2px as a}from"../../../../core/screenUtils.js";import{identity as s,scale as c}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{g as m,c as d,q as u,l as p,i as f,a as g,d as h,h as v,e as y}from"../../../../chunks/vec32.js";import{fromValues as w,create as S,ZEROS as j}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as x}from"../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import b from"../../../../geometry/Point.js";import{fromPositionAndNormal as H,create as M,signedDistance as P,getNormal as C}from"../../../../geometry/support/plane.js";import{sv3d as T}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as R}from"../../../../layers/graphics/hydratedFeatures.js";import{isValidComputation as z,computeOffsetForPoint as O,computeSegmentForMeasureType as U,computeOffsetAxis as _,dimensionStartToEnd as A,headingFromGeometry as L,computeGeometryFromDimension as k,computationToGeometryDependencies as E,directUp as D,directStartToEnd as G}from"./lengthDimensionUtils.js";import{getTransparentAccentColor as F,pointRadius as B,lengthFraction as W,minLengthMeters as I,linePaddingPx as q,focusedLinePaddingPx as N,orientationFocusMultiplier as J,orientationDiscScale as K,orientationCalloutWidth as Q,markerLineSizeFraction as V,orientationCalloutOffsetPx as X,orientationSnapThresholdDegrees as Y}from"./settings.js";import{Manipulator3D as Z}from"../../interactive/Manipulator3D.js";import{createManipulatorMaterial as $,worldScaledManipulatorSettings as ee,calculateTranslateRotateFromBases as te,rotateManipulatorDefaults as re,calculateInputRotationTransform as ne}from"../../interactive/manipulatorUtils.js";import{RenderObject as ie}from"../../interactive/RenderObject.js";import{hideManipulatorWhileDragging as oe,screenToMap3D as ae,screenToRenderPlane as se}from"../../interactive/editingTools/dragEventPipeline3D.js";import{EuclideanSegment as ce}from"../../interactive/visualElements/support/Segment.js";import{markerSizePerLineWidth as le}from"../../support/engineContent/marker.js";import{Attribute as me}from"../../webgl-engine/lib/Attribute.js";import{Geometry as de}from"../../webgl-engine/lib/Geometry.js";import{createSphereGeometry as ue,createPolylineGeometry as pe}from"../../webgl-engine/lib/GeometryUtil.js";import{RibbonLineMaterial as fe}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createManipulatorDragEventPipeline as ge,resetProperties as he,EventPipeline as ve}from"../../../interactive/dragEventPipeline.js";class ye{constructor(e){this.start=e.start,this.end=e.end,this.offset=e.offset,this.heading=e.heading,this.rotation=e.rotation,this.direct=e.direct,this.horizontal=e.horizontal,this.vertical=e.vertical}manipulatorName(e){return Object.keys(this).find(t=>this.hasOwnProperty(t)&&e===this[t])}values(){return[this.start,this.end,this.offset,this.heading,this.rotation,this.direct,this.horizontal,this.vertical]}forEachMeasureTypeManipulator(e){for(const r of t)e(this.manipulatorForMeasureType(r),r)}manipulatorForMeasureType(e){switch(e){case"direct":return this.direct;case"horizontal":return this.horizontal;case"vertical":return this.vertical}}}class we extends Z{constructor(t,r){const n=$(e.toUnitRGBA(F(t.effectiveTheme))),o=[new ie(ue(n,1,32,32),Ve)];super({view:t,renderObjects:o,metadata:r.metadata,available:!1,grabCursor:"crosshair",radius:B,collisionPriority:1}),this._themeHandle=i(()=>({color:e.toUnitRGBA(F(t.effectiveTheme))}),e=>n.setParameters(e))}destroy(){this._themeHandle.remove(),super.destroy()}}function Se(e,t){const r=[w(-.5,0,0),w(.5,0,0)],n=pe(t.unfocusedMaterial,r.map(e=>m(S(),e,W))),i=n.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new ie(n,9|Ve),new ie(i,2|Ve)],collisionType:{type:"line",paths:[r]},radius:Ke(t.lineSizePt)/2,metadata:t.metadata,available:!1,...ee})}class je extends Z{constructor(t,{lineSizePt:r,material:n,metadata:a}){super({view:t,autoScaleRenderObjects:!1,collisionPriority:1,metadata:a}),this._options={calloutColor:x(),lineSizePt:r,material:n},this._themeHandle=i(()=>e.toUnitRGBA(F(t.effectiveTheme)),e=>{this._options.calloutColor=e,Qe(this,xe({...this._options,metadata:this.metadata}))},o)}update({lineSizePt:e,material:t}){this._options.lineSizePt=e,this._options.material=t,Qe(this,xe({...this._options,metadata:this.metadata}))}destroy(){this._themeHandle.remove(),super.destroy()}}function xe({calloutColor:e,lineSizePt:t,material:r,metadata:n}){return{calloutLength:.25*le*V*a(t)+X,calloutColor:e,calloutWidth:Q,customStateMask:Ve,discScale:K,focusMultiplier:J,material:r,metadata:n}}function be(e,t){const r=[w(-.5,0,0),w(.5,0,0)],n=pe(t.thinOffsetManipulatorMaterial,r),i=pe(t.unfocusedMaterial,r.map(e=>m(S(),e,W))),o=i.instantiate({material:t.focusedMaterial});return new Z({view:e,renderObjects:[new ie(i,1|Ve),new ie(o,2|Ve),new ie(n,Ve)],collisionType:{type:"line",paths:[r]},radius:Ke(t.lineSizePt)/2,available:!1,metadata:t.metadata,...ee})}function He(e,{isStart:t,createSnappingPipelineStep:r,dimension:n,onUpdate:i,view:o}){const a=t?"startPoint":"endPoint",s=ge(e,(e,t,s,c)=>{const l=oe(e),{snappingStep:m,cancelSnapping:d}=r(c);s=s.next(l).next(he(n,[a,"measureType","orientation"])).next(d),t.next(l).next(ae(o)).next(...m).next(e=>{const t=R(e.mapEnd,new b);i("startPoint"===a?{startPoint:t}:{endPoint:t})})});return[s]}function Me(e,{computation:t,view:r}){return[ge(e,(e,n,i)=>{if(!z(t)||!e.selected)return;const{geometry:o,dimension:a}=t,s=oe(e);n.next(s).next(Ue(r,a,o.dimensionSegment,o.primaryOffsetAxis)),i.next(s).next(he(a,["offset"]))})]}function Pe(e,{computation:t,view:r}){return[ge(e,(e,n,i)=>{Re({cancel:i,computation:t,settingHeading:!0,steps:n,view:r})})]}function Ce(e,{computation:t,view:r}){return[ge(e,(e,n,i)=>{Re({cancel:i,computation:t,settingHeading:!1,steps:n,view:r})}),e.events.on("immediate-click",e=>{Te(e,t,r)})]}function Te(e,t,n){const{dimension:i,geometry:o}=t;if(90===i.orientation||270===i.orientation)return i.orientation=0,void e.stopPropagation();if(null==o)return;const{renderCoordsHelper:a}=n,s=k({...E(t),orientation:90},a),c=k({...E(t),orientation:270},a);if(null==s||null==c)return;const l=L(s,a),m=L(c,a),d=_e(o,n),u=r.shortestSignedDiff(d,l),p=r.shortestSignedDiff(d,m);i.orientation=Math.abs(u)<Math.abs(p)?90:270,e.stopPropagation()}function Re(e){const{cancel:t,computation:r,settingHeading:i,steps:o,view:a}=e;if(!z(r))return;const{renderCoordsHelper:s}=a,{dimension:c,geometry:l}=r,m=S(),u=Be(S(),l,l.directSegment,s),p=We(T.get(),{forHeading:i,geometry:l,renderCoordsHelper:s}),f=H(u,p,M()),g=i?c.orientation??L(l,a.renderCoordsHelper):c.orientation??0;o.next(se(a,f)).next(e=>{"start"===e.action&&d(m,e.renderStart);const t=C(f),r=ne(m,e.renderEnd,u,t);let o=g-n(r);i||(o=ze(o)),c.orientation=o}),t.next(he(c,["orientation"]))}function ze(e){const t=r.normalize(e)%90;return t<Y?e-t:90-t<Y?e+(90-t):e}function Oe(e,{computation:t,manipulatorMeasureType:r,view:n}){let i="direct",o=0,a=0;return[e.events.on("grab-changed",s=>{if("start"!==s.action||!z(t))return;const{dimension:c,geometry:l}=t;i=c.measureType,o=c.offset,a=c.orientation;const m=d(T.get(),e.renderLocation);c.measureType=r,c.offset=O(m,r,l,n.renderCoordsHelper),c.orientation=0}),ge(e,(e,s,c)=>{if(!z(t))return;const{geometry:l,dimension:m}=t,{renderCoordsHelper:d}=n,u=U($e,r,t,d),p=_(T.get(),{measureType:r,directSegment:l.directSegment,renderCoordsHelper:d}),f=oe(e);s.next(f).next(Ue(n,m,u,p)),c.next(f).next(e=>(m.measureType=i,m.offset=o,m.orientation=a,e))})]}function Ue(e,t,r,n){const i=h(T.get(),r.endRenderSpace,r.startRenderSpace);v(i,i,n);const o=H(r.startRenderSpace,i,M()),a=H(r.startRenderSpace,n,M()),s=t.offset;let c,l=0;const m=new ve;return m.next(se(e,o)).next(r=>{"start"===r.action&&(l=P(a,r.renderStart));const n=(P(a,r.renderEnd)-l)*e.renderCoordsHelper.unitInMeters;t.offset=s+n,c=r}),e=>(m.execute(e),c)}function _e(e,t){const{directSegment:r}=e,{renderCoordsHelper:n}=t,i=D(T.get(),e,n),o=G(T.get(),e),a=v(T.get(),o,i),{viewForward:s}=t.state.camera;y(a,s)>0&&m(a,a,-1);const c=r.eval(.5,T.get());return n.headingAtPosition(c,a)}function Ae(e,t,r){const{dimensionSegment:n,primaryOffsetAxis:i}=t,o=A(Xe,t),a=u(o,j)?s(Ze):te(o,i,j,Ze),l=Math.max(p(o),I/r.unitInMeters);c(a,a,f(Xe,l,l,l)),e.modelTransform=a,e.renderLocation=n.eval(.5,Xe)}function Le(e,t,r){Ee(e,t,r,{forHeading:!0})}function ke(e,t,r){Ee(e,t,r,{forHeading:!1})}function Ee(e,t,r,{forHeading:n}){const{dimension:i,geometry:o}=t,{primaryOffsetAxis:a}=o,s=m(De,a,i.offset>=0?1:-1),c=We(Ge,{forHeading:n,geometry:o,renderCoordsHelper:r});v(c,c,s);const l=te(s,c,j,Ze);e.modelTransform=l,e.renderLocation=Be(Xe,o,o.dimensionSegment,r)}const De=S(),Ge=S();function Fe(e,t,r,n){const{geometry:i}=t,o=U($e,r,t,n),a=_(Xe,{measureType:r,directSegment:i.directSegment,renderCoordsHelper:n}),s=g(Ye,o.endRenderSpace,o.startRenderSpace),l=te(s,a,j,Ze),m=p(s);c(l,l,f(Ye,m,m,m)),e.modelTransform=l,e.renderLocation=o.eval(.5,Ye)}function Be(e,t,r,n){const{startRenderSpace:i,endRenderSpace:o}=r,a=Ie(t,n)?i:o;return d(e,a)}function We(e,{forHeading:t,geometry:r,renderCoordsHelper:n}){return t?D(e,r,n):A(e,r,{invert:!0})}function Ie(e,t){const r=G(qe,e),n=D(Ne,e,t);return y(r,n)>0}const qe=S(),Ne=S();function Je(e){return a(e)+q}function Ke(e){return a(e)+N}function Qe(e,t){const r=t.material,n=t.focusMultiplier??re.focusMultiplier,i=t.calloutLength??re.calloutLength,o=re.discRadius*(t.discScale??1),a=o*n,s=(e,t)=>{const r=[0,1,2,2,3,0];return new de(t,[["position",new me([i-e,-e,0,i+e,-e,0,i+e,e,0,i-e,e,0],r,3,!0)],["uv0",new me([0,0,1,0,1,1,0,1],r,2,!0)]])},c=t.calloutWidth??re.calloutWidth,l=new fe({width:c,color:t.calloutColor,renderOccluded:4,isDecoration:!0},e.view.state.isGlobal),m=pe(l,[[0,0,0],[i-o,0,0]]),d=pe(l,[[0,0,0],[i-a,0,0]]),u=t.customStateMask??0;e.collisionType={type:"disc",direction:[0,0,1],offset:[i,0,0]},e.focusMultiplier=n,e.metadata=t.metadata,e.radius=o,e.renderObjects=[new ie(s(o,r),1|u),new ie(m,1|u),new ie(s(a,r),2|u),new ie(d,2|u)]}const Ve=16,Xe=S(),Ye=S(),Ze=l(),$e=new ce;export{Ve as DidPointerMoveRecentlyFlag,ye as LengthDimensionManipulators,we as LengthDimensionPointManipulator,je as LineOfSightOrientationManipulator,_e as automaticHeadingFromCamera,be as createMeasureTypeManipulator,Se as createOffsetManipulator,Ke as focusedOffsetWidth,Pe as headingManipulatorHandles,Oe as measureTypeManipulatorHandles,Me as offsetManipulatorHandles,He as pointManipulatorHandles,Ce as rotationManipulatorHandles,ze as snapOrientationToNearestRightAngle,Je as unfocusedOffsetWidth,Le as updateHeadingManipulatorTransform,Fe as updateMeasureTypeManipulatorTransform,Ae as updateOffsetManipulatorTransform,ke as updateRotationManipulatorTransform};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../Color.js";import{watch as r,initial as t}from"../../../../core/reactiveUtils.js";import{fromValues as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{resizeHandleCornerWidth as i,resizeHandleEdgeWidth as s,displayFocusMultiplier as n,resizeHandleCornerInputRadius as a,resizeHandleEdgeInputRadius as l}from"./sliceToolConfig.js";import{isDiagonalResizeHandle as c,resizeNormal as m,resizeOutlineOnly as f}from"./sliceToolUtils.js";import{Manipulator3D as d}from"../../interactive/Manipulator3D.js";import{worldScaledManipulatorSettings as p}from"../../interactive/manipulatorUtils.js";import{RenderObject as u}from"../../interactive/RenderObject.js";import{createPolylineGeometry as j}from"../../webgl-engine/lib/GeometryUtil.js";import{RibbonLineMaterial as w}from"../../webgl-engine/materials/RibbonLineMaterial.js";class h extends d{constructor(o,a){const l=c(a),m=l?i:s,f=m*n,d=s,u={renderOccluded:4,isDecoration:!0},j=new w({...u,width:m}),h=new w({...u,width:f}),v=new w({...u,width:d});super({view:o,...p,...b({isCorner:l,unfocusedMaterial:j,focusedMaterial:h,outlineMaterial:v})}),this._themeHandle=r(()=>o.effectiveTheme.accentColor,r=>{const t=e.toUnitRGBA(r);j.setParameters({color:t}),h.setParameters({color:t}),v.setParameters({color:t})},t)}destroy(){this._themeHandle.remove(),super.destroy()}}function b({isCorner:e,unfocusedMaterial:r,focusedMaterial:t,outlineMaterial:i}){const s=e?[o(1,0,0),o(0,0,0),o(0,1,0)]:[o(1,0,0),o(-1,0,0)];return{renderObjects:[new u(j(r,s),1|m),new u(j(t,s),2|m),new u(j(i,s),f)],collisionType:{type:"line",paths:[s]},radius:e?a:l,state:m}}export{h as ResizeManipulator};
5
+ import e from"../../../../Color.js";import{watch as t,initial as r}from"../../../../core/reactiveUtils.js";import{fromValues as o}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{resizeHandleCornerWidth as i,resizeHandleEdgeWidth as s,displayFocusMultiplier as a,resizeHandleCornerInputRadius as l,resizeHandleEdgeInputRadius as n}from"./sliceToolConfig.js";import{isDiagonalResizeHandle as c,resizeNormal as m,resizeOutlineOnly as f}from"./sliceToolUtils.js";import{Manipulator3D as d}from"../../interactive/Manipulator3D.js";import{worldScaledManipulatorSettings as p}from"../../interactive/manipulatorUtils.js";import{RenderObject as u}from"../../interactive/RenderObject.js";import{createPolylineGeometry as j}from"../../webgl-engine/lib/GeometryUtil.js";import{RibbonLineMaterial as w}from"../../webgl-engine/materials/RibbonLineMaterial.js";class b extends d{constructor(o,l){const n=c(l),m=n?i:s,f=m*a,d=s,u={renderOccluded:4,isDecoration:!0},j=new w({...u,width:m},o.state.isGlobal),b=new w({...u,width:f},o.state.isGlobal),v=new w({...u,width:d},o.state.isGlobal);super({view:o,...p,...h({isCorner:n,unfocusedMaterial:j,focusedMaterial:b,outlineMaterial:v})}),this._themeHandle=t(()=>o.effectiveTheme.accentColor,t=>{const r=e.toUnitRGBA(t);j.setParameters({color:r}),b.setParameters({color:r}),v.setParameters({color:r})},r)}destroy(){this._themeHandle.remove(),super.destroy()}}function h({isCorner:e,unfocusedMaterial:t,focusedMaterial:r,outlineMaterial:i}){const s=e?[o(1,0,0),o(0,0,0),o(0,1,0)]:[o(1,0,0),o(-1,0,0)];return{renderObjects:[new u(j(t,s),1|m),new u(j(r,s),2|m),new u(j(i,s),f)],collisionType:{type:"line",paths:[s]},radius:e?l:n,state:m}}export{b as ResizeManipulator};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../Color.js";import{multiplyOpacity as t,getContrast as r}from"../../../../core/colorUtils.js";import{releaseMaybe as i}from"../../../../core/maybe.js";import{watch as o,initial as s}from"../../../../core/reactiveUtils.js";import{DidPointerMoveRecentlyFlag as l}from"./sliceToolUtils.js";import{Manipulator3D as a}from"../../interactive/Manipulator3D.js";import{rotateManipulatorDefaults as n}from"../../interactive/manipulatorUtils.js";import{RenderObject as c}from"../../interactive/RenderObject.js";import{Attribute as m}from"../../webgl-engine/lib/Attribute.js";import{Geometry as u}from"../../webgl-engine/lib/Geometry.js";import{createPolylineGeometry as d}from"../../webgl-engine/lib/GeometryUtil.js";import{ImageMaterial as p}from"../../webgl-engine/materials/ImageMaterial.js";import{RibbonLineMaterial as f}from"../../webgl-engine/materials/RibbonLineMaterial.js";class h extends a{constructor(i,l){const a=t(i.effectiveTheme.accentColor,.5),c=r(i.effectiveTheme.accentColor),m=l(a,c),u=new p({draped:!1,texture:m.texture,writeDepth:!1,renderOccluded:16,isDecoration:!0}),d=n.calloutWidth,h=new f({width:d,renderOccluded:4,isDecoration:!0});super({view:i,...w({imageMaterial:u,calloutMaterial:h})}),this._material=u,this._textureHandle=m,this._themeHandle=o(()=>i.effectiveTheme.accentColor,i=>{const o=t(i,.5),s=r(i),a=this._textureHandle;this._textureHandle=l(o,s),u.setParameters({texture:this._textureHandle.texture}),a?.release(),h.setParameters({color:e.toUnitRGBA(i)})},s)}destroy(){this._textureHandle=i(this._textureHandle),this._themeHandle.remove(),this._material.dispose(),super.destroy()}}function w({imageMaterial:e,calloutMaterial:t}){const{focusMultiplier:r,calloutLength:i,discRadius:o}=n,s=o*r,a=(e,t)=>{const r=[0,1,2,2,3,0];return new u(t,[["position",new m([i-e,-e,0,i+e,-e,0,i+e,e,0,i-e,e,0],r,3,!0)],["uv0",new m([0,0,1,0,1,1,0,1],r,2,!0)]])},p=d(t,[[0,0,0],[i-o,0,0]]),f=d(t,[[0,0,0],[i-s,0,0]]),h=l;return{autoScaleRenderObjects:!1,collisionPriority:1,collisionType:{type:"disc",direction:[0,0,1],offset:[i,0,0]},focusMultiplier:r,radius:o,renderObjects:[new c(a(o,e),1|h),new c(p,1|h),new c(a(s,e),2|h),new c(f,2|h)],state:h}}export{h as RotateManipulator};
5
+ import e from"../../../../Color.js";import{multiplyOpacity as t,getContrast as r}from"../../../../core/colorUtils.js";import{releaseMaybe as i}from"../../../../core/maybe.js";import{watch as o,initial as s}from"../../../../core/reactiveUtils.js";import{DidPointerMoveRecentlyFlag as l}from"./sliceToolUtils.js";import{Manipulator3D as a}from"../../interactive/Manipulator3D.js";import{rotateManipulatorDefaults as n}from"../../interactive/manipulatorUtils.js";import{RenderObject as c}from"../../interactive/RenderObject.js";import{Attribute as m}from"../../webgl-engine/lib/Attribute.js";import{Geometry as u}from"../../webgl-engine/lib/Geometry.js";import{createPolylineGeometry as d}from"../../webgl-engine/lib/GeometryUtil.js";import{ImageMaterial as p}from"../../webgl-engine/materials/ImageMaterial.js";import{RibbonLineMaterial as f}from"../../webgl-engine/materials/RibbonLineMaterial.js";class h extends a{constructor(i,l){const a=t(i.effectiveTheme.accentColor,.5),c=r(i.effectiveTheme.accentColor),m=l(a,c),u=new p({draped:!1,texture:m.texture,writeDepth:!1,renderOccluded:16,isDecoration:!0}),d=n.calloutWidth,h=new f({width:d,renderOccluded:4,isDecoration:!0},i.state.isGlobal);super({view:i,...w({imageMaterial:u,calloutMaterial:h})}),this._material=u,this._textureHandle=m,this._themeHandle=o(()=>i.effectiveTheme.accentColor,i=>{const o=t(i,.5),s=r(i),a=this._textureHandle;this._textureHandle=l(o,s),u.setParameters({texture:this._textureHandle.texture}),a?.release(),h.setParameters({color:e.toUnitRGBA(i)})},s)}destroy(){this._textureHandle=i(this._textureHandle),this._themeHandle.remove(),this._material.dispose(),super.destroy()}}function w({imageMaterial:e,calloutMaterial:t}){const{focusMultiplier:r,calloutLength:i,discRadius:o}=n,s=o*r,a=(e,t)=>{const r=[0,1,2,2,3,0];return new u(t,[["position",new m([i-e,-e,0,i+e,-e,0,i+e,e,0,i-e,e,0],r,3,!0)],["uv0",new m([0,0,1,0,1,1,0,1],r,2,!0)]])},p=d(t,[[0,0,0],[i-o,0,0]]),f=d(t,[[0,0,0],[i-s,0,0]]),h=l;return{autoScaleRenderObjects:!1,collisionPriority:1,collisionType:{type:"disc",direction:[0,0,1],offset:[i,0,0]},focusMultiplier:r,radius:o,renderObjects:[new c(a(o,e),1|h),new c(p,1|h),new c(a(s,e),2|h),new c(f,2|h)],state:h}}export{h as RotateManipulator};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../../../Color.js";import{getContrast as e}from"../../../../core/colorUtils.js";import{watch as r,initial as o}from"../../../../core/reactiveUtils.js";import{identity as a,translate as i,scale as s,fromQuat as n,multiply as c}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{rotationTo as m}from"../../../../core/libs/gl-matrix-2/math/quat.js";import{d as p,n as u,g as f,f as d,i as g}from"../../../../chunks/vec32.js";import{create as h,fromValues as b}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{sv3d as j,sm4d as M,sq4d as w}from"../../../../geometry/support/vectorStacks.js";import{shiftRestartOffsetDistance as v,shiftRestartTipRadius as O,shiftRestartTipLength as U,shiftRestartArrowOutlineWidth as y,shiftRestartArrowLength as D,shiftRestartTubeRadius as P,shiftRestartTubeFocusMultiplier as R,shiftRestartTipFocusMultiplier as x}from"./sliceToolConfig.js";import{DidPointerMoveRecentlyFlag as C,IsShiftEdgeOnScreenFlag as G}from"./sliceToolUtils.js";import{Manipulator3D as A}from"../../interactive/Manipulator3D.js";import{RenderObject as B}from"../../interactive/RenderObject.js";import{createPolylineGeometry as F,createConeGeometry as T,createPathExtrusionGeometry as k}from"../../webgl-engine/lib/GeometryUtil.js";import{ColorMaterial as H}from"../../webgl-engine/materials/ColorMaterial.js";import{RibbonLineMaterial as S}from"../../webgl-engine/materials/RibbonLineMaterial.js";class _ extends A{constructor(a,i){const s=new S({width:1,renderOccluded:4,isDecoration:!0}),n=new H({cullFace:2,renderOccluded:16,isDecoration:!0}),c=new H({cullFace:2,renderOccluded:16,isDecoration:!0}),l=new H({cullFace:2,renderOccluded:16,isDecoration:!0}),m=new H({writeDepth:!1,cullFace:1,renderOccluded:2,isDecoration:!0});super({view:a,...q({offsetMode:i,tubeMaterial:n,tipMaterial:c,capMaterial:l,outlineMaterial:m,calloutMaterial:s})}),this._themeHandle=r(()=>a.effectiveTheme.accentColor,r=>{const o=e(r),a=t.toUnitRGBA(r),i=t.toUnitRGBA(o),p=t.toUnitRGBA(t.blendColors(o,r,.4)),u=t.toUnitRGBA(t.blendColors(o,r,.14));s.setParameters({color:a}),n.setParameters({color:u}),c.setParameters({color:i}),l.setParameters({color:p}),m.setParameters({color:a})},o)}destroy(){this._themeHandle.remove(),super.destroy()}}function q({offsetMode:t,tubeMaterial:e,tipMaterial:r,capMaterial:o,outlineMaterial:a,calloutMaterial:i}){const s=0===t?v:0,n=[b(s,0,-D/2),b(s,0,D/2)],c=z(n),l=I({vertices:n,padding:0,materials:{tube:e,tip:r,cap:o}}),m=I({vertices:n,padding:y,materials:{tube:a,tip:a,cap:a}}),p=F(i,[[s,0,0],[s-v,0,0]]),u=F(i,[[s,0,0],[s-v,0,0]]);return{renderObjects:[...l.normal.map(t=>new B(t,1|C)),...m.normal.map(t=>new B(t,1|C)),new B(p,1|C|G),...l.focused.map(t=>new B(t,2|C)),...m.focused.map(t=>new B(t,2|C)),new B(u,2|C|G)],autoScaleRenderObjects:!1,collisionType:{type:"line",paths:[c]},collisionPriority:1,radius:O,state:C}}function I({vertices:t,padding:e,materials:r}){const o=o=>{const v=t.slice(),y=p(j.get(),v[0],v[1]);u(y,y);const D=p(j.get(),v[v.length-1],v[v.length-2]);if(u(D,D),e>0){const t=f(h(),D,-e);v[v.length-1]=d(t,t,v[v.length-1]);const r=f(h(),y,-e);v[0]=d(r,r,v[0])}const C=o?x:1,G=U*C,A=O*C,B=a(M.get());if(e>0){const t=G/4,r=g(j.get(),0,t,0),o=1+e/t;i(B,B,r),s(B,B,g(j.get(),o,o,o)),i(B,B,f(r,r,-1/o))}const F=a(l()),k=b(0,1,0),H=n(l(),m(w.get(),k,D));H[12]=v[v.length-1][0],H[13]=v[v.length-1][1],H[14]=v[v.length-1][2],c(H,H,B);const S=r.tube,_=L(P*(o?R:1)+e,v,S);_.transformation=F;const q=[_],I=r.tip,z=T(I,G,A,24,!1,!1,!0);z.transformation=H,q.push(z);const E=r.cap,J=T(E,G,A,24,!1,!0,!1);J.transformation=H,q.push(J);const K=n(l(),m(w.get(),k,y));return K[12]=v[0][0],K[13]=v[0][1],K[14]=v[0][2],c(K,K,B),q.push(z.instantiate({transformation:K})),q.push(J.instantiate({transformation:K})),q};return{normal:o(!1),focused:o(!0)}}function L(t,e,r){const o=[],a=12;for(let i=0;i<a;i++){const e=i/a*2*Math.PI;o.push([Math.cos(e)*t,Math.sin(e)*t])}return k(r,o,e,[],[],!1)}function z(t,e){const r=p(h(),t[t.length-1],t[t.length-2]);u(r,r),f(r,r,U),d(r,r,t[t.length-1]);{const e=p(h(),t[0],t[1]);return u(e,e),f(e,e,U),d(e,e,t[0]),[e,...t,r]}}export{_ as ShiftManipulator};
5
+ import t from"../../../../Color.js";import{getContrast as e}from"../../../../core/colorUtils.js";import{watch as o,initial as r}from"../../../../core/reactiveUtils.js";import{identity as a,translate as i,scale as s,fromQuat as n,multiply as c}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{rotationTo as m}from"../../../../core/libs/gl-matrix-2/math/quat.js";import{d as p,n as u,g as f,f as d,i as g}from"../../../../chunks/vec32.js";import{create as h,fromValues as b}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{sv3d as j,sm4d as M,sq4d as w}from"../../../../geometry/support/vectorStacks.js";import{shiftRestartOffsetDistance as v,shiftRestartTipRadius as O,shiftRestartTipLength as U,shiftRestartArrowOutlineWidth as y,shiftRestartArrowLength as D,shiftRestartTubeRadius as P,shiftRestartTubeFocusMultiplier as R,shiftRestartTipFocusMultiplier as x}from"./sliceToolConfig.js";import{DidPointerMoveRecentlyFlag as C,IsShiftEdgeOnScreenFlag as G}from"./sliceToolUtils.js";import{Manipulator3D as A}from"../../interactive/Manipulator3D.js";import{RenderObject as B}from"../../interactive/RenderObject.js";import{createPolylineGeometry as F,createConeGeometry as T,createPathExtrusionGeometry as k}from"../../webgl-engine/lib/GeometryUtil.js";import{ColorMaterial as H}from"../../webgl-engine/materials/ColorMaterial.js";import{RibbonLineMaterial as S}from"../../webgl-engine/materials/RibbonLineMaterial.js";class _ extends A{constructor(a,i){const s=new S({width:1,renderOccluded:4,isDecoration:!0},a.state.isGlobal),n=new H({cullFace:2,renderOccluded:16,isDecoration:!0}),c=new H({cullFace:2,renderOccluded:16,isDecoration:!0}),l=new H({cullFace:2,renderOccluded:16,isDecoration:!0}),m=new H({writeDepth:!1,cullFace:1,renderOccluded:2,isDecoration:!0});super({view:a,...q({offsetMode:i,tubeMaterial:n,tipMaterial:c,capMaterial:l,outlineMaterial:m,calloutMaterial:s})}),this._themeHandle=o(()=>a.effectiveTheme.accentColor,o=>{const r=e(o),a=t.toUnitRGBA(o),i=t.toUnitRGBA(r),p=t.toUnitRGBA(t.blendColors(r,o,.4)),u=t.toUnitRGBA(t.blendColors(r,o,.14));s.setParameters({color:a}),n.setParameters({color:u}),c.setParameters({color:i}),l.setParameters({color:p}),m.setParameters({color:a})},r)}destroy(){this._themeHandle.remove(),super.destroy()}}function q({offsetMode:t,tubeMaterial:e,tipMaterial:o,capMaterial:r,outlineMaterial:a,calloutMaterial:i}){const s=0===t?v:0,n=[b(s,0,-D/2),b(s,0,D/2)],c=z(n),l=I({vertices:n,padding:0,materials:{tube:e,tip:o,cap:r}}),m=I({vertices:n,padding:y,materials:{tube:a,tip:a,cap:a}}),p=F(i,[[s,0,0],[s-v,0,0]]),u=F(i,[[s,0,0],[s-v,0,0]]);return{renderObjects:[...l.normal.map(t=>new B(t,1|C)),...m.normal.map(t=>new B(t,1|C)),new B(p,1|C|G),...l.focused.map(t=>new B(t,2|C)),...m.focused.map(t=>new B(t,2|C)),new B(u,2|C|G)],autoScaleRenderObjects:!1,collisionType:{type:"line",paths:[c]},collisionPriority:1,radius:O,state:C}}function I({vertices:t,padding:e,materials:o}){const r=r=>{const v=t.slice(),y=p(j.get(),v[0],v[1]);u(y,y);const D=p(j.get(),v[v.length-1],v[v.length-2]);if(u(D,D),e>0){const t=f(h(),D,-e);v[v.length-1]=d(t,t,v[v.length-1]);const o=f(h(),y,-e);v[0]=d(o,o,v[0])}const C=r?x:1,G=U*C,A=O*C,B=a(M.get());if(e>0){const t=G/4,o=g(j.get(),0,t,0),r=1+e/t;i(B,B,o),s(B,B,g(j.get(),r,r,r)),i(B,B,f(o,o,-1/r))}const F=a(l()),k=b(0,1,0),H=n(l(),m(w.get(),k,D));H[12]=v[v.length-1][0],H[13]=v[v.length-1][1],H[14]=v[v.length-1][2],c(H,H,B);const S=o.tube,_=L(P*(r?R:1)+e,v,S);_.transformation=F;const q=[_],I=o.tip,z=T(I,G,A,24,!1,!1,!0);z.transformation=H,q.push(z);const E=o.cap,J=T(E,G,A,24,!1,!0,!1);J.transformation=H,q.push(J);const K=n(l(),m(w.get(),k,y));return K[12]=v[0][0],K[13]=v[0][1],K[14]=v[0][2],c(K,K,B),q.push(z.instantiate({transformation:K})),q.push(J.instantiate({transformation:K})),q};return{normal:r(!1),focused:r(!0)}}function L(t,e,o){const r=[],a=12;for(let i=0;i<a;i++){const e=i/a*2*Math.PI;r.push([Math.cos(e)*t,Math.sin(e)*t])}return k(o,r,e,[],[],!1)}function z(t,e){const o=p(h(),t[t.length-1],t[t.length-2]);u(o,o),f(o,o,U),d(o,o,t[t.length-1]);{const e=p(h(),t[0],t[1]);return u(e,e),f(e,e,U),d(e,e,t[0]),[e,...t,o]}}export{_ as ShiftManipulator};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../../../Color.js";import r from"../../../../core/Handles.js";import{handlesGroup as e}from"../../../../core/handleUtils.js";import{deg2rad as a,clamp as i}from"../../../../core/mathUtils.js";import{destroyMaybe as o}from"../../../../core/maybe.js";import{watch as n,initial as s}from"../../../../core/reactiveUtils.js";import{fromYRotation as l,fromXRotation as c,fromScaling as u,fromZRotation as p,fromRotation as m,multiply as h}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as f}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{i as d,a as g,g as _}from"../../../../chunks/vec32.js";import{create as M,fromValues as b}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{f as v}from"../../../../chunks/boundedPlane.js";import{viewshedToolManipulatorConfiguration as j}from"./ViewshedConfiguration.js";import{getViewshedRotationMatrix as w,screenToCircleAngle as A}from"./viewshedToolUtils.js";import{Manipulator3D as V}from"../../interactive/Manipulator3D.js";import{RenderObject as O}from"../../interactive/RenderObject.js";import{InteractiveManipulation as E}from"../../interactive/editingTools/manipulations/InteractiveManipulation.js";import{createPolylineGeometry as y}from"../../webgl-engine/lib/GeometryUtil.js";import{assert as R}from"../../webgl-engine/lib/Util.js";import{RibbonLineMaterial as T}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createManipulatorDragEventPipeline as U}from"../../../interactive/dragEventPipeline.js";class x extends E{constructor(t){super(),this._handles=new r,this._tool=t.tool,this._view=t.view,this._focusedArcMaterial=this._createArcMaterial(!0),this._unfocusedArcMaterial=this._createArcMaterial(!1),this._createManipulators(),this.forEachManipulator(t=>this._tool.manipulators.add(t))}destroy(){this._handles=o(this._handles),this.forEachManipulator(t=>{this._tool.manipulators.remove(t),t.destroy()}),this._tool=null,this._view=null,this._manipulators=null}createDragPipeline(t,r){const a=Object.values(this._manipulators);return e(a.map(({manipulator:e,side:a})=>U(e,(e,i,o,n,s)=>{const l=z(a,r),c=i.next(t=>({...t,manipulatorType:2,side:a})),u=A(c,this._view,l,r);t(e,u,o)})))}updateManipulatorsTransform(t){t.arcCentersPoints(H),this._forEachManipulatorInfo(r=>this._updateArcManipulatorTransform(r,t,H[r.side]))}updateManipulatorVisuals(t){this._forEachManipulatorInfo(r=>this._updateArcManipulatorVisuals(r,t))}_updateArcManipulatorVisuals({manipulator:t,side:r},e){const a=[];if(null!=e){const[i,o]=P(r,e,this._unfocusedArcMaterial);a.push(new O(i,1),new O(i.instantiate({material:this._focusedArcMaterial}),2)),t.collisionType={type:"line",paths:[o]}}t.renderObjects=a,t.radius=j.collisionRadius}_updateArcManipulatorTransform({manipulator:t,side:r},e,i){const o=e.horizontalFieldOfView,n=a(e.verticalFieldOfView/2),s=a(o/2),g=I(r);t.renderLocation=i;const _=f(),M=t=>{h(_,t,_)};M(l(k,a(-90))),g||M(c(k,n));const b=e.farDistanceRenderSpace;let v,j;M(u(k,d(L,b,b,b))),M(p(k,F(r))),M(w(e,k)),g?(v=s,j=e.tiltedUpVector):(j=e.rightVector,v=n),v*="right"===r||"bottom"===r?-1:1;const A=m(k,v,j);null!=A&&M(A),t.modelTransform=_}_createManipulators(){const t=this._createArcManipulator("left"),r=this._createArcManipulator("right"),e=this._createArcManipulator("top"),a=this._createArcManipulator("bottom");this._manipulators={left:t,right:r,top:e,bottom:a};[[a.manipulator,e.manipulator],[t.manipulator,r.manipulator]].forEach(([t,r])=>{t.metadata={pairedManipulator:r},r.metadata={pairedManipulator:t}})}_createArcManipulator(t){const r=new V({view:this._view,autoScaleRenderObjects:!1,worldSized:!0}),e={manipulator:r,side:t};return this._updateArcManipulatorVisuals(e),this._handles.add(r.events.on(["focus-changed","grab-changed"],t=>{const e=r.metadata?.pairedManipulator;null!=e&&(e.hovering!==r.hovering&&(e.hovering=r.hovering),e.grabbing!==r.grabbing&&(e.grabbing=r.grabbing))})),e}_createArcMaterial(r){const e=j.getFovArcWidth(r),a=new T({renderOccluded:4,isDecoration:!0,width:e});return this._handles.add(n(()=>t.toUnitRGBA(this._view.effectiveTheme.accentColor),t=>a.setParameters({color:t}),s)),a}forEachManipulator(t){Object.values(this._manipulators).forEach(({manipulator:r})=>t(r,2))}_forEachManipulatorInfo(t){Object.values(this._manipulators).forEach(r=>t(r))}get test(){return{manipulators:this._manipulators}}}function P(t,r,e){const{horizontalFieldOfView:o,verticalFieldOfView:n}=r,s=I(t),l=a(i((s?n:o)/2,0,15)),c=S(-l/2,l/2,s?1:Math.max(Math.sin(a(90-n/2)),.1));return[y(e,c),c]}function S(t,r,e,a=10){R(a>1,"createArcPolylineGeometry() needs at least 2 for numVertices");const i=r-t;if(i<=0||e<=0){const t=.01;return[b(0,0,t),b(0,0,-t)]}const o=[],n=i/a;for(let s=0;s<a;s++){let i=t+s*n;s===a-1&&(i=r);const l=Math.cos(i)*e,c=Math.sin(i)*e,u=b(l-e,0,c);o.push(u)}return o}function D(t){switch(t){case"left":return 0;case"bottom":return 1;case"right":return 2;case"top":return 3}}function F(t){return D(t)*G}function I(t){return"left"===t||"right"===t}function C(t){return"left"===t?"right":"right"===t?"left":"top"===t?"bottom":"top"}function z(t,{observerRenderSpace:r,targetRenderSpace:e,tiltedUpVector:a,rightVector:i,farDistanceRenderSpace:o}){const n=g(L,e,r),s=I(t)?i:a,l=_(B,s,o);return v(r,n,l)}const G=Math.PI/2,k=f(),L=M(),B=M(),H={top:M(),bottom:M(),left:M(),right:M()};export{x as ViewshedFieldOfViewManipulation,S as createArcPolylineVertices,C as flipSide,I as isSideHorizontal,F as sideToRad};
5
+ import t from"../../../../Color.js";import r from"../../../../core/Handles.js";import{handlesGroup as e}from"../../../../core/handleUtils.js";import{deg2rad as a,clamp as i}from"../../../../core/mathUtils.js";import{destroyMaybe as o}from"../../../../core/maybe.js";import{watch as n,initial as s}from"../../../../core/reactiveUtils.js";import{fromYRotation as l,fromXRotation as c,fromScaling as u,fromZRotation as p,fromRotation as m,multiply as h}from"../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as f}from"../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{i as d,a as _,g}from"../../../../chunks/vec32.js";import{create as M,fromValues as b}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{f as v}from"../../../../chunks/boundedPlane.js";import{viewshedToolManipulatorConfiguration as j}from"./ViewshedConfiguration.js";import{getViewshedRotationMatrix as w,screenToCircleAngle as A}from"./viewshedToolUtils.js";import{Manipulator3D as V}from"../../interactive/Manipulator3D.js";import{RenderObject as O}from"../../interactive/RenderObject.js";import{InteractiveManipulation as E}from"../../interactive/editingTools/manipulations/InteractiveManipulation.js";import{createPolylineGeometry as y}from"../../webgl-engine/lib/GeometryUtil.js";import{assert as R}from"../../webgl-engine/lib/Util.js";import{RibbonLineMaterial as T}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createManipulatorDragEventPipeline as U}from"../../../interactive/dragEventPipeline.js";class x extends E{constructor(t){super(),this._handles=new r,this._tool=t.tool,this._view=t.view,this._focusedArcMaterial=this._createArcMaterial(!0),this._unfocusedArcMaterial=this._createArcMaterial(!1),this._createManipulators(),this.forEachManipulator(t=>this._tool.manipulators.add(t))}destroy(){this._handles=o(this._handles),this.forEachManipulator(t=>{this._tool.manipulators.remove(t),t.destroy()}),this._tool=null,this._view=null,this._manipulators=null}createDragPipeline(t,r){const a=Object.values(this._manipulators);return e(a.map(({manipulator:e,side:a})=>U(e,(e,i,o,n,s)=>{const l=G(a,r),c=i.next(t=>({...t,manipulatorType:2,side:a})),u=A(c,this._view,l,r);t(e,u,o)})))}updateManipulatorsTransform(t){t.arcCentersPoints(H),this._forEachManipulatorInfo(r=>this._updateArcManipulatorTransform(r,t,H[r.side]))}updateManipulatorVisuals(t){this._forEachManipulatorInfo(r=>this._updateArcManipulatorVisuals(r,t))}_updateArcManipulatorVisuals({manipulator:t,side:r},e){const a=[];if(null!=e){const[i,o]=P(r,e,this._unfocusedArcMaterial);a.push(new O(i,1),new O(i.instantiate({material:this._focusedArcMaterial}),2)),t.collisionType={type:"line",paths:[o]}}t.renderObjects=a,t.radius=j.collisionRadius}_updateArcManipulatorTransform({manipulator:t,side:r},e,i){const o=e.horizontalFieldOfView,n=a(e.verticalFieldOfView/2),s=a(o/2),_=I(r);t.renderLocation=i;const g=f(),M=t=>{h(g,t,g)};M(l(k,a(-90))),_||M(c(k,n));const b=e.farDistanceRenderSpace;let v,j;M(u(k,d(L,b,b,b))),M(p(k,F(r))),M(w(e,k)),_?(v=s,j=e.tiltedUpVector):(j=e.rightVector,v=n),v*="right"===r||"bottom"===r?-1:1;const A=m(k,v,j);null!=A&&M(A),t.modelTransform=g}_createManipulators(){const t=this._createArcManipulator("left"),r=this._createArcManipulator("right"),e=this._createArcManipulator("top"),a=this._createArcManipulator("bottom");this._manipulators={left:t,right:r,top:e,bottom:a};[[a.manipulator,e.manipulator],[t.manipulator,r.manipulator]].forEach(([t,r])=>{t.metadata={pairedManipulator:r},r.metadata={pairedManipulator:t}})}_createArcManipulator(t){const r=new V({view:this._view,autoScaleRenderObjects:!1,worldSized:!0}),e={manipulator:r,side:t};return this._updateArcManipulatorVisuals(e),this._handles.add(r.events.on(["focus-changed","grab-changed"],t=>{const e=r.metadata?.pairedManipulator;null!=e&&(e.hovering!==r.hovering&&(e.hovering=r.hovering),e.grabbing!==r.grabbing&&(e.grabbing=r.grabbing))})),e}_createArcMaterial(r){const e=j.getFovArcWidth(r),a=new T({renderOccluded:4,isDecoration:!0,width:e},this._view.state.isGlobal);return this._handles.add(n(()=>t.toUnitRGBA(this._view.effectiveTheme.accentColor),t=>a.setParameters({color:t}),s)),a}forEachManipulator(t){Object.values(this._manipulators).forEach(({manipulator:r})=>t(r,2))}_forEachManipulatorInfo(t){Object.values(this._manipulators).forEach(r=>t(r))}get test(){return{manipulators:this._manipulators}}}function P(t,r,e){const{horizontalFieldOfView:o,verticalFieldOfView:n}=r,s=I(t),l=a(i((s?n:o)/2,0,15)),c=S(-l/2,l/2,s?1:Math.max(Math.sin(a(90-n/2)),.1));return[y(e,c),c]}function S(t,r,e,a=10){R(a>1,"createArcPolylineGeometry() needs at least 2 for numVertices");const i=r-t;if(i<=0||e<=0){const t=.01;return[b(0,0,t),b(0,0,-t)]}const o=[],n=i/a;for(let s=0;s<a;s++){let i=t+s*n;s===a-1&&(i=r);const l=Math.cos(i)*e,c=Math.sin(i)*e,u=b(l-e,0,c);o.push(u)}return o}function D(t){switch(t){case"left":return 0;case"bottom":return 1;case"right":return 2;case"top":return 3}}function F(t){return D(t)*z}function I(t){return"left"===t||"right"===t}function C(t){return"left"===t?"right":"right"===t?"left":"top"===t?"bottom":"top"}function G(t,{observerRenderSpace:r,targetRenderSpace:e,tiltedUpVector:a,rightVector:i,farDistanceRenderSpace:o}){const n=_(L,e,r),s=I(t)?i:a,l=g(B,s,o);return v(r,n,l)}const z=Math.PI/2,k=f(),L=M(),B=M(),H={top:M(),bottom:M(),left:M(),right:M()};export{x as ViewshedFieldOfViewManipulation,S as createArcPolylineVertices,C as flipSide,I as isSideHorizontal,F as sideToRad};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{__decorate as e}from"tslib";import t from"../../../../Graphic.js";import s from"../../../../core/Accessor.js";import{isSome as i}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{makeHandle as a}from"../../../../core/handleUtils.js";import{ignoreAbortErrors as r,isAborted as o,createResolver as h,createAbortError as c,onAbort as n}from"../../../../core/promiseUtils.js";import{watch as p,syncAndInitial as l}from"../../../../core/reactiveUtils.js";import{property as d}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/Logger.js";import{subclass as m}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as y}from"../../../../core/support/UpdatingHandles.js";import u from"../../../../layers/GraphicsLayer.js";import _ from"../../../../symbols/SimpleFillSymbol.js";import{isPolygon as k,isPolygonGraphic as g}from"./volumeMeasurementGeometryUtils.js";import{VolumeMeasurementShiftTool as G}from"./VolumeMeasurementShiftTool.js";import w from"../../../../widgets/Sketch/SketchViewModel.js";const v=Symbol("interactive-operation");let b=class extends s{constructor(e){super(e),this._updatingHandles=new y,this._onUndoRedo=()=>{this._updateGeometryFromSketchGraphic()}}initialize(){const{analysis:e,analysisViewData:t,view:s}=this;this._graphicsLayer=new u({listMode:"hide",internal:!0,elevationInfo:{mode:"on-the-ground"}}),this._sketchViewModel=new w({layer:this._graphicsLayer,view:s,updateOnGraphicClick:!1,defaultUpdateOptions:{reshapeOptions:{shapeOperation:"none"},enableRotation:!1,enableScaling:!1,enableMoveAllGraphics:!1,enableZ:!1,multipleSelectionEnabled:!1,toggleToolOnClick:!1,tool:"reshape"},polygonSymbol:this._polygonSymbol}),this.addHandles(this._sketchViewModel.on(["undo","redo"],this._onUndoRedo)),this.addHandles(p(()=>({map:s.map,internalGraphicsLayer:this._graphicsLayer,state:this.state}),({map:e,internalGraphicsLayer:t,state:s})=>{switch(S(e,t),s){case"idle":case"sketching":break;case"awaiting-sketch":this.analysisViewData.interactive=!0;break;case"reshaping":this._startReshape();break;case"reshaping-disabled":this._stopOperation(),this._ensureUpdatedSketchGraphic()}},l)),this._shiftTool=new G({analysis:e,view:s,analysisViewData:t}),s.tools.add(this._shiftTool)}destroy(){this._sketchViewModel.destroy(),this._shiftTool.destroy();const e=this._graphicsLayer;this.view.map.remove(e),e.destroy()}get sketchGraphic(){return this._get("sketchGraphic")}set sketchGraphic(e){e!==this._get("sketchGraphic")&&(this._set("sketchGraphic",e),this._updateGeometryFromSketchGraphic())}get state(){const{geometry:e}=this.analysis,{interactive:t,visible:s}=this.analysisViewData;return s?this._sketchViewModel.createGraphic?this._sketchViewModel.createGraphic===this.sketchGraphic?"sketching":"awaiting-sketch":e?t?"reshaping":"reshaping-disabled":"idle":"idle"}get updating(){return this._sketchViewModel.updating||this._updatingHandles.updating}get _polygonSymbol(){return new _({color:[0,0,0,0],outline:{color:[0,0,0,0]}})}place(e){return this._startPlaceOperation(e,(t,s)=>{const i=this.analysis.clone(),h=this._sketchViewModel.on("create",e=>{switch(e.state){case"complete":this._updateGeometryFromSketchGraphic(),this._stopOperation();break;case"cancel":this._stopOperation();break;case"active":this._updateGeometryFromSketchGraphic();break;case"start":this.sketchGraphic=e.graphic}});return this._ensureUpdatedSketchGraphic(),this._updatingHandles.addPromise(r(this._sketchViewModel.create("polygon"))),a(()=>(h.remove(),this._sketchViewModel.cancel(),this._updateGeometryFromSketchGraphic(),this.analysis.valid?o(e)||i.equals(this.analysis)?s():void t():(this._clearGeometry(),s())))})}async _startPlaceOperation(e,t){const s=h(),i=t(()=>s.resolve({}),()=>s.reject(c()));return n(e,()=>this._stopOperation()),this._replaceHandles([i,n(e,()=>this._stopOperation())],v),await s.promise}_startReshape(){this._stopOperation();const e=this._sketchViewModel.on("update",e=>{this._updateGeometryFromSketchGraphic(),"complete"===e.state&&("reshaping"===this.state?this._startReshape():this._stopOperation())});this._replaceHandles(a(()=>{e.remove(),this._sketchViewModel.cancel()}),v);const t=this._ensureUpdatedSketchGraphic();t&&this._updatingHandles.addPromise(r(this._sketchViewModel.update(t,{tool:"reshape"})))}_stopOperation(){this.removeHandles(v)}_ensureUpdatedSketchGraphic(){const{geometry:e}=this.analysis;return k(e)?(this.sketchGraphic??=new t({geometry:e,symbol:this._polygonSymbol}),this.sketchGraphic.geometry=e,this._graphicsLayer.add(this.sketchGraphic),this.sketchGraphic):(this.sketchGraphic=null,null)}_clearGeometry(){this.sketchGraphic=null,this.analysis.geometry=null}_updateGeometryFromSketchGraphic(){const e=this.sketchGraphic;this.analysis.geometry=g(e)?e.geometry:null}_replaceHandles(e,t){this.removeHandles(t),this.addHandles((Array.isArray(e)?e:[e]).filter(i),t)}get test(){}};function S(e,t){t&&(t.parent&&"remove"in t.parent&&t.parent.remove(t),e?.add(t))}e([d({constructOnly:!0})],b.prototype,"analysisViewData",void 0),e([d({constructOnly:!0})],b.prototype,"view",void 0),e([d({constructOnly:!0})],b.prototype,"analysis",void 0),e([d()],b.prototype,"sketchGraphic",null),e([d({nonNullable:!0})],b.prototype,"state",null),e([d()],b.prototype,"updating",null),e([d()],b.prototype,"_polygonSymbol",null),b=e([m("esri.views.3d.analysis.VolumeMeasurement.VolumeMeasurementTool")],b);export{b as default};
5
+ import{__decorate as e}from"tslib";import t from"../../../../Graphic.js";import s from"../../../../core/Accessor.js";import{isSome as i}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{makeHandle as a}from"../../../../core/handleUtils.js";import{ignoreAbortErrors as r,isAborted as o,createResolver as h,createAbortError as n,onAbort as c}from"../../../../core/promiseUtils.js";import{watch as p,syncAndInitial as l}from"../../../../core/reactiveUtils.js";import{property as d}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/Logger.js";import{subclass as m}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as y}from"../../../../core/support/UpdatingHandles.js";import u from"../../../../layers/GraphicsLayer.js";import _ from"../../../../symbols/SimpleFillSymbol.js";import{isPolygon as g,isPolygonGraphic as k}from"./volumeMeasurementGeometryUtils.js";import{VolumeMeasurementShiftTool as G}from"./VolumeMeasurementShiftTool.js";import{makeAllLayerSnappingOptions as w}from"../../../interactive/snapping/allLayerSnapping.js";import v from"../../../../widgets/Sketch/SketchViewModel.js";const b=Symbol("interactive-operation");let S=class extends s{constructor(e){super(e),this._updatingHandles=new y,this._onUndoRedo=()=>{this._updateGeometryFromSketchGraphic()}}initialize(){const{analysis:e,analysisViewData:t,view:s}=this;this._graphicsLayer=new u({listMode:"hide",internal:!0,elevationInfo:{mode:"on-the-ground"}});const i=w(s,{selfEnabled:!0,excludeInternal:!0});this._sketchViewModel=new v({layer:this._graphicsLayer,view:s,updateOnGraphicClick:!1,defaultUpdateOptions:{reshapeOptions:{shapeOperation:"none"},enableRotation:!1,enableScaling:!1,enableMoveAllGraphics:!1,enableZ:!1,multipleSelectionEnabled:!1,toggleToolOnClick:!1,tool:"reshape"},polygonSymbol:this._polygonSymbol,snappingOptions:i.options}),this.addHandles([this._sketchViewModel.on(["undo","redo"],this._onUndoRedo),p(()=>({map:s.map,internalGraphicsLayer:this._graphicsLayer,state:this.state}),({map:e,internalGraphicsLayer:t,state:s})=>{switch(f(e,t),s){case"idle":case"sketching":break;case"awaiting-sketch":this.analysisViewData.interactive=!0;break;case"reshaping":this._startReshape();break;case"reshaping-disabled":this._stopOperation(),this._ensureUpdatedSketchGraphic()}},l),i]),this._shiftTool=new G({analysis:e,view:s,analysisViewData:t}),s.tools.add(this._shiftTool)}destroy(){this._sketchViewModel.destroy(),this._shiftTool.destroy();const e=this._graphicsLayer;this.view.map.remove(e),e.destroy()}get sketchGraphic(){return this._get("sketchGraphic")}set sketchGraphic(e){e!==this._get("sketchGraphic")&&(this._set("sketchGraphic",e),this._updateGeometryFromSketchGraphic())}get state(){const{geometry:e}=this.analysis,{interactive:t,visible:s}=this.analysisViewData;return s?this._sketchViewModel.createGraphic?this._sketchViewModel.createGraphic===this.sketchGraphic?"sketching":"awaiting-sketch":e?t?"reshaping":"reshaping-disabled":"idle":"idle"}get updating(){return this._sketchViewModel.updating||this._updatingHandles.updating}get _polygonSymbol(){return new _({color:[0,0,0,0],outline:{color:[0,0,0,0]}})}place(e){return this._startPlaceOperation(e,(t,s)=>{const i=this.analysis.clone(),h=this._sketchViewModel.on("create",e=>{switch(e.state){case"complete":this._updateGeometryFromSketchGraphic(),this._stopOperation();break;case"cancel":this._stopOperation();break;case"active":this._updateGeometryFromSketchGraphic();break;case"start":this.sketchGraphic=e.graphic}});return this._ensureUpdatedSketchGraphic(),this._updatingHandles.addPromise(r(this._sketchViewModel.create("polygon"))),a(()=>(h.remove(),this._sketchViewModel.cancel(),this._updateGeometryFromSketchGraphic(),this.analysis.valid?o(e)||i.equals(this.analysis)?s():void t():(this._clearGeometry(),s())))})}async _startPlaceOperation(e,t){const s=h(),i=t(()=>s.resolve({}),()=>s.reject(n()));return c(e,()=>this._stopOperation()),this._replaceHandles([i,c(e,()=>this._stopOperation())],b),await s.promise}_startReshape(){this._stopOperation();const e=this._sketchViewModel.on("update",e=>{this._updateGeometryFromSketchGraphic(),"complete"===e.state&&("reshaping"===this.state?this._startReshape():this._stopOperation())});this._replaceHandles(a(()=>{e.remove(),this._sketchViewModel.cancel()}),b);const t=this._ensureUpdatedSketchGraphic();t&&this._updatingHandles.addPromise(r(this._sketchViewModel.update(t,{tool:"reshape"})))}_stopOperation(){this.removeHandles(b)}_ensureUpdatedSketchGraphic(){const{geometry:e}=this.analysis;return g(e)?(this.sketchGraphic??=new t({geometry:e,symbol:this._polygonSymbol}),this.sketchGraphic.geometry=e,this._graphicsLayer.add(this.sketchGraphic),this.sketchGraphic):(this.sketchGraphic=null,null)}_clearGeometry(){this.sketchGraphic=null,this.analysis.geometry=null}_updateGeometryFromSketchGraphic(){const e=this.sketchGraphic;this.analysis.geometry=k(e)?e.geometry:null}_replaceHandles(e,t){this.removeHandles(t),this.addHandles((Array.isArray(e)?e:[e]).filter(i),t)}get test(){}};function f(e,t){t&&(t.parent&&"remove"in t.parent&&t.parent.remove(t),e?.add(t))}e([d({constructOnly:!0})],S.prototype,"analysisViewData",void 0),e([d({constructOnly:!0})],S.prototype,"view",void 0),e([d({constructOnly:!0})],S.prototype,"analysis",void 0),e([d()],S.prototype,"sketchGraphic",null),e([d({nonNullable:!0})],S.prototype,"state",null),e([d()],S.prototype,"updating",null),e([d()],S.prototype,"_polygonSymbol",null),S=e([m("esri.views.3d.analysis.VolumeMeasurement.VolumeMeasurementTool")],S);export{S as default};