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