@vertigis/arcgis-extensions 54.10.2 → 54.12.0

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 (387) hide show
  1. package/AppConfig.schema.json +33 -39
  2. package/data/_TableExtension.d.ts +1 -1
  3. package/data/convert.js +1 -1
  4. package/docs/html/assets/hierarchy.js +1 -1
  5. package/docs/html/classes/data__TableExtension.TableSchema.html +3 -3
  6. package/docs/html/classes/layer-preset_LayerPreset.LayerPreset.html +1 -1
  7. package/docs/html/classes/layer-preset_LayerPresetSettings.LayerPresetSetting.html +1 -1
  8. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerExtension.html +1 -1
  9. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerRelationshipCollection.html +1 -1
  10. package/docs/html/classes/mapping_BasemapExtension.BasemapExtension.html +1 -1
  11. package/docs/html/classes/mapping_Bookmark.Bookmark.html +1 -1
  12. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtension.html +1 -1
  13. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerSchema.html +1 -1
  14. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtension.html +1 -1
  15. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerSchema.html +1 -1
  16. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtension.html +1 -1
  17. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerReadOnlySchema.html +1 -1
  18. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerExtension.html +1 -1
  19. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerSchema.html +1 -1
  20. package/docs/html/classes/mapping_CSVLayerExtension.CSVLayerExtension.html +1 -1
  21. package/docs/html/classes/mapping_ElevationLayerExtension.ElevationLayerExtension.html +1 -1
  22. package/docs/html/classes/mapping_FeatureCollectionLayerExtension.FeatureCollectionLayerExtension.html +1 -1
  23. package/docs/html/classes/mapping_FeatureLayerExtension.FeatureLayerExtension.html +1 -1
  24. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBase.html +1 -1
  25. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerReadOnlySchema.html +1 -1
  26. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerSchema.html +1 -1
  27. package/docs/html/classes/mapping_GeoJSONLayerExtension.GeoJSONLayerExtension.html +1 -1
  28. package/docs/html/classes/mapping_GeoRSSLayerExtension.GeoRSSLayerExtension.html +1 -1
  29. package/docs/html/classes/mapping_GraphicsLayerExtension.GraphicsLayerExtension.html +1 -1
  30. package/docs/html/classes/mapping_GroundExtension.GroundExtension.html +1 -1
  31. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtension.html +1 -1
  32. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtensionCollection.html +1 -1
  33. package/docs/html/classes/mapping_ImageryLayerExtension.ImageryLayerExtension.html +1 -1
  34. package/docs/html/classes/mapping_ImageryTileLayerExtension.ImageryTileLayerExtension.html +1 -1
  35. package/docs/html/classes/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtension.html +1 -1
  36. package/docs/html/classes/mapping_KMLLayerExtension.KMLLayerExtension.html +1 -1
  37. package/docs/html/classes/mapping_KMLSublayerExtension.KMLSublayerExtension.html +1 -1
  38. package/docs/html/classes/mapping_MapConstraints.MapConstraints.html +1 -1
  39. package/docs/html/classes/mapping_MapExtension.MapExtension.html +1 -1
  40. package/docs/html/classes/mapping_MapImageLayerExtension.MapImageLayerExtension.html +1 -1
  41. package/docs/html/classes/mapping_MapImageSublayerExtension.MapImageSublayerExtension.html +1 -1
  42. package/docs/html/classes/mapping_MapNotesLayerExtension.MapNotesLayerExtension.html +1 -1
  43. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtension.html +1 -1
  44. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionSchema.html +1 -1
  45. package/docs/html/classes/mapping_MediaLayerExtension.MediaLayerExtension.html +1 -1
  46. package/docs/html/classes/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtension.html +1 -1
  47. package/docs/html/classes/mapping_PointCloudLayerExtension.PointCloudLayerExtension.html +1 -1
  48. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtension.html +1 -1
  49. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtensionSchema.html +1 -1
  50. package/docs/html/classes/mapping_SceneLayerExtension.SceneLayerExtension.html +1 -1
  51. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerExtension.html +1 -1
  52. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerSchema.html +1 -1
  53. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtension.html +1 -1
  54. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerRelationshipCollection.html +1 -1
  55. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerSchema.html +1 -1
  56. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerExtension.html +1 -1
  57. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerRelationshipCollection.html +1 -1
  58. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerSchema.html +1 -1
  59. package/docs/html/classes/mapping_TileLayerExtension.TileLayerExtension.html +1 -1
  60. package/docs/html/classes/mapping_TileSublayerExtension.TileSublayerExtension.html +1 -1
  61. package/docs/html/classes/mapping_UnsupportedLayerExtension.UnsupportedLayerExtension.html +1 -1
  62. package/docs/html/classes/mapping_VectorTileLayerExtension.VectorTileLayerExtension.html +1 -1
  63. package/docs/html/classes/mapping_WFSLayerExtension.WFSLayerExtension.html +1 -1
  64. package/docs/html/classes/mapping_WMSLayerExtension.WMSLayerExtension.html +1 -1
  65. package/docs/html/classes/mapping_WMSSublayerExtension.WMSSublayerExtension.html +1 -1
  66. package/docs/html/classes/mapping_WMTSLayerExtension.WMTSLayerExtension.html +1 -1
  67. package/docs/html/classes/mapping_WebTileLayerExtension.WebTileLayerExtension.html +1 -1
  68. package/docs/html/classes/mapping__LayerExtension.LayerExtension.html +1 -1
  69. package/docs/html/classes/mapping__LayerExtension.LayerExtensionReadOnlySchema.html +1 -1
  70. package/docs/html/classes/mapping__LayerExtension.LayerExtensionSchema.html +1 -1
  71. package/docs/html/classes/mapping__LayerExtensionCollectionImpl.LayerExtensionCollectionImpl.html +1 -1
  72. package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +1 -1
  73. package/docs/html/classes/mapping__SublayerExtension.SublayerExtension.html +1 -1
  74. package/docs/html/classes/mapping__SublayerExtension.SublayerSchema.html +1 -1
  75. package/docs/html/classes/mapping_support_ArrayWrappedCollection.ArrayWrappedCollection.html +1 -1
  76. package/docs/html/classes/mapping_support_LayerListSettings.ExtensionBaseLayerListSettings.html +1 -1
  77. package/docs/html/classes/mapping_support_LayerListSettings.LayerListSettings.html +1 -1
  78. package/docs/html/classes/mapping_support__LayerExtensionCollection.LayerExtensionCollectionBase.html +1 -1
  79. package/docs/html/classes/mapping_support__SublayerExtensionCollection.SublayerExtensionCollectionBase.html +1 -1
  80. package/docs/html/classes/menus_Menu.Menu.html +1 -1
  81. package/docs/html/classes/menus_MenuItem.MenuItem.html +1 -1
  82. package/docs/html/classes/support_FormatSettings.FormatSettings.html +1 -1
  83. package/docs/html/classes/support_InitializableBase.InitializableBase.html +1 -1
  84. package/docs/html/classes/support_InitializableCollectionProxy.InitializableCollectionProxy.html +1 -1
  85. package/docs/html/classes/support_InitializeError.InitializeError.html +1 -1
  86. package/docs/html/classes/support_ReadOnlyInitializableCollection.ReadOnlyInitializableCollection.html +1 -1
  87. package/docs/html/classes/support_Serializable.SerializableBase.html +1 -1
  88. package/docs/html/classes/support_Settings.Settings.html +1 -1
  89. package/docs/html/classes/support__ArcGISRelationshipCollection.ArcGISRelationshipCollection.html +1 -1
  90. package/docs/html/classes/support_observableUtils.ObservableMixin.html +1 -1
  91. package/docs/html/classes/tasks_geocoding_ArcGISGeocoder.ArcGISGeocoder.html +1 -1
  92. package/docs/html/classes/tasks_geocoding_Geocoder.Geocoder.html +1 -1
  93. package/docs/html/classes/tasks_identify_ArcGISSublayerIdentifyProvider.ArcGISSublayerIdentifyProvider.html +1 -1
  94. package/docs/html/classes/tasks_identify_ArcGISSublayerQueryIdentifyProvider.ArcGISSublayerQueryIdentifyProvider.html +1 -1
  95. package/docs/html/classes/tasks_identify_BuildingComponentSublayerClientSideIdentifyProvider.BuildingComponentSublayerClientSideIdentifyProvider.html +1 -1
  96. package/docs/html/classes/tasks_identify_BuildingComponentSublayerHitTestIdentifyProvider.BuildingComponentSublayerHitTestIdentifyProvider.html +1 -1
  97. package/docs/html/classes/tasks_identify_CSVLayer3DHitTestIdentifyProvider.CSVLayer3DHitTestIdentifyProvider.html +1 -1
  98. package/docs/html/classes/tasks_identify_CSVLayerClientSideQueryIdentifyProvider.CSVLayerClientSideQueryIdentifyProvider.html +1 -1
  99. package/docs/html/classes/tasks_identify_ClientSideIdentifyProvider.ClientSideIdentifyProvider.html +1 -1
  100. package/docs/html/classes/tasks_identify_FeatureLayer3DHitTestIdentifyProvider.FeatureLayer3DHitTestIdentifyProvider.html +1 -1
  101. package/docs/html/classes/tasks_identify_FeatureLayerClientSideIdentifyProvider.FeatureLayerClientSideIdentifyProvider.html +1 -1
  102. package/docs/html/classes/tasks_identify_FeatureLayerQueryIdentifyProvider.FeatureLayerQueryIdentifyProvider.html +1 -1
  103. package/docs/html/classes/tasks_identify_GeoJSONLayer3DHitTestIdentifyProvider.GeoJSONLayer3DHitTestIdentifyProvider.html +1 -1
  104. package/docs/html/classes/tasks_identify_GeoJSONLayerClientSideQueryIdentifyProvider.GeoJSONLayerClientSideQueryIdentifyProvider.html +1 -1
  105. package/docs/html/classes/tasks_identify_GeoRSSLayerIdentifyProvider.GeoRSSLayerIdentifyProvider.html +1 -1
  106. package/docs/html/classes/tasks_identify_GraphicsLayerQueryIdentifyProvider.GraphicsLayerQueryIdentifyProvider.html +1 -1
  107. package/docs/html/classes/tasks_identify_HitTestIdentifyProvider.HitTestIdentifyProvider.html +1 -1
  108. package/docs/html/classes/tasks_identify_IdentifyError.IdentifyError.html +1 -1
  109. package/docs/html/classes/tasks_identify_IdentifyProviderBase.IdentifyProviderBase.html +1 -1
  110. package/docs/html/classes/tasks_identify_IdentifyService.IdentifyService.html +1 -1
  111. package/docs/html/classes/tasks_identify_ImageryLayerIdentifyProvider.ImageryLayerIdentifyProvider.html +1 -1
  112. package/docs/html/classes/tasks_identify_KMLLayerQueryIdentifyProvider.KMLLayerQueryIdentifyProvider.html +1 -1
  113. package/docs/html/classes/tasks_identify_MapNotesSublayerQueryIdentifyProvider.MapNotesSublayerQueryIdentifyProvider.html +1 -1
  114. package/docs/html/classes/tasks_identify_PointCloudLayerHitTestIdentifyProvider.PointCloudLayerHitTestIdentifyProvider.html +1 -1
  115. package/docs/html/classes/tasks_identify_RouteLayerQueryIdentifyProvider.RouteLayerQueryIdentifyProvider.html +1 -1
  116. package/docs/html/classes/tasks_identify_SceneLayerClientSideIdentifyProvider.SceneLayerClientSideIdentifyProvider.html +1 -1
  117. package/docs/html/classes/tasks_identify_SceneLayerHitTestIdentifyProvider.SceneLayerHitTestIdentifyProvider.html +1 -1
  118. package/docs/html/classes/tasks_identify_SceneLayerQueryIdentifyProvider.SceneLayerQueryIdentifyProvider.html +1 -1
  119. package/docs/html/classes/tasks_identify_StreamLayerClientSideQueryIdentifyProvider.StreamLayerClientSideQueryIdentifyProvider.html +1 -1
  120. package/docs/html/classes/tasks_identify_SubtypeSublayerClientSideIdentifyProvider.SubtypeSublayerClientSideIdentifyProvider.html +1 -1
  121. package/docs/html/classes/tasks_identify_SubtypeSublayerQueryIdentifyProvider.SubtypeSublayerQueryIdentifyProvider.html +1 -1
  122. package/docs/html/classes/tasks_identify_WFSLayerClientSideIdentifyProvider.WFSLayerClientSideIdentifyProvider.html +1 -1
  123. package/docs/html/classes/tasks_identify_WFSLayerQueryIdentifyProvider.WFSLayerQueryIdentifyProvider.html +1 -1
  124. package/docs/html/classes/tasks_identify_WMSLayerFeatureInfoIdentifyProvider.WMSLayerFeatureInfoIdentifyProvider.html +1 -1
  125. package/docs/html/classes/tasks_identify_WMSSublayerIdentifyProvider.WMSSublayerIdentifyProvider.html +1 -1
  126. package/docs/html/classes/tasks_query_ArcGISRelationship.ArcGISRelationship.html +1 -1
  127. package/docs/html/classes/tasks_query_ArcGISServiceTableQueryProvider.ArcGISServiceTableQueryProvider.html +1 -1
  128. package/docs/html/classes/tasks_query_ArcGISSublayerQueryProvider.ArcGISSublayerQueryProvider.html +1 -1
  129. package/docs/html/classes/tasks_query_BuildingComponentSublayerClientSideQueryProvider.BuildingComponentSublayerClientSideQueryProvider.html +1 -1
  130. package/docs/html/classes/tasks_query_CSVLayerClientSideQueryProvider.CSVLayerClientSideQueryProvider.html +1 -1
  131. package/docs/html/classes/tasks_query_ClientSideQueryProvider.ClientSideQueryProvider.html +1 -1
  132. package/docs/html/classes/tasks_query_FeatureLayerQueryProvider.FeatureLayerQueryProvider.html +1 -1
  133. package/docs/html/classes/tasks_query_GeoJSONLayerClientSideQueryProvider.GeoJSONLayerClientSideQueryProvider.html +1 -1
  134. package/docs/html/classes/tasks_query_GeoRSSLayerQueryProvider.GeoRSSLayerQueryProvider.html +1 -1
  135. package/docs/html/classes/tasks_query_GraphicsLayerQueryProvider.GraphicsLayerQueryProvider.html +1 -1
  136. package/docs/html/classes/tasks_query_ImageryLayerQueryProvider.ImageryLayerQueryProvider.html +1 -1
  137. package/docs/html/classes/tasks_query_KMLLayerQueryProvider.KMLLayerQueryProvider.html +1 -1
  138. package/docs/html/classes/tasks_query_MapNotesSublayerQueryProvider.MapNotesSublayerQueryProvider.html +1 -1
  139. package/docs/html/classes/tasks_query_QueryBasedRelationship.QueryBasedRelationship.html +1 -1
  140. package/docs/html/classes/tasks_query_QueryError.QueryError.html +1 -1
  141. package/docs/html/classes/tasks_query_QueryProviderBase.QueryProviderBase.html +1 -1
  142. package/docs/html/classes/tasks_query_QueryService.QueryService.html +1 -1
  143. package/docs/html/classes/tasks_query_RouteLayerQueryProvider.RouteLayerQueryProvider.html +1 -1
  144. package/docs/html/classes/tasks_query_SceneLayerClientSideQueryProvider.SceneLayerClientSideQueryProvider.html +1 -1
  145. package/docs/html/classes/tasks_query_SceneLayerQueryProvider.SceneLayerQueryProvider.html +1 -1
  146. package/docs/html/classes/tasks_query_StreamLayerClientSideQueryProvider.StreamLayerClientSideQueryProvider.html +1 -1
  147. package/docs/html/classes/tasks_query_SubtypeSublayerQueryProvider.SubtypeSublayerQueryProvider.html +1 -1
  148. package/docs/html/classes/tasks_query_WFSLayerQueryProvider.WFSLayerQueryProvider.html +1 -1
  149. package/docs/html/classes/tasks_search_ArcGISGeocoderSearchProvider.ArcGISGeocoderSearchProvider.html +1 -1
  150. package/docs/html/classes/tasks_search_GeocoderSearchProvider.GeocoderSearchProvider.html +1 -1
  151. package/docs/html/classes/tasks_search_QuerySearchProvider.QuerySearchProvider.html +1 -1
  152. package/docs/html/classes/tasks_search_SearchError.SearchError.html +1 -1
  153. package/docs/html/classes/tasks_search_SearchProviderBase.SearchProviderBase.html +1 -1
  154. package/docs/html/classes/tasks_search_SearchService.SearchService.html +1 -1
  155. package/docs/html/classes/tasks_search_SubtypeSublayerQuerySearchProvider.SubtypeSublayerQuerySearchProvider.html +1 -1
  156. package/docs/html/classes/utilities_CaseInsensitiveObservableMap.CaseInsensitiveObservableMap.html +1 -1
  157. package/docs/html/classes/utilities_CollectionProxy.CollectionProxy.html +1 -1
  158. package/docs/html/classes/utilities_CopyOnWriteCollection.CopyOnWriteCollection.html +1 -1
  159. package/docs/html/classes/utilities_GeometryServiceError.GeometryServiceError.html +1 -1
  160. package/docs/html/classes/utilities_MapTransformCollection.MapTransformCollection.html +1 -1
  161. package/docs/html/classes/utilities_ObservableMap.ObservableMap.html +1 -1
  162. package/docs/html/classes/utilities_ObservableSet.ObservableSet.html +1 -1
  163. package/docs/html/classes/utilities_ReadOnlyCollection.ReadOnlyCollection.html +1 -1
  164. package/docs/html/classes/utilities_ReadOnlyMap.ReadOnlyMap.html +1 -1
  165. package/docs/html/classes/utilities_format_date.DateFormatter.html +1 -1
  166. package/docs/html/classes/utilities_format_number.NumberFormatter.html +1 -1
  167. package/docs/html/classes/utilities_format_time.TimeFormatter.html +1 -1
  168. package/docs/html/classes/utilities_log.ConsoleLogger.html +1 -1
  169. package/docs/html/classes/utilities_log.LoggerBase.html +1 -1
  170. package/docs/html/hierarchy.html +1 -1
  171. package/docs/html/interfaces/data_support_attachments.AttachmentEnabledLayer.html +7 -5
  172. package/docs/html/interfaces/json_AnnotationLayerJson.AnnotationLayerJson.html +1 -1
  173. package/docs/html/interfaces/json_BasemapJson.BasemapJson.html +1 -1
  174. package/docs/html/interfaces/json_BasemapLayerJson.BasemapLayerJsonBase.html +1 -1
  175. package/docs/html/interfaces/json_BingLayerJson.BingLayerJson.html +1 -1
  176. package/docs/html/interfaces/json_BuildingSceneLayerJson.BuildingSceneLayerJson.html +1 -1
  177. package/docs/html/interfaces/json_BuildingSceneSublayerJson.BuildingSceneSublayerJson.html +1 -1
  178. package/docs/html/interfaces/json_CSVLayerJson.CSVLayerJson.html +1 -1
  179. package/docs/html/interfaces/json_DomainJson.CodedValueDomainJson.html +1 -1
  180. package/docs/html/interfaces/json_DomainJson.DomainJsonBase.html +1 -1
  181. package/docs/html/interfaces/json_DomainJson.InheritedDomainJson.html +1 -1
  182. package/docs/html/interfaces/json_DomainJson.RangeDomainJson.html +1 -1
  183. package/docs/html/interfaces/json_FeatureLayerJson.FeatureLayerJson.html +1 -1
  184. package/docs/html/interfaces/json_GeoJSONLayerJson.GeoJSONLayerJson.html +1 -1
  185. package/docs/html/interfaces/json_GeoRSSLayerJson.GeoRSSLayerJson.html +1 -1
  186. package/docs/html/interfaces/json_GeometryJson.ExtentJson.html +1 -1
  187. package/docs/html/interfaces/json_GeometryJson.GeometryJsonBase.html +1 -1
  188. package/docs/html/interfaces/json_GeometryJson.MultipointJson.html +1 -1
  189. package/docs/html/interfaces/json_GeometryJson.PointJson.html +1 -1
  190. package/docs/html/interfaces/json_GeometryJson.PolygonJson.html +1 -1
  191. package/docs/html/interfaces/json_GeometryJson.PolylineJson.html +1 -1
  192. package/docs/html/interfaces/json_GroundJson.GroundJson.html +1 -1
  193. package/docs/html/interfaces/json_GroupLayerJson.GroupLayerJson.html +1 -1
  194. package/docs/html/interfaces/json_ImageServiceLayerJson.ImageServiceLayerJson.html +1 -1
  195. package/docs/html/interfaces/json_ImageServiceVectorLayerJson.ImageServiceVectorLayerJson.html +1 -1
  196. package/docs/html/interfaces/json_IntegratedMeshLayerJson.IntegratedMeshLayerJson.html +1 -1
  197. package/docs/html/interfaces/json_KMLLayerJson.KMLLayerJson.html +1 -1
  198. package/docs/html/interfaces/json_LayerDefinitionJson.DataSourceJsonBase.html +1 -1
  199. package/docs/html/interfaces/json_LayerDefinitionJson.JoinTableDataSourceJson.html +1 -1
  200. package/docs/html/interfaces/json_LayerDefinitionJson.QueryTableDataSourceJson.html +1 -1
  201. package/docs/html/interfaces/json_LayerDefinitionJson.RasterDataSourceJson.html +1 -1
  202. package/docs/html/interfaces/json_LayerDefinitionJson.TableDataSourceJson.html +1 -1
  203. package/docs/html/interfaces/json_LayerJson.BrightnessEffectFunctionJson.html +1 -1
  204. package/docs/html/interfaces/json_LayerJson.ContrastEffectFunctionJson.html +1 -1
  205. package/docs/html/interfaces/json_LayerJson.GrayscaleEffectFunctionJson.html +1 -1
  206. package/docs/html/interfaces/json_LayerJson.InvertEffectFunctionJson.html +1 -1
  207. package/docs/html/interfaces/json_LayerJson.LayerJsonBase.html +1 -1
  208. package/docs/html/interfaces/json_LayerJson.OpacityEffectFunctionJson.html +1 -1
  209. package/docs/html/interfaces/json_LayerJson.SaturateEffectFunctionJson.html +1 -1
  210. package/docs/html/interfaces/json_LayerJson.SepiaEffectFunctionJson.html +1 -1
  211. package/docs/html/interfaces/json_MapServiceLayerJson.MapServiceLayerJson.html +1 -1
  212. package/docs/html/interfaces/json_MediaLayerJson.MediaLayerJson.html +1 -1
  213. package/docs/html/interfaces/json_OpenStreetMapLayerJson.OpenStreetMapLayerJson.html +1 -1
  214. package/docs/html/interfaces/json_OperationalLayerJson.OperationalLayerJsonBase.html +1 -1
  215. package/docs/html/interfaces/json_PointCloudLayerJson.PointCloudLayerJson.html +1 -1
  216. package/docs/html/interfaces/json_PopupInfoJson.PopupElementJson.html +1 -1
  217. package/docs/html/interfaces/json_RasterDataElevationLayerJson.RasterDataElevationLayerJson.html +1 -1
  218. package/docs/html/interfaces/json_RendererJson.ClassBreaksRendererJson.html +1 -1
  219. package/docs/html/interfaces/json_RendererJson.ColorInfoJson.html +1 -1
  220. package/docs/html/interfaces/json_RendererJson.HeatmapRendererJson.html +1 -1
  221. package/docs/html/interfaces/json_RendererJson.PointCloudClassBreaksRendererJson.html +1 -1
  222. package/docs/html/interfaces/json_RendererJson.PointCloudRGBRendererJson.html +1 -1
  223. package/docs/html/interfaces/json_RendererJson.PointCloudRendererJsonBase.html +1 -1
  224. package/docs/html/interfaces/json_RendererJson.PointCloudStretchRendererJson.html +1 -1
  225. package/docs/html/interfaces/json_RendererJson.PointCloudUniqueValueRendererJson.html +1 -1
  226. package/docs/html/interfaces/json_RendererJson.PredominanceRendererJson.html +1 -1
  227. package/docs/html/interfaces/json_RendererJson.RendererJsonBase.html +1 -1
  228. package/docs/html/interfaces/json_RendererJson.RotationInfoJson.html +1 -1
  229. package/docs/html/interfaces/json_RendererJson.SimpleRendererJson.html +1 -1
  230. package/docs/html/interfaces/json_RendererJson.SizeInfoJson.html +1 -1
  231. package/docs/html/interfaces/json_RendererJson.TemporalRendererJson.html +1 -1
  232. package/docs/html/interfaces/json_RendererJson.TransparencyInfoJson.html +1 -1
  233. package/docs/html/interfaces/json_RendererJson.UniqueValueFromStyleRendererJson.html +1 -1
  234. package/docs/html/interfaces/json_RendererJson.UniqueValueRendererJson.html +1 -1
  235. package/docs/html/interfaces/json_RendererJson.VectorFieldRendererJson.html +1 -1
  236. package/docs/html/interfaces/json_RendererJson.VisualVariableJsonBase.html +1 -1
  237. package/docs/html/interfaces/json_SceneLayerJson.SceneLayerJson.html +1 -1
  238. package/docs/html/interfaces/json_StreamLayerJson.StreamLayerJson.html +1 -1
  239. package/docs/html/interfaces/json_SublayerJson.SublayerJson.html +1 -1
  240. package/docs/html/interfaces/json_SubtypeGroupLayerJson.SubtypeGroupLayerJson.html +1 -1
  241. package/docs/html/interfaces/json_SubtypeGroupLayerJson.SubtypeSubtypeGroupLayerJson.html +1 -1
  242. package/docs/html/interfaces/json_SubtypeSublayerJson.SubtypeSublayerJson.html +1 -1
  243. package/docs/html/interfaces/json_SymbolJson.CIMSymbolJson.html +1 -1
  244. package/docs/html/interfaces/json_SymbolJson.CIMSymbolReferenceJson.html +1 -1
  245. package/docs/html/interfaces/json_SymbolJson.ExtrudeSymbol3DLayerJson.html +1 -1
  246. package/docs/html/interfaces/json_SymbolJson.FillSymbol3DLayerJson.html +1 -1
  247. package/docs/html/interfaces/json_SymbolJson.IconSymbol3DLayerJson.html +1 -1
  248. package/docs/html/interfaces/json_SymbolJson.LabelSymbol3DJson.html +1 -1
  249. package/docs/html/interfaces/json_SymbolJson.LineSymbol3DJson.html +1 -1
  250. package/docs/html/interfaces/json_SymbolJson.LineSymbol3DLayerJson.html +1 -1
  251. package/docs/html/interfaces/json_SymbolJson.MeshSymbol3DJson.html +1 -1
  252. package/docs/html/interfaces/json_SymbolJson.ObjectSymbol3DLayerJson.html +1 -1
  253. package/docs/html/interfaces/json_SymbolJson.PathSymbol3DLayerJson.html +1 -1
  254. package/docs/html/interfaces/json_SymbolJson.PictureFillSymbolJson.html +1 -1
  255. package/docs/html/interfaces/json_SymbolJson.PictureMarkerSymbolJson.html +1 -1
  256. package/docs/html/interfaces/json_SymbolJson.PointSymbol3DJson.html +1 -1
  257. package/docs/html/interfaces/json_SymbolJson.PolygonSymbol3DJson.html +1 -1
  258. package/docs/html/interfaces/json_SymbolJson.SimpleFillSymbolJson.html +1 -1
  259. package/docs/html/interfaces/json_SymbolJson.SimpleLineSymbolJson.html +1 -1
  260. package/docs/html/interfaces/json_SymbolJson.SimpleMarkerSymbolJson.html +1 -1
  261. package/docs/html/interfaces/json_SymbolJson.SketchEdgesJson.html +1 -1
  262. package/docs/html/interfaces/json_SymbolJson.SolidEdgesJson.html +1 -1
  263. package/docs/html/interfaces/json_SymbolJson.Symbol3DJsonBase.html +1 -1
  264. package/docs/html/interfaces/json_SymbolJson.Symbol3DLayerJsonBase.html +1 -1
  265. package/docs/html/interfaces/json_SymbolJson.SymbolJsonBase.html +1 -1
  266. package/docs/html/interfaces/json_SymbolJson.TextSymbol3DLayerJson.html +1 -1
  267. package/docs/html/interfaces/json_SymbolJson.TextSymbolJson.html +1 -1
  268. package/docs/html/interfaces/json_TableJson.TableJson.html +1 -1
  269. package/docs/html/interfaces/json_TiledElevationServiceLayerJson.TiledElevationServiceLayerJson.html +1 -1
  270. package/docs/html/interfaces/json_TiledImageServiceLayerJson.TiledImageServiceLayerJson.html +1 -1
  271. package/docs/html/interfaces/json_TiledMapServiceLayerJson.TiledMapServiceLayerJson.html +1 -1
  272. package/docs/html/interfaces/json_VectorTileLayerJson.VectorTileLayerJson.html +1 -1
  273. package/docs/html/interfaces/json_WFSLayerJson.WFSLayerJson.html +1 -1
  274. package/docs/html/interfaces/json_WMSLayerJson.WMSLayerJson.html +1 -1
  275. package/docs/html/interfaces/json_WMSSublayerJson.WMSSublayerJson.html +1 -1
  276. package/docs/html/interfaces/json_WebMapJson.WebMapJson.html +1 -1
  277. package/docs/html/interfaces/json_WebMapJson.WebMapJsonBase.html +1 -1
  278. package/docs/html/interfaces/json_WebSceneJson.WebSceneJson.html +1 -1
  279. package/docs/html/interfaces/json_WebTileLayerJson.WebTileLayerJson.html +1 -1
  280. package/docs/html/interfaces/layer-preset_LayerPreset.LayerPresetProperties.html +1 -1
  281. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerExtensionCollection.html +1 -1
  282. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerExtensionProperties.html +1 -1
  283. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerProperties.html +1 -1
  284. package/docs/html/interfaces/mapping_BasemapExtension.BasemapExtensionProperties.html +1 -1
  285. package/docs/html/interfaces/mapping_BasemapExtension.BasemapProperties.html +1 -1
  286. package/docs/html/interfaces/mapping_Bookmark.BookmarkProperties.html +1 -1
  287. package/docs/html/interfaces/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtensionProperties.html +1 -1
  288. package/docs/html/interfaces/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtensionProperties.html +1 -1
  289. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtensionProperties.html +1 -1
  290. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSceneLayerProperties.html +1 -1
  291. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSublayerExtensionCollection.html +1 -1
  292. package/docs/html/interfaces/mapping_BuildingSublayerExtension.BuildingSublayerExtensionProperties.html +1 -1
  293. package/docs/html/interfaces/mapping_BuildingSublayerExtension.BuildingSublayerProperties.html +1 -1
  294. package/docs/html/interfaces/mapping_CSVLayerExtension.CSVLayerExtensionProperties.html +1 -1
  295. package/docs/html/interfaces/mapping_ElevationLayerExtension.ElevationLayerExtensionProperties.html +1 -1
  296. package/docs/html/interfaces/mapping_FeatureLayerExtension.FeatureLayerExtensionProperties.html +1 -1
  297. package/docs/html/interfaces/mapping_FeatureLayerExtension.FeatureLayerProperties.html +1 -1
  298. package/docs/html/interfaces/mapping_FeatureLayerExtensionBase.FeatureLayerBaseProperties.html +1 -1
  299. package/docs/html/interfaces/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBaseProperties.html +1 -1
  300. package/docs/html/interfaces/mapping_GeoJSONLayerExtension.GeoJSONLayerExtensionProperties.html +1 -1
  301. package/docs/html/interfaces/mapping_GeoRSSLayerExtension.GeoRSSLayerExtensionProperties.html +1 -1
  302. package/docs/html/interfaces/mapping_GraphicsLayerExtension.GraphicsLayerExtensionProperties.html +1 -1
  303. package/docs/html/interfaces/mapping_GroundExtension.GroundExtensionProperties.html +1 -1
  304. package/docs/html/interfaces/mapping_GroundExtension.GroundProperties.html +1 -1
  305. package/docs/html/interfaces/mapping_GroupLayerExtension.GroupLayerExtensionProperties.html +1 -1
  306. package/docs/html/interfaces/mapping_ImageryLayerExtension.ImageryLayerExtensionProperties.html +1 -1
  307. package/docs/html/interfaces/mapping_ImageryTileLayerExtension.ImageryTileLayerExtensionProperties.html +1 -1
  308. package/docs/html/interfaces/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtensionProperties.html +1 -1
  309. package/docs/html/interfaces/mapping_KMLLayerExtension.KMLLayerExtensionProperties.html +1 -1
  310. package/docs/html/interfaces/mapping_KMLSublayerExtension.KMLSublayerExtensionCollection.html +1 -1
  311. package/docs/html/interfaces/mapping_KMLSublayerExtension.KMLSublayerExtensionProperties.html +1 -1
  312. package/docs/html/interfaces/mapping_MapExtension.MapExtensionEvents.html +1 -1
  313. package/docs/html/interfaces/mapping_MapExtension.MapExtensionProperties.html +1 -1
  314. package/docs/html/interfaces/mapping_MapExtension.TableExtensionCollection.html +1 -1
  315. package/docs/html/interfaces/mapping_MapImageLayerExtension.MapImageLayerExtensionProperties.html +1 -1
  316. package/docs/html/interfaces/mapping_MapImageSublayerExtension.MapImageSublayerExtensionProperties.html +1 -1
  317. package/docs/html/interfaces/mapping_MapImageSublayerExtension.MapImageSublayerProperties.html +1 -1
  318. package/docs/html/interfaces/mapping_MapNotesLayerExtension.MapNotesLayerExtensionProperties.html +1 -1
  319. package/docs/html/interfaces/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionCollection.html +1 -1
  320. package/docs/html/interfaces/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionProperties.html +1 -1
  321. package/docs/html/interfaces/mapping_MediaLayerExtension.MediaLayerExtensionProperties.html +1 -1
  322. package/docs/html/interfaces/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtensionProperties.html +1 -1
  323. package/docs/html/interfaces/mapping_PointCloudLayerExtension.PointCloudLayerExtensionProperties.html +1 -1
  324. package/docs/html/interfaces/mapping_PointCloudLayerExtension.PointCloudLayerProperties.html +1 -1
  325. package/docs/html/interfaces/mapping_RouteLayerExtension.RouteLayerExtensionProperties.html +1 -1
  326. package/docs/html/interfaces/mapping_SceneLayerExtension.SceneLayerExtensionProperties.html +1 -1
  327. package/docs/html/interfaces/mapping_StreamLayerExtension.StreamLayerExtensionProperties.html +1 -1
  328. package/docs/html/interfaces/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtensionProperties.html +1 -1
  329. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerExtensionCollection.html +1 -1
  330. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerExtensionProperties.html +1 -1
  331. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerProperties.html +1 -1
  332. package/docs/html/interfaces/mapping_TileLayerExtension.TileLayerExtensionProperties.html +1 -1
  333. package/docs/html/interfaces/mapping_TileSublayerExtension.TileSublayerExtensionProperties.html +1 -1
  334. package/docs/html/interfaces/mapping_TileSublayerExtension.TileSublayerProperties.html +1 -1
  335. package/docs/html/interfaces/mapping_VectorTileLayerExtension.VectorTileLayerExtensionProperties.html +1 -1
  336. package/docs/html/interfaces/mapping_WFSLayerExtension.WFSLayerExtensionProperties.html +1 -1
  337. package/docs/html/interfaces/mapping_WMSLayerExtension.WMSLayerExtensionProperties.html +1 -1
  338. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerExtensionCollection.html +1 -1
  339. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerExtensionProperties.html +1 -1
  340. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerProperties.html +1 -1
  341. package/docs/html/interfaces/mapping_WMTSLayerExtension.WMTSLayerExtensionProperties.html +1 -1
  342. package/docs/html/interfaces/mapping_WebTileLayerExtension.WebTileLayerExtensionProperties.html +1 -1
  343. package/docs/html/interfaces/mapping__LayerExtension.LayerExtensionProperties.html +1 -1
  344. package/docs/html/interfaces/mapping__SublayerExtension.SublayerExtensionProperties.html +1 -1
  345. package/docs/html/interfaces/mapping__SublayerExtension.SublayerProperties.html +1 -1
  346. package/docs/html/interfaces/mapping_support__LayerExtensionCollection.LayerExtensionCollection.html +1 -1
  347. package/docs/html/interfaces/mapping_support__SublayerExtensionCollection.SublayerExtensionCollection.html +1 -1
  348. package/docs/html/interfaces/menus_Menu.MenuProperties.html +1 -1
  349. package/docs/html/interfaces/menus_MenuItem.MenuItemProperties.html +1 -1
  350. package/docs/html/interfaces/support_ArcGISRequestHelper.ArcGISRequestHelperResponse.html +1 -1
  351. package/docs/html/interfaces/support_InitializableBase.Initializable.html +1 -1
  352. package/docs/html/interfaces/support_InitializableBase.InitializableBaseEvents.html +1 -1
  353. package/docs/html/interfaces/support_InitializableBase.InitializableBaseProperties.html +1 -1
  354. package/docs/html/interfaces/support_InitializableCollectionProxy.InitializableCollection.html +1 -1
  355. package/docs/html/interfaces/support_Serializable.Serializable.html +1 -1
  356. package/docs/html/interfaces/support_Settings.SettingsEvents.html +1 -1
  357. package/docs/html/interfaces/support__restApiJson.RestApiMapServiceTimeInfo.html +1 -1
  358. package/docs/html/interfaces/support__restApiJson.RestApiServiceTimeInfo.html +1 -1
  359. package/docs/html/interfaces/support_esri.LayerWithSublayers.html +1 -1
  360. package/docs/html/interfaces/support_esri.SublayerLike.html +1 -1
  361. package/docs/html/interfaces/support_observableUtils.WatchEachOptions.html +1 -1
  362. package/docs/html/interfaces/support_observableUtils.WatchOptions.html +1 -1
  363. package/docs/html/interfaces/tasks_geocoding_ArcGISGeocoder.ArcGISGeocoderProperties.html +1 -1
  364. package/docs/html/interfaces/tasks_geocoding_Geocoder.GeocoderCapabilities.html +1 -1
  365. package/docs/html/interfaces/tasks_geocoding_Geocoder.GeocoderProperties.html +1 -1
  366. package/docs/html/interfaces/tasks_query_ArcGISRelationship.ArcGISRelationshipProperties.html +1 -1
  367. package/docs/html/interfaces/tasks_query_QueryBasedRelationship.QueryBasedRelationshipProperties.html +1 -1
  368. package/docs/html/interfaces/utilities_ObservableMap.MapAfterItemEvent.html +1 -1
  369. package/docs/html/interfaces/utilities_ObservableSet.SetAfterItemEvent.html +1 -1
  370. package/docs/html/interfaces/utilities__layers.LayerWithLegendEnabledProperty.html +1 -1
  371. package/docs/html/interfaces/utilities__layers.TimeAwareLayer.html +1 -1
  372. package/docs/html/interfaces/utilities_collection.AfterItemChangeEvent.html +1 -1
  373. package/docs/html/interfaces/utilities_format_FormatSettings.FormatSettings.html +1 -1
  374. package/docs/html/interfaces/utilities_format_date.DateFormatterProperties.html +1 -1
  375. package/docs/html/interfaces/utilities_format_date.DateSettings.html +1 -1
  376. package/docs/html/interfaces/utilities_format_number.NumberFormatterProperties.html +1 -1
  377. package/docs/html/interfaces/utilities_format_number.NumberSettings.html +1 -1
  378. package/docs/html/interfaces/utilities_format_string.FormatOptions.html +1 -1
  379. package/docs/html/interfaces/utilities_format_time.TimeFormatterProperties.html +1 -1
  380. package/docs/html/interfaces/utilities_format_time.TimeSettings.html +1 -1
  381. package/docs/html/interfaces/utilities_log.LogMessageOptions.html +1 -1
  382. package/docs/html/interfaces/utilities_log.LogMessageResourceOptions.html +1 -1
  383. package/docs/html/variables/version.version.html +1 -1
  384. package/package.json +2 -2
  385. package/portal/DrawingInfo.js +1 -1
  386. package/version.d.ts +1 -1
  387. package/version.js +1 -1
@@ -133,7 +133,7 @@ export declare class TableSchema extends Schema {
133
133
  /**
134
134
  * Maps schema properties to equivalent properties on the table.
135
135
  */
136
- protected readonly _tableBindings: Map<keyof this, "listMode" | "title" | "url" | "id" | "gdbVersion" | "destroy" | "@eventTypes" | "set" | "emit" | "hasEventListener" | "on" | "addHandles" | "hasHandles" | "removeHandles" | "watch" | "clone" | "fields" | "outFields" | "hasM" | "hasZ" | "popupTemplate" | "customParameters" | "mode" | "refreshInterval" | "blendMode" | "effect" | "maxScale" | "minScale" | "opacity" | "visibilityTimeExtent" | "labelingInfo" | "renderer" | "spatialReference" | "elevationInfo" | "visible" | "labelsVisible" | "popupEnabled" | "floorInfo" | "source" | "sourceJSON" | "refresh" | "save" | "saveAs" | "templates" | "load" | "objectIdField" | "geometryType" | "types" | "orderBy" | "definitionExpression" | "timeInfo" | "featureReduction" | "globalIdField" | "createPopupTemplate" | "createQuery" | "getField" | "getFieldDomain" | "queryExtent" | "queryFeatureCount" | "queryFeatures" | "queryObjectIds" | "getAtOrigin" | "originOf" | "revertAllToOrigin" | "revertToOrigin" | "isFulfilled" | "isRejected" | "isResolved" | "when" | "cancelLoad" | "fullExtent" | "parent" | "persistenceEnabled" | "createLayerView" | "fetchAttributionData" | "legendEnabled" | "apiKey" | "portalItem" | "copyright" | "layerId" | "queryAttributeBins" | "timeExtent" | "timeOffset" | "useViewTime" | "dateFieldsTimeZone" | "displayField" | "historicMoment" | "returnM" | "returnZ" | "displayFilterEnabled" | "displayFilterInfo" | "formTemplate" | "attributeTableTemplate" | "screenSizePerspectiveEnabled" | "trackInfo" | "featureEffect" | "typeIdField" | "editingEnabled" | "addAttachment" | "applyEdits" | "deleteAttachments" | "queryAttachments" | "queryRelatedFeatures" | "queryRelatedFeaturesCount" | "updateAttachment" | "queryTopFeatures" | "charts" | "dynamicDataSource" | "fieldConfigurations" | "createFieldConfigurations" | "getFeatureTitle" | "getFeatureType" | "getFieldAlias" | "getFieldConfiguration" | "queryTopFeatureCount" | "queryTopFeaturesExtent" | "queryTopObjectIds">;
136
+ protected readonly _tableBindings: Map<keyof this, "listMode" | "title" | "url" | "id" | "gdbVersion" | "destroy" | "@eventTypes" | "set" | "emit" | "hasEventListener" | "on" | "addHandles" | "hasHandles" | "removeHandles" | "watch" | "clone" | "fields" | "outFields" | "hasM" | "hasZ" | "popupTemplate" | "customParameters" | "mode" | "refreshInterval" | "blendMode" | "effect" | "maxScale" | "minScale" | "opacity" | "visibilityTimeExtent" | "labelingInfo" | "renderer" | "spatialReference" | "elevationInfo" | "visible" | "labelsVisible" | "popupEnabled" | "floorInfo" | "source" | "sourceJSON" | "refresh" | "save" | "saveAs" | "templates" | "load" | "objectIdField" | "geometryType" | "types" | "orderBy" | "definitionExpression" | "timeInfo" | "featureReduction" | "globalIdField" | "createPopupTemplate" | "createQuery" | "getField" | "getFieldDomain" | "queryExtent" | "queryFeatureCount" | "queryFeatures" | "queryObjectIds" | "getAtOrigin" | "originOf" | "revertAllToOrigin" | "revertToOrigin" | "isFulfilled" | "isRejected" | "isResolved" | "when" | "cancelLoad" | "fullExtent" | "parent" | "persistenceEnabled" | "createLayerView" | "fetchAttributionData" | "legendEnabled" | "apiKey" | "portalItem" | "copyright" | "layerId" | "queryAttributeBins" | "timeExtent" | "timeOffset" | "useViewTime" | "dateFieldsTimeZone" | "displayField" | "historicMoment" | "returnM" | "returnZ" | "subtypeField" | "subtypes" | "displayFilterEnabled" | "displayFilterInfo" | "reload" | "formTemplate" | "attributeTableTemplate" | "screenSizePerspectiveEnabled" | "trackInfo" | "featureEffect" | "typeIdField" | "editingEnabled" | "addAttachment" | "applyEdits" | "deleteAttachments" | "queryAttachments" | "queryRelatedFeatures" | "queryRelatedFeaturesCount" | "updateAttachment" | "queryTopFeatures" | "charts" | "dynamicDataSource" | "fieldConfigurations" | "symbolLayerDrawing" | "uniqueIdFields" | "createFieldConfigurations" | "getFeatureTitle" | "getFeatureType" | "getFieldAlias" | "getFieldConfiguration" | "queryTopFeatureCount" | "queryTopFeaturesExtent" | "queryTopObjectIds" | "dataSeriesInfos">;
137
137
  /**
138
138
  * The collection of fields.
139
139
  */
package/data/convert.js CHANGED
@@ -1 +1 @@
1
- import e from"@arcgis/core/Color.js";import t from"@arcgis/core/Graphic.js";import r from"@arcgis/core/geometry/Point";import o from"@arcgis/core/geometry/Polygon.js";import n from"@arcgis/core/geometry/Polyline.js";import a from"@arcgis/core/geometry/SpatialReference";import i from"@arcgis/core/layers/FeatureLayer.js";import s from"@arcgis/core/layers/GroupLayer.js";import c from"@arcgis/core/layers/support/Field.js";import l from"@arcgis/core/renderers/SimpleRenderer.js";import m from"@arcgis/core/renderers/UniqueValueRenderer.js";import u from"@arcgis/core/renderers/support/UniqueValueInfo.js";import f from"@arcgis/core/symbols/MeshSymbol3D.js";import p from"@arcgis/core/symbols/PictureMarkerSymbol.js";import y from"@arcgis/core/symbols/SimpleFillSymbol.js";import d from"@arcgis/core/symbols/SimpleLineSymbol.js";import g from"@arcgis/core/symbols/SimpleMarkerSymbol.js";import w from"dxf-parser";import{geometryTypeToJson as h}from"../json/GeometryJson.js";import{translate as F}from"../locale/language.js";import{INVARIANT as S}from"../locale.js";import{FeatureCollectionLayerExtension as T}from"../mapping/FeatureCollectionLayerExtension.js";import{GroupLayerExtension as N}from"../mapping/GroupLayerExtension.js";import{MapImageLayerExtension as O}from"../mapping/MapImageLayerExtension.js";import{CaseInsensitiveObservableMap as x}from"../utilities/CaseInsensitiveObservableMap.js";import{Time as b}from"../utilities/Time.js";import{checkArg as D,assertNever as M}from"../utilities/checkArg.js";import{isPoint as E,isMultipoint as R,isPolyline as A,isPolygon as I,isExtent as _}from"../utilities/esri.js";import{parse as G,format as L,DEFAULT_PARSING_FORMATS as C,INVALID_DATE as v}from"../utilities/format/date.js";import{DateFormat as P,NumberFormat as j,TimeFormat as U}from"../utilities/format/formats.js";import{parse as $,format as B}from"../utilities/format/number.js";import{parse as H,format as k,DEFAULT_PARSING_FORMATS as z}from"../utilities/format/time.js";import{project as J,esriToWKT as X,wktToEsri as W,esriWkidToWkt as q,esriWktToWkid as Y,esriToGeoJSON as Z,geoJSONToEsri as K}from"../utilities/geometry.js";import{getLogger as V}from"../utilities/log.js";import{isNumeric as Q}from"../utilities/number.js";import{delay as ee}from"../utilities/promise.js";import{caseInsensitiveEquals as te}from"../utilities/string.js";import{Feature as re}from"./Feature.js";import{FeatureSet as oe}from"./FeatureSet.js";import{DxfEntityProcessor as ne}from"./support/_dxfConverters.js";import{createGpxDocument as ae,serializeGpxDocument as ie,buildGpxTrack as se,buildGpxTrackPoint as ce,buildGpxWaypoint as le,getGpxExtensions as me,getGpxTrackDescription as ue,getGpxTrackName as fe,getGpxTrackTime as pe,getGpxTrackId as ye}from"./support/_gpxExport.js";import{addAndPopulateFidField as de}from"./support/_shapefileConverter.js";const ge=["=","-","+","@"],we='"',he="\r\n",Fe="\n",Se=[...C.map(Ve),"M/d/yy"],Te=[...z.map(et).map((e=>e.replace("AM/PM","tt")))],Ne=10,Oe=/(\w+)_(point|multipoint|polyline|polygon)z?/;var xe;function be(){return V("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(xe||(xe={}));export const FIELD_NAME_REGEX=/[^a-zA-Z\d_]/g;export var GeometryFormat;!function(e){e.NONE="NONE",e.WKT="WKT",e.XY="XY",e.XYZ="XYZ",e.LAT_LON="LAT_LONG",e.GEO_JSON="GEO_JSON",e.ARCGIS_JSON="ARCGIS_JSON"}(GeometryFormat||(GeometryFormat={}));export const geometryTypeHeaders={[GeometryFormat.XYZ]:[["x","y","z"]],[GeometryFormat.XY]:[["x","y"]],[GeometryFormat.LAT_LON]:[["latitude","longitude"],["lat","lon"],["lat","long"]],[GeometryFormat.ARCGIS_JSON]:[["geometry"]],[GeometryFormat.GEO_JSON]:[["geometry"]],[GeometryFormat.WKT]:[["geometry"]]};const De=[[GeometryFormat.ARCGIS_JSON,He],[GeometryFormat.GEO_JSON,ke],[GeometryFormat.WKT,ze]],Me=new Map(De);export async function uploadDataToFeatureSet(e){const t=await async function(e){const{data:t,includeHeaderRow:o,geometryFormat:n,geometryFields:a,locale:i,numberFormat:s,inSpatialReference:c}=e,l=o?t.slice(1):t;if(n===GeometryFormat.NONE)return{columnIndices:[]};const m=e=>We(e,i,s),u=(e,t)=>{const o=t===GeometryFormat.XYZ,n=t===GeometryFormat.LAT_LON;return{columnIndices:e,geometries:l.map((t=>{if(t.length>=Math.max(...e)&&Q(t[e[0]]?.raw,i)&&Q(t[e[1]]?.raw,i)&&(!o||Q(t[e[2]]?.raw,i)))return new r({x:m(n?t[e[1]].raw:t[e[0]].raw),y:m(n?t[e[0]].raw:t[e[1]].raw),z:o?m(t[e[2]].raw):0,spatialReference:c})}))}},f=async(e,t)=>({columnIndices:[e],geometries:await Promise.all(l.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),c)})))}),p=async(e,t)=>{switch(t){case GeometryFormat.NONE:return{columnIndices:[0]};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return u(e,t);case GeometryFormat.ARCGIS_JSON:return f(e[0],He);case GeometryFormat.GEO_JSON:return f(e[0],ke);case GeometryFormat.WKT:return f(e[0],ze);default:return M(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=Je(o?t[0]:t[0].map(((e,t)=>({raw:t.toString()}))),n,o?a:a.map((e=>""+(parseInt(e.match(/\d+/g)[0])-1))));if(o&&void 0===e)throw new Error(`Error parsing file data: Expected geometry columns ${geometryTypeHeaders[n][0].join(",")} are missing for GeometryType.${n}`);return p(e??[0],n)}const[y,d]=await qe(t,c,o);if(y===GeometryFormat.NONE)return{columnIndices:[]};return d.length>1?u(d,y):f(d[0],Me.get(y))}(e),o=function(e,t){const{data:r,displayField:o,includeHeaderRow:n,inSpatialReference:a,outSpatialReference:i,generatePrimaryKey:s}=e,c={fields:[]},l=e=>!(!t.columnIndices||0===t.columnIndices.length)&&t.columnIndices.includes(e);let{primaryKeyField:m}=e,u=0;for(let t=0;t<r[0].length;t++){if(l(t))continue;const o=Ze(e,t,!s&&!m&&!c.fields.find((e=>"esriFieldTypeOID"===e.type)));let a=r[0][t]?.raw?.toString(),i=a?.replace(FIELD_NAME_REGEX,"_");n&&i||(i="field"+ ++u,a=F("gcx.api.data.convert.import-field-alias",u)),c.fields.push({alias:a,name:i,type:o}),"esriFieldTypeOID"===o&&(m=i)}if(c.spatialReference=i??t.geometries?.[0]?.spatialReference??a,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),r=e[0];c.geometryType=e.every((e=>e===r))?h(r):void 0}if(!c.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=c.fields.length+1,t=!!c.fields.find((e=>"objectid"===e.name.toLowerCase()));m=t?`OBJECTID_${e}`:"OBJECTID",c.fields.push({name:m,alias:m,type:"esriFieldTypeOID"})}return c.displayField=o??c.fields.find((e=>!te(e.name,m)&&"esriFieldTypeString"===e.type))?.name??c.fields.find((e=>!te(e.name,m)))?.name??m,c.primaryKeyField=m,c}(e,t),n=await async function(e,t,r){const{data:o,includeHeaderRow:n,outFields:a,escapeFormulaChars:i,locale:s,numberFormat:c,dateFormat:l,timeFormat:m}=e,{spatialReference:u}=r,f=[],p=n?o.slice(1):o,y=(e,r)=>!t.columnIndices||0===t.columnIndices.length||!t.columnIndices.includes(r);return await Promise.all(p.map((async(e,o)=>{const n=new re;for(let t=0;t<r.fields.length;t++){const u=r.fields[t],f=e.filter(y);if(a.includes("*")||a.filter((e=>te(e,u.name))).length>0){let e=await Ke(f[t]?.raw,u,{escapeFormulaChars:i,dateFormat:l,numberFormat:c,timeFormat:m,locale:s});"esriFieldTypeOID"===u.type&&null===e&&(e=o),n.attributes.set(u.name,e)}}t.geometries&&(n.geometry=await Le(t.geometries[o],u)),f.push(n)}))),f}(e,t,o);return new oe({features:n,schema:o})}export async function toCsv(e,t){D("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:P.ROUND_TRIP,timeFormat:U.ROUND_TRIP,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:a.WGS84,includeHeaderRow:!0,outFields:_e(e.source),rowDelimiter:navigator.platform?.startsWith("Win")?he:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:i,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=Ae(r,o),f=Ie(r,c,e.schema,!0),p=Ie(r,c,e.schema,!1);if(i){const e=[];for(const t of u)e.push(Ce(t,o));for(const t of f)e.push(Ce(t,o));for(const t of p)e.push(Ce(t,o));const t=e.join(s)+l;m.push(t)}await Promise.all(r.map((async e=>{const t=[],r=(t,r)=>{const o=Pe(e,t,r),n=e.schema.findFieldByName(t)?.type;return Ce(ve(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await Ge(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":ve(e,t))));return r.map((e=>""===e?"":Ce(e,t)))}(e.geometry,o)),t.push(...f.map((e=>r(e,o)))),t.push(...p.map((e=>r(e,o))));const n=`${t.join(s)}${l}`;m.push(n)})));return new Blob(m,{type:"text/plain",endings:"\n"===l||l===he?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(D("csvData",e).isNotMissing(),e instanceof Blob){const t=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsText(e)}));r=await t}else r=e;const o=Re(t),n=o.rowDelimiter||function(e){let t=Fe;return Be(e,he,((r,o)=>(0===r&&o===e.length||(t=he),!1))),t}(r),a=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(Be(e,t,((t,r)=>(r!==e.length||t!==r)&&(n.push(e.substring(t,r)),n.length<3))),0===n.length)return o;let a=[{delimiter:",",rowsDelimiterOccurrences:[],rowsNumberAdjacentOccurrences:[]},{delimiter:";",rowsDelimiterOccurrences:[]},{delimiter:"|",rowsDelimiterOccurrences:[]},{delimiter:"\t",rowsDelimiterOccurrences:[]},{delimiter:" ",rowsDelimiterOccurrences:[]}].filter((e=>n[0].includes(e.delimiter)));if(0===a.length)return o;for(const e of n)for(const t of a){let o=0,n=0;Be(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);Q(t,r)&&Q(o,r)&&n++}return!0})),t.rowsDelimiterOccurrences.push(o),","===t.delimiter&&t.rowsNumberAdjacentOccurrences.push(n)}if(a=a.filter((e=>e.rowsDelimiterOccurrences.every((t=>e.rowsDelimiterOccurrences[0]===t)))).sort(((e,t)=>t.rowsDelimiterOccurrences[0]-e.rowsDelimiterOccurrences[0])),a.length>1&&","===a[0].delimiter&&null!=r&&r!==S){const e=a[0];if(","===e?.delimiter&&","===Intl.NumberFormat(r).formatToParts(1.1).find((e=>"decimal"===e.type))?.value)for(let t=0;t<e.rowsDelimiterOccurrences.length;t++)if(e.rowsDelimiterOccurrences[t]<=e.rowsNumberAdjacentOccurrences[t]){a=a.filter((e=>","!==e.delimiter));break}}if(0===a.length)return o;return a[0].delimiter}(r,n,o.locale),i=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return Be(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:$e(a,t,o.length)}),!0})),o};if(Be(e,t,((t,r)=>{const a=e.substring(t,r);return a.length>0&&o.push(n(a,o.length)),!0})),o.length){const e=o[0].length;o.forEach(((t,r)=>{if(t.length!==e)throw new Error(`Detected invalid CSV: Row ${r} does not have expected number of columns: ${e}`)}))}return o}(r,n,a);let{geometryFormat:s,geometryFields:c}=o;if(!s){const[e,t]=await qe(i,o.inSpatialReference,o.includeHeaderRow);s=e,c=t.map((e=>o.includeHeaderRow?i[0][e]?.raw??F("gcx.api.data.convert.import-field-alias",(e+1).toString()):F("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:i,...o,geometryFormat:s,geometryFields:c}}export async function csvToFeatureSet(e,t){const r=Re(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toGpx(e){D("featureSet",e).isNotMissing();const t=Array.from(e),r=ae(),o=r.documentElement,n=new Set;for(const e of t){if(!e.geometry)continue;const t=await Le(e.geometry,a.WGS84),i={name:fe(e),desc:ue(e),time:pe(e),extensions:me(r,e),id:ye(e)};if(E(t))o.appendChild(le(r,t.y,t.x,t.hasZ?t.z:void 0,i));else if(A(t))for(const e of t.paths){if(e.length<2)continue;const n=e.map((([e,o,n])=>ce(r,o,e,t.hasZ?n:void 0)));o.appendChild(se(r,n,i))}else n.add(t.type)}if(n.size>0){const e=Array.from(n).join(", ");be().warn(`One or more features with unsupported geometry types (${e}) were ignored during GPX conversion. GPX format only supports points and polylines.`)}const i=ie(r);return new Blob([i],{type:"application/gpx+xml"})}export async function toXLSX(e,t){D("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:_e(e.source),outSpatialReference:a.WGS84,dateFormat:P.DEFAULT,timeFormat:U.DEFAULT,numberFormat:j.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:i,dateFormat:s,timeFormat:c,numberFormat:l}=o,m=Ae(r,o),u=Ie(r,n,e.schema,!0),f=Ie(r,n,e.schema,!1),p=await import("xlsx"),y=p.utils.sheet_new();let d=!1;if(i){const t=m.concat(u).concat(function(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>te(t.name,e)))?.alias??e))}(f,e.source));d=!0,p.utils.sheet_add_aoa(y,[t],{cellDates:!0})}await Promise.all(r.map((async e=>{const t=[],r=new Set,n=new Set;t.push(...await Ge(e.geometry,o));for(const r of u){const n=rt(e.attributes.get(r),o);t.push(n)}for(const a of f){const i=Pe(e,a,o);if(i instanceof b){const o=e.schema.findFieldByName(a);"time-only"===o?.type&&r.add(t.length)}else if(i instanceof Date){const r=e.schema.findFieldByName(a);"date-only"===r?.type&&n.add(t.length)}const s=rt(i,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void be().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`);p.utils.sheet_add_aoa(y,[t],{cellDates:!0,origin:d?-1:void 0}),d=!0;const a=p.utils.decode_range(y["!ref"]);for(let e=a.s.c;e<=a.e.c;e++){const t=y[p.utils.encode_cell({r:a.e.r,c:e})];"d"===t.t?r.has(e)?t.z=et(c??U.ROUND_TRIP):n.has(e)?t.z=Qe(s??P.ROUND_TRIP):t.z=Ve(s??P.ROUND_TRIP):"n"===t.t&&(t.z=tt(l))}})));const g={SheetNames:[],Sheets:{}};g.SheetNames.push(o.sheetName),g.Sheets[o.sheetName]=y;const w=p.write(g,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),h=new Uint8Array(w.length);for(let e=0;e<w.length;e++)h[e]=w.charCodeAt(e);return new Blob([h.buffer],{type:"text/plain"})}export async function xlsxToUploadData(e,t){D("xlsxData",e).isNotMissing();const r=function(e){const t={includeHeaderRow:!0,inSpatialReference:a.WGS84,...Ee(e)};return{...t,...e}}(t),o=await async function(e,t){const r=await import("xlsx"),o=new Promise(((o,n)=>{const a=new FileReader;a.onload=()=>{const e=new Uint8Array(a.result);let n="";for(const t of e)n+=String.fromCharCode(t);const i=r.read(n,{type:"binary",cellDates:!0}),s=t.sheetName||i.SheetNames[0],c=i.Sheets[s];o(c)},a.onerror=()=>{n(a.error)},a.readAsArrayBuffer(e)})),n=await o,a=r.utils.decode_range(n["!ref"]),i=[];for(let e=a.s.r;e<=a.e.r;e++){const t=[];for(let o=a.s.c;o<=a.e.c;o++){const a=n[`${r.utils.encode_cell({r:e,c:o})}`];"d"===a?.t&&a.v instanceof Date&&(a.v=new Date(a.v.getTime()+6e4*a.v.getTimezoneOffset())),t.push(a?{raw:a.v,formatted:"s"===a.t?void 0:a.w}:{raw:""})}i.push(t)}return i}(e,r);let{geometryFormat:n,geometryFields:i}=r;if(!n){const[e,t]=await qe(o,r.inSpatialReference,r.includeHeaderRow);n=e,i=t.map((e=>r.includeHeaderRow?o[0][e]?.raw.toString()??F("gcx.api.data.convert.import-field-alias",(e+1).toString()):F("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:o,...r,geometryFormat:n,geometryFields:i}}export async function xlsxToFeatureSet(e,t){D("xlsxData",e).isNotMissing();return uploadDataToFeatureSet(await xlsxToUploadData(e,t))}export function kmlHexToEsriColor(t){return e.fromHex(`#${t.match(/.{2}/g).reverse().join("")}`)}export function parseKMLCoordinates(e){return e.trim().split(/\s+/).map((e=>{const[t,r,o]=e.split(",").map(Number);return{x:t,y:r,z:o}}))}export function parseKMLSymbol(t,r,o){if(t){const r=t.querySelector("IconStyle > Icon > href")?.textContent;if(r)return new p({url:r,width:32,height:32});const o=t.querySelector("PolyStyle");if(o){const t=o.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]);return new y({color:r,outline:{color:[0,0,0,.5],width:1}})}const n=t.querySelector("LineStyle");if(n){const t=n.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]),o=parseFloat(n.querySelector("width")?.textContent||"1");return new d({color:r,width:o})}}return getDefaultSymbol(o,"polygon"===r?"polygon":"point"===r?"point":"polyline")}export async function toShapefile(e,t){D("featureSet",e).isNotMissing();const[{default:r},o]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),n=Array.from(e),i={...{useFormattedValues:!1,outFields:_e(e.source),fileName:e.title||"export"},...t},{outFields:s,outSpatialReference:c,fileName:l}=i,m=e=>e.geometry.hasZ||e.geometry.hasM,u=new Map,f=n.filter((e=>E(e.geometry)));u.set("POINTZ",f.filter(m)),u.set("POINT",f.filter((e=>!m(e))));const p=n.filter((e=>R(e.geometry)));u.set("MULTIPOINTZ",p.filter(m)),u.set("MULTIPOINT",p.filter((e=>!m(e))));const y=n.filter((e=>A(e.geometry)));u.set("POLYLINEZ",y.filter(m)),u.set("POLYLINE",y.filter((e=>!m(e))));const d=n.filter((e=>I(e.geometry)||_(e.geometry)));u.set("POLYGONZ",d.filter(m)),u.set("POLYGON",d.filter((e=>!m(e))));const g=Ie(n,s,e.schema,!0);let w=Ie(n,s,e.schema,!1);w=g.concat(w);const h=new r,F=Array.from(u.keys()).filter((e=>u.get(e).length>0));await Promise.all(F.map((async t=>{const r=u.get(t),n=await Promise.all(r.map((e=>Le(e.geometry,c)))),s=await async function(e){const{wkid:t,wkt:r}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===t&&e.spatialReference.wkt===r)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return r??await q(t??a.WGS84.wkid)}(n),m=i.useFormattedValues?Object.assign({},...w.map((e=>({[e]:xe.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>je(e,a)))){n[a]=xe.STRING;continue}const t=r?r.fields.find((e=>te(e.name,a))):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":case"big-integer":n[a]=xe.NUMBER;break;case"date":case"timestamp-offset":n[a]=o?xe.NUMBER:xe.DATE;break;default:n[a]=xe.STRING}continue}const i=(e,t)=>e.attributes.get(t)??e.presentableAttributes.get(t);e.every((e=>i(e,a)instanceof Date||void 0===i(e,a)))&&e.some((e=>i(e,a)instanceof Date))?n[a]=o?xe.NUMBER:xe.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=xe.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=xe.BOOLEAN:n[a]=xe.STRING}return n}(r,w,e.schema,"timestamp"===i.dateFormat),f=function(e){return e.map((e=>{if(E(e)){const{x:t,y:r,z:o,m:n}=e,a=[t,r];return e.hasZ&&a.push(o),e.hasM&&a.push(n),ot(a,e)}if(R(e))return nt(e.points,e);if(A(e))return at(e.paths,e);if(I(e))return at(e.rings,e);if(_(e)){const t=[e.xmin,e.ymax];return[[t,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],t]]}throw new Error("Unsupported geometry type.")}))}(n),p=function(e,t,r,o){const n=function(e){const t=new Set,r=new Map;for(const o of e){let e=o.replaceAll(".","_");e.length>Ne&&(e=e.substring(0,Ne));let n=1;for(;t.has(e);){const t=`_${n}`,r=Ne-t.length;e=`${e.substring(0,r)}${t}`,n++}t.add(e),r.set(o,e)}return r}(t),a=[];for(const i of e){const e={};for(const a of t){let t=Pe(i,a,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=it(t,r[a],{...o,isDateOnly:"date-only"===i.schema.findFieldByName(a)?.type})}e[n.get(a)]=t}a.push(e)}return a}(r,w,m,i);o.write(p,t,f,((e,r)=>{const o=F.length>1?`${l}_${t.toLowerCase()}`:l;h.file(`${o}.shp`,r.shp.buffer,{binary:!0}),h.file(`${o}.shx`,r.shx.buffer,{binary:!0}),h.file(`${o}.dbf`,r.dbf.buffer,{binary:!0}),h.file(`${o}.prj`,s)}))})));const S=await h.generateAsync({type:"uint8array"});return new Blob([S.buffer],{type:"text/plain"})}export async function kmlToLayerExtensions(e){D("blob",e).isNotMissing();const a=await e.text(),l=(new DOMParser).parseFromString(a,"application/xml"),m=function(e,a,u=!1){const f={};l.querySelectorAll("Style").forEach((e=>{f[`#${e.id}`]=e}));const p=e.querySelector(":scope > name")?.textContent??"Unnamed Container",y=new Map;e.querySelectorAll(":scope > Placemark").forEach(((e,i)=>{const s=e.querySelector("name")?.textContent??"",c=e.querySelector("description")?.textContent??"",l=function(e){const t=e.querySelector("Point > coordinates"),a=e.querySelector("LineString > coordinates"),i=e.querySelector("Polygon");if(t?.textContent){const[e]=parseKMLCoordinates(t.textContent.replace(/ /g,""));return new r(e)}if(a?.textContent)return new n({paths:[parseKMLCoordinates(a.textContent).map((({x:e,y:t})=>[e,t]))]});if(i?.textContent){const e=i.querySelector("outerBoundaryIs > LinearRing > coordinates");if(e?.textContent){const t=[parseKMLCoordinates(e.textContent).map((({x:e,y:t})=>[e,t]))];return new o({rings:t})}}return}(e);if(l?.type){const r=e.querySelector("styleUrl")?.textContent,o=parseKMLSymbol(r?f[r]:e.querySelector("Style"),l.type,a);y.has(l.type)||y.set(l.type,{graphics:[],symbols:[]});let n=function(e,t){for(let r=0;r<e.length;r++)if(st(e[r],t))return r;return-1}(y.get(l.type).symbols,o);-1===n&&(y.get(l.type).symbols.push(o),n=y.get(l.type).symbols.length-1),y.get(l.type).graphics.push(new t({geometry:l,attributes:{name:s,description:c,SymbolID:n,OBJECTID:p+i}}))}}));const d=e.querySelectorAll(":scope > Folder, :scope > Document");if(u||1!==y.size||0!==d.length){const e=new N({layer:new s({title:p})});return y.forEach(((t,r)=>{const o=new i({displayField:"name",title:`${r.slice(0,1).toUpperCase()+r.slice(1)}s`,source:t.graphics,renderer:ct(t.symbols),fields:[new c({name:"OBJECTID",type:"oid",alias:"OBJECTID"}),new c({name:"SymbolID",type:"integer",alias:"SymbolID",editable:!1}),new c({name:"name",type:"string",alias:"name"}),new c({name:"description",type:"string",alias:"description",defaultValue:""})]}),n=new T({layer:o});e.layerExtensions.add(n)})),d.forEach(((t,r)=>{const o=m(t,r);e.layerExtensions.add(o)})),e}{const e=[...y.values()][0],t=new i({displayField:"name",title:p,source:e.graphics,renderer:ct(e.symbols),fields:[new c({name:"OBJECTID",type:"oid",alias:"OBJECTID"}),new c({name:"SymbolID",type:"integer",alias:"SymbolID",editable:!1}),new c({name:"name",type:"string",alias:"name"}),new c({name:"description",type:"string",alias:"description",defaultValue:""})]});return new T({layer:t})}},u=[];return l.querySelectorAll("kml > Document, kml > Folder").forEach(((e,t)=>{const r=m(e,t,!0);r.layerExtensions.length&&u.push(r)})),u}export async function lpkxToLayerExtensions(e,t){const{displayServiceUrl:r,geoProcessedLpkxData:o}=t;D("options.lpkxBlob",e).isNotMissing(),D("options.displayServiceUrl",r).isNotMissing();const{createLpkxLayer:n}=await import("./support/_lpkxConverter.js"),a=await n(o,e,r);return[new O({layer:a})]}export async function dxfToLayerExtensions(e,t,r){const{inputSpatialReference:o,outputSpatialReference:n}=t;D("options.dxfBlob",e).isNotMissing(),D("options.inputSpatialReference",o).isNotMissing(),D("options.outputSpatialReference",n).isNotMissing();const a=new ne(o,n,r),i=a.getContext(),c=await e.text(),l=new w;await ee();try{const e=l.parseSync(c);if(!e)throw new Error("DXF parsing failed: parser returned null");i.dxf=e}catch(e){throw e instanceof Error?e:new Error(String(e))}const m=e instanceof File?e.name:"dxf-layer",u=m.replace(/[^a-zA-Z0-9_.-]/g,"_");if(i.fileName=m,i.sanitizedFileName=u,i.subLayers=await a.processAll(),!i.subLayers||0===i.subLayers.length)return[];const f=new s({id:`dxf-group-${u}-${(new Date).getTime()}`,title:m,visible:!0}),p={layer:f,visibilityMode:"independent"};return f.layers.addMany(i.subLayers),[new N(p)]}export async function fgdbToLayerExtensions(e,t){const{displayServiceUrl:r,geoProcessedFgdbData:o}=t;D("options.fgdbBlob",e).isNotMissing(),D("options.displayServiceUrl",r).isNotMissing(),D("options.geoProcessedFgdbData",o).isNotMissing();const{createFgdbLayer:n}=await import("./support/_fgdbConverter.js"),a=await n(o,e,r);return[new O({layer:a})]}export async function shapefileToUploadData(e,t){D("shapefileData",e).isNotMissing();const o=function(e){const t={...Ee(e)};return{...t,...e}}(t),n=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:i},{default:s}]=await Promise.all([import("jszip"),import("shpjs")]),c=await n,l=await i.loadAsync(new Uint8Array(c)),m=new x;l.forEach(((e,t)=>{t&&m.set(t.name,t)}));const u=l.filter((()=>!0)).map((e=>e.name));let f,p=u.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(p=function(e){if(!e.length)return[];let t=e[0];const r=t.match(Oe);return r?(t=r[1],e.filter((e=>{const r=e.match(Oe);return r?.[1]===t}))):[t]}(p),u.some((e=>e.endsWith(".prj")))&&!p.every((e=>m.has(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(u.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(f){if(t!==f)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else f=t})));let y=[],d=[];for(const e of p){if(!m.has(`${e}.shp`)||!m.has(`${e}.shx`)||!m.has(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=s.parseShp(await m.get(`${e}.shp`).async("uint8array")),r=s.parseDbf(await m.get(`${e}.dbf`).async("uint8array"));if(r.length!==t.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(r),d=d.concat(t)}const g=await Promise.all(d.map((e=>async function(e,t){const o=E(e)?function(e){D("geometry.coordinates",e.type).matches("Point"),D("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,o,n]=e.coordinates,i=new r({x:t,y:o,spatialReference:a.WGS84});if(Array.isArray(n)){const[e,t]=n;!e&&!t||e?i.z=e:i.m=t}return i}(e):await K(e);if(t){let e;try{const r=await Y(t);e=new a({wkid:$(r)})}catch{}e||(e=new a({wkt:t})),o.spatialReference=e}return o}(e,f)))),w=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[w]=JSON.stringify(g[t].toJSON())));const h=function(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}(y);return o.primaryKeyField||(o.primaryKeyField=de(h)),{data:h,...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[w],inSpatialReference:g[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){return uploadDataToFeatureSet(await shapefileToUploadData(e,t))}export function getDefaultSymbol(e,t){const r=e%8;let o=["#FFDBFF","#88D6FF","#7F9FC3","#FF8200","#F34A53","#76E3B9","#E7BFFF","#FFC467"][r],n=["#EF3786","#005A99","#2D5070","#790C00","#4C0000","#006543","#6244A9","#904200"][r];if(Math.floor(e/8)%2!=0){const e=o;o=n,n=e}switch(t){case"point":case"multipoint":return new g({color:o,outline:{color:n}});case"polyline":return new d({color:o,width:"2"});case"polygon":return new y({color:o,outline:{color:n}});case"mesh":return new f({symbolLayers:[{type:"fill",material:{color:o},outline:{color:n}}]})}}function Ee(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:S,detectOid:!e?.primaryKeyField}}function Re(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...Ee(e)},...e}}function Ae(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function Ie(e,t,r,o){const n=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return n;if(t&&!t.includes("*"))return t.filter((e=>!n.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||n.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function _e(e){if(!e)return["*"];const t=e.featureSettings.popupTemplate?.content;if(Array.isArray(t)){const e=new Set;for(const r of t)if("fields"===r.type&&Array.isArray(r.fieldInfos))for(const t of r.fieldInfos)t.visible&&e.add(t.fieldName);if(e.size>0)return Array.from(e)}const r=e.featureSettings.popupTemplate?.fieldInfos;if(Array.isArray(r)){const e=[];for(const t of r)t.visible&&e.push(t.fieldName);if(e.length>0)return e}return["*"]}async function Ge(e,t){const r=await Le(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!E(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!E(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!E(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(r.toJSON())]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[await X(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await Z(r))]:[""]:[]}async function Le(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await J([e],t))[0]:e}function Ce(e,t){const r=[t.delimiter,we,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(we,"g"),`${we}${we}`);return`${we}${t}${we}`}return e}function ve(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||j.ROUND_TRIP;return B(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():L({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof b)return k({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Ue(r)),r}function Pe(e,t,r){if(r.useFormattedValues||je(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);const o=e.schema.findFieldByName(t)?.type;if(null!=o)switch(o){case"date":case"date-only":case"timestamp-offset":{const r=G(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=H(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function je(e,t){return!!te(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function Ue(e){for(const t of ge)if(e.startsWith(t))return`\t${e}`;return e}function $e(e,t,r){const o=e.startsWith(we),n=e.endsWith(we);if(o&&!n||!o&&n)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const a=o?e.substring(1,e.length-1):e;let i=-1;return Be(a,we,((e,o)=>{if(o===a.length)return!0;if(i<0){if(o!==a.length)return i=o,!0}else if(o===i+1)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),a.replace(new RegExp(`${we}${we}`,"g"),we)}function Be(e,t,r){let o,n=!1,a=0,i=0;for(;o=e.indexOf(t,a),!(o<0);){for(let t=a;t<o;)e.substring(t).startsWith(we)?(n=!n,t+=1):t++;const s=o+t.length;if(!n){const e=r(i,o);if(i=s,!e)return}a=s}r(i,e.length)}async function He(e,t){const r=JSON.parse(e),o=(await import("@arcgis/core/geometry/support/jsonUtils")).fromJSON(r);return r.spatialReference||(o.spatialReference=t),o}async function ke(e,t){const r=await K(JSON.parse(e));return r.spatialReference=t,r}async function ze(e,t){const r=await W(e);return r.spatialReference=t,r}function Je(e,t,r){const o=r?[r]:geometryTypeHeaders[t];for(const t of o){const r=t.map((t=>e.map((e=>e?.raw?.toString().trim().toLowerCase())).indexOf(t.trim().toLowerCase())));if(r.every((e=>e>=0)))return r}}async function Xe(e,t){return(await Promise.all(e.map((async(e,r)=>{const o=e?.raw;if("string"==typeof o&&""!==o)try{return await t(o,void 0),r}catch{return}})))).find((e=>void 0!==e))}function We(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:$({locale:t,format:r},e)}async function qe(e,t,r){const o=r?e.slice(1):e;if(r){const r=Je(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of De){try{await Ye(r[0],n,t,o)}catch{continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=Je(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of De){const n=await Xe(o[0],r);if(void 0!==n){try{await Ye(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function Ye(e,t,r,o){return{columnIndices:[e],geometries:await Promise.all(o.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),r)})))}}function Ze(e,t,r){let o=!1,n=!0,a=!0,i=!0,s=!0,c=!0;const l=new Set,{data:m,includeHeaderRow:u,dateFormat:f,timeFormat:p,primaryKeyField:y,locale:d}=e,g=u?m[0]:[],w=u?m.slice(1):m;for(const e of w){const r=e[t];r?.raw&&(l.add(r.raw),o=!0,n&&(n=Q(r.raw,d)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||G(f||C,r.raw)!==v),s&&(s=G(f||Se,r.formatted)!==v),i&&(i=r.raw instanceof b||H(p||z,r.raw).isValid),c&&(c=H({format:p||Te,locale:"en"},r.formatted).isValid))}const h=l.size===w.length;return y&&g[t]?.raw===y||r&&o&&h&&n?"esriFieldTypeOID":o&&c?"esriFieldTypeTimeOnly":o&&s?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&i?"esriFieldTypeTimeOnly":o&&a?"esriFieldTypeDate":"esriFieldTypeString"}async function Ke(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:a,dateFormat:i,timeFormat:s}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?We(e,n,a):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:G({locale:n,format:i},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof b)return e.toString();if(e instanceof Date)return new b(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new b(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:H({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of ge)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function Ve(e){switch(e){case P.DATE_SHORT:return"dd/MM/yyyy";case P.DATE_LONG:return"MMMM d, yyyy";case P.TIME_SHORT:return"h:mm AM/PM";case P.TIME_LONG:return"h:mm:ss AM/PM";case P.DATE_TIME_SHORT:case P.DEFAULT:return"MMM d yyyy h:mm AM/PM";case P.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case P.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case P.ISO_8601:case P.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&be().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&be().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function Qe(e){switch(e){case P.DATE_SHORT:return"dd/MM/yyyy";case P.DATE_LONG:return"MMMM d, yyyy";case P.DATE_TIME_SHORT:case P.DEFAULT:return"MMM d yyyy";case P.DATE_TIME_LONG:return"MMMM d yyyy";case P.FULL:return"dddd, MMMM d yyyy";case P.ISO_8601:case P.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function et(e){switch(e){case U.TIME_SHORT:return"h:mm AM/PM";case U.TIME_LONG:return"h:mm:ss AM/PM";case U.ISO_8601:case U.ROUND_TRIP:return"HH:mm:ss";default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("h")&&!t.includes("AM/PM")&&be().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function tt(e){switch(e){case j.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case j.CURRENCY:return'"$"#,##0.00';case j.FIXED_POINT:case j.DEFAULT:return"0.0000";case j.NUMBER:return"#,##0.0000";case j.PERCENT:return"0%";case j.ROUND_TRIP:return"0.00000";default:return e}}function rt(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e;if(e instanceof b)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Ue(r)),r}function ot(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function nt(e,t){return e.map((e=>ot(e,t)))}function at(e,t){return e.map((e=>nt(e,t)))}function it(e,t,r){switch(t){case xe.NUMBER:return e instanceof Date?e.getTime():$(e);case xe.STRING:return e instanceof Date?L({format:r.dateFormat??P.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof b?k({format:r.timeFormat??U.ROUND_TRIP},e):"number"==typeof e?B(r.numberFormat??j.DEFAULT,e):e.toString();case xe.BOOLEAN:return!!e;case xe.DATE:return G(e);default:return e.toString()}}function st(e,t){return JSON.stringify(e.toJSON())===JSON.stringify(t.toJSON())}function ct(e){return 1===e.length?new l({symbol:e[0]}):new m({field:"SymbolID",uniqueValueInfos:[...e.map(((e,t)=>new u({label:t.toString(),symbol:e,value:t})))]})}
1
+ import e from"@arcgis/core/Color.js";import t from"@arcgis/core/Graphic.js";import r from"@arcgis/core/geometry/Point";import o from"@arcgis/core/geometry/Polygon.js";import n from"@arcgis/core/geometry/Polyline.js";import i from"@arcgis/core/geometry/SpatialReference";import a from"@arcgis/core/layers/FeatureLayer.js";import s from"@arcgis/core/layers/GroupLayer.js";import c from"@arcgis/core/layers/support/Field.js";import l from"@arcgis/core/renderers/SimpleRenderer.js";import m from"@arcgis/core/renderers/UniqueValueRenderer.js";import u from"@arcgis/core/renderers/support/UniqueValueInfo.js";import f from"@arcgis/core/symbols/MeshSymbol3D.js";import p from"@arcgis/core/symbols/PictureMarkerSymbol.js";import y from"@arcgis/core/symbols/SimpleFillSymbol.js";import d from"@arcgis/core/symbols/SimpleLineSymbol.js";import g from"@arcgis/core/symbols/SimpleMarkerSymbol.js";import w from"dxf-parser";import{ArgumentError as h}from"../ArgumentError.js";import{NotFoundError as F}from"../NotFoundError.js";import{geometryTypeToJson as S}from"../json/GeometryJson.js";import{translate as N}from"../locale/language.js";import{INVARIANT as T}from"../locale.js";import{FeatureCollectionLayerExtension as O}from"../mapping/FeatureCollectionLayerExtension.js";import{GroupLayerExtension as x}from"../mapping/GroupLayerExtension.js";import{MapImageLayerExtension as b}from"../mapping/MapImageLayerExtension.js";import{CaseInsensitiveObservableMap as D}from"../utilities/CaseInsensitiveObservableMap.js";import{Time as M}from"../utilities/Time.js";import{checkArg as E,assertNever as R}from"../utilities/checkArg.js";import{isPoint as A,isMultipoint as I,isPolyline as _,isPolygon as G,isExtent as L}from"../utilities/esri.js";import{parse as C,format as v,DEFAULT_PARSING_FORMATS as P,INVALID_DATE as j}from"../utilities/format/date.js";import{DateFormat as U,NumberFormat as $,TimeFormat as B}from"../utilities/format/formats.js";import{parse as H,format as k}from"../utilities/format/number.js";import{parse as z,format as J,DEFAULT_PARSING_FORMATS as X}from"../utilities/format/time.js";import{project as W,esriToWKT as q,wktToEsri as Y,esriWkidToWkt as Z,esriWktToWkid as K,esriToGeoJSON as V,geoJSONToEsri as Q}from"../utilities/geometry.js";import{getLogger as ee}from"../utilities/log.js";import{isNumeric as te}from"../utilities/number.js";import{delay as re}from"../utilities/promise.js";import{caseInsensitiveEquals as oe}from"../utilities/string.js";import{Feature as ne}from"./Feature.js";import{FeatureSet as ie}from"./FeatureSet.js";import{DxfEntityProcessor as ae}from"./support/_dxfConverters.js";import{createGpxDocument as se,serializeGpxDocument as ce,buildGpxTrack as le,buildGpxTrackPoint as me,buildGpxWaypoint as ue,getGpxExtensions as fe,getGpxTrackDescription as pe,getGpxTrackName as ye,getGpxTrackTime as de,getGpxTrackId as ge}from"./support/_gpxExport.js";import{addAndPopulateFidField as we}from"./support/_shapefileConverter.js";const he=["=","-","+","@"],Fe='"',Se="\r\n",Ne="\n",Te=[...P.map(et),"M/d/yy"],Oe=[...X.map(rt).map((e=>e.replace("AM/PM","tt")))],xe=10,be=/(\w+)_(point|multipoint|polyline|polygon)z?/;var De;function Me(){return ee("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(De||(De={}));export const FIELD_NAME_REGEX=/[^a-zA-Z\d_]/g;export var GeometryFormat;!function(e){e.NONE="NONE",e.WKT="WKT",e.XY="XY",e.XYZ="XYZ",e.LAT_LON="LAT_LONG",e.GEO_JSON="GEO_JSON",e.ARCGIS_JSON="ARCGIS_JSON"}(GeometryFormat||(GeometryFormat={}));export const geometryTypeHeaders={[GeometryFormat.XYZ]:[["x","y","z"]],[GeometryFormat.XY]:[["x","y"]],[GeometryFormat.LAT_LON]:[["latitude","longitude"],["lat","lon"],["lat","long"]],[GeometryFormat.ARCGIS_JSON]:[["geometry"]],[GeometryFormat.GEO_JSON]:[["geometry"]],[GeometryFormat.WKT]:[["geometry"]]};const Ee=[[GeometryFormat.ARCGIS_JSON,ze],[GeometryFormat.GEO_JSON,Je],[GeometryFormat.WKT,Xe]],Re=new Map(Ee);export async function uploadDataToFeatureSet(e){const t=await async function(e){const{data:t,includeHeaderRow:o,geometryFormat:n,geometryFields:i,locale:a,numberFormat:s,inSpatialReference:c}=e,l=o?t.slice(1):t;if(n===GeometryFormat.NONE)return{columnIndices:[]};const m=e=>Ye(e,a,s),u=(e,t)=>{const o=t===GeometryFormat.XYZ,n=t===GeometryFormat.LAT_LON;return{columnIndices:e,geometries:l.map((t=>{if(t.length>=Math.max(...e)&&te(t[e[0]]?.raw,a)&&te(t[e[1]]?.raw,a)&&(!o||te(t[e[2]]?.raw,a)))return new r({x:m(n?t[e[1]].raw:t[e[0]].raw),y:m(n?t[e[0]].raw:t[e[1]].raw),z:o?m(t[e[2]].raw):0,spatialReference:c})}))}},f=async(e,t)=>({columnIndices:[e],geometries:await Promise.all(l.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),c)})))}),p=async(e,t)=>{switch(t){case GeometryFormat.NONE:return{columnIndices:[0]};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return u(e,t);case GeometryFormat.ARCGIS_JSON:return f(e[0],ze);case GeometryFormat.GEO_JSON:return f(e[0],Je);case GeometryFormat.WKT:return f(e[0],Xe);default:return R(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=We(o?t[0]:t[0].map(((e,t)=>({raw:t.toString()}))),n,o?i:i.map((e=>""+(parseInt(e.match(/\d+/g)[0])-1))));if(o&&void 0===e)throw new Error(`Error parsing file data: Expected geometry columns ${geometryTypeHeaders[n][0].join(",")} are missing for GeometryType.${n}`);return p(e??[0],n)}const[y,d]=await Ze(t,c,o);if(y===GeometryFormat.NONE)return{columnIndices:[]};return d.length>1?u(d,y):f(d[0],Re.get(y))}(e),o=function(e,t){const{data:r,displayField:o,includeHeaderRow:n,inSpatialReference:i,outSpatialReference:a,generatePrimaryKey:s}=e,c={fields:[]},l=e=>!(!t.columnIndices||0===t.columnIndices.length)&&t.columnIndices.includes(e);let{primaryKeyField:m}=e,u=0;for(let t=0;t<r[0].length;t++){if(l(t))continue;const o=Ve(e,t,!s&&!m&&!c.fields.find((e=>"esriFieldTypeOID"===e.type)));let i=r[0][t]?.raw?.toString(),a=i?.replace(FIELD_NAME_REGEX,"_");n&&a||(a="field"+ ++u,i=N("gcx.api.data.convert.import-field-alias",u)),c.fields.push({alias:i,name:a,type:o}),"esriFieldTypeOID"===o&&(m=a)}if(c.spatialReference=a??t.geometries?.[0]?.spatialReference??i,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),r=e[0];c.geometryType=e.every((e=>e===r))?S(r):void 0}if(!c.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=c.fields.length+1,t=!!c.fields.find((e=>"objectid"===e.name.toLowerCase()));m=t?`OBJECTID_${e}`:"OBJECTID",c.fields.push({name:m,alias:m,type:"esriFieldTypeOID"})}return c.displayField=o??c.fields.find((e=>!oe(e.name,m)&&"esriFieldTypeString"===e.type))?.name??c.fields.find((e=>!oe(e.name,m)))?.name??m,c.primaryKeyField=m,c}(e,t),n=await async function(e,t,r){const{data:o,includeHeaderRow:n,outFields:i,escapeFormulaChars:a,locale:s,numberFormat:c,dateFormat:l,timeFormat:m}=e,{spatialReference:u}=r,f=[],p=n?o.slice(1):o,y=(e,r)=>!t.columnIndices||0===t.columnIndices.length||!t.columnIndices.includes(r);return await Promise.all(p.map((async(e,o)=>{const n=new ne;for(let t=0;t<r.fields.length;t++){const u=r.fields[t],f=e.filter(y);if(i.includes("*")||i.filter((e=>oe(e,u.name))).length>0){let e=await Qe(f[t]?.raw,u,{escapeFormulaChars:a,dateFormat:l,numberFormat:c,timeFormat:m,locale:s});"esriFieldTypeOID"===u.type&&null===e&&(e=o),n.attributes.set(u.name,e)}}t.geometries&&(n.geometry=await ve(t.geometries[o],u)),f.push(n)}))),f}(e,t,o);return new ie({features:n,schema:o})}export async function toCsv(e,t){E("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:U.ROUND_TRIP,timeFormat:B.ROUND_TRIP,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:i.WGS84,includeHeaderRow:!0,outFields:Le(e.source),rowDelimiter:navigator.platform?.startsWith("Win")?Se:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:a,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=_e(r,o),f=Ge(r,c,e.schema,!0),p=Ge(r,c,e.schema,!1);if(a){const e=[];for(const t of u)e.push(Pe(t,o));for(const t of f)e.push(Pe(t,o));for(const t of p)e.push(Pe(t,o));const t=e.join(s)+l;m.push(t)}await Promise.all(r.map((async e=>{const t=[],r=(t,r)=>{const o=Ue(e,t,r),n=e.schema.findFieldByName(t)?.type;return Pe(je(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await Ce(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":je(e,t))));return r.map((e=>""===e?"":Pe(e,t)))}(e.geometry,o)),t.push(...f.map((e=>r(e,o)))),t.push(...p.map((e=>r(e,o))));const n=`${t.join(s)}${l}`;m.push(n)})));return new Blob(m,{type:"text/plain",endings:"\n"===l||l===Se?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(E("csvData",e).isNotMissing(),e instanceof Blob){const t=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsText(e)}));r=await t}else r=e;const o=Ie(t),n=o.rowDelimiter||function(e){let t=Ne;return ke(e,Se,((r,o)=>(0===r&&o===e.length||(t=Se),!1))),t}(r),i=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(ke(e,t,((t,r)=>(r!==e.length||t!==r)&&(n.push(e.substring(t,r)),n.length<3))),0===n.length)return o;let i=[{delimiter:",",rowsDelimiterOccurrences:[],rowsNumberAdjacentOccurrences:[]},{delimiter:";",rowsDelimiterOccurrences:[]},{delimiter:"|",rowsDelimiterOccurrences:[]},{delimiter:"\t",rowsDelimiterOccurrences:[]},{delimiter:" ",rowsDelimiterOccurrences:[]}].filter((e=>n[0].includes(e.delimiter)));if(0===i.length)return o;for(const e of n)for(const t of i){let o=0,n=0;ke(e,t.delimiter,((i,a)=>{if(a!==e.length&&o++,","===t.delimiter){const t=e.charAt(a-1),o=e.charAt(a+1);te(t,r)&&te(o,r)&&n++}return!0})),t.rowsDelimiterOccurrences.push(o),","===t.delimiter&&t.rowsNumberAdjacentOccurrences.push(n)}if(i=i.filter((e=>e.rowsDelimiterOccurrences.every((t=>e.rowsDelimiterOccurrences[0]===t)))).sort(((e,t)=>t.rowsDelimiterOccurrences[0]-e.rowsDelimiterOccurrences[0])),i.length>1&&","===i[0].delimiter&&null!=r&&r!==T){const e=i[0];if(","===e?.delimiter&&","===Intl.NumberFormat(r).formatToParts(1.1).find((e=>"decimal"===e.type))?.value)for(let t=0;t<e.rowsDelimiterOccurrences.length;t++)if(e.rowsDelimiterOccurrences[t]<=e.rowsNumberAdjacentOccurrences[t]){i=i.filter((e=>","!==e.delimiter));break}}if(0===i.length)return o;return i[0].delimiter}(r,n,o.locale),a=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return ke(e,r,((r,n)=>{const i=e.substring(r,n);return o.push({raw:He(i,t,o.length)}),!0})),o};if(ke(e,t,((t,r)=>{const i=e.substring(t,r);return i.length>0&&o.push(n(i,o.length)),!0})),o.length){const e=o[0].length;o.forEach(((t,r)=>{if(t.length!==e)throw new Error(`Detected invalid CSV: Row ${r} does not have expected number of columns: ${e}`)}))}return o}(r,n,i);let{geometryFormat:s,geometryFields:c}=o;if(!s){const[e,t]=await Ze(a,o.inSpatialReference,o.includeHeaderRow);s=e,c=t.map((e=>o.includeHeaderRow?a[0][e]?.raw??N("gcx.api.data.convert.import-field-alias",(e+1).toString()):N("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:a,...o,geometryFormat:s,geometryFields:c}}export async function csvToFeatureSet(e,t){const r=Ie(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toGpx(e){E("featureSet",e).isNotMissing();const t=Array.from(e),r=se(),o=r.documentElement,n=new Set;for(const e of t){if(!e.geometry)continue;const t=await ve(e.geometry,i.WGS84),a={name:ye(e),desc:pe(e),time:de(e),extensions:fe(r,e),id:ge(e)};if(A(t))o.appendChild(ue(r,t.y,t.x,t.hasZ?t.z:void 0,a));else if(_(t))for(const e of t.paths){if(e.length<2)continue;const n=e.map((([e,o,n])=>me(r,o,e,t.hasZ?n:void 0)));o.appendChild(le(r,n,a))}else n.add(t.type)}if(n.size>0){const e=Array.from(n).join(", ");Me().warn(`One or more features with unsupported geometry types (${e}) were ignored during GPX conversion. GPX format only supports points and polylines.`)}const a=ce(r);return new Blob([a],{type:"application/gpx+xml"})}export async function toXLSX(e,t){E("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:Le(e.source),outSpatialReference:i.WGS84,dateFormat:U.DEFAULT,timeFormat:B.DEFAULT,numberFormat:$.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:a,dateFormat:s,timeFormat:c,numberFormat:l}=o,m=_e(r,o),u=Ge(r,n,e.schema,!0),f=Ge(r,n,e.schema,!1),p=await import("xlsx"),y=p.utils.sheet_new();let d=!1;if(a){const t=m.concat(u).concat(function(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>oe(t.name,e)))?.alias??e))}(f,e.source));d=!0,p.utils.sheet_add_aoa(y,[t],{cellDates:!0})}await Promise.all(r.map((async e=>{const t=[],r=new Set,n=new Set;t.push(...await Ce(e.geometry,o));for(const r of u){const n=nt(e.attributes.get(r),o);t.push(n)}for(const i of f){const a=Ue(e,i,o);if(a instanceof M){const o=e.schema.findFieldByName(i);"time-only"===o?.type&&r.add(t.length)}else if(a instanceof Date){const r=e.schema.findFieldByName(i);"date-only"===r?.type&&n.add(t.length)}const s=nt(a,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void Me().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`);p.utils.sheet_add_aoa(y,[t],{cellDates:!0,origin:d?-1:void 0}),d=!0;const i=p.utils.decode_range(y["!ref"]);for(let e=i.s.c;e<=i.e.c;e++){const t=y[p.utils.encode_cell({r:i.e.r,c:e})];"d"===t.t?r.has(e)?t.z=rt(c??B.ROUND_TRIP):n.has(e)?t.z=tt(s??U.ROUND_TRIP):t.z=et(s??U.ROUND_TRIP):"n"===t.t&&(t.z=ot(l))}})));const g={SheetNames:[],Sheets:{}};g.SheetNames.push(o.sheetName),g.Sheets[o.sheetName]=y;const w=p.write(g,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),h=new Uint8Array(w.length);for(let e=0;e<w.length;e++)h[e]=w.charCodeAt(e);return new Blob([h.buffer],{type:"text/plain"})}export async function xlsxToUploadData(e,t){E("xlsxData",e).isNotMissing();const r=function(e){const t={includeHeaderRow:!0,inSpatialReference:i.WGS84,...Ae(e)};return{...t,...e}}(t),o=await async function(e,t){const r=await import("xlsx"),o=new Promise(((o,n)=>{const i=new FileReader;i.onload=()=>{const e=new Uint8Array(i.result);let n="";for(const t of e)n+=String.fromCharCode(t);const a=r.read(n,{type:"binary",cellDates:!0}),s=t.sheetName||a.SheetNames[0],c=a.Sheets[s];o(c)},i.onerror=()=>{n(i.error)},i.readAsArrayBuffer(e)})),n=await o,i=r.utils.decode_range(n["!ref"]),a=[];for(let e=i.s.r;e<=i.e.r;e++){const t=[];for(let o=i.s.c;o<=i.e.c;o++){const i=n[`${r.utils.encode_cell({r:e,c:o})}`];"d"===i?.t&&i.v instanceof Date&&(i.v=new Date(i.v.getTime()+6e4*i.v.getTimezoneOffset())),t.push(i?{raw:i.v,formatted:"s"===i.t?void 0:i.w}:{raw:""})}a.push(t)}return a}(e,r);let{geometryFormat:n,geometryFields:a}=r;if(!n){const[e,t]=await Ze(o,r.inSpatialReference,r.includeHeaderRow);n=e,a=t.map((e=>r.includeHeaderRow?o[0][e]?.raw.toString()??N("gcx.api.data.convert.import-field-alias",(e+1).toString()):N("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:o,...r,geometryFormat:n,geometryFields:a}}export async function xlsxToFeatureSet(e,t){E("xlsxData",e).isNotMissing();return uploadDataToFeatureSet(await xlsxToUploadData(e,t))}export function kmlHexToEsriColor(t){return e.fromHex(`#${t.match(/.{2}/g).reverse().join("")}`)}export function parseKMLCoordinates(e){return e.trim().split(/\s+/).map((e=>{const[t,r,o]=e.split(",").map(Number);return{x:t,y:r,z:o}}))}export function parseKMLSymbol(t,r,o){if(t){const r=t.querySelector("IconStyle > Icon > href")?.textContent;if(r)return new p({url:r,width:32,height:32});const o=t.querySelector("PolyStyle");if(o){const t=o.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]);return new y({color:r,outline:{color:[0,0,0,.5],width:1}})}const n=t.querySelector("LineStyle");if(n){const t=n.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]),o=parseFloat(n.querySelector("width")?.textContent||"1");return new d({color:r,width:o})}}return getDefaultSymbol(o,"polygon"===r?"polygon":"point"===r?"point":"polyline")}export async function toShapefile(e,t){E("featureSet",e).isNotMissing();const[{default:r},o]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),n=Array.from(e),a={...{useFormattedValues:!1,outFields:Le(e.source),fileName:e.title||"export"},...t},{outFields:s,outSpatialReference:c,fileName:l}=a,m=e=>e.geometry.hasZ||e.geometry.hasM,u=new Map,f=n.filter((e=>A(e.geometry)));u.set("POINTZ",f.filter(m)),u.set("POINT",f.filter((e=>!m(e))));const p=n.filter((e=>I(e.geometry)));u.set("MULTIPOINTZ",p.filter(m)),u.set("MULTIPOINT",p.filter((e=>!m(e))));const y=n.filter((e=>_(e.geometry)));u.set("POLYLINEZ",y.filter(m)),u.set("POLYLINE",y.filter((e=>!m(e))));const d=n.filter((e=>G(e.geometry)||L(e.geometry)));u.set("POLYGONZ",d.filter(m)),u.set("POLYGON",d.filter((e=>!m(e))));const g=Ge(n,s,e.schema,!0);let w=Ge(n,s,e.schema,!1);w=g.concat(w);const h=new r,F=Array.from(u.keys()).filter((e=>u.get(e).length>0));await Promise.all(F.map((async t=>{const r=u.get(t),n=await Promise.all(r.map((e=>ve(e.geometry,c)))),s=await async function(e){const{wkid:t,wkt:r}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===t&&e.spatialReference.wkt===r)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return r??await Z(t??i.WGS84.wkid)}(n),m=a.useFormattedValues?Object.assign({},...w.map((e=>({[e]:De.STRING})))):function(e,t,r,o){const n={};for(const i of t){if(e.some((e=>$e(e,i)))){n[i]=De.STRING;continue}const t=r?r.fields.find((e=>oe(e.name,i))):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":case"big-integer":n[i]=De.NUMBER;break;case"date":case"timestamp-offset":n[i]=o?De.NUMBER:De.DATE;break;default:n[i]=De.STRING}continue}const a=(e,t)=>e.attributes.get(t)??e.presentableAttributes.get(t);e.every((e=>a(e,i)instanceof Date||void 0===a(e,i)))&&e.some((e=>a(e,i)instanceof Date))?n[i]=o?De.NUMBER:De.DATE:e.every((e=>"number"==typeof a(e,i)||void 0===a(e,i)))&&e.some((e=>"number"==typeof a(e,i)))?n[i]=De.NUMBER:e.every((e=>"boolean"==typeof a(e,i)||void 0===a(e,i)))&&e.some((e=>"boolean"==typeof a(e,i)))?n[i]=De.BOOLEAN:n[i]=De.STRING}return n}(r,w,e.schema,"timestamp"===a.dateFormat),f=function(e){return e.map((e=>{if(A(e)){const{x:t,y:r,z:o,m:n}=e,i=[t,r];return e.hasZ&&i.push(o),e.hasM&&i.push(n),it(i,e)}if(I(e))return at(e.points,e);if(_(e))return st(e.paths,e);if(G(e))return st(e.rings,e);if(L(e)){const t=[e.xmin,e.ymax];return[[t,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],t]]}throw new Error("Unsupported geometry type.")}))}(n),p=function(e,t,r,o){const n=function(e){const t=new Set,r=new Map;for(const o of e){let e=o.replaceAll(".","_");e.length>xe&&(e=e.substring(0,xe));let n=1;for(;t.has(e);){const t=`_${n}`,r=xe-t.length;e=`${e.substring(0,r)}${t}`,n++}t.add(e),r.set(o,e)}return r}(t),i=[];for(const a of e){const e={};for(const i of t){let t=Ue(a,i,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=ct(t,r[i],{...o,isDateOnly:"date-only"===a.schema.findFieldByName(i)?.type})}e[n.get(i)]=t}i.push(e)}return i}(r,w,m,a);o.write(p,t,f,((e,r)=>{const o=F.length>1?`${l}_${t.toLowerCase()}`:l;h.file(`${o}.shp`,r.shp.buffer,{binary:!0}),h.file(`${o}.shx`,r.shx.buffer,{binary:!0}),h.file(`${o}.dbf`,r.dbf.buffer,{binary:!0}),h.file(`${o}.prj`,s)}))})));const S=await h.generateAsync({type:"uint8array"});return new Blob([S.buffer],{type:"text/plain"})}export async function kmlToLayerExtensions(e){E("blob",e).isNotMissing();const i=await e.text(),l=(new DOMParser).parseFromString(i,"application/xml"),m=function(e,i,u=!1){const f={};l.querySelectorAll("Style").forEach((e=>{f[`#${e.id}`]=e}));const p=e.querySelector(":scope > name")?.textContent??"Unnamed Container",y=new Map;e.querySelectorAll(":scope > Placemark").forEach(((e,a)=>{const s=e.querySelector("name")?.textContent??"",c=e.querySelector("description")?.textContent??"",l=function(e){const t=e.querySelector("Point > coordinates"),i=e.querySelector("LineString > coordinates"),a=e.querySelector("Polygon");if(t?.textContent){const[e]=parseKMLCoordinates(t.textContent.replace(/ /g,""));return new r(e)}if(i?.textContent)return new n({paths:[parseKMLCoordinates(i.textContent).map((({x:e,y:t})=>[e,t]))]});if(a?.textContent){const e=a.querySelector("outerBoundaryIs > LinearRing > coordinates");if(e?.textContent){const t=[parseKMLCoordinates(e.textContent).map((({x:e,y:t})=>[e,t]))];return new o({rings:t})}}return}(e);if(l?.type){const r=e.querySelector("styleUrl")?.textContent,o=parseKMLSymbol(r?f[r]:e.querySelector("Style"),l.type,i);y.has(l.type)||y.set(l.type,{graphics:[],symbols:[]});let n=function(e,t){for(let r=0;r<e.length;r++)if(lt(e[r],t))return r;return-1}(y.get(l.type).symbols,o);-1===n&&(y.get(l.type).symbols.push(o),n=y.get(l.type).symbols.length-1),y.get(l.type).graphics.push(new t({geometry:l,attributes:{name:s,description:c,SymbolID:n,OBJECTID:p+a}}))}}));const d=e.querySelectorAll(":scope > Folder, :scope > Document");if(u||1!==y.size||0!==d.length){const e=new x({layer:new s({title:p})});return y.forEach(((t,r)=>{const o=new a({displayField:"name",title:`${r.slice(0,1).toUpperCase()+r.slice(1)}s`,source:t.graphics,renderer:mt(t.symbols),fields:[new c({name:"OBJECTID",type:"oid",alias:"OBJECTID"}),new c({name:"SymbolID",type:"integer",alias:"SymbolID",editable:!1}),new c({name:"name",type:"string",alias:"name"}),new c({name:"description",type:"string",alias:"description",defaultValue:""})]}),n=new O({layer:o});e.layerExtensions.add(n)})),d.forEach(((t,r)=>{const o=m(t,r);e.layerExtensions.add(o)})),e}{const e=[...y.values()][0],t=new a({displayField:"name",title:p,source:e.graphics,renderer:mt(e.symbols),fields:[new c({name:"OBJECTID",type:"oid",alias:"OBJECTID"}),new c({name:"SymbolID",type:"integer",alias:"SymbolID",editable:!1}),new c({name:"name",type:"string",alias:"name"}),new c({name:"description",type:"string",alias:"description",defaultValue:""})]});return new O({layer:t})}},u=[];return l.querySelectorAll("kml > Document, kml > Folder").forEach(((e,t)=>{const r=m(e,t,!0);r.layerExtensions.length&&u.push(r)})),u}export async function lpkxToLayerExtensions(e,t){const{displayServiceUrl:r,geoProcessedLpkxData:o}=t;E("options.lpkxBlob",e).isNotMissing(),E("options.displayServiceUrl",r).isNotMissing();const{createLpkxLayer:n}=await import("./support/_lpkxConverter.js"),i=await n(o,e,r);return[new b({layer:i})]}export async function dxfToLayerExtensions(e,t,r){const{inputSpatialReference:o,outputSpatialReference:n}=t;E("options.dxfBlob",e).isNotMissing(),E("options.inputSpatialReference",o).isNotMissing(),E("options.outputSpatialReference",n).isNotMissing();const i=new ae(o,n,r),a=i.getContext(),c=await e.text(),l=new w;await re();try{const e=l.parseSync(c);if(!e)throw new Error("DXF parsing failed: parser returned null");a.dxf=e}catch(e){throw e instanceof Error?e:new Error(String(e))}const m=e instanceof File?e.name:"dxf-layer",u=m.replace(/[^a-zA-Z0-9_.-]/g,"_");if(a.fileName=m,a.sanitizedFileName=u,a.subLayers=await i.processAll(),!a.subLayers||0===a.subLayers.length)return[];const f=new s({id:`dxf-group-${u}-${(new Date).getTime()}`,title:m,visible:!0}),p={layer:f,visibilityMode:"independent"};return f.layers.addMany(a.subLayers),[new x(p)]}export async function fgdbToLayerExtensions(e,t){const{displayServiceUrl:r,geoProcessedFgdbData:o}=t;E("options.fgdbBlob",e).isNotMissing(),E("options.displayServiceUrl",r).isNotMissing(),E("options.geoProcessedFgdbData",o).isNotMissing();const{createFgdbLayer:n}=await import("./support/_fgdbConverter.js"),i=await n(o,e,r);return[new b({layer:i})]}export async function shapefileToUploadData(e,t){E("shapefileData",e).isNotMissing();const o=function(e){const t={...Ae(e)};return{...t,...e}}(t),n=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:a},{default:s}]=await Promise.all([import("jszip"),import("shpjs")]),c=await n,l=await a.loadAsync(new Uint8Array(c)),m=new D;l.forEach(((e,t)=>{t&&m.set(t.name,t)}));const u=l.filter((()=>!0)).map((e=>e.name));let f,p=u.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(p=function(e){if(!e.length)return[];let t=e[0];const r=t.match(be);return r?(t=r[1],e.filter((e=>{const r=e.match(be);return r?.[1]===t}))):[t]}(p),u.some((e=>e.endsWith(".prj")))&&!p.every((e=>m.has(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");if(0===p.length)throw new h("shapefileData",`No shapefile found in the provided ${u.map((e=>e.substring(0,e.length-4)))} zip file(s).`);await Promise.all(u.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(f){if(t!==f)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else f=t})));let y=[],d=[];for(const e of p){if(!m.has(`${e}.shp`)||!m.has(`${e}.shx`)||!m.has(`${e}.dbf`))throw new F("Shapefile must contain shp, shx, and dbf files.");const t=s.parseShp(await m.get(`${e}.shp`).async("uint8array")),r=s.parseDbf(await m.get(`${e}.dbf`).async("uint8array"));if(r.length!==t.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(r),d=d.concat(t)}const g=await Promise.all(d.map((e=>async function(e,t){if(!e)return;const o=A(e)?function(e){E("geometry.coordinates",e.type).matches("Point"),E("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,o,n]=e.coordinates,a=new r({x:t,y:o,spatialReference:i.WGS84});if(Array.isArray(n)){const[e,t]=n;!e&&!t||e?a.z=e:a.m=t}return a}(e):await Q(e);if(t){let e;try{const r=await K(t);e=new i({wkid:H(r)})}catch{}e||(e=new i({wkt:t})),o.spatialReference=e}return o}(e,f)))),w=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[w]=JSON.stringify(g[t]?g[t].toJSON():void 0)));const S=function(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}(y);return o.primaryKeyField||(o.primaryKeyField=we(S)),{data:S,...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[w],inSpatialReference:g[0]?.spatialReference??i.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){return uploadDataToFeatureSet(await shapefileToUploadData(e,t))}export function getDefaultSymbol(e,t){const r=e%8;let o=["#FFDBFF","#88D6FF","#7F9FC3","#FF8200","#F34A53","#76E3B9","#E7BFFF","#FFC467"][r],n=["#EF3786","#005A99","#2D5070","#790C00","#4C0000","#006543","#6244A9","#904200"][r];if(Math.floor(e/8)%2!=0){const e=o;o=n,n=e}switch(t){case"point":case"multipoint":return new g({color:o,outline:{color:n}});case"polyline":return new d({color:o,width:"2"});case"polygon":return new y({color:o,outline:{color:n}});case"mesh":return new f({symbolLayers:[{type:"fill",material:{color:o},outline:{color:n}}]})}}function Ae(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:T,detectOid:!e?.primaryKeyField}}function Ie(e){return{...{includeHeaderRow:!0,inSpatialReference:i.WGS84,...Ae(e)},...e}}function _e(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function Ge(e,t,r,o){const n=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return n;if(t&&!t.includes("*"))return t.filter((e=>!n.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||n.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function Le(e){if(!e)return["*"];const t=e.featureSettings.popupTemplate?.content;if(Array.isArray(t)){const e=new Set;for(const r of t)if("fields"===r.type&&Array.isArray(r.fieldInfos))for(const t of r.fieldInfos)t.visible&&e.add(t.fieldName);if(e.size>0)return Array.from(e)}const r=e.featureSettings.popupTemplate?.fieldInfos;if(Array.isArray(r)){const e=[];for(const t of r)t.visible&&e.push(t.fieldName);if(e.length>0)return e}return["*"]}async function Ce(e,t){const r=await ve(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!A(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!A(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!A(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(r.toJSON())]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[await q(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await V(r))]:[""]:[]}async function ve(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await W([e],t))[0]:e}function Pe(e,t){const r=[t.delimiter,Fe,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(Fe,"g"),`${Fe}${Fe}`);return`${Fe}${t}${Fe}`}return e}function je(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||$.ROUND_TRIP;return k(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():v({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof M)return J({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Be(r)),r}function Ue(e,t,r){if(r.useFormattedValues||$e(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);const o=e.schema.findFieldByName(t)?.type;if(null!=o)switch(o){case"date":case"date-only":case"timestamp-offset":{const r=C(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=z(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function $e(e,t){return!!oe(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function Be(e){for(const t of he)if(e.startsWith(t))return`\t${e}`;return e}function He(e,t,r){const o=e.startsWith(Fe),n=e.endsWith(Fe);if(o&&!n||!o&&n)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const i=o?e.substring(1,e.length-1):e;let a=-1;return ke(i,Fe,((e,o)=>{if(o===i.length)return!0;if(a<0){if(o!==i.length)return a=o,!0}else if(o===a+1)return a=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),i.replace(new RegExp(`${Fe}${Fe}`,"g"),Fe)}function ke(e,t,r){let o,n=!1,i=0,a=0;for(;o=e.indexOf(t,i),!(o<0);){for(let t=i;t<o;)e.substring(t).startsWith(Fe)?(n=!n,t+=1):t++;const s=o+t.length;if(!n){const e=r(a,o);if(a=s,!e)return}i=s}r(a,e.length)}async function ze(e,t){const r=JSON.parse(e),o=(await import("@arcgis/core/geometry/support/jsonUtils")).fromJSON(r);return r.spatialReference||(o.spatialReference=t),o}async function Je(e,t){const r=await Q(JSON.parse(e));return r.spatialReference=t,r}async function Xe(e,t){const r=await Y(e);return r.spatialReference=t,r}function We(e,t,r){const o=r?[r]:geometryTypeHeaders[t];for(const t of o){const r=t.map((t=>e.map((e=>e?.raw?.toString().trim().toLowerCase())).indexOf(t.trim().toLowerCase())));if(r.every((e=>e>=0)))return r}}async function qe(e,t){return(await Promise.all(e.map((async(e,r)=>{const o=e?.raw;if("string"==typeof o&&""!==o)try{return await t(o,void 0),r}catch{return}})))).find((e=>void 0!==e))}function Ye(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:H({locale:t,format:r},e)}async function Ze(e,t,r){const o=r?e.slice(1):e;if(r){const r=We(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of Ee){try{await Ke(r[0],n,t,o)}catch{continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=We(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of Ee){const n=await qe(o[0],r);if(void 0!==n){try{await Ke(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function Ke(e,t,r,o){return{columnIndices:[e],geometries:await Promise.all(o.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),r)})))}}function Ve(e,t,r){let o=!1,n=!0,i=!0,a=!0,s=!0,c=!0;const l=new Set,{data:m,includeHeaderRow:u,dateFormat:f,timeFormat:p,primaryKeyField:y,locale:d}=e,g=u?m[0]:[],w=u?m.slice(1):m;for(const e of w){const r=e[t];r?.raw&&(l.add(r.raw),o=!0,n&&(n=te(r.raw,d)||Number.isNaN(r.raw)),i&&(i=r.raw instanceof Date||C(f||P,r.raw)!==j),s&&(s=C(f||Te,r.formatted)!==j),a&&(a=r.raw instanceof M||z(p||X,r.raw).isValid),c&&(c=z({format:p||Oe,locale:"en"},r.formatted).isValid))}const h=l.size===w.length;return y&&g[t]?.raw===y||r&&o&&h&&n?"esriFieldTypeOID":o&&c?"esriFieldTypeTimeOnly":o&&s?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&a?"esriFieldTypeTimeOnly":o&&i?"esriFieldTypeDate":"esriFieldTypeString"}async function Qe(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:i,dateFormat:a,timeFormat:s}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?Ye(e,n,i):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:C({locale:n,format:a},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof M)return e.toString();if(e instanceof Date)return new M(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new M(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:z({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of he)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function et(e){switch(e){case U.DATE_SHORT:return"dd/MM/yyyy";case U.DATE_LONG:return"MMMM d, yyyy";case U.TIME_SHORT:return"h:mm AM/PM";case U.TIME_LONG:return"h:mm:ss AM/PM";case U.DATE_TIME_SHORT:case U.DEFAULT:return"MMM d yyyy h:mm AM/PM";case U.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case U.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case U.ISO_8601:case U.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&Me().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&Me().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function tt(e){switch(e){case U.DATE_SHORT:return"dd/MM/yyyy";case U.DATE_LONG:return"MMMM d, yyyy";case U.DATE_TIME_SHORT:case U.DEFAULT:return"MMM d yyyy";case U.DATE_TIME_LONG:return"MMMM d yyyy";case U.FULL:return"dddd, MMMM d yyyy";case U.ISO_8601:case U.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function rt(e){switch(e){case B.TIME_SHORT:return"h:mm AM/PM";case B.TIME_LONG:return"h:mm:ss AM/PM";case B.ISO_8601:case B.ROUND_TRIP:return"HH:mm:ss";default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("h")&&!t.includes("AM/PM")&&Me().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function ot(e){switch(e){case $.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case $.CURRENCY:return'"$"#,##0.00';case $.FIXED_POINT:case $.DEFAULT:return"0.0000";case $.NUMBER:return"#,##0.0000";case $.PERCENT:return"0%";case $.ROUND_TRIP:return"0.00000";default:return e}}function nt(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e;if(e instanceof M)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Be(r)),r}function it(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function at(e,t){return e.map((e=>it(e,t)))}function st(e,t){return e.map((e=>at(e,t)))}function ct(e,t,r){switch(t){case De.NUMBER:return e instanceof Date?e.getTime():H(e);case De.STRING:return e instanceof Date?v({format:r.dateFormat??U.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof M?J({format:r.timeFormat??B.ROUND_TRIP},e):"number"==typeof e?k(r.numberFormat??$.DEFAULT,e):e.toString();case De.BOOLEAN:return!!e;case De.DATE:return C(e);default:return e.toString()}}function lt(e,t){return JSON.stringify(e.toJSON())===JSON.stringify(t.toJSON())}function mt(e){return 1===e.length?new l({symbol:e[0]}):new m({field:"SymbolID",uniqueValueInfos:[...e.map(((e,t)=>new u({label:t.toString(),symbol:e,value:t})))]})}
@@ -1 +1 @@
1
- window.hierarchyData = "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"
1
+ window.hierarchyData = "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"