@vertigis/arcgis-extensions 54.8.1 → 54.10.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 (418) hide show
  1. package/data/convert.d.ts +5 -4
  2. package/data/convert.js +1 -1
  3. package/data/support/_lpkxConverter.d.ts +1 -1
  4. package/data/support/_lpkxConverter.js +1 -1
  5. package/data/support/_shapefileConverter.d.ts +5 -0
  6. package/data/support/_shapefileConverter.js +1 -0
  7. package/data/support/lpkxInterfaces.d.ts +93 -0
  8. package/docs/html/assets/hierarchy.js +1 -1
  9. package/docs/html/assets/highlight.css +10 -10
  10. package/docs/html/assets/navigation.js +1 -1
  11. package/docs/html/assets/search.js +1 -1
  12. package/docs/html/classes/layer-preset_LayerPreset.LayerPreset.html +1 -1
  13. package/docs/html/classes/layer-preset_LayerPresetSettings.LayerPresetSetting.html +1 -1
  14. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerExtension.html +1 -1
  15. package/docs/html/classes/mapping_ArcGISSublayerExtension.ArcGISSublayerRelationshipCollection.html +1 -1
  16. package/docs/html/classes/mapping_BasemapExtension.BasemapExtension.html +1 -1
  17. package/docs/html/classes/mapping_Bookmark.Bookmark.html +1 -1
  18. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtension.html +1 -1
  19. package/docs/html/classes/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerSchema.html +1 -1
  20. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtension.html +1 -1
  21. package/docs/html/classes/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerSchema.html +1 -1
  22. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtension.html +1 -1
  23. package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerReadOnlySchema.html +1 -1
  24. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerExtension.html +1 -1
  25. package/docs/html/classes/mapping_BuildingSublayerExtension.BuildingSublayerSchema.html +1 -1
  26. package/docs/html/classes/mapping_CSVLayerExtension.CSVLayerExtension.html +1 -1
  27. package/docs/html/classes/mapping_ElevationLayerExtension.ElevationLayerExtension.html +1 -1
  28. package/docs/html/classes/mapping_FeatureCollectionLayerExtension.FeatureCollectionLayerExtension.html +1 -1
  29. package/docs/html/classes/mapping_FeatureLayerExtension.FeatureLayerExtension.html +1 -1
  30. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBase.html +1 -1
  31. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerReadOnlySchema.html +1 -1
  32. package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerSchema.html +1 -1
  33. package/docs/html/classes/mapping_GeoJSONLayerExtension.GeoJSONLayerExtension.html +1 -1
  34. package/docs/html/classes/mapping_GeoRSSLayerExtension.GeoRSSLayerExtension.html +1 -1
  35. package/docs/html/classes/mapping_GraphicsLayerExtension.GraphicsLayerExtension.html +1 -1
  36. package/docs/html/classes/mapping_GroundExtension.GroundExtension.html +1 -1
  37. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtension.html +1 -1
  38. package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtensionCollection.html +2 -2
  39. package/docs/html/classes/mapping_ImageryLayerExtension.ImageryLayerExtension.html +1 -1
  40. package/docs/html/classes/mapping_ImageryTileLayerExtension.ImageryTileLayerExtension.html +1 -1
  41. package/docs/html/classes/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtension.html +1 -1
  42. package/docs/html/classes/mapping_KMLLayerExtension.KMLLayerExtension.html +1 -1
  43. package/docs/html/classes/mapping_KMLSublayerExtension.KMLSublayerExtension.html +1 -1
  44. package/docs/html/classes/mapping_MapConstraints.MapConstraints.html +1 -1
  45. package/docs/html/classes/mapping_MapExtension.MapExtension.html +1 -1
  46. package/docs/html/classes/mapping_MapImageLayerExtension.MapImageLayerExtension.html +1 -1
  47. package/docs/html/classes/mapping_MapImageSublayerExtension.MapImageSublayerExtension.html +1 -1
  48. package/docs/html/classes/mapping_MapNotesLayerExtension.MapNotesLayerExtension.html +1 -1
  49. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtension.html +1 -1
  50. package/docs/html/classes/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionSchema.html +1 -1
  51. package/docs/html/classes/mapping_MediaLayerExtension.MediaLayerExtension.html +1 -1
  52. package/docs/html/classes/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtension.html +1 -1
  53. package/docs/html/classes/mapping_PointCloudLayerExtension.PointCloudLayerExtension.html +1 -1
  54. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtension.html +1 -1
  55. package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtensionSchema.html +1 -1
  56. package/docs/html/classes/mapping_SceneLayerExtension.SceneLayerExtension.html +1 -1
  57. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerExtension.html +1 -1
  58. package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerSchema.html +1 -1
  59. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtension.html +1 -1
  60. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerRelationshipCollection.html +1 -1
  61. package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerSchema.html +1 -1
  62. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerExtension.html +1 -1
  63. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerRelationshipCollection.html +1 -1
  64. package/docs/html/classes/mapping_SubtypeSublayerExtension.SubtypeSublayerSchema.html +1 -1
  65. package/docs/html/classes/mapping_TileLayerExtension.TileLayerExtension.html +1 -1
  66. package/docs/html/classes/mapping_TileSublayerExtension.TileSublayerExtension.html +1 -1
  67. package/docs/html/classes/mapping_UnsupportedLayerExtension.UnsupportedLayerExtension.html +1 -1
  68. package/docs/html/classes/mapping_VectorTileLayerExtension.VectorTileLayerExtension.html +1 -1
  69. package/docs/html/classes/mapping_WFSLayerExtension.WFSLayerExtension.html +1 -1
  70. package/docs/html/classes/mapping_WMSLayerExtension.WMSLayerExtension.html +1 -1
  71. package/docs/html/classes/mapping_WMSSublayerExtension.WMSSublayerExtension.html +1 -1
  72. package/docs/html/classes/mapping_WMTSLayerExtension.WMTSLayerExtension.html +1 -1
  73. package/docs/html/classes/mapping_WebTileLayerExtension.WebTileLayerExtension.html +1 -1
  74. package/docs/html/classes/mapping__LayerExtension.LayerExtension.html +1 -1
  75. package/docs/html/classes/mapping__LayerExtension.LayerExtensionReadOnlySchema.html +1 -1
  76. package/docs/html/classes/mapping__LayerExtension.LayerExtensionSchema.html +1 -1
  77. package/docs/html/classes/mapping__LayerExtensionCollectionImpl.LayerExtensionCollectionImpl.html +2 -2
  78. package/docs/html/classes/mapping__SublayerExtension.SubSublayerExtensionCollection.html +2 -2
  79. package/docs/html/classes/mapping__SublayerExtension.SublayerExtension.html +1 -1
  80. package/docs/html/classes/mapping__SublayerExtension.SublayerSchema.html +1 -1
  81. package/docs/html/classes/mapping_support_ArrayWrappedCollection.ArrayWrappedCollection.html +1 -1
  82. package/docs/html/classes/mapping_support_LayerListSettings.ExtensionBaseLayerListSettings.html +1 -1
  83. package/docs/html/classes/mapping_support_LayerListSettings.LayerListSettings.html +1 -1
  84. package/docs/html/classes/mapping_support__LayerExtensionCollection.LayerExtensionCollectionBase.html +2 -2
  85. package/docs/html/classes/mapping_support__SublayerExtensionCollection.SublayerExtensionCollectionBase.html +2 -2
  86. package/docs/html/classes/menus_Menu.Menu.html +1 -1
  87. package/docs/html/classes/menus_MenuItem.MenuItem.html +1 -1
  88. package/docs/html/classes/support_FormatSettings.FormatSettings.html +1 -1
  89. package/docs/html/classes/support_InitializableBase.InitializableBase.html +1 -1
  90. package/docs/html/classes/support_InitializableCollectionProxy.InitializableCollectionProxy.html +1 -1
  91. package/docs/html/classes/support_InitializeError.InitializeError.html +1 -1
  92. package/docs/html/classes/support_ReadOnlyInitializableCollection.ReadOnlyInitializableCollection.html +1 -1
  93. package/docs/html/classes/support_Serializable.SerializableBase.html +1 -1
  94. package/docs/html/classes/support_Settings.Settings.html +1 -1
  95. package/docs/html/classes/support__ArcGISRelationshipCollection.ArcGISRelationshipCollection.html +1 -1
  96. package/docs/html/classes/support_observableUtils.ObservableMixin.html +1 -1
  97. package/docs/html/classes/tasks_geocoding_ArcGISGeocoder.ArcGISGeocoder.html +1 -1
  98. package/docs/html/classes/tasks_geocoding_Geocoder.Geocoder.html +1 -1
  99. package/docs/html/classes/tasks_identify_ArcGISSublayerIdentifyProvider.ArcGISSublayerIdentifyProvider.html +1 -1
  100. package/docs/html/classes/tasks_identify_ArcGISSublayerQueryIdentifyProvider.ArcGISSublayerQueryIdentifyProvider.html +1 -1
  101. package/docs/html/classes/tasks_identify_BuildingComponentSublayerClientSideIdentifyProvider.BuildingComponentSublayerClientSideIdentifyProvider.html +1 -1
  102. package/docs/html/classes/tasks_identify_BuildingComponentSublayerHitTestIdentifyProvider.BuildingComponentSublayerHitTestIdentifyProvider.html +1 -1
  103. package/docs/html/classes/tasks_identify_CSVLayer3DHitTestIdentifyProvider.CSVLayer3DHitTestIdentifyProvider.html +1 -1
  104. package/docs/html/classes/tasks_identify_CSVLayerClientSideQueryIdentifyProvider.CSVLayerClientSideQueryIdentifyProvider.html +1 -1
  105. package/docs/html/classes/tasks_identify_ClientSideIdentifyProvider.ClientSideIdentifyProvider.html +1 -1
  106. package/docs/html/classes/tasks_identify_FeatureLayer3DHitTestIdentifyProvider.FeatureLayer3DHitTestIdentifyProvider.html +1 -1
  107. package/docs/html/classes/tasks_identify_FeatureLayerClientSideIdentifyProvider.FeatureLayerClientSideIdentifyProvider.html +1 -1
  108. package/docs/html/classes/tasks_identify_FeatureLayerQueryIdentifyProvider.FeatureLayerQueryIdentifyProvider.html +1 -1
  109. package/docs/html/classes/tasks_identify_GeoJSONLayer3DHitTestIdentifyProvider.GeoJSONLayer3DHitTestIdentifyProvider.html +1 -1
  110. package/docs/html/classes/tasks_identify_GeoJSONLayerClientSideQueryIdentifyProvider.GeoJSONLayerClientSideQueryIdentifyProvider.html +1 -1
  111. package/docs/html/classes/tasks_identify_GeoRSSLayerIdentifyProvider.GeoRSSLayerIdentifyProvider.html +1 -1
  112. package/docs/html/classes/tasks_identify_GraphicsLayerQueryIdentifyProvider.GraphicsLayerQueryIdentifyProvider.html +1 -1
  113. package/docs/html/classes/tasks_identify_HitTestIdentifyProvider.HitTestIdentifyProvider.html +1 -1
  114. package/docs/html/classes/tasks_identify_IdentifyError.IdentifyError.html +1 -1
  115. package/docs/html/classes/tasks_identify_IdentifyProviderBase.IdentifyProviderBase.html +1 -1
  116. package/docs/html/classes/tasks_identify_IdentifyService.IdentifyService.html +1 -1
  117. package/docs/html/classes/tasks_identify_ImageryLayerIdentifyProvider.ImageryLayerIdentifyProvider.html +1 -1
  118. package/docs/html/classes/tasks_identify_KMLLayerQueryIdentifyProvider.KMLLayerQueryIdentifyProvider.html +1 -1
  119. package/docs/html/classes/tasks_identify_MapNotesSublayerQueryIdentifyProvider.MapNotesSublayerQueryIdentifyProvider.html +1 -1
  120. package/docs/html/classes/tasks_identify_PointCloudLayerHitTestIdentifyProvider.PointCloudLayerHitTestIdentifyProvider.html +1 -1
  121. package/docs/html/classes/tasks_identify_RouteLayerQueryIdentifyProvider.RouteLayerQueryIdentifyProvider.html +1 -1
  122. package/docs/html/classes/tasks_identify_SceneLayerClientSideIdentifyProvider.SceneLayerClientSideIdentifyProvider.html +1 -1
  123. package/docs/html/classes/tasks_identify_SceneLayerHitTestIdentifyProvider.SceneLayerHitTestIdentifyProvider.html +1 -1
  124. package/docs/html/classes/tasks_identify_SceneLayerQueryIdentifyProvider.SceneLayerQueryIdentifyProvider.html +1 -1
  125. package/docs/html/classes/tasks_identify_StreamLayerClientSideQueryIdentifyProvider.StreamLayerClientSideQueryIdentifyProvider.html +1 -1
  126. package/docs/html/classes/tasks_identify_SubtypeSublayerClientSideIdentifyProvider.SubtypeSublayerClientSideIdentifyProvider.html +1 -1
  127. package/docs/html/classes/tasks_identify_SubtypeSublayerQueryIdentifyProvider.SubtypeSublayerQueryIdentifyProvider.html +1 -1
  128. package/docs/html/classes/tasks_identify_WFSLayerClientSideIdentifyProvider.WFSLayerClientSideIdentifyProvider.html +1 -1
  129. package/docs/html/classes/tasks_identify_WFSLayerQueryIdentifyProvider.WFSLayerQueryIdentifyProvider.html +1 -1
  130. package/docs/html/classes/tasks_identify_WMSLayerFeatureInfoIdentifyProvider.WMSLayerFeatureInfoIdentifyProvider.html +1 -1
  131. package/docs/html/classes/tasks_identify_WMSSublayerIdentifyProvider.WMSSublayerIdentifyProvider.html +1 -1
  132. package/docs/html/classes/tasks_query_ArcGISRelationship.ArcGISRelationship.html +1 -1
  133. package/docs/html/classes/tasks_query_ArcGISServiceTableQueryProvider.ArcGISServiceTableQueryProvider.html +1 -1
  134. package/docs/html/classes/tasks_query_ArcGISSublayerQueryProvider.ArcGISSublayerQueryProvider.html +1 -1
  135. package/docs/html/classes/tasks_query_BuildingComponentSublayerClientSideQueryProvider.BuildingComponentSublayerClientSideQueryProvider.html +1 -1
  136. package/docs/html/classes/tasks_query_CSVLayerClientSideQueryProvider.CSVLayerClientSideQueryProvider.html +1 -1
  137. package/docs/html/classes/tasks_query_ClientSideQueryProvider.ClientSideQueryProvider.html +1 -1
  138. package/docs/html/classes/tasks_query_FeatureLayerQueryProvider.FeatureLayerQueryProvider.html +1 -1
  139. package/docs/html/classes/tasks_query_GeoJSONLayerClientSideQueryProvider.GeoJSONLayerClientSideQueryProvider.html +1 -1
  140. package/docs/html/classes/tasks_query_GeoRSSLayerQueryProvider.GeoRSSLayerQueryProvider.html +1 -1
  141. package/docs/html/classes/tasks_query_GraphicsLayerQueryProvider.GraphicsLayerQueryProvider.html +1 -1
  142. package/docs/html/classes/tasks_query_ImageryLayerQueryProvider.ImageryLayerQueryProvider.html +1 -1
  143. package/docs/html/classes/tasks_query_KMLLayerQueryProvider.KMLLayerQueryProvider.html +1 -1
  144. package/docs/html/classes/tasks_query_MapNotesSublayerQueryProvider.MapNotesSublayerQueryProvider.html +1 -1
  145. package/docs/html/classes/tasks_query_QueryBasedRelationship.QueryBasedRelationship.html +1 -1
  146. package/docs/html/classes/tasks_query_QueryError.QueryError.html +1 -1
  147. package/docs/html/classes/tasks_query_QueryProviderBase.QueryProviderBase.html +1 -1
  148. package/docs/html/classes/tasks_query_QueryService.QueryService.html +1 -1
  149. package/docs/html/classes/tasks_query_RouteLayerQueryProvider.RouteLayerQueryProvider.html +1 -1
  150. package/docs/html/classes/tasks_query_SceneLayerClientSideQueryProvider.SceneLayerClientSideQueryProvider.html +1 -1
  151. package/docs/html/classes/tasks_query_SceneLayerQueryProvider.SceneLayerQueryProvider.html +1 -1
  152. package/docs/html/classes/tasks_query_StreamLayerClientSideQueryProvider.StreamLayerClientSideQueryProvider.html +1 -1
  153. package/docs/html/classes/tasks_query_SubtypeSublayerQueryProvider.SubtypeSublayerQueryProvider.html +1 -1
  154. package/docs/html/classes/tasks_query_WFSLayerQueryProvider.WFSLayerQueryProvider.html +1 -1
  155. package/docs/html/classes/tasks_search_ArcGISGeocoderSearchProvider.ArcGISGeocoderSearchProvider.html +1 -1
  156. package/docs/html/classes/tasks_search_GeocoderSearchProvider.GeocoderSearchProvider.html +1 -1
  157. package/docs/html/classes/tasks_search_QuerySearchProvider.QuerySearchProvider.html +1 -1
  158. package/docs/html/classes/tasks_search_SearchError.SearchError.html +1 -1
  159. package/docs/html/classes/tasks_search_SearchProviderBase.SearchProviderBase.html +1 -1
  160. package/docs/html/classes/tasks_search_SearchService.SearchService.html +1 -1
  161. package/docs/html/classes/tasks_search_SubtypeSublayerQuerySearchProvider.SubtypeSublayerQuerySearchProvider.html +1 -1
  162. package/docs/html/classes/utilities_CaseInsensitiveObservableMap.CaseInsensitiveObservableMap.html +1 -1
  163. package/docs/html/classes/utilities_CollectionProxy.CollectionProxy.html +1 -1
  164. package/docs/html/classes/utilities_CopyOnWriteCollection.CopyOnWriteCollection.html +1 -1
  165. package/docs/html/classes/utilities_GeometryServiceError.GeometryServiceError.html +1 -1
  166. package/docs/html/classes/utilities_MapTransformCollection.MapTransformCollection.html +1 -1
  167. package/docs/html/classes/utilities_ObservableMap.ObservableMap.html +1 -1
  168. package/docs/html/classes/utilities_ObservableSet.ObservableSet.html +1 -1
  169. package/docs/html/classes/utilities_ReadOnlyCollection.ReadOnlyCollection.html +1 -1
  170. package/docs/html/classes/utilities_ReadOnlyMap.ReadOnlyMap.html +2 -2
  171. package/docs/html/classes/utilities_format_date.DateFormatter.html +1 -1
  172. package/docs/html/classes/utilities_format_number.NumberFormatter.html +1 -1
  173. package/docs/html/classes/utilities_format_time.TimeFormatter.html +1 -1
  174. package/docs/html/classes/utilities_log.ConsoleLogger.html +1 -1
  175. package/docs/html/classes/utilities_log.LoggerBase.html +1 -1
  176. package/docs/html/functions/data_convert.shapefileToUploadData.html +2 -2
  177. package/docs/html/functions/data_convert.xlsxToUploadData.html +2 -2
  178. package/docs/html/functions/data_support__lpkxConverter.createLpkxLayer.html +2 -2
  179. package/docs/html/functions/support_observableUtils.observable.html +3 -3
  180. package/docs/html/functions/support_observableUtils.onWatch.html +1 -1
  181. package/docs/html/functions/support_observableUtils.watch.html +2 -2
  182. package/docs/html/functions/support_observableUtils.watchEach.html +2 -2
  183. package/docs/html/functions/utilities_checkArg.checkArg.html +1 -1
  184. package/docs/html/hierarchy.html +1 -1
  185. package/docs/html/interfaces/data_Feature.PresentableAttributes.html +1 -1
  186. package/docs/html/interfaces/data_convert.FromCsvOptions.html +5 -3
  187. package/docs/html/interfaces/data_convert.FromShapefileOptions.html +5 -3
  188. package/docs/html/interfaces/data_convert.FromXLSXOptions.html +5 -3
  189. package/docs/html/interfaces/data_convert.ToCsvOptions.html +5 -3
  190. package/docs/html/interfaces/data_convert.ToShapefileOptions.html +5 -3
  191. package/docs/html/interfaces/data_convert.ToXLSXOptions.html +5 -3
  192. package/docs/html/interfaces/data_convert.UploadDataOptions.html +5 -3
  193. package/docs/html/interfaces/data_support_attachments.AttachmentEnabledLayer.html +1 -1
  194. package/docs/html/interfaces/data_support_lpkxInterfaces.DynamicLayer.html +8 -0
  195. package/docs/html/interfaces/data_support_lpkxInterfaces.LegendItem.html +16 -0
  196. package/docs/html/interfaces/data_support_lpkxInterfaces.LegendLayer.html +10 -0
  197. package/docs/html/interfaces/data_support_lpkxInterfaces.LegendResponse.html +4 -0
  198. package/docs/html/interfaces/data_support_lpkxInterfaces.LpkxCimRenderer.html +5 -3
  199. package/docs/html/interfaces/json_AnnotationLayerJson.AnnotationLayerJson.html +1 -1
  200. package/docs/html/interfaces/json_BasemapJson.BasemapJson.html +1 -1
  201. package/docs/html/interfaces/json_BasemapLayerJson.BasemapLayerJsonBase.html +1 -1
  202. package/docs/html/interfaces/json_BingLayerJson.BingLayerJson.html +1 -1
  203. package/docs/html/interfaces/json_BuildingSceneLayerJson.BuildingSceneLayerJson.html +1 -1
  204. package/docs/html/interfaces/json_BuildingSceneSublayerJson.BuildingSceneSublayerJson.html +1 -1
  205. package/docs/html/interfaces/json_CSVLayerJson.CSVLayerJson.html +1 -1
  206. package/docs/html/interfaces/json_DomainJson.CodedValueDomainJson.html +1 -1
  207. package/docs/html/interfaces/json_DomainJson.DomainJsonBase.html +1 -1
  208. package/docs/html/interfaces/json_DomainJson.InheritedDomainJson.html +1 -1
  209. package/docs/html/interfaces/json_DomainJson.RangeDomainJson.html +1 -1
  210. package/docs/html/interfaces/json_FeatureLayerJson.FeatureLayerJson.html +1 -1
  211. package/docs/html/interfaces/json_GeoJSONLayerJson.GeoJSONLayerJson.html +1 -1
  212. package/docs/html/interfaces/json_GeoRSSLayerJson.GeoRSSLayerJson.html +1 -1
  213. package/docs/html/interfaces/json_GeometryJson.ExtentJson.html +1 -1
  214. package/docs/html/interfaces/json_GeometryJson.GeometryJsonBase.html +1 -1
  215. package/docs/html/interfaces/json_GeometryJson.MultipointJson.html +1 -1
  216. package/docs/html/interfaces/json_GeometryJson.PointJson.html +1 -1
  217. package/docs/html/interfaces/json_GeometryJson.PolygonJson.html +1 -1
  218. package/docs/html/interfaces/json_GeometryJson.PolylineJson.html +1 -1
  219. package/docs/html/interfaces/json_GroundJson.GroundJson.html +1 -1
  220. package/docs/html/interfaces/json_GroupLayerJson.GroupLayerJson.html +1 -1
  221. package/docs/html/interfaces/json_ImageServiceLayerJson.ImageServiceLayerJson.html +1 -1
  222. package/docs/html/interfaces/json_ImageServiceVectorLayerJson.ImageServiceVectorLayerJson.html +1 -1
  223. package/docs/html/interfaces/json_IntegratedMeshLayerJson.IntegratedMeshLayerJson.html +1 -1
  224. package/docs/html/interfaces/json_KMLLayerJson.KMLLayerJson.html +1 -1
  225. package/docs/html/interfaces/json_LayerDefinitionJson.DataSourceJsonBase.html +1 -1
  226. package/docs/html/interfaces/json_LayerDefinitionJson.JoinTableDataSourceJson.html +1 -1
  227. package/docs/html/interfaces/json_LayerDefinitionJson.QueryTableDataSourceJson.html +1 -1
  228. package/docs/html/interfaces/json_LayerDefinitionJson.RasterDataSourceJson.html +1 -1
  229. package/docs/html/interfaces/json_LayerDefinitionJson.TableDataSourceJson.html +1 -1
  230. package/docs/html/interfaces/json_LayerJson.BrightnessEffectFunctionJson.html +1 -1
  231. package/docs/html/interfaces/json_LayerJson.ContrastEffectFunctionJson.html +1 -1
  232. package/docs/html/interfaces/json_LayerJson.GrayscaleEffectFunctionJson.html +1 -1
  233. package/docs/html/interfaces/json_LayerJson.InvertEffectFunctionJson.html +1 -1
  234. package/docs/html/interfaces/json_LayerJson.LayerJsonBase.html +1 -1
  235. package/docs/html/interfaces/json_LayerJson.OpacityEffectFunctionJson.html +1 -1
  236. package/docs/html/interfaces/json_LayerJson.SaturateEffectFunctionJson.html +1 -1
  237. package/docs/html/interfaces/json_LayerJson.SepiaEffectFunctionJson.html +1 -1
  238. package/docs/html/interfaces/json_MapServiceLayerJson.MapServiceLayerJson.html +1 -1
  239. package/docs/html/interfaces/json_MediaLayerJson.MediaLayerJson.html +1 -1
  240. package/docs/html/interfaces/json_OpenStreetMapLayerJson.OpenStreetMapLayerJson.html +1 -1
  241. package/docs/html/interfaces/json_OperationalLayerJson.OperationalLayerJsonBase.html +1 -1
  242. package/docs/html/interfaces/json_PointCloudLayerJson.PointCloudLayerJson.html +1 -1
  243. package/docs/html/interfaces/json_PopupInfoJson.PopupElementJson.html +1 -1
  244. package/docs/html/interfaces/json_RasterDataElevationLayerJson.RasterDataElevationLayerJson.html +1 -1
  245. package/docs/html/interfaces/json_RendererJson.ClassBreaksRendererJson.html +1 -1
  246. package/docs/html/interfaces/json_RendererJson.ColorInfoJson.html +1 -1
  247. package/docs/html/interfaces/json_RendererJson.HeatmapRendererJson.html +1 -1
  248. package/docs/html/interfaces/json_RendererJson.PointCloudClassBreaksRendererJson.html +1 -1
  249. package/docs/html/interfaces/json_RendererJson.PointCloudRGBRendererJson.html +1 -1
  250. package/docs/html/interfaces/json_RendererJson.PointCloudRendererJsonBase.html +1 -1
  251. package/docs/html/interfaces/json_RendererJson.PointCloudStretchRendererJson.html +1 -1
  252. package/docs/html/interfaces/json_RendererJson.PointCloudUniqueValueRendererJson.html +1 -1
  253. package/docs/html/interfaces/json_RendererJson.PredominanceRendererJson.html +1 -1
  254. package/docs/html/interfaces/json_RendererJson.RendererJsonBase.html +1 -1
  255. package/docs/html/interfaces/json_RendererJson.RotationInfoJson.html +1 -1
  256. package/docs/html/interfaces/json_RendererJson.SimpleRendererJson.html +1 -1
  257. package/docs/html/interfaces/json_RendererJson.SizeInfoJson.html +1 -1
  258. package/docs/html/interfaces/json_RendererJson.TemporalRendererJson.html +1 -1
  259. package/docs/html/interfaces/json_RendererJson.TransparencyInfoJson.html +1 -1
  260. package/docs/html/interfaces/json_RendererJson.UniqueValueFromStyleRendererJson.html +1 -1
  261. package/docs/html/interfaces/json_RendererJson.UniqueValueRendererJson.html +1 -1
  262. package/docs/html/interfaces/json_RendererJson.VectorFieldRendererJson.html +1 -1
  263. package/docs/html/interfaces/json_RendererJson.VisualVariableJsonBase.html +1 -1
  264. package/docs/html/interfaces/json_SceneLayerJson.SceneLayerJson.html +1 -1
  265. package/docs/html/interfaces/json_StreamLayerJson.StreamLayerJson.html +1 -1
  266. package/docs/html/interfaces/json_SublayerJson.SublayerJson.html +1 -1
  267. package/docs/html/interfaces/json_SubtypeGroupLayerJson.SubtypeGroupLayerJson.html +1 -1
  268. package/docs/html/interfaces/json_SubtypeGroupLayerJson.SubtypeSubtypeGroupLayerJson.html +1 -1
  269. package/docs/html/interfaces/json_SubtypeSublayerJson.SubtypeSublayerJson.html +1 -1
  270. package/docs/html/interfaces/json_SymbolJson.CIMSymbolJson.html +1 -1
  271. package/docs/html/interfaces/json_SymbolJson.CIMSymbolReferenceJson.html +1 -1
  272. package/docs/html/interfaces/json_SymbolJson.ExtrudeSymbol3DLayerJson.html +1 -1
  273. package/docs/html/interfaces/json_SymbolJson.FillSymbol3DLayerJson.html +1 -1
  274. package/docs/html/interfaces/json_SymbolJson.IconSymbol3DLayerJson.html +1 -1
  275. package/docs/html/interfaces/json_SymbolJson.LabelSymbol3DJson.html +1 -1
  276. package/docs/html/interfaces/json_SymbolJson.LineSymbol3DJson.html +1 -1
  277. package/docs/html/interfaces/json_SymbolJson.LineSymbol3DLayerJson.html +1 -1
  278. package/docs/html/interfaces/json_SymbolJson.MeshSymbol3DJson.html +1 -1
  279. package/docs/html/interfaces/json_SymbolJson.ObjectSymbol3DLayerJson.html +1 -1
  280. package/docs/html/interfaces/json_SymbolJson.PathSymbol3DLayerJson.html +1 -1
  281. package/docs/html/interfaces/json_SymbolJson.PictureFillSymbolJson.html +1 -1
  282. package/docs/html/interfaces/json_SymbolJson.PictureMarkerSymbolJson.html +1 -1
  283. package/docs/html/interfaces/json_SymbolJson.PointSymbol3DJson.html +1 -1
  284. package/docs/html/interfaces/json_SymbolJson.PolygonSymbol3DJson.html +1 -1
  285. package/docs/html/interfaces/json_SymbolJson.SimpleFillSymbolJson.html +1 -1
  286. package/docs/html/interfaces/json_SymbolJson.SimpleLineSymbolJson.html +1 -1
  287. package/docs/html/interfaces/json_SymbolJson.SimpleMarkerSymbolJson.html +1 -1
  288. package/docs/html/interfaces/json_SymbolJson.SketchEdgesJson.html +1 -1
  289. package/docs/html/interfaces/json_SymbolJson.SolidEdgesJson.html +1 -1
  290. package/docs/html/interfaces/json_SymbolJson.Symbol3DJsonBase.html +1 -1
  291. package/docs/html/interfaces/json_SymbolJson.Symbol3DLayerJsonBase.html +1 -1
  292. package/docs/html/interfaces/json_SymbolJson.SymbolJsonBase.html +1 -1
  293. package/docs/html/interfaces/json_SymbolJson.TextSymbol3DLayerJson.html +1 -1
  294. package/docs/html/interfaces/json_SymbolJson.TextSymbolJson.html +1 -1
  295. package/docs/html/interfaces/json_TableJson.TableJson.html +1 -1
  296. package/docs/html/interfaces/json_TiledElevationServiceLayerJson.TiledElevationServiceLayerJson.html +1 -1
  297. package/docs/html/interfaces/json_TiledImageServiceLayerJson.TiledImageServiceLayerJson.html +1 -1
  298. package/docs/html/interfaces/json_TiledMapServiceLayerJson.TiledMapServiceLayerJson.html +1 -1
  299. package/docs/html/interfaces/json_VectorTileLayerJson.VectorTileLayerJson.html +1 -1
  300. package/docs/html/interfaces/json_WFSLayerJson.WFSLayerJson.html +1 -1
  301. package/docs/html/interfaces/json_WMSLayerJson.WMSLayerJson.html +1 -1
  302. package/docs/html/interfaces/json_WMSSublayerJson.WMSSublayerJson.html +1 -1
  303. package/docs/html/interfaces/json_WebMapJson.WebMapJson.html +1 -1
  304. package/docs/html/interfaces/json_WebMapJson.WebMapJsonBase.html +1 -1
  305. package/docs/html/interfaces/json_WebSceneJson.WebSceneJson.html +1 -1
  306. package/docs/html/interfaces/json_WebTileLayerJson.WebTileLayerJson.html +1 -1
  307. package/docs/html/interfaces/layer-preset_LayerPreset.LayerPresetProperties.html +1 -1
  308. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerExtensionCollection.html +1 -1
  309. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerExtensionProperties.html +1 -1
  310. package/docs/html/interfaces/mapping_ArcGISSublayerExtension.ArcGISSublayerProperties.html +1 -1
  311. package/docs/html/interfaces/mapping_BasemapExtension.BasemapExtensionProperties.html +1 -1
  312. package/docs/html/interfaces/mapping_BasemapExtension.BasemapProperties.html +1 -1
  313. package/docs/html/interfaces/mapping_Bookmark.BookmarkProperties.html +1 -1
  314. package/docs/html/interfaces/mapping_BuildingComponentSublayerExtension.BuildingComponentSublayerExtensionProperties.html +1 -1
  315. package/docs/html/interfaces/mapping_BuildingGroupSublayerExtension.BuildingGroupSublayerExtensionProperties.html +1 -1
  316. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtensionProperties.html +1 -1
  317. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSceneLayerProperties.html +1 -1
  318. package/docs/html/interfaces/mapping_BuildingSceneLayerExtension.BuildingSublayerExtensionCollection.html +1 -1
  319. package/docs/html/interfaces/mapping_BuildingSublayerExtension.BuildingSublayerExtensionProperties.html +1 -1
  320. package/docs/html/interfaces/mapping_BuildingSublayerExtension.BuildingSublayerProperties.html +1 -1
  321. package/docs/html/interfaces/mapping_CSVLayerExtension.CSVLayerExtensionProperties.html +1 -1
  322. package/docs/html/interfaces/mapping_ElevationLayerExtension.ElevationLayerExtensionProperties.html +1 -1
  323. package/docs/html/interfaces/mapping_FeatureLayerExtension.FeatureLayerExtensionProperties.html +1 -1
  324. package/docs/html/interfaces/mapping_FeatureLayerExtension.FeatureLayerProperties.html +1 -1
  325. package/docs/html/interfaces/mapping_FeatureLayerExtensionBase.FeatureLayerBaseProperties.html +1 -1
  326. package/docs/html/interfaces/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBaseProperties.html +1 -1
  327. package/docs/html/interfaces/mapping_GeoJSONLayerExtension.GeoJSONLayerExtensionProperties.html +1 -1
  328. package/docs/html/interfaces/mapping_GeoRSSLayerExtension.GeoRSSLayerExtensionProperties.html +1 -1
  329. package/docs/html/interfaces/mapping_GraphicsLayerExtension.GraphicsLayerExtensionProperties.html +1 -1
  330. package/docs/html/interfaces/mapping_GroundExtension.GroundExtensionProperties.html +1 -1
  331. package/docs/html/interfaces/mapping_GroundExtension.GroundProperties.html +1 -1
  332. package/docs/html/interfaces/mapping_GroupLayerExtension.GroupLayerExtensionProperties.html +1 -1
  333. package/docs/html/interfaces/mapping_ImageryLayerExtension.ImageryLayerExtensionProperties.html +1 -1
  334. package/docs/html/interfaces/mapping_ImageryTileLayerExtension.ImageryTileLayerExtensionProperties.html +1 -1
  335. package/docs/html/interfaces/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtensionProperties.html +1 -1
  336. package/docs/html/interfaces/mapping_KMLLayerExtension.KMLLayerExtensionProperties.html +1 -1
  337. package/docs/html/interfaces/mapping_KMLSublayerExtension.KMLSublayerExtensionCollection.html +1 -1
  338. package/docs/html/interfaces/mapping_KMLSublayerExtension.KMLSublayerExtensionProperties.html +1 -1
  339. package/docs/html/interfaces/mapping_MapExtension.MapExtensionEvents.html +1 -1
  340. package/docs/html/interfaces/mapping_MapExtension.MapExtensionProperties.html +1 -1
  341. package/docs/html/interfaces/mapping_MapExtension.TableExtensionCollection.html +1 -1
  342. package/docs/html/interfaces/mapping_MapImageLayerExtension.MapImageLayerExtensionProperties.html +1 -1
  343. package/docs/html/interfaces/mapping_MapImageSublayerExtension.MapImageSublayerExtensionProperties.html +1 -1
  344. package/docs/html/interfaces/mapping_MapImageSublayerExtension.MapImageSublayerProperties.html +1 -1
  345. package/docs/html/interfaces/mapping_MapNotesLayerExtension.MapNotesLayerExtensionProperties.html +1 -1
  346. package/docs/html/interfaces/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionCollection.html +1 -1
  347. package/docs/html/interfaces/mapping_MapNotesSublayerExtension.MapNotesSublayerExtensionProperties.html +1 -1
  348. package/docs/html/interfaces/mapping_MediaLayerExtension.MediaLayerExtensionProperties.html +1 -1
  349. package/docs/html/interfaces/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtensionProperties.html +1 -1
  350. package/docs/html/interfaces/mapping_PointCloudLayerExtension.PointCloudLayerExtensionProperties.html +1 -1
  351. package/docs/html/interfaces/mapping_PointCloudLayerExtension.PointCloudLayerProperties.html +1 -1
  352. package/docs/html/interfaces/mapping_RouteLayerExtension.RouteLayerExtensionProperties.html +1 -1
  353. package/docs/html/interfaces/mapping_SceneLayerExtension.SceneLayerExtensionProperties.html +1 -1
  354. package/docs/html/interfaces/mapping_StreamLayerExtension.StreamLayerExtensionProperties.html +1 -1
  355. package/docs/html/interfaces/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtensionProperties.html +1 -1
  356. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerExtensionCollection.html +1 -1
  357. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerExtensionProperties.html +1 -1
  358. package/docs/html/interfaces/mapping_SubtypeSublayerExtension.SubtypeSublayerProperties.html +1 -1
  359. package/docs/html/interfaces/mapping_TileLayerExtension.TileLayerExtensionProperties.html +1 -1
  360. package/docs/html/interfaces/mapping_TileSublayerExtension.TileSublayerExtensionProperties.html +1 -1
  361. package/docs/html/interfaces/mapping_TileSublayerExtension.TileSublayerProperties.html +1 -1
  362. package/docs/html/interfaces/mapping_VectorTileLayerExtension.VectorTileLayerExtensionProperties.html +1 -1
  363. package/docs/html/interfaces/mapping_WFSLayerExtension.WFSLayerExtensionProperties.html +1 -1
  364. package/docs/html/interfaces/mapping_WMSLayerExtension.WMSLayerExtensionProperties.html +1 -1
  365. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerExtensionCollection.html +1 -1
  366. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerExtensionProperties.html +1 -1
  367. package/docs/html/interfaces/mapping_WMSSublayerExtension.WMSSublayerProperties.html +1 -1
  368. package/docs/html/interfaces/mapping_WMTSLayerExtension.WMTSLayerExtensionProperties.html +1 -1
  369. package/docs/html/interfaces/mapping_WebTileLayerExtension.WebTileLayerExtensionProperties.html +1 -1
  370. package/docs/html/interfaces/mapping__LayerExtension.LayerExtensionProperties.html +1 -1
  371. package/docs/html/interfaces/mapping__SublayerExtension.SublayerExtensionProperties.html +1 -1
  372. package/docs/html/interfaces/mapping__SublayerExtension.SublayerProperties.html +1 -1
  373. package/docs/html/interfaces/mapping_support__LayerExtensionCollection.LayerExtensionCollection.html +1 -1
  374. package/docs/html/interfaces/mapping_support__SublayerExtensionCollection.SublayerExtensionCollection.html +1 -1
  375. package/docs/html/interfaces/menus_Menu.MenuProperties.html +1 -1
  376. package/docs/html/interfaces/menus_MenuItem.MenuItemProperties.html +1 -1
  377. package/docs/html/interfaces/support_ArcGISRequestHelper.ArcGISRequestHelperResponse.html +1 -1
  378. package/docs/html/interfaces/support_InitializableBase.Initializable.html +1 -1
  379. package/docs/html/interfaces/support_InitializableBase.InitializableBaseEvents.html +1 -1
  380. package/docs/html/interfaces/support_InitializableBase.InitializableBaseProperties.html +1 -1
  381. package/docs/html/interfaces/support_InitializableCollectionProxy.InitializableCollection.html +1 -1
  382. package/docs/html/interfaces/support_Serializable.Serializable.html +1 -1
  383. package/docs/html/interfaces/support_Settings.SettingsEvents.html +1 -1
  384. package/docs/html/interfaces/support__restApiJson.RestApiMapServiceTimeInfo.html +1 -1
  385. package/docs/html/interfaces/support__restApiJson.RestApiServiceTimeInfo.html +1 -1
  386. package/docs/html/interfaces/support_esri.LayerWithSublayers.html +1 -1
  387. package/docs/html/interfaces/support_esri.SublayerLike.html +1 -1
  388. package/docs/html/interfaces/support_observableUtils.WatchEachOptions.html +4 -4
  389. package/docs/html/interfaces/support_observableUtils.WatchOptions.html +4 -4
  390. package/docs/html/interfaces/tasks_geocoding_ArcGISGeocoder.ArcGISGeocoderProperties.html +1 -1
  391. package/docs/html/interfaces/tasks_geocoding_Geocoder.GeocoderCapabilities.html +1 -1
  392. package/docs/html/interfaces/tasks_geocoding_Geocoder.GeocoderProperties.html +1 -1
  393. package/docs/html/interfaces/tasks_query_ArcGISRelationship.ArcGISRelationshipProperties.html +1 -1
  394. package/docs/html/interfaces/tasks_query_QueryBasedRelationship.QueryBasedRelationshipProperties.html +1 -1
  395. package/docs/html/interfaces/utilities_ObservableMap.MapAfterItemEvent.html +1 -1
  396. package/docs/html/interfaces/utilities_ObservableSet.SetAfterItemEvent.html +1 -1
  397. package/docs/html/interfaces/utilities__layers.LayerWithLegendEnabledProperty.html +1 -1
  398. package/docs/html/interfaces/utilities__layers.TimeAwareLayer.html +1 -1
  399. package/docs/html/interfaces/utilities_collection.AfterItemChangeEvent.html +1 -1
  400. package/docs/html/interfaces/utilities_format_FormatSettings.FormatSettings.html +1 -1
  401. package/docs/html/interfaces/utilities_format_date.DateFormatterProperties.html +1 -1
  402. package/docs/html/interfaces/utilities_format_date.DateSettings.html +1 -1
  403. package/docs/html/interfaces/utilities_format_number.NumberFormatterProperties.html +1 -1
  404. package/docs/html/interfaces/utilities_format_number.NumberSettings.html +1 -1
  405. package/docs/html/interfaces/utilities_format_string.FormatOptions.html +1 -1
  406. package/docs/html/interfaces/utilities_format_time.TimeFormatterProperties.html +1 -1
  407. package/docs/html/interfaces/utilities_format_time.TimeSettings.html +1 -1
  408. package/docs/html/interfaces/utilities_log.LogMessageOptions.html +1 -1
  409. package/docs/html/interfaces/utilities_log.LogMessageResourceOptions.html +1 -1
  410. package/docs/html/modules/data_support__shapefileConverter.html +1 -0
  411. package/docs/html/modules/data_support_lpkxInterfaces.html +1 -1
  412. package/docs/html/modules.html +1 -1
  413. package/docs/html/types/support_observableUtils.WhenOptions.html +1 -1
  414. package/docs/html/variables/data_support__shapefileConverter.SHAPEFILE_FIELD_FID.html +3 -0
  415. package/docs/html/variables/version.version.html +1 -1
  416. package/package.json +1 -1
  417. package/version.d.ts +1 -1
  418. 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=await n(o,e,r);return[new O({layer:a})]}export async function dxfToLayerExtensions(e,t,r){const{inputSpatialReference:o,outputSpatialReference:n}=t;D("options.dxfBlob",e).isNotMissing(),D("options.inputSpatialReference",o).isNotMissing(),D("options.outputSpatialReference",n).isNotMissing();const a=new ne(o,n,r),i=a.getContext(),c=await e.text(),l=new w;await ee();try{const e=l.parseSync(c);if(!e)throw new Error("DXF parsing failed: parser returned null");i.dxf=e}catch(e){throw e instanceof Error?e:new Error(String(e))}const m=e instanceof File?e.name:"dxf-layer",u=m.replace(/[^a-zA-Z0-9_.-]/g,"_");if(i.fileName=m,i.sanitizedFileName=u,i.subLayers=await a.processAll(),!i.subLayers||0===i.subLayers.length)return[];const f=new s({id:`dxf-group-${u}-${(new Date).getTime()}`,title:m,visible:!0}),p={layer:f,visibilityMode:"independent"};return f.layers.addMany(i.subLayers),[new N(p)]}export async function fgdbToLayerExtensions(e,t){const{displayServiceUrl:r,geoProcessedFgdbData:o}=t;D("options.fgdbBlob",e).isNotMissing(),D("options.displayServiceUrl",r).isNotMissing(),D("options.geoProcessedFgdbData",o).isNotMissing();const{createFgdbLayer:n}=await import("./support/_fgdbConverter.js"),a=await n(o,e,r);return[new O({layer:a})]}export async function shapefileToUploadData(e,t){D("shapefileData",e).isNotMissing();const o=function(e){const t={...Ee(e)};return{...t,...e}}(t),n=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:i},{default:s}]=await Promise.all([import("jszip"),import("shpjs")]),c=await n,l=await i.loadAsync(new Uint8Array(c)),m=new x;l.forEach(((e,t)=>{t&&m.set(t.name,t)}));const u=l.filter((()=>!0)).map((e=>e.name));let f,p=u.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(p=function(e){if(!e.length)return[];let t=e[0];const r=t.match(Oe);return r?(t=r[1],e.filter((e=>{const r=e.match(Oe);return r?.[1]===t}))):[t]}(p),u.some((e=>e.endsWith(".prj")))&&!p.every((e=>m.has(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(u.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(f){if(t!==f)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else f=t})));let y=[],d=[];for(const e of p){if(!m.has(`${e}.shp`)||!m.has(`${e}.shx`)||!m.has(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=s.parseShp(await m.get(`${e}.shp`).async("uint8array")),r=s.parseDbf(await m.get(`${e}.dbf`).async("uint8array"));if(r.length!==t.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(r),d=d.concat(t)}const g=await Promise.all(d.map((e=>async function(e,t){const o=E(e)?function(e){D("geometry.coordinates",e.type).matches("Point"),D("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,o,n]=e.coordinates,i=new r({x:t,y:o,spatialReference:a.WGS84});if(Array.isArray(n)){const[e,t]=n;!e&&!t||e?i.z=e:i.m=t}return i}(e):await K(e);if(t){let e;try{const r=await Y(t);e=new a({wkid:$(r)})}catch{}e||(e=new a({wkt:t})),o.spatialReference=e}return o}(e,f)))),w=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[w]=JSON.stringify(g[t].toJSON())));const h=function(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}(y);return o.primaryKeyField||(o.primaryKeyField=de(h)),{data:h,...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[w],inSpatialReference:g[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){return uploadDataToFeatureSet(await shapefileToUploadData(e,t))}export function getDefaultSymbol(e,t){const r=e%8;let o=["#FFDBFF","#88D6FF","#7F9FC3","#FF8200","#F34A53","#76E3B9","#E7BFFF","#FFC467"][r],n=["#EF3786","#005A99","#2D5070","#790C00","#4C0000","#006543","#6244A9","#904200"][r];if(Math.floor(e/8)%2!=0){const e=o;o=n,n=e}switch(t){case"point":case"multipoint":return new g({color:o,outline:{color:n}});case"polyline":return new d({color:o,width:"2"});case"polygon":return new y({color:o,outline:{color:n}});case"mesh":return new f({symbolLayers:[{type:"fill",material:{color:o},outline:{color:n}}]})}}function Ee(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:S,detectOid:!e?.primaryKeyField}}function Re(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...Ee(e)},...e}}function Ae(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function Ie(e,t,r,o){const n=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return n;if(t&&!t.includes("*"))return t.filter((e=>!n.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||n.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function _e(e){if(!e)return["*"];const t=e.featureSettings.popupTemplate?.content;if(Array.isArray(t)){const e=new Set;for(const r of t)if("fields"===r.type&&Array.isArray(r.fieldInfos))for(const t of r.fieldInfos)t.visible&&e.add(t.fieldName);if(e.size>0)return Array.from(e)}const r=e.featureSettings.popupTemplate?.fieldInfos;if(Array.isArray(r)){const e=[];for(const t of r)t.visible&&e.push(t.fieldName);if(e.length>0)return e}return["*"]}async function Ge(e,t){const r=await Le(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!E(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!E(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!E(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(r.toJSON())]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[await X(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await Z(r))]:[""]:[]}async function Le(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await J([e],t))[0]:e}function Ce(e,t){const r=[t.delimiter,we,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(we,"g"),`${we}${we}`);return`${we}${t}${we}`}return e}function ve(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||j.ROUND_TRIP;return B(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():L({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof b)return k({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Ue(r)),r}function Pe(e,t,r){if(r.useFormattedValues||je(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);const o=e.schema.findFieldByName(t)?.type;if(null!=o)switch(o){case"date":case"date-only":case"timestamp-offset":{const r=G(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=H(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function je(e,t){return!!te(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function Ue(e){for(const t of ge)if(e.startsWith(t))return`\t${e}`;return e}function $e(e,t,r){const o=e.startsWith(we),n=e.endsWith(we);if(o&&!n||!o&&n)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const a=o?e.substring(1,e.length-1):e;let i=-1;return Be(a,we,((e,o)=>{if(o===a.length)return!0;if(i<0){if(o!==a.length)return i=o,!0}else if(o===i+1)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),a.replace(new RegExp(`${we}${we}`,"g"),we)}function Be(e,t,r){let o,n=!1,a=0,i=0;for(;o=e.indexOf(t,a),!(o<0);){for(let t=a;t<o;)e.substring(t).startsWith(we)?(n=!n,t+=1):t++;const s=o+t.length;if(!n){const e=r(i,o);if(i=s,!e)return}a=s}r(i,e.length)}async function He(e,t){const r=JSON.parse(e),o=(await import("@arcgis/core/geometry/support/jsonUtils")).fromJSON(r);return r.spatialReference||(o.spatialReference=t),o}async function ke(e,t){const r=await K(JSON.parse(e));return r.spatialReference=t,r}async function ze(e,t){const r=await W(e);return r.spatialReference=t,r}function Je(e,t,r){const o=r?[r]:geometryTypeHeaders[t];for(const t of o){const r=t.map((t=>e.map((e=>e?.raw?.toString().trim().toLowerCase())).indexOf(t.trim().toLowerCase())));if(r.every((e=>e>=0)))return r}}async function Xe(e,t){return(await Promise.all(e.map((async(e,r)=>{const o=e?.raw;if("string"==typeof o&&""!==o)try{return await t(o,void 0),r}catch{return}})))).find((e=>void 0!==e))}function We(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:$({locale:t,format:r},e)}async function qe(e,t,r){const o=r?e.slice(1):e;if(r){const r=Je(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of De){try{await Ye(r[0],n,t,o)}catch{continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=Je(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of De){const n=await Xe(o[0],r);if(void 0!==n){try{await Ye(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function Ye(e,t,r,o){return{columnIndices:[e],geometries:await Promise.all(o.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),r)})))}}function Ze(e,t,r){let o=!1,n=!0,a=!0,i=!0,s=!0,c=!0;const l=new Set,{data:m,includeHeaderRow:u,dateFormat:f,timeFormat:p,primaryKeyField:y,locale:d}=e,g=u?m[0]:[],w=u?m.slice(1):m;for(const e of w){const r=e[t];r?.raw&&(l.add(r.raw),o=!0,n&&(n=Q(r.raw,d)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||G(f||C,r.raw)!==v),s&&(s=G(f||Se,r.formatted)!==v),i&&(i=r.raw instanceof b||H(p||z,r.raw).isValid),c&&(c=H({format:p||Te,locale:"en"},r.formatted).isValid))}const h=l.size===w.length;return y&&g[t]?.raw===y||r&&o&&h&&n?"esriFieldTypeOID":o&&c?"esriFieldTypeTimeOnly":o&&s?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&i?"esriFieldTypeTimeOnly":o&&a?"esriFieldTypeDate":"esriFieldTypeString"}async function Ke(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:a,dateFormat:i,timeFormat:s}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?We(e,n,a):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:G({locale:n,format:i},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof b)return e.toString();if(e instanceof Date)return new b(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new b(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:H({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of ge)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function Ve(e){switch(e){case P.DATE_SHORT:return"dd/MM/yyyy";case P.DATE_LONG:return"MMMM d, yyyy";case P.TIME_SHORT:return"h:mm AM/PM";case P.TIME_LONG:return"h:mm:ss AM/PM";case P.DATE_TIME_SHORT:case P.DEFAULT:return"MMM d yyyy h:mm AM/PM";case P.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case P.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case P.ISO_8601:case P.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&be().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&be().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function Qe(e){switch(e){case P.DATE_SHORT:return"dd/MM/yyyy";case P.DATE_LONG:return"MMMM d, yyyy";case P.DATE_TIME_SHORT:case P.DEFAULT:return"MMM d yyyy";case P.DATE_TIME_LONG:return"MMMM d yyyy";case P.FULL:return"dddd, MMMM d yyyy";case P.ISO_8601:case P.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function et(e){switch(e){case U.TIME_SHORT:return"h:mm AM/PM";case U.TIME_LONG:return"h:mm:ss AM/PM";case U.ISO_8601:case U.ROUND_TRIP:return"HH:mm:ss";default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("h")&&!t.includes("AM/PM")&&be().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function tt(e){switch(e){case j.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case j.CURRENCY:return'"$"#,##0.00';case j.FIXED_POINT:case j.DEFAULT:return"0.0000";case j.NUMBER:return"#,##0.0000";case j.PERCENT:return"0%";case j.ROUND_TRIP:return"0.00000";default:return e}}function rt(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e;if(e instanceof b)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Ue(r)),r}function ot(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function nt(e,t){return e.map((e=>ot(e,t)))}function at(e,t){return e.map((e=>nt(e,t)))}function it(e,t,r){switch(t){case xe.NUMBER:return e instanceof Date?e.getTime():$(e);case xe.STRING:return e instanceof Date?L({format:r.dateFormat??P.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof b?k({format:r.timeFormat??U.ROUND_TRIP},e):"number"==typeof e?B(r.numberFormat??j.DEFAULT,e):e.toString();case xe.BOOLEAN:return!!e;case xe.DATE:return G(e);default:return e.toString()}}function st(e,t){return JSON.stringify(e.toJSON())===JSON.stringify(t.toJSON())}function ct(e){return 1===e.length?new l({symbol:e[0]}):new m({field:"SymbolID",uniqueValueInfos:[...e.map(((e,t)=>new u({label:t.toString(),symbol:e,value:t})))]})}
@@ -9,4 +9,4 @@ import type { GeoProcessedLpkxData } from "./lpkxInterfaces.js";
9
9
  * @param displayServiceUrl The URL of the Display Service.
10
10
  * @returns A MapImageLayer containing the LPKX data.
11
11
  */
12
- export declare function createLpkxLayer(geoProcessedLpkxData: GeoProcessedLpkxData, lpkxBlob: Blob, displayServiceUrl: string): MapImageLayer;
12
+ export declare function createLpkxLayer(geoProcessedLpkxData: GeoProcessedLpkxData, lpkxBlob: Blob, displayServiceUrl: string): MapImageLayer | Promise<MapImageLayer>;
@@ -1 +1 @@
1
- import e from"@arcgis/core/Color.js";import r from"@arcgis/core/geometry/Extent.js";import o from"@arcgis/core/geometry/SpatialReference.js";import t from"@arcgis/core/layers/MapImageLayer";import n from"@arcgis/core/renderers/SimpleRenderer.js";import l from"@arcgis/core/renderers/UniqueValueRenderer";import i from"@arcgis/core/symbols/Font.js";import a from"@arcgis/core/symbols/TextSymbol.js";import{getDefaultSymbol as s}from"../convert.js";let y=0,m="";export function createLpkxLayer(e,i,b){const h=b,x=e.lyrxJson.layerDefinitions,M=e.createdFeatureClasses.split(";"),w=x.flatMap(((r,o)=>{if("CIMGroupLayer"===r.type)return[];const t="CIMAnnotationLayer"===r.type;let i;t?m="point":i=function(e){if(!e)return;if("CIMSimpleRenderer"===e.type){const r=c(e.symbol?.symbol);if(!r)return;return new n({symbol:r})}if("CIMUniqueValueRenderer"===e.type){const r=e.fields?.[0];if(!r)return;const o=[];return e.groups?.forEach((e=>{e.classes?.forEach((e=>{const r=c(e.symbol?.symbol);r&&e.values?.forEach((e=>{o.push({value:e.fieldValues?.[0],symbol:r})}))}))})),new l({field:r,uniqueValueInfos:o})}return}(r.renderer);const b=r.featureTable?.dataConnection?.dataset,h=M.find((e=>e.endsWith(`_${b}`)));let x=function(e,r){return(e.labelClasses??[]).map((o=>{const t=(n=o.textSymbol?.symbol,n&&"object"==typeof n&&"CIMTextSymbol"===n.type?n:void 0);var n;return{labelExpression:p(o,e),labelPlacement:u(r),where:o.whereClause??"",minScale:o.minScale??0,maxScale:o.maxScale??0,symbol:new a({color:f(t)??s(y++,"polygon").color,haloSize:C(t),haloColor:I(t),kerning:S(t?.kerning),...g(t),font:d(t)})}}))}(r,m);if(t&&(!x||0===x.length)){x=[{labelExpressionInfo:{expression:`$feature.${r.displayField??r.featureTable?.displayField??"TextString"}`},labelPlacement:u("point")}]}return[{id:o,title:r.name,source:{type:"data-layer",dataSource:{type:"table",workspaceId:e.workspaceId,dataSourceName:h,gdbVersion:""}},renderer:i,labelingInfo:x,labelsVisible:t,opacity:t?0:1,geometryType:m}]}));w.sort(((e,r)=>{const o=e=>"point"===e?0:"polyline"===e?1:"polygon"===e?2:3;return o(e.geometryType)-o(r.geometryType)}));const L=(i instanceof File?i.name:"lpkx-layer").replace(/[^a-zA-Z0-9_.-]/g,"_"),v=e.bbox||[],A=new r({xmin:v[0],ymin:v[1],xmax:v[2],ymax:v[3],spatialReference:new o({wkid:Number(e.outCrs||o.WebMercator)})});return new t({title:L,url:h,sublayers:w.reverse(),visible:!0,fullExtent:A})}function c(e){if(e)return"CIMPolygonSymbol"===e.type?(m="polygon",function(e){return{type:"cim",data:{type:"CIMSymbolReference",symbol:{type:"CIMPolygonSymbol",symbolLayers:e.symbolLayers??[]}}}}(e)):"CIMLineSymbol"===e.type?(m="polyline",function(e){return{type:"cim",data:{type:"CIMSymbolReference",symbol:{type:"CIMLineSymbol",symbolLayers:e.symbolLayers??[]}}}}(e)):"CIMPointSymbol"===e.type?(m="point",function(e){return{type:"cim",data:{type:"CIMSymbolReference",symbol:{type:"CIMPointSymbol",symbolLayers:e.symbolLayers}}}}(e)):void 0}function u(e){return"point"===e||"Points"===e?"above-right":"polyline"===e||"Polylines"===e?"center-along":"polygon"===e||"Polygons"===e?"always-horizontal":"above-right"}function p(e,r){return e.expression??`$feature.${r.displayField}`}function f(e){const r=e?.symbol?.symbolLayers?.find((e=>"CIMSolidFill"===e.type)),o=r;return b(o?.color)}function b(r){if(!r)return;let o;if(Array.isArray(r))o=r;else{const e=r.values;if(!e)return;"function"==typeof e?o=Array.from(e()):Array.isArray(e)?o=e:Symbol.iterator in Object(e)&&(o=Array.from(e))}if(!o)return;if("CIMHSVColor"===(Array.isArray(r)?void 0:r.type)){let[r=0,t=0,n=0,l=100]=o;t/=100,n/=100;const i=n*(1-t/2),a=0===i||1===i?0:(n-i)/Math.min(i,1-i),s=new e(`hsla(${r}, ${100*a}%, ${100*i}%, ${l/100})`);return[s.r,s.g,s.b,s.a]}return o}function d(e){const r=e?.fontStyleName??"";return new i({family:e?.fontFamilyName,size:e?.height,weight:r.includes("Bold")?"bold":"normal",style:r.includes("Italic")?"italic":"normal"})}function g(e){return{horizontalAlignment:e?.horizontalAlignment?.toLowerCase(),verticalAlignment:e?.verticalAlignment?.toLowerCase()}}function S(e){return"boolean"==typeof e?e:void 0}function C(e){const r=e?.haloSize;if(null==r)return;const o="string"==typeof r?parseFloat(r):Number(r);return Number.isFinite(o)?o:void 0}function I(e){const r=e?.haloSymbol,o=r?.symbolLayers?.find((e=>"CIMSolidFill"===e.type)),t=o;return b(t?.color)}
1
+ import e from"@arcgis/core/Color.js";import o from"@arcgis/core/geometry/Extent.js";import r from"@arcgis/core/geometry/SpatialReference.js";import t from"@arcgis/core/layers/MapImageLayer";import n from"@arcgis/core/renderers/SimpleRenderer.js";import a from"@arcgis/core/renderers/UniqueValueRenderer";import s from"@arcgis/core/symbols/Font.js";import i from"@arcgis/core/symbols/TextSymbol.js";import{DefaultArcGISRequestHelper as l}from"../../support/ArcGISRequestHelper.js";import{getLogger as y}from"../../utilities/log.js";import{deepClone as c}from"../../utilities/object.js";import{getDefaultSymbol as u}from"../convert.js";const m=y("lpkxConverter");let f=0,p="";export function createLpkxLayer(e,s,y){const c=y,I=e.lyrxJson.layerDefinitions,x=e.createdFeatureClasses.split(";"),A=I.flatMap(((o,r)=>{if("CIMGroupLayer"===o.type)return[];const t="CIMAnnotationLayer"===o.type;let s;t?p="point":s=function(e){if(!e)return;if("CIMSimpleRenderer"===e.type){const o=b(e.symbol?.symbol);if(!o)return;return new n({symbol:o})}if("CIMUniqueValueRenderer"===e.type){const o=e.fields?.[0];if(!o)return;const r=[];return e.groups?.forEach((e=>{e.classes?.forEach((e=>{const o=b(e.symbol?.symbol);o&&e.values?.forEach((e=>{r.push({value:e.fieldValues?.[0],symbol:o})}))}))})),new a({field:o,uniqueValueInfos:r})}return}(o.renderer);const l=o.featureTable?.dataConnection?.dataset,y=x.find((e=>e.endsWith(`_${l}`)));let c=function(e,o){return(e.labelClasses??[]).map((r=>{const t=(n=r.textSymbol?.symbol,n&&"object"==typeof n&&"CIMTextSymbol"===n.type?n:void 0);var n;return{labelExpression:g(r,e),labelPlacement:d(o),where:r.whereClause??"",minScale:r.minScale??0,maxScale:r.maxScale??0,symbol:new i({color:S(t)??u(f++,"polygon").color,haloSize:L(t),haloColor:w(t),kerning:h(t?.kerning),...M(t),font:C(t)})}}))}(o,p);if(t&&(!c||0===c.length)){c=[{labelExpressionInfo:{expression:`$feature.${o.displayField??o.featureTable?.displayField??"TextString"}`},labelPlacement:d("point")}]}return[{id:r,title:o.name,source:{type:"data-layer",dataSource:{type:"table",workspaceId:e.workspaceId,dataSourceName:y,gdbVersion:""}},renderer:s,labelingInfo:c,labelsVisible:t,opacity:t?0:1,geometryType:p}]}));A.sort(((e,o)=>{const r=e=>"point"===e?0:"polyline"===e?1:"polygon"===e?2:3;return r(e.geometryType)-r(o.geometryType)}));const j=(s instanceof File?s.name:"lpkx-layer").replace(/[^a-zA-Z0-9_.-]/g,"_"),$=e.bbox||[],P=new o({xmin:$[0],ymin:$[1],xmax:$[2],ymax:$[3],spatialReference:new r({wkid:Number(e.outCrs||r.WebMercator)})}),k=new t({title:j,url:c,sublayers:A.reverse(),visible:!0,fullExtent:P});return async function(e,o,r){const{workspaceId:t}=o;if(!e.sublayers)return;const n="function"==typeof e.sublayers.toArray?e.sublayers.toArray():e.sublayers,a=n.map((async e=>{const{geometryType:o}=e;if("point"!==o&&"Points"!==o)return;const n=e.source?.dataSource;if("table"===n?.type&&n?.dataSourceName){const o=n.dataSourceName,a=await async function(e,o,r,t){const n=new l,a={id:0,source:{type:"dataLayer",dataSource:{type:"table",workspaceId:o,dataSourceName:r}}},s=[a];if(t){const e="function"==typeof t.toJSON?t.toJSON():t;s[0]={...a,drawingInfo:{renderer:e}}}const i=`${e}/legend`,y={f:"json",dynamicLayers:JSON.stringify(s)},c=await n.request(i,{method:"auto",responseType:"json",query:y});return c?.data}(r,t,o,e.renderer);if(a?.layers?.[0]?.legend){const o=a.layers[0].legend,r=function(e,o){if(!e)return;const r=e.clone(),t=r.type;if("simple"===r.type){const e=r,t=o[0];if(t?.imageData){const o=`data:${t.contentType||"image/png"};base64,${t.imageData}`;v(e.symbol,o)}}else if("unique-value"===r.type){const e=r;if(e.uniqueValueInfos){const r=e.uniqueValueInfos.map((e=>{const r=e.clone(),t=o.find((e=>e.values?.some((e=>String(e)===String(r.value)))));if(t?.imageData){const e=`data:${t.contentType||"image/png"};base64,${t.imageData}`;v(r.symbol,e)}return r}));e.uniqueValueInfos=r}}else m.warn(`Unsupported renderer type for legend image conversion: ${t}`);return r}(e.renderer,o);r&&(e.renderer=r)}}}));await Promise.all(a)}(k,e,c).then((()=>k))}function b(e){if(e)return"CIMPolygonSymbol"===e.type?(p="polygon",function(e){const o=c(e);o.symbolLayers&&j(o.symbolLayers);return{type:"cim",data:{type:"CIMSymbolReference",symbol:{type:"CIMPolygonSymbol",symbolLayers:o.symbolLayers??[]}}}}(e)):"CIMLineSymbol"===e.type?(p="polyline",function(e){const o=c(e);o.symbolLayers&&j(o.symbolLayers);return{type:"cim",data:{type:"CIMSymbolReference",symbol:{type:"CIMLineSymbol",symbolLayers:o.symbolLayers??[]}}}}(e)):"CIMPointSymbol"===e.type?(p="point",function(e){const o=c(e);o.symbolLayers&&j(o.symbolLayers);return{type:"cim",data:{type:"CIMSymbolReference",symbol:{type:"CIMPointSymbol",symbolLayers:o.symbolLayers}}}}(e)):void 0}function d(e){return"point"===e||"Points"===e?"above-right":"polyline"===e||"Polylines"===e?"center-along":"polygon"===e||"Polygons"===e?"always-horizontal":"above-right"}function g(e,o){return e.expression??`$feature.${o.displayField}`}function S(e){const o=e?.symbol?.symbolLayers?.find((e=>"CIMSolidFill"===e.type)),r=o;return I(r?.color)}function I(o){if(!o)return;let r;if(Array.isArray(o))r=o;else{const e=o.values;if(!e)return;"function"==typeof e?r=Array.from(e()):Array.isArray(e)?r=e:Symbol.iterator in Object(e)&&(r=Array.from(e))}if(!r)return;if("CIMHSVColor"===(Array.isArray(o)?void 0:o.type)){let[o=0,t=0,n=0,a=100]=r;t/=100,n/=100;const s=n*(1-t/2),i=0===s||1===s?0:(n-s)/Math.min(s,1-s),l=new e(`hsla(${o}, ${100*i}%, ${100*s}%, ${a/100})`);return[l.r,l.g,l.b,l.a]}return r}function C(e){const o=e?.fontStyleName??"";return new s({family:e?.fontFamilyName,size:e?.height,weight:o.includes("Bold")?"bold":"normal",style:o.includes("Italic")?"italic":"normal"})}function M(e){return{horizontalAlignment:e?.horizontalAlignment?.toLowerCase(),verticalAlignment:e?.verticalAlignment?.toLowerCase()}}function h(e){return"boolean"==typeof e?e:void 0}function L(e){const o=e?.haloSize;if(null==o)return;const r="string"==typeof o?parseFloat(o):Number(o);return Number.isFinite(r)?r:void 0}function w(e){const o=e?.haloSymbol,r=o?.symbolLayers?.find((e=>"CIMSolidFill"===e.type)),t=r;return I(t?.color)}function v(e,o){if(e&&"cim"===e.type){const r=e,t=r.data?.symbol;if("CIMPointSymbol"===t?.type){const e=t.symbolLayers,r=e?.[0]?.size;t.symbolLayers=[{type:"CIMPictureMarker",url:o,enable:!0,size:Math.max(r??12,20),scaleX:1}]}}}function x(e){if("CIMRGBColor"===e.type&&Array.isArray(e.values)){const[o=0,r=0,t=0,n=100]=e.values;return[o,r,t,Math.round(2.55*n)]}if("CIMHSVColor"===e.type&&Array.isArray(e.values)){const o=I(e);if(4===o?.length){const[e=0,r=0,t=0,n=1]=o;return[e,r,t,Math.round(255*n)]}}}function A(e){for(const o of Object.keys(e)){const r=e[o];if("color"===o&&r&&"object"==typeof r){const t=x(r);t&&(e[o]=t)}else r&&"object"==typeof r&&A(r)}}function j(e){if(e)for(const o of e)o&&"object"==typeof o&&A(o)}
@@ -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"}
@@ -147,6 +147,10 @@ export interface LpkxCimRenderer {
147
147
  * The symbol associated with the renderer.
148
148
  */
149
149
  symbol?: LpkxCimSymbolReference;
150
+ /**
151
+ * The default symbol for the renderer.
152
+ */
153
+ defaultSymbol?: LpkxCimSymbolReference;
150
154
  }
151
155
  /**
152
156
  * Group of classes in a CIM renderer.
@@ -365,3 +369,92 @@ export interface ColorObject {
365
369
  * A union type representing the different ways a color can be input.
366
370
  */
367
371
  export type ColorInput = ColorArray | ColorObject;
372
+ /**
373
+ * An item in the MapServer legend response.
374
+ */
375
+ export interface LegendItem {
376
+ /**
377
+ * The label for this legend item.
378
+ */
379
+ label: string;
380
+ /**
381
+ * The URL to the legend image.
382
+ */
383
+ url: string;
384
+ /**
385
+ * The base64-encoded image data.
386
+ */
387
+ imageData: string;
388
+ /**
389
+ * The content type of the image (e.g., "image/png").
390
+ */
391
+ contentType: string;
392
+ /**
393
+ * The height of the legend item.
394
+ */
395
+ height?: number;
396
+ /**
397
+ * The width of the legend item.
398
+ */
399
+ width?: number;
400
+ /**
401
+ * The unique values associated with this legend item.
402
+ */
403
+ values?: string[];
404
+ }
405
+ /**
406
+ * A layer's legend details in the MapServer legend response.
407
+ */
408
+ export interface LegendLayer {
409
+ /**
410
+ * The ID of the layer.
411
+ */
412
+ layerId: number;
413
+ /**
414
+ * The name of the layer.
415
+ */
416
+ layerName: string;
417
+ /**
418
+ * The type of the layer.
419
+ */
420
+ layerType: string;
421
+ /**
422
+ * The list of legend items for this layer.
423
+ */
424
+ legend: LegendItem[];
425
+ }
426
+ /**
427
+ * The full response returned by a MapServer legend request.
428
+ */
429
+ export interface LegendResponse {
430
+ /**
431
+ * The list of layer legend details.
432
+ */
433
+ layers: LegendLayer[];
434
+ }
435
+ /**
436
+ * A dynamic layer definition for the dynamicLayers request parameter.
437
+ */
438
+ export interface DynamicLayer {
439
+ /**
440
+ * The ID of the dynamic layer.
441
+ */
442
+ id: number;
443
+ /**
444
+ * The source definition.
445
+ */
446
+ source: {
447
+ type: "dataLayer";
448
+ dataSource: {
449
+ type: "table";
450
+ workspaceId: string;
451
+ dataSourceName: string;
452
+ };
453
+ };
454
+ /**
455
+ * The drawing info overrides for the dynamic layer.
456
+ */
457
+ drawingInfo?: {
458
+ renderer: unknown;
459
+ };
460
+ }
@@ -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;