@vertigis/arcgis-extensions 34.7.0 → 35.0.2

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 (231) hide show
  1. package/AppConfig.schema.json +8 -4
  2. package/ItemType.js +1 -1
  3. package/LanguageResources.js +1 -1
  4. package/data/ArcGISServiceTableExtension.js +1 -1
  5. package/data/Attachment.js +1 -1
  6. package/data/Feature.js +1 -1
  7. package/data/FeatureList.js +1 -1
  8. package/data/FeatureSet.js +1 -1
  9. package/data/FeatureSettings.js +1 -1
  10. package/data/FeatureSourceBase.js +1 -1
  11. package/data/FeatureStream.js +1 -1
  12. package/data/FieldExtension.js +1 -1
  13. package/data/Schema.js +1 -1
  14. package/data/Table.js +1 -1
  15. package/data/_TableExtension.js +1 -1
  16. package/data/convert.js +1 -1
  17. package/data/support/attachments.js +1 -1
  18. package/declarations/arcgis-js-api-extensions/index.d.ts +11 -120
  19. package/docs/html/assets/search.js +1 -1
  20. package/docs/html/classes/data_FeatureStream.FeatureStream.html +1 -1
  21. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerExtension.html +5 -3
  22. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerSchema.html +1 -1
  23. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtension.html +18 -16
  24. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerSchema.html +5 -5
  25. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtension.html +5 -3
  26. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerSchema.html +2 -2
  27. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerExtension.html +5 -3
  28. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerSchema.html +2 -2
  29. package/docs/html/classes/mapping_KMLSublayerExtension.KMLSublayerExtension.html +5 -3
  30. package/docs/html/classes/mapping_MapImageSublayerExtension.MapImageSublayerExtension.html +5 -3
  31. package/docs/html/classes/mapping_TileSublayerExtension.TileSublayerExtension.html +5 -3
  32. package/docs/html/classes/mapping_WMSSublayerExtension.WMSSublayerExtension.html +5 -3
  33. package/docs/html/classes/mapping_WMTSSublayerExtension.WMTSSublayerExtension.html +5 -3
  34. package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +6 -6
  35. package/docs/html/classes/mapping__SublayerExtension.SublayerExtension.html +5 -3
  36. package/docs/html/classes/mapping__SublayerExtension.SublayerSchema.html +2 -2
  37. package/docs/html/classes/tasks_identify_BuildingComponentSublayerClientSideIdentifyProvider.BuildingComponentSublayerClientSideIdentifyProvider.html +2 -2
  38. package/docs/html/classes/tasks_identify_BuildingComponentSublayerHitTestIdentifyProvider.BuildingComponentSublayerHitTestIdentifyProvider.html +4 -4
  39. package/docs/html/classes/tasks_identify_CSVLayer3DHitTestIdentifyProvider.CSVLayer3DHitTestIdentifyProvider.html +4 -4
  40. package/docs/html/classes/tasks_identify_ClientSideIdentifyProvider.ClientSideIdentifyProvider.html +2 -2
  41. package/docs/html/classes/tasks_identify_FeatureLayer3DHitTestIdentifyProvider.FeatureLayer3DHitTestIdentifyProvider.html +4 -4
  42. package/docs/html/classes/tasks_identify_FeatureLayerClientSideIdentifyProvider.FeatureLayerClientSideIdentifyProvider.html +2 -2
  43. package/docs/html/classes/tasks_identify_HitTestIdentifyProvider.HitTestIdentifyProvider.html +6 -6
  44. package/docs/html/classes/tasks_identify_PointCloudLayerHitTestIdentifyProvider.PointCloudLayerHitTestIdentifyProvider.html +4 -4
  45. package/docs/html/classes/tasks_identify_SceneLayerClientSideIdentifyProvider.SceneLayerClientSideIdentifyProvider.html +2 -2
  46. package/docs/html/classes/tasks_identify_SceneLayerHitTestIdentifyProvider.SceneLayerHitTestIdentifyProvider.html +3 -3
  47. package/docs/html/classes/tasks_identify_StreamLayerClientSideQueryIdentifyProvider.StreamLayerClientSideQueryIdentifyProvider.html +2 -2
  48. package/docs/html/classes/tasks_query_BuildingComponentSublayerClientSideQueryProvider.BuildingComponentSublayerClientSideQueryProvider.html +6 -3
  49. package/docs/html/classes/tasks_query_ClientSideQueryProvider.ClientSideQueryProvider.html +6 -3
  50. package/docs/html/classes/tasks_query_QueryService.QueryService.html +3 -3
  51. package/docs/html/classes/tasks_query_SceneLayerClientSideQueryProvider.SceneLayerClientSideQueryProvider.html +6 -3
  52. package/docs/html/classes/tasks_query_SceneLayerQueryProvider.SceneLayerQueryProvider.html +2 -2
  53. package/docs/html/classes/tasks_query_StreamLayerClientSideQueryProvider.StreamLayerClientSideQueryProvider.html +4 -4
  54. package/docs/html/classes/utilities_asyncIterable.AsyncQueue.html +1 -1
  55. package/docs/html/classes/utilities_geometry.CoordinateSystemBounds.html +1 -1
  56. package/docs/html/enums/support_esri.WellKnownBasemap.html +1 -1
  57. package/docs/html/interfaces/data__TableExtension.TableExtensionProperties.html +1 -1
  58. package/docs/html/interfaces/data_support_attachments.AttachmentEnabledLayer.html +2 -2
  59. package/docs/html/interfaces/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtensionProperties.html +1 -1
  60. package/docs/html/interfaces/portal_Domain.DomainBase.html +1 -1
  61. package/docs/html/interfaces/portal_ImageServiceLayer.ImageServiceLayer-1.html +17 -17
  62. package/docs/html/interfaces/portal_Item.Item-1.html +48 -48
  63. package/docs/html/interfaces/portal_LayerDefinition.FieldOverride.html +3 -3
  64. package/docs/html/interfaces/portal_LayerDefinition.LayerDefinition-1.html +49 -50
  65. package/docs/html/interfaces/portal_LayerDefinition.LayerDefinitionDefaults.html +8 -8
  66. package/docs/html/interfaces/portal_LayerDefinition.LayerTimeInfo.html +9 -9
  67. package/docs/html/interfaces/portal_LayerDefinition.OrderByClause.html +9 -5
  68. package/docs/html/interfaces/portal_LayerDefinition.TimeInfoExportOptions.html +4 -4
  69. package/docs/html/interfaces/portal_PopupInfo.OrderByFields.html +2 -2
  70. package/docs/html/interfaces/portal_PopupInfo.PopupElement.html +5 -5
  71. package/docs/html/interfaces/portal_PopupInfo.PopupInfo-1.html +8 -8
  72. package/docs/html/interfaces/portal_PopupInfo.RelatedRecordsInfo.html +2 -2
  73. package/docs/html/interfaces/support_esri.AccessorLike.html +4 -4
  74. package/docs/html/interfaces/support_esri.ChangeEvent.html +4 -4
  75. package/docs/html/interfaces/support_esri.LayerWithSublayers.html +1 -1
  76. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatistics.html +1 -1
  77. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsFrequentValues.html +1 -1
  78. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsHistogram.html +1 -1
  79. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsLabel.html +1 -1
  80. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsLabels.html +1 -1
  81. package/docs/html/interfaces/support_esri.PointCloudLayerCachedStatisticsStats.html +1 -1
  82. package/docs/html/interfaces/support_esri.SublayerLike.html +14 -14
  83. package/docs/html/interfaces/utilities_geometry.GeoJSONLineString.html +2 -2
  84. package/docs/html/interfaces/utilities_geometry.GeoJSONMultiLineString.html +2 -2
  85. package/docs/html/interfaces/utilities_geometry.GeoJSONMultiPoint.html +2 -2
  86. package/docs/html/interfaces/utilities_geometry.GeoJSONMultiPolygon.html +2 -2
  87. package/docs/html/interfaces/utilities_geometry.GeoJSONPoint.html +2 -2
  88. package/docs/html/interfaces/utilities_geometry.GeoJSONPolygon.html +2 -2
  89. package/docs/html/interfaces/utilities_geometry.GeographicTransformationJson.html +1 -1
  90. package/docs/html/interfaces/utilities_geometry.GeographicTransformationStepJson.html +3 -3
  91. package/docs/html/interfaces/utilities_geometry.GmlOptions.html +3 -3
  92. package/docs/html/modules/data_convert.html +5 -5
  93. package/docs/html/modules/mapping_MapExtension.html +1 -1
  94. package/docs/html/modules/portal_Domain.Domain.html +6 -6
  95. package/docs/html/modules/portal_Domain.DomainType.html +2 -2
  96. package/docs/html/modules/portal_Domain.html +2 -2
  97. package/docs/html/modules/portal_ImageServiceLayer.ImageServiceLayer.html +1 -1
  98. package/docs/html/modules/portal_LayerDefinition.LayerDefinition.html +2 -2
  99. package/docs/html/modules/portal_LayerDefinition.LayerDefinitionCapabilities.html +6 -6
  100. package/docs/html/modules/portal_LayerDefinition.html +2 -2
  101. package/docs/html/modules/portal_PopupInfo.PopupInfo.html +1 -1
  102. package/docs/html/modules/portal_PopupInfo.html +1 -1
  103. package/docs/html/modules/support__query.html +2 -2
  104. package/docs/html/modules/support_esri.html +10 -10
  105. package/docs/html/modules/utilities_esri.html +2 -2
  106. package/docs/html/modules/utilities_geometry.html +25 -25
  107. package/docs/html/modules/version.html +1 -1
  108. package/layer-preset/LayerPreset.js +1 -1
  109. package/locale/language.js +1 -1
  110. package/mapping/ArcGISSublayerExtension.js +1 -1
  111. package/mapping/BasemapExtension.js +1 -1
  112. package/mapping/BuildingComponentSublayerExtension.d.ts +1 -0
  113. package/mapping/BuildingComponentSublayerExtension.js +1 -1
  114. package/mapping/BuildingSceneLayerExtension.js +1 -1
  115. package/mapping/BuildingSublayerExtension.js +1 -1
  116. package/mapping/CSVLayerExtension.js +1 -1
  117. package/mapping/FeatureCollectionLayerExtension.js +1 -1
  118. package/mapping/FeatureLayerExtension.js +1 -1
  119. package/mapping/FeatureLayerExtensionBase.js +1 -1
  120. package/mapping/GraphicsLayerExtension.js +1 -1
  121. package/mapping/GroundExtension.js +1 -1
  122. package/mapping/GroupLayerExtension.js +1 -1
  123. package/mapping/ImageryLayerExtension.js +1 -1
  124. package/mapping/ImageryTileLayerExtension.js +1 -1
  125. package/mapping/KMLLayerExtension.js +1 -1
  126. package/mapping/KMLSublayerExtension.js +1 -1
  127. package/mapping/MapExtension.js +1 -1
  128. package/mapping/MapImageLayerExtension.js +1 -1
  129. package/mapping/MapImageSublayerExtension.js +1 -1
  130. package/mapping/PointCloudLayerExtension.js +1 -1
  131. package/mapping/SceneLayerExtension.js +1 -1
  132. package/mapping/StreamLayerExtension.js +1 -1
  133. package/mapping/WMTSLayerExtension.js +1 -1
  134. package/mapping/WMTSSublayerExtension.js +1 -1
  135. package/mapping/_LayerExtension.js +1 -1
  136. package/mapping/_SublayerExtension.d.ts +4 -0
  137. package/mapping/_SublayerExtension.js +1 -1
  138. package/mapping/support/LayerListSettings.js +1 -1
  139. package/mapping/support/WfsCapabilities.js +1 -1
  140. package/mapping/support/_LayerExtensionCollection.js +1 -1
  141. package/mapping/support/_SublayerExtensionCollection.js +1 -1
  142. package/mapping/support/layers.js +1 -1
  143. package/mapping/support/ogc.js +1 -1
  144. package/menus/Menu.js +1 -1
  145. package/menus/MenuItem.js +1 -1
  146. package/package.json +4 -3
  147. package/portal/BaseMap.js +1 -1
  148. package/portal/Domain.d.ts +1 -1
  149. package/portal/DrawingInfo.js +1 -1
  150. package/portal/FeatureLayer.js +1 -1
  151. package/portal/ImageServiceLayer.d.ts +1 -1
  152. package/portal/IntegratedMeshLayer.js +1 -1
  153. package/portal/Layer.js +1 -1
  154. package/portal/LayerDefinition.d.ts +7 -4
  155. package/portal/LayerDefinition.js +1 -1
  156. package/portal/Lighting.js +1 -1
  157. package/portal/MapServiceLayer.js +1 -1
  158. package/portal/PointCloudLayer.js +1 -1
  159. package/portal/PopupInfo.js +1 -1
  160. package/portal/Slide.js +1 -1
  161. package/portal/Symbol.js +1 -1
  162. package/portal/Table.js +1 -1
  163. package/portal/TiledImageServiceLayer.js +1 -1
  164. package/portal/TiledMapServiceLayer.js +1 -1
  165. package/portal/WebMap.js +1 -1
  166. package/portal/WebScene.js +1 -1
  167. package/portal/Widgets.js +1 -1
  168. package/support/ArcGISRequestHelper.js +1 -1
  169. package/support/Cancellable.js +1 -1
  170. package/support/Observable.js +1 -1
  171. package/support/Serializable.js +1 -1
  172. package/support/Settings.js +1 -1
  173. package/support/_ArcGISRelationshipCollection.js +1 -1
  174. package/support/_query.js +1 -1
  175. package/support/esri.d.ts +2 -0
  176. package/support/utilities.js +1 -1
  177. package/tasks/geocoding/ArcGISGeocoder.js +1 -1
  178. package/tasks/geocoding/utilities.js +1 -1
  179. package/tasks/identify/BuildingComponentSublayerClientSideIdentifyProvider.js +1 -1
  180. package/tasks/identify/BuildingComponentSublayerHitTestIdentifyProvider.js +1 -1
  181. package/tasks/identify/CSVLayer3DHitTestIdentifyProvider.js +1 -1
  182. package/tasks/identify/CSVLayerClientSideQueryIdentifyProvider.js +1 -1
  183. package/tasks/identify/ClientSideIdentifyProvider.js +1 -1
  184. package/tasks/identify/FeatureLayer3DHitTestIdentifyProvider.js +1 -1
  185. package/tasks/identify/FeatureLayerClientSideIdentifyProvider.js +1 -1
  186. package/tasks/identify/FeatureLayerQueryIdentifyProvider.js +1 -1
  187. package/tasks/identify/HitTestIdentifyProvider.js +1 -1
  188. package/tasks/identify/IdentifyProviderBase.js +1 -1
  189. package/tasks/identify/IdentifyService.js +1 -1
  190. package/tasks/identify/ImageryLayerIdentifyProvider.js +1 -1
  191. package/tasks/identify/PointCloudLayerHitTestIdentifyProvider.js +1 -1
  192. package/tasks/identify/SceneLayerHitTestIdentifyProvider.js +1 -1
  193. package/tasks/identify/SceneLayerQueryIdentifyProvider.js +1 -1
  194. package/tasks/identify/StreamLayerClientSideQueryIdentifyProvider.js +1 -1
  195. package/tasks/identify/WMSSublayerIdentifyProvider.js +1 -1
  196. package/tasks/identify/_utilities.js +1 -1
  197. package/tasks/query/ArcGISRelationship.js +1 -1
  198. package/tasks/query/BuildingComponentSublayerClientSideQueryProvider.js +1 -1
  199. package/tasks/query/CSVLayerClientSideQueryProvider.js +1 -1
  200. package/tasks/query/ClientSideQueryProvider.d.ts +5 -0
  201. package/tasks/query/ClientSideQueryProvider.js +1 -1
  202. package/tasks/query/FeatureLayerQueryProvider.js +1 -1
  203. package/tasks/query/ImageryLayerQueryProvider.js +1 -1
  204. package/tasks/query/QueryService.js +1 -1
  205. package/tasks/query/SceneLayerClientSideQueryProvider.js +1 -1
  206. package/tasks/query/SceneLayerQueryProvider.js +1 -1
  207. package/tasks/query/StreamLayerClientSideQueryProvider.d.ts +4 -0
  208. package/tasks/query/StreamLayerClientSideQueryProvider.js +1 -1
  209. package/tasks/search/ArcGISGeocoderSearchProvider.js +1 -1
  210. package/tasks/search/GeocoderSearchProvider.js +1 -1
  211. package/tasks/search/QuerySearchProvider.js +1 -1
  212. package/tasks/search/SearchService.js +1 -1
  213. package/tasks/search/_utilities.js +1 -1
  214. package/utilities/_layers.js +1 -1
  215. package/utilities/arcade.js +1 -1
  216. package/utilities/checkArg.js +1 -1
  217. package/utilities/date.js +1 -1
  218. package/utilities/esri.js +1 -1
  219. package/utilities/extensions.js +1 -1
  220. package/utilities/geometry.js +1 -1
  221. package/utilities/mapping.js +1 -1
  222. package/utilities/number.js +1 -1
  223. package/utilities/portal.js +1 -1
  224. package/utilities/query.js +1 -1
  225. package/utilities/renderers.js +1 -1
  226. package/utilities/scaleRanges.js +1 -1
  227. package/utilities/string.js +1 -1
  228. package/utilities/symbol.js +1 -1
  229. package/utilities/watch.js +1 -1
  230. package/version.d.ts +1 -1
  231. package/version.js +1 -1
@@ -1 +1 @@
1
- import SpatialReference from"@arcgis/core/geometry/SpatialReference";import{ArgumentError}from"../../ArgumentError.js";import{wfsFeatureCollectionToFeatures}from"../../mapping/support/ogc.js";import{DefaultRequestHelper}from"../../utilities/RequestHelper.js";import{OgcNamespace,inferGmlVersion,getEpsgCode,WfsVersions}from"../../utilities/_ogc.js";import{checkArg}from"../../utilities/checkArg.js";import{isWMSSublayerExtension}from"../../utilities/extensions.js";import{esriToGml,project,esriWktToWkid}from"../../utilities/geometry.js";import{IdentifyProviderBase}from"./IdentifyProviderBase.js";export class WMSSublayerIdentifyProvider extends IdentifyProviderBase{constructor(){super(...arguments),this.requestHelper=new DefaultRequestHelper}isSupported(e,t,r){return isWMSSublayerExtension(e)&&void 0!==e.layerExtension&&void 0!==e.layerExtension.wfsUrl&&void 0!==e.layerExtension.wfsCapabilities}_identify(e,t,r){const s=(async()=>{const s=e;await s.layerExtension.wfsCapabilities.initialize();const i=this._resolveWfsFeatureType(s),a=await this._createGetFeatureSpatialQuery(e,t,i,r),n={method:"post",body:(new XMLSerializer).serializeToString(a),headers:{"Content-Type":"text/xml; charset=utf-8"}};return this.requestHelper.request(s.layerExtension.wfsUrl,n)})();return async function*(){const t=await s,r=await t.text(),i=(new DOMParser).parseFromString(r,"text/xml");if(!t||!i||i.childNodes.length<1)throw new Error("Response to WFS GetFeature request was invalid.");yield*wfsFeatureCollectionToFeatures(i.childNodes[0],e)}()}async _count(e,t,r={}){const s=(async()=>{const s=e;await s.initialize(),await s.layerExtension.wfsCapabilities.initialize();const i=this._resolveWfsFeatureType(s),a=await this._createGetFeatureSpatialQuery(e,t,i,r),n={method:"post",body:(new XMLSerializer).serializeToString(a),headers:{"Content-Type":"text/xml; charset=utf-8"}};return this.requestHelper.request(s.layerExtension.wfsUrl,n)})(),i=await s,a=await i.text(),n=(new DOMParser).parseFromString(a,"text/xml");if(!i||!n||n.childNodes.length<1)throw new Error("Response to WFS GetFeature request was invalid.");const o=wfsFeatureCollectionToFeatures(n.childNodes[0],e);return{source:e,count:o.length}}_resolveWfsFeatureType(e){checkArg("sublayerX",e).isNotMissing().satisfies((e=>{var t,r,s;return(null===(s=null===(r=null===(t=e.layerExtension)||void 0===t?void 0:t.wfsCapabilities)||void 0===r?void 0:r.featureTypes)||void 0===s?void 0:s.length)>0}),"Could not find a matching WFS feature type.");let t=e.layerExtension.wfsCapabilities.featureTypes.filter((t=>t.name===e.sublayer.name));if(t.length>0||(t=e.layerExtension.wfsCapabilities.featureTypes.filter((t=>this._spliceName(t.name)===e.sublayer.name))),!(t.length>0))throw new ArgumentError("sublayerX","Could not find a matching WFS feature type");return t[0]}_spliceName(e){checkArg("name",e).isNotNull();const t=e.indexOf(":");return t<0?e:e.slice(t+1,e.length)}async _createGetFeatureSpatialQuery(e,t,r,s){checkArg("source",e).isNotMissing().satisfies((e=>isWMSSublayerExtension(e))),checkArg("geometry",t).isNotMissing().satisfies((e=>["extent","point","polygon","polyline"].includes(e.type)));const i=e,a=i.layerExtension.wfsCapabilities,n=this._createGetFeatureElement(a,s),o=await this._createQueryElement(r,t);n.appendChild(o);let l=r.attributes;const{outFields:c}=e.featureSettings;c&&c.length>0&&(c.includes("*")||(l=c));for(const e of l){const t=this._createElement("wfs","PropertyName");t.textContent=e,o.appendChild(t)}const u=this._createFilterElement(i);o.appendChild(u);const m=this._createSpatialOperatorElement(i);u.appendChild(m);const p=this._createGeometryFieldElement(i,r);m.appendChild(p);const f=await this._createGeometryElement(i,t,a,r);return m.appendChild(f),n}_createGetFeatureElement(e,t){const r=this._createElement("wfs","GetFeature");r.setAttribute("service","WFS"),r.setAttribute("version",`${e.wfsVersion}`),r.setAttribute("xmlns:xs",OgcNamespace.XS),r.setAttribute("xmlns:ogc",OgcNamespace.OGC),r.setAttribute("xmlns:wfs",this._getWfsNameSpace(e.wfsVersion)),r.setAttribute("xmlns:gml",this._getGmlNameSpace(e.wfsVersion)),r.setAttribute("outputFormat",this._getOutputFormat(e));let s=1e3;if((null==t?void 0:t.maxResults)&&(s=t.maxResults),r.setAttribute("count",s.toString()),"2.0.0"===e.wfsVersion)r.setAttribute("xmlns:fes",OgcNamespace.FES_2_0);else r.setAttribute("xmlns:fes",OgcNamespace.FES);return r}async _createQueryElement(e,t){const r=this._createElement("wfs","Query"),s=await this._getSrsName(e,t);return r.setAttribute("typeNames",e.name),r.setAttribute("srsName",s),r}_createFilterElement(e){return"2.0.0"===e.layerExtension.wfsCapabilities.wfsVersion?this._createElement("fes","Filter"):this._createElement("ogc","Filter")}_createSpatialOperatorElement(e){return"2.0.0"===e.layerExtension.wfsCapabilities.wfsVersion?this._createElement("fes","Intersects"):this._createElement("ogc","Intersects")}_createGeometryFieldElement(e,t){if(checkArg("featureType.geometryField",t.geometryField).isNotMissing("The WFS feature type does not have a geometry field"),"2.0.0"===e.layerExtension.wfsCapabilities.wfsVersion){const e=this._createElement("fes","ValueReference");return e.textContent=t.geometryField,e}{const e=this._createElement("ogc","PropertyName");return e.textContent=t.geometryField,e}}async _createGeometryElement(e,t,r,s){checkArg("geometry",t).isNotMissing(),checkArg("geometry.spatialReference",t.spatialReference).isNotMissing();const i={gmlVersion:inferGmlVersion(r.wfsVersion)};if(i.srsName=await this._getSrsName(s,t),i.srsName===s.defaultCrs){const e=getEpsgCode(s.defaultCrs),r=await this.projectGeometry(t,e);return esriToGml(r,i)}return esriToGml(t,i)}async projectGeometry(e,t){const r=await project([e],new SpatialReference({wkid:t}));if(r&&r.length>0)return r[0];throw new Error("Unable to create a geometry element.")}_createElement(e,t){checkArg("name",t).isNotMissing();const r=document.implementation.createDocument(void 0,"temp",void 0);return e?r.createElement(`${e}:${t}`):r.createElement(t)}_getWfsNameSpace(e){switch(e){case"1.0.0":case"1.1.0":return OgcNamespace.WFS;default:return OgcNamespace.WFS_2_0}}_getGmlNameSpace(e){switch(e){case"1.0.0":case"1.1.0":return OgcNamespace.GML;default:return OgcNamespace.GML_3_2}}_getOutputFormat(e){const t=["text/xml; version=gml/","text/xml; subType=gml/","application/gml+xml; version="],r=["2.1","2.1.2","2.1.1","2.0.0"],s=["3.2","3.2.1","3.1","3.1.1","3.1.0","3.0.1","3.0.0"];let i;switch(e.wfsVersion){case WfsVersions.WFS1_0_0:return i=this._matchOutputFormat(t,r,e),i||"GML2";case WfsVersions.WFS1_1_0:return i=this._matchOutputFormat(t,s,e),i||"text/xml; subtype=gml/3.1.1";default:return i=this._matchOutputFormat(t,s,e),i||"text/gml+xml; version=3.2"}}_matchOutputFormat(e,t,r){for(const s of t)for(const t of e){const e=r.getFeatureOutputFormats.filter((e=>e===`${t}${s}`));if(e&&e.length>0)return e[0]}}async _getSrsName(e,t){checkArg("wfsFeatureType",e).isNotMissing(),checkArg("geometry",t).isNotMissing();const r=t.spatialReference.wkid?t.spatialReference.wkid:await esriWktToWkid(t.spatialReference.wkt);if(r===getEpsgCode(e.defaultCrs))return`EPSG:${r}`;for(const t of e.otherCrs)if(r===getEpsgCode(t))return`EPSG:${r}`;return e.defaultCrs}}
1
+ import SpatialReference from"@arcgis/core/geometry/SpatialReference";import{ArgumentError}from"../../ArgumentError.js";import{wfsFeatureCollectionToFeatures}from"../../mapping/support/ogc.js";import{DefaultRequestHelper}from"../../utilities/RequestHelper.js";import{OgcNamespace,inferGmlVersion,getEpsgCode,WfsVersions}from"../../utilities/_ogc.js";import{checkArg}from"../../utilities/checkArg.js";import{isWMSSublayerExtension}from"../../utilities/extensions.js";import{esriToGml,project,esriWktToWkid}from"../../utilities/geometry.js";import{IdentifyProviderBase}from"./IdentifyProviderBase.js";export class WMSSublayerIdentifyProvider extends IdentifyProviderBase{constructor(){super(...arguments),this.requestHelper=new DefaultRequestHelper}isSupported(e,t,r){return isWMSSublayerExtension(e)&&void 0!==e.layerExtension&&void 0!==e.layerExtension.wfsUrl&&void 0!==e.layerExtension.wfsCapabilities}_identify(e,t,r){const s=(async()=>{const s=e;await s.layerExtension.wfsCapabilities.initialize();const i=this._resolveWfsFeatureType(s),a=await this._createGetFeatureSpatialQuery(e,t,i,r),n={method:"post",body:(new XMLSerializer).serializeToString(a),headers:{"Content-Type":"text/xml; charset=utf-8"}};return this.requestHelper.request(s.layerExtension.wfsUrl,n)})();return async function*(){const t=await s,r=await t.text(),i=(new DOMParser).parseFromString(r,"text/xml");if(!t||!i||i.childNodes.length<1)throw new Error("Response to WFS GetFeature request was invalid.");yield*wfsFeatureCollectionToFeatures(i.childNodes[0],e)}()}async _count(e,t,r={}){const s=(async()=>{const s=e;await s.initialize(),await s.layerExtension.wfsCapabilities.initialize();const i=this._resolveWfsFeatureType(s),a=await this._createGetFeatureSpatialQuery(e,t,i,r),n={method:"post",body:(new XMLSerializer).serializeToString(a),headers:{"Content-Type":"text/xml; charset=utf-8"}};return this.requestHelper.request(s.layerExtension.wfsUrl,n)})(),i=await s,a=await i.text(),n=(new DOMParser).parseFromString(a,"text/xml");if(!i||!n||n.childNodes.length<1)throw new Error("Response to WFS GetFeature request was invalid.");const o=wfsFeatureCollectionToFeatures(n.childNodes[0],e);return{source:e,count:o.length}}_resolveWfsFeatureType(e){checkArg("sublayerX",e).isNotMissing().satisfies((e=>e.layerExtension?.wfsCapabilities?.featureTypes?.length>0),"Could not find a matching WFS feature type.");let t=e.layerExtension.wfsCapabilities.featureTypes.filter((t=>t.name===e.sublayer.name));if(t.length>0||(t=e.layerExtension.wfsCapabilities.featureTypes.filter((t=>this._spliceName(t.name)===e.sublayer.name))),!(t.length>0))throw new ArgumentError("sublayerX","Could not find a matching WFS feature type");return t[0]}_spliceName(e){checkArg("name",e).isNotNull();const t=e.indexOf(":");return t<0?e:e.slice(t+1,e.length)}async _createGetFeatureSpatialQuery(e,t,r,s){checkArg("source",e).isNotMissing().satisfies((e=>isWMSSublayerExtension(e))),checkArg("geometry",t).isNotMissing().satisfies((e=>["extent","point","polygon","polyline"].includes(e.type)));const i=e,a=i.layerExtension.wfsCapabilities,n=this._createGetFeatureElement(a,s),o=await this._createQueryElement(r,t);n.appendChild(o);let l=r.attributes;const{outFields:c}=e.featureSettings;c&&c.length>0&&(c.includes("*")||(l=c));for(const e of l){const t=this._createElement("wfs","PropertyName");t.textContent=e,o.appendChild(t)}const u=this._createFilterElement(i);o.appendChild(u);const m=this._createSpatialOperatorElement(i);u.appendChild(m);const p=this._createGeometryFieldElement(i,r);m.appendChild(p);const f=await this._createGeometryElement(i,t,a,r);return m.appendChild(f),n}_createGetFeatureElement(e,t){const r=this._createElement("wfs","GetFeature");r.setAttribute("service","WFS"),r.setAttribute("version",`${e.wfsVersion}`),r.setAttribute("xmlns:xs",OgcNamespace.XS),r.setAttribute("xmlns:ogc",OgcNamespace.OGC),r.setAttribute("xmlns:wfs",this._getWfsNameSpace(e.wfsVersion)),r.setAttribute("xmlns:gml",this._getGmlNameSpace(e.wfsVersion)),r.setAttribute("outputFormat",this._getOutputFormat(e));let s=1e3;if(t?.maxResults&&(s=t.maxResults),r.setAttribute("count",s.toString()),"2.0.0"===e.wfsVersion)r.setAttribute("xmlns:fes",OgcNamespace.FES_2_0);else r.setAttribute("xmlns:fes",OgcNamespace.FES);return r}async _createQueryElement(e,t){const r=this._createElement("wfs","Query"),s=await this._getSrsName(e,t);return r.setAttribute("typeNames",e.name),r.setAttribute("srsName",s),r}_createFilterElement(e){return"2.0.0"===e.layerExtension.wfsCapabilities.wfsVersion?this._createElement("fes","Filter"):this._createElement("ogc","Filter")}_createSpatialOperatorElement(e){return"2.0.0"===e.layerExtension.wfsCapabilities.wfsVersion?this._createElement("fes","Intersects"):this._createElement("ogc","Intersects")}_createGeometryFieldElement(e,t){if(checkArg("featureType.geometryField",t.geometryField).isNotMissing("The WFS feature type does not have a geometry field"),"2.0.0"===e.layerExtension.wfsCapabilities.wfsVersion){const e=this._createElement("fes","ValueReference");return e.textContent=t.geometryField,e}{const e=this._createElement("ogc","PropertyName");return e.textContent=t.geometryField,e}}async _createGeometryElement(e,t,r,s){checkArg("geometry",t).isNotMissing(),checkArg("geometry.spatialReference",t.spatialReference).isNotMissing();const i={gmlVersion:inferGmlVersion(r.wfsVersion)};if(i.srsName=await this._getSrsName(s,t),i.srsName===s.defaultCrs){const e=getEpsgCode(s.defaultCrs),r=await this.projectGeometry(t,e);return esriToGml(r,i)}return esriToGml(t,i)}async projectGeometry(e,t){const r=await project([e],new SpatialReference({wkid:t}));if(r&&r.length>0)return r[0];throw new Error("Unable to create a geometry element.")}_createElement(e,t){checkArg("name",t).isNotMissing();const r=document.implementation.createDocument(void 0,"temp",void 0);return e?r.createElement(`${e}:${t}`):r.createElement(t)}_getWfsNameSpace(e){switch(e){case"1.0.0":case"1.1.0":return OgcNamespace.WFS;default:return OgcNamespace.WFS_2_0}}_getGmlNameSpace(e){switch(e){case"1.0.0":case"1.1.0":return OgcNamespace.GML;default:return OgcNamespace.GML_3_2}}_getOutputFormat(e){const t=["text/xml; version=gml/","text/xml; subType=gml/","application/gml+xml; version="],r=["2.1","2.1.2","2.1.1","2.0.0"],s=["3.2","3.2.1","3.1","3.1.1","3.1.0","3.0.1","3.0.0"];let i;switch(e.wfsVersion){case WfsVersions.WFS1_0_0:return i=this._matchOutputFormat(t,r,e),i||"GML2";case WfsVersions.WFS1_1_0:return i=this._matchOutputFormat(t,s,e),i||"text/xml; subtype=gml/3.1.1";default:return i=this._matchOutputFormat(t,s,e),i||"text/gml+xml; version=3.2"}}_matchOutputFormat(e,t,r){for(const s of t)for(const t of e){const e=r.getFeatureOutputFormats.filter((e=>e===`${t}${s}`));if(e&&e.length>0)return e[0]}}async _getSrsName(e,t){checkArg("wfsFeatureType",e).isNotMissing(),checkArg("geometry",t).isNotMissing();const r=t.spatialReference.wkid?t.spatialReference.wkid:await esriWktToWkid(t.spatialReference.wkt);if(r===getEpsgCode(e.defaultCrs))return`EPSG:${r}`;for(const t of e.otherCrs)if(r===getEpsgCode(t))return`EPSG:${r}`;return e.defaultCrs}}
@@ -1 +1 @@
1
- export async function hitTestForClusterFeatures(e,t){const i=e._layerView.view,r=await i.hitTest(i.toScreen("point"===t.type?t:t.extent.center));return null==r?void 0:r.results.map((e=>e.graphic)).filter((t=>(null==t?void 0:t.layer.id)===(null==e?void 0:e.layer.id)&&t.isAggregate))}
1
+ export async function hitTestForClusterFeatures(e,t){const r=e._layerView.view;return(await r.hitTest(r.toScreen("point"===t.type?t:t.extent.center)))?.results.map((e=>e.graphic)).filter((t=>t?.layer.id===e?.layer.id&&t.isAggregate))}
@@ -1 +1 @@
1
- import{__decorate}from"tslib";import RelationshipQuery from"@arcgis/core/rest/support/RelationshipQuery";import{isSublayerExtension}from"../../ItemType.js";import{toFeature}from"../../data/Feature.js";import{FeatureSet}from"../../data/FeatureSet.js";import{serializable}from"../../support/Serializable.js";import{isFeatureLayer,isMapImageSublayer as isSublayer}from"../../utilities/_layers.js";import{isArcGISServiceTableExtension,isFeatureLayerExtension}from"../../utilities/extensions.js";import{QueryBasedRelationship}from"./QueryBasedRelationship.js";const SUBLAYER_CACHE=new WeakMap;let ArcGISRelationship=class extends QueryBasedRelationship{constructor(e){super(e),this.relationshipType="ArcGISRelationship",this.relationshipTableId=e.relationshipTableId,this.originForeignKey=e.originForeignKey,this.destinationForeignKey=e.destinationForeignKey}get isAttributed(){return"number"==typeof this.relationshipTableId}_getSerializableProperties(){return{...super._getSerializableProperties(),$relationshipType:{serializeModes:["initial"],serialize:()=>"ArcGISRelationship"},destinationForeignKey:"initial",originForeignKey:"initial",relationshipTableId:"initial"}}async _getRelatedFeatures(e){return(await queryRelatedFeatures([e],getQueryable(this.source),this.relatedSource,{relationshipId:+this.id})).get(e)}async _getAllRelatedFeatures(e){return queryRelatedFeatures(e,getQueryable(this.source),this.relatedSource,{relationshipId:+this.id})}};ArcGISRelationship=__decorate([serializable],ArcGISRelationship);export{ArcGISRelationship};function getQueryable(e){let t;if(isArcGISServiceTableExtension(e))t=e.table;else if(isFeatureLayerExtension(e))t=e.layer;else{if(!isSublayerExtension(e)||!isSublayer(e.sublayer))throw new Error(`Cannot query for related records. Unsupported FeatureSource: ${e.title} (${e.itemType}/${e.id})`);t=e.sublayer}return t}const DEFAULT_RELATIONSHIP_QUERY_PROPERTIES={returnGeometry:!0};async function queryRelatedFeatures(e,t,i,r){var a;const s=e.map((e=>+(null==e?void 0:e.primaryKey))),o=new RelationshipQuery({...DEFAULT_RELATIONSHIP_QUERY_PROPERTIES,objectIds:s.filter((e=>!isNaN(e)&&"number"==typeof e)),outFields:null!==(a=null==i?void 0:i.featureSettings.outFields)&&void 0!==a?a:["*"],...r});let l;if(isFeatureLayer(t))l=t;else{const e=t;SUBLAYER_CACHE.has(e)||SUBLAYER_CACHE.set(e,await e.createFeatureLayer()),l=SUBLAYER_CACHE.get(e)}const n=await l.queryRelatedFeatures(o),u=new Map;return s.forEach(((t,r)=>{var a,s;u.set(e[r],new FeatureSet({source:i,features:null!==(s=null===(a=n[t])||void 0===a?void 0:a.features.map((e=>toFeature(e,{source:i}))))&&void 0!==s?s:[]}))})),u}
1
+ import{__decorate}from"tslib";import RelationshipQuery from"@arcgis/core/rest/support/RelationshipQuery";import{isSublayerExtension}from"../../ItemType.js";import{toFeature}from"../../data/Feature.js";import{FeatureSet}from"../../data/FeatureSet.js";import{serializable}from"../../support/Serializable.js";import{isFeatureLayer,isMapImageSublayer as isSublayer}from"../../utilities/_layers.js";import{isArcGISServiceTableExtension,isFeatureLayerExtension}from"../../utilities/extensions.js";import{QueryBasedRelationship}from"./QueryBasedRelationship.js";const SUBLAYER_CACHE=new WeakMap;let ArcGISRelationship=class extends QueryBasedRelationship{constructor(e){super(e),this.relationshipType="ArcGISRelationship",this.relationshipTableId=e.relationshipTableId,this.originForeignKey=e.originForeignKey,this.destinationForeignKey=e.destinationForeignKey}get isAttributed(){return"number"==typeof this.relationshipTableId}_getSerializableProperties(){return{...super._getSerializableProperties(),$relationshipType:{serializeModes:["initial"],serialize:()=>"ArcGISRelationship"},destinationForeignKey:"initial",originForeignKey:"initial",relationshipTableId:"initial"}}async _getRelatedFeatures(e){return(await queryRelatedFeatures([e],getQueryable(this.source),this.relatedSource,{relationshipId:+this.id})).get(e)}async _getAllRelatedFeatures(e){return queryRelatedFeatures(e,getQueryable(this.source),this.relatedSource,{relationshipId:+this.id})}};ArcGISRelationship=__decorate([serializable],ArcGISRelationship);export{ArcGISRelationship};function getQueryable(e){let t;if(isArcGISServiceTableExtension(e))t=e.table;else if(isFeatureLayerExtension(e))t=e.layer;else{if(!isSublayerExtension(e)||!isSublayer(e.sublayer))throw new Error(`Cannot query for related records. Unsupported FeatureSource: ${e.title} (${e.itemType}/${e.id})`);t=e.sublayer}return t}const DEFAULT_RELATIONSHIP_QUERY_PROPERTIES={returnGeometry:!0};async function queryRelatedFeatures(e,t,r,i){const a=e.map((e=>+e?.primaryKey)),s=new RelationshipQuery({...DEFAULT_RELATIONSHIP_QUERY_PROPERTIES,objectIds:a.filter((e=>!isNaN(e)&&"number"==typeof e)),outFields:r?.featureSettings.outFields??["*"],...i});let o;if(isFeatureLayer(t))o=t;else{const e=t;SUBLAYER_CACHE.has(e)||SUBLAYER_CACHE.set(e,await e.createFeatureLayer()),o=SUBLAYER_CACHE.get(e)}const n=await o.queryRelatedFeatures(s),l=new Map;return a.forEach(((t,i)=>{l.set(e[i],new FeatureSet({source:r,features:n[t]?.features.map((e=>toFeature(e,{source:r})))??[]}))})),l}
@@ -1 +1 @@
1
- import{isBuildingComponentSublayer}from"../../utilities/_layers.js";import{empty}from"../../utilities/asyncIterable.js";import{isWebScene}from"../../utilities/mapping.js";import{ClientSideQueryProvider}from"./ClientSideQueryProvider.js";export class BuildingComponentSublayerClientSideQueryProvider extends ClientSideQueryProvider{isSupported(e){var r,i;const t=isWebScene(null===(i=null===(r=null==e?void 0:e.layerExtension)||void 0===r?void 0:r.mapExtension)||void 0===i?void 0:i.map),{sublayer:n}=e;return isBuildingComponentSublayer(n)&&t}_query(e,r,i){return e._layerView?super._query(e,r,i):empty()}async _count(e,r,i){return e._layerView?super._count(e,r,i):{source:e,count:0}}_createQuery(e,r,i){const t=super._createQuery(e,r,i);return"mesh"===e.sublayer.geometryType&&(t.returnGeometry=!1),t}}
1
+ import{isBuildingComponentSublayer}from"../../utilities/_layers.js";import{empty}from"../../utilities/asyncIterable.js";import{isWebScene}from"../../utilities/mapping.js";import{ClientSideQueryProvider}from"./ClientSideQueryProvider.js";export class BuildingComponentSublayerClientSideQueryProvider extends ClientSideQueryProvider{isSupported(e){const r=isWebScene(e?.layerExtension?.mapExtension?.map),{sublayer:i}=e;return isBuildingComponentSublayer(i)&&r}_query(e,r,i){return e._layerView?super._query(e,r,i):empty()}async _count(e,r,i){return e._layerView?super._count(e,r,i):{source:e,count:0}}_createQuery(e,r,i){const t=super._createQuery(e,r,i);return"mesh"===e.sublayer.geometryType&&(t.returnGeometry=!1),t}}
@@ -1 +1 @@
1
- import{executeQuery,executeCount}from"../../support/_query.js";import{isCSVLayer}from"../../utilities/_layers.js";import{removeZValues}from"../../utilities/geometry.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class CSVLayerClientSideQueryProvider extends QueryProviderBase{isSupported(e){const{layer:r}=e;return isCSVLayer(r)}_query(e,r,t){var o,i,s;const{layer:a}=e,l=a.createQuery();l.where=r,l.outFields=t.outFields,l.returnGeometry=t.returnGeometry,l.outSpatialReference=t.outSpatialReference,l.maxAllowableOffset=t.maxAllowableOffset,l.returnZ="scene"===(null===(o=e.mapExtension)||void 0===o?void 0:o.viewMode);let u=t.spatialFilter;return u&&(l.spatialRelationship="intersects",(null===(s=null===(i=a.capabilities)||void 0===i?void 0:i.data)||void 0===s?void 0:s.supportsZ)||(u=removeZValues(u.clone())),l.geometry=u),a.capabilities.query.supportsPagination&&(l.num=t.maxResults),executeQuery(l,e,a,t.cancelToken)}async _count(e,r,t){var o,i;const{layer:s}=e,a=s.createQuery();a.where=r,a.outFields=t.outFields,a.returnGeometry=t.returnGeometry;let l=t.spatialFilter;return l&&(a.spatialRelationship="intersects",l&&!(null===(i=null===(o=s.capabilities)||void 0===o?void 0:o.data)||void 0===i?void 0:i.supportsZ)&&(l=removeZValues(l.clone())),a.geometry=l),a.num=t.maxResults,executeCount(a,e,s,t.cancelToken)}}
1
+ import{executeQuery,executeCount}from"../../support/_query.js";import{isCSVLayer}from"../../utilities/_layers.js";import{removeZValues}from"../../utilities/geometry.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class CSVLayerClientSideQueryProvider extends QueryProviderBase{isSupported(e){const{layer:r}=e;return isCSVLayer(r)}_query(e,r,t){const{layer:s}=e,a=s.createQuery();a.where=r,a.outFields=t.outFields,a.returnGeometry=t.returnGeometry,a.outSpatialReference=t.outSpatialReference,a.maxAllowableOffset=t.maxAllowableOffset,a.returnZ="scene"===e.mapExtension?.viewMode;let o=t.spatialFilter;return o&&(a.spatialRelationship="intersects",s.capabilities?.data?.supportsZ||(o=removeZValues(o.clone())),a.geometry=o),s.capabilities.query.supportsPagination&&(a.num=t.maxResults),executeQuery(a,e,s,t.cancelToken)}async _count(e,r,t){const{layer:s}=e,a=s.createQuery();a.where=r,a.outFields=t.outFields,a.returnGeometry=t.returnGeometry;let o=t.spatialFilter;return o&&(a.spatialRelationship="intersects",o&&!s.capabilities?.data?.supportsZ&&(o=removeZValues(o.clone())),a.geometry=o),a.num=t.maxResults,executeCount(a,e,s,t.cancelToken)}}
@@ -20,6 +20,11 @@ export declare type ClientSideQueryableSublayerExtension = BuildingComponentSubl
20
20
  * A query provider that only uses client-side data.
21
21
  */
22
22
  export declare abstract class ClientSideQueryProvider extends QueryProviderBase {
23
+ /**
24
+ * Whether to wait for the layerView.updating flag to return false before
25
+ * executing the query.
26
+ */
27
+ protected get _waitForUpdatingFinished(): boolean;
23
28
  /**
24
29
  * @inheritdoc
25
30
  */
@@ -1 +1 @@
1
- import{toFeature}from"../../data/Feature.js";import{cancelifyWithAbortSignal}from"../../support/Cancellable.js";import*as asyncIterable from"../../utilities/asyncIterable.js";import{isBuildingComponentSublayer}from"../../utilities/layers.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class ClientSideQueryProvider extends QueryProviderBase{_query(e,t,r){const a=this;return async function*(){const i=await a._getClientSideLayerGraphics(e,t,r);i&&i.length?yield*i.map((t=>toFeature(t,{source:e}))):yield*asyncIterable.empty()}()}async _count(e,t,r){const a=await this._getClientSideLayerGraphics(e,t,r);return{source:e,count:a?a.length:0}}_createQuery(e,t,r){var a;const{_layerView:i,featureSettings:n}=e,s=isBuildingComponentSublayer(e.sublayer)?null===(a=e.layerExtension)||void 0===a?void 0:a.mapExtension:e.mapExtension,o=i.createQuery();return o.where=t,o.geometry=r.spatialFilter,o.outFields=n.outFields,o.returnGeometry=r.returnGeometry,o.outSpatialReference=r.outSpatialReference,o.maxAllowableOffset=r.maxAllowableOffset,o.num=r.maxResults,o.returnZ="scene"===(null==s?void 0:s.viewMode),o}async _getClientSideLayerGraphics(e,t,r){const{_layerView:a}=e;if(!a)return;await new Promise(((e,t)=>{a.updating||e();const r=a.watch("updating",(t=>{t||(r.remove(),e())}))}));const i=await cancelifyWithAbortSignal((async i=>a.queryFeatures(this._createQuery(e,t,r),{signal:i})),r.cancelToken);return null==i?void 0:i.features}}
1
+ import{toFeature}from"../../data/Feature.js";import{cancelify,cancelifyWithAbortSignal}from"../../support/Cancellable.js";import*as asyncIterable from"../../utilities/asyncIterable.js";import{isBuildingComponentSublayer}from"../../utilities/layers.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class ClientSideQueryProvider extends QueryProviderBase{get _waitForUpdatingFinished(){return!0}_query(e,t,r){const a=this;return async function*(){const i=await a._getClientSideLayerGraphics(e,t,r);i&&i.length?yield*i.map((t=>toFeature(t,{source:e}))):yield*asyncIterable.empty()}()}async _count(e,t,r){const a=await this._getClientSideLayerGraphics(e,t,r);return{source:e,count:a?a.length:0}}_createQuery(e,t,r){const{_layerView:a,featureSettings:i}=e,n=isBuildingComponentSublayer(e.sublayer)?e.layerExtension?.mapExtension:e.mapExtension,s=a.createQuery();return s.where=t,s.geometry=r.spatialFilter,s.outFields=i.outFields,s.returnGeometry=r.returnGeometry,s.outSpatialReference=r.outSpatialReference,s.maxAllowableOffset=r.maxAllowableOffset,s.num=r.maxResults,s.returnZ="scene"===n?.viewMode,s}async _getClientSideLayerGraphics(e,t,r){const{_layerView:a}=e;if(!a)return;this._waitForUpdatingFinished&&await cancelify(new Promise(((e,t)=>{a.updating||e();const r=a.watch("updating",(t=>{t||(r.remove(),e())}))})),r.cancelToken);return(await cancelifyWithAbortSignal((async i=>a.queryFeatures(this._createQuery(e,t,r),{signal:i})),r.cancelToken))?.features}}
@@ -1 +1 @@
1
- import{executeQuery,executeCount}from"../../support/_query.js";import{isFeatureLayer}from"../../utilities/_layers.js";import{removeZValues}from"../../utilities/geometry.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class FeatureLayerQueryProvider extends QueryProviderBase{isSupported(e){const{layer:r}=e;return isFeatureLayer(r)&&e.capabilities.supportsQuery}_query(e,r,t){var o,i,a;const{layer:s}=e,u=s.createQuery();u.where=r,u.outFields=t.outFields,u.returnGeometry=t.returnGeometry,u.outSpatialReference=t.outSpatialReference,u.maxAllowableOffset=t.maxAllowableOffset,u.returnZ="scene"===(null===(o=e.mapExtension)||void 0===o?void 0:o.viewMode);let l=t.spatialFilter;return l&&(u.spatialRelationship="intersects",!l||s.hasZ&&(null===(a=null===(i=s.capabilities)||void 0===i?void 0:i.data)||void 0===a?void 0:a.supportsZ)||(l=removeZValues(l.clone())),u.geometry=l),s.capabilities.query.supportsPagination&&(u.num=t.maxResults),executeQuery(u,e,s,t.cancelToken)}_count(e,r,t){var o,i;const{layer:a}=e,s=a.createQuery();s.where=r,s.outFields=t.outFields,s.returnGeometry=t.returnGeometry;let u=t.spatialFilter;return u&&(s.spatialRelationship="intersects",!u||a.hasZ&&(null===(i=null===(o=a.capabilities)||void 0===o?void 0:o.data)||void 0===i?void 0:i.supportsZ)||(u=removeZValues(u.clone())),s.geometry=u),s.num=t.maxResults,executeCount(s,e,a,t.cancelToken)}}
1
+ import{executeQuery,executeCount}from"../../support/_query.js";import{isFeatureLayer}from"../../utilities/_layers.js";import{removeZValues}from"../../utilities/geometry.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class FeatureLayerQueryProvider extends QueryProviderBase{isSupported(e){const{layer:r}=e;return isFeatureLayer(r)&&e.capabilities.supportsQuery}_query(e,r,t){const{layer:s}=e,a=s.createQuery();a.where=r,a.outFields=t.outFields,a.returnGeometry=t.returnGeometry,a.outSpatialReference=t.outSpatialReference,a.maxAllowableOffset=t.maxAllowableOffset,a.returnZ="scene"===e.mapExtension?.viewMode;let o=t.spatialFilter;return o&&(a.spatialRelationship="intersects",!o||s.hasZ&&s.capabilities?.data?.supportsZ||(o=removeZValues(o.clone())),a.geometry=o),s.capabilities.query.supportsPagination&&(a.num=t.maxResults),executeQuery(a,e,s,t.cancelToken)}_count(e,r,t){const{layer:s}=e,a=s.createQuery();a.where=r,a.outFields=t.outFields,a.returnGeometry=t.returnGeometry;let o=t.spatialFilter;return o&&(a.spatialRelationship="intersects",!o||s.hasZ&&s.capabilities?.data?.supportsZ||(o=removeZValues(o.clone())),a.geometry=o),a.num=t.maxResults,executeCount(a,e,s,t.cancelToken)}}
@@ -1 +1 @@
1
- import{executeQueryJSON,executeForCount}from"@arcgis/core/rest/query";import Query from"@arcgis/core/rest/support/Query";import{InvalidOperationError}from"../../InvalidOperationError.js";import{executeQuery,executeCount}from"../../support/_query.js";import{isImageryLayer}from"../../utilities/_layers.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class ImageryLayerQueryProvider extends QueryProviderBase{isSupported(e){const{layer:r}=e;return isImageryLayer(r)&&e.capabilities.supportsQuery}_query(e,r,t){const u=this._getQueryable(e),o=createQuery();return o.where=r,o.outFields=t.outFields,o.num=t.maxResults,executeQuery(o,e,u,t.cancelToken)}async _count(e,r,t){const u=this._getQueryable(e),o=createQuery();return o.where=r,o.outFields=t.outFields,o.num=t.maxResults,executeCount(o,e,u,t.cancelToken)}_getQueryable(e){return{queryFeatures(r,t){const u=executeQueryJSON(e.layer.url,null!=r?r:createQuery(),t);if(!e.capabilities.supportsQuery)throw new InvalidOperationError("Querying features not supported");return u},queryFeatureCount(r,t){const u=executeForCount(e.layer.url,null!=r?r:createQuery(),t);if(!e.capabilities.supportsQuery)throw new InvalidOperationError("Querying features not supported");return u}}}}function createQuery(){return new Query({where:"1=1",outFields:["*"],returnGeometry:!0})}
1
+ import{executeQueryJSON,executeForCount}from"@arcgis/core/rest/query";import Query from"@arcgis/core/rest/support/Query";import{InvalidOperationError}from"../../InvalidOperationError.js";import{executeQuery,executeCount}from"../../support/_query.js";import{isImageryLayer}from"../../utilities/_layers.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class ImageryLayerQueryProvider extends QueryProviderBase{isSupported(e){const{layer:r}=e;return isImageryLayer(r)&&e.capabilities.supportsQuery}_query(e,r,t){const u=this._getQueryable(e),o=createQuery();return o.where=r,o.outFields=t.outFields,o.num=t.maxResults,executeQuery(o,e,u,t.cancelToken)}async _count(e,r,t){const u=this._getQueryable(e),o=createQuery();return o.where=r,o.outFields=t.outFields,o.num=t.maxResults,executeCount(o,e,u,t.cancelToken)}_getQueryable(e){return{queryFeatures(r,t){const u=executeQueryJSON(e.layer.url,r??createQuery(),t);if(!e.capabilities.supportsQuery)throw new InvalidOperationError("Querying features not supported");return u},queryFeatureCount(r,t){const u=executeForCount(e.layer.url,r??createQuery(),t);if(!e.capabilities.supportsQuery)throw new InvalidOperationError("Querying features not supported");return u}}}}function createQuery(){return new Query({where:"1=1",outFields:["*"],returnGeometry:!0})}
@@ -1 +1 @@
1
- import{InvalidOperationError}from"../../InvalidOperationError.js";import{isCancellation}from"../../support/utilities.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{ArcGISServiceTableQueryProvider}from"./ArcGISServiceTableQueryProvider.js";import{ArcGISSublayerQueryProvider}from"./ArcGISSublayerQueryProvider.js";import{BuildingComponentSublayerClientSideQueryProvider}from"./BuildingComponentSublayerClientSideQueryProvider.js";import{CSVLayerClientSideQueryProvider}from"./CSVLayerClientSideQueryProvider.js";import{FeatureLayerQueryProvider}from"./FeatureLayerQueryProvider.js";import{GeoRSSLayerQueryProvider}from"./GeoRSSLayerQueryProvider.js";import{ImageryLayerQueryProvider}from"./ImageryLayerQueryProvider.js";import{KMLLayerQueryProvider}from"./KMLLayerQueryProvider.js";import{QueryError}from"./QueryError.js";import{QueryOptions}from"./QueryOptions.js";import{SceneLayerClientSideQueryProvider}from"./SceneLayerClientSideQueryProvider.js";import{SceneLayerQueryProvider}from"./SceneLayerQueryProvider.js";import{StreamLayerClientSideQueryProvider}from"./StreamLayerClientSideQueryProvider.js";export class QueryService{constructor(){this.providers=new Collection,this.providers.add(new ArcGISServiceTableQueryProvider),this.providers.add(new ArcGISSublayerQueryProvider),this.providers.add(new CSVLayerClientSideQueryProvider),this.providers.add(new FeatureLayerQueryProvider),this.providers.add(new GeoRSSLayerQueryProvider),this.providers.add(new ImageryLayerQueryProvider),this.providers.add(new KMLLayerQueryProvider),this.providers.add(new BuildingComponentSublayerClientSideQueryProvider),this.providers.add(new SceneLayerQueryProvider),this.providers.add(new SceneLayerClientSideQueryProvider),this.providers.add(new StreamLayerClientSideQueryProvider)}isSupported(r){return!!this.providers.find((e=>e.isSupported(r)))}query(r,e,i){checkArg("source",r).isNotMissing(),checkArg("where",e).isNotMissing().isNotEmpty();const o=this.providers.find((e=>e.isSupported(r)));if(!o)throw new InvalidOperationError("Unable to query: no provider registered for this type of feature source.");return async function*(){try{await r.initialize();const t={...QueryOptions.DEFAULTS,...QueryOptions.fromFeatureSource(r),...i},d=o.query(r,e,t);for await(const r of d)t.outSpatialReference&&(r.schema.spatialReference=t.outSpatialReference),yield r}catch(e){throw isCancellation(e)?e:new QueryError(r,e)}}()}async count(r,e,i){checkArg("source",r).isNotMissing(),checkArg("where",e).isNotMissing();const o=this.providers.find((e=>e.isSupported(r)));if(!o)throw new InvalidOperationError("Unable to query: no provider registered for this type of feature source.");try{await r.initialize();const t={returnGeometry:!1,outFields:void 0};return await o.count(r,e,{...QueryOptions.fromFeatureSource(r),...i,...t})}catch(e){throw isCancellation(e)?e:new QueryError(r,e)}}}
1
+ import{InvalidOperationError}from"../../InvalidOperationError.js";import{isCancellation}from"../../support/utilities.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{ArcGISServiceTableQueryProvider}from"./ArcGISServiceTableQueryProvider.js";import{ArcGISSublayerQueryProvider}from"./ArcGISSublayerQueryProvider.js";import{BuildingComponentSublayerClientSideQueryProvider}from"./BuildingComponentSublayerClientSideQueryProvider.js";import{CSVLayerClientSideQueryProvider}from"./CSVLayerClientSideQueryProvider.js";import{FeatureLayerQueryProvider}from"./FeatureLayerQueryProvider.js";import{GeoRSSLayerQueryProvider}from"./GeoRSSLayerQueryProvider.js";import{ImageryLayerQueryProvider}from"./ImageryLayerQueryProvider.js";import{KMLLayerQueryProvider}from"./KMLLayerQueryProvider.js";import{QueryError}from"./QueryError.js";import{QueryOptions}from"./QueryOptions.js";import{SceneLayerClientSideQueryProvider}from"./SceneLayerClientSideQueryProvider.js";import{SceneLayerQueryProvider}from"./SceneLayerQueryProvider.js";import{StreamLayerClientSideQueryProvider}from"./StreamLayerClientSideQueryProvider.js";export class QueryService{constructor(){this.providers=new Collection,this.providers.add(new ArcGISServiceTableQueryProvider),this.providers.add(new ArcGISSublayerQueryProvider),this.providers.add(new CSVLayerClientSideQueryProvider),this.providers.add(new FeatureLayerQueryProvider),this.providers.add(new GeoRSSLayerQueryProvider),this.providers.add(new ImageryLayerQueryProvider),this.providers.add(new KMLLayerQueryProvider),this.providers.add(new BuildingComponentSublayerClientSideQueryProvider),this.providers.add(new SceneLayerClientSideQueryProvider),this.providers.add(new SceneLayerQueryProvider),this.providers.add(new StreamLayerClientSideQueryProvider)}isSupported(r){return!!this.providers.find((e=>e.isSupported(r)))}query(r,e,i){checkArg("source",r).isNotMissing(),checkArg("where",e).isNotMissing().isNotEmpty();const o=this.providers.find((e=>e.isSupported(r)));if(!o)throw new InvalidOperationError("Unable to query: no provider registered for this type of feature source.");return async function*(){try{await r.initialize();const t={...QueryOptions.DEFAULTS,...QueryOptions.fromFeatureSource(r),...i},d=o.query(r,e,t);for await(const r of d)t.outSpatialReference&&(r.schema.spatialReference=t.outSpatialReference),yield r}catch(e){throw isCancellation(e)?e:new QueryError(r,e)}}()}async count(r,e,i){checkArg("source",r).isNotMissing(),checkArg("where",e).isNotMissing();const o=this.providers.find((e=>e.isSupported(r)));if(!o)throw new InvalidOperationError("Unable to query: no provider registered for this type of feature source.");try{await r.initialize();const t={returnGeometry:!1,outFields:void 0};return await o.count(r,e,{...QueryOptions.fromFeatureSource(r),...i,...t})}catch(e){throw isCancellation(e)?e:new QueryError(r,e)}}}
@@ -1 +1 @@
1
- import{isSceneLayer}from"../../utilities/_layers.js";import{isWebScene}from"../../utilities/mapping.js";import{ClientSideQueryProvider}from"./ClientSideQueryProvider.js";export class SceneLayerClientSideQueryProvider extends ClientSideQueryProvider{isSupported(e){var r;const i=!!e._layerView&&isWebScene(null===(r=e.mapExtension)||void 0===r?void 0:r.map),{layer:t}=e;return isSceneLayer(t)&&i}_createQuery(e,r,i){const t=super._createQuery(e,r,i);return"mesh"===e.layer.geometryType&&(t.returnGeometry=!1),t}}
1
+ import{isSceneLayer}from"../../utilities/_layers.js";import{isWebScene}from"../../utilities/mapping.js";import{ClientSideQueryProvider}from"./ClientSideQueryProvider.js";export class SceneLayerClientSideQueryProvider extends ClientSideQueryProvider{isSupported(e){const r=!!e._layerView&&isWebScene(e.mapExtension?.map),{layer:i}=e;return isSceneLayer(i)&&r&&(e.enableClientSideData||!e.layer.associatedLayer)}_createQuery(e,r,i){const t=super._createQuery(e,r,i);return"mesh"===e.layer.geometryType&&(t.returnGeometry=!1),t}}
@@ -1 +1 @@
1
- import{executeQuery,executeCount}from"../../support/_query.js";import{isSceneLayer}from"../../utilities/_layers.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class SceneLayerQueryProvider extends QueryProviderBase{isSupported(e){const{layer:r}=e;return isSceneLayer(r)&&!!r.associatedLayer&&!e.enableClientSideData}_query(e,r,t){const{layer:a}=e,s=a.associatedLayer.createQuery();return s.where=r,s.outFields=t.outFields,s.returnGeometry=t.returnGeometry,s.outSpatialReference=t.outSpatialReference,s.maxAllowableOffset=t.maxAllowableOffset,t.spatialFilter&&(s.spatialRelationship="intersects",s.geometry=t.spatialFilter),s.num=t.maxResults,s.returnZ=!0,executeQuery(s,e,a.associatedLayer,t.cancelToken)}async _count(e,r,t){const{layer:a}=e,s=a.associatedLayer.createQuery();return s.where=r,s.outFields=t.outFields,s.returnGeometry=t.returnGeometry,t.spatialFilter&&(s.spatialRelationship="intersects",s.geometry=t.spatialFilter),s.num=t.maxResults,executeCount(s,e,a.associatedLayer,t.cancelToken)}}
1
+ import{executeQuery,executeCount}from"../../support/_query.js";import{isSceneLayer}from"../../utilities/_layers.js";import{QueryProviderBase}from"./QueryProviderBase.js";export class SceneLayerQueryProvider extends QueryProviderBase{isSupported(e){const{layer:r}=e;return isSceneLayer(r)&&!!r.associatedLayer}_query(e,r,t){const{layer:a}=e,s=a.associatedLayer.createQuery();return s.where=r,s.outFields=t.outFields,s.returnGeometry=t.returnGeometry,s.outSpatialReference=t.outSpatialReference,s.maxAllowableOffset=t.maxAllowableOffset,t.spatialFilter&&(s.spatialRelationship="intersects",s.geometry=t.spatialFilter),s.num=t.maxResults,s.returnZ=!0,executeQuery(s,e,a.associatedLayer,t.cancelToken)}async _count(e,r,t){const{layer:a}=e,s=a.associatedLayer.createQuery();return s.where=r,s.outFields=t.outFields,s.returnGeometry=t.returnGeometry,t.spatialFilter&&(s.spatialRelationship="intersects",s.geometry=t.spatialFilter),s.num=t.maxResults,executeCount(s,e,a.associatedLayer,t.cancelToken)}}
@@ -6,6 +6,10 @@ import type { QueryOptions } from "./QueryOptions.js";
6
6
  * A query provider for stream layers.
7
7
  */
8
8
  export declare class StreamLayerClientSideQueryProvider extends ClientSideQueryProvider {
9
+ /**
10
+ * @inheritdoc
11
+ */
12
+ protected get _waitForUpdatingFinished(): boolean;
9
13
  /**
10
14
  * @inheritdoc
11
15
  */
@@ -1 +1 @@
1
- import{isStreamLayer}from"../../utilities/_layers.js";import{isWebScene}from"../../utilities/mapping.js";import{ClientSideQueryProvider}from"./ClientSideQueryProvider.js";export class StreamLayerClientSideQueryProvider extends ClientSideQueryProvider{isSupported(e){var r;const i=e._layerView&&isWebScene(null===(r=e.mapExtension)||void 0===r?void 0:r.map),{layer:t}=e;return isStreamLayer(t)&&!i}_createQuery(e,r,i){var t;const s=super._createQuery(e,r,i),o=null===(t=s.outFields)||void 0===t?void 0:t.findIndex((e=>"__esri_stream_id__"===e));return o>=0&&s.outFields.splice(o,1),s}}
1
+ import{isStreamLayer}from"../../utilities/_layers.js";import{isWebScene}from"../../utilities/mapping.js";import{ClientSideQueryProvider}from"./ClientSideQueryProvider.js";export class StreamLayerClientSideQueryProvider extends ClientSideQueryProvider{get _waitForUpdatingFinished(){return!1}isSupported(e){const r=e._layerView&&isWebScene(e.mapExtension?.map),{layer:i}=e;return isStreamLayer(i)&&!r}_createQuery(e,r,i){const t=super._createQuery(e,r,i),s=t.outFields?.findIndex((e=>"__esri_stream_id__"===e));return s>=0&&t.outFields.splice(s,1),t}}
@@ -1 +1 @@
1
- import{SCORE_FIELD,SCORE_FIELD_ORIGINAL}from"../../data/Feature.js";import{isArcGISGeocoder}from"../geocoding/utilities.js";import{GeocoderSearchProvider}from"./GeocoderSearchProvider.js";const SCORE_DECREMENT_UNIT=.001,SCORE_EXACT_MATCH=100,SCORE_NON_MATCH_MAX=99,MATCH_ADDR_FIELD="Match_addr";export class ArcGISGeocoderSearchProvider extends GeocoderSearchProvider{isSupported(e){return isArcGISGeocoder(e)}async*_search(e,t,r){var o;const[a]=e,{cancelToken:s,currentScale:i,initialSearchArea:c,outSpatialReference:E,maxResults:d}=null!=r?r:{},S={cancelToken:s,searchPoint:i&&(null===(o=null==c?void 0:c.extent)||void 0===o?void 0:o.center),searchArea:!i&&c,outFields:a.featureSettings.outFields,outSpatialReference:E,maxResults:d};if(!t)return;const _=t.replace(/^"*|"*$/g,"");let n=0,u=.001;for await(const e of a.geocode(_,S)){if(e.attributes.get("Match_addr")===_)e.attributes.set(SCORE_FIELD,100),e.attributes.set(SCORE_FIELD_ORIGINAL,100);else{let t=e.attributes.get(SCORE_FIELD);t=t>99?99:t,e.attributes.set(SCORE_FIELD,t),e.attributes.set(SCORE_FIELD_ORIGINAL,t),t===n?(e.attributes.set(SCORE_FIELD,n-u),e.attributes.set(SCORE_FIELD_ORIGINAL,n-u),u+=.001):(n=t,u=.001)}yield e}}}
1
+ import{SCORE_FIELD,SCORE_FIELD_ORIGINAL}from"../../data/Feature.js";import{isArcGISGeocoder}from"../geocoding/utilities.js";import{GeocoderSearchProvider}from"./GeocoderSearchProvider.js";const SCORE_DECREMENT_UNIT=.001,SCORE_EXACT_MATCH=100,SCORE_NON_MATCH_MAX=99,MATCH_ADDR_FIELD="Match_addr";export class ArcGISGeocoderSearchProvider extends GeocoderSearchProvider{isSupported(e){return isArcGISGeocoder(e)}async*_search(e,t,r){const[a]=e,{cancelToken:o,currentScale:s,initialSearchArea:c,outSpatialReference:i,maxResults:E}=r??{},S={cancelToken:o,searchPoint:s&&c?.extent?.center,searchArea:!s&&c,outFields:a.featureSettings.outFields,outSpatialReference:i,maxResults:E};if(!t)return;const _=t.replace(/^"*|"*$/g,"");let d=0,I=.001;for await(const e of a.geocode(_,S)){if(e.attributes.get("Match_addr")===_)e.attributes.set(SCORE_FIELD,100),e.attributes.set(SCORE_FIELD_ORIGINAL,100);else{let t=e.attributes.get(SCORE_FIELD);t=t>99?99:t,e.attributes.set(SCORE_FIELD,t),e.attributes.set(SCORE_FIELD_ORIGINAL,t),t===d?(e.attributes.set(SCORE_FIELD,d-I),e.attributes.set(SCORE_FIELD_ORIGINAL,d-I),I+=.001):(d=t,I=.001)}yield e}}}
@@ -1 +1 @@
1
- import{isGeocoder}from"../../ItemType.js";import{SCORE_FIELD,SCORE_FIELD_ORIGINAL}from"../../data/Feature.js";import{SearchProviderBase}from"./SearchProviderBase.js";const SCORE_DECREMENT_UNIT=.001;export class GeocoderSearchProvider extends SearchProviderBase{isSupported(e){return isGeocoder(e)}async*_search(e,t,a){var r;const[n]=e,{cancelToken:o,currentScale:c,initialSearchArea:s,outSpatialReference:i,maxResults:l}=null!=a?a:{},u={cancelToken:o,searchPoint:c&&(null===(r=null==s?void 0:s.extent)||void 0===r?void 0:r.center),searchArea:!c&&s,outFields:n.featureSettings.outFields,outSpatialReference:i,maxResults:l};if(!t)return;let d=0,S=.001;for await(const e of n.geocode(t,u)){const t=e.attributes.get(SCORE_FIELD);t===d?(e.attributes.set(SCORE_FIELD,d-S),e.attributes.set(SCORE_FIELD_ORIGINAL,d-S),S+=.001):(d=t,S=.001),yield e}}async _count(e,t,a){var r;const[n]=e,{cancelToken:o,currentScale:c,initialSearchArea:s,maxResults:i}=null!=a?a:{},l={cancelToken:o,searchPoint:c&&(null===(r=null==s?void 0:s.extent)||void 0===r?void 0:r.center),searchArea:!c&&s,maxResults:i};if(t)return[await n.count(t,l)]}async _suggest(e,t,a){var r;const[n]=e,{cancelToken:o,currentScale:c,initialSearchArea:s,outSpatialReference:i,maxSuggestions:l}=null!=a?a:{},u={cancelToken:o,searchPoint:c&&(null===(r=null==s?void 0:s.extent)||void 0===r?void 0:r.center),searchArea:!c&&s,outFields:["*"],outSpatialReference:i,maxResults:l},d=await n.suggest(t,u);let S=100;return d.map((e=>(S-=.001,{suggestion:e,score:S})))}}
1
+ import{isGeocoder}from"../../ItemType.js";import{SCORE_FIELD,SCORE_FIELD_ORIGINAL}from"../../data/Feature.js";import{SearchProviderBase}from"./SearchProviderBase.js";const SCORE_DECREMENT_UNIT=.001;export class GeocoderSearchProvider extends SearchProviderBase{isSupported(e){return isGeocoder(e)}async*_search(e,t,a){const[r]=e,{cancelToken:c,currentScale:s,initialSearchArea:n,outSpatialReference:o,maxResults:i}=a??{},u={cancelToken:c,searchPoint:s&&n?.extent?.center,searchArea:!s&&n,outFields:r.featureSettings.outFields,outSpatialReference:o,maxResults:i};if(!t)return;let l=0,S=.001;for await(const e of r.geocode(t,u)){const t=e.attributes.get(SCORE_FIELD);t===l?(e.attributes.set(SCORE_FIELD,l-S),e.attributes.set(SCORE_FIELD_ORIGINAL,l-S),S+=.001):(l=t,S=.001),yield e}}async _count(e,t,a){const[r]=e,{cancelToken:c,currentScale:s,initialSearchArea:n,maxResults:o}=a??{},i={cancelToken:c,searchPoint:s&&n?.extent?.center,searchArea:!s&&n,maxResults:o};if(t)return[await r.count(t,i)]}async _suggest(e,t,a){const[r]=e,{cancelToken:c,currentScale:s,initialSearchArea:n,outSpatialReference:o,maxSuggestions:i}=a??{},u={cancelToken:c,searchPoint:s&&n?.extent?.center,searchArea:!s&&n,outFields:["*"],outSpatialReference:o,maxResults:i},l=await r.suggest(t,u);let S=100;return l.map((e=>(S-=.001,{suggestion:e,score:S})))}}
@@ -1 +1 @@
1
- import{difference}from"@arcgis/core/geometry/geometryEngine";import{SCORE_FIELD,SCORE_FIELD_ORIGINAL}from"../../data/Feature.js";import{escape}from"../../support/_query.js";import{AsyncQueue}from"../../utilities/asyncIterable.js";import{isCodedValueDomain}from"../../utilities/esri.js";import{getBounds,getScreenExtent}from"../../utilities/geometry.js";import{average,standardDeviation}from"../../utilities/math.js";import{format,NumberFormat,NumberFormatter}from"../../utilities/number.js";import{map}from"../../utilities/promise.js";import{expandExtentToScale,getNextScale,getScaleRange}from"../../utilities/scaleRanges.js";import{QueryService}from"../query/QueryService.js";import{SearchOptions}from"./SearchOptions.js";import{SearchProviderBase}from"./SearchProviderBase.js";import{getSearchableValue}from"./_utilities.js";export class QuerySearchProvider extends SearchProviderBase{constructor(){super(...arguments),this.queryService=new QueryService,this.separatorRegex=/(\s|-(?![\d,.]))+/,this.quotedTermsRegex=/(?:"(.*?)")|(?:“(.*?)”)|(?:«(.*?)»)|(?:„(.*?)”)|(?:„(.*?)“)|(?:»(.*?)«)/g}isSupported(e){return this.queryService.isSupported(e)}getSearchTerms(e,t){const r=e.match(this.quotedTermsRegex),i=t(e.replace(this.quotedTermsRegex,""));return r?i.concat(r.map((e=>e.replace(/"|“|”|«|»|„/g,"")))):i}_search(e,t,r){const i=new AsyncQueue,n=new Map,a="__id";let s=0;const o=initializeElasticlunrIndex(this.separatorRegex);return e.forEach((c=>{(async()=>{var l;try{const{index:u,tokenizer:m}=await o;u.setRef(a);const d={...SearchOptions.DEFAULTS,...SearchOptions.fromFeatureSource(c),spatialFilter:null==r?void 0:r.initialSearchArea,...r},f=u.pipeline.run(this.getSearchTerms(t,m)),p=getSearchableFields(c),g=getWhereClause(c,f,p,d);if(!f.length||!p.length||!g)return;const h={...d,maxResults:Math.max(d.maxQueryResults||d.maxResults,d.maxResults)};let S=0,F=h.currentScale;const x=new Map,y=c.getFullExtent();for(const e of p)u.addField(e.name.toLowerCase());for(;;){if(i.isDone)return;const e=this.queryService.query(c,g,h),r=new Map;for await(const t of e){if(i.isDone)return;const e={};for(const r of p)e[r.name.toLowerCase()]=getSearchableValue(t,r);const a=`${c.id}-${t.primaryKey}`;e.__id=a,u.addDoc(e),r.set(a,t),n.set(a,t)}const a=u.search(t,{expand:!0});normalizeScores(a);for(const e of a){const t=n.get(e.ref);if(t&&(t.attributes.set(SCORE_FIELD,e.score),t.attributes.set(SCORE_FIELD_ORIGINAL,e.score)),r.has(e.ref)&&!x.has(e.ref)&&(x.set(e.ref,t),r.delete(e.ref),i.add(t),S++),S>=d.maxResults)break}for(const[e,t]of r){if(S>=d.maxResults)break;t.attributes.set(SCORE_FIELD,50),t.attributes.set(SCORE_FIELD_ORIGINAL,50),x.has(e)||(x.set(e,t),i.add(t),S++)}if(S>=d.maxResults)break;const{scale:s,geometry:o}=this._expandSearchArea(null===(l=h.spatialFilter)||void 0===l?void 0:l.extent,y,F,0===S?3:1);if(!o)break;h.spatialFilter=o,F=s}}catch(e){i.reject(e)}finally{++s===e.length&&i.done()}})()})),i}_expandSearchArea(e,t,r,i){if(!t||!e||!r||e.contains(t))return{};const n=getNextScale(r,i),a=!n||n>=getScaleRange("continent")?t:expandExtentToScale(e,r,n);return{geometry:isInBounds([a])?difference(a,e):a,scale:n}}async _count(e,t,r){return map(e,(async e=>{var i;const{index:n,tokenizer:a}=await initializeElasticlunrIndex(this.separatorRegex),s={...SearchOptions.fromFeatureSource(e),...r,spatialFilter:null==r?void 0:r.initialSearchArea,returnGeometry:!1},o=n.pipeline.run(this.getSearchTerms(t,a)),c=getSearchableFields(e);if(!o.length||!c.length)return{source:e,count:0};const l=getWhereClause(e,o,c,s);let u=s.currentScale;const m=e.getFullExtent();let d;for(;;){if(d=await this.queryService.count(e,l,s),d.count>=s.maxResults)break;const{scale:t,geometry:r}=this._expandSearchArea(null===(i=s.spatialFilter)||void 0===i?void 0:i.extent,m,u,0===d.count?3:1);if(!r)break;s.spatialFilter=r.extent,u=t}return d}))}async _suggest(e,t,r){return[]}}function getSearchableFields(e){const{outFields:t}=e.featureSettings,r=!t.includes("*");return e.schema.fieldExtensions.initializedItems.filter((e=>e.searchable&&(!r||t.includes(e.field.name)))).map((e=>e.field)).toArray()}async function initializeElasticlunrIndex(e){const t=await import("elasticlunr");t.tokenizer.setSeperator(e),t.Pipeline.getRegisteredFunction("gcx.trimmer")||t.Pipeline.registerFunction(trimmer,"gcx.trimmer");const r=t.default();return r.pipeline.reset(),r.pipeline.add(trimmer),r.pipeline.add(t.Pipeline.getRegisteredFunction("stopWordFilter")),r.saveDocument(!1),{index:r,tokenizer:t.tokenizer}}function getWhereClause(e,t,r,i){var n;const a=[],s=new NumberFormatter({locale:i.locale,defaultParseFormat:[NumberFormat.CURRENCY,NumberFormat.FIXED_POINT,NumberFormat.PERCENT,NumberFormat.NUMBER,NumberFormat.ROUND_TRIP]});for(const i of r){let r=[];i.domain&&isCodedValueDomain(i.domain)&&(r=r.concat(i.domain.codedValues));for(const t of e.schema.types.toArray()){const e=t.domains;(null===(n=null==e?void 0:e[i.name])||void 0===n?void 0:n.codedValues)&&(r=r.concat(e[i.name].codedValues))}for(const n of t)if(e.schema.types.length>0&&i.name===e.schema.typeIdField){const t=e.schema.types.findIndex((e=>e.name.toLowerCase()===n.toLowerCase()));if(t>-1){const r=e.schema.types.getItemAt(t).id;"string"==typeof r?a.push(`${e.schema.typeIdField} = '${escape(r)}'`):a.push(`${e.schema.typeIdField} = ${r}`)}}else if(r.length>0){const e=r.findIndex((e=>e.name.toLowerCase().includes(n.toLowerCase())));e>-1&&("string"==typeof r[e].code?a.push(`${i.name} = '${escape(r[e].code)}'`):a.push(`${i.name} = ${r[e].code}`))}else switch(i.type){case"string":a.push(`lower(${i.name}) like '%${escape(n.toLowerCase())}%'`);break;case"integer":case"small-integer":case"single":case"double":{const e=zeroOutEsriInsignificantDigits(n),t=s.parse({format:[NumberFormat.DEFAULT,NumberFormat.FIXED_POINT,NumberFormat.NUMBER]},e);if(isNaN(t))continue;const r=getSearchRange(t);t<0?a.push(`(${i.name} > ${r.lower} and ${i.name} <= ${r.upper})`):a.push(`(${i.name} >= ${r.lower} and ${i.name} < ${r.upper})`);break}}}return a.join(" or ")}function getSearchRange(e){let t,r=0;const i=format(NumberFormat.ROUND_TRIP,e),n=countEsriInsignificantDigits(i);i.includes(".")&&(r=i.length-i.indexOf(".")-1);let a=e;return 0===n&&r>0?t=Math.pow(10,-(r-1)):r>n?(a=Number(e.toFixed(r-n)),t=Math.pow(10,-r)):t=1,t/=2,{lower:(a-t).toFixed(r+1),upper:(a+t).toFixed(r+1)}}function normalizeScores(e){const t=e.map((e=>e.score)),r=average(t),i=standardDeviation(t);for(const t of e)i?(t.score=(t.score-r)/i,t.score=Math.max(-2,t.score),t.score=Math.min(2,t.score),t.score=t.score/4+.5,t.score*=100):t.score=100}function trimmer(e){if(null==e)throw new Error("token should not be undefined");return e.replace(/^[^a-zA-Z0-9\u007F-\uFFFF-]+/,"").replace(/[^a-zA-Z0-9\u007F-\uFFFF-]+$/,"")}function zeroOutEsriInsignificantDigits(e){let t=countEsriInsignificantDigits(e);const r=format(-123456780.9),i=_localNumberSymbols();if(t>0){const n=new RegExp(`[${r}]`,"g"),a=e.match(n),s=a.length;let o=0;for(;t>0&&o<=s;){const e=s-o-1;i.includes(a[e])||(a[e]=format(0).toString(),t--),o++}if(a)return a.join("")}return e}function _localNumberSymbols(){const e=format(1234567890);return format(-123456780.9).split("").filter((t=>!e.includes(t))).join("")}function countEsriInsignificantDigits(e){const t=format(1234567890),r=new RegExp(`[${t}]`,"g"),i=e.match(r);return i?i.length-14:void 0}function isInBounds(e){const t=e.filter((e=>!!(null==e?void 0:e.spatialReference)));if(!t.length)return!0;const{spatialReference:r}=t[0],{isWebMercator:i,isWGS84:n}=r;if(!i&&!n)return!0;const{xmax:a,xmin:s}=getScreenExtent(t),{max:o,min:c}=getBounds(r);return a<=o&&s>=c}
1
+ import{difference}from"@arcgis/core/geometry/geometryEngine";import{SCORE_FIELD,SCORE_FIELD_ORIGINAL}from"../../data/Feature.js";import{escape}from"../../support/_query.js";import{AsyncQueue}from"../../utilities/asyncIterable.js";import{isCodedValueDomain}from"../../utilities/esri.js";import{getBounds,getScreenExtent}from"../../utilities/geometry.js";import{average,standardDeviation}from"../../utilities/math.js";import{format,NumberFormat,NumberFormatter}from"../../utilities/number.js";import{map}from"../../utilities/promise.js";import{expandExtentToScale,getNextScale,getScaleRange}from"../../utilities/scaleRanges.js";import{QueryService}from"../query/QueryService.js";import{SearchOptions}from"./SearchOptions.js";import{SearchProviderBase}from"./SearchProviderBase.js";import{getSearchableValue}from"./_utilities.js";export class QuerySearchProvider extends SearchProviderBase{constructor(){super(...arguments),this.queryService=new QueryService,this.separatorRegex=/(\s|-(?![\d,.]))+/,this.quotedTermsRegex=/(?:"(.*?)")|(?:“(.*?)”)|(?:«(.*?)»)|(?:„(.*?)”)|(?:„(.*?)“)|(?:»(.*?)«)/g}isSupported(e){return this.queryService.isSupported(e)}getSearchTerms(e,t){const r=e.match(this.quotedTermsRegex),n=t(e.replace(this.quotedTermsRegex,""));return r?n.concat(r.map((e=>e.replace(/"|“|”|«|»|„/g,"")))):n}_search(e,t,r){const n=new AsyncQueue,i=new Map,s="__id";let a=0;const o=initializeElasticlunrIndex(this.separatorRegex);return e.forEach((c=>{(async()=>{try{const{index:u,tokenizer:l}=await o;u.setRef(s);const m={...SearchOptions.DEFAULTS,...SearchOptions.fromFeatureSource(c),spatialFilter:r?.initialSearchArea,...r},d=u.pipeline.run(this.getSearchTerms(t,l)),f=getSearchableFields(c),p=getWhereClause(c,d,f,m);if(!d.length||!f.length||!p)return;const g={...m,maxResults:Math.max(m.maxQueryResults||m.maxResults,m.maxResults)};let h=0,S=g.currentScale;const F=new Map,x=c.getFullExtent();for(const e of f)u.addField(e.name.toLowerCase());for(;;){if(n.isDone)return;const e=this.queryService.query(c,p,g),r=new Map;for await(const t of e){if(n.isDone)return;const e={};for(const r of f)e[r.name.toLowerCase()]=getSearchableValue(t,r);const s=`${c.id}-${t.primaryKey}`;e.__id=s,u.addDoc(e),r.set(s,t),i.set(s,t)}const s=u.search(t,{expand:!0});normalizeScores(s);for(const e of s){const t=i.get(e.ref);if(t&&(t.attributes.set(SCORE_FIELD,e.score),t.attributes.set(SCORE_FIELD_ORIGINAL,e.score)),r.has(e.ref)&&!F.has(e.ref)&&(F.set(e.ref,t),r.delete(e.ref),n.add(t),h++),h>=m.maxResults)break}for(const[e,t]of r){if(h>=m.maxResults)break;t.attributes.set(SCORE_FIELD,50),t.attributes.set(SCORE_FIELD_ORIGINAL,50),F.has(e)||(F.set(e,t),n.add(t),h++)}if(h>=m.maxResults)break;const{scale:a,geometry:o}=this._expandSearchArea(g.spatialFilter?.extent,x,S,0===h?3:1);if(!o)break;g.spatialFilter=o,S=a}}catch(e){n.reject(e)}finally{++a===e.length&&n.done()}})()})),n}_expandSearchArea(e,t,r,n){if(!t||!e||!r||e.contains(t))return{};const i=getNextScale(r,n),s=!i||i>=getScaleRange("continent")?t:expandExtentToScale(e,r,i);return{geometry:isInBounds([s])?difference(s,e):s,scale:i}}async _count(e,t,r){return map(e,(async e=>{const{index:n,tokenizer:i}=await initializeElasticlunrIndex(this.separatorRegex),s={...SearchOptions.fromFeatureSource(e),...r,spatialFilter:r?.initialSearchArea,returnGeometry:!1},a=n.pipeline.run(this.getSearchTerms(t,i)),o=getSearchableFields(e);if(!a.length||!o.length)return{source:e,count:0};const c=getWhereClause(e,a,o,s);let u=s.currentScale;const l=e.getFullExtent();let m;for(;;){if(m=await this.queryService.count(e,c,s),m.count>=s.maxResults)break;const{scale:t,geometry:r}=this._expandSearchArea(s.spatialFilter?.extent,l,u,0===m.count?3:1);if(!r)break;s.spatialFilter=r.extent,u=t}return m}))}async _suggest(e,t,r){return[]}}function getSearchableFields(e){const{outFields:t}=e.featureSettings,r=!t.includes("*");return e.schema.fieldExtensions.initializedItems.filter((e=>e.searchable&&(!r||t.includes(e.field.name)))).map((e=>e.field)).toArray()}async function initializeElasticlunrIndex(e){const t=(await import("elasticlunr")).default;t.tokenizer.setSeperator(e),t.Pipeline.getRegisteredFunction("gcx.trimmer")||t.Pipeline.registerFunction(trimmer,"gcx.trimmer");const r=t();return r.pipeline.reset(),r.pipeline.add(trimmer),r.pipeline.add(t.Pipeline.getRegisteredFunction("stopWordFilter")),r.saveDocument(!1),{index:r,tokenizer:t.tokenizer}}function getWhereClause(e,t,r,n){const i=[],s=new NumberFormatter({locale:n.locale,defaultParseFormat:[NumberFormat.CURRENCY,NumberFormat.FIXED_POINT,NumberFormat.PERCENT,NumberFormat.NUMBER,NumberFormat.ROUND_TRIP]});for(const n of r){let r=[];n.domain&&isCodedValueDomain(n.domain)&&(r=r.concat(n.domain.codedValues));for(const t of e.schema.types.toArray()){const e=t.domains;e?.[n.name]?.codedValues&&(r=r.concat(e[n.name].codedValues))}for(const a of t)if(e.schema.types.length>0&&n.name===e.schema.typeIdField){const t=e.schema.types.findIndex((e=>e.name.toLowerCase()===a.toLowerCase()));if(t>-1){const r=e.schema.types.getItemAt(t).id;"string"==typeof r?i.push(`${e.schema.typeIdField} = '${escape(r)}'`):i.push(`${e.schema.typeIdField} = ${r}`)}}else if(r.length>0){const e=r.findIndex((e=>e.name.toLowerCase().includes(a.toLowerCase())));e>-1&&("string"==typeof r[e].code?i.push(`${n.name} = '${escape(r[e].code)}'`):i.push(`${n.name} = ${r[e].code}`))}else switch(n.type){case"string":i.push(`lower(${n.name}) like '%${escape(a.toLowerCase())}%'`);break;case"integer":case"small-integer":case"single":case"double":{const e=zeroOutEsriInsignificantDigits(a),t=s.parse({format:[NumberFormat.DEFAULT,NumberFormat.FIXED_POINT,NumberFormat.NUMBER]},e);if(isNaN(t))continue;const r=getSearchRange(t);t<0?i.push(`(${n.name} > ${r.lower} and ${n.name} <= ${r.upper})`):i.push(`(${n.name} >= ${r.lower} and ${n.name} < ${r.upper})`);break}}}return i.join(" or ")}function getSearchRange(e){let t,r=0;const n=format(NumberFormat.ROUND_TRIP,e),i=countEsriInsignificantDigits(n);n.includes(".")&&(r=n.length-n.indexOf(".")-1);let s=e;return 0===i&&r>0?t=Math.pow(10,-(r-1)):r>i?(s=Number(e.toFixed(r-i)),t=Math.pow(10,-r)):t=1,t/=2,{lower:(s-t).toFixed(r+1),upper:(s+t).toFixed(r+1)}}function normalizeScores(e){const t=e.map((e=>e.score)),r=average(t),n=standardDeviation(t);for(const t of e)n?(t.score=(t.score-r)/n,t.score=Math.max(-2,t.score),t.score=Math.min(2,t.score),t.score=t.score/4+.5,t.score*=100):t.score=100}function trimmer(e){if(null==e)throw new Error("token should not be undefined");return e.replace(/^[^a-zA-Z0-9\u007F-\uFFFF-]+/,"").replace(/[^a-zA-Z0-9\u007F-\uFFFF-]+$/,"")}function zeroOutEsriInsignificantDigits(e){let t=countEsriInsignificantDigits(e);const r=format(-123456780.9),n=_localNumberSymbols();if(t>0){const i=new RegExp(`[${r}]`,"g"),s=e.match(i),a=s.length;let o=0;for(;t>0&&o<=a;){const e=a-o-1;n.includes(s[e])||(s[e]=format(0).toString(),t--),o++}if(s)return s.join("")}return e}function _localNumberSymbols(){const e=format(1234567890);return format(-123456780.9).split("").filter((t=>!e.includes(t))).join("")}function countEsriInsignificantDigits(e){const t=format(1234567890),r=new RegExp(`[${t}]`,"g"),n=e.match(r);return n?n.length-14:void 0}function isInBounds(e){const t=e.filter((e=>!!e?.spatialReference));if(!t.length)return!0;const{spatialReference:r}=t[0],{isWebMercator:n,isWGS84:i}=r;if(!n&&!i)return!0;const{xmax:s,xmin:a}=getScreenExtent(t),{max:o,min:c}=getBounds(r);return s<=o&&a>=c}
@@ -1 +1 @@
1
- import Point from"@arcgis/core/geometry/Point";import{distance}from"@arcgis/core/geometry/geometryEngine";import{isLayerExtension,isMapExtension,isSublayerExtension}from"../../ItemType.js";import{SCORE_FIELD,SCORE_FIELD_ORIGINAL}from"../../data/Feature.js";import{MapExtension}from"../../mapping/MapExtension.js";import{cancelify}from"../../support/Cancellable.js";import{isCancellation}from"../../support/utilities.js";import{groupBy}from"../../utilities/array.js";import{AsyncQueue}from"../../utilities/asyncIterable.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{isMap}from"../../utilities/mapping.js";import{parallelEach}from"../../utilities/promise.js";import{ArcGISGeocoderSearchProvider}from"./ArcGISGeocoderSearchProvider.js";import{GeocoderSearchProvider}from"./GeocoderSearchProvider.js";import{QuerySearchProvider}from"./QuerySearchProvider.js";import{SearchError}from"./SearchError.js";import{SearchOptions}from"./SearchOptions.js";export class SearchService{constructor(){this.providers=new Collection,this.providers.add(new QuerySearchProvider),this.providers.add(new ArcGISGeocoderSearchProvider),this.providers.add(new GeocoderSearchProvider)}isSupported(e){return!!this.providers.find((r=>r.isSupported(e)))}search(e,r,i){checkArg("sources",e).isNotMissing();const t={...SearchOptions.DEFAULTS,...i},a=_getMaxDistanceFromPointOfInterest(t);let o,n=[];Collection.isCollection(e)?n=e.toArray():isMapExtension(e)?o=e:isMap(e)?o=new MapExtension({map:e}):n=[...e];let s=0;const c=new AsyncQueue,l=new Map,p=(e,o)=>{o&&0!==e.length&&(s++,c.isDone||(async()=>{const n=[];try{await parallelEach(e,(e=>e.initialize()));for await(const s of o.search(e,r,i)){if(c.isDone)return;t.outSpatialReference&&(s.schema.spatialReference=t.outSpatialReference),_adjustScoreByDistance(s,a,i);let e=!1;n.push(s.attributes.on("change",(()=>{e||(e=!0,_adjustScoreByDistance(s,a,i),e=!1)}))),c.add(s)}}catch(r){if(isCancellation(r))return void c.reject(r);l.set(e,r)}finally{n.forEach((e=>e.remove()))}0==--s&&(l.size?c.reject(new SearchError(l)):c.done())})())};return(async()=>{try{o&&(await o.initialize(),n=o.getAllFeatureSources(isSearchable))}catch(e){c.reject(new Error("Map failed to initialize.",{cause:e}))}groupBy(n,(e=>this.providers.find((r=>r.isSupported(e))))).forEach(p),0===s&&c.done()})(),c}count(e,r,i){checkArg("sources",e).isNotMissing();const t={...i,returnGeometry:!1};let a,o=[];Collection.isCollection(e)?o=e.toArray():isMapExtension(e)?a=e:isMap(e)?a=new MapExtension({map:e}):o=[...e];let n=0;const s=new AsyncQueue,c=new Map,l=(e,i)=>{i&&(n++,(async()=>{if(!s.isDone){try{if(await parallelEach(e,(e=>e.initialize())),s.isDone)return;s.addMany(await i.count(e,r,t))}catch(r){if(isCancellation(r))return void s.reject(r);c.set(e,r)}0==--n&&(c.size?s.reject(new SearchError(c)):s.done())}})())};return(async()=>{try{a&&(await a.initialize(),o=a.getAllFeatureSources(isSearchable))}catch(e){s.reject(new Error("Map failed to initialize.",{cause:e}))}groupBy(o,(e=>this.providers.find((r=>r.isSupported(e))))).forEach(l),0===n&&s.done()})(),s}async suggest(e,r,i){checkArg("sources",e).isNotMissing();const t={...SearchOptions.DEFAULTS,...i};return cancelify(this._suggest(e,r,t),t.cancelToken)}async _suggest(e,r,i){let t,a=[];Collection.isCollection(e)?a=e.toArray():isMapExtension(e)?t=e:isMap(e)?t=new MapExtension({map:e}):a=[...e];const o=[];if(t)try{await t.initialize(),a=t.getAllFeatureSources(isSearchable)}catch(e){throw new Error("Map failed to initialize.",{cause:e})}const n=groupBy(a,(e=>this.providers.find((r=>r.isSupported(e)))));return await parallelEach(n.entries(),(async([e,t])=>{if(e)try{const a=await e.suggest(t,r,i);for(const e of a){const r=o.findIndex((r=>r.suggestion===e.suggestion));r>=0?e.score>o[r].score&&(o[r]=e):o.push(e)}}catch(e){throw isCancellation(e)?e:new SearchError([[t,e]])}})),o.sort(((e,r)=>r.score-e.score)).slice(0,i.maxSuggestions)}}export function isSearchable(e){var r,i;return!!e.taskSettings.enableSearch&&(isLayerExtension(e)?null===(r=e.layer)||void 0===r?void 0:r.visible:!isSublayerExtension(e)||(null===(i=e.sublayer)||void 0===i?void 0:i.visible))}function _getMaxDistanceFromPointOfInterest(e){if(!(e.near&&e.initialSearchArea&&e.initialSearchArea.extent&&e.initialSearchArea.extent.spatialReference.equals(e.near.spatialReference)))return;const{extent:r}=e.initialSearchArea,{spatialReference:i}=r,t=distance(new Point({x:r.xmin,y:r.ymin,spatialReference:i}),e.near,void 0),a=distance(new Point({x:r.xmin,y:r.ymax,spatialReference:i}),e.near,void 0),o=distance(new Point({x:r.xmax,y:r.ymin,spatialReference:i}),e.near,void 0),n=distance(new Point({x:r.xmax,y:r.ymax,spatialReference:i}),e.near,void 0);return Math.max(t,a,o,n)}function _adjustScoreByDistance(e,r,i){if(!(r&&i.near&&i.initialSearchArea&&e.geometry&&i.near.spatialReference.equals(e.geometry.spatialReference)&&e.attributes.has(SCORE_FIELD)))return;const t=(r-distance(e.geometry,i.near,void 0))/r,a=(2*e.attributes.get(SCORE_FIELD_ORIGINAL)+t)/3;e.attributes.set(SCORE_FIELD,a)}
1
+ import Point from"@arcgis/core/geometry/Point";import{distance}from"@arcgis/core/geometry/geometryEngine";import{isLayerExtension,isMapExtension,isSublayerExtension}from"../../ItemType.js";import{SCORE_FIELD,SCORE_FIELD_ORIGINAL}from"../../data/Feature.js";import{MapExtension}from"../../mapping/MapExtension.js";import{cancelify}from"../../support/Cancellable.js";import{isCancellation}from"../../support/utilities.js";import{groupBy}from"../../utilities/array.js";import{AsyncQueue}from"../../utilities/asyncIterable.js";import{checkArg}from"../../utilities/checkArg.js";import{Collection}from"../../utilities/collection.js";import{isMap}from"../../utilities/mapping.js";import{parallelEach}from"../../utilities/promise.js";import{ArcGISGeocoderSearchProvider}from"./ArcGISGeocoderSearchProvider.js";import{GeocoderSearchProvider}from"./GeocoderSearchProvider.js";import{QuerySearchProvider}from"./QuerySearchProvider.js";import{SearchError}from"./SearchError.js";import{SearchOptions}from"./SearchOptions.js";export class SearchService{constructor(){this.providers=new Collection,this.providers.add(new QuerySearchProvider),this.providers.add(new ArcGISGeocoderSearchProvider),this.providers.add(new GeocoderSearchProvider)}isSupported(e){return!!this.providers.find((r=>r.isSupported(e)))}search(e,r,i){checkArg("sources",e).isNotMissing();const t={...SearchOptions.DEFAULTS,...i},a=_getMaxDistanceFromPointOfInterest(t);let o,n=[];Collection.isCollection(e)?n=e.toArray():isMapExtension(e)?o=e:isMap(e)?o=new MapExtension({map:e}):n=[...e];let s=0;const c=new AsyncQueue,l=new Map,p=(e,o)=>{o&&0!==e.length&&(s++,c.isDone||(async()=>{const n=[];try{await parallelEach(e,(e=>e.initialize()));for await(const s of o.search(e,r,i)){if(c.isDone)return;t.outSpatialReference&&(s.schema.spatialReference=t.outSpatialReference),_adjustScoreByDistance(s,a,i);let e=!1;n.push(s.attributes.on("change",(()=>{e||(e=!0,_adjustScoreByDistance(s,a,i),e=!1)}))),c.add(s)}}catch(r){if(isCancellation(r))return void c.reject(r);l.set(e,r)}finally{n.forEach((e=>e.remove()))}0==--s&&(l.size?c.reject(new SearchError(l)):c.done())})())};return(async()=>{try{o&&(await o.initialize(),n=o.getAllFeatureSources(isSearchable))}catch(e){c.reject(new Error("Map failed to initialize.",{cause:e}))}groupBy(n,(e=>this.providers.find((r=>r.isSupported(e))))).forEach(p),0===s&&c.done()})(),c}count(e,r,i){checkArg("sources",e).isNotMissing();const t={...i,returnGeometry:!1};let a,o=[];Collection.isCollection(e)?o=e.toArray():isMapExtension(e)?a=e:isMap(e)?a=new MapExtension({map:e}):o=[...e];let n=0;const s=new AsyncQueue,c=new Map,l=(e,i)=>{i&&(n++,(async()=>{if(!s.isDone){try{if(await parallelEach(e,(e=>e.initialize())),s.isDone)return;s.addMany(await i.count(e,r,t))}catch(r){if(isCancellation(r))return void s.reject(r);c.set(e,r)}0==--n&&(c.size?s.reject(new SearchError(c)):s.done())}})())};return(async()=>{try{a&&(await a.initialize(),o=a.getAllFeatureSources(isSearchable))}catch(e){s.reject(new Error("Map failed to initialize.",{cause:e}))}groupBy(o,(e=>this.providers.find((r=>r.isSupported(e))))).forEach(l),0===n&&s.done()})(),s}async suggest(e,r,i){checkArg("sources",e).isNotMissing();const t={...SearchOptions.DEFAULTS,...i};return cancelify(this._suggest(e,r,t),t.cancelToken)}async _suggest(e,r,i){let t,a=[];Collection.isCollection(e)?a=e.toArray():isMapExtension(e)?t=e:isMap(e)?t=new MapExtension({map:e}):a=[...e];const o=[];if(t)try{await t.initialize(),a=t.getAllFeatureSources(isSearchable)}catch(e){throw new Error("Map failed to initialize.",{cause:e})}const n=groupBy(a,(e=>this.providers.find((r=>r.isSupported(e)))));return await parallelEach(n.entries(),(async([e,t])=>{if(e)try{const a=await e.suggest(t,r,i);for(const e of a){const r=o.findIndex((r=>r.suggestion===e.suggestion));r>=0?e.score>o[r].score&&(o[r]=e):o.push(e)}}catch(e){throw isCancellation(e)?e:new SearchError([[t,e]])}})),o.sort(((e,r)=>r.score-e.score)).slice(0,i.maxSuggestions)}}export function isSearchable(e){return!!e.taskSettings.enableSearch&&(isLayerExtension(e)?e.layer?.visible:!isSublayerExtension(e)||e.sublayer?.visible)}function _getMaxDistanceFromPointOfInterest(e){if(!(e.near&&e.initialSearchArea&&e.initialSearchArea.extent&&e.initialSearchArea.extent.spatialReference.equals(e.near.spatialReference)))return;const{extent:r}=e.initialSearchArea,{spatialReference:i}=r,t=distance(new Point({x:r.xmin,y:r.ymin,spatialReference:i}),e.near,void 0),a=distance(new Point({x:r.xmin,y:r.ymax,spatialReference:i}),e.near,void 0),o=distance(new Point({x:r.xmax,y:r.ymin,spatialReference:i}),e.near,void 0),n=distance(new Point({x:r.xmax,y:r.ymax,spatialReference:i}),e.near,void 0);return Math.max(t,a,o,n)}function _adjustScoreByDistance(e,r,i){if(!(r&&i.near&&i.initialSearchArea&&e.geometry&&i.near.spatialReference.equals(e.geometry.spatialReference)&&e.attributes.has(SCORE_FIELD)))return;const t=(r-distance(e.geometry,i.near,void 0))/r,a=(2*e.attributes.get(SCORE_FIELD_ORIGINAL)+t)/3;e.attributes.set(SCORE_FIELD,a)}
@@ -1 +1 @@
1
- import{DateFormat}from"../../utilities/date.js";import{isCodedValueDomain}from"../../utilities/esri.js";import{format,NumberFormat}from"../../utilities/number.js";const SEPARATOR="\t";export function getSearchableValue(t,e){var r,a;const i=Array.from(t.attributes.keys()).find((t=>t.toLowerCase()===e.name.toLowerCase())),o=t.attributes.get(i);if(null==o)return"";if(isCodedValueDomain(null===(a=null===(r=t.type)||void 0===r?void 0:r.domains)||void 0===a?void 0:a[i])||isCodedValueDomain(e.domain))return t.presentableAttributes.get(i);switch(e.type){case"integer":case"small-integer":case"double":case"single":case"oid":return[t.presentableAttributes.get(i),t.format(`{${i}:#.####################}`),t.format(`{${i}:#,#.####################}`),format(NumberFormat.ROUND_TRIP,o)].join("\t");case"date":return[t.presentableAttributes.get(i),t.format(`{${i}:${DateFormat.FULL}}`),t.format(`{${i}:${DateFormat.DATE_SHORT}}`)].join("\t");default:return t.presentableAttributes.get(i)}}
1
+ import{DateFormat}from"../../utilities/date.js";import{isCodedValueDomain}from"../../utilities/esri.js";import{format,NumberFormat}from"../../utilities/number.js";const SEPARATOR="\t";export function getSearchableValue(t,e){const r=Array.from(t.attributes.keys()).find((t=>t.toLowerCase()===e.name.toLowerCase())),a=t.attributes.get(r);if(null==a)return"";if(isCodedValueDomain(t.type?.domains?.[r])||isCodedValueDomain(e.domain))return t.presentableAttributes.get(r);switch(e.type){case"integer":case"small-integer":case"double":case"single":case"oid":return[t.presentableAttributes.get(r),t.format(`{${r}:#.####################}`),t.format(`{${r}:#,#.####################}`),format(NumberFormat.ROUND_TRIP,a)].join("\t");case"date":return[t.presentableAttributes.get(r),t.format(`{${r}:${DateFormat.FULL}}`),t.format(`{${r}:${DateFormat.DATE_SHORT}}`)].join("\t");default:return t.presentableAttributes.get(r)}}
@@ -1 +1 @@
1
- import{LayerBase as LayerJson}from"../portal/_LayerBase.js";import{WellKnownBasemap}from"../support/esri.js";import{isGroupLayerExtension}from"./extensions.js";import{isBasemap}from"./mapping.js";export function layersAreEquivalent(e,r){if(e===r)return!0;const a=isLayer(e)?LayerJson.getLayerType(e):e.layerType;if(a!==(isLayer(r)?LayerJson.getLayerType(r):r.layerType))return!1;if("OpenStreetMap"===a)return!0;if("ArcGISFeatureLayer"===a){const a=isFeatureLayer(e)?`${e.url}/${e.layerId}`:e.url,s=isFeatureLayer(r)?`${r.url}/${r.layerId}`:r.url;return e.id===r.id||e.url&&urlsAreEquivalent(a,s)}return e.id===r.id||e.url&&urlsAreEquivalent(e.url,r.url)||(e.styleUrl||r.styleUrl)&&urlsAreEquivalent(e.url||e.styleUrl,r.url||r.styleUrl)||e.key&&e.key===r.key||e.urlTemplate&&urlsAreEquivalent(e.urlTemplate,r.urlTemplate)}export function basemapsAreEquivalent(e,r){var a,s,t,i,l,n,o,c;if(e===r)return!0;if(!e||!r)return!1;let y,p,d,u;return isBasemap(e)?(y=e.baseLayers.toArray(),d=e.referenceLayers.toArray()):(y=null!==(s=null===(a=e.baseMapLayers)||void 0===a?void 0:a.filter((e=>!e.isReference)))&&void 0!==s?s:[],d=null!==(i=null===(t=e.baseMapLayers)||void 0===t?void 0:t.filter((e=>e.isReference)))&&void 0!==i?i:[]),isBasemap(r)?(p=r.baseLayers.toArray(),u=r.referenceLayers.toArray()):(p=null!==(n=null===(l=r.baseMapLayers)||void 0===l?void 0:l.filter((e=>!e.isReference)))&&void 0!==n?n:[],u=null!==(c=null===(o=r.baseMapLayers)||void 0===o?void 0:o.filter((e=>e.isReference)))&&void 0!==c?c:[]),y.length===p.length&&y.every(((e,r)=>layersAreEquivalent(e,p[r])))&&d.length===u.length&&d.every(((e,r)=>layersAreEquivalent(e,u[r])))}export const standardBasemaps={[WellKnownBasemap.DARK_GRAY]:{baseMapLayers:[{id:"dark-gray-base-layer",title:"World Dark Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"dark-gray-reference-layer",title:"World Dark Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.DARK_GRAY_VECTOR]:{baseMapLayers:[{id:"dark-gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json"},{id:"dark-gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.GRAY]:{baseMapLayers:[{id:"gray-base-layer",title:"World Light Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"gray-reference-layer",title:"World Light Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.GRAY_VECTOR]:{baseMapLayers:[{id:"gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json"},{id:"gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.HYBRID]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer",title:"World Boundaries and Places",isReference:!0}]},[WellKnownBasemap.HYBRID_VECTOR]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Hybrid Reference Layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/30d6b8271e1849cd9c3042060001f425/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.NATIONAL_GEOGRAPHIC]:{baseMapLayers:[{id:"national-geographic-base-layer",title:"NatGeo World Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.OCEANS]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Ocean Reference",url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer",isReference:!0}]},[WellKnownBasemap.OCEANS_VECTOR]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Ocean Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/89860a5baf424f3ea0c655115faababe/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.OPEN_STREET_MAP]:{baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",showLegend:!1,title:"OpenStreetMap"}]},[WellKnownBasemap.OPEN_STREET_MAP_VECTOR]:{baseMapLayers:[{id:"osm-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"OpenStreetMap",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/3e1a00aeae81496587988075fe529f71/resources/styles/root.json"}]},[WellKnownBasemap.SATELLITE]:{baseMapLayers:[{id:"satellite-base-layer",title:"World Imagery",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.STREETS]:{baseMapLayers:[{id:"streets-base-layer",title:"World Street Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.STREETS_NAVIGATION_VECTOR]:{baseMapLayers:[{id:"streets-navigation-vector-base-layer",title:"World Navigation Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json"}]},[WellKnownBasemap.STREETS_NIGHT_VECTOR]:{baseMapLayers:[{id:"streets-night-vector-base-layer",title:"World Street Map (Night)",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json"}]},[WellKnownBasemap.STREETS_RELIEF_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"streets-relief-vector-base-layer",title:"World Streets Relief",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json"}]},[WellKnownBasemap.STREETS_VECTOR]:{baseMapLayers:[{id:"streets-vector-base-layer",title:"World Street Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json"}]},[WellKnownBasemap.TERRAIN]:{baseMapLayers:[{id:"terrain-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer",title:"World Terrain Base"},{id:"terrain-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer",title:"World Terrain Reference",isReference:!0}]},[WellKnownBasemap.TERRAIN_VECTOR]:{baseMapLayers:[{id:"world-hillshade",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",title:"World Hillshade"},{id:"terrain-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/33064a20de0c48d2bb61efa8faca93a8/resources/styles/root.json"},{id:"terrain-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/14fbc125ccc9488888b014db09f35f67/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.TOPO]:{baseMapLayers:[{id:"topo-base-layer",title:"World Topo Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.TOPO_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"topo-vector-base-layer",title:"World Topographic Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json"}]}};function urlsAreEquivalent(e,r){return e&&r?e.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")===r.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com"):e==r}const LAYER_DECLARED_CLASS_REGEX=/^esri[./]layers[./](tools[./])?\w+Layer$/;export function isLayer(e){const r=null==e?void 0:e.declaredClass;return"string"==typeof r&&LAYER_DECLARED_CLASS_REGEX.test(r)}export function isCSVLayer(e){return"csv"===(null==e?void 0:e.type)}export function isGeoJSONLayer(e){return"geojson"===(null==e?void 0:e.type)}export function isSubtypeGroupLayer(e){return"subtype-group"===(null==e?void 0:e.type)}export function isStreamLayer(e){return"stream"===(null==e?void 0:e.type)}export function isFeatureLayerBase(e){return isCSVLayer(e)||isFeatureLayer(e)||isStreamLayer(e)}export function isFeatureLayer(e){return"feature"===(null==e?void 0:e.type)}export function isGeoRssLayer(e){return"geo-rss"===(null==e?void 0:e.type)}export function isGraphicsLayer(e){return"graphics"===(null==e?void 0:e.type)}export function isImageryLayer(e){return"imagery"===(null==e?void 0:e.type)}export function isKMLLayer(e){return"kml"===(null==e?void 0:e.type)}export function isMapImageLayer(e){return"map-image"===(null==e?void 0:e.type)}export function isOpenStreetMapLayer(e){return"open-street-map"===(null==e?void 0:e.type)}export function isWebTileLayer(e){return"web-tile"===(null==e?void 0:e.type)||"open-street-map"===(null==e?void 0:e.type)}export function isVectorTileLayer(e){return"vector-tile"===(null==e?void 0:e.type)}export function isElevationLayer(e){return"elevation"===(null==e?void 0:e.type)}export function isSceneLayer(e){return"scene"===(null==e?void 0:e.type)}export function isPointCloudLayer(e){return"point-cloud"===(null==e?void 0:e.type)}export function isIntegratedMeshLayer(e){return"integrated-mesh"===(null==e?void 0:e.type)}export function isGroupLayer(e){return"group"===(null==e?void 0:e.type)}export function isWMSLayer(e){return"wms"===(null==e?void 0:e.type)}export function isWMTSLayer(e){return"wmts"===(null==e?void 0:e.type)}export function isBuildingSceneLayer(e){return"building-scene"===(null==e?void 0:e.type)}export function isTileLayer(e){return"tile"===(null==e?void 0:e.type)}export function isImageryTileLayer(e){return"imagery-tile"===(null==e?void 0:e.type)}export function isTiledImageServiceLayer(e){return isTileLayer(e)&&isImageService(e)}export function isTiledMapServiceLayer(e){return isTileLayer(e)&&!isImageService(e)}function isImageService(e){var r,a;const s=null!==(r=e.url)&&void 0!==r?r:null===(a=e.portalItem)||void 0===a?void 0:a.url;return s&&/\/ImageServer(\/|\/?$)/i.test(s)}export function isMapImageSublayer(e){return"esri.layers.support.Sublayer"===(null==e?void 0:e.declaredClass)}export function isKMLSublayer(e){return"esri.layers.support.KMLSublayer"===(null==e?void 0:e.declaredClass)}export function isWMTSSublayer(e){return"esri.layers.support.WMTSSublayer"===(null==e?void 0:e.declaredClass)}export function isWMSSublayer(e){return"esri.layers.support.WMSSublayer"===(null==e?void 0:e.declaredClass)}export function isBuildingComponentSublayer(e){const r=e;return"building-component"===(null==r?void 0:r.type)}export function isBuildingGroupSublayer(e){const r=e;return"building-group"===(null==r?void 0:r.type)}export function isLayerWithLegendEnabledProperty(e){return!(isBuildingSceneLayer(e)||isCSVLayer(e)||isElevationLayer(e)||isGraphicsLayer(e)||isGroupLayer(e)||isIntegratedMeshLayer(e)||isKMLLayer(e)||isOpenStreetMapLayer(e)||isPointCloudLayer(e)||isWebTileLayer(e)||isWMTSLayer(e)||isVectorTileLayer(e))}export function hasMmapLayer(e){return e.some((e=>{var r;const a=e._deferredLayerProperties;return!("string"==typeof(null==a?void 0:a.$ref)||!(null===(r=null==a?void 0:a.$ref)||void 0===r?void 0:r.path))||!!isGroupLayerExtension(e)&&hasMmapLayer(e.layerExtensions.toArray())}))}export function isTimeAwareLayer(e){return isLayer(e)&&e.hasOwnProperty("timeExtent")}
1
+ import{LayerBase as LayerJson}from"../portal/_LayerBase.js";import{WellKnownBasemap}from"../support/esri.js";import{isGroupLayerExtension}from"./extensions.js";import{isBasemap}from"./mapping.js";export function layersAreEquivalent(e,r){if(e===r)return!0;const a=isLayer(e)?LayerJson.getLayerType(e):e.layerType;if(a!==(isLayer(r)?LayerJson.getLayerType(r):r.layerType))return!1;if("OpenStreetMap"===a)return!0;if("ArcGISFeatureLayer"===a){const a=isFeatureLayer(e)?`${e.url}/${e.layerId}`:e.url,s=isFeatureLayer(r)?`${r.url}/${r.layerId}`:r.url;return e.id===r.id||e.url&&urlsAreEquivalent(a,s)}return e.id===r.id||e.url&&urlsAreEquivalent(e.url,r.url)||(e.styleUrl||r.styleUrl)&&urlsAreEquivalent(e.url||e.styleUrl,r.url||r.styleUrl)||e.key&&e.key===r.key||e.urlTemplate&&urlsAreEquivalent(e.urlTemplate,r.urlTemplate)}export function basemapsAreEquivalent(e,r){if(e===r)return!0;if(!e||!r)return!1;let a,s,t,i;return isBasemap(e)?(a=e.baseLayers.toArray(),t=e.referenceLayers.toArray()):(a=e.baseMapLayers?.filter((e=>!e.isReference))??[],t=e.baseMapLayers?.filter((e=>e.isReference))??[]),isBasemap(r)?(s=r.baseLayers.toArray(),i=r.referenceLayers.toArray()):(s=r.baseMapLayers?.filter((e=>!e.isReference))??[],i=r.baseMapLayers?.filter((e=>e.isReference))??[]),a.length===s.length&&a.every(((e,r)=>layersAreEquivalent(e,s[r])))&&t.length===i.length&&t.every(((e,r)=>layersAreEquivalent(e,i[r])))}export const standardBasemaps={[WellKnownBasemap.DARK_GRAY]:{baseMapLayers:[{id:"dark-gray-base-layer",title:"World Dark Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"dark-gray-reference-layer",title:"World Dark Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.DARK_GRAY_VECTOR]:{baseMapLayers:[{id:"dark-gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/5e9b3685f4c24d8781073dd928ebda50/resources/styles/root.json"},{id:"dark-gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Dark Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/747cb7a5329c478cbe6981076cc879c5/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.GRAY]:{baseMapLayers:[{id:"gray-base-layer",title:"World Light Gray Base",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{isReference:!0,id:"gray-reference-layer",title:"World Light Gray Reference",url:"https://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.GRAY_VECTOR]:{baseMapLayers:[{id:"gray-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/291da5eab3a0412593b66d384379f89f/resources/styles/root.json"},{id:"gray-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Light Gray Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/1768e8369a214dfab4e2167d5c5f2454/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.HYBRID]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer",title:"World Boundaries and Places",isReference:!0}]},[WellKnownBasemap.HYBRID_VECTOR]:{baseMapLayers:[{id:"hybrid-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",title:"World Imagery"},{id:"hybrid-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"Hybrid Reference Layer",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/30d6b8271e1849cd9c3042060001f425/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.NATIONAL_GEOGRAPHIC]:{baseMapLayers:[{id:"national-geographic-base-layer",title:"NatGeo World Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.OCEANS]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,title:"World Ocean Reference",url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer",isReference:!0}]},[WellKnownBasemap.OCEANS_VECTOR]:{baseMapLayers:[{id:"oceans-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer",title:"World Ocean Base"},{id:"oceans-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Ocean Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/89860a5baf424f3ea0c655115faababe/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.OPEN_STREET_MAP]:{baseMapLayers:[{id:"osm-base-layer",layerType:"OpenStreetMap",showLegend:!1,title:"OpenStreetMap"}]},[WellKnownBasemap.OPEN_STREET_MAP_VECTOR]:{baseMapLayers:[{id:"osm-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"OpenStreetMap",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/3e1a00aeae81496587988075fe529f71/resources/styles/root.json"}]},[WellKnownBasemap.SATELLITE]:{baseMapLayers:[{id:"satellite-base-layer",title:"World Imagery",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.STREETS]:{baseMapLayers:[{id:"streets-base-layer",title:"World Street Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.STREETS_NAVIGATION_VECTOR]:{baseMapLayers:[{id:"streets-navigation-vector-base-layer",title:"World Navigation Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/63c47b7177f946b49902c24129b87252/resources/styles/root.json"}]},[WellKnownBasemap.STREETS_NIGHT_VECTOR]:{baseMapLayers:[{id:"streets-night-vector-base-layer",title:"World Street Map (Night)",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/86f556a2d1fd468181855a35e344567f/resources/styles/root.json"}]},[WellKnownBasemap.STREETS_RELIEF_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"streets-relief-vector-base-layer",title:"World Streets Relief",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/b266e6d17fc345b498345613930fbd76/resources/styles/root.json"}]},[WellKnownBasemap.STREETS_VECTOR]:{baseMapLayers:[{id:"streets-vector-base-layer",title:"World Street Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/de26a3cf4cc9451298ea173c4b324736/resources/styles/root.json"}]},[WellKnownBasemap.TERRAIN]:{baseMapLayers:[{id:"terrain-base-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer",title:"World Terrain Base"},{id:"terrain-reference-layer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer",title:"World Terrain Reference",isReference:!0}]},[WellKnownBasemap.TERRAIN_VECTOR]:{baseMapLayers:[{id:"world-hillshade",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1,url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",title:"World Hillshade"},{id:"terrain-base-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Base",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/33064a20de0c48d2bb61efa8faca93a8/resources/styles/root.json"},{id:"terrain-reference-layer",layerType:"VectorTileLayer",showLegend:!1,title:"World Terrain Reference",styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/14fbc125ccc9488888b014db09f35f67/resources/styles/root.json",isReference:!0}]},[WellKnownBasemap.TOPO]:{baseMapLayers:[{id:"topo-base-layer",title:"World Topo Map",url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1}]},[WellKnownBasemap.TOPO_VECTOR]:{baseMapLayers:[{id:"world-hillshade-layer",title:"World Hillshade",url:"https://services.arcgisonline.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer",layerType:"ArcGISTiledMapServiceLayer",showLegend:!1},{id:"topo-vector-base-layer",title:"World Topographic Map",layerType:"VectorTileLayer",showLegend:!1,styleUrl:"https://cdn.arcgis.com/sharing/rest/content/items/7dc6cea0b1764a1f9af2e679f642f0f5/resources/styles/root.json"}]}};function urlsAreEquivalent(e,r){return e&&r?e.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com")===r.toLowerCase().replace("www.arcgis.com","cdn.arcgis.com"):e==r}const LAYER_DECLARED_CLASS_REGEX=/^esri[./]layers[./](tools[./])?\w+Layer$/;export function isLayer(e){const r=e?.declaredClass;return"string"==typeof r&&LAYER_DECLARED_CLASS_REGEX.test(r)}export function isCSVLayer(e){return"csv"===e?.type}export function isGeoJSONLayer(e){return"geojson"===e?.type}export function isSubtypeGroupLayer(e){return"subtype-group"===e?.type}export function isStreamLayer(e){return"stream"===e?.type}export function isFeatureLayerBase(e){return isCSVLayer(e)||isFeatureLayer(e)||isStreamLayer(e)}export function isFeatureLayer(e){return"feature"===e?.type}export function isGeoRssLayer(e){return"geo-rss"===e?.type}export function isGraphicsLayer(e){return"graphics"===e?.type}export function isImageryLayer(e){return"imagery"===e?.type}export function isKMLLayer(e){return"kml"===e?.type}export function isMapImageLayer(e){return"map-image"===e?.type}export function isOpenStreetMapLayer(e){return"open-street-map"===e?.type}export function isWebTileLayer(e){return"web-tile"===e?.type||"open-street-map"===e?.type}export function isVectorTileLayer(e){return"vector-tile"===e?.type}export function isElevationLayer(e){return"elevation"===e?.type}export function isSceneLayer(e){return"scene"===e?.type}export function isPointCloudLayer(e){return"point-cloud"===e?.type}export function isIntegratedMeshLayer(e){return"integrated-mesh"===e?.type}export function isGroupLayer(e){return"group"===e?.type}export function isWMSLayer(e){return"wms"===e?.type}export function isWMTSLayer(e){return"wmts"===e?.type}export function isBuildingSceneLayer(e){return"building-scene"===e?.type}export function isTileLayer(e){return"tile"===e?.type}export function isImageryTileLayer(e){return"imagery-tile"===e?.type}export function isTiledImageServiceLayer(e){return isTileLayer(e)&&isImageService(e)}export function isTiledMapServiceLayer(e){return isTileLayer(e)&&!isImageService(e)}function isImageService(e){const r=e.url??e.portalItem?.url;return r&&/\/ImageServer(\/|\/?$)/i.test(r)}export function isMapImageSublayer(e){return"esri.layers.support.Sublayer"===e?.declaredClass}export function isKMLSublayer(e){return"esri.layers.support.KMLSublayer"===e?.declaredClass}export function isWMTSSublayer(e){return"esri.layers.support.WMTSSublayer"===e?.declaredClass}export function isWMSSublayer(e){return"esri.layers.support.WMSSublayer"===e?.declaredClass}export function isBuildingComponentSublayer(e){return"building-component"===e?.type}export function isBuildingGroupSublayer(e){return"building-group"===e?.type}export function isLayerWithLegendEnabledProperty(e){return!(isBuildingSceneLayer(e)||isCSVLayer(e)||isElevationLayer(e)||isGraphicsLayer(e)||isGroupLayer(e)||isIntegratedMeshLayer(e)||isKMLLayer(e)||isOpenStreetMapLayer(e)||isPointCloudLayer(e)||isWebTileLayer(e)||isWMTSLayer(e)||isVectorTileLayer(e))}export function hasMmapLayer(e){return e.some((e=>{const r=e._deferredLayerProperties;return!("string"==typeof r?.$ref||!r?.$ref?.path)||!!isGroupLayerExtension(e)&&hasMmapLayer(e.layerExtensions.toArray())}))}export function isTimeAwareLayer(e){return isLayer(e)&&e.hasOwnProperty("timeExtent")}
@@ -1 +1 @@
1
- import*as Arcade from"@arcgis/core/arcade/arcade";import*as arcadeUtils from"@arcgis/core/support/arcadeUtils";import{toGraphic}from"../data/Feature.js";import{checkArg}from"./checkArg.js";const arcadeScriptCache=new Map;export function isArcadeScriptAsync(e,r){const a=_getArcadeScriptForExpression(e,r);return["$datastore","$map","$layer"].some((e=>arcadeUtils.hasVariable(a,e)))||Arcade.scriptIsAsync({...a,isAsync:void 0,usesFeatureSet:void 0,usesGeometry:void 0},void 0)}export function arcadeScriptUsesGeometry(e,r){return!!_getArcadeScriptForExpression(e,r).usesGeometry}export async function enableGeometrySupportIfNeeded(e){var r,a,t,s;const{spatialReference:c}=e.geometry,i=null===(s=null===(t=null===(a=null===(r=e.source)||void 0===r?void 0:r.layer)||void 0===a?void 0:a.elevationInfo)||void 0===t?void 0:t.featureExpressionInfo)||void 0===s?void 0:s.expression;i&&arcadeScriptUsesGeometry(i,c)&&await Arcade.enableGeometrySupport()}export function runArcadeExpression(e,r){const{map:a,layer:t,vars:s,feature:c,spatialReference:i}=r;checkArg("$map and $layer parameters are not supported in synchronous arcade",r).satisfies((()=>!a&&!t));const o=arcadeUtils.getViewInfo({spatialReference:i}),n=arcadeUtils.createExecContext(c&&toGraphic(c),o);if(s)for(const e of Object.keys(s))n.vars[e]=s[e];const p=_getArcadeScriptForExpression(e,i);return arcadeUtils.hasVariable(p,"$feature")&&checkArg("params.feature",c).isNotMissing(),Arcade.executeScript(p,n)}export async function runAsyncArcadeExpression(e,r){const{map:a,layer:t,vars:s,feature:c,spatialReference:i}=r,o={..._getArcadeScriptForExpression(e,i)},n=["$datastore","$map","$layer"].filter((e=>arcadeUtils.hasVariable(o,e)));await arcadeUtils.loadScriptDependencies(o,!0,n);const p=arcadeUtils.getViewInfo({spatialReference:i}),d=arcadeUtils.createExecContext(c&&toGraphic(c),p);if(o.isAsync=!0,o.usesFeatureSet=!0,await Arcade.enableAsyncSupport(),await Arcade.enableFeatureSetSupport(),o.usesGeometry&&await Arcade.enableGeometrySupport(),arcadeUtils.hasVariable(o,"$feature")&&checkArg("params.feature",c).isNotMissing(),n.includes("$map")&&(checkArg("params.map",a).isNotMissing(),d.vars.$map=arcadeUtils.convertMapToFeatureSetCollection({map:a,spatialReference:i})),n.includes("$layer")&&(checkArg("params.layer",t).isNotMissing(),d.vars.$layer=arcadeUtils.convertFeatureLayerToFeatureSet({layer:t,spatialReference:i})),n.includes("$datastore")&&(checkArg("params.layer",t).isNotMissing(),d.vars.$datastore=arcadeUtils.convertServiceUrlToWorkspace({url:t.url,spatialReference:i})),s)for(const e of Object.keys(s))d.vars[e]=s[e];return arcadeUtils.createFunction(o,d)(d)}function _getArcadeScriptForExpression(e,r){if(arcadeScriptCache.has(e))return arcadeScriptCache.get(e);const a=Arcade.parseScript(e,r);return arcadeScriptCache.set(e,a),a}
1
+ import*as Arcade from"@arcgis/core/arcade/arcade";import*as arcadeUtils from"@arcgis/core/support/arcadeUtils";import{toGraphic}from"../data/Feature.js";import{checkArg}from"./checkArg.js";const arcadeScriptCache=new Map;export function isArcadeScriptAsync(e,r){const a=_getArcadeScriptForExpression(e,r);return["$datastore","$map","$layer"].some((e=>arcadeUtils.hasVariable(a,e)))||Arcade.scriptIsAsync({...a,isAsync:void 0,usesFeatureSet:void 0,usesGeometry:void 0},void 0)}export function arcadeScriptUsesGeometry(e,r){return!!_getArcadeScriptForExpression(e,r).usesGeometry}export async function enableGeometrySupportIfNeeded(e){const{spatialReference:r}=e.geometry,a=e.source?.layer?.elevationInfo?.featureExpressionInfo?.expression;a&&arcadeScriptUsesGeometry(a,r)&&await Arcade.enableGeometrySupport()}export function runArcadeExpression(e,r){const{map:a,layer:t,vars:s,feature:c,spatialReference:i}=r;checkArg("$map and $layer parameters are not supported in synchronous arcade",r).satisfies((()=>!a&&!t));const o=arcadeUtils.getViewInfo({spatialReference:i}),n=arcadeUtils.createExecContext(c&&toGraphic(c),o);if(s)for(const e of Object.keys(s))n.vars[e]=s[e];const p=_getArcadeScriptForExpression(e,i);return arcadeUtils.hasVariable(p,"$feature")&&checkArg("params.feature",c).isNotMissing(),Arcade.executeScript(p,n)}export async function runAsyncArcadeExpression(e,r){const{map:a,layer:t,vars:s,feature:c,spatialReference:i}=r,o={..._getArcadeScriptForExpression(e,i)},n=["$datastore","$map","$layer"].filter((e=>arcadeUtils.hasVariable(o,e)));await arcadeUtils.loadScriptDependencies(o,!0,n);const p=arcadeUtils.getViewInfo({spatialReference:i}),d=arcadeUtils.createExecContext(c&&toGraphic(c),p);if(o.isAsync=!0,o.usesFeatureSet=!0,await Arcade.enableAsyncSupport(),await Arcade.enableFeatureSetSupport(),o.usesGeometry&&await Arcade.enableGeometrySupport(),arcadeUtils.hasVariable(o,"$feature")&&checkArg("params.feature",c).isNotMissing(),n.includes("$map")&&(checkArg("params.map",a).isNotMissing(),d.vars.$map=arcadeUtils.convertMapToFeatureSetCollection({map:a,spatialReference:i})),n.includes("$layer")&&(checkArg("params.layer",t).isNotMissing(),d.vars.$layer=arcadeUtils.convertFeatureLayerToFeatureSet({layer:t,spatialReference:i})),n.includes("$datastore")&&(checkArg("params.layer",t).isNotMissing(),d.vars.$datastore=arcadeUtils.convertServiceUrlToWorkspace({url:t.url,spatialReference:i})),s)for(const e of Object.keys(s))d.vars[e]=s[e];return arcadeUtils.createFunction(o,d)(d)}function _getArcadeScriptForExpression(e,r){if(arcadeScriptCache.has(e))return arcadeScriptCache.get(e);const a=Arcade.parseScript(e,r);return arcadeScriptCache.set(e,a),a}
@@ -1 +1 @@
1
- import{ArgumentError}from"../ArgumentError.js";import{ArgumentMissingError}from"../ArgumentMissingError.js";import{ArgumentOutOfRangeError}from"../ArgumentOutOfRangeError.js";export function checkArg(r,e){const t=ArgumentCheckerImpl.instance;return t.parameter=r,t.value=e,t}class ArgumentCheckerImpl{isInRange(r,e,t){if(this.value<r||this.value>e)throw new ArgumentOutOfRangeError(this.parameter,t);return this}isDefined(r){if(void 0===this.value)throw new ArgumentMissingError(this.parameter,r);return this}isNotEmpty(r){if(""===this.value||Array.isArray(this.value)&&!this.value.length)throw new ArgumentError(this.parameter,this._formatMessage(null!=r?r:"Parameter '{0}' cannot be empty."));return this}isNotMissing(r){if(null===this.value||void 0===this.value)throw new ArgumentMissingError(this.parameter,r);return this}isNotNull(r){if(null===this.value)throw new ArgumentMissingError(this.parameter,r);return this}matches(r,e){if("string"!=typeof this.value||!this.value.match(r))throw new ArgumentError(this.parameter,this._formatMessage(null!=e?e:"Parameter '{0}' was not in the expected format."));return this}satisfies(r,e){let t,s=!1;try{s=r(this.value)}catch(r){t=r&&r.message}if(!s)throw new ArgumentError(this.parameter,this._formatMessage(e||t));return this}_formatMessage(r){return r?r.replace("{0}",this.parameter):r}}ArgumentCheckerImpl.instance=new ArgumentCheckerImpl;export function assertNever(r,e){if(e)throw e}
1
+ import{ArgumentError}from"../ArgumentError.js";import{ArgumentMissingError}from"../ArgumentMissingError.js";import{ArgumentOutOfRangeError}from"../ArgumentOutOfRangeError.js";export function checkArg(r,e){const t=ArgumentCheckerImpl.instance;return t.parameter=r,t.value=e,t}class ArgumentCheckerImpl{isInRange(r,e,t){if(this.value<r||this.value>e)throw new ArgumentOutOfRangeError(this.parameter,t);return this}isDefined(r){if(void 0===this.value)throw new ArgumentMissingError(this.parameter,r);return this}isNotEmpty(r){if(""===this.value||Array.isArray(this.value)&&!this.value.length)throw new ArgumentError(this.parameter,this._formatMessage(r??"Parameter '{0}' cannot be empty."));return this}isNotMissing(r){if(null===this.value||void 0===this.value)throw new ArgumentMissingError(this.parameter,r);return this}isNotNull(r){if(null===this.value)throw new ArgumentMissingError(this.parameter,r);return this}matches(r,e){if("string"!=typeof this.value||!this.value.match(r))throw new ArgumentError(this.parameter,this._formatMessage(e??"Parameter '{0}' was not in the expected format."));return this}satisfies(r,e){let t,s=!1;try{s=r(this.value)}catch(r){t=r&&r.message}if(!s)throw new ArgumentError(this.parameter,this._formatMessage(e||t));return this}_formatMessage(r){return r?r.replace("{0}",this.parameter):r}}ArgumentCheckerImpl.instance=new ArgumentCheckerImpl;export function assertNever(r,e){if(e)throw e}
package/utilities/date.js CHANGED
@@ -1 +1 @@
1
- import{__decorate}from"tslib";import mtz from"moment-timezone";import{InvalidOperationError}from"../InvalidOperationError.js";import{getBestMatchLocale,get as getLocale,isRegistered as isRegisteredLocale}from"../locale.js";import{serializable,SerializableBase}from"../support/Serializable.js";import{settings as formatSettings}from"./FormatSettings.js";import{checkArg}from"./checkArg.js";import{isNumeric,parse as parseNumber}from"./number.js";export const ERR_TIME_ZONE_INVALID=e=>`Unrecognized time zone ${e}. Make sure it is spelled correctly and that the data for this time zone has been loaded by the moment-timezone library.`;export var DateFormat;!function(e){e.DATE_SHORT="d",e.DATE_LONG="D",e.TIME_SHORT="t",e.TIME_LONG="T",e.DATE_TIME_SHORT="g",e.DATE_TIME_LONG="G",e.FULL="f",e.ISO_8601="u",e.ROUND_TRIP="u",e.DEFAULT="g"}(DateFormat||(DateFormat={}));export const DEFAULT_PARSING_FORMATS=[DateFormat.ISO_8601,DateFormat.DATE_TIME_SHORT,DateFormat.DATE_TIME_LONG,DateFormat.DATE_SHORT,DateFormat.DATE_LONG];export const INVALID_DATE=new Date(NaN);export function isValid(e){return e&&!isNaN(e.getTime())}export function format(...e){return globalFormatter.format(...e)}export function parse(...e){return globalFormatter.parse(...e)}export function parseUtc(...e){return globalFormatter.parseUtc(...e)}export function esriFormatToGeocortexFormat(e){if(e)switch(e){case"short-date":return"M/d/yyyy";case"short-date-le":return"d/M/yyyy";case"long-month-day-year":return"MMMM d, yyyy";case"day-short-month-year":return"d MMM yyyy";case"long-date":return"dddd, MMMM d, yyyy";case"short-date-short-time":return"M/d/yyyy h:mm tt";case"short-date-le-short-time":return"d/M/yyyy h:mm tt";case"short-date-short-time-24":return"M/d/yyyy H:mm";case"short-date-le-short-time-24":return"d/M/yyyy H:mm";case"short-date-long-time":return"M/d/yyyy h:mm:ss tt";case"short-date-le-long-time":return"d/M/yyyy h:mm:ss tt";case"short-date-long-time-24":return"M/d/yyyy H:mm:ss";case"short-date-le-long-time-24":return"d/M/yyyy H:mm:ss";case"long-month-year":return"MMMM yyyy";case"short-month-year":return"MMM yyyy";case"year":return"yyyy";default:throw new Error("Unrecognized date format constant")}}const timezoneConversionFormat="YYYY-MM-DDTHH:mm:ss.SSS";function timeZoneToUtc(e,t){const r=mtz.tz(e,"UTC").format(timezoneConversionFormat);return mtz.tz(r,timezoneConversionFormat,t).valueOf()}export function isValidTimeZone(e){return null!==mtz.tz.zone(e)}let DateFormatter=class extends SerializableBase{get defaultFormat(){return this._defaultFormat}set defaultFormat(e){this._defaultFormat=e}get timeZone(){return this._timeZone}set timeZone(e){checkArg("timezone",e).satisfies(isValidTimeZone,ERR_TIME_ZONE_INVALID(e)),this._timeZone=e}get parseTimeZone(){return this._parseTimeZone}set parseTimeZone(e){checkArg("timezone",e).satisfies(isValidTimeZone,ERR_TIME_ZONE_INVALID(e)),this._parseTimeZone=e}format(...e){let t,r;if(1===arguments.length?(t=e[0],r={}):arguments.length>=2&&(t=e[1],r="string"==typeof e[0]?{format:e[0]}:e[0],checkArg("options",r).isNotMissing()),!t)return"";if(r.timeZone&&checkArg("timezone",r.timeZone).satisfies(isValidTimeZone,ERR_TIME_ZONE_INVALID(r.timeZone)),!t||!t.getTime||isNaN(t.getTime()))return"";const a=r.timeZone||this.timeZone;r.locale=r.locale||this.locale;const o=getBestMatchLocale(r.locale||getLocale());_verifyLocaleIsRegistered(o);const n=_gcxLocaleToMomentLocale(o),s=_gcxDateFormatToMomentFormat(r.format||this.defaultFormat||DateFormat.DEFAULT);let i=mtz(t).locale(n);return a&&(i=i.tz(a)),i.format(s)}parse(...e){return this._parse(!1,...e)}parseUtc(...e){return this._parse(!0,...e)}_getSerializableProperties(){return{defaultFormat:"initial",defaultParseFormat:"initial",locale:"initial",timeZone:"initial",parseTimeZone:"initial"}}_parse(e,...t){let r,a;if(1===t.length?(r=t[0],a={}):t.length>=2&&(r=t[1],a="string"==typeof t[0]||Array.isArray(t[0])?{format:t[0]}:t[0]),a.timeZone&&checkArg("timezone",a.timeZone).satisfies(isValidTimeZone,ERR_TIME_ZONE_INVALID(a.timeZone)),r instanceof Date)return r;if("number"==typeof r){const t=a.timeZone&&!e?timeZoneToUtc(r,a.timeZone):r;return new Date(t)}if("string"!=typeof r)return INVALID_DATE;let{format:o}=a;if(void 0===o&&isNumeric(r)){let t=parseNumber(r);return t=a.timeZone&&!e?timeZoneToUtc(t,a.timeZone):t,new Date(t)}o=o||this.defaultParseFormat||DEFAULT_PARSING_FORMATS;const n=[].concat(o).map((e=>{const t=_gcxDateFormatToMomentFormat(e);return void 0===t?mtz.ISO_8601:t})),s=a.timeZone||this.parseTimeZone;a.locale=a.locale||this.locale;const i=getBestMatchLocale(a.locale||getLocale());_verifyLocaleIsRegistered(i);const m=_gcxLocaleToMomentLocale(i);let c;return c=e?mtz.utc(r,n,m,!0):s?mtz.tz(r,n,m,!0,s):mtz(r,n,m,!0),c.isValid()?c.toDate():INVALID_DATE}};DateFormatter=__decorate([serializable],DateFormatter);export{DateFormatter};let GlobalFormatter=class extends DateFormatter{get defaultFormat(){return formatSettings.dateFormat}set defaultFormat(e){formatSettings.dateFormat=e}get timeZone(){return formatSettings.timeZone}set timeZone(e){formatSettings.timeZone=e}};GlobalFormatter=__decorate([serializable],GlobalFormatter);const momentFormatLookup=new Map,dotNetDatePattern=/%?([dfFghHKmMstyz])\1*|\\.|(["'])[^\2]+\2|[^dfFghHKmMstyz\\'"]+/g;function _gcxLocaleToMomentLocale(e){switch(e){case"inv":return"en";case"hy":return"hy-AM";case"sr-ME":return"me";case"tl":return"tl-PH";case"zh":return"zh-CN";default:return e}}function _gcxDateFormatToMomentFormat(e){const t=null!=e?e:DateFormat.DEFAULT;switch(t){case DateFormat.DATE_SHORT:return"L";case DateFormat.DATE_LONG:return"LL";case DateFormat.TIME_SHORT:return"LT";case DateFormat.TIME_LONG:return"LTS";case DateFormat.DATE_TIME_SHORT:return"lll";case DateFormat.DATE_TIME_LONG:return"LLL";case DateFormat.FULL:return"LLLL";case DateFormat.ISO_8601:return;default:{if(momentFormatLookup.has(t))return momentFormatLookup.get(t);const e=t.match(dotNetDatePattern);let r="";for(let t of e)switch(t.startsWith("%")&&(t=t.slice(1)),t[0]){case"y":t.length<=2?r+="YY":t.length<=4?r+="YYYY":r+="YYYYY";break;case"d":t.length<=2?r+=t.slice(0,2).toUpperCase():r+=t.slice(0,4);break;case"f":case"F":r+=t.slice(0,3).replace(/[Ff]/g,"S");break;case"t":r+="A";break;case"z":r+="Z";break;case"M":r+=t.slice(0,4);break;case"h":case"H":case"m":case"s":r+=t.slice(0,2);break;case"g":case"K":console.warn(`The "${t}" date format specifier is not supported.`);break;default:t.startsWith('"')||t.startsWith("'")?t=t.slice(1,-1):t.startsWith("\\")&&(t=t.slice(1)),r+=`[${t}]`}return momentFormatLookup.set(t,r),r}}}const globalFormatter=new GlobalFormatter;export const settings=globalFormatter;function _verifyLocaleIsRegistered(e){if(!isRegisteredLocale(e))throw new InvalidOperationError(`Locale "${e}" is not available. You must load the corresponding module for this locale before use.`)}export function getMonthName(e,t=!1,r){checkArg("monthIndex",e).isInRange(0,11,"Month indexes must be between 0 and 11");const a=t?"MMM":"MMMM";return globalFormatter.format({locale:r,format:a},new Date(2e3,e))}export function getWeekdayName(e,t=!1,r){checkArg("weekdayIndex",e).isInRange(0,6,"Weekday indexes must be between 0 and 6");const a=t?"ddd":"dddd";return globalFormatter.format({locale:r,format:a},new Date(2019,11,e+1))}
1
+ import{__decorate}from"tslib";import mtz from"moment-timezone";import{InvalidOperationError}from"../InvalidOperationError.js";import{getBestMatchLocale,get as getLocale,isRegistered as isRegisteredLocale}from"../locale.js";import{serializable,SerializableBase}from"../support/Serializable.js";import{settings as formatSettings}from"./FormatSettings.js";import{checkArg}from"./checkArg.js";import{isNumeric,parse as parseNumber}from"./number.js";export const ERR_TIME_ZONE_INVALID=e=>`Unrecognized time zone ${e}. Make sure it is spelled correctly and that the data for this time zone has been loaded by the moment-timezone library.`;export var DateFormat;!function(e){e.DATE_SHORT="d",e.DATE_LONG="D",e.TIME_SHORT="t",e.TIME_LONG="T",e.DATE_TIME_SHORT="g",e.DATE_TIME_LONG="G",e.FULL="f",e.ISO_8601="u",e.ROUND_TRIP="u",e.DEFAULT="g"}(DateFormat||(DateFormat={}));export const DEFAULT_PARSING_FORMATS=[DateFormat.ISO_8601,DateFormat.DATE_TIME_SHORT,DateFormat.DATE_TIME_LONG,DateFormat.DATE_SHORT,DateFormat.DATE_LONG];export const INVALID_DATE=new Date(NaN);export function isValid(e){return e&&!isNaN(e.getTime())}export function format(...e){return globalFormatter.format(...e)}export function parse(...e){return globalFormatter.parse(...e)}export function parseUtc(...e){return globalFormatter.parseUtc(...e)}export function esriFormatToGeocortexFormat(e){if(e)switch(e){case"short-date":return"M/d/yyyy";case"short-date-le":return"d/M/yyyy";case"long-month-day-year":return"MMMM d, yyyy";case"day-short-month-year":return"d MMM yyyy";case"long-date":return"dddd, MMMM d, yyyy";case"short-date-short-time":return"M/d/yyyy h:mm tt";case"short-date-le-short-time":return"d/M/yyyy h:mm tt";case"short-date-short-time-24":return"M/d/yyyy H:mm";case"short-date-le-short-time-24":return"d/M/yyyy H:mm";case"short-date-long-time":return"M/d/yyyy h:mm:ss tt";case"short-date-le-long-time":return"d/M/yyyy h:mm:ss tt";case"short-date-long-time-24":return"M/d/yyyy H:mm:ss";case"short-date-le-long-time-24":return"d/M/yyyy H:mm:ss";case"long-month-year":return"MMMM yyyy";case"short-month-year":return"MMM yyyy";case"year":return"yyyy";default:throw new Error("Unrecognized date format constant")}}const timezoneConversionFormat="YYYY-MM-DDTHH:mm:ss.SSS";function timeZoneToUtc(e,t){const r=mtz.tz(e,"UTC").format(timezoneConversionFormat);return mtz.tz(r,timezoneConversionFormat,t).valueOf()}export function isValidTimeZone(e){return null!==mtz.tz.zone(e)}let DateFormatter=class extends SerializableBase{get defaultFormat(){return this._defaultFormat}set defaultFormat(e){this._defaultFormat=e}get timeZone(){return this._timeZone}set timeZone(e){checkArg("timezone",e).satisfies(isValidTimeZone,ERR_TIME_ZONE_INVALID(e)),this._timeZone=e}get parseTimeZone(){return this._parseTimeZone}set parseTimeZone(e){checkArg("timezone",e).satisfies(isValidTimeZone,ERR_TIME_ZONE_INVALID(e)),this._parseTimeZone=e}format(...e){let t,r;if(1===arguments.length?(t=e[0],r={}):arguments.length>=2&&(t=e[1],r="string"==typeof e[0]?{format:e[0]}:e[0],checkArg("options",r).isNotMissing()),!t)return"";if(r.timeZone&&checkArg("timezone",r.timeZone).satisfies(isValidTimeZone,ERR_TIME_ZONE_INVALID(r.timeZone)),!t||!t.getTime||isNaN(t.getTime()))return"";const a=r.timeZone||this.timeZone;r.locale=r.locale||this.locale;const o=getBestMatchLocale(r.locale||getLocale());_verifyLocaleIsRegistered(o);const n=_gcxLocaleToMomentLocale(o),s=_gcxDateFormatToMomentFormat(r.format||this.defaultFormat||DateFormat.DEFAULT);let i=mtz(t).locale(n);return a&&(i=i.tz(a)),i.format(s)}parse(...e){return this._parse(!1,...e)}parseUtc(...e){return this._parse(!0,...e)}_getSerializableProperties(){return{defaultFormat:"initial",defaultParseFormat:"initial",locale:"initial",timeZone:"initial",parseTimeZone:"initial"}}_parse(e,...t){let r,a;if(1===t.length?(r=t[0],a={}):t.length>=2&&(r=t[1],a="string"==typeof t[0]||Array.isArray(t[0])?{format:t[0]}:t[0]),a.timeZone&&checkArg("timezone",a.timeZone).satisfies(isValidTimeZone,ERR_TIME_ZONE_INVALID(a.timeZone)),r instanceof Date)return r;if("number"==typeof r){const t=a.timeZone&&!e?timeZoneToUtc(r,a.timeZone):r;return new Date(t)}if("string"!=typeof r)return INVALID_DATE;let{format:o}=a;if(void 0===o&&isNumeric(r)){let t=parseNumber(r);return t=a.timeZone&&!e?timeZoneToUtc(t,a.timeZone):t,new Date(t)}o=o||this.defaultParseFormat||DEFAULT_PARSING_FORMATS;const n=[].concat(o).map((e=>{const t=_gcxDateFormatToMomentFormat(e);return void 0===t?mtz.ISO_8601:t})),s=a.timeZone||this.parseTimeZone;a.locale=a.locale||this.locale;const i=getBestMatchLocale(a.locale||getLocale());_verifyLocaleIsRegistered(i);const m=_gcxLocaleToMomentLocale(i);let c;return c=e?mtz.utc(r,n,m,!0):s?mtz.tz(r,n,m,!0,s):mtz(r,n,m,!0),c.isValid()?c.toDate():INVALID_DATE}};DateFormatter=__decorate([serializable],DateFormatter);export{DateFormatter};let GlobalFormatter=class extends DateFormatter{get defaultFormat(){return formatSettings.dateFormat}set defaultFormat(e){formatSettings.dateFormat=e}get timeZone(){return formatSettings.timeZone}set timeZone(e){formatSettings.timeZone=e}};GlobalFormatter=__decorate([serializable],GlobalFormatter);const momentFormatLookup=new Map,dotNetDatePattern=/%?([dfFghHKmMstyz])\1*|\\.|(["'])[^\2]+\2|[^dfFghHKmMstyz\\'"]+/g;function _gcxLocaleToMomentLocale(e){switch(e){case"inv":return"en";case"hy":return"hy-AM";case"sr-ME":return"me";case"tl":return"tl-PH";case"zh":return"zh-CN";default:return e}}function _gcxDateFormatToMomentFormat(e){const t=e??DateFormat.DEFAULT;switch(t){case DateFormat.DATE_SHORT:return"L";case DateFormat.DATE_LONG:return"LL";case DateFormat.TIME_SHORT:return"LT";case DateFormat.TIME_LONG:return"LTS";case DateFormat.DATE_TIME_SHORT:return"lll";case DateFormat.DATE_TIME_LONG:return"LLL";case DateFormat.FULL:return"LLLL";case DateFormat.ISO_8601:return;default:{if(momentFormatLookup.has(t))return momentFormatLookup.get(t);const e=t.match(dotNetDatePattern);let r="";for(let t of e)switch(t.startsWith("%")&&(t=t.slice(1)),t[0]){case"y":t.length<=2?r+="YY":t.length<=4?r+="YYYY":r+="YYYYY";break;case"d":t.length<=2?r+=t.slice(0,2).toUpperCase():r+=t.slice(0,4);break;case"f":case"F":r+=t.slice(0,3).replace(/[Ff]/g,"S");break;case"t":r+="A";break;case"z":r+="Z";break;case"M":r+=t.slice(0,4);break;case"h":case"H":case"m":case"s":r+=t.slice(0,2);break;case"g":case"K":console.warn(`The "${t}" date format specifier is not supported.`);break;default:t.startsWith('"')||t.startsWith("'")?t=t.slice(1,-1):t.startsWith("\\")&&(t=t.slice(1)),r+=`[${t}]`}return momentFormatLookup.set(t,r),r}}}const globalFormatter=new GlobalFormatter;export const settings=globalFormatter;function _verifyLocaleIsRegistered(e){if(!isRegisteredLocale(e))throw new InvalidOperationError(`Locale "${e}" is not available. You must load the corresponding module for this locale before use.`)}export function getMonthName(e,t=!1,r){checkArg("monthIndex",e).isInRange(0,11,"Month indexes must be between 0 and 11");const a=t?"MMM":"MMMM";return globalFormatter.format({locale:r,format:a},new Date(2e3,e))}export function getWeekdayName(e,t=!1,r){checkArg("weekdayIndex",e).isInRange(0,6,"Weekday indexes must be between 0 and 6");const a=t?"ddd":"dddd";return globalFormatter.format({locale:r,format:a},new Date(2019,11,e+1))}
package/utilities/esri.js CHANGED
@@ -1 +1 @@
1
- export async function load(e){e&&"function"==typeof e.load&&await e.load(),await ready(e)}export async function ready(e){e&&"function"==typeof e.when&&await e.when()}export function getAllFieldInfos(e){if(!e)return;const r=Array.isArray(e.content)?e.content.filter((e=>"fields"===e.type)).map((e=>e.fieldInfos||[])):[];return(e.fieldInfos||[]).concat(...r)}const FIELD_TOKEN_REGEX=/\{(expression[\\/])?[\w.]+\}/g,RELATIONSHIP_TOKEN_REGEX=/\{relationships[\\/][\w.]+[\\/][\w.]+\}/g,FIELD_ARCADE_REGEX=/\$feature\.([\w.]+)|\$feature\["([\w.]+)"\]/g;export function getAllReferencedFieldNames(e){if(!e)return;const r=new Set,t=[],n=[];return t.push(e.title),e.expressionInfos&&e.expressionInfos.forEach((e=>{n.push(e.expression,e.title)})),Array.isArray(e.content)?e.content.forEach((e=>{if("text"===e.type)t.push(e.text);else if("media"===e.type){let n=e.mediaInfos||[];n=Array.isArray(n)?n:[n],n.forEach((e=>{t.push(e.title,e.caption),isImageMediaInfo(e)?e.value&&t.push(e.value.linkURL,e.value.sourceURL):e.value&&(r.add(e.value.tooltipField),r.add(e.value.normalizeField),(e.value.fields||[]).forEach((e=>r.add(e))))}))}})):"string"==typeof e.content&&t.push(e.content),n.filter((e=>!!e)).forEach((e=>{var t;const n=e.matchAll(FIELD_ARCADE_REGEX);for(const e of n)r.add(null!==(t=e[1])&&void 0!==t?t:e[2])})),t.filter((e=>!!e)).forEach((e=>{let t;const n=new RegExp(FIELD_TOKEN_REGEX),o=new RegExp(RELATIONSHIP_TOKEN_REGEX),i=n=>{const o=new RegExp(n);for(t=o.exec(e);t&&"string"==typeof t[0]&&void 0===t[1];)r.add(t[0].replace(/\{|\}/g,"").split(":")[0]),t=o.exec(e)};i(n),i(o)})),Array.from(r.values()).filter((e=>!!e))}export function isCodedValueDomain(e){return"esri.layers.support.CodedValueDomain"===(null==e?void 0:e.declaredClass)}export function isColor(e){return"esri.Color"===(null==e?void 0:e.declaredClass)}export function isImageMediaInfo(e){return"esri.popup.content.ImageMediaInfo"===(null==e?void 0:e.declaredClass)}export function isPopupTemplate(e){return"esri.PopupTemplate"===(null==e?void 0:e.declaredClass)}export function isField(e){return"esri.layers.support.Field"===(null==e?void 0:e.declaredClass)}export function isFeatureSet(e){return"esri.rest.support.FeatureSet"===(null==e?void 0:e.declaredClass)}export function isFeatureType(e){return"esri.layers.support.FeatureType"===(null==e?void 0:e.declaredClass)}export function isViewpoint(e){return"esri.Viewpoint"===(null==e?void 0:e.declaredClass)}export function isPortalItem(e){return"esri.portal.PortalItem"===(null==e?void 0:e.declaredClass)}export function isGraphic(e){return"esri.Graphic"===(null==e?void 0:e.declaredClass)}export function isSpatialReference(e){return"esri.geometry.SpatialReference"===(null==e?void 0:e.declaredClass)}export function isEsriObject(e){return!!(null==e?void 0:e.declaredClass)}
1
+ export async function load(e){e&&"function"==typeof e.load&&await e.load(),await ready(e)}export async function ready(e){e&&"function"==typeof e.when&&await e.when()}export function getAllFieldInfos(e){if(!e)return;const r=Array.isArray(e.content)?e.content.filter((e=>"fields"===e.type)).map((e=>e.fieldInfos||[])):[];return(e.fieldInfos||[]).concat(...r)}const FIELD_TOKEN_REGEX=/\{(expression[\\/])?[\w.]+\}/g,RELATIONSHIP_TOKEN_REGEX=/\{relationships[\\/][\w.]+[\\/][\w.]+\}/g,FIELD_ARCADE_REGEX=/\$feature\.([\w.]+)|\$feature\["([\w.]+)"\]/g;export function getAllReferencedFieldNames(e){if(!e)return;const r=new Set,t=[],n=[];return t.push(e.title),e.expressionInfos&&e.expressionInfos.forEach((e=>{n.push(e.expression,e.title)})),Array.isArray(e.content)?e.content.forEach((e=>{if("text"===e.type)t.push(e.text);else if("media"===e.type){let n=e.mediaInfos||[];n=Array.isArray(n)?n:[n],n.forEach((e=>{t.push(e.title,e.caption),isImageMediaInfo(e)?e.value&&t.push(e.value.linkURL,e.value.sourceURL):e.value&&(r.add(e.value.tooltipField),r.add(e.value.normalizeField),(e.value.fields||[]).forEach((e=>r.add(e))))}))}})):"string"==typeof e.content&&t.push(e.content),n.filter((e=>!!e)).forEach((e=>{const t=e.matchAll(FIELD_ARCADE_REGEX);for(const e of t)r.add(e[1]??e[2])})),t.filter((e=>!!e)).forEach((e=>{let t;const n=new RegExp(FIELD_TOKEN_REGEX),o=new RegExp(RELATIONSHIP_TOKEN_REGEX),a=n=>{const o=new RegExp(n);for(t=o.exec(e);t&&"string"==typeof t[0]&&void 0===t[1];)r.add(t[0].replace(/\{|\}/g,"").split(":")[0]),t=o.exec(e)};a(n),a(o)})),Array.from(r.values()).filter((e=>!!e))}export function isCodedValueDomain(e){return"esri.layers.support.CodedValueDomain"===e?.declaredClass}export function isColor(e){return"esri.Color"===e?.declaredClass}export function isImageMediaInfo(e){return"esri.popup.content.ImageMediaInfo"===e?.declaredClass}export function isPopupTemplate(e){return"esri.PopupTemplate"===e?.declaredClass}export function isField(e){return"esri.layers.support.Field"===e?.declaredClass}export function isFeatureSet(e){return"esri.rest.support.FeatureSet"===e?.declaredClass}export function isFeatureType(e){return"esri.layers.support.FeatureType"===e?.declaredClass}export function isViewpoint(e){return"esri.Viewpoint"===e?.declaredClass}export function isPortalItem(e){return"esri.portal.PortalItem"===e?.declaredClass}export function isGraphic(e){return"esri.Graphic"===e?.declaredClass}export function isSpatialReference(e){return"esri.geometry.SpatialReference"===e?.declaredClass}export function isEsriObject(e){return!!e?.declaredClass}
@@ -1 +1 @@
1
- import{isLayerExtension,isSublayerExtension,isTableExtension}from"../ItemType.js";import{isMapImageSublayer,isWMSSublayer}from"./layers.js";export function isArcGISServiceTableExtension(e){return isTableExtension(e)&&"ArcGISServiceTable"===e.getDefaults().table.$tableType}export function isGroupLayerExtension(e){return isLayerExtension(e)&&!!e.layerExtensions}export function isFeatureLayerExtension(e){var r;return isLayerExtension(e)&&"ArcGISFeatureLayer"===(null===(r=e.getDefaults().layer)||void 0===r?void 0:r.layerType)}export function isFeatureCollectionLayerExtension(e){var r;return isLayerExtension(e)&&"feature-collection-layer"===(null===(r=e._getSerializableLayerType)||void 0===r?void 0:r.call(e))}export function isCSVLayerExtension(e){return isLayerExtension(e)&&"CSV"===e.getDefaults().layer.layerType}export function isGeoRssLayerExtension(e){return isLayerExtension(e)&&"GeoRSS"===e.getDefaults().layer.layerType}export function isImageryLayerExtension(e){return isLayerExtension(e)&&"ArcGISImageServiceLayer"===e.getDefaults().layer.layerType}export function isSceneLayerExtension(e){return isLayerExtension(e)&&"ArcGISSceneServiceLayer"===e.getDefaults().layer.layerType}export function isStreamLayerExtension(e){return isLayerExtension(e)&&"ArcGISStreamLayer"===e.getDefaults().layer.layerType}export function isMapImageLayerExtension(e){return isLayerExtension(e)&&"ArcGISMapServiceLayer"===e.getDefaults().layer.layerType}export function isTileLayerExtension(e){return isLayerExtension(e)&&"ArcGISTiledMapServiceLayer"===e.getDefaults().layer.layerType}export function isWMSLayerExtension(e){return isLayerExtension(e)&&"WMS"===e.getDefaults().layer.layerType}export function isWMSSublayerExtension(e){var r;return isSublayerExtension(e)&&(isWMSSublayer(e.sublayer)||"WMSSublayer"===(null===(r=e._deferredSublayerProperties)||void 0===r?void 0:r.$sublayerType))}export function isMapImageSublayerExtension(e){var r;return isSublayerExtension(e)&&(isMapImageSublayer(e.sublayer)||"ArcGISMapServiceSublayer"===(null===(r=e._deferredSublayerProperties)||void 0===r?void 0:r.$sublayerType))}export function isWMTSLayerExtension(e){if(!isLayerExtension(e))return!1;const r=e.getDefaults().layer;return"WebTiledLayer"===r.layerType&&!!r.wmtsInfo}export function isKMLLayerExtension(e){return isLayerExtension(e)&&"KML"===e.getDefaults().layer.layerType}export function isBuildingSceneLayerExtension(e){return isLayerExtension(e)&&"BuildingSceneLayer"===e.getDefaults().layer.layerType}
1
+ import{isLayerExtension,isSublayerExtension,isTableExtension}from"../ItemType.js";import{isMapImageSublayer,isWMSSublayer}from"./layers.js";export function isArcGISServiceTableExtension(e){return isTableExtension(e)&&"ArcGISServiceTable"===e.getDefaults().table.$tableType}export function isGroupLayerExtension(e){return isLayerExtension(e)&&!!e.layerExtensions}export function isFeatureLayerExtension(e){return isLayerExtension(e)&&"ArcGISFeatureLayer"===e.getDefaults().layer?.layerType}export function isFeatureCollectionLayerExtension(e){return isLayerExtension(e)&&"feature-collection-layer"===e._getSerializableLayerType?.()}export function isCSVLayerExtension(e){return isLayerExtension(e)&&"CSV"===e.getDefaults().layer.layerType}export function isGeoRssLayerExtension(e){return isLayerExtension(e)&&"GeoRSS"===e.getDefaults().layer.layerType}export function isImageryLayerExtension(e){return isLayerExtension(e)&&"ArcGISImageServiceLayer"===e.getDefaults().layer.layerType}export function isSceneLayerExtension(e){return isLayerExtension(e)&&"ArcGISSceneServiceLayer"===e.getDefaults().layer.layerType}export function isStreamLayerExtension(e){return isLayerExtension(e)&&"ArcGISStreamLayer"===e.getDefaults().layer.layerType}export function isMapImageLayerExtension(e){return isLayerExtension(e)&&"ArcGISMapServiceLayer"===e.getDefaults().layer.layerType}export function isTileLayerExtension(e){return isLayerExtension(e)&&"ArcGISTiledMapServiceLayer"===e.getDefaults().layer.layerType}export function isWMSLayerExtension(e){return isLayerExtension(e)&&"WMS"===e.getDefaults().layer.layerType}export function isWMSSublayerExtension(e){return isSublayerExtension(e)&&(isWMSSublayer(e.sublayer)||"WMSSublayer"===e._deferredSublayerProperties?.$sublayerType)}export function isMapImageSublayerExtension(e){return isSublayerExtension(e)&&(isMapImageSublayer(e.sublayer)||"ArcGISMapServiceSublayer"===e._deferredSublayerProperties?.$sublayerType)}export function isWMTSLayerExtension(e){if(!isLayerExtension(e))return!1;const r=e.getDefaults().layer;return"WebTiledLayer"===r.layerType&&!!r.wmtsInfo}export function isKMLLayerExtension(e){return isLayerExtension(e)&&"KML"===e.getDefaults().layer.layerType}export function isBuildingSceneLayerExtension(e){return isLayerExtension(e)&&"BuildingSceneLayer"===e.getDefaults().layer.layerType}