@arcgis/core 4.27.0-rc.1 → 4.27.0-rc.3

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 (179) hide show
  1. package/README.md +2 -2
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/{a8565d1c676f3bfbcebb.js → 002fe1ec63ea33e6972d.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{0610691a0c0d9fbbd6d2.js → 013de5c2955801b329b3.js} +1 -1
  5. package/assets/esri/core/workers/chunks/07163dcbb871f927a580.js +1 -0
  6. package/assets/esri/core/workers/chunks/0e46687004392c493c06.js +1 -0
  7. package/assets/esri/core/workers/chunks/0e65e00173b66c7fec2e.js +1 -0
  8. package/assets/esri/core/workers/chunks/1aa8dd317ecd3c41e0ea.js +1 -0
  9. package/assets/esri/core/workers/chunks/21328f3dd26abe84a10d.js +1 -0
  10. package/assets/esri/core/workers/chunks/28c67c98039503b62e6e.js +1 -0
  11. package/assets/esri/core/workers/chunks/2faa8f08f2fdaac3f4af.js +1 -0
  12. package/assets/esri/core/workers/chunks/{0407bf97ad621c89a734.js → 3160af63b860b52db389.js} +1 -1
  13. package/assets/esri/core/workers/chunks/3767b9e7660873b018c2.js +1 -0
  14. package/assets/esri/core/workers/chunks/39ae4b9b766f674bc6f2.js +1 -0
  15. package/assets/esri/core/workers/chunks/45629ff775e77234b227.js +1 -0
  16. package/assets/esri/core/workers/chunks/471f6eba213412b82840.js +1 -0
  17. package/assets/esri/core/workers/chunks/4a4f14a3d8da270059c4.js +1 -0
  18. package/assets/esri/core/workers/chunks/{3e239bfad611985e50fb.js → 50f910797c17c3028521.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{f339db2b599fa9585283.js → 5e6471dd2a08e66b47d0.js} +79 -81
  20. package/assets/esri/core/workers/chunks/642c5a93c0a454bdd115.js +1 -0
  21. package/assets/esri/core/workers/chunks/{14145959a3dab1437818.js → 6627f1bc9ee6b620e3aa.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{170bdbdb4e21bf91a17f.js → 6eaa7a51efde2dd4a5a4.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{d8bd3f498b3fa8153404.js → 6f510f28526c73ab453c.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{2bdc63395c7466ce1641.js → 7053c2f5a958d4c8629b.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{4c35c663528f710e8c78.js → 79cb672c85ea29e8484a.js} +1 -1
  26. package/assets/esri/core/workers/chunks/82939ead43848a13f765.js +1 -0
  27. package/assets/esri/core/workers/chunks/83e3d104886b48f00397.js +1 -0
  28. package/assets/esri/core/workers/chunks/89001ee8d3f69fa03cc1.js +1 -0
  29. package/assets/esri/core/workers/chunks/8b6b963230df56850580.js +1 -0
  30. package/assets/esri/core/workers/chunks/9472184ef1432fc55d6b.js +1 -0
  31. package/assets/esri/core/workers/chunks/{3c5a64a545272f148e93.js → 9621b7d8d951aa881686.js} +1 -1
  32. package/assets/esri/core/workers/chunks/a6ddf80eb324c35076e1.js +1 -0
  33. package/assets/esri/core/workers/chunks/a80a6267d88246ede5d3.js +1 -0
  34. package/assets/esri/core/workers/chunks/{b6e173eddaad4244cb5f.js → b31974524932e638df8c.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{f505ebd4bd3bfb6c790d.js → b6a55fdfe16795ebf02c.js} +1 -1
  36. package/assets/esri/core/workers/chunks/bf9e1fde9f6b2b4f10c0.js +1 -0
  37. package/assets/esri/core/workers/chunks/cfa3b2b1e184681e9af4.js +1 -0
  38. package/assets/esri/core/workers/chunks/{92e7f224a80195e606d6.js → d4ba894a2583f3930a4f.js} +1 -1
  39. package/assets/esri/core/workers/chunks/d5dfd3d693d5e393a542.js +1 -0
  40. package/assets/esri/core/workers/chunks/dabd889e064c4e7807fa.js +1 -0
  41. package/assets/esri/core/workers/chunks/{74fd2059ddda9083cbcc.js → dc6c97a43d642eeaf477.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{2154d395f405be3cd3ba.js → eca0c3d57b3a1e3a14ee.js} +1 -1
  43. package/assets/esri/core/workers/chunks/f35895e03c036d67b3ed.js +1 -0
  44. package/assets/esri/core/workers/chunks/f36697f6aac782007d1a.js +1 -0
  45. package/assets/esri/core/workers/chunks/f52054f27619a98b7bb7.js +1 -0
  46. package/assets/esri/core/workers/chunks/{c6efe2e04ea6a55bb6e3.js → f6e68befe2812b90b40d.js} +1 -1
  47. package/assets/esri/core/workers/chunks/fb7fe307a583b6a22218.js +1 -0
  48. package/assets/esri/core/workers/chunks/fbd3c78ee8e2219a6c7a.js +1 -0
  49. package/assets/esri/core/workers/chunks/ff42585e1b1d0c5497af.js +1 -0
  50. package/assets/esri/images/portal/livestreamvideolayer16.png +0 -0
  51. package/assets/esri/images/portal/{mediaservice16.png → videolayer16.png} +0 -0
  52. package/assets/esri/themes/base/widgets/_Feature.scss +4 -0
  53. package/assets/esri/themes/base/widgets/_FeatureContent.scss +9 -2
  54. package/assets/esri/themes/base/widgets/_FeatureForm.scss +19 -2
  55. package/assets/esri/themes/base/widgets/_ScaleRangeSlider.scss +1 -0
  56. package/assets/esri/themes/dark/main.css +1 -1
  57. package/assets/esri/themes/light/main.css +1 -1
  58. package/assets/esri/themes/light/view.css +1 -1
  59. package/chunks/DefaultMaterial.glsl.js +3 -2
  60. package/chunks/ShadowCastAccumulate.glsl.js +1 -1
  61. package/core/timeUtils.js +1 -1
  62. package/geometry/Mesh.js +1 -1
  63. package/geometry/support/DoubleArray.js +1 -1
  64. package/geometry/support/meshVertexSpaceUtils.js +5 -0
  65. package/interfaces.d.ts +263 -31
  66. package/kernel.js +1 -1
  67. package/layers/VideoLayer.js +1 -1
  68. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  69. package/layers/graphics/controllers/StreamController.js +1 -1
  70. package/layers/graphics/data/QueryEngine.js +1 -1
  71. package/layers/graphics/data/attributeSupport.js +1 -1
  72. package/layers/graphics/editingSupport.js +1 -1
  73. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  74. package/layers/support/editableLayers.js +1 -1
  75. package/layers/support/layerUtils.js +1 -1
  76. package/layers/video/VideoController.js +1 -1
  77. package/layers/video/videoUtils.js +5 -0
  78. package/package.json +1 -1
  79. package/portal/PortalItem.js +1 -1
  80. package/request.js +1 -1
  81. package/rest/support/meshFeatureSet.js +1 -1
  82. package/smartMapping/symbology/flow.js +1 -1
  83. package/statistics/utils.js +1 -1
  84. package/support/requestUtils.js +1 -1
  85. package/support/revision.js +1 -1
  86. package/symbols/cim/CIMSymbolHelper.js +1 -1
  87. package/views/2d/layers/StreamLayerView2D.js +1 -1
  88. package/views/2d/layers/features/sources/StreamSource.js +1 -1
  89. package/views/3d/environment/ChapmanAtmosphereTechnique.js +1 -1
  90. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  91. package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
  92. package/views/3d/layers/I3SMeshView3D.js +1 -1
  93. package/views/3d/layers/I3SMeshWorkerHandle.js +1 -1
  94. package/views/3d/layers/II3SMeshView3D.js +1 -1
  95. package/views/3d/layers/SceneLayerView3D.js +1 -1
  96. package/views/3d/layers/SceneLayerWorker.js +1 -1
  97. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  98. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  99. package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
  100. package/views/3d/layers/i3s/I3SClientNodeLoader.js +1 -1
  101. package/views/3d/layers/i3s/I3SMaterialUtil.js +1 -1
  102. package/views/3d/layers/i3s/I3SOverrides.js +1 -1
  103. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  104. package/views/3d/webgl-engine/core/renderPasses/AllRenderPasses.js +1 -1
  105. package/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js +3 -9
  106. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +12 -9
  107. package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js +10 -10
  108. package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +2 -2
  109. package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js +2 -2
  110. package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +8 -8
  111. package/views/3d/webgl-engine/core/shaderModules/Matrix4sDrawUniform.js +1 -1
  112. package/views/3d/webgl-engine/lib/ShadowHighlight.js +1 -1
  113. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  114. package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
  115. package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
  116. package/views/3d/webgl-engine/materials/pbrUtils.js +1 -1
  117. package/views/3d/webgl-engine/shaders/AtmosphereCompositingTechnique.js +1 -1
  118. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  119. package/views/3d/webgl-engine/shaders/ShadowHighlightTechnique.js +1 -1
  120. package/views/draw/DrawGraphicTool.js +1 -1
  121. package/views/layers/GroupLayerView.js +1 -1
  122. package/webmap/initialViewPropertiesUtils.js +1 -1
  123. package/widgets/Daylight/DaylightViewModel.js +1 -1
  124. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  125. package/widgets/Editor/CreateWorkflow.js +1 -1
  126. package/widgets/Editor/EditorViewModel.js +1 -1
  127. package/widgets/Editor/UpdateFeatureWorkflow.js +1 -1
  128. package/widgets/Editor/UpdateWorkflow.js +1 -1
  129. package/widgets/Editor/UpdateWorkflowData.js +1 -1
  130. package/widgets/Editor/Workflow.js +1 -1
  131. package/widgets/Editor/workflowUtils.js +1 -1
  132. package/widgets/Editor.js +1 -1
  133. package/widgets/Feature/FeatureRelationship/FeatureRelationshipViewModel.js +1 -1
  134. package/widgets/Feature/FeatureRelationship.js +1 -1
  135. package/widgets/Feature/support/featureUtils.js +1 -1
  136. package/widgets/FeatureForm/EditableInput.d.ts +2 -2
  137. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  138. package/widgets/FeatureForm/RelationshipInput.js +1 -1
  139. package/widgets/FeatureForm/css.js +1 -1
  140. package/widgets/FeatureForm.js +1 -1
  141. package/widgets/FeatureTable/FieldColumn.js +1 -1
  142. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
  143. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  144. package/widgets/UtilityNetworkTrace/support/GeometryHandler.js +1 -1
  145. package/widgets/UtilityNetworkTrace/support/ResultAreaHandler.js +1 -1
  146. package/widgets/UtilityNetworkTrace.js +1 -1
  147. package/widgets/UtilityNetworkValidateTopology/UtilityNetworkValidateTopologyViewModel.d.ts +4 -0
  148. package/widgets/UtilityNetworkValidateTopology/UtilityNetworkValidateTopologyViewModel.js +1 -1
  149. package/widgets/UtilityNetworkValidateTopology.d.ts +4 -0
  150. package/widgets/UtilityNetworkValidateTopology.js +1 -1
  151. package/widgets/ValuePicker/ValuePickerBaseComponent.js +1 -1
  152. package/widgets/ValuePicker.js +1 -1
  153. package/widgets/support/geolocationUtils.js +1 -1
  154. package/assets/esri/core/workers/chunks/07651ef8348f702d59ac.js +0 -1
  155. package/assets/esri/core/workers/chunks/0a02ac5628d1739372c6.js +0 -1
  156. package/assets/esri/core/workers/chunks/0fcb8d408696075338e2.js +0 -1
  157. package/assets/esri/core/workers/chunks/16e459b16bdd6e1a821b.js +0 -1
  158. package/assets/esri/core/workers/chunks/1b8074269800b384ecf6.js +0 -1
  159. package/assets/esri/core/workers/chunks/39714837f9d3708e3806.js +0 -1
  160. package/assets/esri/core/workers/chunks/3ba2fcb9110230f8790c.js +0 -1
  161. package/assets/esri/core/workers/chunks/474d9b334812533bab36.js +0 -1
  162. package/assets/esri/core/workers/chunks/5576858f56314afcb4d5.js +0 -1
  163. package/assets/esri/core/workers/chunks/5706edf45402dff279a6.js +0 -1
  164. package/assets/esri/core/workers/chunks/659b7bad7281c0e2aed3.js +0 -1
  165. package/assets/esri/core/workers/chunks/785a6c925f29bc962992.js +0 -1
  166. package/assets/esri/core/workers/chunks/90da1ed112b82712d0ef.js +0 -1
  167. package/assets/esri/core/workers/chunks/9326120c750799eb2d28.js +0 -1
  168. package/assets/esri/core/workers/chunks/99e0cec47e3ef72c1de4.js +0 -1
  169. package/assets/esri/core/workers/chunks/9c0e1e87790424f42d7e.js +0 -1
  170. package/assets/esri/core/workers/chunks/9e66af3b1c70cf25fb32.js +0 -1
  171. package/assets/esri/core/workers/chunks/a1c31bb8c12831539328.js +0 -1
  172. package/assets/esri/core/workers/chunks/b0cda39b53ecd6c44cd0.js +0 -1
  173. package/assets/esri/core/workers/chunks/b5fc6f2044ed047c5afd.js +0 -1
  174. package/assets/esri/core/workers/chunks/c08e03165043df67c11b.js +0 -1
  175. package/assets/esri/core/workers/chunks/c26148d4bfab3b3dfab2.js +0 -1
  176. package/assets/esri/core/workers/chunks/d6b6bb8aecc85d2a3f6b.js +0 -1
  177. package/assets/esri/core/workers/chunks/eeaf8010e38b65a101ac.js +0 -1
  178. package/assets/esri/core/workers/chunks/f235392c56063fbf89c6.js +0 -1
  179. package/assets/esri/core/workers/chunks/fdd0d3616c97e408b104.js +0 -1
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
+ */
5
+ import e from"../support/VideoTimeExtent.js";function n(n){const{duration:t,end:o,start:r,timezone:u="UTC"}=n||{};return"number"!=typeof t?null:new e({duration:t||null,end:"number"==typeof o?new Date(o):null,start:"number"==typeof r?new Date(r):null,timezone:u})}export{n as readVideoTimeExtent};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "4.27.0-rc.1",
3
+ "version": "4.27.0-rc.3",
4
4
  "homepage": "https://js.arcgis.com",
5
5
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
6
6
  "keywords": [
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import{getAssetUrl as t}from"../assets.js";import{id as i}from"../kernel.js";import r from"../core/Error.js";import{JSONSupportMixin as o}from"../core/JSONSupport.js";import{clone as s,fixJson as a}from"../core/lang.js";import n from"../core/Loadable.js";import{unwrapOrThrow as l}from"../core/maybe.js";import{isDataProtocol as p,makeAbsolute as c}from"../core/urlUtils.js";import{property as d}from"../core/accessorSupport/decorators/property.js";import{ensureClass as u}from"../core/accessorSupport/ensureType.js";import{reader as m}from"../core/accessorSupport/decorators/reader.js";import{subclass as h}from"../core/accessorSupport/decorators/subclass.js";import g from"../geometry/Extent.js";import y from"./Portal.js";import w from"./PortalItemResource.js";import v from"./PortalRating.js";var f;const b=new Set(["Map Service","Feature Service","Feature Collection","Scene Service","Image Service","Stream Service","Vector Tile Service","GeoJson","CSV","KML","WFS","WMTS","WMS","Feed"]),k=new Set(["KML","GeoJson","CSV"]);let S=f=class extends(o(n)){static from(e){return u(f,e)}constructor(e){super(e),this.access=null,this.accessInformation=null,this.apiKey=null,this.applicationProxies=null,this.avgRating=null,this.categories=null,this.created=null,this.culture=null,this.description=null,this.extent=null,this.groupCategories=null,this.id=null,this.isOrgItem=!1,this.itemControl=null,this.licenseInfo=null,this.modified=null,this.name=null,this.numComments=null,this.numRatings=null,this.numViews=null,this.owner=null,this.ownerFolder=null,this.portal=null,this.screenshots=null,this.size=null,this.snippet=null,this.sourceJSON=null,this.sourceUrl=null,this.spatialReference=null,this.tags=null,this.title=null,this.type=null,this.typeKeywords=null,this.url=null}destroy(){this.portal=null}get displayName(){const e=this.type,t=this.typeKeywords||[];let i=e;return"Feature Service"===e||"Feature Collection"===e?i=t.includes("Table")?"Table":t.includes("Route Layer")?"Route Layer":t.includes("Markup")?"Markup":"Feature Layer":"Image Service"===e?i=t.includes("Elevation 3D Layer")?"Elevation Layer":t.includes("Tiled Imagery")?"Tiled Imagery Layer":"Imagery Layer":"Scene Service"===e?i="Scene Layer":"Video Service"===e?i="Video Layer":"Scene Package"===e?i="Scene Layer Package":"Stream Service"===e?i="Feature Layer":"Geoprocessing Service"===e?i=t.includes("Web Tool")?"Tool":"Geoprocessing Service":"Geocoding Service"===e?i="Locator":"Geoenrichment Service"===e?i="GeoEnrichment Service":"Microsoft Powerpoint"===e?i="Microsoft PowerPoint":"GeoJson"===e?i="GeoJSON":"Globe Service"===e?i="Globe Layer":"Vector Tile Service"===e?i="Tile Layer":"netCDF"===e?i="NetCDF":"Map Service"===e?i=t.includes("Spatiotemporal")||!t.includes("Hosted Service")&&!t.includes("Tiled")||t.includes("Relational")?"Map Image Layer":"Tile Layer":e&&e.toLowerCase().includes("add in")?i=e.replaceAll(/(add in)/gi,"Add-In"):"datastore catalog service"===e?i="Big Data File Share":"Compact Tile Package"===e?i="Tile Package (tpkx)":"OGCFeatureServer"===e?i="OGC Feature Layer":"web mapping application"===e&&t.includes("configurableApp")?i="Instant App":"Insights Page"===e&&(i="Insights Report"),i}readExtent(e){return e&&e.length?new g(e[0][0],e[0][1],e[1][0],e[1][1]):null}get iconUrl(){const e=this.type&&this.type.toLowerCase()||"",i=this.typeKeywords||[],r="esri/images/portal/",o="16";let s,a=!1,n=!1,l=!1,p=!1,c=!1,d=!1;return e.indexOf("service")>0||"feature collection"===e||"kml"===e||"wms"===e||"wmts"===e||"wfs"===e?(a=i.includes("Hosted Service"),"feature service"===e||"feature collection"===e||"kml"===e||"wfs"===e?(n=i.includes("Table"),l=i.includes("Route Layer"),p=i.includes("Markup"),c=i.includes("Spatiotemporal"),d=i.includes("UtilityNetwork"),s=c&&n?"spatiotemporaltable":n?"table":l?"routelayer":p?"markup":c?"spatiotemporal":a?"featureshosted":d?"utilitynetwork":"features"):s="map service"===e||"wms"===e||"wmts"===e?a||i.includes("Tiled")||"wmts"===e?"maptiles":"mapimages":"scene service"===e?i.includes("Line")?"sceneweblayerline":i.includes("3DObject")?"sceneweblayermultipatch":i.includes("Point")?"sceneweblayerpoint":i.includes("IntegratedMesh")?"sceneweblayermesh":i.includes("PointCloud")?"sceneweblayerpointcloud":i.includes("Polygon")?"sceneweblayerpolygon":i.includes("Building")?"sceneweblayerbuilding":i.includes("Voxel")?"sceneweblayervoxel":"sceneweblayer":"image service"===e?i.includes("Elevation 3D Layer")?"elevationlayer":i.includes("Tiled Imagery")?"tiledimagerylayer":"imagery":"stream service"===e?"streamlayer":"video service"===e?"mediaservice":"vector tile service"===e?"vectortile":"datastore catalog service"===e?"datastorecollection":"geocoding service"===e?"geocodeservice":"geoprocessing service"===e?i.includes("Web Tool")?"tool":"layers":"geodata service"===e?"geodataservice":"layers"):s="web map"===e||"cityengine web scene"===e?"maps":"web scene"===e?i.includes("ViewingMode-Local")?"webscenelocal":"websceneglobal":"web mapping application"===e&&i.includes("configurableApp")?"instantapps":"web mapping application"===e||"mobile application"===e||"application"===e||"operation view"===e||"desktop application"===e?"apps":"map document"===e||"map package"===e||"published map"===e||"scene document"===e||"globe document"===e||"basemap package"===e||"mobile basemap package"===e||"mobile map package"===e||"project package"===e||"project template"===e||"pro map"===e||"layout"===e||"layer"===e&&i.includes("ArcGIS Pro")||"explorer map"===e&&i.indexOf("Explorer Document")?"mapsgray":"service definition"===e||"csv"===e||"shapefile"===e||"cad drawing"===e||"geojson"===e||"netcdf"===e||"administrative report"===e?"datafiles":"explorer add in"===e||"desktop add in"===e||"windows viewer add in"===e||"windows viewer configuration"===e?"appsgray":"360 vr experience"===e?"360vr":"arcgis pro add in"===e||"arcgis pro configuration"===e?"addindesktop":"rule package"===e||"file geodatabase"===e||"sqlite geodatabase"===e||"csv collection"===e||"kml collection"===e||"windows mobile package"===e||"map template"===e||"desktop application template"===e||"gml"===e||"arcpad package"===e||"code sample"===e||"form"===e||"document link"===e||"earth configuration"===e||"operations dashboard add in"===e||"rules package"===e||"image"===e||"workflow manager package"===e||"explorer map"===e&&i.includes("Explorer Mapping Application")||i.includes("Document")?"datafilesgray":"network analysis service"===e||"geoprocessing service"===e||"geodata service"===e||"geometry service"===e||"geoprocessing package"===e||"locator package"===e||"geoprocessing sample"===e||"workflow manager service"===e?"toolsgray":"layer"===e||"layer package"===e||"explorer layer"===e?"layersgray":"scene package"===e?"scenepackage":"mobile scene package"===e?"mobilescenepackage":"tile package"===e||"compact tile package"===e?"tilepackage":"task file"===e?"taskfile":"report template"===e?"report-template":"statistical data collection"===e?"statisticaldatacollection":"insights workbook"===e?"workbook":"insights model"===e?"insightsmodel":"insights page"===e?"insightspage":"insights theme"===e?"insightstheme":"hub initiative"===e?"hubinitiative":"hubpage"===e?"hubpage":"hub event"===e?"hubevent":"hub site application"===e?"hubsite":"hub project"===e?"hubproject":"relational database connection"===e?"relationaldatabaseconnection":"big data file share"===e?"datastorecollection":"image collection"===e?"imagecollection":"style"===e?"style":"desktop style"===e?"desktopstyle":"dashboard"===e?"dashboard":"raster function template"===e?"rasterprocessingtemplate":"vector tile package"===e?"vectortilepackage":"ortho mapping project"===e?"orthomappingproject":"ortho mapping template"===e?"orthomappingtemplate":"solution"===e?"solutions":"geopackage"===e?"geopackage":"deep learning package"===e?"deeplearningpackage":"real time analytic"===e?"realtimeanalytics":"big data analytic"===e?"bigdataanalytics":"feed"===e?"feed":"excalibur imagery project"===e?"excaliburimageryproject":"notebook"===e?"notebook":"storymap"===e?"storymap":"survey123 add in"===e?"survey123addin":"mission"===e?"mission":"mission report"===e?"missionreport":"quickcapture project"===e?"quickcaptureproject":"pro report"===e?"proreport":"pro report template"===e?"proreporttemplate":"urban model"===e?"urbanmodel":"web experience"===e?"experiencebuilder":"web experience template"===e?"webexperiencetemplate":"experience builder widget"===e?"experiencebuilderwidget":"experience builder widget package"===e?"experiencebuilderwidgetpackage":"workflow"===e?"workflow":"insights script"===e?"insightsscript":"kernel gateway connection"===e?"kernelgatewayconnection":"hub initiative template"===e?"hubinitiativetemplate":"storymap theme"===e?"storymaptheme":"knowledge graph"===e?"knowledgegraph":"native application"===e?"nativeapp":"native application installer"===e?"nativeappinstaller":"link chart"===e?"linkchart":"investigation"===e?"investigation":"ogcfeatureserver"===e?"features":"pro project"===e?"proproject":"insights workbook package"===e?"insightsworkbookpackage":"apache parquet"===e?"apacheparquet":"notebook code snippets"===e||"notebook code snippet library"===e?"notebookcodesnippets":"suitability model"===e?"suitabilitymodel":"esri classifier definition"===e?"classifierdefinition":"esri classification schema"===e?"classificationschema":"insights data engineering workbook"===e?"dataengineeringworkbook":"insights data engineering model"===e?"dataengineeringmodel":"deep learning studio project"===e?"deeplearningproject":"discussion"===e?"discussion":"allsource project"===e?"allsourceproject":"api key"===e?"apikey":"data pipeline"===e?"datapipelines":"maps",s?t(r+s+o+".png"):null}get isLayer(){return null!=this.type&&b.has(this.type)}get itemCdnUrl(){let e=this.itemUrl;return e&&i&&!i.findCredential(e)&&(e=i._normalizeAGOLorgDomain(e),e=e.replace(/^https?:\/\/www\.arcgis\.com/,"https://cdn.arcgis.com"),e=e.replace(/^https?:\/\/devext\.arcgis\.com/,"https://cdndev.arcgis.com"),e=e.replace(/^https?:\/\/qaext\.arcgis\.com/,"https://cdnqa.arcgis.com")),e}get itemPageUrl(){const e=this.portal?.itemPageUrl;return e&&this.id?`${e}?id=${this.id}`:null}get itemUrl(){const e=this.portal?.restUrl;return e&&this.id?`${e}/content/items/${this.id}`:null}get thumbnailUrl(){const e=this.itemUrl,t=this.thumbnail;return e&&t?this.portal?.normalizeUrl(`${e}/info/${t}?f=json`)??null:null}get userItemUrl(){const e=this.get("portal.restUrl");if(!e)return null;const t=this.owner||this.get("portal.user.username");if(!t)return null;return`${e}/content/users/${this.ownerFolder?`${t}/${this.ownerFolder}`:t}/items/${this.id}`}load(e){const t=this.portal??(this.portal=y.getDefault()),i=t.load(e).then((()=>this.sourceJSON?this.sourceJSON:this.id&&this.itemUrl?t.request(this.itemUrl,{signal:null!=e?e.signal:null,query:{token:this.apiKey}}):{})).then((e=>{this.sourceJSON=e,this.read(e)}));return this.addResolvingPromise(i),Promise.resolve(this)}async addRating(e){const t={method:"post",query:{}};return e instanceof v&&(e=e.rating),null==e||isNaN(e)||"number"!=typeof e||(t.query.rating=e),this.portal?(await this.portal.request(this.itemUrl+"/addRating",t),new v({rating:e,created:new Date})):null}clone(){const e={access:this.access,accessInformation:this.accessInformation,applicationProxies:s(this.applicationProxies),avgRating:this.avgRating,categories:s(this.categories),created:s(this.created),culture:this.culture,description:this.description,extent:s(this.extent),groupCategories:s(this.groupCategories),id:this.id,itemControl:this.itemControl,licenseInfo:this.licenseInfo,modified:s(this.modified),name:this.name,numComments:this.numComments,numRatings:this.numRatings,numViews:this.numViews,owner:this.owner,ownerFolder:this.ownerFolder,portal:this.portal,screenshots:s(this.screenshots),size:this.size,snippet:this.snippet,sourceUrl:this.sourceUrl,spatialReference:this.spatialReference,tags:s(this.tags),thumbnail:this.thumbnail,title:this.title,type:this.type,typeKeywords:s(this.typeKeywords),url:this.url};this.loaded&&(e.loadStatus="loaded");const t=new f({sourceJSON:this.sourceJSON}).set(e);return t._set("isOrgItem",this.isOrgItem),t}createPostQuery(){const e=this.toJSON();for(const i of["tags","typeKeywords","categories"])e[i]=e[i]?.join(", ");const{extent:t}=e;return t&&(e.extent=JSON.stringify(t)),e}async deleteRating(){await l(this.portal).request(this.itemUrl+"/deleteRating",{method:"post"})}fetchData(e="json",t){return l(this.portal).request(this.itemUrl+"/data",{responseType:e,...t,query:{token:this.apiKey}})}async fetchRating(e){const t=await l(this.portal).request(this.itemUrl+"/rating",{query:{token:this.apiKey},...e});return null!=t.rating?(t.created=new Date(t.created),new v(t)):null}fetchRelatedItems(e,t){return l(this.portal).requestToTypedArray(this.itemUrl+"/relatedItems",{query:{...e,token:this.apiKey},...t},f)}getThumbnailUrl(e){let t=this.thumbnailUrl;return t&&e&&(t+=`&w=${e}`),t}reload(){return l(this.portal).request(this.itemUrl??"",{cacheBust:!0,query:{token:this.apiKey}}).then((e=>(this.sourceJSON=e,this.read(e),this)))}update(e){return this.id?this.load().then((()=>l(this.portal).signIn())).then((()=>{const t=e&&e.data,i={method:"post"};i.query=this.createPostQuery();for(const e in i.query)null===i.query[e]&&(i.query[e]="");return i.query.clearEmptyFields=!0,null!=t&&("string"==typeof t?i.query.text=t:"object"==typeof t&&(i.query.text=JSON.stringify(t))),this.portal.request(`${this.userItemUrl}/update`,i).then((()=>this.reload()))})):Promise.reject(new r("portal:item-does-not-exist","The item does not exist yet and cannot be updated"))}async copy(e){if(!this.id)throw new r("portal:item-does-not-exist","The item does not exist yet");await this.load();const{portal:t,itemUrl:i}=this;await l(t).signIn();const{copyResources:o,folder:s,tags:a,title:n}=e||{},p={method:"post",query:{copyPrivateResources:"all"===o,folder:"string"==typeof s?s:s?.id,includeResources:!!o,tags:a?.join(","),title:n}},{itemId:c}=await t.request(`${i}/copy`,p);return new f({id:c,portal:t})}updateThumbnail(e){return this.id?this.load().then((()=>this.portal.signIn())).then((()=>{const t=e.thumbnail,i=e.filename,r={method:"post"};if("string"==typeof t)p(t)?r.query={data:t}:r.query={url:c(t)},null!=i&&(r.query.filename=i);else{const e=new FormData;null!=i?e.append("file",t,i):e.append("file",t),r.body=e}return this.portal.request(`${this.userItemUrl}/updateThumbnail`,r).then((()=>this.reload()))})):Promise.reject(new r("portal:item-does-not-exist","The item does not exist yet and cannot be updated"))}async fetchResources(e={},t){const{fetchResources:i}=await import("./support/resourceUtils.js");return i(this,e,t)}async addResource(e,t,i){const{addOrUpdateResource:r}=await import("./support/resourceUtils.js");return e.portalItem=this,r(e,"add",t,i)}async removeResource(e,t){const{removeResource:i}=await import("./support/resourceUtils.js");if(e.portalItem&&e.portalItem.itemUrl!==this.itemUrl)throw new r("removeresource:portal-item-mismatch","The portal item associated with the provided resource does not match the item");return i(this,e,t)}async removeAllResources(e){const{removeAllResources:t}=await import("./support/resourceUtils.js");return t(this,e)}resourceFromPath(e){return new w({portalItem:this,path:e})}toJSON(){const e=this.extent,t={accessInformation:this.accessInformation,categories:s(this.categories),created:this.created&&this.created.getTime(),description:this.description,extent:e&&[[e.xmin,e.ymin],[e.xmax,e.ymax]],id:this.id,isOrgItem:this.isOrgItem,licenseInfo:this.licenseInfo,modified:this.modified&&this.modified.getTime(),name:this.name,owner:this.owner,ownerFolder:this.ownerFolder,snippet:this.snippet,sourceUrl:this.sourceUrl,spatialReference:this.spatialReference,tags:s(this.tags),thumbnail:this.thumbnail,title:this.title,type:this.type,typeKeywords:s(this.typeKeywords),url:this.url};return a(t)}static fromJSON(e){if(!e)return null;if(e.declaredClass)throw new Error("JSON object is already hydrated");return new f({sourceJSON:e})}_getPostQuery(){const e=this.toJSON();for(const t in e)"tags"===t&&null!==e[t]&&(e[t]=e[t].join(", ")),"typeKeywords"===t&&null!==e[t]&&(e[t]=e[t].join(", ")),"extent"===t&&e[t]&&(e[t]=JSON.stringify(e[t]));return e}};e([d({type:["private","shared","org","public"]})],S.prototype,"access",void 0),e([d()],S.prototype,"accessInformation",void 0),e([d({type:String})],S.prototype,"apiKey",void 0),e([d({json:{read:{source:"appProxies"}}})],S.prototype,"applicationProxies",void 0),e([d()],S.prototype,"avgRating",void 0),e([d()],S.prototype,"categories",void 0),e([d({type:Date})],S.prototype,"created",void 0),e([d()],S.prototype,"culture",void 0),e([d()],S.prototype,"description",void 0),e([d({readOnly:!0})],S.prototype,"displayName",null),e([d({type:g})],S.prototype,"extent",void 0),e([m("extent")],S.prototype,"readExtent",null),e([d()],S.prototype,"groupCategories",void 0),e([d({readOnly:!0})],S.prototype,"iconUrl",null),e([d()],S.prototype,"id",void 0),e([d({readOnly:!0})],S.prototype,"isLayer",null),e([d({type:Boolean,readOnly:!0})],S.prototype,"isOrgItem",void 0),e([d()],S.prototype,"itemControl",void 0),e([d({readOnly:!0})],S.prototype,"itemPageUrl",null),e([d({readOnly:!0})],S.prototype,"itemUrl",null),e([d()],S.prototype,"licenseInfo",void 0),e([d({type:Date})],S.prototype,"modified",void 0),e([d()],S.prototype,"name",void 0),e([d()],S.prototype,"numComments",void 0),e([d()],S.prototype,"numRatings",void 0),e([d()],S.prototype,"numViews",void 0),e([d()],S.prototype,"owner",void 0),e([d()],S.prototype,"ownerFolder",void 0),e([d({type:y})],S.prototype,"portal",void 0),e([d()],S.prototype,"screenshots",void 0),e([d()],S.prototype,"size",void 0),e([d()],S.prototype,"snippet",void 0),e([d()],S.prototype,"sourceJSON",void 0),e([d({type:String})],S.prototype,"sourceUrl",void 0),e([d({type:String})],S.prototype,"spatialReference",void 0),e([d()],S.prototype,"tags",void 0),e([d()],S.prototype,"thumbnail",void 0),e([d({readOnly:!0})],S.prototype,"thumbnailUrl",null),e([d()],S.prototype,"title",void 0),e([d()],S.prototype,"type",void 0),e([d()],S.prototype,"typeKeywords",void 0),e([d({type:String,json:{read(e,t){if(k.has(t.type)){const t=this.portal?.restUrl;e||=t&&this.id?`${t}/content/items/${this.id}/data`:null}return e}}})],S.prototype,"url",void 0),e([d({readOnly:!0})],S.prototype,"userItemUrl",null),S=f=e([h("esri.portal.PortalItem")],S);const x=S;export{x as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import{getAssetUrl as t}from"../assets.js";import{id as i}from"../kernel.js";import r from"../core/Error.js";import{JSONSupportMixin as o}from"../core/JSONSupport.js";import{clone as s,fixJson as a}from"../core/lang.js";import n from"../core/Loadable.js";import{unwrapOrThrow as l}from"../core/maybe.js";import{isDataProtocol as p,makeAbsolute as c}from"../core/urlUtils.js";import{property as d}from"../core/accessorSupport/decorators/property.js";import{ensureClass as u}from"../core/accessorSupport/ensureType.js";import{reader as m}from"../core/accessorSupport/decorators/reader.js";import{subclass as h}from"../core/accessorSupport/decorators/subclass.js";import g from"../geometry/Extent.js";import y from"./Portal.js";import v from"./PortalItemResource.js";import w from"./PortalRating.js";var f;const b=new Set(["Map Service","Feature Service","Feature Collection","Scene Service","Image Service","Stream Service","Vector Tile Service","GeoJson","CSV","KML","WFS","WMTS","WMS","Feed"]),k=new Set(["KML","GeoJson","CSV"]);let S=f=class extends(o(n)){static from(e){return u(f,e)}constructor(e){super(e),this.access=null,this.accessInformation=null,this.apiKey=null,this.applicationProxies=null,this.avgRating=null,this.categories=null,this.created=null,this.culture=null,this.description=null,this.extent=null,this.groupCategories=null,this.id=null,this.isOrgItem=!1,this.itemControl=null,this.licenseInfo=null,this.modified=null,this.name=null,this.numComments=null,this.numRatings=null,this.numViews=null,this.owner=null,this.ownerFolder=null,this.portal=null,this.screenshots=null,this.size=null,this.snippet=null,this.sourceJSON=null,this.sourceUrl=null,this.spatialReference=null,this.tags=null,this.title=null,this.type=null,this.typeKeywords=null,this.url=null}destroy(){this.portal=null}get displayName(){const e=this.type,t=this.typeKeywords||[];let i=e;return"Feature Service"===e||"Feature Collection"===e?i=t.includes("Table")?"Table":t.includes("Route Layer")?"Route Layer":t.includes("Markup")?"Markup":"Feature Layer":"Image Service"===e?i=t.includes("Elevation 3D Layer")?"Elevation Layer":t.includes("Tiled Imagery")?"Tiled Imagery Layer":"Imagery Layer":"Scene Service"===e?i="Scene Layer":"Video Service"===e?i="Video Layer":"Scene Package"===e?i="Scene Layer Package":"Stream Service"===e?i="Feature Layer":"Geoprocessing Service"===e?i=t.includes("Web Tool")?"Tool":"Geoprocessing Service":"Geocoding Service"===e?i="Locator":"Geoenrichment Service"===e?i="GeoEnrichment Service":"Microsoft Powerpoint"===e?i="Microsoft PowerPoint":"GeoJson"===e?i="GeoJSON":"Globe Service"===e?i="Globe Layer":"Vector Tile Service"===e?i="Tile Layer":"netCDF"===e?i="NetCDF":"Map Service"===e?i=t.includes("Spatiotemporal")||!t.includes("Hosted Service")&&!t.includes("Tiled")||t.includes("Relational")?"Map Image Layer":"Tile Layer":e&&e.toLowerCase().includes("add in")?i=e.replaceAll(/(add in)/gi,"Add-In"):"datastore catalog service"===e?i="Big Data File Share":"Compact Tile Package"===e?i="Tile Package (tpkx)":"OGCFeatureServer"===e?i="OGC Feature Layer":"web mapping application"===e&&t.includes("configurableApp")?i="Instant App":"Insights Page"===e&&(i="Insights Report"),i}readExtent(e){return e&&e.length?new g(e[0][0],e[0][1],e[1][0],e[1][1]):null}get iconUrl(){const e=this.type&&this.type.toLowerCase()||"",i=this.typeKeywords||[],r="esri/images/portal/",o="16";let s,a=!1,n=!1,l=!1,p=!1,c=!1,d=!1;return e.indexOf("service")>0||"feature collection"===e||"kml"===e||"wms"===e||"wmts"===e||"wfs"===e?(a=i.includes("Hosted Service"),"feature service"===e||"feature collection"===e||"kml"===e||"wfs"===e?(n=i.includes("Table"),l=i.includes("Route Layer"),p=i.includes("Markup"),c=i.includes("Spatiotemporal"),d=i.includes("UtilityNetwork"),s=c&&n?"spatiotemporaltable":n?"table":l?"routelayer":p?"markup":c?"spatiotemporal":a?"featureshosted":d?"utilitynetwork":"features"):s="map service"===e||"wms"===e||"wmts"===e?a||i.includes("Tiled")||"wmts"===e?"maptiles":"mapimages":"scene service"===e?i.includes("Line")?"sceneweblayerline":i.includes("3DObject")?"sceneweblayermultipatch":i.includes("Point")?"sceneweblayerpoint":i.includes("IntegratedMesh")?"sceneweblayermesh":i.includes("PointCloud")?"sceneweblayerpointcloud":i.includes("Polygon")?"sceneweblayerpolygon":i.includes("Building")?"sceneweblayerbuilding":i.includes("Voxel")?"sceneweblayervoxel":"sceneweblayer":"image service"===e?i.includes("Elevation 3D Layer")?"elevationlayer":i.includes("Tiled Imagery")?"tiledimagerylayer":"imagery":"stream service"===e?"streamlayer":"video service"===e?i.includes("Live Stream")?"livestreamvideolayer":"videolayer":"vector tile service"===e?"vectortile":"datastore catalog service"===e?"datastorecollection":"geocoding service"===e?"geocodeservice":"geoprocessing service"===e?i.includes("Web Tool")?"tool":"layers":"geodata service"===e?"geodataservice":"layers"):s="web map"===e||"cityengine web scene"===e?"maps":"web scene"===e?i.includes("ViewingMode-Local")?"webscenelocal":"websceneglobal":"web mapping application"===e&&i.includes("configurableApp")?"instantapps":"web mapping application"===e||"mobile application"===e||"application"===e||"operation view"===e||"desktop application"===e?"apps":"map document"===e||"map package"===e||"published map"===e||"scene document"===e||"globe document"===e||"basemap package"===e||"mobile basemap package"===e||"mobile map package"===e||"project package"===e||"project template"===e||"pro map"===e||"layout"===e||"layer"===e&&i.includes("ArcGIS Pro")||"explorer map"===e&&i.indexOf("Explorer Document")?"mapsgray":"service definition"===e||"csv"===e||"shapefile"===e||"cad drawing"===e||"geojson"===e||"netcdf"===e||"administrative report"===e?"datafiles":"explorer add in"===e||"desktop add in"===e||"windows viewer add in"===e||"windows viewer configuration"===e?"appsgray":"360 vr experience"===e?"360vr":"arcgis pro add in"===e||"arcgis pro configuration"===e?"addindesktop":"rule package"===e||"file geodatabase"===e||"sqlite geodatabase"===e||"csv collection"===e||"kml collection"===e||"windows mobile package"===e||"map template"===e||"desktop application template"===e||"gml"===e||"arcpad package"===e||"code sample"===e||"form"===e||"document link"===e||"earth configuration"===e||"operations dashboard add in"===e||"rules package"===e||"image"===e||"workflow manager package"===e||"explorer map"===e&&i.includes("Explorer Mapping Application")||i.includes("Document")?"datafilesgray":"network analysis service"===e||"geoprocessing service"===e||"geodata service"===e||"geometry service"===e||"geoprocessing package"===e||"locator package"===e||"geoprocessing sample"===e||"workflow manager service"===e?"toolsgray":"layer"===e||"layer package"===e||"explorer layer"===e?"layersgray":"scene package"===e?"scenepackage":"mobile scene package"===e?"mobilescenepackage":"tile package"===e||"compact tile package"===e?"tilepackage":"task file"===e?"taskfile":"report template"===e?"report-template":"statistical data collection"===e?"statisticaldatacollection":"insights workbook"===e?"workbook":"insights model"===e?"insightsmodel":"insights page"===e?"insightspage":"insights theme"===e?"insightstheme":"hub initiative"===e?"hubinitiative":"hubpage"===e?"hubpage":"hub event"===e?"hubevent":"hub site application"===e?"hubsite":"hub project"===e?"hubproject":"relational database connection"===e?"relationaldatabaseconnection":"big data file share"===e?"datastorecollection":"image collection"===e?"imagecollection":"style"===e?"style":"desktop style"===e?"desktopstyle":"dashboard"===e?"dashboard":"raster function template"===e?"rasterprocessingtemplate":"vector tile package"===e?"vectortilepackage":"ortho mapping project"===e?"orthomappingproject":"ortho mapping template"===e?"orthomappingtemplate":"solution"===e?"solutions":"geopackage"===e?"geopackage":"deep learning package"===e?"deeplearningpackage":"real time analytic"===e?"realtimeanalytics":"big data analytic"===e?"bigdataanalytics":"feed"===e?"feed":"excalibur imagery project"===e?"excaliburimageryproject":"notebook"===e?"notebook":"storymap"===e?"storymap":"survey123 add in"===e?"survey123addin":"mission"===e?"mission":"mission report"===e?"missionreport":"quickcapture project"===e?"quickcaptureproject":"pro report"===e?"proreport":"pro report template"===e?"proreporttemplate":"urban model"===e?"urbanmodel":"web experience"===e?"experiencebuilder":"web experience template"===e?"webexperiencetemplate":"experience builder widget"===e?"experiencebuilderwidget":"experience builder widget package"===e?"experiencebuilderwidgetpackage":"workflow"===e?"workflow":"insights script"===e?"insightsscript":"kernel gateway connection"===e?"kernelgatewayconnection":"hub initiative template"===e?"hubinitiativetemplate":"storymap theme"===e?"storymaptheme":"knowledge graph"===e?"knowledgegraph":"native application"===e?"nativeapp":"native application installer"===e?"nativeappinstaller":"link chart"===e?"linkchart":"investigation"===e?"investigation":"ogcfeatureserver"===e?"features":"pro project"===e?"proproject":"insights workbook package"===e?"insightsworkbookpackage":"apache parquet"===e?"apacheparquet":"notebook code snippets"===e||"notebook code snippet library"===e?"notebookcodesnippets":"suitability model"===e?"suitabilitymodel":"esri classifier definition"===e?"classifierdefinition":"esri classification schema"===e?"classificationschema":"insights data engineering workbook"===e?"dataengineeringworkbook":"insights data engineering model"===e?"dataengineeringmodel":"deep learning studio project"===e?"deeplearningproject":"discussion"===e?"discussion":"allsource project"===e?"allsourceproject":"api key"===e?"apikey":"data pipeline"===e?"datapipelines":"maps",s?t(r+s+o+".png"):null}get isLayer(){return null!=this.type&&b.has(this.type)}get itemCdnUrl(){let e=this.itemUrl;return e&&i&&!i.findCredential(e)&&(e=i._normalizeAGOLorgDomain(e),e=e.replace(/^https?:\/\/www\.arcgis\.com/,"https://cdn.arcgis.com"),e=e.replace(/^https?:\/\/devext\.arcgis\.com/,"https://cdndev.arcgis.com"),e=e.replace(/^https?:\/\/qaext\.arcgis\.com/,"https://cdnqa.arcgis.com")),e}get itemPageUrl(){const e=this.portal?.itemPageUrl;return e&&this.id?`${e}?id=${this.id}`:null}get itemUrl(){const e=this.portal?.restUrl;return e&&this.id?`${e}/content/items/${this.id}`:null}get thumbnailUrl(){const e=this.itemUrl,t=this.thumbnail;return e&&t?this.portal?.normalizeUrl(`${e}/info/${t}?f=json`)??null:null}get userItemUrl(){const e=this.get("portal.restUrl");if(!e)return null;const t=this.owner||this.get("portal.user.username");if(!t)return null;return`${e}/content/users/${this.ownerFolder?`${t}/${this.ownerFolder}`:t}/items/${this.id}`}load(e){const t=this.portal??(this.portal=y.getDefault()),i=t.load(e).then((()=>this.sourceJSON?this.sourceJSON:this.id&&this.itemUrl?t.request(this.itemUrl,{signal:null!=e?e.signal:null,query:{token:this.apiKey}}):{})).then((e=>{this.sourceJSON=e,this.read(e)}));return this.addResolvingPromise(i),Promise.resolve(this)}async addRating(e){const t={method:"post",query:{}};return e instanceof w&&(e=e.rating),null==e||isNaN(e)||"number"!=typeof e||(t.query.rating=e),this.portal?(await this.portal.request(this.itemUrl+"/addRating",t),new w({rating:e,created:new Date})):null}clone(){const e={access:this.access,accessInformation:this.accessInformation,applicationProxies:s(this.applicationProxies),avgRating:this.avgRating,categories:s(this.categories),created:s(this.created),culture:this.culture,description:this.description,extent:s(this.extent),groupCategories:s(this.groupCategories),id:this.id,itemControl:this.itemControl,licenseInfo:this.licenseInfo,modified:s(this.modified),name:this.name,numComments:this.numComments,numRatings:this.numRatings,numViews:this.numViews,owner:this.owner,ownerFolder:this.ownerFolder,portal:this.portal,screenshots:s(this.screenshots),size:this.size,snippet:this.snippet,sourceUrl:this.sourceUrl,spatialReference:this.spatialReference,tags:s(this.tags),thumbnail:this.thumbnail,title:this.title,type:this.type,typeKeywords:s(this.typeKeywords),url:this.url};this.loaded&&(e.loadStatus="loaded");const t=new f({sourceJSON:this.sourceJSON}).set(e);return t._set("isOrgItem",this.isOrgItem),t}createPostQuery(){const e=this.toJSON();for(const i of["tags","typeKeywords","categories"])e[i]=e[i]?.join(", ");const{extent:t}=e;return t&&(e.extent=JSON.stringify(t)),e}async deleteRating(){await l(this.portal).request(this.itemUrl+"/deleteRating",{method:"post"})}fetchData(e="json",t){return l(this.portal).request(this.itemUrl+"/data",{responseType:e,...t,query:{token:this.apiKey}})}async fetchRating(e){const t=await l(this.portal).request(this.itemUrl+"/rating",{query:{token:this.apiKey},...e});return null!=t.rating?(t.created=new Date(t.created),new w(t)):null}fetchRelatedItems(e,t){return l(this.portal).requestToTypedArray(this.itemUrl+"/relatedItems",{query:{...e,token:this.apiKey},...t},f)}getThumbnailUrl(e){let t=this.thumbnailUrl;return t&&e&&(t+=`&w=${e}`),t}reload(){return l(this.portal).request(this.itemUrl??"",{cacheBust:!0,query:{token:this.apiKey}}).then((e=>(this.sourceJSON=e,this.read(e),this)))}update(e){return this.id?this.load().then((()=>l(this.portal).signIn())).then((()=>{const t=e&&e.data,i={method:"post"};i.query=this.createPostQuery();for(const e in i.query)null===i.query[e]&&(i.query[e]="");return i.query.clearEmptyFields=!0,null!=t&&("string"==typeof t?i.query.text=t:"object"==typeof t&&(i.query.text=JSON.stringify(t))),this.portal.request(`${this.userItemUrl}/update`,i).then((()=>this.reload()))})):Promise.reject(new r("portal:item-does-not-exist","The item does not exist yet and cannot be updated"))}async copy(e){if(!this.id)throw new r("portal:item-does-not-exist","The item does not exist yet");await this.load();const{portal:t,itemUrl:i}=this;await l(t).signIn();const{copyResources:o,folder:s,tags:a,title:n}=e||{},p={method:"post",query:{copyPrivateResources:"all"===o,folder:"string"==typeof s?s:s?.id,includeResources:!!o,tags:a?.join(","),title:n}},{itemId:c}=await t.request(`${i}/copy`,p);return new f({id:c,portal:t})}updateThumbnail(e){return this.id?this.load().then((()=>this.portal.signIn())).then((()=>{const t=e.thumbnail,i=e.filename,r={method:"post"};if("string"==typeof t)p(t)?r.query={data:t}:r.query={url:c(t)},null!=i&&(r.query.filename=i);else{const e=new FormData;null!=i?e.append("file",t,i):e.append("file",t),r.body=e}return this.portal.request(`${this.userItemUrl}/updateThumbnail`,r).then((()=>this.reload()))})):Promise.reject(new r("portal:item-does-not-exist","The item does not exist yet and cannot be updated"))}async fetchResources(e={},t){const{fetchResources:i}=await import("./support/resourceUtils.js");return i(this,e,t)}async addResource(e,t,i){const{addOrUpdateResource:r}=await import("./support/resourceUtils.js");return e.portalItem=this,r(e,"add",t,i)}async removeResource(e,t){const{removeResource:i}=await import("./support/resourceUtils.js");if(e.portalItem&&e.portalItem.itemUrl!==this.itemUrl)throw new r("removeresource:portal-item-mismatch","The portal item associated with the provided resource does not match the item");return i(this,e,t)}async removeAllResources(e){const{removeAllResources:t}=await import("./support/resourceUtils.js");return t(this,e)}resourceFromPath(e){return new v({portalItem:this,path:e})}toJSON(){const e=this.extent,t={accessInformation:this.accessInformation,categories:s(this.categories),created:this.created&&this.created.getTime(),description:this.description,extent:e&&[[e.xmin,e.ymin],[e.xmax,e.ymax]],id:this.id,isOrgItem:this.isOrgItem,licenseInfo:this.licenseInfo,modified:this.modified&&this.modified.getTime(),name:this.name,owner:this.owner,ownerFolder:this.ownerFolder,snippet:this.snippet,sourceUrl:this.sourceUrl,spatialReference:this.spatialReference,tags:s(this.tags),thumbnail:this.thumbnail,title:this.title,type:this.type,typeKeywords:s(this.typeKeywords),url:this.url};return a(t)}static fromJSON(e){if(!e)return null;if(e.declaredClass)throw new Error("JSON object is already hydrated");return new f({sourceJSON:e})}_getPostQuery(){const e=this.toJSON();for(const t in e)"tags"===t&&null!==e[t]&&(e[t]=e[t].join(", ")),"typeKeywords"===t&&null!==e[t]&&(e[t]=e[t].join(", ")),"extent"===t&&e[t]&&(e[t]=JSON.stringify(e[t]));return e}};e([d({type:["private","shared","org","public"]})],S.prototype,"access",void 0),e([d()],S.prototype,"accessInformation",void 0),e([d({type:String})],S.prototype,"apiKey",void 0),e([d({json:{read:{source:"appProxies"}}})],S.prototype,"applicationProxies",void 0),e([d()],S.prototype,"avgRating",void 0),e([d()],S.prototype,"categories",void 0),e([d({type:Date})],S.prototype,"created",void 0),e([d()],S.prototype,"culture",void 0),e([d()],S.prototype,"description",void 0),e([d({readOnly:!0})],S.prototype,"displayName",null),e([d({type:g})],S.prototype,"extent",void 0),e([m("extent")],S.prototype,"readExtent",null),e([d()],S.prototype,"groupCategories",void 0),e([d({readOnly:!0})],S.prototype,"iconUrl",null),e([d()],S.prototype,"id",void 0),e([d({readOnly:!0})],S.prototype,"isLayer",null),e([d({type:Boolean,readOnly:!0})],S.prototype,"isOrgItem",void 0),e([d()],S.prototype,"itemControl",void 0),e([d({readOnly:!0})],S.prototype,"itemPageUrl",null),e([d({readOnly:!0})],S.prototype,"itemUrl",null),e([d()],S.prototype,"licenseInfo",void 0),e([d({type:Date})],S.prototype,"modified",void 0),e([d()],S.prototype,"name",void 0),e([d()],S.prototype,"numComments",void 0),e([d()],S.prototype,"numRatings",void 0),e([d()],S.prototype,"numViews",void 0),e([d()],S.prototype,"owner",void 0),e([d()],S.prototype,"ownerFolder",void 0),e([d({type:y})],S.prototype,"portal",void 0),e([d()],S.prototype,"screenshots",void 0),e([d()],S.prototype,"size",void 0),e([d()],S.prototype,"snippet",void 0),e([d()],S.prototype,"sourceJSON",void 0),e([d({type:String})],S.prototype,"sourceUrl",void 0),e([d({type:String})],S.prototype,"spatialReference",void 0),e([d()],S.prototype,"tags",void 0),e([d()],S.prototype,"thumbnail",void 0),e([d({readOnly:!0})],S.prototype,"thumbnailUrl",null),e([d()],S.prototype,"title",void 0),e([d()],S.prototype,"type",void 0),e([d()],S.prototype,"typeKeywords",void 0),e([d({type:String,json:{read(e,t){if(k.has(t.type)){const t=this.portal?.restUrl;e||=t&&this.id?`${t}/content/items/${this.id}/data`:null}return e}}})],S.prototype,"url",void 0),e([d({readOnly:!0})],S.prototype,"userItemUrl",null),S=f=e([h("esri.portal.PortalItem")],S);const x=S;export{x as default};
package/request.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"./config.js";import{id as t}from"./kernel.js";import r from"./core/Error.js";import has from"./core/has.js";import{clone as s}from"./core/lang.js";import{onAbort as o,isAbortError as a,createAbortError as n,isAborted as i}from"./core/promiseUtils.js";import{queryToObject as l,isDataProtocol as u,isBlobProtocol as c,normalize as d,getInterceptor as p,isTrustedServer as h,getOrigin as m,toHTTPS as f,addQueryParameter as y,objectToQuery as w,getProxyRule as g,getProxyUrl as b,addQueryParameters as q,hasSameOrigin as T,getAppUrl as k,addProxyRule as S}from"./core/urlUtils.js";import{isSecureProxyService as O}from"./portal/support/urlUtils.js";import{supportsApiKey as C}from"./support/apiKeyUtils.js";import{registerNoCorsDomains as v,isNoCorsRequestRequired as x,sendNoCorsRequest as E,loadImageAsync as L}from"./support/requestUtils.js";async function U(e,t){e instanceof URL&&(e=e.toString()),t?.query instanceof URLSearchParams&&(t.query=l(t.query.toString().replaceAll("+"," ")));const r=u(e),s=c(e);s||r||(e=d(e));const a={url:e,requestOptions:{...t}};let n=p(e);if(n){const e=await G(n,a);if(null!=e)return{data:e,getHeader:I,httpStatus:200,requestOptions:a.requestOptions,url:a.url};n.after||n.error||(n=null)}if(e=a.url,"image"===(t=a.requestOptions).responseType&&(has("host-webworker")||has("host-node")))throw N("request:invalid-parameters",new Error("responseType 'image' is not supported in Web Workers or Node environment"),a);if("head"===t.method){if(t.body)throw N("request:invalid-parameters",new Error("body parameter cannot be set when method is 'head'"),a);if(r||s)throw N("request:invalid-parameters",new Error("data and blob URLs are not supported for method 'head'"),a)}if(await B(),j)return j.execute(e,t);const i=new AbortController;o(t,(()=>i.abort()));const h={controller:i,credential:void 0,credentialToken:void 0,fetchOptions:void 0,hasToken:!1,interceptor:n,params:a,redoRequest:!1,useIdentity:P.useIdentity,useProxy:!1,useSSL:!1,withCredentials:!1},m=await Q(h);return n?.after?.(m),m}let j;const P=e.request,D="FormData"in globalThis,_=[499,498,403,401],A=["COM_0056","COM_0057","SB_0008"],F=[/\/arcgis\/tokens/i,/\/sharing(\/rest)?\/generatetoken/i,/\/rest\/info/i],I=()=>null,R=Symbol();function M(e){const t=m(e);t&&!U._corsServers.includes(t)&&U._corsServers.push(t)}function H(e){const t=m(e);return!t||t.endsWith(".arcgis.com")||U._corsServers.includes(t)||h(t)}function N(e,t,o,i){let l="Error";const u={url:o.url,requestOptions:o.requestOptions,getHeader:I,ssl:!1};if(t instanceof r)return t.details?(t.details=s(t.details),t.details.url=o.url,t.details.requestOptions=o.requestOptions):t.details=u,t;if(t){const e=i&&(e=>i.headers.get(e)),r=i?.status,s=t.message;s&&(l=s),e&&(u.getHeader=e),u.httpStatus=(null!=t.httpCode?t.httpCode:t.code)||r||0,u.subCode=t.subcode,u.messageCode=t.messageCode,"string"==typeof t.details?u.messages=[t.details]:u.messages=t.details,u.raw=R in t?t[R]:t}return a(t)?n():new r(e,l,u)}async function B(){has("host-webworker")?j||(j=await import("./core/workers/request.js")):U._abortableFetch||(U._abortableFetch=globalThis.fetch.bind(globalThis))}async function $(){t||await import("./identity/IdentityManager.js")}async function z(r){const s=r.params.url,o=r.params.requestOptions,a=r.controller.signal,n=o.body;let l=null,u=null;if(D&&"HTMLFormElement"in globalThis&&(n instanceof FormData?l=n:n instanceof HTMLFormElement&&(l=new FormData(n))),"string"==typeof n&&(u=n),r.fetchOptions={cache:o.cacheBust&&!("polyfill"in U._abortableFetch)?"no-cache":"default",credentials:"same-origin",headers:o.headers||{},method:"head"===o.method?"HEAD":"GET",mode:"cors",priority:P.priority,redirect:"follow",signal:a},(l||u)&&(r.fetchOptions.body=l||u),"anonymous"===o.authMode&&(r.useIdentity=!1),r.hasToken=!!(/token=/i.test(s)||o.query?.token||l?.get("token")),!r.hasToken&&e.apiKey&&C(s)&&(o.query||(o.query={}),o.query.token=e.apiKey,r.hasToken=!0),r.useIdentity&&!r.hasToken&&!r.credentialToken&&!K(s)&&!i(a)){let e;"immediate"===o.authMode?(await $(),e=await t.getCredential(s,{signal:a}),r.credential=e):"no-prompt"===o.authMode?(await $(),e=await t.getCredential(s,{prompt:!1,signal:a}).catch((()=>{})),r.credential=e):t&&(e=t.findCredential(s)),e&&(r.credentialToken=e.token,r.useSSL=!!e.ssl)}}function K(e){return F.some((t=>t.test(e)))}async function W(e){let r=e.params.url;const s=e.params.requestOptions,o=e.fetchOptions??{},a=c(r)||u(r),i=s.responseType||"json",l=a?0:null!=s.timeout?s.timeout:P.timeout;let d=!1;if(!a){e.useSSL&&(r=f(r)),s.cacheBust&&"default"===o.cache&&(r=y(r,"request.preventCache",Date.now()));let a={...s.query};e.credentialToken&&(a.token=e.credentialToken);let n=w(a);has("esri-url-encodes-apostrophe")&&(n=n.replaceAll("'","%27"));const i=r.length+1+n.length;let l;d="delete"===s.method||"post"===s.method||"put"===s.method||!!s.body||i>P.maxUrlLength;const u=s.useProxy||!!g(r);if(u){const e=b(r);l=e.path,!d&&l.length+1+i>P.maxUrlLength&&(d=!0),e.query&&(a={...e.query,...a})}if("HEAD"===o.method&&(d||u)){if(d){if(i>P.maxUrlLength)throw N("request:invalid-parameters",new Error("URL exceeds maximum length"),e.params);throw N("request:invalid-parameters",new Error("cannot use POST request when method is 'head'"),e.params)}if(u)throw N("request:invalid-parameters",new Error("cannot use proxy when method is 'head'"),e.params)}if(d?(o.method="delete"===s.method?"DELETE":"put"===s.method?"PUT":"POST",s.body?r=q(r,a):(o.body=w(a),o.headers||(o.headers={}),o.headers["Content-Type"]="application/x-www-form-urlencoded")):r=q(r,a),u&&(e.useProxy=!0,r=`${l}?${r}`),a.token&&D&&o.body instanceof FormData&&!O(r)&&o.body.set("token",a.token),s.hasOwnProperty("withCredentials"))e.withCredentials=s.withCredentials;else if(!T(r,k()))if(h(r))e.withCredentials=!0;else if(t){const s=t.findServerInfo(r);s?.webTierAuth&&(e.withCredentials=!0)}e.withCredentials&&(o.credentials="include",x(r)&&await E(d?q(r,a):r))}let p,C,v=0,L=!1;l>0&&(v=setTimeout((()=>{L=!0,e.controller.abort()}),l));try{if("native-request-init"===s.responseType)C=o,C.url=r;else if("image"!==s.responseType||"default"!==o.cache||"GET"!==o.method||d||J(s.headers)||!a&&!e.useProxy&&P.proxyUrl&&!H(r)){if(p=await U._abortableFetch(r,o),e.useProxy||M(r),"native"===s.responseType)C=p;else if("HEAD"!==o.method)if(p.ok){switch(i){case"array-buffer":C=await p.arrayBuffer();break;case"blob":case"image":C=await p.blob();break;default:C=await p.text()}if(v&&(clearTimeout(v),v=0),"json"===i||"xml"===i||"document"===i)if(C)switch(i){case"json":C=JSON.parse(C);break;case"xml":C=X(C,"application/xml");break;case"document":C=X(C,"text/html")}else C=null;if(C){if("array-buffer"===i||"blob"===i){const e=p.headers.get("Content-Type");if(e&&/application\/json|text\/plain/i.test(e)&&C["blob"===i?"size":"byteLength"]<=750)try{const e=await new Response(C).json();e.error&&(C=e)}catch{}}"image"===i&&C instanceof Blob&&(C=await Y(URL.createObjectURL(C),e,!0))}}else{C=await p.text();try{C=JSON.parse(C)}catch{}}}else C=await Y(r,e)}catch(j){if("AbortError"===j.name){if(L)throw new Error("Timeout exceeded");throw n("Request canceled")}if(!(!p&&j instanceof TypeError&&P.proxyUrl)||s.body||"delete"===s.method||"head"===s.method||"post"===s.method||"put"===s.method||e.useProxy||H(r))throw j;e.redoRequest=!0,S({proxyUrl:P.proxyUrl,urlPrefix:m(r)??""})}finally{v&&clearTimeout(v)}return[p,C]}async function G(e,t){if(null!=e.responseData)return e.responseData;if(e.headers&&(t.requestOptions.headers={...t.requestOptions.headers,...e.headers}),e.query&&(t.requestOptions.query={...t.requestOptions.query,...e.query}),e.before){let o,a;try{a=await e.before(t)}catch(s){o=N("request:interceptor",s,t)}if((a instanceof Error||a instanceof r)&&(o=N("request:interceptor",a,t)),o)throw e.error&&e.error(o),o;return a}}function J(e){if(e)for(const t of Object.getOwnPropertyNames(e))if(e[t])return!0;return!1}function X(e,t){let r;try{r=(new DOMParser).parseFromString(e,t)}catch{}if(!r||r.getElementsByTagName("parsererror").length)throw new SyntaxError("XML Parse error");return r}async function Q(e){let r,s;await z(e);try{do{[r,s]=await W(e)}while(!await V(e,r,s))}catch(n){const t=N("request:server",n,e.params,r);throw t.details.ssl=e.useSSL,e.interceptor?.error&&e.interceptor.error(t),t}const o=e.params.url;if(s&&/\/sharing\/rest\/(accounts|portals)\/self/i.test(o)){if(!e.hasToken&&!e.credentialToken&&s.user?.username&&!h(o)){const e=m(o,!0);e&&P.trustedServers.push(e)}Array.isArray(s.authorizedCrossOriginNoCorsDomains)&&v(s.authorizedCrossOriginNoCorsDomains)}const a=e.credential;if(a&&t){const e=t.findServerInfo(a.server);let r=e?.owningSystemUrl;if(r){r=r.replace(/\/?$/,"/sharing");const e=t.findCredential(r,a.userId);e&&-1===t._getIdenticalSvcIdx(r,e)&&e.resources.unshift(r)}}return{data:s,getHeader:r?e=>r?.headers.get(e):I,httpStatus:r?.status??200,requestOptions:e.params.requestOptions,ssl:e.useSSL,url:e.params.url}}async function V(e,r,s){if(e.redoRequest)return e.redoRequest=!1,!1;const o=e.params.requestOptions;if(!r||"native"===o.responseType||"native-request-init"===o.responseType)return!0;let a,n;if(s&&(s.error?a=s.error:"error"===s.status&&Array.isArray(s.messages)&&(a={...s},a[R]=s,a.details=s.messages)),!a&&!r.ok)throw a=new Error(`Unable to load ${r.url} status: ${r.status}`),a[R]=s,a;let i,l=null;a&&(n=Number(a.code),l=a.hasOwnProperty("subcode")?Number(a.subcode):null,i=a.messageCode,i=i?.toUpperCase());const u=o.authMode;if(403===n&&(4===l||a.message?.toLowerCase().includes("ssl")&&!a.message.toLowerCase().includes("permission"))){if(!e.useSSL)return e.useSSL=!0,!1}else if(!e.hasToken&&e.useIdentity&&("no-prompt"!==u||498===n)&&void 0!==n&&_.includes(n)&&!K(e.params.url)&&(403!==n||i&&!A.includes(i)&&(null==l||2===l&&e.credentialToken))){await $();try{const r=await t.getCredential(e.params.url,{error:N("request:server",a,e.params),prompt:"no-prompt"!==u,signal:e.controller.signal,token:e.credentialToken});return e.credential=r,e.credentialToken=r.token,e.useSSL=e.useSSL||r.ssl,!1}catch(c){if("no-prompt"===u)return e.credential=void 0,e.credentialToken=void 0,!1;a=c}}if(a)throw a;return!0}function Y(e,t,r=!1){const s=t.controller.signal,o=new Image;return t.withCredentials?o.crossOrigin="use-credentials":o.crossOrigin="anonymous",o.alt="",o.fetchPriority=P.priority,o.src=e,L(o,e,r,s)}U._abortableFetch=null,U._corsServers=["https://server.arcgisonline.com","https://services.arcgisonline.com"];export{U as default};
5
+ import e from"./config.js";import{id as t}from"./kernel.js";import r from"./core/Error.js";import has from"./core/has.js";import{clone as s}from"./core/lang.js";import{onAbort as o,isAbortError as a,createAbortError as n,isAborted as i}from"./core/promiseUtils.js";import{queryToObject as l,isDataProtocol as u,isBlobProtocol as c,normalize as d,getInterceptor as p,isTrustedServer as h,getOrigin as m,toHTTPS as f,addQueryParameter as y,objectToQuery as w,getProxyRule as g,getProxyUrl as b,addQueryParameters as q,hasSameOrigin as T,getAppUrl as k,addProxyRule as S}from"./core/urlUtils.js";import{isSecureProxyService as O}from"./portal/support/urlUtils.js";import{supportsApiKey as C}from"./support/apiKeyUtils.js";import{registerNoCorsDomains as v,isNoCorsRequestRequired as x,sendNoCorsRequest as L,createTimeoutError as E,loadImageAsync as U}from"./support/requestUtils.js";async function j(e,t){e instanceof URL&&(e=e.toString()),t?.query instanceof URLSearchParams&&(t.query=l(t.query.toString().replaceAll("+"," ")));const r=u(e),s=c(e);s||r||(e=d(e));const a={url:e,requestOptions:{...t}};let n=p(e);if(n){const e=await J(n,a);if(null!=e)return{data:e,getHeader:R,httpStatus:200,requestOptions:a.requestOptions,url:a.url};n.after||n.error||(n=null)}if(e=a.url,"image"===(t=a.requestOptions).responseType&&(has("host-webworker")||has("host-node")))throw B("request:invalid-parameters",new Error("responseType 'image' is not supported in Web Workers or Node environment"),a);if("head"===t.method){if(t.body)throw B("request:invalid-parameters",new Error("body parameter cannot be set when method is 'head'"),a);if(r||s)throw B("request:invalid-parameters",new Error("data and blob URLs are not supported for method 'head'"),a)}if(await $(),P)return P.execute(e,t);const i=new AbortController;o(t,(()=>i.abort()));const h={controller:i,credential:void 0,credentialToken:void 0,fetchOptions:void 0,hasToken:!1,interceptor:n,params:a,redoRequest:!1,useIdentity:D.useIdentity,useProxy:!1,useSSL:!1,withCredentials:!1},m=await V(h);return n?.after?.(m),m}let P;const D=e.request,_="FormData"in globalThis,A=[499,498,403,401],F=["COM_0056","COM_0057","SB_0008"],I=[/\/arcgis\/tokens/i,/\/sharing(\/rest)?\/generatetoken/i,/\/rest\/info/i],R=()=>null,M=Symbol();function H(e){const t=m(e);t&&!j._corsServers.includes(t)&&j._corsServers.push(t)}function N(e){const t=m(e);return!t||t.endsWith(".arcgis.com")||j._corsServers.includes(t)||h(t)}function B(e,t,o,i){let l="Error";const u={url:o.url,requestOptions:o.requestOptions,getHeader:R,ssl:!1};if(t instanceof r)return t.details?(t.details=s(t.details),t.details.url=o.url,t.details.requestOptions=o.requestOptions):t.details=u,t;if(t){const e=i&&(e=>i.headers.get(e)),r=i?.status,s=t.message;s&&(l=s),e&&(u.getHeader=e),u.httpStatus=(null!=t.httpCode?t.httpCode:t.code)||r||0,u.subCode=t.subcode,u.messageCode=t.messageCode,"string"==typeof t.details?u.messages=[t.details]:u.messages=t.details,u.raw=M in t?t[M]:t}return a(t)?n():new r(e,l,u)}async function $(){has("host-webworker")?P||(P=await import("./core/workers/request.js")):j._abortableFetch||(j._abortableFetch=globalThis.fetch.bind(globalThis))}async function z(){t||await import("./identity/IdentityManager.js")}async function K(r){const s=r.params.url,o=r.params.requestOptions,a=r.controller.signal,n=o.body;let l=null,u=null;if(_&&"HTMLFormElement"in globalThis&&(n instanceof FormData?l=n:n instanceof HTMLFormElement&&(l=new FormData(n))),"string"==typeof n&&(u=n),r.fetchOptions={cache:o.cacheBust&&!("polyfill"in j._abortableFetch)?"no-cache":"default",credentials:"same-origin",headers:o.headers||{},method:"head"===o.method?"HEAD":"GET",mode:"cors",priority:D.priority,redirect:"follow",signal:a},(l||u)&&(r.fetchOptions.body=l||u),"anonymous"===o.authMode&&(r.useIdentity=!1),r.hasToken=!!(/token=/i.test(s)||o.query?.token||l?.get("token")),!r.hasToken&&e.apiKey&&C(s)&&(o.query||(o.query={}),o.query.token=e.apiKey,r.hasToken=!0),r.useIdentity&&!r.hasToken&&!r.credentialToken&&!W(s)&&!i(a)){let e;"immediate"===o.authMode?(await z(),e=await t.getCredential(s,{signal:a}),r.credential=e):"no-prompt"===o.authMode?(await z(),e=await t.getCredential(s,{prompt:!1,signal:a}).catch((()=>{})),r.credential=e):t&&(e=t.findCredential(s)),e&&(r.credentialToken=e.token,r.useSSL=!!e.ssl)}}function W(e){return I.some((t=>t.test(e)))}async function G(e){let r=e.params.url;const s=e.params.requestOptions,o=e.fetchOptions??{},a=c(r)||u(r),i=s.responseType||"json",l=a?0:null!=s.timeout?s.timeout:D.timeout;let d=!1;if(!a){e.useSSL&&(r=f(r)),s.cacheBust&&"default"===o.cache&&(r=y(r,"request.preventCache",Date.now()));let a={...s.query};e.credentialToken&&(a.token=e.credentialToken);let n=w(a);has("esri-url-encodes-apostrophe")&&(n=n.replaceAll("'","%27"));const i=r.length+1+n.length;let l;d="delete"===s.method||"post"===s.method||"put"===s.method||!!s.body||i>D.maxUrlLength;const u=s.useProxy||!!g(r);if(u){const e=b(r);l=e.path,!d&&l.length+1+i>D.maxUrlLength&&(d=!0),e.query&&(a={...e.query,...a})}if("HEAD"===o.method&&(d||u)){if(d){if(i>D.maxUrlLength)throw B("request:invalid-parameters",new Error("URL exceeds maximum length"),e.params);throw B("request:invalid-parameters",new Error("cannot use POST request when method is 'head'"),e.params)}if(u)throw B("request:invalid-parameters",new Error("cannot use proxy when method is 'head'"),e.params)}if(d?(o.method="delete"===s.method?"DELETE":"put"===s.method?"PUT":"POST",s.body?r=q(r,a):(o.body=w(a),o.headers||(o.headers={}),o.headers["Content-Type"]="application/x-www-form-urlencoded")):r=q(r,a),u&&(e.useProxy=!0,r=`${l}?${r}`),a.token&&_&&o.body instanceof FormData&&!O(r)&&o.body.set("token",a.token),s.hasOwnProperty("withCredentials"))e.withCredentials=s.withCredentials;else if(!T(r,k()))if(h(r))e.withCredentials=!0;else if(t){const s=t.findServerInfo(r);s?.webTierAuth&&(e.withCredentials=!0)}e.withCredentials&&(o.credentials="include",x(r)&&await L(d?q(r,a):r))}let p,C,v=0,U=!1;l>0&&(v=setTimeout((()=>{U=!0,e.controller.abort()}),l));try{if("native-request-init"===s.responseType)C=o,C.url=r;else if("image"!==s.responseType||"default"!==o.cache||"GET"!==o.method||d||X(s.headers)||!a&&!e.useProxy&&D.proxyUrl&&!N(r)){if(p=await j._abortableFetch(r,o),e.useProxy||H(r),"native"===s.responseType)C=p;else if("HEAD"!==o.method)if(p.ok){switch(i){case"array-buffer":C=await p.arrayBuffer();break;case"blob":case"image":C=await p.blob();break;default:C=await p.text()}if(v&&(clearTimeout(v),v=0),"json"===i||"xml"===i||"document"===i)if(C)switch(i){case"json":C=JSON.parse(C);break;case"xml":C=Q(C,"application/xml");break;case"document":C=Q(C,"text/html")}else C=null;if(C){if("array-buffer"===i||"blob"===i){const e=p.headers.get("Content-Type");if(e&&/application\/json|text\/plain/i.test(e)&&C["blob"===i?"size":"byteLength"]<=750)try{const e=await new Response(C).json();e.error&&(C=e)}catch{}}"image"===i&&C instanceof Blob&&(C=await Z(URL.createObjectURL(C),e,!0))}}else{C=await p.text();try{C=JSON.parse(C)}catch{}}}else C=await Z(r,e)}catch(P){if("AbortError"===P.name){if(U)throw E();throw n("Request canceled")}if(!(!p&&P instanceof TypeError&&D.proxyUrl)||s.body||"delete"===s.method||"head"===s.method||"post"===s.method||"put"===s.method||e.useProxy||N(r))throw P;e.redoRequest=!0,S({proxyUrl:D.proxyUrl,urlPrefix:m(r)??""})}finally{v&&clearTimeout(v)}return[p,C]}async function J(e,t){if(null!=e.responseData)return e.responseData;if(e.headers&&(t.requestOptions.headers={...t.requestOptions.headers,...e.headers}),e.query&&(t.requestOptions.query={...t.requestOptions.query,...e.query}),e.before){let o,a;try{a=await e.before(t)}catch(s){o=B("request:interceptor",s,t)}if((a instanceof Error||a instanceof r)&&(o=B("request:interceptor",a,t)),o)throw e.error&&e.error(o),o;return a}}function X(e){if(e)for(const t of Object.getOwnPropertyNames(e))if(e[t])return!0;return!1}function Q(e,t){let r;try{r=(new DOMParser).parseFromString(e,t)}catch{}if(!r||r.getElementsByTagName("parsererror").length)throw new SyntaxError("XML Parse error");return r}async function V(e){let r,s;await K(e);try{do{[r,s]=await G(e)}while(!await Y(e,r,s))}catch(n){const t=B("request:server",n,e.params,r);throw t.details.ssl=e.useSSL,e.interceptor?.error&&e.interceptor.error(t),t}const o=e.params.url;if(s&&/\/sharing\/rest\/(accounts|portals)\/self/i.test(o)){if(!e.hasToken&&!e.credentialToken&&s.user?.username&&!h(o)){const e=m(o,!0);e&&D.trustedServers.push(e)}Array.isArray(s.authorizedCrossOriginNoCorsDomains)&&v(s.authorizedCrossOriginNoCorsDomains)}const a=e.credential;if(a&&t){const e=t.findServerInfo(a.server);let r=e?.owningSystemUrl;if(r){r=r.replace(/\/?$/,"/sharing");const e=t.findCredential(r,a.userId);e&&-1===t._getIdenticalSvcIdx(r,e)&&e.resources.unshift(r)}}return{data:s,getHeader:r?e=>r?.headers.get(e):R,httpStatus:r?.status??200,requestOptions:e.params.requestOptions,ssl:e.useSSL,url:e.params.url}}async function Y(e,r,s){if(e.redoRequest)return e.redoRequest=!1,!1;const o=e.params.requestOptions;if(!r||"native"===o.responseType||"native-request-init"===o.responseType)return!0;let a,n;if(s&&(s.error?a=s.error:"error"===s.status&&Array.isArray(s.messages)&&(a={...s},a[M]=s,a.details=s.messages)),!a&&!r.ok)throw a=new Error(`Unable to load ${r.url} status: ${r.status}`),a[M]=s,a;let i,l=null;a&&(n=Number(a.code),l=a.hasOwnProperty("subcode")?Number(a.subcode):null,i=a.messageCode,i=i?.toUpperCase());const u=o.authMode;if(403===n&&(4===l||a.message?.toLowerCase().includes("ssl")&&!a.message.toLowerCase().includes("permission"))){if(!e.useSSL)return e.useSSL=!0,!1}else if(!e.hasToken&&e.useIdentity&&("no-prompt"!==u||498===n)&&void 0!==n&&A.includes(n)&&!W(e.params.url)&&(403!==n||i&&!F.includes(i)&&(null==l||2===l&&e.credentialToken))){await z();try{const r=await t.getCredential(e.params.url,{error:B("request:server",a,e.params),prompt:"no-prompt"!==u,signal:e.controller.signal,token:e.credentialToken});return e.credential=r,e.credentialToken=r.token,e.useSSL=e.useSSL||r.ssl,!1}catch(c){if("no-prompt"===u)return e.credential=void 0,e.credentialToken=void 0,!1;a=c}}if(a)throw a;return!0}function Z(e,t,r=!1){const s=t.controller.signal,o=new Image;return t.withCredentials?o.crossOrigin="use-credentials":o.crossOrigin="anonymous",o.alt="",o.fetchPriority=D.priority,o.src=e,U(o,e,r,s)}j._abortableFetch=null,j._corsServers=["https://server.arcgisonline.com","https://services.arcgisonline.com"];export{j 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.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Graphic.js";import t from"../../core/Logger.js";import{getOrCreateMapValue as r}from"../../core/MapUtils.js";import{f as o}from"../../chunks/vec3f64.js";import n from"../../geometry/Extent.js";import s from"../../geometry/Mesh.js";import i from"../../geometry/Point.js";import a from"../../geometry/SpatialReference.js";import u from"../../geometry/support/MeshGeoreferencedRelativeVertexSpace.js";import c from"../../geometry/support/MeshLocalVertexSpace.js";import f from"../../geometry/support/MeshTransform.js";import{ServiceAssetPart as p,ServiceAsset as m}from"../../geometry/support/meshUtils/External.js";import{getFormatIdMimeType as l}from"../../layers/support/infoFor3D.js";import g from"./FeatureSet.js";function y(t,r,o){const n=o.features;o.features=[],delete o.geometryType;const s=g.fromJSON(o);if(s.geometryType="mesh",!o.assetMaps)return s;const i=M(r,o.assetMaps),u=t.sourceSpatialReference??a.WGS84,c=o.globalIdFieldName,{outFields:f}=t,p=null!=f&&f.length>0?E(f.includes("*")?null:new Set(f)):()=>({});for(const a of n){const t=h(a,c,u,r,i);null!=t&&s.features.push(new e({geometry:t,attributes:p(a)}))}return s}function E(e){return({attributes:t})=>{if(!t)return{};if(!e)return t;for(const r in t)e.has(r)||delete t[r];return t}}function h(e,t,r,o,i){const a=e.attributes[t],f=i.get(a);if(null==f)return null;const{originPoint:p,originVector:m}=S(e,r,o),l=n.fromJSON(e.geometry);l.spatialReference=r;const g=j(e.attributes,o),y=f.projectVertices?new u({origin:m}):new c({origin:m}),E=T(f);return E?s.createWithExternalSource(p,E,{extent:l,transform:g,vertexSpace:y}):s.createIncomplete(p,{extent:l,transform:g,vertexSpace:y})}function S({attributes:e},t,{transformFieldRoles:r}){const n=e[r.originX],s=e[r.originY],a=e[r.originZ];return{originPoint:new i({x:n,y:s,z:a,spatialReference:t}),originVector:o(n,s,a)}}function j(e,{transformFieldRoles:t}){return new f({translation:[e[t.translationX],-e[t.translationZ],e[t.translationY]],rotationAxis:[e[t.rotationX],e[t.rotationZ],e[t.rotationY]],rotationAngle:e[t.rotationDeg],scale:[e[t.scaleX],e[t.scaleY],e[t.scaleZ]]})}var d;function M(e,o){const n=new Map;for(const s of o){const o=s.parentGlobalId;if(null==o)continue;const i=s.assetName,a=s.assetType,u=s.assetHash,c=s.assetURL,f=s.conversionStatus,p=s.seqNo,m=l(a,e.supportedFormats);if(!m){t.getLogger("esri.rest.support.meshFeatureSet").error("mesh-feature-set:unknown-format",`Service returned an asset of type ${a}, but it does not list it as a supported type`);continue}const g=r(n,o,(()=>({projectVertices:D(s.flags).projectVertices,files:new Map})));r(g.files,i,(()=>({name:i,type:a,mimeType:m,status:w(f),parts:[]}))).parts[p]={hash:u,url:c}}return n}function T(e){const t=Array.from(e.files.values()),r=new Array;for(const o of t){if(o.status!==d.COMPLETED)return null;const e=new Array;for(const t of o.parts){if(!t)return null;e.push(new p(t.url,t.hash))}r.push(new m(o.name,o.mimeType,e))}return r}function w(e){switch(e){case"COMPLETED":case"SUBMITTED":return d.COMPLETED;case"INPROGRESS":return d.PENDING;default:return d.FAILED}}function D(e){return{projectVertices:e.includes("PROJECT_VERTICES")}}!function(e){e[e.FAILED=0]="FAILED",e[e.PENDING=1]="PENDING",e[e.COMPLETED=2]="COMPLETED"}(d||(d={}));export{M as assetMapFromAssetMapsJSON,h as extractMesh,y as meshFeatureSetFromJSON};
5
+ import e from"../../Graphic.js";import t from"../../core/Logger.js";import{getOrCreateMapValue as r}from"../../core/MapUtils.js";import{f as o}from"../../chunks/vec3f64.js";import n from"../../geometry/Extent.js";import s from"../../geometry/Mesh.js";import i from"../../geometry/Point.js";import a from"../../geometry/SpatialReference.js";import u from"../../geometry/support/MeshGeoreferencedRelativeVertexSpace.js";import c from"../../geometry/support/MeshLocalVertexSpace.js";import f from"../../geometry/support/MeshTransform.js";import{ServiceAssetPart as p,ServiceAsset as m}from"../../geometry/support/meshUtils/External.js";import{getFormatIdMimeType as l}from"../../layers/support/infoFor3D.js";import g from"./FeatureSet.js";function y(t,r,o){const n=o.features;o.features=[],delete o.geometryType;const s=g.fromJSON(o);if(s.geometryType="mesh",!o.assetMaps)return s;const i=M(r,o.assetMaps),u=t.sourceSpatialReference??a.WGS84,c=o.globalIdFieldName,{outFields:f}=t,p=null!=f&&f.length>0?E(f.includes("*")?null:new Set(f)):()=>({});for(const a of n){const t=h(a,c,u,r,i);null!=t&&s.features.push(new e({geometry:t,attributes:p(a)}))}return s}function E(e){return({attributes:t})=>{if(!t)return{};if(!e)return t;for(const r in t)e.has(r)||delete t[r];return t}}function h(e,t,r,o,i){const a=e.attributes[t],f=i.get(a);if(null==f||!e.geometry)return null;const{originPoint:p,originVector:m}=S(e,r,o),l=n.fromJSON(e.geometry);l.spatialReference=r;const g=j(e.attributes,o),y=f.projectVertices?new u({origin:m}):new c({origin:m}),E=T(f);return E?s.createWithExternalSource(p,E,{extent:l,transform:g,vertexSpace:y}):s.createIncomplete(p,{extent:l,transform:g,vertexSpace:y})}function S({attributes:e},t,{transformFieldRoles:r}){const n=e[r.originX],s=e[r.originY],a=e[r.originZ];return{originPoint:new i({x:n,y:s,z:a,spatialReference:t}),originVector:o(n,s,a)}}function j(e,{transformFieldRoles:t}){return new f({translation:[e[t.translationX],-e[t.translationZ],e[t.translationY]],rotationAxis:[e[t.rotationX],e[t.rotationZ],e[t.rotationY]],rotationAngle:e[t.rotationDeg],scale:[e[t.scaleX],e[t.scaleY],e[t.scaleZ]]})}var d;function M(e,o){const n=new Map;for(const s of o){const o=s.parentGlobalId;if(null==o)continue;const i=s.assetName,a=s.assetType,u=s.assetHash,c=s.assetURL,f=s.conversionStatus,p=s.seqNo,m=l(a,e.supportedFormats);if(!m){t.getLogger("esri.rest.support.meshFeatureSet").error("mesh-feature-set:unknown-format",`Service returned an asset of type ${a}, but it does not list it as a supported type`);continue}const g=r(n,o,(()=>({projectVertices:D(s.flags).projectVertices,files:new Map})));r(g.files,i,(()=>({name:i,type:a,mimeType:m,status:w(f),parts:[]}))).parts[p]={hash:u,url:c}}return n}function T(e){const t=Array.from(e.files.values()),r=new Array;for(const o of t){if(o.status!==d.COMPLETED)return null;const e=new Array;for(const t of o.parts){if(!t)return null;e.push(new p(t.url,t.hash))}r.push(new m(o.name,o.mimeType,e))}return r}function w(e){switch(e){case"COMPLETED":case"SUBMITTED":return d.COMPLETED;case"INPROGRESS":return d.PENDING;default:return d.FAILED}}function D(e){return{projectVertices:e.includes("PROJECT_VERTICES")}}!function(e){e[e.FAILED=0]="FAILED",e[e.PENDING=1]="PENDING",e[e.COMPLETED=2]="COMPLETED"}(d||(d={}));export{M as assetMapFromAssetMapsJSON,h as extractMesh,y as meshFeatureSetFromJSON};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import{isSome as r}from"../../core/arrayUtils.js";import{sequentialLightSchemes as o,sequentialDarkSchemes as t}from"./color.js";import a from"./support/colors.js";import{createThemes as n,getThemesforBasemap as i,getRawSchemes as m,filterSchemesByName as l,filterSchemesByTag as s}from"./support/symbologyUtils.js";const c={color:"#4c64c9",density:.8,layerEffect:"drop-shadow(1px, 1px, 3px, rgba(0,0,0,0.75))"},p={color:"#00ffff",density:.8,layerEffect:"bloom(1.4, 0.6px, 0)"},f={flowSpeed:10,trailLength:100,trailWidth:1,trailCap:"butt",minSize:1,maxSize:4},d={flowSpeed:3,trailLength:.7,trailWidth:8,trailCap:"butt",minSize:4,maxSize:16},h=n({themeDictionary:{"flow-line":{name:"flow-line",label:"TODO",description:"TODO",schemes:{default:{light:{common:{...f,...c},primary:"seq-lines-purple-brown",secondary:[...o,...t].filter((e=>"seq-lines-purple-brown"!==e))},dark:{common:{...f,...p},primary:"seq-mentone-beach",secondary:[...t,...o].filter((e=>"seq-mentone-beach"!==e))}}}},"wave-front":{name:"wave-front",label:"TODO",description:"TODO",schemes:{default:{light:{common:{...d,...c},primary:"seq-lines-purple-brown",secondary:[...o,...t].filter((e=>"seq-lines-purple-brown"!==e))},dark:{common:{...d,...p},primary:"seq-mentone-beach",secondary:[...t,...o].filter((e=>"seq-mentone-beach"!==e))}}}}}});function u(e){return i(h,e)}function y(e){const o=e.theme||"flow-line",t=m({basemap:e.basemap,basemapTheme:e.basemapTheme,theme:h.get(o)});if(!t)return;const{schemesInfo:a,basemapId:n,basemapTheme:i}=t,l=a.common;return{primaryScheme:S(e,a.primary,l),secondarySchemes:a.secondary.map((r=>S(e,r,l))).filter(r),basemapId:n,basemapTheme:i}}function b(e){return l(e.name,y(e))}function w(e){return s(e.includedTags,e.excludedTags,y(e))}function g(r){if(!r)return;const o={...r};return o.colors=o.colors.map((r=>new e(r))),o.tags=[...o.tags],o.color&&(o.color=new e(o.color)),o}function S(r,o,t){const n=r.theme||"flow-line",i=a[o];if(!i)return;const m=i.stops;return{id:`${n}/${r.basemap}/${o}`,name:i.name,tags:[...i.tags],theme:n,color:new e(t.color),colors:m.map((r=>new e(r))),density:t.density,flowSpeed:t.flowSpeed,trailLength:"wave-front"===n&&r.hasSizeVariable?2*t.trailLength:t.trailLength,trailWidth:t.trailWidth,trailCap:t.trailCap,layerEffect:t.layerEffect,minSize:t.minSize,maxSize:t.maxSize,minOpacity:.25,maxOpacity:1}}export{g as cloneScheme,b as getSchemeByName,y as getSchemes,w as getSchemesByTag,u as getThemes};
5
+ import e from"../../Color.js";import{isSome as r}from"../../core/arrayUtils.js";import{sequentialLightSchemes as o,sequentialDarkSchemes as t}from"./color.js";import a from"./support/colors.js";import{createThemes as n,getThemesforBasemap as i,getRawSchemes as m,filterSchemesByName as s,filterSchemesByTag as l}from"./support/symbologyUtils.js";const c={color:"#4c64c9",density:.8,layerEffect:"drop-shadow(1px, 1px, 3px, rgba(0,0,0,0.75))"},p={color:"#00ffff",density:.8,layerEffect:"bloom(1.4, 0.6px, 0)"},f={flowSpeed:10,trailLength:100,trailWidth:1,trailCap:"butt",minSize:1,maxSize:4},d={flowSpeed:3,trailLength:.7,trailWidth:8,trailCap:"butt",minSize:4,maxSize:16},h=n({themeDictionary:{"flow-line":{name:"flow-line",label:"TODO",description:"TODO",schemes:{default:{light:{common:{...f,...c},primary:"seq-lines-purple-brown",secondary:[...o,...t].filter((e=>"seq-lines-purple-brown"!==e))},dark:{common:{...f,...p},primary:"seq-mentone-beach",secondary:[...t,...o].filter((e=>"seq-mentone-beach"!==e))}}}},"wave-front":{name:"wave-front",label:"TODO",description:"TODO",schemes:{default:{light:{common:{...d,...c},primary:"seq-lines-purple-brown",secondary:[...o,...t].filter((e=>"seq-lines-purple-brown"!==e))},dark:{common:{...d,...p},primary:"seq-mentone-beach",secondary:[...t,...o].filter((e=>"seq-mentone-beach"!==e))}}}}}});function u(e){return i(h,e)}function b(e){const o=e.theme||"flow-line",t=m({basemap:e.basemap,basemapTheme:e.basemapTheme,theme:h.get(o)});if(!t)return;const{schemesInfo:a,basemapId:n,basemapTheme:i}=t,s=a.common,l={...e,basemap:n};return{primaryScheme:S(l,a.primary,s),secondarySchemes:a.secondary.map((e=>S(l,e,s))).filter(r),basemapId:n,basemapTheme:i}}function y(e){return s(e.name,b(e))}function w(e){return l(e.includedTags,e.excludedTags,b(e))}function g(r){if(!r)return;const o={...r};return o.colors=o.colors.map((r=>new e(r))),o.tags=[...o.tags],o.color&&(o.color=new e(o.color)),o}function S(r,o,t){const n=r.theme||"flow-line",i=a[o];if(!i)return;const m=i.stops;return{id:`${n}/${r.basemap}/${o}`,name:i.name,tags:[...i.tags],theme:n,color:new e(t.color),colors:m.map((r=>new e(r))),density:t.density,flowSpeed:t.flowSpeed,trailLength:"wave-front"===n&&r.hasSizeVariable?2*t.trailLength:t.trailLength,trailWidth:t.trailWidth,trailCap:t.trailCap,layerEffect:t.layerEffect,minSize:t.minSize,maxSize:t.maxSize,minOpacity:.25,maxOpacity:1}}export{g as cloneScheme,y as getSchemeByName,b as getSchemes,w as getSchemesByTag,u as getThemes};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import n from"../rest/support/ClassBreaksDefinition.js";import{createGenerateRendererClassBreaks as e}from"../rest/support/generateRendererUtils.js";const t="<Null>",l="equal-interval",i=1,a=5,r=10,o=/\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*/gi,u=new Set(["esriFieldTypeInteger","esriFieldTypeSmallInteger","esriFieldTypeSingle","esriFieldTypeDouble"]),s=["min","max","avg","stddev","count","sum","variance","nullcount","median"];function c(n){return null==n||"string"==typeof n&&!n?t:n}function m(n){const e=null!=n.normalizationField||null!=n.normalizationType,t=null!=n.minValue||null!=n.maxValue,l=!!n.sqlExpression&&n.supportsSQLExpression;return!e&&!t&&!l}function f(n){const e=n.returnDistinct?[...new Set(n.values)]:n.values,t=e.filter((n=>null!=n)).length,l={count:t};return n.supportsNullCount&&(l.nullcount=e.length-t),n.percentileParams&&(l.median=p(e,n.percentileParams)),l}function d(n){const{values:e,useSampleStdDev:t,supportsNullCount:l}=n;let i=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,r=null,o=null,u=null,s=null,c=0;const m=null==n.minValue?-1/0:n.minValue,f=null==n.maxValue?1/0:n.maxValue;for(const p of e)Number.isFinite(p)?p>=m&&p<=f&&(r=null===r?p:r+p,i=Math.min(i,p),a=Math.max(a,p),c++):"string"==typeof p&&c++;if(c&&null!=r){o=r/c;let n=0;for(const t of e)Number.isFinite(t)&&t>=m&&t<=f&&(n+=(t-o)**2);s=t?c>1?n/(c-1):0:c>0?n/c:0,u=Math.sqrt(s)}else i=null,a=null;const d={avg:o,count:c,max:a,min:i,stddev:u,sum:r,variance:s};return l&&(d.nullcount=e.length-c),n.percentileParams&&(d.median=p(e,n.percentileParams)),d}function p(n,e){const{fieldType:t,value:l,orderBy:i,isDiscrete:a}=e,r=v(t,"desc"===i);if(0===(n=[...n].filter((n=>null!=n)).sort(((n,e)=>r(n,e)))).length)return null;if(l<=0)return n[0];if(l>=1)return n[n.length-1];const o=(n.length-1)*l,u=Math.floor(o),s=u+1,c=o%1,m=n[u],f=n[s];return s>=n.length||a||"string"==typeof m||"string"==typeof f?m:m*(1-c)+f*c}function v(n,e){const t=e?1:-1,l=h(e),i=V(e);if(!(!!n&&["esriFieldTypeDate","esriFieldTypeString","esriFieldTypeGUID","esriFieldTypeGlobalID",...u].includes(n)))return(n,e)=>"number"==typeof n&&"number"==typeof e?l(n,e):"string"==typeof n&&"string"==typeof e?i(n,e):t;if("esriFieldTypeDate"===n)return(n,e)=>{const i=new Date(n).getTime(),a=new Date(e).getTime();return isNaN(i)||isNaN(a)?t:l(i,a)};if(u.has(n))return(n,e)=>l(n,e);if("esriFieldTypeString"===n)return(n,e)=>i(n,e);if("esriFieldTypeGUID"===n||"esriFieldTypeGlobalID"===n){const n=V(e);return(e,t)=>n(T(e),T(t))}return e?(n,e)=>1:(n,e)=>-1}function b(n,e,t){if(t){if(null==n)return null==e?0:1;if(null==e)return-1}else{if(null==n)return null==e?0:-1;if(null==e)return 1}return null}function V(n){return n?(n,e)=>{const t=b(n,e,!0);return null!=t?t:(n=n.toUpperCase())>(e=e.toUpperCase())?-1:n<e?1:0}:(n,e)=>{const t=b(n,e,!1);return null!=t?t:(n=n.toUpperCase())<(e=e.toUpperCase())?-1:n>e?1:0}}function h(n){return n?(n,e)=>{const t=b(n,e,!0);return null!=t?t:e-n}:(n,e)=>{const t=b(n,e,!1);return null!=t?t:n-e}}function T(n){return n.substr(24,12)+n.substr(19,4)+n.substr(16,2)+n.substr(14,2)+n.substr(11,2)+n.substr(9,2)+n.substr(6,2)+n.substr(4,2)+n.substr(2,2)+n.substr(0,2)}function g(n,e){let t;for(t in n)s.includes(t)&&(Number.isFinite(n[t])||(n[t]=null));return e?(["avg","stddev","variance"].forEach((e=>{null!=n[e]&&(n[e]=Math.ceil(n[e]??0))})),n):n}function y(n){const e={};for(let t of n)(null==t||"string"==typeof t&&""===t.trim())&&(t=null),null==e[t]?e[t]={count:1,data:t}:e[t].count++;return{count:e}}function x(n){return"coded-value"!==n?.type?[]:n.codedValues.map((n=>n.code))}function F(n,e,t,l){const i=n.count,a=[];if(t&&e){const n=[],t=x(e[0]);for(const i of t)if(e[1]){const t=x(e[1]);for(const a of t)if(e[2]){const t=x(e[2]);for(const e of t)n.push(`${c(i)}${l}${c(a)}${l}${c(e)}`)}else n.push(`${c(i)}${l}${c(a)}`)}else n.push(i);for(const e of n)i.hasOwnProperty(e)||(i[e]={data:e,count:0})}for(const r in i){const n=i[r];a.push({value:n.data,count:n.count,label:n.label})}return{uniqueValueInfos:a}}function z(n,e,t,l){let i=null;switch(e){case"log":0!==n&&(i=Math.log(n)*Math.LOG10E);break;case"percent-of-total":Number.isFinite(l)&&0!==l&&(i=n/l*100);break;case"field":Number.isFinite(t)&&0!==t&&(i=n/t);break;case"natural-log":n>0&&(i=Math.log(n));break;case"square-root":n>0&&(i=n**.5)}return i}function D(n,t){const l=N({field:t.field,normalizationType:t.normalizationType,normalizationField:t.normalizationField,classificationMethod:t.classificationMethod,standardDeviationInterval:t.standardDeviationInterval,breakCount:t.numClasses||a});return n=I(n,t.minValue,t.maxValue),e({definition:l,values:n,normalizationTotal:t.normalizationTotal})}function I(n,e,t){const l=e??-1/0,i=t??1/0;return n.filter((n=>Number.isFinite(n)&&n>=l&&n<=i))}function N(e){const{breakCount:t,field:a,normalizationField:r,normalizationType:o}=e,u=e.classificationMethod||l,s="standard-deviation"===u?e.standardDeviationInterval||i:void 0;return new n({breakCount:t,classificationField:a,classificationMethod:u,normalizationField:"field"===o?r:void 0,normalizationType:o,standardDeviationInterval:s})}function S(n,e){let t=n.classBreaks;const l=t.length,i=t[0]?.minValue,a=t[l-1]?.maxValue,r="standard-deviation"===e,u=o;return t=t.map((n=>{const e=n.label,t={minValue:n.minValue,maxValue:n.maxValue,label:e};if(r&&e){const n=e.match(u),l=n?.map((n=>+n.trim()))??[];2===l.length?(t.minStdDev=l[0],t.maxStdDev=l[1],l[0]<0&&l[1]>0&&(t.hasAvg=!0)):1===l.length&&(e.includes("<")?(t.minStdDev=null,t.maxStdDev=l[0]):e.includes(">")&&(t.minStdDev=l[0],t.maxStdDev=null))}return t})),{minValue:i,maxValue:a,classBreakInfos:t,normalizationTotal:n.normalizationTotal}}function M(n,e){const t=C(n,e);if(null==t.min&&null==t.max)return{bins:[],minValue:t.min,maxValue:t.max,normalizationTotal:e.normalizationTotal};const l=t.intervals,i=t.min??0,a=t.max??0,r=l.map(((n,e)=>({minValue:l[e][0],maxValue:l[e][1],count:0})));for(const o of n)if(null!=o&&o>=i&&o<=a){const n=k(l,o);n>-1&&r[n].count++}return{bins:r,minValue:i,maxValue:a,normalizationTotal:e.normalizationTotal}}function C(n,e){const{field:t,classificationMethod:l,standardDeviationInterval:i,normalizationType:a,normalizationField:o,normalizationTotal:u,minValue:s,maxValue:c}=e,f=e.numBins||r;let p=null,v=null,b=null;if((!l||"equal-interval"===l)&&!a){if(null!=s&&null!=c)p=s,v=c;else{const e=d({values:n,minValue:s,maxValue:c,useSampleStdDev:!a,supportsNullCount:m({normalizationType:a,normalizationField:o,minValue:s,maxValue:c})});p=e.min??null,v=e.max??null}b=$(p??0,v??0,f)}else{const{classBreaks:e}=D(n,{field:t,normalizationType:a,normalizationField:o,normalizationTotal:u,classificationMethod:l,standardDeviationInterval:i,minValue:s,maxValue:c,numClasses:f});p=e[0].minValue,v=e[e.length-1].maxValue,b=e.map((n=>[n.minValue,n.maxValue]))}return{min:p,max:v,intervals:b}}function k(n,e){let t=-1;for(let l=n.length-1;l>=0;l--){if(e>=n[l][0]){t=l;break}}return t}function $(n,e,t){const l=(e-n)/t,i=[];let a,r=n;for(let o=1;o<=t;o++)a=r+l,a=Number(a.toFixed(16)),i.push([r,o===t?e:a]),r=a;return i}export{D as calculateClassBreaks,M as calculateHistogram,p as calculatePercentile,d as calculateStatistics,f as calculateStringStatistics,y as calculateUniqueValuesCount,N as createClassBreaksDefinition,F as createUVResult,v as getAttributeComparator,$ as getEqualIntervalBins,z as getNormalizedValue,m as isNullCountSupported,c as processNullValue,g as processSummaryStatisticsResult,S as resolveCBResult,s as statisticTypes};
5
+ import n from"../rest/support/ClassBreaksDefinition.js";import{createGenerateRendererClassBreaks as e}from"../rest/support/generateRendererUtils.js";const t="<Null>",l="equal-interval",i=1,a=5,r=10,o=/\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*/gi,u=new Set(["esriFieldTypeInteger","esriFieldTypeSmallInteger","esriFieldTypeSingle","esriFieldTypeDouble"]),s=["min","max","avg","stddev","count","sum","variance","nullcount","median"];function c(n){return null==n||"string"==typeof n&&!n?t:n}function m(n){const e=null!=n.normalizationField||null!=n.normalizationType,t=null!=n.minValue||null!=n.maxValue,l=!!n.sqlExpression&&n.supportsSQLExpression;return!e&&!t&&!l}function f(n){const e=n.returnDistinct?[...new Set(n.values)]:n.values,t=e.filter((n=>null!=n)).sort(),l=t.length,i={count:l,min:t[0],max:t[l-1]};return n.supportsNullCount&&(i.nullcount=e.length-l),n.percentileParams&&(i.median=p(e,n.percentileParams)),i}function d(n){const{values:e,useSampleStdDev:t,supportsNullCount:l}=n;let i=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,r=null,o=null,u=null,s=null,c=0;const m=null==n.minValue?-1/0:n.minValue,f=null==n.maxValue?1/0:n.maxValue;for(const p of e)Number.isFinite(p)?p>=m&&p<=f&&(r=null===r?p:r+p,i=Math.min(i,p),a=Math.max(a,p),c++):"string"==typeof p&&c++;if(c&&null!=r){o=r/c;let n=0;for(const t of e)Number.isFinite(t)&&t>=m&&t<=f&&(n+=(t-o)**2);s=t?c>1?n/(c-1):0:c>0?n/c:0,u=Math.sqrt(s)}else i=null,a=null;const d={avg:o,count:c,max:a,min:i,stddev:u,sum:r,variance:s};return l&&(d.nullcount=e.length-c),n.percentileParams&&(d.median=p(e,n.percentileParams)),d}function p(n,e){const{fieldType:t,value:l,orderBy:i,isDiscrete:a}=e,r=v(t,"desc"===i);if(0===(n=[...n].filter((n=>null!=n)).sort(((n,e)=>r(n,e)))).length)return null;if(l<=0)return n[0];if(l>=1)return n[n.length-1];const o=(n.length-1)*l,u=Math.floor(o),s=u+1,c=o%1,m=n[u],f=n[s];return s>=n.length||a||"string"==typeof m||"string"==typeof f?m:m*(1-c)+f*c}function v(n,e){const t=e?1:-1,l=h(e),i=V(e);if(!(!!n&&["esriFieldTypeDate","esriFieldTypeString","esriFieldTypeGUID","esriFieldTypeGlobalID",...u].includes(n)))return(n,e)=>"number"==typeof n&&"number"==typeof e?l(n,e):"string"==typeof n&&"string"==typeof e?i(n,e):t;if("esriFieldTypeDate"===n)return(n,e)=>{const i=new Date(n).getTime(),a=new Date(e).getTime();return isNaN(i)||isNaN(a)?t:l(i,a)};if(u.has(n))return(n,e)=>l(n,e);if("esriFieldTypeString"===n)return(n,e)=>i(n,e);if("esriFieldTypeGUID"===n||"esriFieldTypeGlobalID"===n){const n=V(e);return(e,t)=>n(T(e),T(t))}return e?(n,e)=>1:(n,e)=>-1}function b(n,e,t){if(t){if(null==n)return null==e?0:1;if(null==e)return-1}else{if(null==n)return null==e?0:-1;if(null==e)return 1}return null}function V(n){return n?(n,e)=>{const t=b(n,e,!0);return null!=t?t:(n=n.toUpperCase())>(e=e.toUpperCase())?-1:n<e?1:0}:(n,e)=>{const t=b(n,e,!1);return null!=t?t:(n=n.toUpperCase())<(e=e.toUpperCase())?-1:n>e?1:0}}function h(n){return n?(n,e)=>{const t=b(n,e,!0);return null!=t?t:e-n}:(n,e)=>{const t=b(n,e,!1);return null!=t?t:n-e}}function T(n){return n.substr(24,12)+n.substr(19,4)+n.substr(16,2)+n.substr(14,2)+n.substr(11,2)+n.substr(9,2)+n.substr(6,2)+n.substr(4,2)+n.substr(2,2)+n.substr(0,2)}function g(n,e){let t;for(t in n)s.includes(t)&&(Number.isFinite(n[t])||(n[t]=null));return e?(["avg","stddev","variance"].forEach((e=>{null!=n[e]&&(n[e]=Math.ceil(n[e]??0))})),n):n}function x(n){const e={};for(let t of n)(null==t||"string"==typeof t&&""===t.trim())&&(t=null),null==e[t]?e[t]={count:1,data:t}:e[t].count++;return{count:e}}function y(n){return"coded-value"!==n?.type?[]:n.codedValues.map((n=>n.code))}function F(n,e,t,l){const i=n.count,a=[];if(t&&e){const n=[],t=y(e[0]);for(const i of t)if(e[1]){const t=y(e[1]);for(const a of t)if(e[2]){const t=y(e[2]);for(const e of t)n.push(`${c(i)}${l}${c(a)}${l}${c(e)}`)}else n.push(`${c(i)}${l}${c(a)}`)}else n.push(i);for(const e of n)i.hasOwnProperty(e)||(i[e]={data:e,count:0})}for(const r in i){const n=i[r];a.push({value:n.data,count:n.count,label:n.label})}return{uniqueValueInfos:a}}function z(n,e,t,l){let i=null;switch(e){case"log":0!==n&&(i=Math.log(n)*Math.LOG10E);break;case"percent-of-total":Number.isFinite(l)&&0!==l&&(i=n/l*100);break;case"field":Number.isFinite(t)&&0!==t&&(i=n/t);break;case"natural-log":n>0&&(i=Math.log(n));break;case"square-root":n>0&&(i=n**.5)}return i}function D(n,t){const l=N({field:t.field,normalizationType:t.normalizationType,normalizationField:t.normalizationField,classificationMethod:t.classificationMethod,standardDeviationInterval:t.standardDeviationInterval,breakCount:t.numClasses||a});return n=I(n,t.minValue,t.maxValue),e({definition:l,values:n,normalizationTotal:t.normalizationTotal})}function I(n,e,t){const l=e??-1/0,i=t??1/0;return n.filter((n=>Number.isFinite(n)&&n>=l&&n<=i))}function N(e){const{breakCount:t,field:a,normalizationField:r,normalizationType:o}=e,u=e.classificationMethod||l,s="standard-deviation"===u?e.standardDeviationInterval||i:void 0;return new n({breakCount:t,classificationField:a,classificationMethod:u,normalizationField:"field"===o?r:void 0,normalizationType:o,standardDeviationInterval:s})}function S(n,e){let t=n.classBreaks;const l=t.length,i=t[0]?.minValue,a=t[l-1]?.maxValue,r="standard-deviation"===e,u=o;return t=t.map((n=>{const e=n.label,t={minValue:n.minValue,maxValue:n.maxValue,label:e};if(r&&e){const n=e.match(u),l=n?.map((n=>+n.trim()))??[];2===l.length?(t.minStdDev=l[0],t.maxStdDev=l[1],l[0]<0&&l[1]>0&&(t.hasAvg=!0)):1===l.length&&(e.includes("<")?(t.minStdDev=null,t.maxStdDev=l[0]):e.includes(">")&&(t.minStdDev=l[0],t.maxStdDev=null))}return t})),{minValue:i,maxValue:a,classBreakInfos:t,normalizationTotal:n.normalizationTotal}}function M(n,e){const t=C(n,e);if(null==t.min&&null==t.max)return{bins:[],minValue:t.min,maxValue:t.max,normalizationTotal:e.normalizationTotal};const l=t.intervals,i=t.min??0,a=t.max??0,r=l.map(((n,e)=>({minValue:l[e][0],maxValue:l[e][1],count:0})));for(const o of n)if(null!=o&&o>=i&&o<=a){const n=k(l,o);n>-1&&r[n].count++}return{bins:r,minValue:i,maxValue:a,normalizationTotal:e.normalizationTotal}}function C(n,e){const{field:t,classificationMethod:l,standardDeviationInterval:i,normalizationType:a,normalizationField:o,normalizationTotal:u,minValue:s,maxValue:c}=e,f=e.numBins||r;let p=null,v=null,b=null;if((!l||"equal-interval"===l)&&!a){if(null!=s&&null!=c)p=s,v=c;else{const e=d({values:n,minValue:s,maxValue:c,useSampleStdDev:!a,supportsNullCount:m({normalizationType:a,normalizationField:o,minValue:s,maxValue:c})});p=e.min??null,v=e.max??null}b=$(p??0,v??0,f)}else{const{classBreaks:e}=D(n,{field:t,normalizationType:a,normalizationField:o,normalizationTotal:u,classificationMethod:l,standardDeviationInterval:i,minValue:s,maxValue:c,numClasses:f});p=e[0].minValue,v=e[e.length-1].maxValue,b=e.map((n=>[n.minValue,n.maxValue]))}return{min:p,max:v,intervals:b}}function k(n,e){let t=-1;for(let l=n.length-1;l>=0;l--){if(e>=n[l][0]){t=l;break}}return t}function $(n,e,t){const l=(e-n)/t,i=[];let a,r=n;for(let o=1;o<=t;o++)a=r+l,a=Number(a.toFixed(16)),i.push([r,o===t?e:a]),r=a;return i}export{D as calculateClassBreaks,M as calculateHistogram,p as calculatePercentile,d as calculateStatistics,f as calculateStringStatistics,x as calculateUniqueValuesCount,N as createClassBreaksDefinition,F as createUVResult,v as getAttributeComparator,$ as getEqualIntervalBins,z as getNormalizedValue,m as isNullCountSupported,c as processNullValue,g as processSummaryStatisticsResult,S as resolveCBResult,s as statisticTypes};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import r from"../config.js";import has from"../core/has.js";import{isAborted as e}from"../core/promiseUtils.js";import{getOrigin as o,hasSameOrigin as t,getAppUrl as n,urlToObject as s}from"../core/urlUtils.js";function i(r,o,t=!1,n){return new Promise(((s,i)=>{if(e(n))return void i(c());let a=()=>{m(),i(new Error(`Unable to load ${o}`))},u=()=>{const e=r;m(),s(e)},l=()=>{if(!r)return;const e=r;m(),e.src="",i(c())};const m=()=>{has("esri-image-decode")||(r.removeEventListener("error",a),r.removeEventListener("load",u)),a=null,u=null,r=null,null!=n&&n.removeEventListener("abort",l),l=null,t&&URL.revokeObjectURL(o)};null!=n&&n.addEventListener("abort",l),has("esri-image-decode")?r.decode().then(u,a):(r.addEventListener("error",a),r.addEventListener("load",u))}))}function c(){try{return new DOMException("Aborted","AbortError")}catch{const r=new Error;return r.name="AbortError",r}}function a(e){r.request.crossOriginNoCorsDomains||(r.request.crossOriginNoCorsDomains={});const t=r.request.crossOriginNoCorsDomains;for(let r of e)r=r.toLowerCase(),/^https?:\/\//.test(r)?t[o(r)??""]=0:(t[o("http://"+r)??""]=0,t[o("https://"+r)??""]=0)}function u(e){const s=r.request.crossOriginNoCorsDomains;if(s){let r=o(e);if(r)return r=r.toLowerCase(),!t(r,n())&&s[r]<Date.now()-36e5}return!1}async function l(e){const t=r.request.crossOriginNoCorsDomains,n=o(e);t&&n&&(t[n.toLowerCase()]=Date.now());const i=s(e);e=i.path,"json"===i.query?.f&&(e+="?f=json");try{await fetch(e,{mode:"no-cors",credentials:"include"})}catch{}}export{u as isNoCorsRequestRequired,i as loadImageAsync,a as registerNoCorsDomains,l as sendNoCorsRequest};
5
+ import e from"../config.js";import has from"../core/has.js";import{isAborted as r}from"../core/promiseUtils.js";import{getOrigin as o,hasSameOrigin as t,getAppUrl as n,urlToObject as s}from"../core/urlUtils.js";function i(e,o,t=!1,n){return new Promise(((s,i)=>{if(r(n))return void i(c());let a=()=>{l(),i(new Error(`Unable to load ${o}`))},u=()=>{const r=e;l(),s(r)},m=()=>{if(!e)return;const r=e;l(),r.src="",i(c())};const l=()=>{has("esri-image-decode")||(e.removeEventListener("error",a),e.removeEventListener("load",u)),a=null,u=null,e=null,null!=n&&n.removeEventListener("abort",m),m=null,t&&URL.revokeObjectURL(o)};null!=n&&n.addEventListener("abort",m),has("esri-image-decode")?e.decode().then(u,a):(e.addEventListener("error",a),e.addEventListener("load",u))}))}function c(){try{return new DOMException("Aborted","AbortError")}catch{const e=new Error;return e.name="AbortError",e}}const a="Timeout exceeded";function u(){return new Error(a)}function m(e){return"object"==typeof e&&!!e&&"message"in e&&e.message===a}function l(r){e.request.crossOriginNoCorsDomains||(e.request.crossOriginNoCorsDomains={});const t=e.request.crossOriginNoCorsDomains;for(let e of r)e=e.toLowerCase(),/^https?:\/\//.test(e)?t[o(e)??""]=0:(t[o("http://"+e)??""]=0,t[o("https://"+e)??""]=0)}function d(r){const s=e.request.crossOriginNoCorsDomains;if(s){let e=o(r);if(e)return e=e.toLowerCase(),!t(e,n())&&s[e]<Date.now()-36e5}return!1}async function f(r){const t=e.request.crossOriginNoCorsDomains,n=o(r);t&&n&&(t[n.toLowerCase()]=Date.now());const i=s(r);r=i.path,"json"===i.query?.f&&(r+="?f=json");try{await fetch(r,{mode:"no-cors",credentials:"include"})}catch{}}export{u as createTimeoutError,d as isNoCorsRequestRequired,m as isTimeoutError,i as loadImageAsync,l as registerNoCorsDomains,f as sendNoCorsRequest};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- const c="20230531",e="89ce9b45825f265dc4f8cee62271da5c3694c01c";export{c as buildDate,e as commitHash};
5
+ const e="20230605",f="4cfe901fa802198fee41b77e223b90a2baef3175";export{e as buildDate,f 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.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import"../../symbols.js";import{bidiText as t}from"../../core/BidiText.js";import{getFontFamily as r}from"../../core/fontUtils.js";import{clone as a}from"../../core/lang.js";import o from"../../core/Logger.js";import i from"../../core/RandomLCG.js";import{pt2px as s,px2pt as n}from"../../core/screenUtils.js";import{create as l,expandPointInPlace as c}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as m}from"../../geometry/support/boundsUtils.js";import{createRendererExpression as f}from"../../support/arcadeOnDemand.js";import{Placement as y}from"./CIMPlacements.js";import{DEFAULT_TEXT_HEIGHT as u,horizontalAlignment2HAlign as h,verticalAlignment2VAlign as p,EnvDrawHelper as M,Transformation as d,CanvasDrawHelper as S,DEFAULT_HATCH_FILL_SEPARATION as b,lineGapType2LineHeight as g}from"./CIMSymbolDrawHelper.js";import{LineCapStyle as C,LineJoinStyle as I,BlockProgression as k,FontEffects as x,FontEncoding as w,FontType as P,GlyphHinting as L,TextReadingDirection as v,VerticalGlyphOrientation as F,BillBoardMode as D,TextureFilter as T,ExtremityPlacement as G}from"./enums.js";import{getValue as z,fromCIMFontStyle as E,fromCIMFontDecoration as O,isCIMMarkerStrokePlacement as A,attributesToFields as N,analyzeTextParts as R,assignTextValuesFromFeature as j,isGeometryEngineRequired as V,importGeometryEngine as B}from"./utils.js";import X from"../../views/2d/arcade/callExpressionWithFeature.js";import{C_INFINITY as _}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{GLYPH_SIZE as H,MAGIC_LABEL_LINE_HEIGHT as Y,RANDOM_INSIDE_POLYGON_TEXTURE_SIZE as U}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as $}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import q from"../Font.js";const W=Math.PI,J=W/2,K=Math.PI/180,Q=96/72,Z=4,ee=o.getLogger("esri.symbols.cim.CIMSymbolHelper");function te(e){if(!e||!e.type)return null;let t;switch(e.type){case"cim":return e.data;case"web-style":return e;case"simple-marker":{const r=ne.fromSimpleMarker(e);if(!r)return null;t=r;break}case"picture-marker":t=ne.fromPictureMarker(e);break;case"simple-line":t=ne.fromSimpleLineSymbol(e);break;case"simple-fill":t=ne.fromSimpleFillSymbol(e);break;case"picture-fill":t=ne.fromPictureFillSymbol(e);break;case"text":t=ne.fromTextSymbol(e)}return{type:"CIMSymbolReference",symbol:t}}function re(e,t,r){switch(t.type){case"CIMSymbolReference":return re(e,t.symbol,r);case"CIMPointSymbol":null==r&&(r={x:0,y:0}),e.drawSymbol(t,r);break;case"CIMLineSymbol":null==r&&(r={paths:[[[0,0],[10,0]]]}),e.drawSymbol(t,r);break;case"CIMPolygonSymbol":null==r&&(r={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]}),e.drawSymbol(t,r);break;case"CIMTextSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMVectorMarker":{const r=new y;e.drawMarker(t,r);break}}return e.envelope()}function ae(e){if(!e)return 0;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAtExtremities":case"CIMMarkerPlacementAtMeasuredUnits":case"CIMMarkerPlacementAtRatioPositions":case"CIMMarkerPlacementOnLine":case"CIMMarkerPlacementOnVertices":return Math.abs(e.offset);default:return 0}}function oe(e){if(!e)return 0;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectExtension":case"CIMGeometricEffectRadial":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(z(e.offsetX)),Math.abs(z(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude);case"CIMGeometricEffectDonut":return Math.abs(e.width)}}function ie(e){if(!e)return 0;let t=0;for(const r of e)t+=oe(r);return t}class se{getSymbolInflateSize(e,t,r,a,o){return e||(e=[0,0,0,0]),t?this._getInflateSize(e,t,r,a,o):e}static safeSize(e){const t=Math.max(Math.abs(e[0]),Math.abs(e[2])),r=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+r*r)}_vectorMarkerBounds(e,t,r,a){let o=!0;const i=l();if(t&&t.markerGraphics)for(const s of t.markerGraphics){const t=[0,0,0,0];s.geometry&&(m(i,s.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,s.symbol,r,0,a),i[0]+=t[0],i[1]+=t[1],i[2]+=t[2],i[3]+=t[3],o?(e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],o=!1):(e[0]=Math.min(e[0],i[0]),e[1]=Math.min(e[1],i[1]),e[2]=Math.max(e[2],i[2]),e[3]=Math.max(e[3],i[3])))}return e}_getInflateSize(e,t,r,a,o){if(Se(t)){const i=this._getLayersInflateSize(e,t.symbolLayers,r,a,o),s=ie(t.effects);return s>0&&(i[0]-=s,i[1]-=s,i[2]+=s,i[3]+=s),i}return this._getTextInflatedSize(e,t,o)}_getLayersInflateSize(e,t,r,a,o){let i=!0;if(!t)return e;for(const s of t){if(!s)continue;let t=[0,0,0,0];switch(s.type){case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=s;let r=e.width;null!=r&&(e.capStyle===C.Square||e.joinStyle===I.Miter?r/=1.4142135623730951:r/=2,t[0]=-r,t[1]=-r,t[2]=r,t[3]=r);break}case"CIMCharacterMarker":case"CIMVectorMarker":case"CIMPictureMarker":{const e=s;if("CIMVectorMarker"===s.type){const e=s;if(t=this._vectorMarkerBounds(t,e,r,o),e.frame){const r=(e.frame.xmin+e.frame.xmax)/2,a=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=r,t[1]-=a,t[2]-=r,t[3]-=a,null!=e.size){const r=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=r,t[1]*=r,t[2]*=r,t[3]*=r}}}else if("CIMPictureMarker"===s.type){const a=s,o=r.getResource(a.url);let i=1;if(null!=o&&o.height&&(i=o.width/o.height),null!=e.size){const r=e.size/2,o=e.size*i*a.scaleX/2;t=[-o,-r,o,r]}}else if(null!=e.size){const r=e.size/2;t=[-r,-r,r,r]}if(e.anchorPoint){let r,a;"Absolute"===e.anchorPointUnits?(r=e.anchorPoint.x,a=e.anchorPoint.y):(r=e.anchorPoint.x*(t[2]-t[0]),a=e.anchorPoint.y*(t[3]-t[1])),t[0]-=r,t[1]-=a,t[2]-=r,t[3]-=a}let i=z(e.rotation);if(e.rotateClockwise&&(i=-i),a&&(i-=a),i){const e=K*i,r=Math.cos(e),a=Math.sin(e),o=l([_,_,-_,-_]);c(o,[t[0]*r-t[1]*a,t[0]*a+t[1]*r]),c(o,[t[0]*r-t[3]*a,t[0]*a+t[3]*r]),c(o,[t[2]*r-t[1]*a,t[2]*a+t[1]*r]),c(o,[t[2]*r-t[3]*a,t[2]*a+t[3]*r]),t=o}let n=z(e.offsetX),m=z(e.offsetY);if(a){const e=K*a,t=Math.cos(e),r=Math.sin(e),o=n*r+m*t;n=n*t-m*r,m=o}t[0]+=n,t[1]+=m,t[2]+=n,t[3]+=m;const f=ae(e.markerPlacement);f>0&&(t[0]-=f,t[1]-=f,t[2]+=f,t[3]+=f);break}}const n=ie(s.effects);n>0&&(t[0]-=n,t[1]-=n,t[2]+=n,t[3]+=n),i?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],i=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}_getTextInflatedSize(e,r,a){const o=r.height??u;if(e[0]=-o/2,e[1]=-o/2,e[2]=o/2,e[3]=o/2,!a)return e;const i=a.get(r);if(!i)return e;const{text:s,mosaicItem:n}=i;if(!n?.glyphMosaicItems?.length)return e;const{lineGapType:l,lineGap:c}=r,m=l?g(l,c??0,o):0,f=t(s)[1],y=n.glyphMosaicItems,M="CIMBackgroundCallout"===r.callout?.type,d=$(y,f,{scale:o/H,angle:z(r.angle),xOffset:z(r.offsetX),yOffset:z(r.offsetY),hAlign:h(r.horizontalAlignment),vAlign:p(r.verticalAlignment),maxLineWidth:512,lineHeight:Y*Math.max(.25,Math.min(m||1,4)),decoration:r.font.decoration||"none",isCIM:!0,hasBackground:M}).boundsT;return e[0]=d.x-d.halfWidth,e[1]=-d.y-d.halfHeight,e[2]=d.x+d.halfWidth,e[3]=-d.y+d.halfHeight,e}}class ne{static getEnvelope(e,t,r){if(!e)return null;const a=new M(r);if(Array.isArray(e)){let r;for(const o of e)r?r.union(re(a,o,t)):r=re(a,o,t);return r}return re(a,e,t)}static getTextureAnchor(e,t){const r=this.getEnvelope(e,null,t);if(!r)return[0,0,0];const a=(r.x+.5*r.width)*Q,o=(r.y+.5*r.height)*Q,i=r.width*Q+2,s=r.height*Q+2;return[-a/i,-o/s,s]}static rasterize(e,t,r,a,o=!0){const i=r||this.getEnvelope(t,null,a);if(!i)return[null,0,0,0,0];const s=(i.x+.5*i.width)*Q,n=(i.y+.5*i.height)*Q;e.width=i.width*Q,e.height=i.height*Q,r||(e.width+=2,e.height+=2);const l=e.getContext("2d"),c=d.createScale(Q,-Q);c.translate(.5*e.width-s,.5*e.height+n);const m=new S(l,a,c);switch(t.type){case"CIMPointSymbol":{const e={type:"point",x:0,y:0};m.drawSymbol(t,e);break}case"CIMVectorMarker":{const e=new y;m.drawMarker(t,e);break}}const f=l.getImageData(0,0,e.width,e.height),u=new Uint8Array(f.data);if(o){let e;for(let t=0;t<u.length;t+=4)e=u[t+3]/255,u[t]=u[t]*e,u[t+1]=u[t+1]*e,u[t+2]=u[t+2]*e}return[u,e.width,e.height,-s/e.width,-n/e.height]}static fromTextSymbol(e){const{angle:r,color:a,font:o,haloColor:i,haloSize:s,horizontalAlignment:n,kerning:l,text:c,verticalAlignment:m,xoffset:f,yoffset:y,backgroundColor:u,borderLineColor:h,borderLineSize:p}=e;let M,d,S,b,g,C;o&&(M=o.family,d=o.style,S=o.weight,b=o.size,g=o.decoration);let I=!1;if(c){I=t(c)[1]}return(u||p)&&(C={type:"CIMBackgroundCallout",margin:null,backgroundSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",color:ue(u)},{type:"CIMSolidStroke",color:ue(h),width:p}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,anchorPointUnits:"Relative",dominantSizeAxis3D:"Y",size:10,billboardMode3D:"FaceNearPlane",frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",angle:r,blockProgression:k.BTT,depth3D:1,extrapolateBaselines:!0,fontEffects:x.Normal,fontEncoding:w.Unicode,fontFamilyName:M||"Arial",fontStyleName:he(d,S),fontType:P.Unspecified,haloSize:s,height:b,hinting:L.Default,horizontalAlignment:fe(n??"center"),kerning:l,letterWidth:100,ligatures:!0,lineGapType:"Multiple",offsetX:z(f),offsetY:z(y),strikethrough:"line-through"===g,underline:"underline"===g,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ue(a)}]},haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ue(i)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:"Normal",textDirection:I?v.RTL:v.LTR,verticalAlignment:ye(m??"baseline"),verticalGlyphOrientation:F.Right,wordSpacing:100,billboardMode3D:D.FaceNearPlane,callout:C},textString:c}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:"Display"}}static fromPictureFillSymbol(e){const{height:t,outline:r,width:a,xoffset:o,xscale:i,yoffset:s,yscale:n}=e,l=[],c={type:"CIMPolygonSymbol",symbolLayers:l};if(r){const{cap:e,join:t,miterLimit:a,width:o}=r;l.push({type:"CIMSolidStroke",color:ue(r.color),capStyle:ce(e),joinStyle:me(t),miterLimit:a,width:o})}let m=e.url;"esriPFS"===e.type&&e.imageData&&(m=e.imageData);const f="angle"in e?e.angle??0:0,y=(a??0)*(i||1),u=(t??0)*(n||1);return l.push({type:"CIMPictureFill",invertBackfaceTexture:!1,scaleX:1,textureFilter:T.Picture,tintColor:null,url:m,height:u,width:y,offsetX:z(o),offsetY:z(s),rotation:z(-f),colorSubstitutions:null}),c}static fromSimpleFillSymbol(e){const{color:t,style:r,outline:o}=e,i=[],s={type:"CIMPolygonSymbol",symbolLayers:i};let l=null;if(o){const{cap:e,join:t,style:r}=o;"solid"!==r&&"none"!==r&&"esriSLSSolid"!==r&&"esriSLSNull"!==r&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:de(r,e),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]),i.push({type:"CIMSolidStroke",color:"esriSLSNull"!==r&&"none"!==r?ue(o.color):[0,0,0,0],capStyle:ce(e),joinStyle:me(t),miterLimit:o.miterLimit,width:o.width,effects:l})}if(r&&"solid"!==r&&"none"!==r&&"esriSFSSolid"!==r&&"esriSFSNull"!==r){const e={type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",color:ue(t),capStyle:C.Butt,joinStyle:I.Miter,width:.75}]};let o=0;const s=n(ge(r)?8:10);switch(r){case"vertical":case"esriSFSVertical":o=90;break;case"forward-diagonal":case"esriSFSForwardDiagonal":case"diagonal-cross":case"esriSFSDiagonalCross":o=-45;break;case"backward-diagonal":case"esriSFSBackwardDiagonal":o=45;break;case"cross":case"esriSFSCross":o=0}i.push({type:"CIMHatchFill",lineSymbol:e,offsetX:0,offsetY:0,rotation:o,separation:s}),"cross"===r||"esriSFSCross"===r?i.push({type:"CIMHatchFill",lineSymbol:a(e),offsetX:0,offsetY:0,rotation:90,separation:s}):"diagonal-cross"!==r&&"esriSFSDiagonalCross"!==r||i.push({type:"CIMHatchFill",lineSymbol:a(e),offsetX:0,offsetY:0,rotation:45,separation:s})}else!r||"solid"!==r&&"esriSFSSolid"!==r||i.push({type:"CIMSolidFill",enable:!0,color:ue(t)});return s}static fromSimpleLineSymbol(e){const{cap:t,color:r,join:a,marker:o,miterLimit:i,style:s,width:n}=e;let l=null;"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:de(s,t),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]);const c=[];if(o){let e;switch(o.placement){case"begin-end":e=G.Both;break;case"begin":e=G.JustBegin;break;case"end":e=G.JustEnd;break;default:e=G.None}const t=ne.fromSimpleMarker(o,n,r).symbolLayers[0];t.markerPlacement={type:"CIMMarkerPlacementAtExtremities",angleToLine:!0,offset:0,extremityPlacement:e,offsetAlongLine:0},c.push(t)}return c.push({type:"CIMSolidStroke",color:"none"!==s&&"esriSLSNull"!==s?ue(r):[0,0,0,0],capStyle:ce(t),joinStyle:me(a),miterLimit:i,width:n,effects:l}),{type:"CIMLineSymbol",symbolLayers:c}}static fromPictureMarker(e){const{angle:t,height:r,width:a,xoffset:o,yoffset:i}=e;let s=e.url;return"esriPMS"===e.type&&e.imageData&&(s=e.imageData),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMPictureMarker",invertBackfaceTexture:!1,scaleX:1,textureFilter:T.Picture,tintColor:null,url:s,size:r,width:a,offsetX:z(o),offsetY:z(i),rotation:z(-t)}]}}static fromSimpleMarker(e,t,r){const{style:a}=e,o=e.color??r;if("path"===a){const t=[];if("outline"in e&&e.outline){const r=e.outline;t.push({type:"CIMSolidStroke",enable:!0,width:s(Math.round(n(r.width))),color:ue(r.color)})}t.push({type:"CIMSolidFill",enable:!0,color:ue(o),path:e.path});const[r,a]=be("square");return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:r,markerGraphics:[{type:"CIMMarkerGraphic",geometry:a,symbol:{type:"CIMPolygonSymbol",symbolLayers:t}}]}]}}const[i,l]=be(a);let c;if(l&&i){const r=[];if("outline"in e&&e.outline){const t=e.outline;r.push({type:"CIMSolidStroke",enable:!0,width:null!=t.width&&t.width>.667?s(Math.round(n(t.width))):t.width,color:ue(t.color)})}else!t||"line-marker"!==e.type||"cross"!==e.style&&"x"!==e.style||r.push({type:"CIMSolidStroke",enable:!0,width:t,color:ue(o)});r.push({type:"CIMSolidFill",enable:!0,color:ue(o)});const a={type:"CIMPolygonSymbol",symbolLayers:r};c={type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6*t),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:i,markerGraphics:[{type:"CIMMarkerGraphic",geometry:l,symbol:a}]}]}}return c}static fromCIMHatchFill(e,t){const r=t*(e.separation??b),o=r/2,i=a(e.lineSymbol);i.symbolLayers?.forEach((e=>{switch(e.type){case"CIMSolidStroke":null!=e.width&&(e.width*=t),e.effects?.forEach((e=>{"CIMGeometricEffectDashes"===e.type&&(e.dashTemplate=e.dashTemplate.map((e=>e*t)))}));break;case"CIMVectorMarker":{null!=e.size&&(e.size*=t);const r=e.markerPlacement;null!=r&&"placementTemplate"in r&&(r.placementTemplate=r.placementTemplate.map((e=>e*t)));break}}}));let s=this._getLineSymbolPeriod(i)||Z;for(;s<Z;)s*=2;const n=s/2;return{type:"CIMVectorMarker",frame:{xmin:-n,xmax:n,ymin:-o,ymax:o},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:[[[-n,0],[n,0]]]},symbol:i}],size:r}}static fetchResources(e,t,a){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const r=e.symbolLayers;if(!r)return;for(const e of r)switch(Ie(e,t,a),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&a.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const r=e.markerGraphics;if(!r)continue;for(const e of r)if(e){const r=e.symbol;r&&ne.fetchResources(r,t,a)}}}break}case"CIMTextSymbol":{const o=e,i=r(o.fontFamilyName),{style:s,weight:n}=E(o.fontStyleName),l=O(o);a.push(t.loadFont(new q({family:i,style:s,weight:n,decoration:l})).catch((()=>{ee.error("unsupported font in preview")})));break}}}static _getLineSymbolPeriod(e){if(e){const t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers)for(const r of e.symbolLayers)if(r){const e=this._getEffectsRepeat(r.effects);if(e)return e;switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=this._getPlacementRepeat(r.markerPlacement);if(e)return e}}}}return 0}static _getEffectsRepeat(e){if(e)for(const t of e)if(t)switch(t.type){case"CIMGeometricEffectDashes":{const e=t.dashTemplate;if(e&&e.length){let t=0;for(const r of e)t+=r;return 1&e.length&&(t*=2),t}break}case"CIMGeometricEffectWave":return t.period;default:ee.error(`unsupported geometric effect type ${t.type}`)}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAlongLineVariableSize":{const t=e.placementTemplate;if(t&&t.length){let e=0;for(const r of t)e+=+r;return 1&t.length&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){const t=e.markerPlacement,r={...e};r.markerPlacement=null,r.anchorPoint=null;const a=Math.abs(t.stepX),o=Math.abs(t.stepY),s=(t.randomness??100)/100;let l,c,m,f;if("Random"===t.gridType){const e=n(U),r=Math.max(Math.floor(e/a),1),y=Math.max(Math.floor(e/o),1);l=r*a/2,c=y*o/2,m=2*c;const u=new i(t.seed),h=s*a/1.5,p=s*o/1.5;f=[];for(let t=0;t<r;t++)for(let e=0;e<y;e++){const r=t*a-l+h*(.5-u.getFloat()),i=e*o-c+p*(.5-u.getFloat());f.push({x:r,y:i}),0===t&&f.push({x:r+2*l,y:i}),0===e&&f.push({x:r,y:i+2*c})}}else!0===t.shiftOddRows?(l=a/2,c=o,m=2*o,f=[{x:-l,y:0},{x:l,y:0},{x:0,y:c},{x:0,y:-c}]):(l=a/2,c=o/2,m=o,f=[{x:-a,y:0},{x:0,y:-o},{x:-a,y:-o},{x:0,y:0},{x:a,y:0},{x:0,y:o},{x:a,y:o},{x:-a,y:o},{x:a,y:-o}]);return{type:"CIMVectorMarker",frame:{xmin:-l,xmax:l,ymin:-c,ymax:c},markerGraphics:f.map((e=>({type:"CIMMarkerGraphic",geometry:e,symbol:{type:"CIMPointSymbol",symbolLayers:[r]}}))),size:m}}static getSize(e){if(e)switch(e.type){case"CIMTextSymbol":return e.height;case"CIMPointSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=r.size;null!=e&&e>t&&(t=e);break}}return t}case"CIMLineSymbol":case"CIMPolygonSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=r.width;null!=e&&e>t&&(t=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(r.markerPlacement&&A(r.markerPlacement)){const e=r.size;null!=e&&e>t&&(t=e)}}return t}}}static getMarkerScaleRatio(e){if(e&&"CIMVectorMarker"===e.type)if(!1!==e.scaleSymbolsProportionally&&e.frame&&null!=e.size){const t=e.frame.ymax-e.frame.ymin;return e.size/t}return 1}}class le{static findApplicableOverrides(e,t,r){if(e&&t){if(e.primitiveName){let a=!1;for(const t of r)if(t.primitiveName===e.primitiveName){a=!0;break}if(!a)for(const o of t)o.primitiveName===e.primitiveName&&r.push(o)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const a of e.effects)le.findApplicableOverrides(a,t,r);if(e.symbolLayers)for(const a of e.symbolLayers)le.findApplicableOverrides(a,t,r);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":if(e.effects)for(const a of e.effects)le.findApplicableOverrides(a,t,r);if(e.markerPlacement&&le.findApplicableOverrides(e.markerPlacement,t,r),"CIMVectorMarker"===e.type){if(e.markerGraphics)for(const a of e.markerGraphics)le.findApplicableOverrides(a,t,r),le.findApplicableOverrides(a.symbol,t,r)}else"CIMCharacterMarker"===e.type?le.findApplicableOverrides(e.symbol,t,r):"CIMHatchFill"===e.type?le.findApplicableOverrides(e.lineSymbol,t,r):"CIMPictureMarker"===e.type&&le.findApplicableOverrides(e.animatedSymbolProperties,t,r)}}}static findEffectOverrides(e,t,r){if(!t||!e)return;const a=e.length;for(let o=0;o<a;o++){const a=e[o],i=a?.primitiveName;if(i){let e=!1;for(const t of r)if(t.primitiveName===i){e=!0;break}if(!e)for(const a of t)a.primitiveName===i&&r.push(a)}}}static async resolveSymbolOverrides(e,t,r,o,i,s,n){if(!e||!e.symbol)return null;let{symbol:l,primitiveOverrides:c}=e;const m=!!c;if(!m&&!o)return l;l=a(l);let f=!0;if(t||(t={attributes:{}},f=!1),m){if(f||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$feature")))),n||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$view")))),c.length>0){const e=N(t.attributes);await le.evaluateOverrides(c,t,{spatialReference:r,fields:e,geometryType:i},s,n)}le.applyOverrides(l,c)}return o&&le.applyDictionaryTextOverrides(l,t,o),l}static async evaluateOverrides(e,t,r,a,o){if(!t)return;let i;for(const s of e){const e=s.valueExpressionInfo;if(e&&r&&r.geometryType){i||(i=[]),s.value=void 0;const n=f(e.expression,r.spatialReference,r.fields).then((e=>{s.value=X(e,t,{$view:o},r.geometryType,a)}));i.push(n)}}void 0!==i&&i.length>0&&await Promise.all(i)}static applyDictionaryTextOverrides(e,t,r,a="Normal"){if(e&&e.type)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":case"CIMTextSymbol":{const o=e.symbolLayers;if(!o)return;for(const i of o)i&&"CIMVectorMarker"===i.type&&le.applyDictionaryTextOverrides(i,t,r,"CIMTextSymbol"===e.type?e.textCase:a)}break;case"CIMVectorMarker":{const a=e.markerGraphics;if(!a)return;for(const e of a)e&&le.applyDictionaryTextOverrides(e,t,r)}break;case"CIMMarkerGraphic":{const o=e.textString;if(o&&o.includes("[")){const i=R(o,r);e.textString=j(t,i,a)}}}}static applyOverrides(e,t,r,a){if(e.primitiveName)for(const o of t)if(o.primitiveName===e.primitiveName){const t=Ce(o.propertyName);if(a&&a.push({cim:e,nocapPropertyName:t,value:e[t]}),o.expression&&(o.value=le.toValue(o.propertyName,o.expression)),r){let t=!1;for(const a of r)a.primitiveName===e.primitiveName&&(t=!0);t||r.push(o)}null!=o.value&&(e[t]=o.value)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const o of e.effects)le.applyOverrides(o,t,r,a);if(e.symbolLayers)for(const o of e.symbolLayers)le.applyOverrides(o,t,r,a);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMSolidFill":case"CIMVectorMarker":if(e.effects)for(const o of e.effects)le.applyOverrides(o,t,r,a);if("CIMVectorMarker"===e.type&&e.markerGraphics)for(const o of e.markerGraphics)le.applyOverrides(o,t,r,a),le.applyOverrides(o.symbol,t,r,a)}}static restoreOverrides(e){for(const t of e)t.cim[t.nocapPropertyName]=t.value}static buildOverrideKey(e){let t="";for(const r of e)void 0!==r.value&&(t+=`${r.primitiveName}${r.propertyName}${JSON.stringify(r.value)}`);return t}static toValue(t,r){if("DashTemplate"===t)return r.split(" ").map((e=>Number(e)));if("Color"===t){const t=new e(r).toRgba();return t[3]*=255,t}return r}}const ce=e=>{if(!e)return C.Butt;switch(e){case"butt":return C.Butt;case"square":return C.Square;case"round":return C.Round}},me=e=>{if(!e)return I.Miter;switch(e){case"miter":return I.Miter;case"round":return I.Round;case"bevel":return I.Bevel}},fe=e=>{if(null==e)return"Center";switch(e){case"left":return"Left";case"right":return"Right";case"center":return"Center"}},ye=e=>{if(null==e)return"Center";switch(e){case"baseline":return"Baseline";case"top":return"Top";case"middle":return"Center";case"bottom":return"Bottom"}},ue=e=>{if(!e)return[0,0,0,0];const{r:t,g:r,b:a,a:o}=e;return[t,r,a,255*o]},he=(e,t)=>{const r=pe(t),a=Me(e);return r&&a?`${r}-${a}`:`${r}${a}`},pe=e=>{if(!e)return"";switch(e.toLowerCase()){case"bold":case"bolder":return"bold"}return""},Me=e=>{if(!e)return"";switch(e.toLowerCase()){case"italic":case"oblique":return"italic"}return""},de=(e,t)=>{const r="butt"===t;switch(e){case"dash":case"esriSLSDash":return r?[4,3]:[3,4];case"dash-dot":case"esriSLSDashDot":return r?[4,3,1,3]:[3,4,0,4];case"dot":case"esriSLSDot":return r?[1,3]:[0,4];case"long-dash":case"esriSLSLongDash":return r?[8,3]:[7,4];case"long-dash-dot":case"esriSLSLongDashDot":return r?[8,3,1,3]:[7,4,0,4];case"long-dash-dot-dot":case"esriSLSDashDotDot":return r?[8,3,1,3,1,3]:[7,4,0,4,0,4];case"short-dash":case"esriSLSShortDash":return r?[4,1]:[3,2];case"short-dash-dot":case"esriSLSShortDashDot":return r?[4,1,1,1]:[3,2,0,2];case"short-dash-dot-dot":case"esriSLSShortDashDotDot":return r?[4,1,1,1,1,1]:[3,2,0,2,0,2];case"short-dot":case"esriSLSShortDot":return r?[1,1]:[0,2];case"solid":case"esriSLSSolid":case"none":return ee.error("Unexpected: style does not require rasterization"),[0,0];default:return ee.error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function Se(e){return void 0!==e.symbolLayers}const be=e=>{const t=100,r=50;let a,o;const i=e;if("circle"===i||"esriSMSCircle"===i){const e=.25;let t=Math.acos(1-e/r),i=Math.ceil(W/t/4);0===i&&(i=1),t=J/i,i*=4;const s=[];s.push([r,0]);for(let a=1;a<i;a++)s.push([r*Math.cos(a*t),-r*Math.sin(a*t)]);s.push([r,0]),a={rings:[s]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("cross"===i||"esriSMSCross"===i){const e=0;a={rings:[[[e,r],[e,e],[r,e],[r,-e],[e,-e],[e,-r],[-e,-r],[-e,-e],[-r,-e],[-r,e],[-e,e],[-e,r],[e,r]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("diamond"===i||"esriSMSDiamond"===i)a={rings:[[[-r,0],[0,r],[r,0],[0,-r],[-r,0]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("square"===i||"esriSMSSquare"===i)a={rings:[[[-r,-r],[-r,r],[r,r],[r,-r],[-r,-r]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("x"===i||"esriSMSX"===i){const e=0;a={rings:[[[0,e],[r-e,r],[r,r-e],[e,0],[r,e-r],[r-e,-r],[0,-e],[e-r,-r],[-r,e-r],[-e,0],[-r,r-e],[e-r,r],[0,e]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("triangle"===i||"esriSMSTriangle"===i){const e=t*.5773502691896257,r=-e,i=2/3*t,s=i-t;a={rings:[[[r,s],[0,i],[e,s],[r,s]]]},o={xmin:r,ymin:s,xmax:e,ymax:i}}else"arrow"===i&&(a={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r});return[o,a]},ge=e=>"vertical"===e||"horizontal"===e||"cross"===e||"esriSFSCross"===e||"esriSFSVertical"===e||"esriSFSHorizontal"===e,Ce=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;function Ie(e,t,r){if(!e.effects||null!=t.geometryEngine)return;if(t.geometryEnginePromise)return void r.push(t.geometryEnginePromise);V(e.effects)&&(t.geometryEnginePromise=B(),r.push(t.geometryEnginePromise),t.geometryEnginePromise.then((e=>t.geometryEngine=e)))}export{ne as CIMSymbolHelper,se as CIMSymbolInflatedSizeHelper,le as OverrideHelper,ie as getEffectsInflateSize,de as slsDashToTemplateArray,te as symbolToCIM};
5
+ import e from"../../Color.js";import"../../symbols.js";import{bidiText as t}from"../../core/BidiText.js";import{getFontFamily as r}from"../../core/fontUtils.js";import{clone as a}from"../../core/lang.js";import o from"../../core/Logger.js";import i from"../../core/RandomLCG.js";import{pt2px as s,px2pt as n}from"../../core/screenUtils.js";import{create as l,expandPointInPlace as c}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as m}from"../../geometry/support/boundsUtils.js";import{createRendererExpression as f}from"../../support/arcadeOnDemand.js";import{Placement as y}from"./CIMPlacements.js";import{DEFAULT_TEXT_HEIGHT as u,horizontalAlignment2HAlign as h,verticalAlignment2VAlign as p,EnvDrawHelper as M,Transformation as d,CanvasDrawHelper as S,DEFAULT_HATCH_FILL_SEPARATION as b,lineGapType2LineHeight as g}from"./CIMSymbolDrawHelper.js";import{LineCapStyle as C,LineJoinStyle as I,BlockProgression as k,FontEffects as x,FontEncoding as w,FontType as P,GlyphHinting as v,TextReadingDirection as L,VerticalGlyphOrientation as F,BillBoardMode as D,TextureFilter as T,ExtremityPlacement as G}from"./enums.js";import{getValue as z,fromCIMFontStyle as E,fromCIMFontDecoration as O,isCIMMarkerStrokePlacement as A,attributesToFields as N,analyzeTextParts as R,assignTextValuesFromFeature as j,isGeometryEngineRequired as V,importGeometryEngine as B}from"./utils.js";import X from"../../views/2d/arcade/callExpressionWithFeature.js";import{C_INFINITY as _}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{GLYPH_SIZE as H,MAGIC_LABEL_LINE_HEIGHT as Y,RANDOM_INSIDE_POLYGON_TEXTURE_SIZE as U}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as $}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import q from"../Font.js";const W=Math.PI,J=W/2,K=Math.PI/180,Q=96/72,Z=4,ee=o.getLogger("esri.symbols.cim.CIMSymbolHelper");function te(e){if(!e||!e.type)return null;let t;switch(e.type){case"cim":return e.data;case"web-style":return e;case"simple-marker":{const r=ne.fromSimpleMarker(e);if(!r)return null;t=r;break}case"picture-marker":t=ne.fromPictureMarker(e);break;case"simple-line":t=ne.fromSimpleLineSymbol(e);break;case"simple-fill":t=ne.fromSimpleFillSymbol(e);break;case"picture-fill":t=ne.fromPictureFillSymbol(e);break;case"text":t=ne.fromTextSymbol(e)}return{type:"CIMSymbolReference",symbol:t}}function re(e,t,r){switch(t.type){case"CIMSymbolReference":return re(e,t.symbol,r);case"CIMPointSymbol":null==r&&(r={x:0,y:0}),e.drawSymbol(t,r);break;case"CIMLineSymbol":null==r&&(r={paths:[[[0,0],[10,0]]]}),e.drawSymbol(t,r);break;case"CIMPolygonSymbol":null==r&&(r={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]}),e.drawSymbol(t,r);break;case"CIMTextSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMVectorMarker":{const r=new y;e.drawMarker(t,r);break}}return e.envelope()}function ae(e){if(!e)return 0;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAtExtremities":case"CIMMarkerPlacementAtMeasuredUnits":case"CIMMarkerPlacementAtRatioPositions":case"CIMMarkerPlacementOnLine":case"CIMMarkerPlacementOnVertices":return Math.abs(e.offset);default:return 0}}function oe(e){if(!e)return 0;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectExtension":case"CIMGeometricEffectRadial":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(z(e.offsetX)),Math.abs(z(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude);case"CIMGeometricEffectDonut":return Math.abs(e.width)}}function ie(e){if(!e)return 0;let t=0;for(const r of e)t+=oe(r);return t}class se{getSymbolInflateSize(e,t,r,a,o){return e||(e=[0,0,0,0]),t?this._getInflateSize(e,t,r,a,o):e}static safeSize(e){const t=Math.max(Math.abs(e[0]),Math.abs(e[2])),r=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+r*r)}_vectorMarkerBounds(e,t,r,a){let o=!0;const i=l();if(t&&t.markerGraphics)for(const s of t.markerGraphics){const t=[0,0,0,0];s.geometry&&(m(i,s.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,s.symbol,r,0,a),i[0]+=t[0],i[1]+=t[1],i[2]+=t[2],i[3]+=t[3],o?(e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],o=!1):(e[0]=Math.min(e[0],i[0]),e[1]=Math.min(e[1],i[1]),e[2]=Math.max(e[2],i[2]),e[3]=Math.max(e[3],i[3])))}return e}_getInflateSize(e,t,r,a,o){if(Se(t)){const i=this._getLayersInflateSize(e,t.symbolLayers,r,a,o),s=ie(t.effects);return s>0&&(i[0]-=s,i[1]-=s,i[2]+=s,i[3]+=s),i}return this._getTextInflatedSize(e,t,o)}_getLayersInflateSize(e,t,r,a,o){let i=!0;if(!t)return e;for(const s of t){if(!s)continue;let t=[0,0,0,0];switch(s.type){case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=s;let r=e.width;null!=r&&(e.capStyle===C.Square||e.joinStyle===I.Miter?r/=1.4142135623730951:r/=2,t[0]=-r,t[1]=-r,t[2]=r,t[3]=r);break}case"CIMCharacterMarker":case"CIMVectorMarker":case"CIMPictureMarker":{const e=s;if("CIMVectorMarker"===s.type){const e=s;if(t=this._vectorMarkerBounds(t,e,r,o),e.frame){const r=(e.frame.xmin+e.frame.xmax)/2,a=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=r,t[1]-=a,t[2]-=r,t[3]-=a,null!=e.size){const r=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=r,t[1]*=r,t[2]*=r,t[3]*=r}}}else if("CIMPictureMarker"===s.type){const a=s,o=r.getResource(a.url);let i=1;if(null!=o&&o.height&&(i=o.width/o.height),null!=e.size){const r=e.size/2,o=e.size*i*a.scaleX/2;t=[-o,-r,o,r]}}else if(null!=e.size){const r=e.size/2;t=[-r,-r,r,r]}if(e.anchorPoint){let r,a;"Absolute"===e.anchorPointUnits?(r=e.anchorPoint.x,a=e.anchorPoint.y):(r=e.anchorPoint.x*(t[2]-t[0]),a=e.anchorPoint.y*(t[3]-t[1])),t[0]-=r,t[1]-=a,t[2]-=r,t[3]-=a}let i=z(e.rotation);if(e.rotateClockwise&&(i=-i),a&&(i-=a),i){const e=K*i,r=Math.cos(e),a=Math.sin(e),o=l([_,_,-_,-_]);c(o,[t[0]*r-t[1]*a,t[0]*a+t[1]*r]),c(o,[t[0]*r-t[3]*a,t[0]*a+t[3]*r]),c(o,[t[2]*r-t[1]*a,t[2]*a+t[1]*r]),c(o,[t[2]*r-t[3]*a,t[2]*a+t[3]*r]),t=o}let n=z(e.offsetX),m=z(e.offsetY);if(a){const e=K*a,t=Math.cos(e),r=Math.sin(e),o=n*r+m*t;n=n*t-m*r,m=o}t[0]+=n,t[1]+=m,t[2]+=n,t[3]+=m;const f=ae(e.markerPlacement);f>0&&(t[0]-=f,t[1]-=f,t[2]+=f,t[3]+=f);break}}const n=ie(s.effects);n>0&&(t[0]-=n,t[1]-=n,t[2]+=n,t[3]+=n),i?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],i=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}_getTextInflatedSize(e,r,a){const o=r.height??u;if(e[0]=-o/2,e[1]=-o/2,e[2]=o/2,e[3]=o/2,!a)return e;const i=a.get(r);if(!i)return e;const{text:s,mosaicItem:n}=i;if(!n?.glyphMosaicItems?.length)return e;const{lineGapType:l,lineGap:c}=r,m=l?g(l,c??0,o):0,f=t(s)[1],y=n.glyphMosaicItems,M="CIMBackgroundCallout"===r.callout?.type,d=$(y,f,{scale:o/H,angle:z(r.angle),xOffset:z(r.offsetX),yOffset:z(r.offsetY),hAlign:h(r.horizontalAlignment),vAlign:p(r.verticalAlignment),maxLineWidth:512,lineHeight:Y*Math.max(.25,Math.min(m||1,4)),decoration:r.font.decoration||"none",isCIM:!0,hasBackground:M}).boundsT;return e[0]=d.x-d.halfWidth,e[1]=-d.y-d.halfHeight,e[2]=d.x+d.halfWidth,e[3]=-d.y+d.halfHeight,e}}class ne{static getEnvelope(e,t,r){if(!e)return null;const a=new M(r);if(Array.isArray(e)){let r;for(const o of e)r?r.union(re(a,o,t)):r=re(a,o,t);return r}return re(a,e,t)}static getTextureAnchor(e,t){const r=this.getEnvelope(e,null,t);if(!r)return[0,0,0];const a=(r.x+.5*r.width)*Q,o=(r.y+.5*r.height)*Q,i=r.width*Q+2,s=r.height*Q+2;return[-a/i,-o/s,s]}static rasterize(e,t,r,a,o=!0){const i=r||this.getEnvelope(t,null,a);if(!i)return[null,0,0,0,0];const s=(i.x+.5*i.width)*Q,n=(i.y+.5*i.height)*Q;e.width=i.width*Q,e.height=i.height*Q,r||(e.width+=2,e.height+=2);const l=e.getContext("2d"),c=d.createScale(Q,-Q);c.translate(.5*e.width-s,.5*e.height+n);const m=new S(l,a,c);switch(t.type){case"CIMPointSymbol":{const e={type:"point",x:0,y:0};m.drawSymbol(t,e);break}case"CIMVectorMarker":{const e=new y;m.drawMarker(t,e);break}}const f=l.getImageData(0,0,e.width,e.height),u=new Uint8Array(f.data);if(o){let e;for(let t=0;t<u.length;t+=4)e=u[t+3]/255,u[t]=u[t]*e,u[t+1]=u[t+1]*e,u[t+2]=u[t+2]*e}return[u,e.width,e.height,-s/e.width,-n/e.height]}static fromTextSymbol(e){const{angle:r,color:a,font:o,haloColor:i,haloSize:s,horizontalAlignment:n,kerning:l,text:c,verticalAlignment:m,xoffset:f,yoffset:y,backgroundColor:u,borderLineColor:h,borderLineSize:p}=e;let M,d,S,b,g,C;o&&(M=o.family,d=o.style,S=o.weight,b=o.size,g=o.decoration);let I=!1;if(c){I=t(c)[1]}return(u||p)&&(C={type:"CIMBackgroundCallout",margin:null,backgroundSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",color:ue(u)},{type:"CIMSolidStroke",color:ue(h),width:p}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,anchorPointUnits:"Relative",dominantSizeAxis3D:"Y",size:10,billboardMode3D:"FaceNearPlane",frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",angle:r,blockProgression:k.BTT,depth3D:1,extrapolateBaselines:!0,fontEffects:x.Normal,fontEncoding:w.Unicode,fontFamilyName:M||"Arial",fontStyleName:he(d,S),fontType:P.Unspecified,haloSize:s,height:b,hinting:v.Default,horizontalAlignment:fe(n??"center"),kerning:l,letterWidth:100,ligatures:!0,lineGapType:"Multiple",offsetX:z(f),offsetY:z(y),strikethrough:"line-through"===g,underline:"underline"===g,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ue(a)}]},haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ue(i)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:"Normal",textDirection:I?L.RTL:L.LTR,verticalAlignment:ye(m??"baseline"),verticalGlyphOrientation:F.Right,wordSpacing:100,billboardMode3D:D.FaceNearPlane,callout:C},textString:c}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:"Display"}}static fromPictureFillSymbol(e){const{height:t,outline:r,width:a,xoffset:o,xscale:i,yoffset:s,yscale:n}=e,l=[],c={type:"CIMPolygonSymbol",symbolLayers:l};if(r){const e=ke(r);e&&l.push(e)}let m=e.url;"esriPFS"===e.type&&e.imageData&&(m=e.imageData);const f="angle"in e?e.angle??0:0,y=(a??0)*(i||1),u=(t??0)*(n||1);return l.push({type:"CIMPictureFill",invertBackfaceTexture:!1,scaleX:1,textureFilter:T.Picture,tintColor:null,url:m,height:u,width:y,offsetX:z(o),offsetY:z(s),rotation:z(-f),colorSubstitutions:null}),c}static fromSimpleFillSymbol(e){const{color:t,style:r,outline:o}=e,i=[],s={type:"CIMPolygonSymbol",symbolLayers:i};if(o){const e=ke(o);e&&i.push(e)}if(r&&"solid"!==r&&"none"!==r&&"esriSFSSolid"!==r&&"esriSFSNull"!==r){const e={type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",color:ue(t),capStyle:C.Butt,joinStyle:I.Miter,width:.75}]};let o=0;const s=n(ge(r)?8:10);switch(r){case"vertical":case"esriSFSVertical":o=90;break;case"forward-diagonal":case"esriSFSForwardDiagonal":case"diagonal-cross":case"esriSFSDiagonalCross":o=-45;break;case"backward-diagonal":case"esriSFSBackwardDiagonal":o=45;break;case"cross":case"esriSFSCross":o=0}i.push({type:"CIMHatchFill",lineSymbol:e,offsetX:0,offsetY:0,rotation:o,separation:s}),"cross"===r||"esriSFSCross"===r?i.push({type:"CIMHatchFill",lineSymbol:a(e),offsetX:0,offsetY:0,rotation:90,separation:s}):"diagonal-cross"!==r&&"esriSFSDiagonalCross"!==r||i.push({type:"CIMHatchFill",lineSymbol:a(e),offsetX:0,offsetY:0,rotation:45,separation:s})}else!r||"solid"!==r&&"esriSFSSolid"!==r||i.push({type:"CIMSolidFill",enable:!0,color:ue(t)});return s}static fromSimpleLineSymbol(e){const{cap:t,color:r,join:a,marker:o,miterLimit:i,style:s,width:n}=e;let l=null;"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:de(s,t),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]);const c=[];if(o){let e;switch(o.placement){case"begin-end":e=G.Both;break;case"begin":e=G.JustBegin;break;case"end":e=G.JustEnd;break;default:e=G.None}const t=ne.fromSimpleMarker(o,n,r).symbolLayers[0];t.markerPlacement={type:"CIMMarkerPlacementAtExtremities",angleToLine:!0,offset:0,extremityPlacement:e,offsetAlongLine:0},c.push(t)}return c.push({type:"CIMSolidStroke",color:"none"!==s&&"esriSLSNull"!==s?ue(r):[0,0,0,0],capStyle:ce(t),joinStyle:me(a),miterLimit:i,width:n,effects:l}),{type:"CIMLineSymbol",symbolLayers:c}}static fromPictureMarker(e){const{angle:t,height:r,width:a,xoffset:o,yoffset:i}=e;let s=e.url;return"esriPMS"===e.type&&e.imageData&&(s=e.imageData),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMPictureMarker",invertBackfaceTexture:!1,scaleX:1,textureFilter:T.Picture,tintColor:null,url:s,size:r,width:a,offsetX:z(o),offsetY:z(i),rotation:z(-t)}]}}static fromSimpleMarker(e,t,r){const{style:a}=e,o=e.color??r;if("path"===a){const t=[];if("outline"in e&&e.outline){const r=e.outline;t.push({type:"CIMSolidStroke",enable:!0,width:s(Math.round(n(r.width))),color:ue(r.color)})}t.push({type:"CIMSolidFill",enable:!0,color:ue(o),path:e.path});const[r,a]=be("square");return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:r,markerGraphics:[{type:"CIMMarkerGraphic",geometry:a,symbol:{type:"CIMPolygonSymbol",symbolLayers:t}}]}]}}const[i,l]=be(a);let c;if(l&&i){const r=[];if("outline"in e&&e.outline){const t=e.outline;r.push({type:"CIMSolidStroke",enable:!0,width:null!=t.width&&t.width>.667?s(Math.round(n(t.width))):t.width,color:ue(t.color)})}else!t||"line-marker"!==e.type||"cross"!==e.style&&"x"!==e.style||r.push({type:"CIMSolidStroke",enable:!0,width:t,color:ue(o)});r.push({type:"CIMSolidFill",enable:!0,color:ue(o)});const a={type:"CIMPolygonSymbol",symbolLayers:r};c={type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6*t),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:i,markerGraphics:[{type:"CIMMarkerGraphic",geometry:l,symbol:a}]}]}}return c}static fromCIMHatchFill(e,t){const r=t*(e.separation??b),o=r/2,i=a(e.lineSymbol);i.symbolLayers?.forEach((e=>{switch(e.type){case"CIMSolidStroke":null!=e.width&&(e.width*=t),e.effects?.forEach((e=>{"CIMGeometricEffectDashes"===e.type&&(e.dashTemplate=e.dashTemplate.map((e=>e*t)))}));break;case"CIMVectorMarker":{null!=e.size&&(e.size*=t);const r=e.markerPlacement;null!=r&&"placementTemplate"in r&&(r.placementTemplate=r.placementTemplate.map((e=>e*t)));break}}}));let s=this._getLineSymbolPeriod(i)||Z;for(;s<Z;)s*=2;const n=s/2;return{type:"CIMVectorMarker",frame:{xmin:-n,xmax:n,ymin:-o,ymax:o},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:[[[-n,0],[n,0]]]},symbol:i}],size:r}}static fetchResources(e,t,a){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const r=e.symbolLayers;if(!r)return;for(const e of r)switch(Ie(e,t,a),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&a.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const r=e.markerGraphics;if(!r)continue;for(const e of r)if(e){const r=e.symbol;r&&ne.fetchResources(r,t,a)}}}break}case"CIMTextSymbol":{const o=e,i=r(o.fontFamilyName),{style:s,weight:n}=E(o.fontStyleName),l=O(o);a.push(t.loadFont(new q({family:i,style:s,weight:n,decoration:l})).catch((()=>{ee.error("unsupported font in preview")})));break}}}static _getLineSymbolPeriod(e){if(e){const t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers)for(const r of e.symbolLayers)if(r){const e=this._getEffectsRepeat(r.effects);if(e)return e;switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=this._getPlacementRepeat(r.markerPlacement);if(e)return e}}}}return 0}static _getEffectsRepeat(e){if(e)for(const t of e)if(t)switch(t.type){case"CIMGeometricEffectDashes":{const e=t.dashTemplate;if(e&&e.length){let t=0;for(const r of e)t+=r;return 1&e.length&&(t*=2),t}break}case"CIMGeometricEffectWave":return t.period;default:ee.error(`unsupported geometric effect type ${t.type}`)}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAlongLineVariableSize":{const t=e.placementTemplate;if(t&&t.length){let e=0;for(const r of t)e+=+r;return 1&t.length&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){const t=e.markerPlacement,r={...e};r.markerPlacement=null,r.anchorPoint=null;const a=Math.abs(t.stepX),o=Math.abs(t.stepY),s=(t.randomness??100)/100;let l,c,m,f;if("Random"===t.gridType){const e=n(U),r=Math.max(Math.floor(e/a),1),y=Math.max(Math.floor(e/o),1);l=r*a/2,c=y*o/2,m=2*c;const u=new i(t.seed),h=s*a/1.5,p=s*o/1.5;f=[];for(let t=0;t<r;t++)for(let e=0;e<y;e++){const r=t*a-l+h*(.5-u.getFloat()),i=e*o-c+p*(.5-u.getFloat());f.push({x:r,y:i}),0===t&&f.push({x:r+2*l,y:i}),0===e&&f.push({x:r,y:i+2*c})}}else!0===t.shiftOddRows?(l=a/2,c=o,m=2*o,f=[{x:-l,y:0},{x:l,y:0},{x:0,y:c},{x:0,y:-c}]):(l=a/2,c=o/2,m=o,f=[{x:-a,y:0},{x:0,y:-o},{x:-a,y:-o},{x:0,y:0},{x:a,y:0},{x:0,y:o},{x:a,y:o},{x:-a,y:o},{x:a,y:-o}]);return{type:"CIMVectorMarker",frame:{xmin:-l,xmax:l,ymin:-c,ymax:c},markerGraphics:f.map((e=>({type:"CIMMarkerGraphic",geometry:e,symbol:{type:"CIMPointSymbol",symbolLayers:[r]}}))),size:m}}static getSize(e){if(e)switch(e.type){case"CIMTextSymbol":return e.height;case"CIMPointSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=r.size;null!=e&&e>t&&(t=e);break}}return t}case"CIMLineSymbol":case"CIMPolygonSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=r.width;null!=e&&e>t&&(t=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(r.markerPlacement&&A(r.markerPlacement)){const e=r.size;null!=e&&e>t&&(t=e)}}return t}}}static getMarkerScaleRatio(e){if(e&&"CIMVectorMarker"===e.type)if(!1!==e.scaleSymbolsProportionally&&e.frame&&null!=e.size){const t=e.frame.ymax-e.frame.ymin;return e.size/t}return 1}}class le{static findApplicableOverrides(e,t,r){if(e&&t){if(e.primitiveName){let a=!1;for(const t of r)if(t.primitiveName===e.primitiveName){a=!0;break}if(!a)for(const o of t)o.primitiveName===e.primitiveName&&r.push(o)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const a of e.effects)le.findApplicableOverrides(a,t,r);if(e.symbolLayers)for(const a of e.symbolLayers)le.findApplicableOverrides(a,t,r);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":if(e.effects)for(const a of e.effects)le.findApplicableOverrides(a,t,r);if(e.markerPlacement&&le.findApplicableOverrides(e.markerPlacement,t,r),"CIMVectorMarker"===e.type){if(e.markerGraphics)for(const a of e.markerGraphics)le.findApplicableOverrides(a,t,r),le.findApplicableOverrides(a.symbol,t,r)}else"CIMCharacterMarker"===e.type?le.findApplicableOverrides(e.symbol,t,r):"CIMHatchFill"===e.type?le.findApplicableOverrides(e.lineSymbol,t,r):"CIMPictureMarker"===e.type&&le.findApplicableOverrides(e.animatedSymbolProperties,t,r)}}}static findEffectOverrides(e,t,r){if(!t||!e)return;const a=e.length;for(let o=0;o<a;o++){const a=e[o],i=a?.primitiveName;if(i){let e=!1;for(const t of r)if(t.primitiveName===i){e=!0;break}if(!e)for(const a of t)a.primitiveName===i&&r.push(a)}}}static async resolveSymbolOverrides(e,t,r,o,i,s,n){if(!e||!e.symbol)return null;let{symbol:l,primitiveOverrides:c}=e;const m=!!c;if(!m&&!o)return l;l=a(l);let f=!0;if(t||(t={attributes:{}},f=!1),m){if(f||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$feature")))),n||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$view")))),c.length>0){const e=N(t.attributes);await le.evaluateOverrides(c,t,{spatialReference:r,fields:e,geometryType:i},s,n)}le.applyOverrides(l,c)}return o&&le.applyDictionaryTextOverrides(l,t,o),l}static async evaluateOverrides(e,t,r,a,o){if(!t)return;let i;for(const s of e){const e=s.valueExpressionInfo;if(e&&r&&r.geometryType){i||(i=[]),s.value=void 0;const n=f(e.expression,r.spatialReference,r.fields).then((e=>{s.value=X(e,t,{$view:o},r.geometryType,a)}));i.push(n)}}void 0!==i&&i.length>0&&await Promise.all(i)}static applyDictionaryTextOverrides(e,t,r,a="Normal"){if(e&&e.type)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":case"CIMTextSymbol":{const o=e.symbolLayers;if(!o)return;for(const i of o)i&&"CIMVectorMarker"===i.type&&le.applyDictionaryTextOverrides(i,t,r,"CIMTextSymbol"===e.type?e.textCase:a)}break;case"CIMVectorMarker":{const a=e.markerGraphics;if(!a)return;for(const e of a)e&&le.applyDictionaryTextOverrides(e,t,r)}break;case"CIMMarkerGraphic":{const o=e.textString;if(o&&o.includes("[")){const i=R(o,r);e.textString=j(t,i,a)}}}}static applyOverrides(e,t,r,a){if(e.primitiveName)for(const o of t)if(o.primitiveName===e.primitiveName){const t=Ce(o.propertyName);if(a&&a.push({cim:e,nocapPropertyName:t,value:e[t]}),o.expression&&(o.value=le.toValue(o.propertyName,o.expression)),r){let t=!1;for(const a of r)a.primitiveName===e.primitiveName&&(t=!0);t||r.push(o)}null!=o.value&&(e[t]=o.value)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const o of e.effects)le.applyOverrides(o,t,r,a);if(e.symbolLayers)for(const o of e.symbolLayers)le.applyOverrides(o,t,r,a);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMSolidFill":case"CIMVectorMarker":if(e.effects)for(const o of e.effects)le.applyOverrides(o,t,r,a);if("CIMVectorMarker"===e.type&&e.markerGraphics)for(const o of e.markerGraphics)le.applyOverrides(o,t,r,a),le.applyOverrides(o.symbol,t,r,a)}}static restoreOverrides(e){for(const t of e)t.cim[t.nocapPropertyName]=t.value}static buildOverrideKey(e){let t="";for(const r of e)void 0!==r.value&&(t+=`${r.primitiveName}${r.propertyName}${JSON.stringify(r.value)}`);return t}static toValue(t,r){if("DashTemplate"===t)return r.split(" ").map((e=>Number(e)));if("Color"===t){const t=new e(r).toRgba();return t[3]*=255,t}return r}}const ce=e=>{if(!e)return C.Butt;switch(e){case"butt":return C.Butt;case"square":return C.Square;case"round":return C.Round}},me=e=>{if(!e)return I.Miter;switch(e){case"miter":return I.Miter;case"round":return I.Round;case"bevel":return I.Bevel}},fe=e=>{if(null==e)return"Center";switch(e){case"left":return"Left";case"right":return"Right";case"center":return"Center"}},ye=e=>{if(null==e)return"Center";switch(e){case"baseline":return"Baseline";case"top":return"Top";case"middle":return"Center";case"bottom":return"Bottom"}},ue=e=>{if(!e)return[0,0,0,0];const{r:t,g:r,b:a,a:o}=e;return[t,r,a,255*o]},he=(e,t)=>{const r=pe(t),a=Me(e);return r&&a?`${r}-${a}`:`${r}${a}`},pe=e=>{if(!e)return"";switch(e.toLowerCase()){case"bold":case"bolder":return"bold"}return""},Me=e=>{if(!e)return"";switch(e.toLowerCase()){case"italic":case"oblique":return"italic"}return""},de=(e,t)=>{const r="butt"===t;switch(e){case"dash":case"esriSLSDash":return r?[4,3]:[3,4];case"dash-dot":case"esriSLSDashDot":return r?[4,3,1,3]:[3,4,0,4];case"dot":case"esriSLSDot":return r?[1,3]:[0,4];case"long-dash":case"esriSLSLongDash":return r?[8,3]:[7,4];case"long-dash-dot":case"esriSLSLongDashDot":return r?[8,3,1,3]:[7,4,0,4];case"long-dash-dot-dot":case"esriSLSDashDotDot":return r?[8,3,1,3,1,3]:[7,4,0,4,0,4];case"short-dash":case"esriSLSShortDash":return r?[4,1]:[3,2];case"short-dash-dot":case"esriSLSShortDashDot":return r?[4,1,1,1]:[3,2,0,2];case"short-dash-dot-dot":case"esriSLSShortDashDotDot":return r?[4,1,1,1,1,1]:[3,2,0,2,0,2];case"short-dot":case"esriSLSShortDot":return r?[1,1]:[0,2];case"solid":case"esriSLSSolid":case"none":return ee.error("Unexpected: style does not require rasterization"),[0,0];default:return ee.error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function Se(e){return void 0!==e.symbolLayers}const be=e=>{const t=100,r=50;let a,o;const i=e;if("circle"===i||"esriSMSCircle"===i){const e=.25;let t=Math.acos(1-e/r),i=Math.ceil(W/t/4);0===i&&(i=1),t=J/i,i*=4;const s=[];s.push([r,0]);for(let a=1;a<i;a++)s.push([r*Math.cos(a*t),-r*Math.sin(a*t)]);s.push([r,0]),a={rings:[s]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("cross"===i||"esriSMSCross"===i){const e=0;a={rings:[[[e,r],[e,e],[r,e],[r,-e],[e,-e],[e,-r],[-e,-r],[-e,-e],[-r,-e],[-r,e],[-e,e],[-e,r],[e,r]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("diamond"===i||"esriSMSDiamond"===i)a={rings:[[[-r,0],[0,r],[r,0],[0,-r],[-r,0]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("square"===i||"esriSMSSquare"===i)a={rings:[[[-r,-r],[-r,r],[r,r],[r,-r],[-r,-r]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("x"===i||"esriSMSX"===i){const e=0;a={rings:[[[0,e],[r-e,r],[r,r-e],[e,0],[r,e-r],[r-e,-r],[0,-e],[e-r,-r],[-r,e-r],[-e,0],[-r,r-e],[e-r,r],[0,e]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("triangle"===i||"esriSMSTriangle"===i){const e=t*.5773502691896257,r=-e,i=2/3*t,s=i-t;a={rings:[[[r,s],[0,i],[e,s],[r,s]]]},o={xmin:r,ymin:s,xmax:e,ymax:i}}else"arrow"===i&&(a={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r});return[o,a]},ge=e=>"vertical"===e||"horizontal"===e||"cross"===e||"esriSFSCross"===e||"esriSFSVertical"===e||"esriSFSHorizontal"===e,Ce=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;function Ie(e,t,r){if(!e.effects||null!=t.geometryEngine)return;if(t.geometryEnginePromise)return void r.push(t.geometryEnginePromise);V(e.effects)&&(t.geometryEnginePromise=B(),r.push(t.geometryEnginePromise),t.geometryEnginePromise.then((e=>t.geometryEngine=e)))}function ke(e){if(!e)return null;let t=null;const{cap:r,color:a,join:o,miterLimit:i,style:s,width:n}=e;return"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(t=[{type:"CIMGeometricEffectDashes",dashTemplate:de(s,r),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]),{type:"CIMSolidStroke",color:"esriSLSNull"!==s&&"none"!==s?ue(a):[0,0,0,0],capStyle:ce(r),joinStyle:me(o),miterLimit:i,width:n,effects:t}}export{ne as CIMSymbolHelper,se as CIMSymbolInflatedSizeHelper,le as OverrideHelper,ie as getEffectsInflateSize,de as slsDashToTemplateArray,te as symbolToCIM};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Error.js";import{handlesGroup as r}from"../../../core/handleUtils.js";import{watch as s}from"../../../core/reactiveUtils.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";import n from"../../../rest/support/FeatureSet.js";import a from"./FeatureLayerView2D.js";import{toJSONGeometryType as l}from"./support/util.js";import p from"../../layers/StreamLayerView.js";function c(e,t){if(null==e&&null==t)return null;const r={};return null!=t&&(r.geometry=t.toJSON()),null!=e&&(r.where=e),r}let u=class extends(p(a)){constructor(){super(...arguments),this.pipelineConnectionStatus="disconnected",this.pipelineErrorString=null,this._enabledEventTypes=new Set}initialize(){this.addHandles([s((()=>this.layer.customParameters),(e=>this._proxy.updateCustomParameters(e))),this.layer.on("send-message-to-socket",(e=>this._proxy.sendMessageToSocket(e))),this.layer.on("send-message-to-client",(e=>this._proxy.sendMessageToClient(e))),s((()=>this.layer.purgeOptions),(()=>this._update())),s((()=>this.suspended),this._onSuspendedChange.bind(this))],"constructor")}get connectionError(){return this.pipelineErrorString?new t("stream-controller",this.pipelineErrorString):null}on(e,t){if(Array.isArray(e))return r(e.map((e=>this.on(e,t))));const s=["data-received","message-received"].includes(e);s&&(this._enabledEventTypes.add(e),this._proxy.enableEvent(e,!0));const i=super.on(e,t),o=this;return{remove(){i.remove(),s&&(o._proxy.closed||o.hasEventListener(e)||o._proxy.enableEvent(e,!1))}}}queryLatestObservations(e,r){if(!(this.layer.timeInfo?.endField||this.layer.timeInfo?.startField||this.layer.timeInfo?.trackIdField))throw new t("streamlayer-no-timeField","queryLatestObservation can only be used with services that define a TrackIdField");return this._proxy.queryLatestObservations(this._cleanUpQuery(e),r).then((e=>{const t=n.fromJSON(e);return t.features.forEach((e=>{e.layer=this.layer,e.sourceLayer=this.layer})),t}))}detach(){super.detach(),this.pipelineConnectionStatus="disconnected"}get _streamConnectionStatus(){return this.pipelineConnectionStatus}_doPause(){this._proxy?.pauseStream()}_doResume(){this._proxy?.resumeStream()}_createClientOptions(){return{...super._createClientOptions(),setProperty:e=>{this.set(e.propertyName,e.value)}}}_createTileRendererHash(e){const t=`${JSON.stringify(this.layer.purgeOptions)}.${JSON.stringify(c(this.layer.definitionExpression,this.layer.geometryDefinition))})`;return super._createTileRendererHash(e)+t}async _createServiceOptions(){const e=this.layer,{objectIdField:t}=e,r=e.fields.map((e=>e.toJSON())),s=l(e.geometryType),i=e.timeInfo&&e.timeInfo.toJSON()||null,o=e.spatialReference?e.spatialReference.toJSON():null;return{type:"stream",fields:r,geometryType:s,objectIdField:t,timeInfo:i,source:this.layer.parsedUrl,serviceFilter:c(this.layer.definitionExpression,this.layer.geometryDefinition),purgeOptions:this.layer.purgeOptions.toJSON(),enabledEventTypes:Array.from(this._enabledEventTypes.values()),spatialReference:o,maxReconnectionAttempts:this.layer.maxReconnectionAttempts,maxReconnectionInterval:this.layer.maxReconnectionInterval,updateInterval:this.layer.updateInterval,customParameters:e.customParameters}}};e([i()],u.prototype,"pipelineConnectionStatus",void 0),e([i()],u.prototype,"pipelineErrorString",void 0),e([i({readOnly:!0})],u.prototype,"connectionError",null),e([i({readOnly:!0})],u.prototype,"_streamConnectionStatus",null),u=e([o("esri.views.2d.layers.StreamLayerView2D")],u);const y=u;export{y as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Error.js";import{handlesGroup as r}from"../../../core/handleUtils.js";import{watch as s}from"../../../core/reactiveUtils.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";import n from"../../../rest/support/FeatureSet.js";import a from"./FeatureLayerView2D.js";import{toJSONGeometryType as l}from"./support/util.js";import p from"../../layers/StreamLayerView.js";function c(e,t){if(null==e&&null==t)return null;const r={};return null!=t&&(r.geometry=t.toJSON()),null!=e&&(r.where=e),r}let u=class extends(p(a)){constructor(){super(...arguments),this.pipelineConnectionStatus="disconnected",this.pipelineErrorString=null,this._enabledEventTypes=new Set}initialize(){this.addHandles([s((()=>this.layer.customParameters),(e=>this._proxy.updateCustomParameters(e))),this.layer.on("send-message-to-socket",(e=>this._proxy.sendMessageToSocket(e))),this.layer.on("send-message-to-client",(e=>this._proxy.sendMessageToClient(e))),s((()=>this.layer.purgeOptions),(()=>this._update())),s((()=>this.suspended),this._onSuspendedChange.bind(this))],"constructor")}get connectionError(){return this.pipelineErrorString?new t("stream-controller",this.pipelineErrorString):null}on(e,t){if(Array.isArray(e))return r(e.map((e=>this.on(e,t))));const s=["data-received","message-received"].includes(e);s&&(this._enabledEventTypes.add(e),this._proxy.enableEvent(e,!0));const i=super.on(e,t),o=this;return{remove(){i.remove(),s&&(o._proxy.closed||o.hasEventListener(e)||o._proxy.enableEvent(e,!1))}}}queryLatestObservations(e,r){if(!(this.layer.timeInfo?.endField||this.layer.timeInfo?.startField||this.layer.timeInfo?.trackIdField))throw new t("streamlayer-no-timeField","queryLatestObservation can only be used with services that define a TrackIdField");return this._proxy.queryLatestObservations(this._cleanUpQuery(e),r).then((e=>{const t=n.fromJSON(e);return t.features.forEach((e=>{e.layer=this.layer,e.sourceLayer=this.layer})),t}))}detach(){super.detach(),this.pipelineConnectionStatus="disconnected"}get _streamConnectionStatus(){return this.pipelineConnectionStatus}_doPause(){this._proxy?.pauseStream()}_doResume(){this._proxy?.resumeStream()}_createClientOptions(){return{...super._createClientOptions(),setProperty:e=>{this.set(e.propertyName,e.value)}}}_createTileRendererHash(e){const t=`${JSON.stringify(this.layer.purgeOptions)}.${JSON.stringify(c(this.layer.definitionExpression,this.layer.geometryDefinition))})`;return super._createTileRendererHash(e)+t}async _createServiceOptions(){const e=this.layer,{objectIdField:t}=e,r=e.fields.map((e=>e.toJSON())),s=l(e.geometryType),i=e.timeInfo&&e.timeInfo.toJSON()||null,o=e.spatialReference?e.spatialReference.toJSON():null;return{type:"stream",isPaused:this._isUserPaused,fields:r,geometryType:s,objectIdField:t,timeInfo:i,source:this.layer.parsedUrl,serviceFilter:c(this.layer.definitionExpression,this.layer.geometryDefinition),purgeOptions:this.layer.purgeOptions.toJSON(),enabledEventTypes:Array.from(this._enabledEventTypes.values()),spatialReference:o,maxReconnectionAttempts:this.layer.maxReconnectionAttempts,maxReconnectionInterval:this.layer.maxReconnectionInterval,updateInterval:this.layer.updateInterval,customParameters:e.customParameters}}};e([i()],u.prototype,"pipelineConnectionStatus",void 0),e([i()],u.prototype,"pipelineErrorString",void 0),e([i({readOnly:!0})],u.prototype,"connectionError",null),e([i({readOnly:!0})],u.prototype,"_streamConnectionStatus",null),u=e([o("esri.views.2d.layers.StreamLayerView2D")],u);const y=u;export{y 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.27/esri/copyright.txt for details.
4
4
  */
5
- import{handlesGroup as e}from"../../../../../core/handleUtils.js";import"../../../../../core/has.js";import{r as t}from"../../../../../chunks/rbush.js";import{convertFromFeature as s,quantizeOptimizedGeometry as n,quantizeX as i,quantizeY as r}from"../../../../../layers/graphics/featureConversionUtils.js";import o from"../../../../../layers/graphics/OptimizedGeometry.js";import{StreamFeatureManager as a}from"../../../../../layers/graphics/data/StreamFeatureManager.js";import{createConnection as d}from"../../../../../layers/graphics/sources/connections/createConnection.js";import{DataTileSource as c}from"./DataTileSource.js";import{StreamConnectionState as h}from"./StreamConnectionState.js";import{FeatureSetReaderJSON as u}from"../support/FeatureSetReaderJSON.js";import{UpdateToken as l}from"../support/UpdateToken.js";const p=2500;function _(e,t){const s=e.weakClone();if(null!=e.geometry){const n=i(t,e.geometry.coords[0]),a=r(t,e.geometry.coords[1]);s.geometry=new o([],[n,a])}return s}function m(e){return"esriGeometryPoint"===e?_:(t,s)=>{const i=t.weakClone(),r=new o,a=!1,d=!1,c=n(r,t.geometry,a,d,e,s,!1,!1);return i.geometry=c,i}}function g(e){return"esriGeometryPoint"===e?e=>null!=e.geometry?{minX:e.geometry.coords[0],minY:e.geometry.coords[1],maxX:e.geometry.coords[0],maxY:e.geometry.coords[1]}:{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}:e=>{let t=1/0,s=1/0,n=-1/0,i=-1/0;return null!=e.geometry&&e.geometry.forEachVertex(((e,r)=>{t=Math.min(t,e),s=Math.min(s,r),n=Math.max(n,e),i=Math.max(i,r)})),{minX:t,minY:s,maxX:n,maxY:i}}}function y(e,s){const n=t(9,g(s));return n.load(e),n}function f(e,t){return e.search({minX:t.bounds[0],minY:t.bounds[1],maxX:t.bounds[2],maxY:t.bounds[3]})}class v{constructor(e,t){this.onUpdate=e,this._geometryType=t,this._objectIdToFeature=new Map,this._index=null}get _features(){const e=[];return this._objectIdToFeature.forEach((t=>e.push(t))),e}add(e){this._objectIdToFeature.set(e.objectId,e),this._index=null}get(e){return this._objectIdToFeature.has(e)?this._objectIdToFeature.get(e):null}forEach(e){this._objectIdToFeature.forEach(e)}search(e){return this._index||(this._index=y(this._features,this._geometryType)),f(this._index,e)}clear(){this._index=null,this._objectIdToFeature.clear()}removeById(e){const t=this._objectIdToFeature.get(e);return t?(this._objectIdToFeature.delete(e),this._index=null,t):null}update(e,t){this.onUpdate(e,t)}get size(){return this._objectIdToFeature.size}}class b extends c{constructor(t){super(t),this.type="stream",this._updateIntervalId=0,this._level=0,this._isPaused=!1,this._updateInfo={websocket:0,client:0},this._inUpdate=!1;const{outSR:s}=t,{geometryType:n,objectIdField:i,timeInfo:r,purgeOptions:o,source:c,spatialReference:u,serviceFilter:l,maxReconnectionAttempts:_,maxReconnectionInterval:g,updateInterval:y,customParameters:f,enabledEventTypes:b}=t.serviceInfo,I=new v(this._onUpdate.bind(this),n),T=new a(I,i,r,o),j=d(c,u,s,n,l,_,g,f??{});this._connectionState=new h({connection:j}),this._store=I,this._manager=T,this._connection=j,this._quantize=m(n),this._enabledEventTypes=new Set(b),this._handlesGroup=e([this._connection.on("data-received",(e=>this._onFeature(e))),this._connection.on("message-received",(e=>this._onWebSocketMessage(e)))]),this._initUpdateInterval=()=>{let e=performance.now();this._updateIntervalId=setInterval((()=>{const s=performance.now(),n=s-e;if(n>p){e=s;const t=Math.round(this._updateInfo.client/(n/1e3)),i=Math.round(this._updateInfo.websocket/(n/1e3));this._updateInfo.client=0,this._updateInfo.websocket=0,this.events.emit("updateRate",{client:t,websocket:i})}t.canAcceptRequest()&&!this._inUpdate&&this._manager.checkForUpdates()}),y)},this._initUpdateInterval()}destroy(){super.destroy(),this._clearUpdateInterval(),this._connection.destroy(),this._handlesGroup?.remove()}_fetchDataTile(){}get connectionStatus(){return this._connectionState.connectionStatus}get errorString(){return this._connectionState.errorString}updateCustomParameters(e){this._connection.updateCustomParameters(e)}pauseStream(){this._isPaused||(this._isPaused=!0,this._clearUpdateInterval())}resumeStream(){this._isPaused&&(this._isPaused=!1,this._initUpdateInterval())}sendMessageToSocket(e){this._connection.sendMessageToSocket(e)}sendMessageToClient(e){this._isPaused&&"type"in e&&"clear"===e.type?(this._store.clear(),this._subscriptions.forEach(((e,t)=>{e.didSend&&e.tile.level===this._level&&this._onMessage({type:"append",id:t,addOrUpdate:null,clear:!0,end:!0})}))):this._connection.sendMessageToClient(e)}enableEvent(e,t){t?this._enabledEventTypes.add(e):this._enabledEventTypes.delete(e)}subscribe(e,t){super.subscribe(e,t);const s=this._subscriptions.get(e.id);s.resolve(),this._level=e.level;const n=this._getTileFeatures(e);this._onMessage({type:"append",id:e.key.id,addOrUpdate:n,end:!0}),s.didSend=!0}unsubscribe(e){super.unsubscribe(e)}*readers(e){const t=this._subscriptions.get(e),{tile:s}=t;yield this._getTileFeatures(s)}createTileQuery(e){throw new Error("Service does not support tile queries")}async resend(){this._subscriptions.forEach((e=>{const{tile:t}=e,s={type:"append",id:t.id,addOrUpdate:this._getTileFeatures(t),end:!0};this._onMessage(s)}))}_getTileFeatures(e){const t=this._store.search(e).map((t=>this._quantize(t,e.transform)));return u.fromOptimizedFeatures(t,this._serviceInfo,e.transform)}_onWebSocketMessage(e){if(this._enabledEventTypes.has("message-received")&&this.events.emit("message-received",e),"type"in e)switch(e.type){case"delete":if(e.objectIds)for(const t of e.objectIds)this._manager.removeById(t);if(e.trackIds)for(const t of e.trackIds)this._manager.removeByTrackId(t);break;case"clear":this._store.forEach((e=>this._manager.removeById(e.objectId)))}}_onFeature(e){this._updateInfo.websocket++;try{this._enabledEventTypes.has("data-received")&&this.events.emit("data-received",e);const t=s(e,this._serviceInfo.geometryType,!1,!1,this._serviceInfo.objectIdField);this._manager.add(t)}catch(t){}}_clearUpdateInterval(){clearInterval(this._updateIntervalId),this._updateIntervalId=0}async _onUpdate(e,t){this._inUpdate=!0;try{null!=e&&(this._updateInfo.client+=e.length),this._subscriptions.forEach(((e,t)=>{e.didSend&&e.tile.level===this._level&&this._onMessage({type:"append",id:t,addOrUpdate:null,clear:!0,end:!1})}));const t=[];this._subscriptions.forEach(((e,s)=>{if(!e.didSend||e.tile.level!==this._level)return;const n=e.tile,i={type:"append",id:s,addOrUpdate:this._getTileFeatures(n),remove:[],end:!1,status:l.empty()};e.requests.stream.enqueue(i),t.push(this._onMessage(i))})),await Promise.all(t),this._subscriptions.forEach(((e,t)=>{e.didSend&&e.tile.level===this._level&&this._onMessage({type:"append",id:t,addOrUpdate:null,end:!0})}))}catch{}this._inUpdate=!1}}export{b as StreamSource};
5
+ import{handlesGroup as e}from"../../../../../core/handleUtils.js";import"../../../../../core/has.js";import{r as t}from"../../../../../chunks/rbush.js";import{convertFromFeature as s,quantizeOptimizedGeometry as i,quantizeX as n,quantizeY as r}from"../../../../../layers/graphics/featureConversionUtils.js";import o from"../../../../../layers/graphics/OptimizedGeometry.js";import{StreamFeatureManager as a}from"../../../../../layers/graphics/data/StreamFeatureManager.js";import{createConnection as d}from"../../../../../layers/graphics/sources/connections/createConnection.js";import{DataTileSource as c}from"./DataTileSource.js";import{StreamConnectionState as h}from"./StreamConnectionState.js";import{FeatureSetReaderJSON as u}from"../support/FeatureSetReaderJSON.js";import{UpdateToken as l}from"../support/UpdateToken.js";const p=2500;function _(e,t){const s=e.weakClone();if(null!=e.geometry){const i=n(t,e.geometry.coords[0]),a=r(t,e.geometry.coords[1]);s.geometry=new o([],[i,a])}return s}function m(e){return"esriGeometryPoint"===e?_:(t,s)=>{const n=t.weakClone(),r=new o,a=!1,d=!1,c=i(r,t.geometry,a,d,e,s,!1,!1);return n.geometry=c,n}}function g(e){return"esriGeometryPoint"===e?e=>null!=e.geometry?{minX:e.geometry.coords[0],minY:e.geometry.coords[1],maxX:e.geometry.coords[0],maxY:e.geometry.coords[1]}:{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}:e=>{let t=1/0,s=1/0,i=-1/0,n=-1/0;return null!=e.geometry&&e.geometry.forEachVertex(((e,r)=>{t=Math.min(t,e),s=Math.min(s,r),i=Math.max(i,e),n=Math.max(n,r)})),{minX:t,minY:s,maxX:i,maxY:n}}}function y(e,s){const i=t(9,g(s));return i.load(e),i}function f(e,t){return e.search({minX:t.bounds[0],minY:t.bounds[1],maxX:t.bounds[2],maxY:t.bounds[3]})}class v{constructor(e,t){this.onUpdate=e,this._geometryType=t,this._objectIdToFeature=new Map,this._index=null}get _features(){const e=[];return this._objectIdToFeature.forEach((t=>e.push(t))),e}add(e){this._objectIdToFeature.set(e.objectId,e),this._index=null}get(e){return this._objectIdToFeature.has(e)?this._objectIdToFeature.get(e):null}forEach(e){this._objectIdToFeature.forEach(e)}search(e){return this._index||(this._index=y(this._features,this._geometryType)),f(this._index,e)}clear(){this._index=null,this._objectIdToFeature.clear()}removeById(e){const t=this._objectIdToFeature.get(e);return t?(this._objectIdToFeature.delete(e),this._index=null,t):null}update(e,t){this.onUpdate(e,t)}get size(){return this._objectIdToFeature.size}}class I extends c{constructor(t){super(t),this.type="stream",this._updateIntervalId=0,this._level=0,this._isPaused=!1,this._updateInfo={websocket:0,client:0},this._inUpdate=!1;const{outSR:s}=t,{geometryType:i,objectIdField:n,timeInfo:r,purgeOptions:o,source:c,spatialReference:u,serviceFilter:l,maxReconnectionAttempts:_,maxReconnectionInterval:g,updateInterval:y,customParameters:f,enabledEventTypes:I}=t.serviceInfo,b=new v(this._onUpdate.bind(this),i),T=new a(b,n,r,o),j=d(c,u,s,i,l,_,g,f??{});this._connectionState=new h({connection:j}),this._store=b,this._manager=T,this._connection=j,this._quantize=m(i),this._enabledEventTypes=new Set(I),this._handlesGroup=e([this._connection.on("data-received",(e=>this._onFeature(e))),this._connection.on("message-received",(e=>this._onWebSocketMessage(e)))]),this._initUpdateInterval=()=>{let e=performance.now();this._updateIntervalId=setInterval((()=>{const s=performance.now(),i=s-e;if(i>p){e=s;const t=Math.round(this._updateInfo.client/(i/1e3)),n=Math.round(this._updateInfo.websocket/(i/1e3));this._updateInfo.client=0,this._updateInfo.websocket=0,this.events.emit("updateRate",{client:t,websocket:n})}t.canAcceptRequest()&&!this._inUpdate&&this._manager.checkForUpdates()}),y)},this._isPaused=t.serviceInfo.isPaused,this._isPaused||this._initUpdateInterval()}destroy(){super.destroy(),this._clearUpdateInterval(),this._connection.destroy(),this._handlesGroup?.remove()}_fetchDataTile(){}get connectionStatus(){return this._connectionState.connectionStatus}get errorString(){return this._connectionState.errorString}updateCustomParameters(e){this._connection.updateCustomParameters(e)}pauseStream(){this._isPaused||(this._isPaused=!0,this._clearUpdateInterval())}resumeStream(){this._isPaused&&(this._isPaused=!1,this._initUpdateInterval())}sendMessageToSocket(e){this._connection.sendMessageToSocket(e)}sendMessageToClient(e){this._isPaused&&"type"in e&&"clear"===e.type?(this._store.clear(),this._subscriptions.forEach(((e,t)=>{e.didSend&&e.tile.level===this._level&&this._onMessage({type:"append",id:t,addOrUpdate:null,clear:!0,end:!0})}))):this._connection.sendMessageToClient(e)}enableEvent(e,t){t?this._enabledEventTypes.add(e):this._enabledEventTypes.delete(e)}subscribe(e,t){super.subscribe(e,t);const s=this._subscriptions.get(e.id);s.resolve(),this._level=e.level;const i=this._getTileFeatures(e);this._onMessage({type:"append",id:e.key.id,addOrUpdate:i,end:!0}),s.didSend=!0}unsubscribe(e){super.unsubscribe(e)}*readers(e){const t=this._subscriptions.get(e),{tile:s}=t;yield this._getTileFeatures(s)}createTileQuery(e){throw new Error("Service does not support tile queries")}async resend(){this._subscriptions.forEach((e=>{const{tile:t}=e,s={type:"append",id:t.id,addOrUpdate:this._getTileFeatures(t),end:!0};this._onMessage(s)}))}_getTileFeatures(e){const t=this._store.search(e).map((t=>this._quantize(t,e.transform)));return u.fromOptimizedFeatures(t,this._serviceInfo,e.transform)}_onWebSocketMessage(e){if(this._enabledEventTypes.has("message-received")&&this.events.emit("message-received",e),"type"in e)switch(e.type){case"delete":if(e.objectIds)for(const t of e.objectIds)this._manager.removeById(t);if(e.trackIds)for(const t of e.trackIds)this._manager.removeByTrackId(t);break;case"clear":this._store.forEach((e=>this._manager.removeById(e.objectId)))}}_onFeature(e){this._updateInfo.websocket++;try{this._enabledEventTypes.has("data-received")&&this.events.emit("data-received",e);const t=s(e,this._serviceInfo.geometryType,!1,!1,this._serviceInfo.objectIdField);this._manager.add(t)}catch(t){}}_clearUpdateInterval(){clearInterval(this._updateIntervalId),this._updateIntervalId=0}async _onUpdate(e,t){this._inUpdate=!0;try{null!=e&&(this._updateInfo.client+=e.length),this._subscriptions.forEach(((e,t)=>{e.didSend&&e.tile.level===this._level&&this._onMessage({type:"append",id:t,addOrUpdate:null,clear:!0,end:!1})}));const t=[];this._subscriptions.forEach(((e,s)=>{if(!e.didSend||e.tile.level!==this._level)return;const i=e.tile,n={type:"append",id:s,addOrUpdate:this._getTileFeatures(i),remove:[],end:!1,status:l.empty()};e.requests.stream.enqueue(n),t.push(this._onMessage(n))})),await Promise.all(t),this._subscriptions.forEach(((e,t)=>{e.didSend&&e.tile.level===this._level&&this._onMessage({type:"append",id:t,addOrUpdate:null,end:!0})}))}catch{}this._inUpdate=!1}}export{I as StreamSource};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{a as e}from"../../../chunks/vec2f64.js";import{c as r}from"../../../chunks/vec3f64.js";import{c as i}from"../../../chunks/vec4f64.js";import{C as t}from"../../../chunks/ChapmanAtmosphere.glsl.js";import{NoParameters as s}from"../webgl-engine/core/shaderModules/interfaces.js";import{ReloadableShaderModule as n}from"../webgl-engine/core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as o}from"../webgl-engine/core/shaderTechnique/ShaderTechnique.js";import{Default3D as a}from"../webgl-engine/lib/DefaultVertexAttributeLocations.js";import{Program as h}from"../webgl-engine/lib/Program.js";import{BlendFactor as c,CompareFunction as l}from"../../webgl/enums.js";import{makePipelineState as m,simpleBlendingParams as d,defaultColorWriteParams as g,separateBlendingParams as u}from"../../webgl/renderState.js";class f extends s{constructor(){super(...arguments),this.heightParameters=i(),this.radii=e(),this.innerFadeDistance=0,this.altitudeFade=0,this.hazeStrength=1,this.renderScale=e(),this.backgroundColor=r()}}class p extends o{initializeProgram(e){return new h(e.rctx,p.shader.get().build(this.configuration),a)}initializePipeline(){return this.configuration.reduced?m({blending:d(c.ONE,c.ZERO),depthTest:{func:l.ALWAYS},colorWrite:g}):this.configuration.haze?m({blending:u(c.ONE,c.ZERO,c.ONE_MINUS_SRC_COLOR,c.ONE),colorWrite:g}):m({blending:d(c.ONE,c.ONE_MINUS_SRC_ALPHA),depthTest:{func:l.LEQUAL},colorWrite:g})}}p.shader=new n(t,(()=>import("./ChapmanAtmosphere.glsl.js")));export{f as ChapmanAtmospherePassParameters,p as ChapmanAtmosphereTechnique};
5
+ import{a as e}from"../../../chunks/vec2f64.js";import{c as r}from"../../../chunks/vec3f64.js";import{c as i}from"../../../chunks/vec4f64.js";import{C as t}from"../../../chunks/ChapmanAtmosphere.glsl.js";import{NoParameters as s}from"../webgl-engine/core/shaderModules/interfaces.js";import{ReloadableShaderModule as n}from"../webgl-engine/core/shaderTechnique/ReloadableShaderModule.js";import{ShaderTechnique as o}from"../webgl-engine/core/shaderTechnique/ShaderTechnique.js";import{Default3D as a}from"../webgl-engine/lib/DefaultVertexAttributeLocations.js";import{Program as h}from"../webgl-engine/lib/Program.js";import{BlendFactor as c,CompareFunction as l}from"../../webgl/enums.js";import{makePipelineState as m,simpleBlendingParams as d,defaultColorWriteParams as g,separateBlendingParams as u}from"../../webgl/renderState.js";class f extends s{constructor(){super(...arguments),this.heightParameters=i(),this.radii=e(),this.innerFadeDistance=0,this.altitudeFade=0,this.hazeStrength=1,this.renderScale=e(),this.backgroundColor=r()}}class p extends o{initializeProgram(e){return new h(e.rctx,p.shader.get().build(this.configuration),a)}initializePipeline(){return this.configuration.reduced?m({blending:d(c.ONE,c.ZERO),depthTest:{func:l.ALWAYS},colorWrite:g}):this.configuration.haze?m({blending:u(c.ONE,c.ZERO,c.ONE_MINUS_SRC_COLOR,c.ONE),colorWrite:g}):m({blending:d(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA),depthTest:{func:l.LEQUAL},colorWrite:g})}}p.shader=new n(t,(()=>import("./ChapmanAtmosphere.glsl.js")));export{f as ChapmanAtmospherePassParameters,p as ChapmanAtmosphereTechnique};