@arcgis/core 4.22.0-next.20211204 → 4.22.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 (167) hide show
  1. package/PopupTemplate.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/{44ccee36f8c74f4f134e.js → 025df54bafc05c183182.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{23af0b02208e20d5c07e.js → 22c0032451a4e1d43167.js} +1 -1
  5. package/assets/esri/core/workers/chunks/28f9b48b59bf1347facd.js +1 -0
  6. package/assets/esri/core/workers/chunks/{ff9a9e705237c55f78ff.js → 49bf6ce6b31a0028cee1.js} +1 -1
  7. package/assets/esri/core/workers/chunks/{02ce52ca0084536bc066.js → 4f4cc4ebd68dbd5ee9c3.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{058955b87ce2aa1b1809.js → 5915752b754997630665.js} +1 -1
  9. package/assets/esri/core/workers/chunks/60bfe5450b85b0d4605f.js +1 -0
  10. package/assets/esri/core/workers/chunks/{f3da8b797c8e1fcb1c21.js → 63161320a58a0b1702a2.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{96a62dc1e07f3ef20a30.js → 67482a0c298e41ea47f5.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{52aa3b44bddb10caa343.js → 753846665158c1c321ee.js} +1 -1
  13. package/assets/esri/core/workers/chunks/{8bc4ea821be16a752226.js → 764126387018aa548f58.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{bc0b85bc1e5116836ba4.js → 79ddc2e92f0f057f6be3.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{07bfb7bb4447aeacd87a.js → 7db1818ed9e834402e98.js} +1 -1
  16. package/assets/esri/core/workers/chunks/8150ec4b80adcf5fca86.js +1 -0
  17. package/assets/esri/core/workers/chunks/{6210b23872c362f51b12.js → 89d1c5f6ed167515ad24.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{4417dfcb2ba50ac9f199.js → 8ac288ac3ff8e61b98c4.js} +1 -1
  19. package/assets/esri/core/workers/chunks/95b085ff097005995ced.js +1 -0
  20. package/assets/esri/core/workers/chunks/{e02a3d456525e76ddb60.js → a680a6acb45fa65436e6.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{489147cf21d55f47d0e6.js → ab635e54fda321961683.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{44145763617ea985cce4.js → c32a849111ae061ae194.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{6a1ce00bcb689ea95bcb.js → dab0bfa26073cf325e08.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{b6b46f8e6a7d8d3cef50.js → db00e63a7c4fdf635a8c.js} +1 -1
  25. package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
  26. package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
  27. package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
  28. package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
  29. package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
  30. package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
  31. package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
  32. package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
  33. package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
  34. package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
  35. package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
  36. package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
  37. package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
  38. package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
  39. package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
  40. package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
  41. package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
  42. package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
  43. package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
  44. package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
  45. package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
  46. package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
  47. package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
  48. package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
  49. package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
  50. package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
  51. package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
  52. package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
  53. package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
  54. package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
  55. package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
  56. package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
  57. package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
  58. package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
  59. package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
  60. package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
  61. package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
  62. package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
  63. package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
  64. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nb.json +1 -1
  65. package/chunks/Clouds.glsl.js +4 -4
  66. package/chunks/RibbonLine.glsl.js +55 -61
  67. package/config.js +1 -1
  68. package/copyright.txt +47 -19
  69. package/interfaces.d.ts +183 -46
  70. package/layers/CSVLayer.js +1 -1
  71. package/layers/GeoJSONLayer.js +1 -1
  72. package/layers/mixins/ArcGISImageService.js +1 -1
  73. package/layers/mixins/operationalLayers.js +1 -1
  74. package/layers/support/layersCreator.js +1 -1
  75. package/package.json +1 -1
  76. package/renderers/VectorFieldRenderer.js +1 -1
  77. package/renderers/support/RasterSymbolizer.js +1 -1
  78. package/renderers/support/rasterRendererHelper.js +1 -1
  79. package/support/revision.js +1 -1
  80. package/views/2d/MapViewConstraints.js +1 -1
  81. package/views/2d/constraints/ZoomConstraint.js +1 -1
  82. package/views/2d/engine/Stage.js +1 -1
  83. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  84. package/views/2d/layers/FeatureLayerView2D.js +1 -1
  85. package/views/2d/layers/imagery/ImageryGraphicsView2D.js +1 -1
  86. package/views/3d/environment/Clouds.glsl.js +1 -1
  87. package/views/3d/environment/CloudsGenerator.js +1 -1
  88. package/views/3d/environment/NoiseTextureAtlas.js +1 -1
  89. package/views/MapView.js +1 -1
  90. package/views/MapViewBase.js +1 -1
  91. package/views/webgl/Program.js +1 -1
  92. package/widgets/Histogram.js +1 -1
  93. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  94. package/widgets/Sketch/SketchViewModel.js +1 -1
  95. package/widgets/UtilityNetworkTrace.js +1 -1
  96. package/assets/esri/core/t9n/Units_no.json +0 -1
  97. package/assets/esri/core/workers/chunks/01c79caf64e297e1b221.js +0 -1
  98. package/assets/esri/core/workers/chunks/aa57f2c380132c746730.js +0 -1
  99. package/assets/esri/core/workers/chunks/b17afdfe4450f69298ad.js +0 -1
  100. package/assets/esri/core/workers/chunks/deba37055be7c2d7da26.js +0 -1
  101. package/assets/esri/identity/t9n/identity_no.json +0 -1
  102. package/assets/esri/smartMapping/t9n/smartMapping_no.json +0 -1
  103. package/assets/esri/t9n/basemaps_no.json +0 -1
  104. package/assets/esri/t9n/common_no.json +0 -1
  105. package/assets/esri/widgets/AreaMeasurement2D/t9n/AreaMeasurement2D_no.json +0 -1
  106. package/assets/esri/widgets/AreaMeasurement3D/t9n/AreaMeasurement3D_no.json +0 -1
  107. package/assets/esri/widgets/Attachments/t9n/Attachments_no.json +0 -1
  108. package/assets/esri/widgets/Attribution/t9n/Attribution_no.json +0 -1
  109. package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_no.json +0 -1
  110. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_no.json +0 -1
  111. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_no.json +0 -1
  112. package/assets/esri/widgets/Bookmarks/t9n/Bookmarks_no.json +0 -1
  113. package/assets/esri/widgets/BuildingExplorer/t9n/BuildingExplorer_no.json +0 -1
  114. package/assets/esri/widgets/Compass/t9n/Compass_no.json +0 -1
  115. package/assets/esri/widgets/CoordinateConversion/t9n/CoordinateConversion_no.json +0 -1
  116. package/assets/esri/widgets/Daylight/t9n/Daylight_no.json +0 -1
  117. package/assets/esri/widgets/DirectLineMeasurement3D/t9n/DirectLineMeasurement3D_no.json +0 -1
  118. package/assets/esri/widgets/Directions/t9n/Directions_no.json +0 -1
  119. package/assets/esri/widgets/Directions/t9n/Printout_no.json +0 -1
  120. package/assets/esri/widgets/DistanceMeasurement2D/t9n/DistanceMeasurement2D_no.json +0 -1
  121. package/assets/esri/widgets/Editor/t9n/Editor_no.json +0 -1
  122. package/assets/esri/widgets/ElevationProfile/t9n/ElevationProfile_no.json +0 -1
  123. package/assets/esri/widgets/Expand/t9n/Expand_no.json +0 -1
  124. package/assets/esri/widgets/Feature/t9n/Feature_no.json +0 -1
  125. package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_no.json +0 -1
  126. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_no.json +0 -1
  127. package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_no.json +0 -1
  128. package/assets/esri/widgets/FloorFilter/t9n/FloorFilter_no.json +0 -1
  129. package/assets/esri/widgets/Fullscreen/t9n/Fullscreen_no.json +0 -1
  130. package/assets/esri/widgets/Histogram/t9n/Histogram_no.json +0 -1
  131. package/assets/esri/widgets/HistogramRangeSlider/t9n/HistogramRangeSlider_no.json +0 -1
  132. package/assets/esri/widgets/Home/t9n/Home_no.json +0 -1
  133. package/assets/esri/widgets/LayerList/t9n/LayerList_no.json +0 -1
  134. package/assets/esri/widgets/Legend/t9n/Legend_no.json +0 -1
  135. package/assets/esri/widgets/LineOfSight/t9n/LineOfSight_no.json +0 -1
  136. package/assets/esri/widgets/Locate/t9n/Locate_no.json +0 -1
  137. package/assets/esri/widgets/Measurement/t9n/Measurement_no.json +0 -1
  138. package/assets/esri/widgets/NavigationToggle/t9n/NavigationToggle_no.json +0 -1
  139. package/assets/esri/widgets/Popup/t9n/Popup_no.json +0 -1
  140. package/assets/esri/widgets/Print/t9n/Print_no.json +0 -1
  141. package/assets/esri/widgets/ScaleBar/t9n/ScaleBar_no.json +0 -1
  142. package/assets/esri/widgets/ScaleRangeSlider/t9n/ScaleRangeSlider_no.json +0 -1
  143. package/assets/esri/widgets/Search/t9n/Search_no.json +0 -1
  144. package/assets/esri/widgets/ShadowCast/t9n/ShadowCast_no.json +0 -1
  145. package/assets/esri/widgets/Sketch/t9n/Sketch_no.json +0 -1
  146. package/assets/esri/widgets/Slice/t9n/Slice_no.json +0 -1
  147. package/assets/esri/widgets/Slider/t9n/Slider_no.json +0 -1
  148. package/assets/esri/widgets/Swipe/t9n/Swipe_no.json +0 -1
  149. package/assets/esri/widgets/TableList/t9n/TableList_no.json +0 -1
  150. package/assets/esri/widgets/TimeSlider/t9n/TimeSlider_no.json +0 -1
  151. package/assets/esri/widgets/Track/t9n/Track_no.json +0 -1
  152. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_no.json +0 -1
  153. package/assets/esri/widgets/Zoom/t9n/Zoom_no.json +0 -1
  154. package/assets/esri/widgets/smartMapping/ClassedColorSlider/t9n/ClassedColorSlider_no.json +0 -1
  155. package/assets/esri/widgets/smartMapping/ClassedSizeSlider/t9n/ClassedSizeSlider_no.json +0 -1
  156. package/assets/esri/widgets/smartMapping/ColorSizeSlider/t9n/ColorSizeSlider_no.json +0 -1
  157. package/assets/esri/widgets/smartMapping/ColorSlider/t9n/ColorSlider_no.json +0 -1
  158. package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/HeatmapSlider_no.json +0 -1
  159. package/assets/esri/widgets/smartMapping/OpacitySlider/t9n/OpacitySlider_no.json +0 -1
  160. package/assets/esri/widgets/smartMapping/SizeSlider/t9n/SizeSlider_no.json +0 -1
  161. package/assets/esri/widgets/support/SelectionToolbar/t9n/SelectionToolbar_no.json +0 -1
  162. package/assets/esri/widgets/support/SnappingControls/t9n/SnappingControls_no.json +0 -1
  163. package/assets/esri/widgets/support/t9n/ColorPicker_no.json +0 -1
  164. package/assets/esri/widgets/support/t9n/DatePicker_no.json +0 -1
  165. package/assets/esri/widgets/support/t9n/TimePicker_no.json +0 -1
  166. package/assets/esri/widgets/support/t9n/timezone_no.json +0 -1
  167. package/assets/esri/widgets/support/t9n/uriUtils_no.json +0 -1
@@ -1 +1 @@
1
- {"widgetLabel":"Uređivač","multipleFeaturesTemplate":"Više geoobjekata ({total})","untitledFeatureTemplate":"Geoobjekat bez naslova {id}","editFeatures":"Izmene geoobjekata","editFeature":"Izmeni geoobjekat","addFeature":"Dodaj geoobjekat","featureAttachments":"Prilozi geoobjekata","attachmentsButtonLabel":"Prilozi","attachments":"Prilozi","addAttachment":"Dodaj prilog","editAttachment":"Upravljanje prilozima","selectTemplate":"Izaberite tip geoobjekta","selectFeatureToEdit":"Izaberite geoobjekat da biste ga izmenili.","selectFeature":"Izaberite geoobjekat","placeFeature":"Postavi geoobjekat","placeFeatureOnMap":"Postavite geoobjekat na mapu.","add":"Dodaj","discardEdits":"Odbaci izmene","discardFeature":"Odbaci geoobjekat","edit":"Izmeni","keepAttachment":"Zadrži prilog","keepFeature":"Zadrži geoobjekat","continueAdding":"Nastavi dodavanje","continueEditing":"Nastavi uređivanje","editing":"Izmene","warning":"Obaveštenje","retry":"Pokušajte ponovo","ignore":"Zanemari","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"Ovaj geoobjekat će biti trajno uklonjen.","deleteAttachmentWarningMessage":"Ovaj prilog će biti trajno uklonjen.","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"Ovaj geoobjekat će biti izgubljen.","cancelEditWarningMessage":"Ažuriranja za ovaj geoobjekat će biti izgubljena.","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"Napravljen je zahtev za otkazivanje ovog radnog toka.","errorWarningTitle":"Nažalost, nešto nije u redu","errorWarningMessageTemplate":"Čuvanje izmena nije moguće: {errorMessage}","clickToFinishTemplate":"Kliknite na {button} da biste završili.","tips":{"clickToStart":"Kliknite na mapu da biste počeli da crtate.","clickToContinue":"Kliknite na mapu da biste nastavili da crtate.","clickToAddPoint":"Kliknite na mapu da biste dodali tačku.","clickToContinueThenDoubleClickToEnd":"Kliknite na mapu da biste nastavili da crtate, a zatim kliknite dvaput da završite.","clickToAddFeature":"Kliknite na mapu da biste dodali komponentu."}}
1
+ {"widgetLabel":"Uređivač","multipleFeaturesTemplate":"Više geoobjekata ({total})","untitledFeatureTemplate":"Geoobjekat bez naslova {id}","editFeatures":"Izmene geoobjekata","editFeature":"Izmeni geoobjekat","addFeature":"Dodaj geoobjekat","featureAttachments":"Prilozi geoobjekata","attachmentsButtonLabel":"Prilozi","attachments":"Prilozi","addAttachment":"Dodaj prilog","editAttachment":"Upravljanje prilozima","selectTemplate":"Izaberite tip geoobjekta","selectFeatureToEdit":"Izaberite geoobjekat da biste ga izmenili.","selectFeature":"Izaberite geoobjekat","placeFeature":"Postavi geoobjekat","placeFeatureOnMap":"Postavite geoobjekat na mapu.","add":"Dodaj","discardEdits":"Odbaci izmene","discardFeature":"Odbaci geoobjekat","edit":"Izmeni","keepAttachment":"Zadrži prilog","keepFeature":"Zadrži geoobjekat","continueAdding":"Nastavi dodavanje","continueEditing":"Nastavi uređivanje","editing":"Izmene","warning":"Obaveštenje","retry":"Pokušajte ponovo","ignore":"Zanemari","deleteWarningTitle":"Želite li da izbrišete ovaj geoobjekat?","deleteAttachmentWarningTitle":"Obriši ovaj prilog?","deleteWarningMessage":"Ovaj geoobjekat će biti trajno uklonjen.","deleteAttachmentWarningMessage":"Ovaj prilog će biti trajno uklonjen.","cancelEditTitle":"Odbaci izmene?","cancelAddTitle":"Odbaci geoobjekat?","cancelAddWarningMessage":"Ovaj geoobjekat će biti izgubljen.","cancelEditWarningMessage":"Ažuriranja za ovaj geoobjekat će biti izgubljena.","cancelRequestTitle":"Želite li da otkažete radni tok?","cancelRequestWarningMessage":"Napravljen je zahtev za otkazivanje ovog radnog toka.","errorWarningTitle":"Nažalost, nešto nije u redu","errorWarningMessageTemplate":"Čuvanje izmena nije moguće: {errorMessage}","clickToFinishTemplate":"Kliknite na {button} da biste završili.","tips":{"clickToStart":"Kliknite na mapu da biste počeli da crtate.","clickToContinue":"Kliknite na mapu da biste nastavili da crtate.","clickToAddPoint":"Kliknite na mapu da biste dodali tačku.","clickToContinueThenDoubleClickToEnd":"Kliknite na mapu da biste nastavili da crtate, a zatim kliknite dvaput da završite.","clickToAddFeature":"Kliknite na mapu da biste dodali komponentu."}}
@@ -1 +1 @@
1
- {"widgetLabel":"Redigerare","multipleFeaturesTemplate":"Flera geoobjekt ({total})","untitledFeatureTemplate":"Titellöst geoobjekt {id}","editFeatures":"Redigera geoobjekt","editFeature":"Redigera geoobjekt","addFeature":"Lägg till geoobjekt","featureAttachments":"Geoobjektbilagor","attachmentsButtonLabel":"Bilagor","attachments":"Bilagor","addAttachment":"Lägg till bilaga","editAttachment":"Hantera bilaga","selectTemplate":"Välj en geoobjekttyp","selectFeatureToEdit":"Välj ett geoobjekt för att redigera det.","selectFeature":"Välj geoobjekt","placeFeature":"Placera geoobjekt","placeFeatureOnMap":"Placera geoobjekt på kartan.","add":"Lägg till","discardEdits":"Ignorera redigeringar","discardFeature":"Ignorera geoobjekt","edit":"Redigera","keepAttachment":"Behåll bilaga","keepFeature":"Behåll geoobjekt","continueAdding":"Fortsätt lägga till","continueEditing":"Fortsätt redigera","editing":"Redigering","warning":"Meddelande","retry":"Försök igen","ignore":"Ignorera","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"Geoobjektet tas bort helt.","deleteAttachmentWarningMessage":"Bilagan tas bort helt.","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"Detta geoobjekt går förlorat.","cancelEditWarningMessage":"Uppdateringar av geoobjektet går förlorade.","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"En förfrågan har skickats om att avbryta arbetsflödet.","errorWarningTitle":"Det uppstod ett fel","errorWarningMessageTemplate":"Ändringarna kunde inte sparas: {errorMessage}","clickToFinishTemplate":"Klicka på {button} för att avsluta.","tips":{"clickToStart":"Klicka på kartan för att börja rita.","clickToContinue":"Klicka på kartan för att fortsätta rita.","clickToAddPoint":"Klicka på kartan för att lägga till en punkt.","clickToContinueThenDoubleClickToEnd":"Klicka på kartan för att fortsätta rita och dubbelklicka för att slutföra.","clickToAddFeature":"Klicka på kartan för att lägga till ett geoobjekt."}}
1
+ {"widgetLabel":"Redigerare","multipleFeaturesTemplate":"Flera geoobjekt ({total})","untitledFeatureTemplate":"Titellöst geoobjekt {id}","editFeatures":"Redigera geoobjekt","editFeature":"Redigera geoobjekt","addFeature":"Lägg till geoobjekt","featureAttachments":"Geoobjektbilagor","attachmentsButtonLabel":"Bilagor","attachments":"Bilagor","addAttachment":"Lägg till bilaga","editAttachment":"Hantera bilaga","selectTemplate":"Välj en geoobjekttyp","selectFeatureToEdit":"Välj ett geoobjekt för att redigera det.","selectFeature":"Välj geoobjekt","placeFeature":"Placera geoobjekt","placeFeatureOnMap":"Placera geoobjekt på kartan.","add":"Lägg till","discardEdits":"Ignorera redigeringar","discardFeature":"Ignorera geoobjekt","edit":"Redigera","keepAttachment":"Behåll bilaga","keepFeature":"Behåll geoobjekt","continueAdding":"Fortsätt lägga till","continueEditing":"Fortsätt redigera","editing":"Redigering","warning":"Meddelande","retry":"Försök igen","ignore":"Ignorera","deleteWarningTitle":"Ta bort geoobjektet?","deleteAttachmentWarningTitle":"Ta bort den här bilagan?","deleteWarningMessage":"Geoobjektet tas bort helt.","deleteAttachmentWarningMessage":"Bilagan tas bort helt.","cancelEditTitle":"Ta bort redigeringar?","cancelAddTitle":"Ignorera geoobjekt?","cancelAddWarningMessage":"Detta geoobjekt går förlorat.","cancelEditWarningMessage":"Uppdateringar av geoobjektet går förlorade.","cancelRequestTitle":"Avbryt arbetsflöde?","cancelRequestWarningMessage":"En förfrågan har skickats om att avbryta arbetsflödet.","errorWarningTitle":"Det uppstod ett fel","errorWarningMessageTemplate":"Ändringarna kunde inte sparas: {errorMessage}","clickToFinishTemplate":"Klicka på {button} för att avsluta.","tips":{"clickToStart":"Klicka på kartan för att börja rita.","clickToContinue":"Klicka på kartan för att fortsätta rita.","clickToAddPoint":"Klicka på kartan för att lägga till en punkt.","clickToContinueThenDoubleClickToEnd":"Klicka på kartan för att fortsätta rita och dubbelklicka för att slutföra.","clickToAddFeature":"Klicka på kartan för att lägga till ett geoobjekt."}}
@@ -1 +1 @@
1
- {"widgetLabel":"เครื่องมือแก้ไข","multipleFeaturesTemplate":"หลายฟีเจอร์ ({total})","untitledFeatureTemplate":"ฟีเจอร์ที่ไม่มีชื่อ {id}","editFeatures":"แก้ไขฟีเจอร์","editFeature":"แก้ไขฟีเจอร์","addFeature":"เพิ่มฟีเจอร์","featureAttachments":"ไฟล์แนบฟีเจอร์","attachmentsButtonLabel":"เอกสารแนบ","attachments":"เอกสารแนบ","addAttachment":"เพิ่มไฟล์แนบ","editAttachment":"จัดการไฟล์แนบ","selectTemplate":"เลือกประเภทฟีเจอร์","selectFeatureToEdit":"เลือกฟีเจอร์เพื่อแก้ไข","selectFeature":"เลือกฟีเจอร์","placeFeature":"วางฟีเจอร์","placeFeatureOnMap":"วางฟีเจอร์บนแผนที่","add":"เพิ่ม","discardEdits":"ยกเลิกการแก้ไข","discardFeature":"ยกเลิกฟีเจอร์","edit":"แก้ไข","keepAttachment":"เก็บไฟล์แนบไว้","keepFeature":"คงฟีเจอร์ไว้","continueAdding":"เพิ่มต่อ","continueEditing":"แก้ไขต่อ","editing":"แก้ไข","warning":"ประกาศ","retry":"ลองใหม่","ignore":"เพิกเฉย","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"ฟีเจอร์นี้จะถูกลบออกอย่างถาวร","deleteAttachmentWarningMessage":"ไฟล์แนบนี้จะถูกลบออกอย่างถาวร","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"ฟีเจอร์นี้จะสูญหายไป","cancelEditWarningMessage":"การอัพเดตของฟีเจอร์นี้จะสูญหายไป","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"มีการส่งคำขอเพื่อยกเลิกขั้นตอนการดำเนินงานนี้","errorWarningTitle":"ขออภัย เกิดข้อผิดพลาดขึ้น","errorWarningMessageTemplate":"ไม่สามารถบันทึกการแก้ไขได้: {errorMessage}","clickToFinishTemplate":"คลิก {button} เพื่อสิ้นสุด","tips":{"clickToStart":"คลิกที่แผนที่เพื่อเริ่มการวาด","clickToContinue":"คลิกที่แผนที่เพื่อวาดต่อ","clickToAddPoint":"คลิกที่แผนที่เพื่อเพิ่มจุด","clickToContinueThenDoubleClickToEnd":"คลิกที่แผนที่เพื่อวาดต่อ จากนั้นดับเบิลคลิกเพื่อสรุปการดำเนินการ","clickToAddFeature":"คลิกที่แผนที่เพื่อเพิ่มคุณสมบัติ"}}
1
+ {"widgetLabel":"เครื่องมือแก้ไข","multipleFeaturesTemplate":"หลายฟีเจอร์ ({total})","untitledFeatureTemplate":"ฟีเจอร์ที่ไม่มีชื่อ {id}","editFeatures":"แก้ไขฟีเจอร์","editFeature":"แก้ไขฟีเจอร์","addFeature":"เพิ่มฟีเจอร์","featureAttachments":"ไฟล์แนบฟีเจอร์","attachmentsButtonLabel":"เอกสารแนบ","attachments":"เอกสารแนบ","addAttachment":"เพิ่มไฟล์แนบ","editAttachment":"จัดการไฟล์แนบ","selectTemplate":"เลือกประเภทฟีเจอร์","selectFeatureToEdit":"เลือกฟีเจอร์เพื่อแก้ไข","selectFeature":"เลือกฟีเจอร์","placeFeature":"วางฟีเจอร์","placeFeatureOnMap":"วางฟีเจอร์บนแผนที่","add":"เพิ่ม","discardEdits":"ยกเลิกการแก้ไข","discardFeature":"ยกเลิกฟีเจอร์","edit":"แก้ไข","keepAttachment":"เก็บไฟล์แนบไว้","keepFeature":"คงฟีเจอร์ไว้","continueAdding":"เพิ่มต่อ","continueEditing":"แก้ไขต่อ","editing":"แก้ไข","warning":"ประกาศ","retry":"ลองใหม่","ignore":"เพิกเฉย","deleteWarningTitle":"ลบฟีเจอร์นี้หรือไม่","deleteAttachmentWarningTitle":"ลบไฟล์แนบนี้หรือไม่","deleteWarningMessage":"ฟีเจอร์นี้จะถูกลบออกอย่างถาวร","deleteAttachmentWarningMessage":"ไฟล์แนบนี้จะถูกลบออกอย่างถาวร","cancelEditTitle":"ล้างการลบข้อมูล?","cancelAddTitle":"ละทิ้งฟีเจอร์หรือไม่","cancelAddWarningMessage":"ฟีเจอร์นี้จะสูญหายไป","cancelEditWarningMessage":"การอัพเดตของฟีเจอร์นี้จะสูญหายไป","cancelRequestTitle":"ยกเลิกขั้นตอนการดำเนินงานหรือไม่","cancelRequestWarningMessage":"มีการส่งคำขอเพื่อยกเลิกขั้นตอนการดำเนินงานนี้","errorWarningTitle":"ขออภัย เกิดข้อผิดพลาดขึ้น","errorWarningMessageTemplate":"ไม่สามารถบันทึกการแก้ไขได้: {errorMessage}","clickToFinishTemplate":"คลิก {button} เพื่อสิ้นสุด","tips":{"clickToStart":"คลิกที่แผนที่เพื่อเริ่มการวาด","clickToContinue":"คลิกที่แผนที่เพื่อวาดต่อ","clickToAddPoint":"คลิกที่แผนที่เพื่อเพิ่มจุด","clickToContinueThenDoubleClickToEnd":"คลิกที่แผนที่เพื่อวาดต่อ จากนั้นดับเบิลคลิกเพื่อสรุปการดำเนินการ","clickToAddFeature":"คลิกที่แผนที่เพื่อเพิ่มคุณสมบัติ"}}
@@ -1 +1 @@
1
- {"widgetLabel":"Editor","multipleFeaturesTemplate":"Çoklu detaylar ({total})","untitledFeatureTemplate":"Başlıksız Detay {id}","editFeatures":"Detayları düzenle","editFeature":"Detayı düzenle","addFeature":"Detay ekle","featureAttachments":"Detay eklentileri","attachmentsButtonLabel":"Eklentiler","attachments":"Eklentiler","addAttachment":"Eklenti ekle","editAttachment":"Eklentiyi yönet","selectTemplate":"Detay türü seç","selectFeatureToEdit":"İçinde düzenleme yapılacak detayı seçin.","selectFeature":"Detay seç","placeFeature":"Detay ekleyin","placeFeatureOnMap":"Haritaya detay ekle.","add":"Ekle","discardEdits":"Düzenlemeleri at","discardFeature":"Detayı at","edit":"Düzenle","keepAttachment":"Eklentiyi tut","keepFeature":"Detayı koru","continueAdding":"Eklemeye devam et","continueEditing":"Düzenlemeye devam et","editing":"Düzenleme","warning":"Dikkat","retry":"Yeniden Dene","ignore":"Yoksay","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"Bu detay kalıcı olarak kaldırılacak.","deleteAttachmentWarningMessage":"Bu eklenti kalıcı olarak kaldırılacak.","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"Bu detay kaybedilecek.","cancelEditWarningMessage":"Bu detayda yapılan güncelleme kaybedilecek.","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"Bu iş akışının iptal edilmesi için talepte bulunuldu.","errorWarningTitle":"Üzgünüz, hata oluştu","errorWarningMessageTemplate":"Düzenlemeler kaydedilemedi: {errorMessage}","clickToFinishTemplate":"Bitirmek için {button} düğmesini tıklayın.","tips":{"clickToStart":"Çizmeye başlamak için haritaya tıklayın.","clickToContinue":"Çizmeye devam etmek için haritaya tıklayın.","clickToAddPoint":"Bir nokta eklemek için haritaya tıklayın.","clickToContinueThenDoubleClickToEnd":"Çizmeye devam etmek için haritaya tıklayın ve bitirmek için çift tıklayın.","clickToAddFeature":"Detay eklemek için haritaya tıklayın."}}
1
+ {"widgetLabel":"Editor","multipleFeaturesTemplate":"Çoklu detaylar ({total})","untitledFeatureTemplate":"Başlıksız Detay {id}","editFeatures":"Detayları düzenle","editFeature":"Detayı düzenle","addFeature":"Detay ekle","featureAttachments":"Detay eklentileri","attachmentsButtonLabel":"Eklentiler","attachments":"Eklentiler","addAttachment":"Eklenti ekle","editAttachment":"Eklentiyi yönet","selectTemplate":"Detay türü seç","selectFeatureToEdit":"İçinde düzenleme yapılacak detayı seçin.","selectFeature":"Detay seç","placeFeature":"Detay ekleyin","placeFeatureOnMap":"Haritaya detay ekle.","add":"Ekle","discardEdits":"Düzenlemeleri at","discardFeature":"Detayı at","edit":"Düzenle","keepAttachment":"Eklentiyi tut","keepFeature":"Detayı koru","continueAdding":"Eklemeye devam et","continueEditing":"Düzenlemeye devam et","editing":"Düzenleme","warning":"Dikkat","retry":"Yeniden Dene","ignore":"Yoksay","deleteWarningTitle":"Bu detay silinsin mi?","deleteAttachmentWarningTitle":"Bu eklenti silinsin mi?","deleteWarningMessage":"Bu detay kalıcı olarak kaldırılacak.","deleteAttachmentWarningMessage":"Bu eklenti kalıcı olarak kaldırılacak.","cancelEditTitle":"Düzenlemeler atılsın mı?","cancelAddTitle":"Detay çıkarılsın mı?","cancelAddWarningMessage":"Bu detay kaybedilecek.","cancelEditWarningMessage":"Bu detayda yapılan güncelleme kaybedilecek.","cancelRequestTitle":"İş akışı iptal edilsin mi?","cancelRequestWarningMessage":"Bu iş akışının iptal edilmesi için talepte bulunuldu.","errorWarningTitle":"Üzgünüz, hata oluştu","errorWarningMessageTemplate":"Düzenlemeler kaydedilemedi: {errorMessage}","clickToFinishTemplate":"Bitirmek için {button} düğmesini tıklayın.","tips":{"clickToStart":"Çizmeye başlamak için haritaya tıklayın.","clickToContinue":"Çizmeye devam etmek için haritaya tıklayın.","clickToAddPoint":"Bir nokta eklemek için haritaya tıklayın.","clickToContinueThenDoubleClickToEnd":"Çizmeye devam etmek için haritaya tıklayın ve bitirmek için çift tıklayın.","clickToAddFeature":"Detay eklemek için haritaya tıklayın."}}
@@ -1 +1 @@
1
- {"widgetLabel":"Editor","multipleFeaturesTemplate":"Декілька об'єктів ({total})","untitledFeatureTemplate":"Об'єкт без заголовку {id}","editFeatures":"Редагувати об'єкти","editFeature":"Редагувати об'єкт","addFeature":"Додати об'єкт","featureAttachments":"Прикріплення об'єктів","attachmentsButtonLabel":"Прикріплення","attachments":"Прикріплення","addAttachment":"Додати прикріплення","editAttachment":"Керування прикріпленням","selectTemplate":"Вибрати тип об'єкту","selectFeatureToEdit":"Вибрати об'єкт, щоб його редагувати","selectFeature":"Вибрати об’єкт","placeFeature":"Розмістити об'єкт","placeFeatureOnMap":"Розмітити об'єкт на карті.","add":"Додавання","discardEdits":"Скасувати редагування","discardFeature":"Відхилити об'єкт","edit":"Редагування","keepAttachment":"Зберегти прикріплення","keepFeature":"Залишити об'єкт","continueAdding":"Продовжити додання","continueEditing":"Продовжити редагування","editing":"Редагування","warning":"Примітка","retry":"Повторити","ignore":"Ігнорувати","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"Цей об'єкт буде назавжди видалено.","deleteAttachmentWarningMessage":"Це прикріплення буде назавжди видалено.","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"Цей об'єкт буде втрачений","cancelEditWarningMessage":"Оновлення для цього об'єкту будуть втрачені.","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"Було виконано запит на скасування цього робочого процесу.","errorWarningTitle":"Ой, щось пішло не так","errorWarningMessageTemplate":"Зміни не вдалося зберегти: {errorMessage}","clickToFinishTemplate":"Натисніть {button} для завершення.","tips":{"clickToStart":"Клацніть на карті, щоб почати малювання.","clickToContinue":"Клацніть на карті, щоб продовжити малювання.","clickToAddPoint":"Клацніть на карті, щоб додати точку.","clickToContinueThenDoubleClickToEnd":"Клацніть на карті, щоб продовжити малювання, потім двічі клацніть, щоб завершити.","clickToAddFeature":"Клацніть на карті, щоб додати об'єкт."}}
1
+ {"widgetLabel":"Editor","multipleFeaturesTemplate":"Декілька об'єктів ({total})","untitledFeatureTemplate":"Об'єкт без заголовку {id}","editFeatures":"Редагувати об'єкти","editFeature":"Редагувати об'єкт","addFeature":"Додати об'єкт","featureAttachments":"Прикріплення об'єктів","attachmentsButtonLabel":"Прикріплення","attachments":"Прикріплення","addAttachment":"Додати прикріплення","editAttachment":"Керування прикріпленням","selectTemplate":"Вибрати тип об'єкту","selectFeatureToEdit":"Вибрати об'єкт, щоб його редагувати","selectFeature":"Вибрати об’єкт","placeFeature":"Розмістити об'єкт","placeFeatureOnMap":"Розмітити об'єкт на карті.","add":"Додавання","discardEdits":"Скасувати редагування","discardFeature":"Відхилити об'єкт","edit":"Редагування","keepAttachment":"Зберегти прикріплення","keepFeature":"Залишити об'єкт","continueAdding":"Продовжити додання","continueEditing":"Продовжити редагування","editing":"Редагування","warning":"Примітка","retry":"Повторити","ignore":"Ігнорувати","deleteWarningTitle":"Видалити цей об'єкт?","deleteAttachmentWarningTitle":"Видалити це прикріплення","deleteWarningMessage":"Цей об'єкт буде назавжди видалено.","deleteAttachmentWarningMessage":"Це прикріплення буде назавжди видалено.","cancelEditTitle":"Скасувати редагування?","cancelAddTitle":"Відхилити об'єкт?","cancelAddWarningMessage":"Цей об'єкт буде втрачений","cancelEditWarningMessage":"Оновлення для цього об'єкту будуть втрачені.","cancelRequestTitle":"Скасувати робочий процес?","cancelRequestWarningMessage":"Було виконано запит на скасування цього робочого процесу.","errorWarningTitle":"Ой, щось пішло не так","errorWarningMessageTemplate":"Зміни не вдалося зберегти: {errorMessage}","clickToFinishTemplate":"Натисніть {button} для завершення.","tips":{"clickToStart":"Клацніть на карті, щоб почати малювання.","clickToContinue":"Клацніть на карті, щоб продовжити малювання.","clickToAddPoint":"Клацніть на карті, щоб додати точку.","clickToContinueThenDoubleClickToEnd":"Клацніть на карті, щоб продовжити малювання, потім двічі клацніть, щоб завершити.","clickToAddFeature":"Клацніть на карті, щоб додати об'єкт."}}
@@ -1 +1 @@
1
- {"widgetLabel":"Editor","multipleFeaturesTemplate":"Nhiều đối tượng ({total})","untitledFeatureTemplate":"Đối tượng chưa có Tiêu đề {id}","editFeatures":"Biên tập đối tượng","editFeature":"Chỉnh sửa đối tượng","addFeature":"Thêm đối tượng","featureAttachments":"Tệp đính kèm đối tượng","attachmentsButtonLabel":"Tệp đính kèm","attachments":"Tệp đính kèm","addAttachment":"Thêm tệp đính kèm","editAttachment":"Quản lý tệp đính kèm","selectTemplate":"Chọn loại đối tượng","selectFeatureToEdit":"Chọn một đối tượng để chỉnh sửa.","selectFeature":"Chọn đối tượng","placeFeature":"Đặt đối tượng","placeFeatureOnMap":"Đặt đối tượng lên bản đồ.","add":"Thêm","discardEdits":"Hủy các chỉnh sửa","discardFeature":"Hủy bỏ đối tượng","edit":"Chỉnh sửa","keepAttachment":"Giữ lại tệp đính kèm","keepFeature":"Giữ đối tượng","continueAdding":"Tiếp tục thêm","continueEditing":"Tiếp tục chỉnh sửa","editing":"Biên tập","warning":"Lưu ý","retry":"Thử lại","ignore":"Bỏ qua","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"Đối tượng này sẽ bị xóa vĩnh viễn.","deleteAttachmentWarningMessage":"Tệp đính kèm này sẽ bị xóa vĩnh viễn.","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"Đối tượng này sẽ bị mất.","cancelEditWarningMessage":"Các cập nhật với đối tượng này sẽ bị mất.","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"Một yêu cầu đã được đưa ra để hủy bỏ quy trình này.","errorWarningTitle":"Rất tiếc, đã xảy ra sự cố.","errorWarningMessageTemplate":"Không thể lưu các chỉnh sửa: {errorMessage}","clickToFinishTemplate":"Nhấn {button} để hoàn tất.","tips":{"clickToStart":"Bấm vào bản đồ để bắt đầu vẽ.","clickToContinue":"Bấm vào bản đồ để tiếp tục vẽ.","clickToAddPoint":"Bấm vào bản đồ để thêm điểm.","clickToContinueThenDoubleClickToEnd":"Bấm vào bản đồ để tiếp tục vẽ sau đó nhấp đúp chuột để hoàn tất.","clickToAddFeature":"Bấm vào bản đồ để thêm đối tượng."}}
1
+ {"widgetLabel":"Editor","multipleFeaturesTemplate":"Nhiều đối tượng ({total})","untitledFeatureTemplate":"Đối tượng chưa có Tiêu đề {id}","editFeatures":"Biên tập đối tượng","editFeature":"Chỉnh sửa đối tượng","addFeature":"Thêm đối tượng","featureAttachments":"Tệp đính kèm đối tượng","attachmentsButtonLabel":"Tệp đính kèm","attachments":"Tệp đính kèm","addAttachment":"Thêm tệp đính kèm","editAttachment":"Quản lý tệp đính kèm","selectTemplate":"Chọn loại đối tượng","selectFeatureToEdit":"Chọn một đối tượng để chỉnh sửa.","selectFeature":"Chọn đối tượng","placeFeature":"Đặt đối tượng","placeFeatureOnMap":"Đặt đối tượng lên bản đồ.","add":"Thêm","discardEdits":"Hủy các chỉnh sửa","discardFeature":"Hủy bỏ đối tượng","edit":"Chỉnh sửa","keepAttachment":"Giữ lại tệp đính kèm","keepFeature":"Giữ đối tượng","continueAdding":"Tiếp tục thêm","continueEditing":"Tiếp tục chỉnh sửa","editing":"Biên tập","warning":"Lưu ý","retry":"Thử lại","ignore":"Bỏ qua","deleteWarningTitle":"Xóa đối tượng này?","deleteAttachmentWarningTitle":"Xóa tệp đính kèm này?","deleteWarningMessage":"Đối tượng này sẽ bị xóa vĩnh viễn.","deleteAttachmentWarningMessage":"Tệp đính kèm này sẽ bị xóa vĩnh viễn.","cancelEditTitle":"Hủy các chỉnh sửa?","cancelAddTitle":"Hủy bỏ đối tượng?","cancelAddWarningMessage":"Đối tượng này sẽ bị mất.","cancelEditWarningMessage":"Các cập nhật với đối tượng này sẽ bị mất.","cancelRequestTitle":"Hủy bỏ quy trình?","cancelRequestWarningMessage":"Một yêu cầu đã được đưa ra để hủy bỏ quy trình này.","errorWarningTitle":"Rất tiếc, đã xảy ra sự cố.","errorWarningMessageTemplate":"Không thể lưu các chỉnh sửa: {errorMessage}","clickToFinishTemplate":"Nhấn {button} để hoàn tất.","tips":{"clickToStart":"Bấm vào bản đồ để bắt đầu vẽ.","clickToContinue":"Bấm vào bản đồ để tiếp tục vẽ.","clickToAddPoint":"Bấm vào bản đồ để thêm điểm.","clickToContinueThenDoubleClickToEnd":"Bấm vào bản đồ để tiếp tục vẽ sau đó nhấp đúp chuột để hoàn tất.","clickToAddFeature":"Bấm vào bản đồ để thêm đối tượng."}}
@@ -1 +1 @@
1
- {"widgetLabel":"编辑器","multipleFeaturesTemplate":"多个要素 ({total})","untitledFeatureTemplate":"无标题要素 {id}","editFeatures":"编辑要素","editFeature":"编辑要素","addFeature":"添加要素","featureAttachments":"要素附件","attachmentsButtonLabel":"附件","attachments":"附件","addAttachment":"添加附件","editAttachment":"管理附件","selectTemplate":"选择要素类型","selectFeatureToEdit":"选择要编辑的要素。","selectFeature":"选择要素","placeFeature":"放置要素","placeFeatureOnMap":"在地图上放置要素。","add":"添加","discardEdits":"放弃编辑内容","discardFeature":"放弃要素","edit":"编辑","keepAttachment":"保存附件","keepFeature":"保留要素","continueAdding":"继续添加","continueEditing":"继续编辑","editing":"编辑","warning":"通知","retry":"重试","ignore":"忽略","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"此要素将永久移除。","deleteAttachmentWarningMessage":"此附件将永久移除。","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"此要素将丢失。","cancelEditWarningMessage":"此要素的更新内容将丢失。","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"已发出取消此工作流的请求。","errorWarningTitle":"抱歉,发生错误","errorWarningMessageTemplate":"无法保存编辑内容:{errorMessage}","clickToFinishTemplate":"单击 {button} 完成设置。","tips":{"clickToStart":"单击地图以开始绘制。","clickToContinue":"单击地图以继续绘制。","clickToAddPoint":"单击地图以添加点。","clickToContinueThenDoubleClickToEnd":"单击地图以继续绘制,然后双击以完成。","clickToAddFeature":"单击地图以添加要素。"}}
1
+ {"widgetLabel":"编辑器","multipleFeaturesTemplate":"多个要素 ({total})","untitledFeatureTemplate":"无标题要素 {id}","editFeatures":"编辑要素","editFeature":"编辑要素","addFeature":"添加要素","featureAttachments":"要素附件","attachmentsButtonLabel":"附件","attachments":"附件","addAttachment":"添加附件","editAttachment":"管理附件","selectTemplate":"选择要素类型","selectFeatureToEdit":"选择要编辑的要素。","selectFeature":"选择要素","placeFeature":"放置要素","placeFeatureOnMap":"在地图上放置要素。","add":"添加","discardEdits":"放弃编辑内容","discardFeature":"放弃要素","edit":"编辑","keepAttachment":"保存附件","keepFeature":"保留要素","continueAdding":"继续添加","continueEditing":"继续编辑","editing":"编辑","warning":"通知","retry":"重试","ignore":"忽略","deleteWarningTitle":"删除此要素?","deleteAttachmentWarningTitle":"删除此附件?","deleteWarningMessage":"此要素将永久移除。","deleteAttachmentWarningMessage":"此附件将永久移除。","cancelEditTitle":"是否放弃编辑内容?","cancelAddTitle":"是否放弃要素?","cancelAddWarningMessage":"此要素将丢失。","cancelEditWarningMessage":"此要素的更新内容将丢失。","cancelRequestTitle":"取消工作流?","cancelRequestWarningMessage":"已发出取消此工作流的请求。","errorWarningTitle":"抱歉,发生错误","errorWarningMessageTemplate":"无法保存编辑内容:{errorMessage}","clickToFinishTemplate":"单击 {button} 完成设置。","tips":{"clickToStart":"单击地图以开始绘制。","clickToContinue":"单击地图以继续绘制。","clickToAddPoint":"单击地图以添加点。","clickToContinueThenDoubleClickToEnd":"单击地图以继续绘制,然后双击以完成。","clickToAddFeature":"单击地图以添加要素。"}}
@@ -1 +1 @@
1
- {"widgetLabel":"編輯器","multipleFeaturesTemplate":"多個圖徵 ({total})","untitledFeatureTemplate":"無標題的圖徵 {id}","editFeatures":"編輯圖徵","editFeature":"編輯圖徵","addFeature":"新增圖徵","featureAttachments":"圖徵附件","attachmentsButtonLabel":"附件","attachments":"附件","addAttachment":"新增附件","editAttachment":"管理附件","selectTemplate":"選擇圖徵類型","selectFeatureToEdit":"選擇圖徵進行編輯。","selectFeature":"選擇圖徵","placeFeature":"放置圖徵","placeFeatureOnMap":"在地圖上放置圖徵。","add":"新增","discardEdits":"放棄編輯","discardFeature":"放棄圖徵","edit":"編輯","keepAttachment":"保留附件","keepFeature":"保留圖徵","continueAdding":"正在繼續新增","continueEditing":"正在繼續編輯","editing":"編輯","warning":"通知","retry":"重試","ignore":"忽略","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"將永久移除此圖徵。","deleteAttachmentWarningMessage":"將永久移除此附件。","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"此圖徵將遺失。","cancelEditWarningMessage":"將遺失對此圖徵的更新。","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"已提出取消此工作流程的請求。","errorWarningTitle":"很抱歉,發生錯誤","errorWarningMessageTemplate":"無法儲存編輯: {errorMessage}","clickToFinishTemplate":"按一下 {button} 以完成。","tips":{"clickToStart":"按一下地圖以開始繪製。","clickToContinue":"按一下地圖以繼續繪製。","clickToAddPoint":"按一下地圖以新增點。","clickToContinueThenDoubleClickToEnd":"按一下以地圖繼續繪製,然後按兩下以完成。","clickToAddFeature":"按一下地圖以新增圖徵。"}}
1
+ {"widgetLabel":"編輯器","multipleFeaturesTemplate":"多個圖徵 ({total})","untitledFeatureTemplate":"無標題的圖徵 {id}","editFeatures":"編輯圖徵","editFeature":"編輯圖徵","addFeature":"新增圖徵","featureAttachments":"圖徵附件","attachmentsButtonLabel":"附件","attachments":"附件","addAttachment":"新增附件","editAttachment":"管理附件","selectTemplate":"選擇圖徵類型","selectFeatureToEdit":"選擇圖徵進行編輯。","selectFeature":"選擇圖徵","placeFeature":"放置圖徵","placeFeatureOnMap":"在地圖上放置圖徵。","add":"新增","discardEdits":"放棄編輯","discardFeature":"放棄圖徵","edit":"編輯","keepAttachment":"保留附件","keepFeature":"保留圖徵","continueAdding":"正在繼續新增","continueEditing":"正在繼續編輯","editing":"編輯","warning":"通知","retry":"重試","ignore":"忽略","deleteWarningTitle":"刪除此圖徵?","deleteAttachmentWarningTitle":"刪除此附件?","deleteWarningMessage":"將永久移除此圖徵。","deleteAttachmentWarningMessage":"將永久移除此附件。","cancelEditTitle":"放棄編輯?","cancelAddTitle":"放棄圖徵?","cancelAddWarningMessage":"此圖徵將遺失。","cancelEditWarningMessage":"將遺失對此圖徵的更新。","cancelRequestTitle":"取消工作流程?","cancelRequestWarningMessage":"已提出取消此工作流程的請求。","errorWarningTitle":"很抱歉,發生錯誤","errorWarningMessageTemplate":"無法儲存編輯: {errorMessage}","clickToFinishTemplate":"按一下 {button} 以完成。","tips":{"clickToStart":"按一下地圖以開始繪製。","clickToContinue":"按一下地圖以繼續繪製。","clickToAddPoint":"按一下地圖以新增點。","clickToContinueThenDoubleClickToEnd":"按一下以地圖繼續繪製,然後按兩下以完成。","clickToAddFeature":"按一下地圖以新增圖徵。"}}
@@ -1 +1 @@
1
- {"widgetLabel":"編輯器","multipleFeaturesTemplate":"多個圖徵 ({total})","untitledFeatureTemplate":"無標題的圖徵 {id}","editFeatures":"編輯圖徵","editFeature":"編輯圖徵","addFeature":"新增圖徵","featureAttachments":"圖徵附件","attachmentsButtonLabel":"附件","attachments":"附件","addAttachment":"新增附件","editAttachment":"管理附件","selectTemplate":"選擇圖徵類型","selectFeatureToEdit":"選擇圖徵進行編輯。","selectFeature":"選擇圖徵","placeFeature":"放置圖徵","placeFeatureOnMap":"在地圖上放置圖徵。","add":"新增","discardEdits":"放棄編輯","discardFeature":"放棄圖徵","edit":"編輯","keepAttachment":"保留附件","keepFeature":"保留圖徵","continueAdding":"正在繼續新增","continueEditing":"正在繼續編輯","editing":"編輯","warning":"通知","retry":"重試","ignore":"忽略","deleteWarningTitle":"Delete this feature?","deleteAttachmentWarningTitle":"Delete this attachment?","deleteWarningMessage":"將永久移除此圖徵。","deleteAttachmentWarningMessage":"將永久移除此附件。","cancelEditTitle":"Discard edits?","cancelAddTitle":"Discard feature?","cancelAddWarningMessage":"此圖徵將遺失。","cancelEditWarningMessage":"將遺失對此圖徵的更新。","cancelRequestTitle":"Cancel workflow?","cancelRequestWarningMessage":"已提出取消此工作流程的請求。","errorWarningTitle":"很抱歉,發生錯誤","errorWarningMessageTemplate":"無法儲存編輯: {errorMessage}","clickToFinishTemplate":"按一下 {button} 以完成。","tips":{"clickToStart":"按一下地圖以開始繪製。","clickToContinue":"按一下地圖以繼續繪製。","clickToAddPoint":"按一下地圖以新增點。","clickToContinueThenDoubleClickToEnd":"按一下以地圖繼續繪製,然後按兩下以完成。","clickToAddFeature":"按一下地圖以新增圖徵。"}}
1
+ {"widgetLabel":"編輯器","multipleFeaturesTemplate":"多個圖徵 ({total})","untitledFeatureTemplate":"無標題的圖徵 {id}","editFeatures":"編輯圖徵","editFeature":"編輯圖徵","addFeature":"新增圖徵","featureAttachments":"圖徵附件","attachmentsButtonLabel":"附件","attachments":"附件","addAttachment":"新增附件","editAttachment":"管理附件","selectTemplate":"選擇圖徵類型","selectFeatureToEdit":"選擇圖徵進行編輯。","selectFeature":"選擇圖徵","placeFeature":"放置圖徵","placeFeatureOnMap":"在地圖上放置圖徵。","add":"新增","discardEdits":"放棄編輯","discardFeature":"放棄圖徵","edit":"編輯","keepAttachment":"保留附件","keepFeature":"保留圖徵","continueAdding":"正在繼續新增","continueEditing":"正在繼續編輯","editing":"編輯","warning":"通知","retry":"重試","ignore":"忽略","deleteWarningTitle":"刪除此圖徵?","deleteAttachmentWarningTitle":"刪除此附件?","deleteWarningMessage":"將永久移除此圖徵。","deleteAttachmentWarningMessage":"將永久移除此附件。","cancelEditTitle":"放棄編輯?","cancelAddTitle":"放棄圖徵?","cancelAddWarningMessage":"此圖徵將遺失。","cancelEditWarningMessage":"將遺失對此圖徵的更新。","cancelRequestTitle":"取消工作流程?","cancelRequestWarningMessage":"已提出取消此工作流程的請求。","errorWarningTitle":"很抱歉,發生錯誤","errorWarningMessageTemplate":"無法儲存編輯: {errorMessage}","clickToFinishTemplate":"按一下 {button} 以完成。","tips":{"clickToStart":"按一下地圖以開始繪製。","clickToContinue":"按一下地圖以繼續繪製。","clickToAddPoint":"按一下地圖以新增點。","clickToContinueThenDoubleClickToEnd":"按一下以地圖繼續繪製,然後按兩下以完成。","clickToAddFeature":"按一下地圖以新增圖徵。"}}
@@ -1 +1 @@
1
- {"widgetLabel":"å_Utility Network Trace______________________ø","widgetDescription":"å_A widget to perform traces in a Utility Network_________________________ø.","globalStrings":{"selectTerminalPlaceholder":"å_Select Terminals_________________ø","remove":"å_Remove_____________ø","locateFeature":"å_Locate_____________ø","zoomToFeature":"å_Zoom to_______________ø","clearResults":"å_Discard_______________ø","select":"å_Select_____________ø","cancel":"å_Cancel_____________ø","ok":"å_OK_____ø"},"inputsStrings":{"headerTabInputs":"å_Inputs_____________ø","headerStartingPoint":"å_Starting points________________ø","startingPointHint":"å_Add starting points for the trace__________________ø.","headerBarrier":"å_Barriers_________________ø","barrierButton":"å_Barrier_______________ø","barrierPointHint":"å_Add barrier points for the trace__________________ø.","barrierFilter":"å_Filter barrier_______________ø","addPointOption":"å_Add a point____________ø","addPointHint":"å_Click the map to add a point_____________________________ø","removeAllPoints":"å_Remove all_____________________ø","selectTraces":"å_Select traces______________ø"},"tracingStrings":{"traceOperation":"å_Trace types____________ø","runTrace":"å_Run_______ø"},"resultsStrings":{"headerTabResults":"å_Results_______________ø","resultsListOptions":"å_Options_______________ø","ellipsesOptions":"å_Options_______________ø","displayAttribute":"å_Display attribute__________________ø","sortBy":"å_Sort by_______________ø","startOverButton":"å_Clear All___________________ø","startOverValidation":"å_Are you sure? All the trace Inputs and Results will be lost_______________________________ø.","highlightTrace":"å_Show graphics______________ø","noSelectionResults":"å_Features cannot be selected. Enable to show graphics instead________________________________ø.","viewFeatures":"å_Features_________________ø","selectFeatures":"å_Select features________________ø","graphicColor":"å_Select color_____________ø","functionHeader":"å_Functions___________________ø","noValue":"å_No value_________________ø"},"alertsStrings":{"startingPointAlertHeader":"å_Starting point missing_______________________ø","startingPointAlert":"å_Add a starting point to run this trace_____________________ø.","selectTraceAlertHeader":"å_Trace type not selected________________________ø","selectTraceAlert":"å_Select a trace type to run____________________________ø.","NoRunAlertHeader":"å_No results available_____________________ø","noResultsInfo":"å_Go to the Inputs tab to select a trace type, add a starting point, and click Run to view the results____________________________________________________ø.","traceExecuting":"å_Trace in progress_____________________ø...","genericResultHeader":"å_Trace result_____________ø","noAssetsFoundHeader":"å_Cannot add point_________________ø","noAssetFound":"å_The point must intersect with a feature on the map___________________________ø.","clearResultsAlert":"å_Are you sure? All the results for this trace will be discarded_________________________________ø.","noTraceSupported":"å_This map does not support tracing the Utility Network. Publish a web map with a Utility Network and shared Trace Configurations_________________________________________________________________ø."}}
1
+ {"widgetLabel":"Utility Network Trace","widgetDescription":"A widget to perform traces in a Utility Network.","globalStrings":{"selectTerminalPlaceholder":"Select Terminals","remove":"Remove","locateFeature":"Locate","zoomToFeature":"Zoom to","clearResults":"Discard","select":"Select","cancel":"Cancel","ok":"OK"},"inputsStrings":{"headerTabInputs":"Inputs","headerStartingPoint":"Starting points","startingPointHint":"Add starting points for the trace.","headerBarrier":"Barriers","barrierButton":"Barrier","barrierPointHint":"Add barrier points for the trace.","barrierFilter":"Filter barrier","addPointOption":"Add a point","addPointHint":"Click the map to add a point","removeAllPoints":"Remove all","selectTraces":"Select traces"},"tracingStrings":{"traceOperation":"Trace types","runTrace":"Run"},"resultsStrings":{"headerTabResults":"Results","resultsListOptions":"Options","ellipsesOptions":"Options","displayAttribute":"Display attribute","sortBy":"Sort by","startOverButton":"Clear All","startOverValidation":"Are you sure? All the trace Inputs and Results will be lost.","highlightTrace":"Show graphics","noSelectionResults":"Features cannot be selected. Enable to show graphics instead.","viewFeatures":"Features","selectFeatures":"Select features","graphicColor":"Select color","functionHeader":"Functions","noValue":"No value"},"alertsStrings":{"startingPointAlertHeader":"Starting point missing","startingPointAlert":"Add a starting point to run this trace.","selectTraceAlertHeader":"Trace type not selected","selectTraceAlert":"Select a trace type to run.","NoRunAlertHeader":"No results available","noResultsInfo":"Go to the Inputs tab to select a trace type, add a starting point, and click Run to view the results.","traceExecuting":"Trace in progress...","genericResultHeader":"Trace result","noAssetsFoundHeader":"Cannot add point","noAssetFound":"The point must intersect with a feature on the map.","clearResultsAlert":"Are you sure? All the results for this trace will be discarded.","noTraceSupported":"This map does not support tracing the Utility Network. Publish a web map with a Utility Network and shared Trace Configurations."}}
@@ -2,10 +2,10 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.22/esri/copyright.txt for details.
4
4
  */
5
- import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as e}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";function n(n){const a=new e;return a.attributes.add("position","vec3"),a.fragment.uniforms.add("cloudRadius","float").add("halfCubeMapSize","float").add("power","float").add("sigmaE","float").add("density","float").add("cloudSize","float").add("detailSize","float").add("smoothness","float").add("cloudHeight","float").add("coverage","float").add("viewMatrix","mat3").add("cloudShapeTexture","sampler2D"),a.vertex.code.add(t`void main(void) {
5
+ import{ATLAS_SIZE as t,TILE_ROWS as e,TILE_SIZE as n}from"../views/3d/environment/NoiseTextureAtlas.js";import{glsl as a}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as o}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";function i(i){const r=new o;return r.attributes.add("position","vec3"),r.fragment.uniforms.add("cloudRadius","float").add("halfCubeMapSize","float").add("power","float").add("sigmaE","float").add("density","float").add("cloudSize","float").add("detailSize","float").add("smoothness","float").add("cloudHeight","float").add("coverage","float").add("viewMatrix","mat3").add("cloudShapeTexture","sampler2D"),r.vertex.code.add(a`void main(void) {
6
6
  gl_Position = vec4(position, 1.0);
7
- }`),a.fragment.code.add(t`
8
- const int STEPS = ${0===n.steps?t`16`:1===n.steps?t`100`:t`200`};
7
+ }`),r.fragment.code.add(a`
8
+ const int STEPS = ${0===i.steps?a`16`:1===i.steps?a`100`:a`200`};
9
9
  const int STEPS_LIGHT = 6;
10
10
  const float stepL = 300.0 / float(STEPS_LIGHT);
11
11
 
@@ -22,4 +22,4 @@ gl_Position = vec4(position, 1.0);
22
22
 
23
23
  float saturate(float x) {
24
24
  return clamp(x, 0.0, 1.0);
25
- }`),a.fragment.code.add("\n float getCloudShape(vec3 pos, float pOffset) {\n const float textureWidth = 1560.0;\n const float dataWidth = 1560.0;\n const float tileRows = 12.0;\n const vec3 atlasDimensions = vec3(128.0, 128.0, 144.0);\n\n //Change from Y being height to Z being height\n vec3 p = pos.xzy;\n\n //Pixel coordinates of point in the 3D data\n vec3 coord = vec3(mod(p - pOffset * atlasDimensions, atlasDimensions));\n float f = fract(coord.z);\n float level = floor(coord.z);\n float tileY = floor(level / tileRows);\n float tileX = level - tileY * tileRows;\n\n //The data coordinates are offset by the x and y tile, the two boundary cells between each tile pair and the initial boundary cell on the first row/column\n vec2 offset = atlasDimensions.x * vec2(tileX, tileY) + 2.0 * vec2(tileX, tileY) + 1.0;\n vec2 pixel = coord.xy + offset;\n vec2 data = texture2D(cloudShapeTexture, mod(pixel, dataWidth) / textureWidth).xy;\n\n return 1.0 - mix(data.x, data.y, f);\n }"),a.fragment.code.add("\n float clouds(vec3 p) {\n float cloudVariations = getCloudShape(0.002 * p, 0.5);\n\n float cloud = saturate(0.5 * mix(0.0, 1.0, min(2.0 * coverage, 1.0)));\n cloud += (cloudVariations * 0.6 - 0.3) * ( -4.0 * (coverage * coverage - coverage));\n float heightFraction = saturate((length(p) - cloudRadius - cloudStart) / cloudHeight);\n\n //Round the bottom and top of the clouds\n cloud *= saturate(remap(heightFraction, 0.0, 0.25, 0.0, 1.0)) * saturate(remap(heightFraction, 0.75, 1.0, 1.0, 0.0));\n\n float shape = getCloudShape(cloudSize * p, 0.0);\n shape *= mix(0.0, 1.0, min(2.0 * (1.0 - coverage), 1.0));\n cloud = saturate(remap(cloud, shape, 1.0, 0.0, 1.0));\n\n if (cloud <= 0.0) {\n return 0.0;\n }\n\n return density * saturate(remap(cloud, smoothness * getCloudShape(detailSize * p, 0.0), 1.0, 0.0, 1.0));\n }"),a.fragment.code.add("\n vec2 sphereIntersections(vec3 start, vec3 dir, float radius) {\n float a = dot(dir, dir);\n float b = 2.0 * dot(dir, start);\n float c = dot(start, start) - (radius * radius);\n float d = (b * b) - 4.0 * a * c;\n\n if (d < 0.0) {\n return vec2(1e5, -1e5);\n }\n\n return vec2((-b - sqrt(d)) / (2.0 * a), (-b + sqrt(d)) / (2.0 * a));\n }\n \n float HenyeyGreenstein(float g, float costh) {\n return (1.0 / (4.0 * 3.1415)) * ((1.0 - g * g) / pow(1.0 + g * g - 2.0 * g * costh, 1.5));\n }\n "),a.fragment.code.add("\n vec3 multipleOctaves(float extinction, float mu, float stepL) {\n float attenuation = 1.0;\n float contribution = 1.0;\n float phaseAttenuation = 1.0;\n vec3 luminance = vec3(0);\n\n for (int i = 0; i < 4; i++) {\n float phase = mix(HenyeyGreenstein(0.0, mu), HenyeyGreenstein(0.3 * phaseAttenuation, mu), 0.7);\n luminance += contribution * phase * exp(-stepL * extinction * sigmaE * attenuation);\n attenuation *= 0.2;\n contribution *= 0.6;\n phaseAttenuation *= 0.5;\n }\n\n return luminance;\n }"),a.fragment.code.add("\n vec3 lightRay(vec3 org, vec3 p, float phaseFunction, float mu, vec3 sunDirection) {\n float lightRayDensity = clouds(p);\n lightRayDensity += clouds(p + sunDirection * 1.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 2.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 3.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 4.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 5.0 * stepL);\n \n vec3 beersLaw = multipleOctaves(lightRayDensity, mu, stepL);\n\n return mix(beersLaw * 2.0 * (1.0 - (exp(-stepL * lightRayDensity * 2.0 * sigmaE ))), beersLaw, 0.5 + 0.5 * mu);\n }"),a.fragment.code.add('\n vec3 mainRay(vec3 org, vec3 dir, vec3 sunDirection, float distToStart, float totalDistance, out float totalTransmittance) {\n\n // This is never true but having the if statement stops later loop unrolling, texture prefetching and WebGL context crashes\n if (dir.z < 0.0) {\n return vec3(0);\n }\n\n //Variable to track transmittance along view ray. Assume clear sky and attenuate light when encountering clouds.\n totalTransmittance = 1.0;\n\n float stepS = totalDistance / float(STEPS);\n float cameraHeight = length(org);\n\n //Alignment of view and light directions.\n float mu = 0.5 + 0.5 * dot(sunDirection, dir);\n float phaseFunction = mix(HenyeyGreenstein(-0.3, mu), HenyeyGreenstein(0.3, mu), 0.7);\n \n vec3 p = org + distToStart * dir;\n float dist = distToStart;\n vec3 color = vec3(0.0);\n\n for (int i = 0; i < STEPS; i++) {\n\n float sampleDensity = clouds(p);\n float sampleSigmaE = sampleDensity * sigmaE;\n\n if (sampleDensity > 0.0 ) {\n float ambient = mix((1.2), (1.6), saturate((length(p) - cloudRadius - cloudStart) / cloudHeight));\n\n vec3 luminance = sampleDensity * (ambient + power * phaseFunction * lightRay(org, p, phaseFunction, mu, sunDirection));\n float transmittance = exp(-sampleSigmaE * stepS);\n\n //Better energy conserving integration\n //"From Physically based sky, atmosphere and cloud rendering in Frostbite" 5.6\n color += totalTransmittance * (luminance - luminance * transmittance) / sampleSigmaE;\n\n totalTransmittance *= transmittance;\n\n //If ray combined transmittance is close to 0, nothing beyond this sample point is visible, so break early.\n if (totalTransmittance <= 0.001) {\n totalTransmittance = 0.0;\n break;\n }\n\n }\n\n dist += stepS;\n p = org + dir * dist;\n }\n\n return color;\n }'),a.fragment.code.add("\n void main() {\n vec3 rayDir = rayDirection(gl_FragCoord.xy);\n rayDir = normalize(viewMatrix * rayDir);\n\n vec3 viewPos = vec3(0, 0, cloudRadius + 1.0);\n\n bool hitsPlanet = rayDir.z < 0.0;\n\n if (hitsPlanet) {\n gl_FragColor = vec4(vec3(0), 1);\n return;\n }\n\n vec2 rayStartIntersect = sphereIntersections(viewPos, rayDir, cloudRadius + cloudStart);\n vec2 rayEndIntersect = sphereIntersections(viewPos, rayDir, cloudRadius + cloudStart + cloudHeight);\n float distToStart = rayStartIntersect.y;\n float totalDistance = rayEndIntersect.y - distToStart;\n\n float totalTransmittance = 1.0;\n vec3 sunDirection = normalize(vec3(0, 0, 1));\n vec3 col = 0.5 * mainRay(viewPos, rayDir, sunDirection, distToStart, totalDistance, totalTransmittance).rgb;\n\n gl_FragColor = vec4(col, totalTransmittance);\n }\n "),a}const a=Object.freeze({__proto__:null,build:n});export{a as C,n as b};
25
+ }`),r.fragment.code.add(`\n float getCloudShape(vec3 pos, float pOffset) {\n const float textureWidth = float(${t});\n const float dataWidth = float(${t});\n const float tileRows = float(${e});\n const vec3 atlasDimensions = vec3(float(${n}), float(${n}), tileRows * tileRows);\n\n //Change from Y being height to Z being height\n vec3 p = pos.xzy;\n\n //Pixel coordinates of point in the 3D data\n vec3 coord = vec3(mod(p - pOffset * atlasDimensions, atlasDimensions));\n float f = fract(coord.z);\n float level = floor(coord.z);\n float tileY = floor(level / tileRows);\n float tileX = level - tileY * tileRows;\n\n //The data coordinates are offset by the x and y tile, the two boundary cells between each tile pair and the initial boundary cell on the first row/column\n vec2 offset = atlasDimensions.x * vec2(tileX, tileY) + 2.0 * vec2(tileX, tileY) + 1.0;\n vec2 pixel = coord.xy + offset;\n vec2 data = texture2D(cloudShapeTexture, mod(pixel, dataWidth) / textureWidth).xy;\n\n return 1.0 - mix(data.x, data.y, f);\n }`),r.fragment.code.add("\n float clouds(vec3 p) {\n float cloudVariations = getCloudShape(0.002 * p, 0.5);\n\n float cloud = saturate(0.5 * mix(0.0, 1.0, min(2.0 * coverage, 1.0)));\n cloud += (cloudVariations * 0.6 - 0.3) * ( -4.0 * (coverage * coverage - coverage));\n float heightFraction = saturate((length(p) - cloudRadius - cloudStart) / cloudHeight);\n\n //Round the bottom and top of the clouds\n cloud *= saturate(remap(heightFraction, 0.0, 0.25, 0.0, 1.0)) * saturate(remap(heightFraction, 0.75, 1.0, 1.0, 0.0));\n\n float shape = getCloudShape(cloudSize * p, 0.0);\n shape *= mix(0.0, 1.0, min(2.0 * (1.0 - coverage), 1.0));\n cloud = saturate(remap(cloud, shape, 1.0, 0.0, 1.0));\n\n if (cloud <= 0.0) {\n return 0.0;\n }\n\n return density * saturate(remap(cloud, smoothness * getCloudShape(detailSize * p, 0.0), 1.0, 0.0, 1.0));\n }"),r.fragment.code.add("\n vec2 sphereIntersections(vec3 start, vec3 dir, float radius) {\n float a = dot(dir, dir);\n float b = 2.0 * dot(dir, start);\n float c = dot(start, start) - (radius * radius);\n float d = (b * b) - 4.0 * a * c;\n\n if (d < 0.0) {\n return vec2(1e5, -1e5);\n }\n\n return vec2((-b - sqrt(d)) / (2.0 * a), (-b + sqrt(d)) / (2.0 * a));\n }\n\n float HenyeyGreenstein(float g, float costh) {\n return (1.0 / (4.0 * 3.1415)) * ((1.0 - g * g) / pow(1.0 + g * g - 2.0 * g * costh, 1.5));\n }\n "),r.fragment.code.add("\n vec3 multipleOctaves(float extinction, float mu, float stepL) {\n float attenuation = 1.0;\n float contribution = 1.0;\n float phaseAttenuation = 1.0;\n vec3 luminance = vec3(0);\n\n for (int i = 0; i < 4; i++) {\n float phase = mix(HenyeyGreenstein(0.0, mu), HenyeyGreenstein(0.3 * phaseAttenuation, mu), 0.7);\n luminance += contribution * phase * exp(-stepL * extinction * sigmaE * attenuation);\n attenuation *= 0.2;\n contribution *= 0.6;\n phaseAttenuation *= 0.5;\n }\n\n return luminance;\n }"),r.fragment.code.add("\n vec3 lightRay(vec3 org, vec3 p, float phaseFunction, float mu, vec3 sunDirection) {\n float lightRayDensity = clouds(p);\n lightRayDensity += clouds(p + sunDirection * 1.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 2.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 3.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 4.0 * stepL);\n lightRayDensity += clouds(p + sunDirection * 5.0 * stepL);\n\n vec3 beersLaw = multipleOctaves(lightRayDensity, mu, stepL);\n\n return mix(beersLaw * 2.0 * (1.0 - (exp(-stepL * lightRayDensity * 2.0 * sigmaE ))), beersLaw, 0.5 + 0.5 * mu);\n }"),r.fragment.code.add('\n vec3 mainRay(vec3 org, vec3 dir, vec3 sunDirection, float distToStart, float totalDistance, out float totalTransmittance) {\n\n // This is never true but having the if statement stops later loop unrolling, texture prefetching and WebGL context crashes\n if (dir.z < 0.0) {\n return vec3(0);\n }\n\n //Variable to track transmittance along view ray. Assume clear sky and attenuate light when encountering clouds.\n totalTransmittance = 1.0;\n\n float stepS = totalDistance / float(STEPS);\n float cameraHeight = length(org);\n\n //Alignment of view and light directions.\n float mu = 0.5 + 0.5 * dot(sunDirection, dir);\n float phaseFunction = mix(HenyeyGreenstein(-0.3, mu), HenyeyGreenstein(0.3, mu), 0.7);\n\n vec3 p = org + distToStart * dir;\n float dist = distToStart;\n vec3 color = vec3(0.0);\n\n for (int i = 0; i < STEPS; i++) {\n\n float sampleDensity = clouds(p);\n float sampleSigmaE = sampleDensity * sigmaE;\n\n if (sampleDensity > 0.0 ) {\n float ambient = mix((1.2), (1.6), saturate((length(p) - cloudRadius - cloudStart) / cloudHeight));\n\n vec3 luminance = sampleDensity * (ambient + power * phaseFunction * lightRay(org, p, phaseFunction, mu, sunDirection));\n float transmittance = exp(-sampleSigmaE * stepS);\n\n //Better energy conserving integration\n //"From Physically based sky, atmosphere and cloud rendering in Frostbite" 5.6\n color += totalTransmittance * (luminance - luminance * transmittance) / sampleSigmaE;\n\n totalTransmittance *= transmittance;\n\n //If ray combined transmittance is close to 0, nothing beyond this sample point is visible, so break early.\n if (totalTransmittance <= 0.001) {\n totalTransmittance = 0.0;\n break;\n }\n\n }\n\n dist += stepS;\n p = org + dir * dist;\n }\n\n return color;\n }'),r.fragment.code.add("\n void main() {\n vec3 rayDir = rayDirection(gl_FragCoord.xy);\n rayDir = normalize(viewMatrix * rayDir);\n\n vec3 viewPos = vec3(0, 0, cloudRadius + 1.0);\n\n bool hitsPlanet = rayDir.z < 0.0;\n\n if (hitsPlanet) {\n gl_FragColor = vec4(vec3(0), 1);\n return;\n }\n\n vec2 rayStartIntersect = sphereIntersections(viewPos, rayDir, cloudRadius + cloudStart);\n vec2 rayEndIntersect = sphereIntersections(viewPos, rayDir, cloudRadius + cloudStart + cloudHeight);\n float distToStart = rayStartIntersect.y;\n float totalDistance = rayEndIntersect.y - distToStart;\n\n float totalTransmittance = 1.0;\n vec3 sunDirection = normalize(vec3(0, 0, 1));\n vec3 col = 0.5 * mainRay(viewPos, rayDir, sunDirection, distToStart, totalDistance, totalTransmittance).rgb;\n\n gl_FragColor = vec4(col, totalTransmittance);\n }\n "),r}const r=Object.freeze({__proto__:null,build:i});export{r as C,i as b};
@@ -2,7 +2,7 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.22/esri/copyright.txt for details.
4
4
  */
5
- import{Slice as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputDepth as i}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{ReadLinearDepth as n}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadLinearDepth.glsl.js";import{LineStipple as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{multipassTerrainTest as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MultipassTerrainTest.glsl.js";import{PiUtils as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{symbolAlphaCutoff as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/AlphaDiscard.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{glsl as d}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as p}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";const c=1;function f(f){const m=new p,g=!0,h=f.stippleEnabled&&f.roundCaps,u=f.falloffEnabled||h,D=f.innerColorEnabled||g,x=f.stippleEnabled&&f.stippleScaleWithLineWidth||f.roundCaps||g,S=f.stippleEnabled&&f.stippleScaleWithLineWidth;return m.extensions.add("GL_OES_standard_derivatives"),m.include(o),m.include(t,f),m.include(a,{...f,stippleRequiresStretchMeasure:h}),1===f.output&&m.include(i,f),m.vertex.uniforms.add("proj","mat4").add("view","mat4").add("cameraNearFar","vec2").add("pixelRatio","float").add("miterLimit","float").add("screenSize","vec2"),m.attributes.add("position","vec3"),m.attributes.add("subdivisionFactor","float"),m.attributes.add("uv0","vec2"),m.attributes.add("auxpos1","vec3"),m.attributes.add("auxpos2","vec3"),m.varyings.add("vColor","vec4"),m.varyings.add("vpos","vec3"),m.varyings.add("linearDepth","float"),f.multipassTerrainEnabled&&m.varyings.add("depth","float"),x&&m.varyings.add("vLineWidth","float"),S&&m.varyings.add("vLineSizeInv","float"),D&&m.varyings.add("vLineDistance","float"),u&&m.varyings.add("vLineDistanceNorm","float"),f.falloffEnabled&&m.fragment.uniforms.add("falloff","float"),f.innerColorEnabled&&(m.fragment.uniforms.add("innerColor","vec4"),m.fragment.uniforms.add("innerWidth","float")),f.roundCaps&&m.varyings.add("vCapPosition","vec2"),h&&m.varyings.add("vStipplePatternStretch","float"),m.vertex.code.add(d`#define PERPENDICULAR(v) vec2(v.y, -v.x);
5
+ import{Slice as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{OutputDepth as i}from"../views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js";import{ReadLinearDepth as n}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadLinearDepth.glsl.js";import{LineStipple as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{multipassTerrainTest as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MultipassTerrainTest.glsl.js";import{PiUtils as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{symbolAlphaCutoff as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/AlphaDiscard.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{glsl as p}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as d}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";const c=1;function v(v){const g=new d,m=v.stippleEnabled&&v.roundCaps,f=v.falloffEnabled||m,h=v.innerColorEnabled,u=v.stippleEnabled&&v.stippleScaleWithLineWidth||v.roundCaps,D=v.stippleEnabled&&v.stippleScaleWithLineWidth;return g.extensions.add("GL_OES_standard_derivatives"),g.include(a),g.include(t,v),g.include(r,{...v,stippleRequiresStretchMeasure:m}),1===v.output&&g.include(i,v),g.vertex.uniforms.add("proj","mat4").add("view","mat4").add("cameraNearFar","vec2").add("pixelRatio","float").add("miterLimit","float").add("screenSize","vec2"),g.attributes.add("position","vec3"),g.attributes.add("subdivisionFactor","float"),g.attributes.add("uv0","vec2"),g.attributes.add("auxpos1","vec3"),g.attributes.add("auxpos2","vec3"),g.varyings.add("vColor","vec4"),g.varyings.add("vpos","vec3"),g.varyings.add("linearDepth","float"),v.multipassTerrainEnabled&&g.varyings.add("depth","float"),u&&g.varyings.add("vLineWidth","float"),D&&g.varyings.add("vLineSizeInv","float"),h&&g.varyings.add("vLineDistance","float"),f&&g.varyings.add("vLineDistanceNorm","float"),v.falloffEnabled&&g.fragment.uniforms.add("falloff","float"),v.innerColorEnabled&&(g.fragment.uniforms.add("innerColor","vec4"),g.fragment.uniforms.add("innerWidth","float")),v.roundCaps&&g.varyings.add("vCapPosition","vec2"),m&&g.varyings.add("vStipplePatternStretch","float"),g.vertex.code.add(p`#define PERPENDICULAR(v) vec2(v.y, -v.x);
6
6
  float interp(float ncp, vec4 a, vec4 b) {
7
7
  return (-ncp - a.z) / (b.z - a.z);
8
8
  }
@@ -11,11 +11,11 @@ float s = sin(a);
11
11
  float c = cos(a);
12
12
  mat2 m = mat2(c, -s, s, c);
13
13
  return m * v;
14
- }`),m.vertex.code.add(d`vec4 projectAndScale(vec4 pos) {
14
+ }`),g.vertex.code.add(p`vec4 projectAndScale(vec4 pos) {
15
15
  vec4 posNdc = proj * pos;
16
16
  posNdc.xy *= screenSize / posNdc.w;
17
17
  return posNdc;
18
- }`),m.vertex.code.add(d`
18
+ }`),g.vertex.code.add(p`
19
19
  void clipAndTransform(inout vec4 pos, inout vec4 prev, inout vec4 next, in bool isStartVertex) {
20
20
  float vnp = cameraNearFar[0] * 0.99;
21
21
 
@@ -51,18 +51,19 @@ return posNdc;
51
51
  }
52
52
  }
53
53
 
54
- ${f.multipassTerrainEnabled?"depth = pos.z;":""}
54
+ ${v.multipassTerrainEnabled?"depth = pos.z;":""}
55
55
  linearDepth = (-pos.z - cameraNearFar[0]) / (cameraNearFar[1] - cameraNearFar[0]);
56
56
 
57
57
  pos = projectAndScale(pos);
58
58
  next = projectAndScale(next);
59
59
  prev = projectAndScale(prev);
60
60
  }
61
- `),m.vertex.code.add(d`
61
+ `),g.vertex.code.add(p`
62
62
  void main(void) {
63
63
  // unpack values from uv0.y
64
64
  bool isStartVertex = abs(abs(uv0.y)-3.0) == 1.0;
65
65
 
66
+ float coverage = 1.0;
66
67
  vpos = position;
67
68
 
68
69
  // Check for special value of uv0.y which is used by the Renderer when graphics
@@ -78,13 +79,19 @@ return posNdc;
78
79
  float lineSize = getSize();
79
80
  float lineWidth = lineSize * pixelRatio;
80
81
 
81
- // adding alpha feathering to reduce aliasing
82
- if( lineWidth > 0.0 ){
83
- lineWidth += ${v}*pixelRatio;
84
- }
82
+ ${u?p`vLineWidth = lineWidth;`:""}
83
+ ${D?p`vLineSizeInv = 1.0 / lineSize;`:""}
85
84
 
86
- ${x?d`vLineWidth = lineWidth;`:""}
87
- ${S?d`vLineSizeInv = 1.0 / lineSize;`:""}
85
+ // convert sub-pixel coverage to alpha
86
+ if (lineWidth < 1.0) {
87
+ coverage = lineWidth;
88
+ lineWidth = 1.0;
89
+ }else{
90
+ // Ribbon lines cannot properly render non-integer sizes. Round width to integer size if
91
+ // larger than one for better quality. Note that we do render < 1 pixels more or less correctly
92
+ // so we only really care to round anything larger than 1.
93
+ lineWidth = floor(lineWidth + 0.5);
94
+ }
88
95
 
89
96
  vec4 pos = view * vec4(position.xyz, 1.0);
90
97
  vec4 prev = view * vec4(auxpos1.xyz, 1.0);
@@ -97,10 +104,10 @@ return posNdc;
97
104
 
98
105
  float leftLen = length(left);
99
106
  float rightLen = length(right);
100
- `),f.stippleEnabled&&m.vertex.code.add(d`float isEndVertex = float(!isStartVertex);
107
+ `),v.stippleEnabled&&g.vertex.code.add(p`float isEndVertex = float(!isStartVertex);
101
108
  vec4 segmentInfo = mix(vec4(pos.xy, right), vec4(prev.xy, left), isEndVertex);
102
109
  vec2 segmentOrigin = segmentInfo.xy;
103
- vec2 segment = segmentInfo.zw;`),m.vertex.code.add(d`left = (leftLen > 0.001) ? left/leftLen : vec2(0.0, 0.0);
110
+ vec2 segment = segmentInfo.zw;`),g.vertex.code.add(p`left = (leftLen > 0.001) ? left/leftLen : vec2(0.0, 0.0);
104
111
  right = (rightLen > 0.001) ? right/rightLen : vec2(0.0, 0.0);
105
112
  vec2 capDisplacementDir = vec2(0, 0);
106
113
  vec2 joinDisplacementDir = vec2(0, 0);
@@ -116,7 +123,7 @@ if (!isOutside) {
116
123
  displacementLen = min(displacementLen, min(leftLen, rightLen)/abs(nDotSeg));
117
124
  }
118
125
  }
119
- if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),f.roundJoins?m.vertex.code.add(d`
126
+ if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),v.roundJoins?g.vertex.code.add(p`
120
127
  vec2 startDir;
121
128
  vec2 endDir;
122
129
 
@@ -138,11 +145,11 @@ if (isOutside && (displacementLen > miterLimit * lineWidth)) {`),f.roundJoins?m.
138
145
  endDir = normalize(endDir);
139
146
  endDir = PERPENDICULAR(endDir);
140
147
 
141
- float factor = ${f.stippleEnabled?d`min(1.0, subdivisionFactor * ${d.float((c+2)/(c+1))})`:d`subdivisionFactor`};
148
+ float factor = ${v.stippleEnabled?p`min(1.0, subdivisionFactor * ${p.float((c+2)/(c+1))})`:p`subdivisionFactor`};
142
149
 
143
150
  float rotationAngle = acos(clamp(dot(startDir, endDir), -1.0, 1.0));
144
151
  joinDisplacementDir = rotate(startDir, -sign(uv0.y) * factor * rotationAngle);
145
- `):m.vertex.code.add(d`if (leftLen < 0.001) {
152
+ `):g.vertex.code.add(p`if (leftLen < 0.001) {
146
153
  joinDisplacementDir = right;
147
154
  }
148
155
  else if (rightLen < 0.001) {
@@ -152,7 +159,7 @@ else {
152
159
  joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? right : left;
153
160
  }
154
161
  joinDisplacementDir = normalize(joinDisplacementDir);
155
- joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);`),m.vertex.code.add(d`displacementLen = lineWidth;
162
+ joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);`),g.vertex.code.add(p`displacementLen = lineWidth;
156
163
  }
157
164
  } else {
158
165
  if (leftLen < 0.001) {
@@ -169,33 +176,33 @@ joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);
169
176
  displacementLen = lineWidth;
170
177
  capDisplacementDir = isStartVertex ? -right : left;
171
178
  capDisplacementDir *= subdivisionFactor;
172
- }`),m.vertex.code.add(d`
179
+ }`),g.vertex.code.add(p`
173
180
  // Displacement (in pixels) caused by join/or cap
174
181
  vec2 dpos = joinDisplacementDir * sign(uv0.y) * displacementLen + capDisplacementDir * displacementLen;
175
182
 
176
- ${u||D?d`float lineDistNorm = sign(uv0.y) * pos.w;`:""}
183
+ ${f||h?p`float lineDistNorm = sign(uv0.y) * pos.w;`:""}
177
184
 
178
- ${D?d`vLineDistance = lineWidth * lineDistNorm;`:""}
179
- ${u?d`vLineDistanceNorm = lineDistNorm;`:""}
185
+ ${h?p`vLineDistance = lineWidth * lineDistNorm;`:""}
186
+ ${f?p`vLineDistanceNorm = lineDistNorm;`:""}
180
187
 
181
- ${f.roundCaps?d`vCapPosition = isJoin ? vec2(0.0) : dpos;`:""}
188
+ ${v.roundCaps?p`vCapPosition = isJoin ? vec2(0.0) : dpos;`:""}
182
189
 
183
190
  pos.xy += dpos;
184
- `),f.stippleEnabled&&(f.draped||m.vertex.code.add(d`vec3 segmentCenter = mix((auxpos2 + position) * 0.5, (position + auxpos1) * 0.5, isEndVertex);
185
- float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),m.vertex.code.add(d`float segmentLengthScreenDouble = length(segment);
191
+ `),v.stippleEnabled&&(v.draped||g.vertex.code.add(p`vec3 segmentCenter = mix((auxpos2 + position) * 0.5, (position + auxpos1) * 0.5, isEndVertex);
192
+ float worldToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),g.vertex.code.add(p`float segmentLengthScreenDouble = length(segment);
186
193
  float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
187
194
  float discreteWorldToScreenRatio = discretizeWorldToScreenRatio(worldToScreenRatio);
188
- float segmentLengthRender = length(mix(auxpos2 - position, position - auxpos1, isEndVertex));`),f.draped?m.vertex.code.add(d`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
189
- float startPseudoScreen = uv0.x * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):m.vertex.code.add(d`float startPseudoScreen = mix(uv0.x, uv0.x - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
190
- float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),m.vertex.code.add(d`
191
- float patternLength = ${f.stippleScaleWithLineWidth?"lineSize * ":""} stipplePatternPixelSize;
195
+ float segmentLengthRender = length(mix(auxpos2 - position, position - auxpos1, isEndVertex));`),v.draped?g.vertex.code.add(p`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteWorldToScreenRatio / worldToScreenRatio;
196
+ float startPseudoScreen = uv0.x * discreteWorldToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):g.vertex.code.add(p`float startPseudoScreen = mix(uv0.x, uv0.x - segmentLengthRender, isEndVertex) * discreteWorldToScreenRatio;
197
+ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRatio;`),g.vertex.code.add(p`
198
+ float patternLength = ${v.stippleScaleWithLineWidth?"lineSize * ":""} stipplePatternPixelSize;
192
199
 
193
200
  // Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the fragment shader
194
201
  // The 0.5 factor on the screen length is to correct for pixel ratio (it is calculated at double resolution)
195
- ${h?d`
202
+ ${m?p`
196
203
  vec3 stippleSegmentInfo = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
197
204
  vStippleDistanceLimits = stippleSegmentInfo.xy;
198
- vStipplePatternStretch = stippleSegmentInfo.z;`:d`
205
+ vStipplePatternStretch = stippleSegmentInfo.z;`:p`
199
206
  vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);`}
200
207
 
201
208
  vStippleDistance = mix(vStippleDistanceLimits.x, vStippleDistanceLimits.y, isEndVertex);
@@ -214,22 +221,23 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteWorldToScreenRat
214
221
  // Cancel out perspective correct interpolation because we want this length the really represent the screen distance
215
222
  vStippleDistanceLimits *= pos.w;
216
223
  vStippleDistance *= pos.w;
217
- `)),m.vertex.code.add(d`pos.xy = pos.xy / screenSize * pos.w;
224
+ `)),g.vertex.code.add(p`pos.xy = pos.xy / screenSize * pos.w;
218
225
  vColor = getColor();
226
+ vColor.a *= coverage;
219
227
  gl_Position = pos;
220
228
  }
221
- }`),f.multipassTerrainEnabled&&(m.fragment.include(n),m.include(r,f)),m.include(e,f),m.fragment.uniforms.add("intrinsicColor","vec4"),m.fragment.include(l),m.fragment.code.add(d`
229
+ }`),v.multipassTerrainEnabled&&(g.fragment.include(n),g.include(o,v)),g.include(e,v),g.fragment.uniforms.add("intrinsicColor","vec4"),g.fragment.include(l),g.fragment.code.add(p`
222
230
  void main() {
223
231
  discardBySlice(vpos);
224
- ${f.multipassTerrainEnabled?"terrainDepthTest(gl_FragCoord, depth);":""}
225
- `),f.roundCaps&&m.fragment.code.add(d`
232
+ ${v.multipassTerrainEnabled?"terrainDepthTest(gl_FragCoord, depth);":""}
233
+ `),v.roundCaps&&g.fragment.code.add(p`
226
234
  float fragmentRadius = length(vCapPosition);
227
235
  float fragmentSDF = (fragmentRadius - vLineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
228
236
  float capCoverage = clamp(0.5 - fragmentSDF, 0.0, 1.0);
229
- if (capCoverage < ${d.float(s)}) {
237
+ if (capCoverage < ${p.float(s)}) {
230
238
  discard;
231
239
  }
232
- `),h?m.fragment.code.add(d`
240
+ `),m?g.fragment.code.add(p`
233
241
  vec2 stipplePosition = vec2(
234
242
  max(1.0 - getStippleSDF() * 2.0 * vStipplePatternStretch, 0.0),
235
243
  vLineDistanceNorm * gl_FragCoord.w
@@ -237,34 +245,20 @@ gl_Position = pos;
237
245
  float stippleRadius = length(stipplePosition * vLineWidth);
238
246
  float stippleCapSDF = (stippleRadius - vLineWidth) * 0.5; // Divide by 2 to transform from double pixel scale
239
247
  float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
240
- float stippleAlpha = step(${d.float(s)}, stippleCoverage);
241
- `):m.fragment.code.add(d`float stippleAlpha = getStippleAlpha();`),m.fragment.code.add(d`discardByStippleAlpha(stippleAlpha, stippleAlphaColorDiscard);
242
- vec4 color = intrinsicColor * vColor;`),m.fragment.uniforms.add("pixelRatio","float"),f.innerColorEnabled&&m.fragment.code.add(d`float distToInner = abs(vLineDistance * gl_FragCoord.w) - innerWidth;
248
+ float stippleAlpha = step(${p.float(s)}, stippleCoverage);
249
+ `):g.fragment.code.add(p`float stippleAlpha = getStippleAlpha();`),g.fragment.code.add(p`discardByStippleAlpha(stippleAlpha, stippleAlphaColorDiscard);
250
+ vec4 color = intrinsicColor * vColor;`),g.fragment.uniforms.add("pixelRatio","float"),v.innerColorEnabled&&g.fragment.code.add(p`float distToInner = abs(vLineDistance * gl_FragCoord.w) - innerWidth;
243
251
  float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
244
252
  float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
245
- color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),m.fragment.code.add(d`vec4 finalColor = blendStipple(color, stippleAlpha);`),m.fragment.code.add(d`
246
- float featherStartDistance = clamp(vLineWidth-${v}*pixelRatio, 0.0, vLineWidth);
247
- float value = abs(vLineDistance)*gl_FragCoord.w;
248
- float feather = 1.0;
249
- if( featherStartDistance > 1.5 ){
250
- // if line is larger than a bit more than one pixel (hand tuned threshold),
251
- // we apply a falloff between feather start and line width
252
- feather = (value-featherStartDistance)/(vLineWidth-featherStartDistance);
253
- }else{
254
- // otherwise we do a falloff starting from the line center (this way lines smaller than one pixel
255
- // will be alpha blended according to pixel coverage)
256
- feather = value/vLineWidth;
257
- }
258
- finalColor.a *= 1.0 - clamp(feather, 0.0, 1.0);
259
- `),f.falloffEnabled&&m.fragment.code.add(d`finalColor.a *= pow(max(0.0, 1.0 - abs(vLineDistanceNorm * gl_FragCoord.w)), falloff);`),m.fragment.code.add(d`
260
- if (finalColor.a < ${d.float(s)}) {
253
+ color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),g.fragment.code.add(p`vec4 finalColor = blendStipple(color, stippleAlpha);`),v.falloffEnabled&&g.fragment.code.add(p`finalColor.a *= pow(max(0.0, 1.0 - abs(vLineDistanceNorm * gl_FragCoord.w)), falloff);`),g.fragment.code.add(p`
254
+ if (finalColor.a < ${p.float(s)}) {
261
255
  discard;
262
256
  }
263
257
 
264
- ${7===f.output?d`gl_FragColor = vec4(finalColor.a);`:""}
265
- ${0===f.output?d`gl_FragColor = highlightSlice(finalColor, vpos);`:""}
266
- ${0===f.output&&f.OITEnabled?"gl_FragColor = premultiplyAlpha(gl_FragColor);":""}
267
- ${4===f.output?d`gl_FragColor = vec4(1.0);`:""}
268
- ${1===f.output?d`outputDepth(linearDepth);`:""}
258
+ ${7===v.output?p`gl_FragColor = vec4(finalColor.a);`:""}
259
+ ${0===v.output?p`gl_FragColor = highlightSlice(finalColor, vpos);`:""}
260
+ ${0===v.output&&v.OITEnabled?"gl_FragColor = premultiplyAlpha(gl_FragColor);":""}
261
+ ${4===v.output?p`gl_FragColor = vec4(1.0);`:""}
262
+ ${1===v.output?p`outputDepth(linearDepth);`:""}
269
263
  }
270
- `),m}const v=d`1.0`,m=Object.freeze({__proto__:null,NUM_ROUND_JOIN_SUBDIVISIONS:c,build:f});export{c as N,m as R,f as b};
264
+ `),g}const g=Object.freeze({__proto__:null,NUM_ROUND_JOIN_SUBDIVISIONS:c,build:v});export{c as N,g as R,v as b};
package/config.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.22/esri/copyright.txt for details.
4
4
  */
5
- import"./core/has.js";import{deepMerge as e}from"./core/object.js";import{buildDate as r}from"./support/revision.js";var s;const t={apiKey:void 0,applicationUrl:null==(s=globalThis.location)?void 0:s.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryService:null,geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",portalUrl:"https://www.arcgis.com",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],maxUrlLength:2e3,proxyRules:[],proxyUrl:null,timeout:6e4,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),!t.assetsPath){const e="4.22.0";t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@${e}-next.${r}/assets`}t.baseUrl&&console.warn("[esri.config]","baseUrl has been replaced by assetsPath"),Object.defineProperty(t,"baseUrl",{set(){console.warn("[esri.config]","baseUrl has been replaced by assetsPath")}}),t.request.corsEnabledServers=[],t.request.corsEnabledServers.push=function(){return console.warn("[esri.config]","request.corsEnabledServers is not supported and will be removed in a future release. See http://esriurl.com/cors8664"),0};export{t as default};
5
+ import"./core/has.js";import{deepMerge as e}from"./core/object.js";var s;const r={apiKey:void 0,applicationUrl:null==(s=globalThis.location)?void 0:s.href,assetsPath:"",fontsUrl:"https://static.arcgis.com/fonts",geometryService:null,geometryServiceUrl:"https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer",geoRSSServiceUrl:"https://utility.arcgis.com/sharing/rss",kmlServiceUrl:"https://utility.arcgis.com/sharing/kml",portalUrl:"https://www.arcgis.com",workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{httpsDomains:["arcgis.com","arcgisonline.com","esrikr.com","premiumservices.blackbridge.com","esripremium.accuweather.com","gbm.digitalglobe.com","firstlook.digitalglobe.com","msi.digitalglobe.com"],interceptors:[],maxUrlLength:2e3,proxyRules:[],proxyUrl:null,timeout:6e4,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};if(globalThis.esriConfig&&(e(r,globalThis.esriConfig,!0),delete r.has),!r.assetsPath){const e="4.22.0";r.assetsPath=`https://js.arcgis.com/${e.slice(0,-2)}/@arcgis/core/assets`}r.baseUrl&&console.warn("[esri.config]","baseUrl has been replaced by assetsPath"),Object.defineProperty(r,"baseUrl",{set(){console.warn("[esri.config]","baseUrl has been replaced by assetsPath")}}),r.request.corsEnabledServers=[],r.request.corsEnabledServers.push=function(){return console.warn("[esri.config]","request.corsEnabledServers is not supported and will be removed in a future release. See http://esriurl.com/cors8664"),0};export{r as default};
package/copyright.txt CHANGED
@@ -1116,31 +1116,59 @@ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1116
1116
 
1117
1117
  esri/libs/i3s
1118
1118
 
1119
- https://github.com/open-source-parsers/jsoncpp
1119
+ RapidJSON
1120
+ https://github.com/Tencent/rapidjson/
1120
1121
 
1121
- Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
1122
+ Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
1122
1123
 
1123
1124
  MIT License
1124
1125
 
1125
- Permission is hereby granted, free of charge, to any person
1126
- obtaining a copy of this software and associated documentation
1127
- files (the "Software"), to deal in the Software without
1128
- restriction, including without limitation the rights to use, copy,
1129
- modify, merge, publish, distribute, sublicense, and/or sell copies
1130
- of the Software, and to permit persons to whom the Software is
1131
- furnished to do so, subject to the following conditions:
1126
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this
1127
+ software and associated documentation files (the "Software"), to deal in the Software
1128
+ without restriction, including without limitation the rights to use, copy, modify,
1129
+ merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
1130
+ permit persons to whom the Software is furnished to do so, subject to the following
1131
+ conditions:
1132
1132
 
1133
- The above copyright notice and this permission notice shall be
1134
- included in all copies or substantial portions of the Software.
1133
+ The above copyright notice and this permission notice shall be included in all copies
1134
+ or substantial portions of the Software.
1135
1135
 
1136
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1137
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1138
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1139
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
1140
- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
1141
- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
1142
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1143
- SOFTWARE.
1136
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
1137
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
1138
+ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
1139
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
1140
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
1141
+ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1142
+
1143
+ -------------------------------------------------------------------------------
1144
+
1145
+ esri/libs/i3s
1146
+
1147
+ The msinttypes r29
1148
+ Copyright (c) 2006-2013 Alexander Chemeris
1149
+ All rights reserved.
1150
+
1151
+ Redistribution and use in source and binary forms, with or without modification, are
1152
+ permitted provided that the following conditions are met:
1153
+
1154
+ * Redistributions of source code must retain the above copyright notice, this list of
1155
+ conditions and the following disclaimer.
1156
+ * Redistributions in binary form must reproduce the above copyright notice, this list
1157
+ of conditions and the following disclaimer in the documentation and/or other materials
1158
+ provided with the distribution.
1159
+ * Neither the name of copyright holder nor the names of its contributors may be used
1160
+ to endorse or promote products derived from this software without specific prior
1161
+ written permission.
1162
+
1163
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
1164
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1165
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
1166
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
1167
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1168
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1169
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
1170
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1171
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1144
1172
 
1145
1173
  -------------------------------------------------------------------------------
1146
1174