@vertigis/arcgis-extensions 54.8.0 → 54.9.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 (408) hide show
  1. package/data/convert.d.ts +5 -4
  2. package/data/convert.js +1 -1
  3. package/data/support/_shapefileConverter.d.ts +5 -0
  4. package/data/support/_shapefileConverter.js +1 -0
  5. package/docs/html/assets/hierarchy.js +1 -1
  6. package/docs/html/assets/highlight.css +10 -10
  7. package/docs/html/assets/navigation.js +1 -1
  8. package/docs/html/assets/search.js +1 -1
  9. package/docs/html/classes/layer-preset_LayerPreset.LayerPreset.html +1 -1
  10. package/docs/html/classes/layer-preset_LayerPresetSettings.LayerPresetSetting.html +1 -1
  11. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerExtension.html +1 -1
  12. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerRelationshipCollection.html +1 -1
  13. package/docs/html/classes/mapping_BasemapExtension.BasemapExtension.html +1 -1
  14. package/docs/html/classes/mapping_Bookmark.Bookmark.html +1 -1
  15. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtension.html +1 -1
  16. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerSchema.html +1 -1
  17. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtension.html +1 -1
  18. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerSchema.html +1 -1
  19. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtension.html +1 -1
  20. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerReadOnlySchema.html +1 -1
  21. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerExtension.html +1 -1
  22. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerSchema.html +1 -1
  23. package/docs/html/classes/mapping_CSVLayerExtension.CSVLayerExtension.html +1 -1
  24. package/docs/html/classes/mapping_ElevationLayerExtension.ElevationLayerExtension.html +1 -1
  25. package/docs/html/classes/mapping_FeatureCollectionLayerExtension.FeatureCollectionLayerExtension.html +1 -1
  26. package/docs/html/classes/mapping_FeatureLayerExtension.FeatureLayerExtension.html +1 -1
  27. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBase.html +1 -1
  28. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerReadOnlySchema.html +1 -1
  29. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerSchema.html +1 -1
  30. package/docs/html/classes/mapping_GeoJSONLayerExtension.GeoJSONLayerExtension.html +1 -1
  31. package/docs/html/classes/mapping_GeoRSSLayerExtension.GeoRSSLayerExtension.html +1 -1
  32. package/docs/html/classes/mapping_GraphicsLayerExtension.GraphicsLayerExtension.html +1 -1
  33. package/docs/html/classes/mapping_GroundExtension.GroundExtension.html +1 -1
  34. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtension.html +1 -1
  35. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtensionCollection.html +2 -2
  36. package/docs/html/classes/mapping_ImageryLayerExtension.ImageryLayerExtension.html +1 -1
  37. package/docs/html/classes/mapping_ImageryTileLayerExtension.ImageryTileLayerExtension.html +1 -1
  38. package/docs/html/classes/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtension.html +1 -1
  39. package/docs/html/classes/mapping_KMLLayerExtension.KMLLayerExtension.html +1 -1
  40. package/docs/html/classes/mapping_KMLSublayerExtension.KMLSublayerExtension.html +1 -1
  41. package/docs/html/classes/mapping_MapConstraints.MapConstraints.html +1 -1
  42. package/docs/html/classes/mapping_MapExtension.MapExtension.html +1 -1
  43. package/docs/html/classes/mapping_MapImageLayerExtension.MapImageLayerExtension.html +1 -1
  44. package/docs/html/classes/mapping_MapImageSublayerExtension.MapImageSublayerExtension.html +1 -1
  45. package/docs/html/classes/mapping_MapNotesLayerExtension.MapNotesLayerExtension.html +1 -1
  46. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtension.html +1 -1
  47. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionSchema.html +1 -1
  48. package/docs/html/classes/mapping_MediaLayerExtension.MediaLayerExtension.html +1 -1
  49. package/docs/html/classes/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtension.html +1 -1
  50. package/docs/html/classes/mapping_PointCloudLayerExtension.PointCloudLayerExtension.html +1 -1
  51. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtension.html +1 -1
  52. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtensionSchema.html +1 -1
  53. package/docs/html/classes/mapping_SceneLayerExtension.SceneLayerExtension.html +1 -1
  54. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerExtension.html +1 -1
  55. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerSchema.html +1 -1
  56. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtension.html +1 -1
  57. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerRelationshipCollection.html +1 -1
  58. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerSchema.html +1 -1
  59. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerExtension.html +1 -1
  60. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerRelationshipCollection.html +1 -1
  61. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerSchema.html +1 -1
  62. package/docs/html/classes/mapping_TileLayerExtension.TileLayerExtension.html +1 -1
  63. package/docs/html/classes/mapping_TileSublayerExtension.TileSublayerExtension.html +1 -1
  64. package/docs/html/classes/mapping_UnsupportedLayerExtension.UnsupportedLayerExtension.html +1 -1
  65. package/docs/html/classes/mapping_VectorTileLayerExtension.VectorTileLayerExtension.html +1 -1
  66. package/docs/html/classes/mapping_WFSLayerExtension.WFSLayerExtension.html +1 -1
  67. package/docs/html/classes/mapping_WMSLayerExtension.WMSLayerExtension.html +1 -1
  68. package/docs/html/classes/mapping_WMSSublayerExtension.WMSSublayerExtension.html +1 -1
  69. package/docs/html/classes/mapping_WMTSLayerExtension.WMTSLayerExtension.html +1 -1
  70. package/docs/html/classes/mapping_WebTileLayerExtension.WebTileLayerExtension.html +1 -1
  71. package/docs/html/classes/mapping__LayerExtension.LayerExtension.html +1 -1
  72. package/docs/html/classes/mapping__LayerExtension.LayerExtensionReadOnlySchema.html +1 -1
  73. package/docs/html/classes/mapping__LayerExtension.LayerExtensionSchema.html +1 -1
  74. package/docs/html/classes/mapping__LayerExtensionCollectionImpl.LayerExtensionCollectionImpl.html +2 -2
  75. package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +2 -2
  76. package/docs/html/classes/mapping__SublayerExtension.SublayerExtension.html +1 -1
  77. package/docs/html/classes/mapping__SublayerExtension.SublayerSchema.html +1 -1
  78. package/docs/html/classes/mapping_support_ArrayWrappedCollection.ArrayWrappedCollection.html +1 -1
  79. package/docs/html/classes/mapping_support_LayerListSettings.ExtensionBaseLayerListSettings.html +1 -1
  80. package/docs/html/classes/mapping_support_LayerListSettings.LayerListSettings.html +1 -1
  81. package/docs/html/classes/mapping_support__LayerExtensionCollection.LayerExtensionCollectionBase.html +2 -2
  82. package/docs/html/classes/mapping_support__SublayerExtensionCollection.SublayerExtensionCollectionBase.html +2 -2
  83. package/docs/html/classes/menus_Menu.Menu.html +1 -1
  84. package/docs/html/classes/menus_MenuItem.MenuItem.html +1 -1
  85. package/docs/html/classes/support_FormatSettings.FormatSettings.html +1 -1
  86. package/docs/html/classes/support_InitializableBase.InitializableBase.html +1 -1
  87. package/docs/html/classes/support_InitializableCollectionProxy.InitializableCollectionProxy.html +1 -1
  88. package/docs/html/classes/support_InitializeError.InitializeError.html +1 -1
  89. package/docs/html/classes/support_ReadOnlyInitializableCollection.ReadOnlyInitializableCollection.html +1 -1
  90. package/docs/html/classes/support_Serializable.SerializableBase.html +1 -1
  91. package/docs/html/classes/support_Settings.Settings.html +1 -1
  92. package/docs/html/classes/support__ArcGISRelationshipCollection.ArcGISRelationshipCollection.html +1 -1
  93. package/docs/html/classes/support_observableUtils.ObservableMixin.html +1 -1
  94. package/docs/html/classes/tasks_geocoding_ArcGISGeocoder.ArcGISGeocoder.html +1 -1
  95. package/docs/html/classes/tasks_geocoding_Geocoder.Geocoder.html +1 -1
  96. package/docs/html/classes/tasks_identify_ArcGISSublayerIdentifyProvider.ArcGISSublayerIdentifyProvider.html +1 -1
  97. package/docs/html/classes/tasks_identify_ArcGISSublayerQueryIdentifyProvider.ArcGISSublayerQueryIdentifyProvider.html +1 -1
  98. package/docs/html/classes/tasks_identify_BuildingComponentSublayerClientSideIdentifyProvider.BuildingComponentSublayerClientSideIdentifyProvider.html +1 -1
  99. package/docs/html/classes/tasks_identify_BuildingComponentSublayerHitTestIdentifyProvider.BuildingComponentSublayerHitTestIdentifyProvider.html +1 -1
  100. package/docs/html/classes/tasks_identify_CSVLayer3DHitTestIdentifyProvider.CSVLayer3DHitTestIdentifyProvider.html +1 -1
  101. package/docs/html/classes/tasks_identify_CSVLayerClientSideQueryIdentifyProvider.CSVLayerClientSideQueryIdentifyProvider.html +1 -1
  102. package/docs/html/classes/tasks_identify_ClientSideIdentifyProvider.ClientSideIdentifyProvider.html +1 -1
  103. package/docs/html/classes/tasks_identify_FeatureLayer3DHitTestIdentifyProvider.FeatureLayer3DHitTestIdentifyProvider.html +1 -1
  104. package/docs/html/classes/tasks_identify_FeatureLayerClientSideIdentifyProvider.FeatureLayerClientSideIdentifyProvider.html +1 -1
  105. package/docs/html/classes/tasks_identify_FeatureLayerQueryIdentifyProvider.FeatureLayerQueryIdentifyProvider.html +1 -1
  106. package/docs/html/classes/tasks_identify_GeoJSONLayer3DHitTestIdentifyProvider.GeoJSONLayer3DHitTestIdentifyProvider.html +1 -1
  107. package/docs/html/classes/tasks_identify_GeoJSONLayerClientSideQueryIdentifyProvider.GeoJSONLayerClientSideQueryIdentifyProvider.html +1 -1
  108. package/docs/html/classes/tasks_identify_GeoRSSLayerIdentifyProvider.GeoRSSLayerIdentifyProvider.html +1 -1
  109. package/docs/html/classes/tasks_identify_GraphicsLayerQueryIdentifyProvider.GraphicsLayerQueryIdentifyProvider.html +1 -1
  110. package/docs/html/classes/tasks_identify_HitTestIdentifyProvider.HitTestIdentifyProvider.html +1 -1
  111. package/docs/html/classes/tasks_identify_IdentifyError.IdentifyError.html +1 -1
  112. package/docs/html/classes/tasks_identify_IdentifyProviderBase.IdentifyProviderBase.html +1 -1
  113. package/docs/html/classes/tasks_identify_IdentifyService.IdentifyService.html +1 -1
  114. package/docs/html/classes/tasks_identify_ImageryLayerIdentifyProvider.ImageryLayerIdentifyProvider.html +1 -1
  115. package/docs/html/classes/tasks_identify_KMLLayerQueryIdentifyProvider.KMLLayerQueryIdentifyProvider.html +1 -1
  116. package/docs/html/classes/tasks_identify_MapNotesSublayerQueryIdentifyProvider.MapNotesSublayerQueryIdentifyProvider.html +1 -1
  117. package/docs/html/classes/tasks_identify_PointCloudLayerHitTestIdentifyProvider.PointCloudLayerHitTestIdentifyProvider.html +1 -1
  118. package/docs/html/classes/tasks_identify_RouteLayerQueryIdentifyProvider.RouteLayerQueryIdentifyProvider.html +1 -1
  119. package/docs/html/classes/tasks_identify_SceneLayerClientSideIdentifyProvider.SceneLayerClientSideIdentifyProvider.html +1 -1
  120. package/docs/html/classes/tasks_identify_SceneLayerHitTestIdentifyProvider.SceneLayerHitTestIdentifyProvider.html +1 -1
  121. package/docs/html/classes/tasks_identify_SceneLayerQueryIdentifyProvider.SceneLayerQueryIdentifyProvider.html +1 -1
  122. package/docs/html/classes/tasks_identify_StreamLayerClientSideQueryIdentifyProvider.StreamLayerClientSideQueryIdentifyProvider.html +1 -1
  123. package/docs/html/classes/tasks_identify_SubtypeSublayerClientSideIdentifyProvider.SubtypeSublayerClientSideIdentifyProvider.html +1 -1
  124. package/docs/html/classes/tasks_identify_SubtypeSublayerQueryIdentifyProvider.SubtypeSublayerQueryIdentifyProvider.html +1 -1
  125. package/docs/html/classes/tasks_identify_WFSLayerClientSideIdentifyProvider.WFSLayerClientSideIdentifyProvider.html +1 -1
  126. package/docs/html/classes/tasks_identify_WFSLayerQueryIdentifyProvider.WFSLayerQueryIdentifyProvider.html +1 -1
  127. package/docs/html/classes/tasks_identify_WMSLayerFeatureInfoIdentifyProvider.WMSLayerFeatureInfoIdentifyProvider.html +1 -1
  128. package/docs/html/classes/tasks_identify_WMSSublayerIdentifyProvider.WMSSublayerIdentifyProvider.html +1 -1
  129. package/docs/html/classes/tasks_query_ArcGISRelationship.ArcGISRelationship.html +1 -1
  130. package/docs/html/classes/tasks_query_ArcGISServiceTableQueryProvider.ArcGISServiceTableQueryProvider.html +1 -1
  131. package/docs/html/classes/tasks_query_ArcGISSublayerQueryProvider.ArcGISSublayerQueryProvider.html +1 -1
  132. package/docs/html/classes/tasks_query_BuildingComponentSublayerClientSideQueryProvider.BuildingComponentSublayerClientSideQueryProvider.html +1 -1
  133. package/docs/html/classes/tasks_query_CSVLayerClientSideQueryProvider.CSVLayerClientSideQueryProvider.html +1 -1
  134. package/docs/html/classes/tasks_query_ClientSideQueryProvider.ClientSideQueryProvider.html +1 -1
  135. package/docs/html/classes/tasks_query_FeatureLayerQueryProvider.FeatureLayerQueryProvider.html +1 -1
  136. package/docs/html/classes/tasks_query_GeoJSONLayerClientSideQueryProvider.GeoJSONLayerClientSideQueryProvider.html +1 -1
  137. package/docs/html/classes/tasks_query_GeoRSSLayerQueryProvider.GeoRSSLayerQueryProvider.html +1 -1
  138. package/docs/html/classes/tasks_query_GraphicsLayerQueryProvider.GraphicsLayerQueryProvider.html +1 -1
  139. package/docs/html/classes/tasks_query_ImageryLayerQueryProvider.ImageryLayerQueryProvider.html +1 -1
  140. package/docs/html/classes/tasks_query_KMLLayerQueryProvider.KMLLayerQueryProvider.html +1 -1
  141. package/docs/html/classes/tasks_query_MapNotesSublayerQueryProvider.MapNotesSublayerQueryProvider.html +1 -1
  142. package/docs/html/classes/tasks_query_QueryBasedRelationship.QueryBasedRelationship.html +1 -1
  143. package/docs/html/classes/tasks_query_QueryError.QueryError.html +1 -1
  144. package/docs/html/classes/tasks_query_QueryProviderBase.QueryProviderBase.html +1 -1
  145. package/docs/html/classes/tasks_query_QueryService.QueryService.html +1 -1
  146. package/docs/html/classes/tasks_query_RouteLayerQueryProvider.RouteLayerQueryProvider.html +1 -1
  147. package/docs/html/classes/tasks_query_SceneLayerClientSideQueryProvider.SceneLayerClientSideQueryProvider.html +1 -1
  148. package/docs/html/classes/tasks_query_SceneLayerQueryProvider.SceneLayerQueryProvider.html +1 -1
  149. package/docs/html/classes/tasks_query_StreamLayerClientSideQueryProvider.StreamLayerClientSideQueryProvider.html +1 -1
  150. package/docs/html/classes/tasks_query_SubtypeSublayerQueryProvider.SubtypeSublayerQueryProvider.html +1 -1
  151. package/docs/html/classes/tasks_query_WFSLayerQueryProvider.WFSLayerQueryProvider.html +1 -1
  152. package/docs/html/classes/tasks_search_ArcGISGeocoderSearchProvider.ArcGISGeocoderSearchProvider.html +1 -1
  153. package/docs/html/classes/tasks_search_GeocoderSearchProvider.GeocoderSearchProvider.html +1 -1
  154. package/docs/html/classes/tasks_search_QuerySearchProvider.QuerySearchProvider.html +1 -1
  155. package/docs/html/classes/tasks_search_SearchError.SearchError.html +1 -1
  156. package/docs/html/classes/tasks_search_SearchProviderBase.SearchProviderBase.html +1 -1
  157. package/docs/html/classes/tasks_search_SearchService.SearchService.html +1 -1
  158. package/docs/html/classes/tasks_search_SubtypeSublayerQuerySearchProvider.SubtypeSublayerQuerySearchProvider.html +1 -1
  159. package/docs/html/classes/utilities_CaseInsensitiveObservableMap.CaseInsensitiveObservableMap.html +1 -1
  160. package/docs/html/classes/utilities_CollectionProxy.CollectionProxy.html +1 -1
  161. package/docs/html/classes/utilities_CopyOnWriteCollection.CopyOnWriteCollection.html +1 -1
  162. package/docs/html/classes/utilities_GeometryServiceError.GeometryServiceError.html +1 -1
  163. package/docs/html/classes/utilities_MapTransformCollection.MapTransformCollection.html +1 -1
  164. package/docs/html/classes/utilities_ObservableMap.ObservableMap.html +1 -1
  165. package/docs/html/classes/utilities_ObservableSet.ObservableSet.html +1 -1
  166. package/docs/html/classes/utilities_ReadOnlyCollection.ReadOnlyCollection.html +1 -1
  167. package/docs/html/classes/utilities_ReadOnlyMap.ReadOnlyMap.html +2 -2
  168. package/docs/html/classes/utilities_format_date.DateFormatter.html +1 -1
  169. package/docs/html/classes/utilities_format_number.NumberFormatter.html +1 -1
  170. package/docs/html/classes/utilities_format_time.TimeFormatter.html +1 -1
  171. package/docs/html/classes/utilities_log.ConsoleLogger.html +1 -1
  172. package/docs/html/classes/utilities_log.LoggerBase.html +1 -1
  173. package/docs/html/functions/data_convert.shapefileToUploadData.html +2 -2
  174. package/docs/html/functions/data_convert.xlsxToUploadData.html +2 -2
  175. package/docs/html/functions/support_observableUtils.observable.html +3 -3
  176. package/docs/html/functions/support_observableUtils.onWatch.html +1 -1
  177. package/docs/html/functions/support_observableUtils.watch.html +2 -2
  178. package/docs/html/functions/support_observableUtils.watchEach.html +2 -2
  179. package/docs/html/functions/utilities_checkArg.checkArg.html +1 -1
  180. package/docs/html/hierarchy.html +1 -1
  181. package/docs/html/interfaces/data_Feature.PresentableAttributes.html +1 -1
  182. package/docs/html/interfaces/data_convert.FromCsvOptions.html +5 -3
  183. package/docs/html/interfaces/data_convert.FromShapefileOptions.html +5 -3
  184. package/docs/html/interfaces/data_convert.FromXLSXOptions.html +5 -3
  185. package/docs/html/interfaces/data_convert.ToCsvOptions.html +5 -3
  186. package/docs/html/interfaces/data_convert.ToShapefileOptions.html +5 -3
  187. package/docs/html/interfaces/data_convert.ToXLSXOptions.html +5 -3
  188. package/docs/html/interfaces/data_convert.UploadDataOptions.html +5 -3
  189. package/docs/html/interfaces/data_support_attachments.AttachmentEnabledLayer.html +1 -1
  190. package/docs/html/interfaces/json_AnnotationLayerJson.AnnotationLayerJson.html +1 -1
  191. package/docs/html/interfaces/json_BasemapJson.BasemapJson.html +1 -1
  192. package/docs/html/interfaces/json_BasemapLayerJson.BasemapLayerJsonBase.html +1 -1
  193. package/docs/html/interfaces/json_BingLayerJson.BingLayerJson.html +1 -1
  194. package/docs/html/interfaces/json_BuildingSceneLayerJson.BuildingSceneLayerJson.html +1 -1
  195. package/docs/html/interfaces/json_BuildingSceneSublayerJson.BuildingSceneSublayerJson.html +1 -1
  196. package/docs/html/interfaces/json_CSVLayerJson.CSVLayerJson.html +1 -1
  197. package/docs/html/interfaces/json_DomainJson.CodedValueDomainJson.html +1 -1
  198. package/docs/html/interfaces/json_DomainJson.DomainJsonBase.html +1 -1
  199. package/docs/html/interfaces/json_DomainJson.InheritedDomainJson.html +1 -1
  200. package/docs/html/interfaces/json_DomainJson.RangeDomainJson.html +1 -1
  201. package/docs/html/interfaces/json_FeatureLayerJson.FeatureLayerJson.html +1 -1
  202. package/docs/html/interfaces/json_GeoJSONLayerJson.GeoJSONLayerJson.html +1 -1
  203. package/docs/html/interfaces/json_GeoRSSLayerJson.GeoRSSLayerJson.html +1 -1
  204. package/docs/html/interfaces/json_GeometryJson.ExtentJson.html +1 -1
  205. package/docs/html/interfaces/json_GeometryJson.GeometryJsonBase.html +1 -1
  206. package/docs/html/interfaces/json_GeometryJson.MultipointJson.html +1 -1
  207. package/docs/html/interfaces/json_GeometryJson.PointJson.html +1 -1
  208. package/docs/html/interfaces/json_GeometryJson.PolygonJson.html +1 -1
  209. package/docs/html/interfaces/json_GeometryJson.PolylineJson.html +1 -1
  210. package/docs/html/interfaces/json_GroundJson.GroundJson.html +1 -1
  211. package/docs/html/interfaces/json_GroupLayerJson.GroupLayerJson.html +1 -1
  212. package/docs/html/interfaces/json_ImageServiceLayerJson.ImageServiceLayerJson.html +1 -1
  213. package/docs/html/interfaces/json_ImageServiceVectorLayerJson.ImageServiceVectorLayerJson.html +1 -1
  214. package/docs/html/interfaces/json_IntegratedMeshLayerJson.IntegratedMeshLayerJson.html +1 -1
  215. package/docs/html/interfaces/json_KMLLayerJson.KMLLayerJson.html +1 -1
  216. package/docs/html/interfaces/json_LayerDefinitionJson.DataSourceJsonBase.html +1 -1
  217. package/docs/html/interfaces/json_LayerDefinitionJson.JoinTableDataSourceJson.html +1 -1
  218. package/docs/html/interfaces/json_LayerDefinitionJson.QueryTableDataSourceJson.html +1 -1
  219. package/docs/html/interfaces/json_LayerDefinitionJson.RasterDataSourceJson.html +1 -1
  220. package/docs/html/interfaces/json_LayerDefinitionJson.TableDataSourceJson.html +1 -1
  221. package/docs/html/interfaces/json_LayerJson.BrightnessEffectFunctionJson.html +1 -1
  222. package/docs/html/interfaces/json_LayerJson.ContrastEffectFunctionJson.html +1 -1
  223. package/docs/html/interfaces/json_LayerJson.GrayscaleEffectFunctionJson.html +1 -1
  224. package/docs/html/interfaces/json_LayerJson.InvertEffectFunctionJson.html +1 -1
  225. package/docs/html/interfaces/json_LayerJson.LayerJsonBase.html +1 -1
  226. package/docs/html/interfaces/json_LayerJson.OpacityEffectFunctionJson.html +1 -1
  227. package/docs/html/interfaces/json_LayerJson.SaturateEffectFunctionJson.html +1 -1
  228. package/docs/html/interfaces/json_LayerJson.SepiaEffectFunctionJson.html +1 -1
  229. package/docs/html/interfaces/json_MapServiceLayerJson.MapServiceLayerJson.html +1 -1
  230. package/docs/html/interfaces/json_MediaLayerJson.MediaLayerJson.html +1 -1
  231. package/docs/html/interfaces/json_OpenStreetMapLayerJson.OpenStreetMapLayerJson.html +1 -1
  232. package/docs/html/interfaces/json_OperationalLayerJson.OperationalLayerJsonBase.html +1 -1
  233. package/docs/html/interfaces/json_PointCloudLayerJson.PointCloudLayerJson.html +1 -1
  234. package/docs/html/interfaces/json_PopupInfoJson.PopupElementJson.html +1 -1
  235. package/docs/html/interfaces/json_RasterDataElevationLayerJson.RasterDataElevationLayerJson.html +1 -1
  236. package/docs/html/interfaces/json_RendererJson.ClassBreaksRendererJson.html +1 -1
  237. package/docs/html/interfaces/json_RendererJson.ColorInfoJson.html +1 -1
  238. package/docs/html/interfaces/json_RendererJson.HeatmapRendererJson.html +1 -1
  239. package/docs/html/interfaces/json_RendererJson.PointCloudClassBreaksRendererJson.html +1 -1
  240. package/docs/html/interfaces/json_RendererJson.PointCloudRGBRendererJson.html +1 -1
  241. package/docs/html/interfaces/json_RendererJson.PointCloudRendererJsonBase.html +1 -1
  242. package/docs/html/interfaces/json_RendererJson.PointCloudStretchRendererJson.html +1 -1
  243. package/docs/html/interfaces/json_RendererJson.PointCloudUniqueValueRendererJson.html +1 -1
  244. package/docs/html/interfaces/json_RendererJson.PredominanceRendererJson.html +1 -1
  245. package/docs/html/interfaces/json_RendererJson.RendererJsonBase.html +1 -1
  246. package/docs/html/interfaces/json_RendererJson.RotationInfoJson.html +1 -1
  247. package/docs/html/interfaces/json_RendererJson.SimpleRendererJson.html +1 -1
  248. package/docs/html/interfaces/json_RendererJson.SizeInfoJson.html +1 -1
  249. package/docs/html/interfaces/json_RendererJson.TemporalRendererJson.html +1 -1
  250. package/docs/html/interfaces/json_RendererJson.TransparencyInfoJson.html +1 -1
  251. package/docs/html/interfaces/json_RendererJson.UniqueValueFromStyleRendererJson.html +1 -1
  252. package/docs/html/interfaces/json_RendererJson.UniqueValueRendererJson.html +1 -1
  253. package/docs/html/interfaces/json_RendererJson.VectorFieldRendererJson.html +1 -1
  254. package/docs/html/interfaces/json_RendererJson.VisualVariableJsonBase.html +1 -1
  255. package/docs/html/interfaces/json_SceneLayerJson.SceneLayerJson.html +1 -1
  256. package/docs/html/interfaces/json_StreamLayerJson.StreamLayerJson.html +1 -1
  257. package/docs/html/interfaces/json_SublayerJson.SublayerJson.html +1 -1
  258. package/docs/html/interfaces/json_SubtypeGroupLayerJson.SubtypeGroupLayerJson.html +1 -1
  259. package/docs/html/interfaces/json_SubtypeGroupLayerJson.SubtypeSubtypeGroupLayerJson.html +1 -1
  260. package/docs/html/interfaces/json_SubtypeSublayerJson.SubtypeSublayerJson.html +1 -1
  261. package/docs/html/interfaces/json_SymbolJson.CIMSymbolJson.html +1 -1
  262. package/docs/html/interfaces/json_SymbolJson.CIMSymbolReferenceJson.html +1 -1
  263. package/docs/html/interfaces/json_SymbolJson.ExtrudeSymbol3DLayerJson.html +1 -1
  264. package/docs/html/interfaces/json_SymbolJson.FillSymbol3DLayerJson.html +1 -1
  265. package/docs/html/interfaces/json_SymbolJson.IconSymbol3DLayerJson.html +1 -1
  266. package/docs/html/interfaces/json_SymbolJson.LabelSymbol3DJson.html +1 -1
  267. package/docs/html/interfaces/json_SymbolJson.LineSymbol3DJson.html +1 -1
  268. package/docs/html/interfaces/json_SymbolJson.LineSymbol3DLayerJson.html +1 -1
  269. package/docs/html/interfaces/json_SymbolJson.MeshSymbol3DJson.html +1 -1
  270. package/docs/html/interfaces/json_SymbolJson.ObjectSymbol3DLayerJson.html +1 -1
  271. package/docs/html/interfaces/json_SymbolJson.PathSymbol3DLayerJson.html +1 -1
  272. package/docs/html/interfaces/json_SymbolJson.PictureFillSymbolJson.html +1 -1
  273. package/docs/html/interfaces/json_SymbolJson.PictureMarkerSymbolJson.html +1 -1
  274. package/docs/html/interfaces/json_SymbolJson.PointSymbol3DJson.html +1 -1
  275. package/docs/html/interfaces/json_SymbolJson.PolygonSymbol3DJson.html +1 -1
  276. package/docs/html/interfaces/json_SymbolJson.SimpleFillSymbolJson.html +1 -1
  277. package/docs/html/interfaces/json_SymbolJson.SimpleLineSymbolJson.html +1 -1
  278. package/docs/html/interfaces/json_SymbolJson.SimpleMarkerSymbolJson.html +1 -1
  279. package/docs/html/interfaces/json_SymbolJson.SketchEdgesJson.html +1 -1
  280. package/docs/html/interfaces/json_SymbolJson.SolidEdgesJson.html +1 -1
  281. package/docs/html/interfaces/json_SymbolJson.Symbol3DJsonBase.html +1 -1
  282. package/docs/html/interfaces/json_SymbolJson.Symbol3DLayerJsonBase.html +1 -1
  283. package/docs/html/interfaces/json_SymbolJson.SymbolJsonBase.html +1 -1
  284. package/docs/html/interfaces/json_SymbolJson.TextSymbol3DLayerJson.html +1 -1
  285. package/docs/html/interfaces/json_SymbolJson.TextSymbolJson.html +1 -1
  286. package/docs/html/interfaces/json_TableJson.TableJson.html +1 -1
  287. package/docs/html/interfaces/json_TiledElevationServiceLayerJson.TiledElevationServiceLayerJson.html +1 -1
  288. package/docs/html/interfaces/json_TiledImageServiceLayerJson.TiledImageServiceLayerJson.html +1 -1
  289. package/docs/html/interfaces/json_TiledMapServiceLayerJson.TiledMapServiceLayerJson.html +1 -1
  290. package/docs/html/interfaces/json_VectorTileLayerJson.VectorTileLayerJson.html +1 -1
  291. package/docs/html/interfaces/json_WFSLayerJson.WFSLayerJson.html +1 -1
  292. package/docs/html/interfaces/json_WMSLayerJson.WMSLayerJson.html +1 -1
  293. package/docs/html/interfaces/json_WMSSublayerJson.WMSSublayerJson.html +1 -1
  294. package/docs/html/interfaces/json_WebMapJson.WebMapJson.html +1 -1
  295. package/docs/html/interfaces/json_WebMapJson.WebMapJsonBase.html +1 -1
  296. package/docs/html/interfaces/json_WebSceneJson.WebSceneJson.html +1 -1
  297. package/docs/html/interfaces/json_WebTileLayerJson.WebTileLayerJson.html +1 -1
  298. package/docs/html/interfaces/layer-preset_LayerPreset.LayerPresetProperties.html +1 -1
  299. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerExtensionCollection.html +1 -1
  300. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerExtensionProperties.html +1 -1
  301. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerProperties.html +1 -1
  302. package/docs/html/interfaces/mapping_BasemapExtension.BasemapExtensionProperties.html +1 -1
  303. package/docs/html/interfaces/mapping_BasemapExtension.BasemapProperties.html +1 -1
  304. package/docs/html/interfaces/mapping_Bookmark.BookmarkProperties.html +1 -1
  305. package/docs/html/interfaces/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtensionProperties.html +1 -1
  306. package/docs/html/interfaces/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtensionProperties.html +1 -1
  307. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtensionProperties.html +1 -1
  308. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSceneLayerProperties.html +1 -1
  309. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSublayerExtensionCollection.html +1 -1
  310. package/docs/html/interfaces/mapping_BuildingSublayerExtension.BuildingSublayerExtensionProperties.html +1 -1
  311. package/docs/html/interfaces/mapping_BuildingSublayerExtension.BuildingSublayerProperties.html +1 -1
  312. package/docs/html/interfaces/mapping_CSVLayerExtension.CSVLayerExtensionProperties.html +1 -1
  313. package/docs/html/interfaces/mapping_ElevationLayerExtension.ElevationLayerExtensionProperties.html +1 -1
  314. package/docs/html/interfaces/mapping_FeatureLayerExtension.FeatureLayerExtensionProperties.html +1 -1
  315. package/docs/html/interfaces/mapping_FeatureLayerExtension.FeatureLayerProperties.html +1 -1
  316. package/docs/html/interfaces/mapping_FeatureLayerExtensionBase.FeatureLayerBaseProperties.html +1 -1
  317. package/docs/html/interfaces/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBaseProperties.html +1 -1
  318. package/docs/html/interfaces/mapping_GeoJSONLayerExtension.GeoJSONLayerExtensionProperties.html +1 -1
  319. package/docs/html/interfaces/mapping_GeoRSSLayerExtension.GeoRSSLayerExtensionProperties.html +1 -1
  320. package/docs/html/interfaces/mapping_GraphicsLayerExtension.GraphicsLayerExtensionProperties.html +1 -1
  321. package/docs/html/interfaces/mapping_GroundExtension.GroundExtensionProperties.html +1 -1
  322. package/docs/html/interfaces/mapping_GroundExtension.GroundProperties.html +1 -1
  323. package/docs/html/interfaces/mapping_GroupLayerExtension.GroupLayerExtensionProperties.html +1 -1
  324. package/docs/html/interfaces/mapping_ImageryLayerExtension.ImageryLayerExtensionProperties.html +1 -1
  325. package/docs/html/interfaces/mapping_ImageryTileLayerExtension.ImageryTileLayerExtensionProperties.html +1 -1
  326. package/docs/html/interfaces/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtensionProperties.html +1 -1
  327. package/docs/html/interfaces/mapping_KMLLayerExtension.KMLLayerExtensionProperties.html +1 -1
  328. package/docs/html/interfaces/mapping_KMLSublayerExtension.KMLSublayerExtensionCollection.html +1 -1
  329. package/docs/html/interfaces/mapping_KMLSublayerExtension.KMLSublayerExtensionProperties.html +1 -1
  330. package/docs/html/interfaces/mapping_MapExtension.MapExtensionEvents.html +1 -1
  331. package/docs/html/interfaces/mapping_MapExtension.MapExtensionProperties.html +1 -1
  332. package/docs/html/interfaces/mapping_MapExtension.TableExtensionCollection.html +1 -1
  333. package/docs/html/interfaces/mapping_MapImageLayerExtension.MapImageLayerExtensionProperties.html +1 -1
  334. package/docs/html/interfaces/mapping_MapImageSublayerExtension.MapImageSublayerExtensionProperties.html +1 -1
  335. package/docs/html/interfaces/mapping_MapImageSublayerExtension.MapImageSublayerProperties.html +1 -1
  336. package/docs/html/interfaces/mapping_MapNotesLayerExtension.MapNotesLayerExtensionProperties.html +1 -1
  337. package/docs/html/interfaces/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionCollection.html +1 -1
  338. package/docs/html/interfaces/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionProperties.html +1 -1
  339. package/docs/html/interfaces/mapping_MediaLayerExtension.MediaLayerExtensionProperties.html +1 -1
  340. package/docs/html/interfaces/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtensionProperties.html +1 -1
  341. package/docs/html/interfaces/mapping_PointCloudLayerExtension.PointCloudLayerExtensionProperties.html +1 -1
  342. package/docs/html/interfaces/mapping_PointCloudLayerExtension.PointCloudLayerProperties.html +1 -1
  343. package/docs/html/interfaces/mapping_RouteLayerExtension.RouteLayerExtensionProperties.html +1 -1
  344. package/docs/html/interfaces/mapping_SceneLayerExtension.SceneLayerExtensionProperties.html +1 -1
  345. package/docs/html/interfaces/mapping_StreamLayerExtension.StreamLayerExtensionProperties.html +1 -1
  346. package/docs/html/interfaces/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtensionProperties.html +1 -1
  347. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerExtensionCollection.html +1 -1
  348. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerExtensionProperties.html +1 -1
  349. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerProperties.html +1 -1
  350. package/docs/html/interfaces/mapping_TileLayerExtension.TileLayerExtensionProperties.html +1 -1
  351. package/docs/html/interfaces/mapping_TileSublayerExtension.TileSublayerExtensionProperties.html +1 -1
  352. package/docs/html/interfaces/mapping_TileSublayerExtension.TileSublayerProperties.html +1 -1
  353. package/docs/html/interfaces/mapping_VectorTileLayerExtension.VectorTileLayerExtensionProperties.html +1 -1
  354. package/docs/html/interfaces/mapping_WFSLayerExtension.WFSLayerExtensionProperties.html +1 -1
  355. package/docs/html/interfaces/mapping_WMSLayerExtension.WMSLayerExtensionProperties.html +1 -1
  356. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerExtensionCollection.html +1 -1
  357. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerExtensionProperties.html +1 -1
  358. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerProperties.html +1 -1
  359. package/docs/html/interfaces/mapping_WMTSLayerExtension.WMTSLayerExtensionProperties.html +1 -1
  360. package/docs/html/interfaces/mapping_WebTileLayerExtension.WebTileLayerExtensionProperties.html +1 -1
  361. package/docs/html/interfaces/mapping__LayerExtension.LayerExtensionProperties.html +1 -1
  362. package/docs/html/interfaces/mapping__SublayerExtension.SublayerExtensionProperties.html +1 -1
  363. package/docs/html/interfaces/mapping__SublayerExtension.SublayerProperties.html +1 -1
  364. package/docs/html/interfaces/mapping_support__LayerExtensionCollection.LayerExtensionCollection.html +1 -1
  365. package/docs/html/interfaces/mapping_support__SublayerExtensionCollection.SublayerExtensionCollection.html +1 -1
  366. package/docs/html/interfaces/menus_Menu.MenuProperties.html +1 -1
  367. package/docs/html/interfaces/menus_MenuItem.MenuItemProperties.html +1 -1
  368. package/docs/html/interfaces/support_ArcGISRequestHelper.ArcGISRequestHelperResponse.html +1 -1
  369. package/docs/html/interfaces/support_InitializableBase.Initializable.html +1 -1
  370. package/docs/html/interfaces/support_InitializableBase.InitializableBaseEvents.html +1 -1
  371. package/docs/html/interfaces/support_InitializableBase.InitializableBaseProperties.html +1 -1
  372. package/docs/html/interfaces/support_InitializableCollectionProxy.InitializableCollection.html +1 -1
  373. package/docs/html/interfaces/support_Serializable.Serializable.html +1 -1
  374. package/docs/html/interfaces/support_Settings.SettingsEvents.html +1 -1
  375. package/docs/html/interfaces/support__restApiJson.RestApiMapServiceTimeInfo.html +1 -1
  376. package/docs/html/interfaces/support__restApiJson.RestApiServiceTimeInfo.html +1 -1
  377. package/docs/html/interfaces/support_esri.LayerWithSublayers.html +1 -1
  378. package/docs/html/interfaces/support_esri.SublayerLike.html +1 -1
  379. package/docs/html/interfaces/support_observableUtils.WatchEachOptions.html +4 -4
  380. package/docs/html/interfaces/support_observableUtils.WatchOptions.html +4 -4
  381. package/docs/html/interfaces/tasks_geocoding_ArcGISGeocoder.ArcGISGeocoderProperties.html +1 -1
  382. package/docs/html/interfaces/tasks_geocoding_Geocoder.GeocoderCapabilities.html +1 -1
  383. package/docs/html/interfaces/tasks_geocoding_Geocoder.GeocoderProperties.html +1 -1
  384. package/docs/html/interfaces/tasks_query_ArcGISRelationship.ArcGISRelationshipProperties.html +1 -1
  385. package/docs/html/interfaces/tasks_query_QueryBasedRelationship.QueryBasedRelationshipProperties.html +1 -1
  386. package/docs/html/interfaces/utilities_ObservableMap.MapAfterItemEvent.html +1 -1
  387. package/docs/html/interfaces/utilities_ObservableSet.SetAfterItemEvent.html +1 -1
  388. package/docs/html/interfaces/utilities__layers.LayerWithLegendEnabledProperty.html +1 -1
  389. package/docs/html/interfaces/utilities__layers.TimeAwareLayer.html +1 -1
  390. package/docs/html/interfaces/utilities_collection.AfterItemChangeEvent.html +1 -1
  391. package/docs/html/interfaces/utilities_format_FormatSettings.FormatSettings.html +1 -1
  392. package/docs/html/interfaces/utilities_format_date.DateFormatterProperties.html +1 -1
  393. package/docs/html/interfaces/utilities_format_date.DateSettings.html +1 -1
  394. package/docs/html/interfaces/utilities_format_number.NumberFormatterProperties.html +1 -1
  395. package/docs/html/interfaces/utilities_format_number.NumberSettings.html +1 -1
  396. package/docs/html/interfaces/utilities_format_string.FormatOptions.html +1 -1
  397. package/docs/html/interfaces/utilities_format_time.TimeFormatterProperties.html +1 -1
  398. package/docs/html/interfaces/utilities_format_time.TimeSettings.html +1 -1
  399. package/docs/html/interfaces/utilities_log.LogMessageOptions.html +1 -1
  400. package/docs/html/interfaces/utilities_log.LogMessageResourceOptions.html +1 -1
  401. package/docs/html/modules/data_support__shapefileConverter.html +1 -0
  402. package/docs/html/modules.html +1 -1
  403. package/docs/html/types/support_observableUtils.WhenOptions.html +1 -1
  404. package/docs/html/variables/data_support__shapefileConverter.SHAPEFILE_FIELD_FID.html +3 -0
  405. package/docs/html/variables/version.version.html +1 -1
  406. package/package.json +3 -3
  407. package/version.d.ts +1 -1
  408. package/version.js +1 -1
package/data/convert.d.ts CHANGED
@@ -265,8 +265,9 @@ interface ConversionFormatOptions {
265
265
  */
266
266
  escapeFormulaChars?: boolean;
267
267
  /**
268
- * Indicates if a primary key should be generated if not found, defaults to
269
- * true.
268
+ * Indicates if a primary key should be generated if not found.
269
+ *
270
+ * @default false
270
271
  */
271
272
  generatePrimaryKey?: boolean;
272
273
  }
@@ -398,7 +399,7 @@ export declare function toXLSX(featureSet: FeatureSet, options?: ToXLSXOptions):
398
399
  * @param xlsxData The blob.
399
400
  * @param options Options for the conversion.
400
401
  */
401
- export declare function xlsxToUploadData(xlsxData: Blob, options: FromXLSXOptions): Promise<UploadDataOptions>;
402
+ export declare function xlsxToUploadData(xlsxData: Blob, options?: FromXLSXOptions): Promise<UploadDataOptions>;
402
403
  /**
403
404
  * Converts a Blob that represents XLSX data to a
404
405
  * {@link data/FeatureSet!FeatureSet}.
@@ -478,7 +479,7 @@ export declare function fgdbToLayerExtensions(fgdbBlob: Blob, options: FgdbToLay
478
479
  * @param shapefileData The data to convert.
479
480
  * @param options Options for the conversion.
480
481
  */
481
- export declare function shapefileToUploadData(shapefileData: Blob, options: FromShapefileOptions): Promise<UploadDataOptions>;
482
+ export declare function shapefileToUploadData(shapefileData: Blob, options?: FromShapefileOptions): Promise<UploadDataOptions>;
482
483
  /**
483
484
  * Converts a Blob that represents zipped Shapefile data to a
484
485
  * {@link data/FeatureSet!FeatureSet}.
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 N}from"../mapping/FeatureCollectionLayerExtension.js";import{GroupLayerExtension as T}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 G}from"../utilities/esri.js";import{parse as _,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";const de=["=","-","+","@"],ge='"',we="\r\n",he="\n",Fe=[...C.map(Qe),"M/d/yy"],Se=[...z.map(tt).map((e=>e.replace("AM/PM","tt")))],Ne=10,Te=/(\w+)_(point|multipoint|polyline|polygon)z?/;var Oe;function xe(){return V("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(Oe||(Oe={}));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 be=[[GeometryFormat.ARCGIS_JSON,ke],[GeometryFormat.GEO_JSON,ze],[GeometryFormat.WKT,Je]],De=new Map(be);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=>qe(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],ke);case GeometryFormat.GEO_JSON:return f(e[0],ze);case GeometryFormat.WKT:return f(e[0],Je);default:return M(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=Xe(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 Ye(t,c,o);if(y===GeometryFormat.NONE)return{columnIndices:[]};return d.length>1?u(d,y):f(d[0],De.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=Ke(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 Ve(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 Ce(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")?we:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:i,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=Ie(r,o),f=Ge(r,c,e.schema,!0),p=Ge(r,c,e.schema,!1);if(i){const e=[];for(const t of u)e.push(ve(t,o));for(const t of f)e.push(ve(t,o));for(const t of p)e.push(ve(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=je(e,t,r),n=e.schema.findFieldByName(t)?.type;return ve(Pe(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await Le(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":Pe(e,t))));return r.map((e=>""===e?"":ve(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===we?"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=Ee(t),n=o.rowDelimiter||function(e){let t=he;return He(e,we,((r,o)=>(0===r&&o===e.length||(t=we),!1))),t}(r),a=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(He(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;He(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,t.locale),i=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return He(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:Be(a,t,o.length)}),!0})),o};if(He(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}=t;if(!s){const[e,t]=await Ye(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=Ee(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 Ce(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(", ");xe().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=Ie(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(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 Le(e.geometry,o));for(const r of u){const n=ot(e.attributes.get(r),o);t.push(n)}for(const a of f){const i=je(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=ot(i,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void xe().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=tt(c??U.ROUND_TRIP):n.has(e)?t.z=et(s??P.ROUND_TRIP):t.z=Qe(s??P.ROUND_TRIP):"n"===t.t&&(t.z=rt(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=Re(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:a}=t;if(!n){const[e,t]=await Ye(o,r.inSpatialReference,r.includeHeaderRow);n=e,a=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:a}}export async function xlsxToFeatureSet(e,t){D("xlsxData",e).isNotMissing();const r=Re(t);return uploadDataToFeatureSet(await xlsxToUploadData(e,r))}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)||G(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=>Ce(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]:Oe.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>Ue(e,a)))){n[a]=Oe.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]=Oe.NUMBER;break;case"date":case"timestamp-offset":n[a]=o?Oe.NUMBER:Oe.DATE;break;default:n[a]=Oe.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?Oe.NUMBER:Oe.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=Oe.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=Oe.BOOLEAN:n[a]=Oe.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),nt(a,e)}if(R(e))return at(e.points,e);if(A(e))return it(e.paths,e);if(I(e))return it(e.rings,e);if(G(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=je(i,a,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=st(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(ct(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 T({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:lt(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 N({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:lt(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 N({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=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 T(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=Ae(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(Te);return r?(t=r[1],e.filter((e=>{const r=e.match(Te);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())));return{data: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),...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[w],inSpatialReference:g[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){D("shapefileData",e).isNotMissing();const r=Ae(t);return uploadDataToFeatureSet(await shapefileToUploadData(e,r))}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 Me(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:S,detectOid:!e?.primaryKeyField}}function Ee(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...Me(e)},...e}}function Re(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...Me(e)},...e}}function Ae(e){return{...{...Me(e)},...e}}function Ie(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 _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 Le(e,t){const r=await Ce(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 Ce(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await J([e],t))[0]:e}function ve(e,t){const r=[t.delimiter,ge,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(ge,"g"),`${ge}${ge}`);return`${ge}${t}${ge}`}return e}function Pe(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=$e(r)),r}function je(e,t,r){if(r.useFormattedValues||Ue(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=_(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 Ue(e,t){return!!te(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function $e(e){for(const t of de)if(e.startsWith(t))return`\t${e}`;return e}function Be(e,t,r){const o=e.startsWith(ge),n=e.endsWith(ge);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 He(a,ge,((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(`${ge}${ge}`,"g"),ge)}function He(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(ge)?(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 ke(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 ze(e,t){const r=await K(JSON.parse(e));return r.spatialReference=t,r}async function Je(e,t){const r=await W(e);return r.spatialReference=t,r}function Xe(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 We(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 qe(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:$({locale:t,format:r},e)}async function Ye(e,t,r){const o=r?e.slice(1):e;if(r){const r=Xe(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of be){try{await Ze(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=Xe(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of be){const n=await We(o[0],r);if(void 0!==n){try{await Ze(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function Ze(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 Ke(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||_(f||C,r.raw)!==v),s&&(s=_(f||Fe,r.formatted)!==v),i&&(i=r.raw instanceof b||H(p||z,r.raw).isValid),c&&(c=H({format:p||Se,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 Ve(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?qe(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:_({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 de)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function Qe(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")&&xe().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&xe().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function et(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 tt(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")&&xe().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function rt(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 ot(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=$e(r)),r}function nt(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=>nt(e,t)))}function it(e,t){return e.map((e=>at(e,t)))}function st(e,t,r){switch(t){case Oe.NUMBER:return e instanceof Date?e.getTime():$(e);case Oe.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 Oe.BOOLEAN:return!!e;case Oe.DATE:return _(e);default:return e.toString()}}function ct(e,t){return JSON.stringify(e.toJSON())===JSON.stringify(t.toJSON())}function lt(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 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=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})))]})}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Name of the default primary key field (`FID`) added to shapefile attribute
3
+ * tables when no primary key field exists.
4
+ */
5
+ export declare const SHAPEFILE_FIELD_FID = "FID";
@@ -0,0 +1 @@
1
+ export const SHAPEFILE_FIELD_FID="FID";export function addAndPopulateFidField(r){const[t,...n]=r;if(!t)return;return t.some((r=>"FID"===r.raw))||(t.unshift({raw:"FID"}),n.forEach(((r,t)=>{r.unshift({raw:t})}))),"FID"}
@@ -1 +1 @@
1
- window.hierarchyData = "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"
1
+ window.hierarchyData = "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"
@@ -1,14 +1,14 @@
1
1
  :root {
2
- --light-hl-0: #001080;
3
- --dark-hl-0: #9CDCFE;
4
- --light-hl-1: #000000;
5
- --dark-hl-1: #D4D4D4;
6
- --light-hl-2: #795E26;
7
- --dark-hl-2: #DCDCAA;
8
- --light-hl-3: #A31515;
9
- --dark-hl-3: #CE9178;
10
- --light-hl-4: #0000FF;
11
- --dark-hl-4: #569CD6;
2
+ --light-hl-0: #0000FF;
3
+ --dark-hl-0: #569CD6;
4
+ --light-hl-1: #001080;
5
+ --dark-hl-1: #9CDCFE;
6
+ --light-hl-2: #000000;
7
+ --dark-hl-2: #D4D4D4;
8
+ --light-hl-3: #795E26;
9
+ --dark-hl-3: #DCDCAA;
10
+ --light-hl-4: #A31515;
11
+ --dark-hl-4: #CE9178;
12
12
  --light-hl-5: #008000;
13
13
  --dark-hl-5: #6A9955;
14
14
  --light-hl-6: #0070C1;
@@ -1 +1 @@
1
- window.navigationData = "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"
1
+ window.navigationData = "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"