@arcgis/core 4.24.0-next.20220607 → 4.24.0-next.20220608

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 (118) hide show
  1. package/analysis/LineOfSightAnalysis.js +1 -1
  2. package/arcade/arcadeCompiler.js +1 -1
  3. package/assets/esri/core/workers/RemoteClient.js +1 -1
  4. package/assets/esri/core/workers/chunks/{2e2d7f5952934af43fd7.js → 04034dabc8e0a489b0f8.js} +1 -1
  5. package/assets/esri/core/workers/chunks/1e4e5d147263e98536bc.js +1 -0
  6. package/assets/esri/core/workers/chunks/34ad71bd3a4684583f83.js +1 -0
  7. package/assets/esri/core/workers/chunks/{c165845a117c21246b1e.js → 42aa8ce4eb7bd851475e.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{e51420d231c286b9c062.js → 540f1ed1ea9cddc739af.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{71d445d1e6812e03a1d7.js → 5574c1e7f35bc36a1375.js} +1 -1
  10. package/assets/esri/core/workers/chunks/6196cfdeb91ceba52af3.js +1 -0
  11. package/assets/esri/core/workers/chunks/71a4618d959a09302c51.js +1 -0
  12. package/assets/esri/core/workers/chunks/{13e9e6f0b4942d79b0eb.js → 88942e9f60687ac006dc.js} +1 -1
  13. package/assets/esri/core/workers/chunks/{cbe98327181d8d7ad9e5.js → 9a8ebd98ad130abef76b.js} +1 -1
  14. package/assets/esri/core/workers/chunks/9d3954fb9513d7317ee2.js +1 -0
  15. package/assets/esri/core/workers/chunks/{4d2181bde97983ecac8b.js → a88cbb78f37c750fa461.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{1d893ebc6f203ff1fc3d.js → ae8bb7a8cc714c942c74.js} +1 -1
  17. package/assets/esri/core/workers/chunks/b71a0a8a2f446c671161.js +1 -0
  18. package/assets/esri/core/workers/chunks/{185da42e7cc8e440c0f0.js → c157b46b0724f3f0947e.js} +1 -1
  19. package/assets/esri/core/workers/chunks/c8402e32307a7b7eaaeb.js +1 -0
  20. package/assets/esri/core/workers/chunks/{a9a4bb1d781b1a995fb3.js → cf6fce37217451e678ed.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{8152cd26ebeae910b753.js → d3c73da9c2abb59e762a.js} +1 -1
  22. package/assets/esri/core/workers/chunks/d828a0656e7351a74fc4.js +1 -0
  23. package/assets/esri/core/workers/chunks/{172368d4eb6e6f8d2bdb.js → d8b9551df1bd196d0126.js} +1 -1
  24. package/assets/esri/core/workers/chunks/f54d5abbb9668c45bd19.js +1 -0
  25. package/assets/esri/core/workers/chunks/{1ebed6d6f561f926bd36.js → faf6e48f9f1205fb2e43.js} +1 -1
  26. package/assets/esri/geometry/support/pe-wasm.wasm +0 -0
  27. package/assets/esri/themes/base/widgets/_BasemapToggle.scss +6 -23
  28. package/assets/esri/themes/base/widgets/_FeatureTable.scss +10 -2
  29. package/assets/esri/themes/base/widgets/_Tooltip.scss +7 -7
  30. package/assets/esri/themes/dark/main.css +1 -1
  31. package/assets/esri/themes/light/main.css +1 -1
  32. package/assets/esri/themes/light/view.css +1 -1
  33. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle.json +1 -1
  34. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ar.json +1 -1
  35. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_bg.json +1 -1
  36. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_bs.json +1 -1
  37. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ca.json +1 -1
  38. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_cs.json +1 -1
  39. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_da.json +1 -1
  40. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_de.json +1 -1
  41. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_el.json +1 -1
  42. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_en.json +1 -1
  43. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_es.json +1 -1
  44. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_et.json +1 -1
  45. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_fi.json +1 -1
  46. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_fr.json +1 -1
  47. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_he.json +1 -1
  48. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_hr.json +1 -1
  49. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_hu.json +1 -1
  50. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_id.json +1 -1
  51. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_it.json +1 -1
  52. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ja.json +1 -1
  53. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ko.json +1 -1
  54. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_lt.json +1 -1
  55. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_lv.json +1 -1
  56. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_nb.json +1 -1
  57. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_nl.json +1 -1
  58. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pl.json +1 -1
  59. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pt-BR.json +1 -1
  60. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_pt-PT.json +1 -1
  61. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ro.json +1 -1
  62. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_ru.json +1 -1
  63. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sk.json +1 -1
  64. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sl.json +1 -1
  65. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sr.json +1 -1
  66. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_sv.json +1 -1
  67. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_th.json +1 -1
  68. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_tr.json +1 -1
  69. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_uk.json +1 -1
  70. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_vi.json +1 -1
  71. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-CN.json +1 -1
  72. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-HK.json +1 -1
  73. package/assets/esri/widgets/BasemapToggle/t9n/BasemapToggle_zh-TW.json +1 -1
  74. package/chunks/basis_transcoder.js +1 -1
  75. package/chunks/i3s.js +1 -1
  76. package/chunks/lclayout.js +1 -1
  77. package/chunks/lerc-wasm.js +1 -1
  78. package/chunks/libtess-asm.js +1 -1
  79. package/chunks/libtess.js +1 -1
  80. package/chunks/pe-wasm.js +1 -1
  81. package/chunks/vxlLayer.js +1 -1
  82. package/interfaces.d.ts +32 -20
  83. package/layers/LineOfSightLayer.js +1 -1
  84. package/layers/support/rasterFormats/RasterCodec.js +1 -1
  85. package/package.json +1 -1
  86. package/smartMapping/renderers/pieChart.js +1 -1
  87. package/support/revision.js +1 -1
  88. package/symbols/cim/cimAnalyzer.js +1 -1
  89. package/views/2d/engine/webgl/Utils.js +1 -1
  90. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  91. package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
  92. package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
  93. package/views/3d/layers/i3s/I3SAttributeOverrides.js +1 -1
  94. package/views/3d/support/MemoryController.js +1 -1
  95. package/views/3d/terrain/TileCompositor.js +1 -1
  96. package/views/MapView.js +1 -1
  97. package/views/draw/support/GraphicMover.js +1 -1
  98. package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
  99. package/widgets/BasemapToggle.js +1 -1
  100. package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesTree.js +1 -1
  101. package/widgets/BuildingExplorer/BuildingLevelPicker/BuildingLevelPicker.js +1 -1
  102. package/widgets/BuildingExplorer/BuildingPhasePicker/BuildingPhasePicker.js +1 -1
  103. package/widgets/BuildingExplorer.js +1 -1
  104. package/widgets/Feature/FeatureMedia/FeatureMediaViewModel.js +1 -1
  105. package/widgets/Feature/support/featureUtils.js +1 -1
  106. package/widgets/FeatureTable/FieldColumn.js +1 -1
  107. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  108. package/widgets/UtilityNetworkTrace.js +1 -1
  109. package/widgets/Widget.js +1 -1
  110. package/assets/esri/core/workers/chunks/2ac6c99aacb873134f7c.js +0 -1
  111. package/assets/esri/core/workers/chunks/471beeb6924599209567.js +0 -1
  112. package/assets/esri/core/workers/chunks/770cf0a66102100abe74.js +0 -1
  113. package/assets/esri/core/workers/chunks/96ff15d6c2bfca0c6061.js +0 -1
  114. package/assets/esri/core/workers/chunks/9c4c721d890b49697132.js +0 -1
  115. package/assets/esri/core/workers/chunks/af3766a2d27419c7766c.js +0 -1
  116. package/assets/esri/core/workers/chunks/b50bbfd75768d9a8de88.js +0 -1
  117. package/assets/esri/core/workers/chunks/b577ec80647cf2ece397.js +0 -1
  118. package/assets/esri/core/workers/chunks/e99b58d07475bffce7ea.js +0 -1
package/interfaces.d.ts CHANGED
@@ -2622,7 +2622,7 @@ declare namespace __esri {
2622
2622
  /**
2623
2623
  * Watches a property for changes and calls the callback with the initial value of the property.
2624
2624
  *
2625
- * @deprecated Use `reactiveUtils.watch(() => obj.propertyName, callback, { initial: true })`
2625
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#watch reactiveUtils.watch()} instead.
2626
2626
  *
2627
2627
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#init)
2628
2628
  */
@@ -2630,7 +2630,7 @@ declare namespace __esri {
2630
2630
  /**
2631
2631
  * Watches a property for changes and automatically attaches and detaches an event handler for a given event to the property value as needed.
2632
2632
  *
2633
- * @deprecated Use `reactiveUtils.on(() => obj.propertyName, eventName, eventHandler, options)`
2633
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#on reactiveUtils.on()} instead.
2634
2634
  *
2635
2635
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#on)
2636
2636
  */
@@ -2638,7 +2638,7 @@ declare namespace __esri {
2638
2638
  /**
2639
2639
  * Watches a property for changes once.
2640
2640
  *
2641
- * @deprecated Use `reactiveUtils.once(() => obj.propertyName, abortSignal)`
2641
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#once reactiveUtils.once()} instead.
2642
2642
  *
2643
2643
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#once)
2644
2644
  */
@@ -2646,7 +2646,7 @@ declare namespace __esri {
2646
2646
  /**
2647
2647
  * Watches a property for changes.
2648
2648
  *
2649
- * @deprecated true
2649
+ * @deprecated Since 4.24.
2650
2650
  *
2651
2651
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#pausable)
2652
2652
  */
@@ -2654,7 +2654,7 @@ declare namespace __esri {
2654
2654
  /**
2655
2655
  * Watches a property for changes.
2656
2656
  *
2657
- * @deprecated Use `reactiveUtils.watch(() => obj.propertyName, callback)`
2657
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#watch reactiveUtils.watch()} instead.
2658
2658
  *
2659
2659
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#watch)
2660
2660
  */
@@ -2662,7 +2662,7 @@ declare namespace __esri {
2662
2662
  /**
2663
2663
  * Watches a property for becoming truthy.
2664
2664
  *
2665
- * @deprecated Use `reactiveUtils.when(() => obj.propertyName, callback)`
2665
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#when reactiveUtils.when()} instead.
2666
2666
  *
2667
2667
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#when)
2668
2668
  */
@@ -2670,7 +2670,7 @@ declare namespace __esri {
2670
2670
  /**
2671
2671
  * Watches a property for becoming `defined`.
2672
2672
  *
2673
- * @deprecated Use `reactiveUtils.when(() => obj.propertyName !== undefined, callback)`
2673
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#when reactiveUtils.when()} instead.
2674
2674
  *
2675
2675
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenDefined)
2676
2676
  */
@@ -2678,7 +2678,7 @@ declare namespace __esri {
2678
2678
  /**
2679
2679
  * Watches a property for becoming `defined` once.
2680
2680
  *
2681
- * @deprecated Use `reactiveUtils.whenOnce(() => obj.propertyName !== undefined, abortSignal)`
2681
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#whenOnce reactiveUtils.whenOnce()} instead.
2682
2682
  *
2683
2683
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenDefinedOnce)
2684
2684
  */
@@ -2686,7 +2686,7 @@ declare namespace __esri {
2686
2686
  /**
2687
2687
  * Watches a property for becoming equal with a given `value`.
2688
2688
  *
2689
- * @deprecated Use `reactiveUtils.when(() => obj.propertyName === value, callback)`
2689
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#when reactiveUtils.when()} instead
2690
2690
  *
2691
2691
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenEqual)
2692
2692
  */
@@ -2694,7 +2694,7 @@ declare namespace __esri {
2694
2694
  /**
2695
2695
  * Watches a property for becoming equal with a given `value`.
2696
2696
  *
2697
- * @deprecated Use `reactiveUtils.whenOnce(() => obj.propertyName === value, abortSignal)`
2697
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#whenOnce reactiveUtils.whenOnce()} instead.
2698
2698
  *
2699
2699
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenEqualOnce)
2700
2700
  */
@@ -2702,7 +2702,7 @@ declare namespace __esri {
2702
2702
  /**
2703
2703
  * Watches a property for becoming `false`.
2704
2704
  *
2705
- * @deprecated Use `reactiveUtils.when(() => obj.propertyName === false, callback)`
2705
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#when reactiveUtils.when()} instead.
2706
2706
  *
2707
2707
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenFalse)
2708
2708
  */
@@ -2710,7 +2710,7 @@ declare namespace __esri {
2710
2710
  /**
2711
2711
  * Watches a property for becoming `false` once.
2712
2712
  *
2713
- * @deprecated Use `reactiveUtils.whenOnce(() => obj.propertyName === false, abortSignal)`
2713
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#whenOnce reactiveUtils.whenOnce()} instead.
2714
2714
  *
2715
2715
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenFalseOnce)
2716
2716
  */
@@ -2718,7 +2718,7 @@ declare namespace __esri {
2718
2718
  /**
2719
2719
  * Watches a property for becoming falsy.
2720
2720
  *
2721
- * @deprecated Use `reactiveUtils.when(() => !obj.propertyName, callback)`
2721
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#when reactiveUtils.when()} instead.
2722
2722
  *
2723
2723
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenNot)
2724
2724
  */
@@ -2726,7 +2726,7 @@ declare namespace __esri {
2726
2726
  /**
2727
2727
  * Watches a property for becoming falsy once.
2728
2728
  *
2729
- * @deprecated Use `reactiveUtils.whenOnce(() => !obj.propertyName, abortSignal)`
2729
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#whenOnce reactiveUtils.whenOnce()} instead.
2730
2730
  *
2731
2731
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenNotOnce)
2732
2732
  */
@@ -2734,7 +2734,7 @@ declare namespace __esri {
2734
2734
  /**
2735
2735
  * Watches a property for becoming truthy once.
2736
2736
  *
2737
- * @deprecated `reactiveUtils.whenOnce(() => obj.propertyName, abortSignal)`
2737
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#whenOnce reactiveUtils.whenOnce()} instead.
2738
2738
  *
2739
2739
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenOnce)
2740
2740
  */
@@ -2742,7 +2742,7 @@ declare namespace __esri {
2742
2742
  /**
2743
2743
  * Watches a property for becoming `true`.
2744
2744
  *
2745
- * @deprecated Use `reactiveUtils.when(() => obj.propertyName === true, callback)`
2745
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#when reactiveUtils.when()} instead.
2746
2746
  *
2747
2747
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenTrue)
2748
2748
  */
@@ -2750,7 +2750,7 @@ declare namespace __esri {
2750
2750
  /**
2751
2751
  * Watches a property for becoming `true` once.
2752
2752
  *
2753
- * @deprecated Use `reactiveUtils.whenOnce(() => obj.propertyName === true, abortSignal)`
2753
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#whenOnce reactiveUtils.whenOnce()} instead.
2754
2754
  *
2755
2755
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenTrueOnce)
2756
2756
  */
@@ -2758,7 +2758,7 @@ declare namespace __esri {
2758
2758
  /**
2759
2759
  * Watches a property for becoming `undefined`.
2760
2760
  *
2761
- * @deprecated Use `reactiveUtils.when(() => obj.propertyName === undefined, callback)`
2761
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#when reactiveUtils.when()} instead.
2762
2762
  *
2763
2763
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenUndefined)
2764
2764
  */
@@ -2766,7 +2766,7 @@ declare namespace __esri {
2766
2766
  /**
2767
2767
  * Watches a property for becoming `undefined` once.
2768
2768
  *
2769
- * @deprecated Use `reactiveUtils.whenOnce(() => obj.propertyName === undefined, abortSignal)`
2769
+ * @deprecated since 4.24. Use {@link module:esri/core/reactiveUtils#whenOnce reactiveUtils.whenOnce()} instead.
2770
2770
  *
2771
2771
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#whenUndefinedOnce)
2772
2772
  */
@@ -2779,7 +2779,7 @@ declare namespace __esri {
2779
2779
  /**
2780
2780
  * Represents a watch created when an object invokes [watch()](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Accessor.html#watch).
2781
2781
  *
2782
- * @deprecated since version 4.24. Use {@link module:esri/core/reactiveUtils} instead.
2782
+ * @deprecated since version 4.24.
2783
2783
  *
2784
2784
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-core-watchUtils.html#PausableWatchHandle)
2785
2785
  */
@@ -43295,6 +43295,12 @@ declare namespace __esri {
43295
43295
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-support-PrintTemplate.html#layoutOptions)
43296
43296
  */
43297
43297
  customTextElements?: any[];
43298
+ /**
43299
+ * An object containing optional elements from the print service that can be updated.
43300
+ *
43301
+ * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-support-PrintTemplate.html#layoutOptions)
43302
+ */
43303
+ elementOverrides?: any;
43298
43304
  }
43299
43305
 
43300
43306
  interface ProjectParameters extends Accessor {
@@ -97864,6 +97870,12 @@ declare namespace __esri {
97864
97870
  * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-UtilityNetworkTrace-UtilityNetworkTraceViewModel.html#removeFlag)
97865
97871
  */
97866
97872
  removeFlag(flag: FlagProperty): void;
97873
+ /**
97874
+ * Removes watching the view updating event on processing flags on load.
97875
+ *
97876
+ * [Read more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-UtilityNetworkTrace-UtilityNetworkTraceViewModel.html#removeFlagsOnLoadWatcher)
97877
+ */
97878
+ removeFlagsOnLoadWatcher(): void;
97867
97879
  /**
97868
97880
  * Removes a specific trace result graphic from the view’s [graphics](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#graphics).
97869
97881
  *
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import r from"../analysis/LineOfSightAnalysis.js";import t from"../analysis/LineOfSightAnalysisObserver.js";import s from"../analysis/LineOfSightAnalysisTarget.js";import i from"../core/Collection.js";import{HandleOwnerMixin as o}from"../core/HandleOwner.js";import{applySome as a,isSome as n}from"../core/maybe.js";import{MultiOriginJSONMixin as l}from"../core/MultiOriginJSONSupport.js";import{watch as p,syncAndInitial as y}from"../core/reactiveUtils.js";import{property as c}from"../core/accessorSupport/decorators/property.js";import"../core/arrayUtils.js";import"../core/has.js";import"../core/accessorSupport/ensureType.js";import{subclass as m}from"../core/accessorSupport/decorators/subclass.js";import h from"./Layer.js";import{OperationalLayer as d}from"./mixins/OperationalLayer.js";const f=i.ofType(s);let u=class extends(d(l(o(h)))){constructor(e){super(e),this.type="line-of-sight",this.operationalLayerType="LineOfSightLayer",this.analysis=new r}initialize(){this.handles.add(p((()=>this.analysis),((e,r)=>{n(r)&&r.parent===this&&(r.parent=null),n(e)&&(e.parent=this)}),y))}get observer(){return a(this.analysis,(e=>e.observer))}set observer(e){a(this.analysis,(r=>r.observer=e))}get targets(){return n(this.analysis)?this.analysis.targets:null}set targets(e){a(this.analysis,(r=>r.targets=e))}get fullExtent(){return n(this.analysis)?this.analysis.extent:null}get spatialReference(){return n(this.analysis)?this.analysis.spatialReference:null}};e([c({json:{read:!1},readOnly:!0})],u.prototype,"type",void 0),e([c({type:["LineOfSightLayer"]})],u.prototype,"operationalLayerType",void 0),e([c({type:t,json:{read:!0,write:{ignoreOrigin:!0}}})],u.prototype,"observer",null),e([c({type:f,json:{read:!0,write:{ignoreOrigin:!0}}})],u.prototype,"targets",null),e([c({nonNullable:!0,json:{read:!1,write:!1}})],u.prototype,"analysis",void 0),e([c({readOnly:!0})],u.prototype,"fullExtent",null),e([c({readOnly:!0})],u.prototype,"spatialReference",null),e([c({json:{read:!1,write:!1,origins:{service:{read:!1,write:!1},"portal-item":{read:!1,write:!1},"web-document":{read:!1,write:!1}}}})],u.prototype,"opacity",void 0),e([c({type:["show","hide"]})],u.prototype,"listMode",void 0),u=e([m("esri.layers.LineOfSightLayer")],u);const g=u;export{g as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import r from"../analysis/LineOfSightAnalysis.js";import t from"../analysis/LineOfSightAnalysisObserver.js";import s from"../analysis/LineOfSightAnalysisTarget.js";import i from"../core/Collection.js";import{HandleOwnerMixin as o}from"../core/HandleOwner.js";import{isSome as a,applySome as n}from"../core/maybe.js";import{MultiOriginJSONMixin as l}from"../core/MultiOriginJSONSupport.js";import{watch as p,syncAndInitial as y}from"../core/reactiveUtils.js";import{property as m}from"../core/accessorSupport/decorators/property.js";import"../core/arrayUtils.js";import"../core/has.js";import"../core/accessorSupport/ensureType.js";import{subclass as c}from"../core/accessorSupport/decorators/subclass.js";import h from"./Layer.js";import{OperationalLayer as d}from"./mixins/OperationalLayer.js";const u=i.ofType(s);let f=class extends(d(l(o(h)))){constructor(e){super(e),this.type="line-of-sight",this.operationalLayerType="LineOfSightLayer",this.analysis=new r}initialize(){this.handles.add(p((()=>this.analysis),((e,r)=>{a(r)&&r.parent===this&&(r.parent=null),a(e)&&(e.parent=this)}),y))}async load(){return a(this.analysis)&&this.addResolvingPromise(this.analysis.waitComputeExtent()),this}get observer(){return n(this.analysis,(e=>e.observer))}set observer(e){n(this.analysis,(r=>r.observer=e))}get targets(){return a(this.analysis)?this.analysis.targets:null}set targets(e){n(this.analysis,(r=>r.targets=e))}get fullExtent(){return a(this.analysis)?this.analysis.extent:null}get spatialReference(){return a(this.analysis)?this.analysis.spatialReference:null}};e([m({json:{read:!1},readOnly:!0})],f.prototype,"type",void 0),e([m({type:["LineOfSightLayer"]})],f.prototype,"operationalLayerType",void 0),e([m({type:t,json:{read:!0,write:{ignoreOrigin:!0}}})],f.prototype,"observer",null),e([m({type:u,json:{read:!0,write:{ignoreOrigin:!0}}})],f.prototype,"targets",null),e([m({nonNullable:!0,json:{read:!1,write:!1}})],f.prototype,"analysis",void 0),e([m({readOnly:!0})],f.prototype,"fullExtent",null),e([m({readOnly:!0})],f.prototype,"spatialReference",null),e([m({json:{read:!1,write:!1,origins:{service:{read:!1,write:!1},"portal-item":{read:!1,write:!1},"web-document":{read:!1,write:!1}}}})],f.prototype,"opacity",void 0),e([m({type:["show","hide"]})],f.prototype,"listMode",void 0),f=e([c("esri.layers.LineOfSightLayer")],f);const g=f;export{g as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../../core/Error.js";import e from"../PixelBlock.js";import i from"./ImageCanvasDecoder.js";import a from"./JpgPlus.js";import{load as s,decode as r}from"./Lerc.js";import{decode as n}from"./Lzw.js";import{Z as o}from"../../../chunks/Zlib.js";import h from"./Raw.js";import{decodeTileOrStrip as c,decode as p}from"./TiffDecoder.js";import{isPlatformLittleEndian as l}from"./utils.js";var d=function(t){var e,i,a,s,r,n;function h(t){var e,i,a,s,r,n,o,h,c,p,l,d,u;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.animation=null,this.text={},r=null;;){switch(e=this.readUInt32(),h=function(){var t,e;for(e=[],t=0;t<4;++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join(""),h){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"acTL":this.animation={numFrames:this.readUInt32(),numPlays:this.readUInt32()||1/0,frames:[]};break;case"PLTE":this.palette=this.read(e);break;case"fcTL":r&&this.animation.frames.push(r),this.pos+=4,r={width:this.readUInt32(),height:this.readUInt32(),xOffset:this.readUInt32(),yOffset:this.readUInt32()},s=this.readUInt16(),a=this.readUInt16()||100,r.delay=1e3*s/a,r.disposeOp=this.data[this.pos++],r.blendOp=this.data[this.pos++],r.data=[];break;case"IDAT":case"fdAT":for("fdAT"===h&&(this.pos+=4,e-=4),t=(null!=r?r.data:void 0)||this.imgData,l=0;0<=e?l<e:l>e;0<=e?++l:--l)t.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(this.transparency.indexed=this.read(e),(c=255-this.transparency.indexed.length)>0)for(d=0;0<=c?d<c:d>c;0<=c?++d:--d)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(e)[0];break;case 2:this.transparency.rgb=this.read(e)}break;case"tEXt":n=(p=this.read(e)).indexOf(0),o=String.fromCharCode.apply(String,p.slice(0,n)),this.text[o]=String.fromCharCode.apply(String,p.slice(n+1));break;case"IEND":return r&&this.animation.frames.push(r),this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(u=this.colorType)||6===u,i=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*i,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new Uint8Array(this.imgData));default:this.pos+=e}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}return h.load=function(t,e,i){var a;return"function"==typeof e&&(i=e),(a=new XMLHttpRequest).open("GET",t,!0),a.responseType="arraybuffer",a.onload=function(){var t;return t=new h(new Uint8Array(a.response||a.mozResponseArrayBuffer)),"function"==typeof(null!=e?e.getContext:void 0)&&t.render(e),"function"==typeof i?i(t):void 0},a.send(null)},i=1,a=2,e=0,h.prototype.read=function(t){var e,i;for(i=[],e=0;0<=t?e<t:e>t;0<=t?++e:--e)i.push(this.data[this.pos++]);return i},h.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},h.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},h.prototype.decodePixels=function(t){var e,i,a,s,r,n,h,c,p,l,d,u,f,m,g,w,y,x,b,k,T,U,I;if(null==t&&(t=this.imgData),0===t.length)return new Uint8Array(0);for(t=(t=new o(t)).getBytes(),w=(u=this.pixelBitlength/8)*this.width,f=new Uint8Array(w*this.height),n=t.length,g=0,m=0,i=0;m<n;){switch(t[m++]){case 0:for(s=b=0;b<w;s=b+=1)f[i++]=t[m++];break;case 1:for(s=k=0;k<w;s=k+=1)e=t[m++],r=s<u?0:f[i-u],f[i++]=(e+r)%256;break;case 2:for(s=T=0;T<w;s=T+=1)e=t[m++],a=(s-s%u)/u,y=g&&f[(g-1)*w+a*u+s%u],f[i++]=(y+e)%256;break;case 3:for(s=U=0;U<w;s=U+=1)e=t[m++],a=(s-s%u)/u,r=s<u?0:f[i-u],y=g&&f[(g-1)*w+a*u+s%u],f[i++]=(e+Math.floor((r+y)/2))%256;break;case 4:for(s=I=0;I<w;s=I+=1)e=t[m++],a=(s-s%u)/u,r=s<u?0:f[i-u],0===g?y=x=0:(y=f[(g-1)*w+a*u+s%u],x=a&&f[(g-1)*w+(a-1)*u+s%u]),h=r+y-x,c=Math.abs(h-r),l=Math.abs(h-y),d=Math.abs(h-x),p=c<=l&&c<=d?r:l<=d?y:x,f[i++]=(e+p)%256;break;default:throw new Error("Invalid filter algorithm: "+t[m-1])}g++}return f},h.prototype.decodePalette=function(){var t,e,i,a,s,r,n,o,h;for(i=this.palette,r=this.transparency.indexed||[],s=new Uint8Array((r.length||0)+i.length),a=0,t=0,e=n=0,o=i.length;n<o;e=n+=3)s[a++]=i[e],s[a++]=i[e+1],s[a++]=i[e+2],s[a++]=null!=(h=r[t++])?h:255;return s},h.prototype.copyToImageData=function(t,e){var i,a,s,r,n,o,h,c,p,l,d;if(a=this.colors,p=null,i=this.hasAlphaChannel,this.palette.length&&(p=null!=(d=this._decodedPalette)?d:this._decodedPalette=this.decodePalette(),a=4,i=!0),c=(s=t.data||t).length,n=p||e,r=o=0,1===a)for(;r<c;)h=p?4*e[r/4]:o,l=n[h++],s[r++]=l,s[r++]=l,s[r++]=l,s[r++]=i?n[h++]:this.transparency.grayscale&&this.transparency.grayscale===l?0:255,o=h;else for(;r<c;)h=p?4*e[r/4]:o,s[r++]=n[h++],s[r++]=n[h++],s[r++]=n[h++],s[r++]=i?n[h++]:this.transparency.rgb&&this.transparency.rgb[1]===n[h-3]&&this.transparency.rgb[3]===n[h-2]&&this.transparency.rgb[5]===n[h-1]?0:255,o=h},h.prototype.decode=function(){var t;return t=new Uint8Array(this.width*this.height*4),this.copyToImageData(t,this.decodePixels()),t},r=t.document&&t.document.createElement("canvas"),n=r&&r.getContext("2d"),s=function(t){var e;return n.width=t.width,n.height=t.height,n.clearRect(0,0,t.width,t.height),n.putImageData(t,0,0),(e=new Image).src=r.toDataURL(),e},h.prototype.decodeFrames=function(t){var e,i,a,r,n,o,h,c;if(this.animation){for(c=[],i=n=0,o=(h=this.animation.frames).length;n<o;i=++n)e=h[i],a=t.createImageData(e.width,e.height),r=this.decodePixels(new Uint8Array(e.data)),this.copyToImageData(a,r),e.imageData=a,c.push(e.image=s(a));return c}},h.prototype.renderFrame=function(t,s){var r,n,o;return r=(n=this.animation.frames)[s],o=n[s-1],0===s&&t.clearRect(0,0,this.width,this.height),(null!=o?o.disposeOp:void 0)===i?t.clearRect(o.xOffset,o.yOffset,o.width,o.height):(null!=o?o.disposeOp:void 0)===a&&t.putImageData(o.imageData,o.xOffset,o.yOffset),r.blendOp===e&&t.clearRect(r.xOffset,r.yOffset,r.width,r.height),t.drawImage(r.image,r.xOffset,r.yOffset)},h.prototype.animate=function(t){var e,i,a,s,r,n,o=this;return i=0,n=this.animation,s=n.numFrames,a=n.frames,r=n.numPlays,(e=function(){var n,h;if(n=i++%s,h=a[n],o.renderFrame(t,n),s>1&&i/s<r)return o.animation._timeout=setTimeout(e,h.delay)})()},h.prototype.stopAnimation=function(){var t;return clearTimeout(null!=(t=this.animation)?t._timeout:void 0)},h.prototype.render=function(t){var e,i;return t._png&&t._png.stopAnimation(),t._png=this,t.width=this.width,t.height=this.height,e=t.getContext("2d"),this.animation?(this.decodeFrames(e),this.animate(e)):(i=e.createImageData(this.width,this.height),this.copyToImageData(i,this.decodePixels()),e.putImageData(i,0,0))},h}(self);const u=new Set(["jpg","png","bmp","gif"]),f=new Set(["S8","U8","S16","U16","S32","U32","F32","F64"]);async function m(i,a){if(!l)throw new t("rasterCoded:decode","lerc decoder is not supported on big endian platform");await s();const{offset:n,noDataValue:o}=a;let h=a.pixelType?.toUpperCase();h&&!f.has(h)&&(h=null);const{width:c,height:p,pixelType:d,statistics:u,pixels:m,mask:g}=r(i,{inputOffset:n,noDataValue:o,pixelType:h,returnPixelInterleavedDims:a.returnPixelInterleavedDims});return new e({width:c,height:p,pixelType:d.toLowerCase(),pixels:m,mask:g,statistics:u})}async function g(t,i){const a=await p(t,i.pyramidLevel||0),s=new e({width:a.width,height:a.height,pixels:a.pixels,pixelType:a.pixelType.toLowerCase(),mask:a.mask,statistics:null});return s.updateStatistics(),s}async function w(t,i){const a=await c(t,i.customOptions),s=new e({width:a.width,height:a.height,pixels:a.pixels,pixelType:a.pixelType.toLowerCase(),mask:a.mask,statistics:null});return s.updateStatistics(),s}function y(t,i){const a=i.pixelType||"u8",s=e.getPixelArrayConstructor(a),r="u8"===a?t:new s(t.buffer),n=[],o=i.planes||1;if(1===o)n.push(r);else for(let e=0;e<o;e++){const a=(i.width||1)*(i.height||t.length),h=new s(a);for(let t=0;t<a;t++)h[t]=r[t*o+e];n.push(h)}const h=new e({width:i.width||1,height:i.height||t.length,pixels:n,pixelType:a,statistics:null});return h.updateStatistics(),h}function x(t,e){return y(new o(new Uint8Array(t)).getBytes(),e)}function b(t,e){return y(n(t,e.offset,e.eof,!e.isInputBigEndian),e)}function k(t,i,a){const{pixelTypeCtor:s}=A(i.pixelType),r=(0,h.decode)(t,{width:i.width,height:i.height,pixelType:s,format:a}),n=new e({width:i.width,height:i.height,pixels:r.pixels,pixelType:i.pixelType,mask:r.mask,statistics:null});return n.updateStatistics(),n}function T(t){const i=a.decode(t),s=new e({width:i.width,height:i.height,pixels:i.pixels,pixelType:"U8",mask:i.mask,statistics:null});return s.updateStatistics(),s}function U(t,i){const a=new Uint8Array(t),s=new d(a),{width:r,height:n}=i,o=r*n,h=s.decode();let c,p=0,l=0;const u=new Uint8Array(o);for(p=0;p<o;p++)u[p]=h[4*p+3];const f=new e({width:r,height:n,pixels:[],pixelType:"U8",mask:u,statistics:[]});for(p=0;p<3;p++){for(c=new Uint8Array(o),l=0;l<o;l++)c[l]=h[4*l+p];f.addData({pixels:c})}return f.updateStatistics(),f}async function I(t,a,s,r){const n=new i,o={applyJpegMask:!1,format:a,...s},h=await n.decode(t,o,r),c=new e(h);return c.updateStatistics(),c}function v(e){if(null==e)throw new t("rasterCodec:decode","parameter encodeddata is required.");const i=new Uint8Array(e,0,10);let a="";return 255===i[0]&&216===i[1]?a="jpg":137===i[0]&&80===i[1]&&78===i[2]&&71===i[3]?a="png":67===i[0]&&110===i[1]&&116===i[2]&&90===i[3]&&73===i[4]&&109===i[5]&&97===i[6]&&103===i[7]&&101===i[8]&&32===i[9]?a="lerc":76===i[0]&&101===i[1]&&114===i[2]&&99===i[3]&&50===i[4]&&32===i[5]?a="lerc2":73===i[0]&&73===i[1]&&42===i[2]&&0===i[3]||77===i[0]&&77===i[1]&&0===i[2]&&42===i[3]||73===i[0]&&73===i[1]&&43===i[2]&&0===i[3]||77===i[0]&&77===i[1]&&0===i[2]&&43===i[3]?a="tiff":71===i[0]&&73===i[1]&&70===i[2]?a="gif":66===i[0]&&77===i[1]?a="bmp":String.fromCharCode.apply(null,i).toLowerCase().includes("error")&&(a="error"),a}function C(e){let i=null;switch(e){case"lerc":case"lerc2":i=m;break;case"jpg":i=T;break;case"png":i=U;break;case"bsq":case"bip":i=(t,i)=>k(t,i,e);break;case"tiff":i=g;break;case"deflate":i=x;break;case"lzw":i=b;break;case"error":i=()=>{throw new t("rasterCodec:decode","input data contains error")};break;default:i=()=>{throw new t("rasterCodec:decode","unsupported raster format")}}return i}function A(t){let e=null,i=null;switch(t?t.toLowerCase():"f32"){case"u1":case"u2":case"u4":case"u8":i=255,e=Uint8Array;break;case"u16":i=i||65535,e=Uint16Array;break;case"u32":i=i||2**32-1,e=Uint32Array;break;case"s8":i=i||-128,e=Int8Array;break;case"s16":i=i||-32768,e=Int16Array;break;case"s32":i=i||0-2**31,e=Int32Array;break;default:e=Float32Array}return{pixelTypeCtor:e,noDataValue:i}}function D(t,i=1){if(!t)return;const{pixels:a,width:s,height:r,mask:n}=t;if(!a||0===a.length)return;const o=a.length,h=s-1,c=r-1,p=[];let l,d,u,f,m,g,w;const y=e.getPixelArrayConstructor(t.pixelType);if(0===i){for(l=0;l<o;l++){for(m=a[l],g=new y(h*c),d=0;d<c;d++)for(f=d*s,u=0;u<h;u++)g[d*h+u]=m[f+u];p.push(g)}if(n)for(w=new Uint8Array(h*c),d=0;d<c;d++)for(f=d*s,u=0;u<h;u++)w[d*h+u]=n[f+u]}else{for(l=0;l<o;l++){for(m=a[l],g=new y(h*c),d=0;d<c;d++)for(f=d*s,u=0;u<h;u++)g[d*h+u]=(m[f+u]+m[f+u+1]+m[f+s+u]+m[f+s+u+1])/4;p.push(g)}if(n)for(w=new Uint8Array(h*c),d=0;d<c;d++)for(f=d*s,u=0;u<h;u++)w[d*h+u]=Math.min.apply(null,[n[f+u],n[f+u+1],n[f+s+u],n[f+s+u+1]])}t.width=h,t.height=c,t.mask=w,t.pixels=p}function P(t){let e=v(t);return"lerc2"===e?e="lerc":"error"===e&&(e=""),e}async function S(e,i={},a){if(null==e)throw new t("rasterCodec:decode","missing encodeddata parameter.");let s,r,n=i.format&&i.format.toLowerCase();if(!("bsq"!==n&&"bip"!==n||null!=i.width&&null!=i.height))throw new t("rasterCodec:decode","requires width and height in options parameter.");return"tiff"===n&&i.customOptions?w(e,i):((!n||"bsq"!==n&&"bip"!==n&&"deflate"!==n&&"lzw"!==n)&&(n=v(e)),i.useCanvas&&u.has(n)?r=await I(e,n,i,a):(s=C(n),i.isPoint&&((i={...i}).width++,i.height++),r=await s(e,i),i.isPoint&&D(r)),r)}export{S as decode,P as getFormat};
5
+ import t from"../../../core/Error.js";import e from"../PixelBlock.js";import i from"./ImageCanvasDecoder.js";import a from"./JpgPlus.js";import{load as s,decode as r}from"./Lerc.js";import{decode as n}from"./Lzw.js";import{Z as o}from"../../../chunks/Zlib.js";import h from"./Raw.js";import{decodeTileOrStrip as c,decode as p}from"./TiffDecoder.js";import{isPlatformLittleEndian as l}from"./utils.js";var d=function(t){var e,i,a,s,r,n;function h(t){var e,i,a,s,r,n,o,h,c,p,l,d,u;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.animation=null,this.text={},r=null;;){switch(e=this.readUInt32(),h=function(){var t,e;for(e=[],t=0;t<4;++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join(""),h){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"acTL":this.animation={numFrames:this.readUInt32(),numPlays:this.readUInt32()||1/0,frames:[]};break;case"PLTE":this.palette=this.read(e);break;case"fcTL":r&&this.animation.frames.push(r),this.pos+=4,r={width:this.readUInt32(),height:this.readUInt32(),xOffset:this.readUInt32(),yOffset:this.readUInt32()},s=this.readUInt16(),a=this.readUInt16()||100,r.delay=1e3*s/a,r.disposeOp=this.data[this.pos++],r.blendOp=this.data[this.pos++],r.data=[];break;case"IDAT":case"fdAT":for("fdAT"===h&&(this.pos+=4,e-=4),t=(null!=r?r.data:void 0)||this.imgData,l=0;0<=e?l<e:l>e;0<=e?++l:--l)t.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(this.transparency.indexed=this.read(e),(c=255-this.transparency.indexed.length)>0)for(d=0;0<=c?d<c:d>c;0<=c?++d:--d)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(e)[0];break;case 2:this.transparency.rgb=this.read(e)}break;case"tEXt":n=(p=this.read(e)).indexOf(0),o=String.fromCharCode.apply(String,p.slice(0,n)),this.text[o]=String.fromCharCode.apply(String,p.slice(n+1));break;case"IEND":return r&&this.animation.frames.push(r),this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(u=this.colorType)||6===u,i=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*i,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new Uint8Array(this.imgData));default:this.pos+=e}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}return h.load=function(t,e,i){var a;return"function"==typeof e&&(i=e),(a=new XMLHttpRequest).open("GET",t,!0),a.responseType="arraybuffer",a.onload=function(){var t;return t=new h(new Uint8Array(a.response||a.mozResponseArrayBuffer)),"function"==typeof(null!=e?e.getContext:void 0)&&t.render(e),"function"==typeof i?i(t):void 0},a.send(null)},i=1,a=2,e=0,h.prototype.read=function(t){var e,i;for(i=[],e=0;0<=t?e<t:e>t;0<=t?++e:--e)i.push(this.data[this.pos++]);return i},h.prototype.readUInt32=function(){return this.data[this.pos++]<<24|this.data[this.pos++]<<16|this.data[this.pos++]<<8|this.data[this.pos++]},h.prototype.readUInt16=function(){return this.data[this.pos++]<<8|this.data[this.pos++]},h.prototype.decodePixels=function(t){var e,i,a,s,r,n,h,c,p,l,d,u,f,m,g,w,y,x,b,k,T,U,I;if(null==t&&(t=this.imgData),0===t.length)return new Uint8Array(0);for(t=(t=new o(t)).getBytes(),w=(u=this.pixelBitlength/8)*this.width,f=new Uint8Array(w*this.height),n=t.length,g=0,m=0,i=0;m<n;){switch(t[m++]){case 0:for(s=b=0;b<w;s=b+=1)f[i++]=t[m++];break;case 1:for(s=k=0;k<w;s=k+=1)e=t[m++],r=s<u?0:f[i-u],f[i++]=(e+r)%256;break;case 2:for(s=T=0;T<w;s=T+=1)e=t[m++],a=(s-s%u)/u,y=g&&f[(g-1)*w+a*u+s%u],f[i++]=(y+e)%256;break;case 3:for(s=U=0;U<w;s=U+=1)e=t[m++],a=(s-s%u)/u,r=s<u?0:f[i-u],y=g&&f[(g-1)*w+a*u+s%u],f[i++]=(e+Math.floor((r+y)/2))%256;break;case 4:for(s=I=0;I<w;s=I+=1)e=t[m++],a=(s-s%u)/u,r=s<u?0:f[i-u],0===g?y=x=0:(y=f[(g-1)*w+a*u+s%u],x=a&&f[(g-1)*w+(a-1)*u+s%u]),h=r+y-x,c=Math.abs(h-r),l=Math.abs(h-y),d=Math.abs(h-x),p=c<=l&&c<=d?r:l<=d?y:x,f[i++]=(e+p)%256;break;default:throw new Error("Invalid filter algorithm: "+t[m-1])}g++}return f},h.prototype.decodePalette=function(){var t,e,i,a,s,r,n,o,h;for(i=this.palette,r=this.transparency.indexed||[],s=new Uint8Array((r.length||0)+i.length),a=0,i.length,t=0,e=n=0,o=i.length;n<o;e=n+=3)s[a++]=i[e],s[a++]=i[e+1],s[a++]=i[e+2],s[a++]=null!=(h=r[t++])?h:255;return s},h.prototype.copyToImageData=function(t,e){var i,a,s,r,n,o,h,c,p,l,d;if(a=this.colors,p=null,i=this.hasAlphaChannel,this.palette.length&&(p=null!=(d=this._decodedPalette)?d:this._decodedPalette=this.decodePalette(),a=4,i=!0),c=(s=t.data||t).length,n=p||e,r=o=0,1===a)for(;r<c;)h=p?4*e[r/4]:o,l=n[h++],s[r++]=l,s[r++]=l,s[r++]=l,s[r++]=i?n[h++]:this.transparency.grayscale&&this.transparency.grayscale===l?0:255,o=h;else for(;r<c;)h=p?4*e[r/4]:o,s[r++]=n[h++],s[r++]=n[h++],s[r++]=n[h++],s[r++]=i?n[h++]:this.transparency.rgb&&this.transparency.rgb[1]===n[h-3]&&this.transparency.rgb[3]===n[h-2]&&this.transparency.rgb[5]===n[h-1]?0:255,o=h},h.prototype.decode=function(){var t;return t=new Uint8Array(this.width*this.height*4),this.copyToImageData(t,this.decodePixels()),t},r=t.document&&t.document.createElement("canvas"),n=r&&r.getContext("2d"),s=function(t){var e;return n.width=t.width,n.height=t.height,n.clearRect(0,0,t.width,t.height),n.putImageData(t,0,0),(e=new Image).src=r.toDataURL(),e},h.prototype.decodeFrames=function(t){var e,i,a,r,n,o,h,c;if(this.animation){for(c=[],i=n=0,o=(h=this.animation.frames).length;n<o;i=++n)e=h[i],a=t.createImageData(e.width,e.height),r=this.decodePixels(new Uint8Array(e.data)),this.copyToImageData(a,r),e.imageData=a,c.push(e.image=s(a));return c}},h.prototype.renderFrame=function(t,s){var r,n,o;return r=(n=this.animation.frames)[s],o=n[s-1],0===s&&t.clearRect(0,0,this.width,this.height),(null!=o?o.disposeOp:void 0)===i?t.clearRect(o.xOffset,o.yOffset,o.width,o.height):(null!=o?o.disposeOp:void 0)===a&&t.putImageData(o.imageData,o.xOffset,o.yOffset),r.blendOp===e&&t.clearRect(r.xOffset,r.yOffset,r.width,r.height),t.drawImage(r.image,r.xOffset,r.yOffset)},h.prototype.animate=function(t){var e,i,a,s,r,n,o=this;return i=0,n=this.animation,s=n.numFrames,a=n.frames,r=n.numPlays,(e=function(){var n,h;if(n=i++%s,h=a[n],o.renderFrame(t,n),s>1&&i/s<r)return o.animation._timeout=setTimeout(e,h.delay)})()},h.prototype.stopAnimation=function(){var t;return clearTimeout(null!=(t=this.animation)?t._timeout:void 0)},h.prototype.render=function(t){var e,i;return t._png&&t._png.stopAnimation(),t._png=this,t.width=this.width,t.height=this.height,e=t.getContext("2d"),this.animation?(this.decodeFrames(e),this.animate(e)):(i=e.createImageData(this.width,this.height),this.copyToImageData(i,this.decodePixels()),e.putImageData(i,0,0))},h}(self);const u=new Set(["jpg","png","bmp","gif"]),f=new Set(["S8","U8","S16","U16","S32","U32","F32","F64"]);async function m(i,a){if(!l)throw new t("rasterCoded:decode","lerc decoder is not supported on big endian platform");await s();const{offset:n,noDataValue:o}=a;let h=a.pixelType?.toUpperCase();h&&!f.has(h)&&(h=null);const{width:c,height:p,pixelType:d,statistics:u,pixels:m,mask:g}=r(i,{inputOffset:n,noDataValue:o,pixelType:h,returnPixelInterleavedDims:a.returnPixelInterleavedDims});return new e({width:c,height:p,pixelType:d.toLowerCase(),pixels:m,mask:g,statistics:u})}async function g(t,i){const a=await p(t,i.pyramidLevel||0),s=new e({width:a.width,height:a.height,pixels:a.pixels,pixelType:a.pixelType.toLowerCase(),mask:a.mask,statistics:null});return s.updateStatistics(),s}async function w(t,i){const a=await c(t,i.customOptions),s=new e({width:a.width,height:a.height,pixels:a.pixels,pixelType:a.pixelType.toLowerCase(),mask:a.mask,statistics:null});return s.updateStatistics(),s}function y(t,i){const a=i.pixelType||"u8",s=e.getPixelArrayConstructor(a),r="u8"===a?t:new s(t.buffer),n=[],o=i.planes||1;if(1===o)n.push(r);else for(let e=0;e<o;e++){const a=(i.width||1)*(i.height||t.length),h=new s(a);for(let t=0;t<a;t++)h[t]=r[t*o+e];n.push(h)}const h=new e({width:i.width||1,height:i.height||t.length,pixels:n,pixelType:a,statistics:null});return h.updateStatistics(),h}function x(t,e){return y(new o(new Uint8Array(t)).getBytes(),e)}function b(t,e){return y(n(t,e.offset,e.eof,!e.isInputBigEndian),e)}function k(t,i,a){const{pixelTypeCtor:s}=A(i.pixelType),r=(0,h.decode)(t,{width:i.width,height:i.height,pixelType:s,format:a}),n=new e({width:i.width,height:i.height,pixels:r.pixels,pixelType:i.pixelType,mask:r.mask,statistics:null});return n.updateStatistics(),n}function T(t){const i=a.decode(t),s=new e({width:i.width,height:i.height,pixels:i.pixels,pixelType:"U8",mask:i.mask,statistics:null});return s.updateStatistics(),s}function U(t,i){const a=new Uint8Array(t),s=new d(a),{width:r,height:n}=i,o=r*n,h=s.decode();let c,p=0,l=0;const u=new Uint8Array(o);for(p=0;p<o;p++)u[p]=h[4*p+3];const f=new e({width:r,height:n,pixels:[],pixelType:"U8",mask:u,statistics:[]});for(p=0;p<3;p++){for(c=new Uint8Array(o),l=0;l<o;l++)c[l]=h[4*l+p];f.addData({pixels:c})}return f.updateStatistics(),f}async function I(t,a,s,r){const n=new i,o={applyJpegMask:!1,format:a,...s},h=await n.decode(t,o,r),c=new e(h);return c.updateStatistics(),c}function v(e){if(null==e)throw new t("rasterCodec:decode","parameter encodeddata is required.");const i=new Uint8Array(e,0,10);let a="";return 255===i[0]&&216===i[1]?a="jpg":137===i[0]&&80===i[1]&&78===i[2]&&71===i[3]?a="png":67===i[0]&&110===i[1]&&116===i[2]&&90===i[3]&&73===i[4]&&109===i[5]&&97===i[6]&&103===i[7]&&101===i[8]&&32===i[9]?a="lerc":76===i[0]&&101===i[1]&&114===i[2]&&99===i[3]&&50===i[4]&&32===i[5]?a="lerc2":73===i[0]&&73===i[1]&&42===i[2]&&0===i[3]||77===i[0]&&77===i[1]&&0===i[2]&&42===i[3]||73===i[0]&&73===i[1]&&43===i[2]&&0===i[3]||77===i[0]&&77===i[1]&&0===i[2]&&43===i[3]?a="tiff":71===i[0]&&73===i[1]&&70===i[2]?a="gif":66===i[0]&&77===i[1]?a="bmp":String.fromCharCode.apply(null,i).toLowerCase().includes("error")&&(a="error"),a}function C(e){let i=null;switch(e){case"lerc":case"lerc2":i=m;break;case"jpg":i=T;break;case"png":i=U;break;case"bsq":case"bip":i=(t,i)=>k(t,i,e);break;case"tiff":i=g;break;case"deflate":i=x;break;case"lzw":i=b;break;case"error":i=()=>{throw new t("rasterCodec:decode","input data contains error")};break;default:i=()=>{throw new t("rasterCodec:decode","unsupported raster format")}}return i}function A(t){let e=null,i=null;switch(t?t.toLowerCase():"f32"){case"u1":case"u2":case"u4":case"u8":i=255,e=Uint8Array;break;case"u16":i=i||65535,e=Uint16Array;break;case"u32":i=i||2**32-1,e=Uint32Array;break;case"s8":i=i||-128,e=Int8Array;break;case"s16":i=i||-32768,e=Int16Array;break;case"s32":i=i||0-2**31,e=Int32Array;break;default:e=Float32Array}return{pixelTypeCtor:e,noDataValue:i}}function D(t,i=1){if(!t)return;const{pixels:a,width:s,height:r,mask:n}=t;if(!a||0===a.length)return;const o=a.length,h=s-1,c=r-1,p=[];let l,d,u,f,m,g,w;const y=e.getPixelArrayConstructor(t.pixelType);if(0===i){for(l=0;l<o;l++){for(m=a[l],g=new y(h*c),d=0;d<c;d++)for(f=d*s,u=0;u<h;u++)g[d*h+u]=m[f+u];p.push(g)}if(n)for(w=new Uint8Array(h*c),d=0;d<c;d++)for(f=d*s,u=0;u<h;u++)w[d*h+u]=n[f+u]}else{for(l=0;l<o;l++){for(m=a[l],g=new y(h*c),d=0;d<c;d++)for(f=d*s,u=0;u<h;u++)g[d*h+u]=(m[f+u]+m[f+u+1]+m[f+s+u]+m[f+s+u+1])/4;p.push(g)}if(n)for(w=new Uint8Array(h*c),d=0;d<c;d++)for(f=d*s,u=0;u<h;u++)w[d*h+u]=Math.min.apply(null,[n[f+u],n[f+u+1],n[f+s+u],n[f+s+u+1]])}t.width=h,t.height=c,t.mask=w,t.pixels=p}function P(t){let e=v(t);return"lerc2"===e?e="lerc":"error"===e&&(e=""),e}async function S(e,i={},a){if(null==e)throw new t("rasterCodec:decode","missing encodeddata parameter.");let s,r,n=i.format&&i.format.toLowerCase();if(!("bsq"!==n&&"bip"!==n||null!=i.width&&null!=i.height))throw new t("rasterCodec:decode","requires width and height in options parameter.");return"tiff"===n&&i.customOptions?w(e,i):((!n||"bsq"!==n&&"bip"!==n&&"deflate"!==n&&"lzw"!==n)&&(n=v(e)),i.useCanvas&&u.has(n)?r=await I(e,n,i,a):(s=C(n),i.isPoint&&((i={...i}).width++,i.height++),r=await s(e,i),i.isPoint&&D(r)),r)}export{S as decode,P as getFormat};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "4.24.0-next.20220607",
3
+ "version": "4.24.0-next.20220608",
4
4
  "homepage": "https://js.arcgis.com",
5
5
  "description": "ArcGIS API for JavaScript: A complete 2D and 3D mapping and data visualization API",
6
6
  "keywords": [
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import e from"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../symbols.js";import r from"../../core/Error.js";import{isSome as i}from"../../core/maybe.js";import{toPt as a}from"../../core/screenUtils.js";import{fetchMessageBundle as s}from"../../intl/messages.js";import t from"../heuristics/outline.js";import n from"../heuristics/sizeRange.js";import{createVisualVariables as o}from"./size.js";import{createColors as l,createSymbol as p,getSymbolOutlineFromScheme as m,verifyBasicFieldValidity as u,getBasemapInfo as d}from"./support/utils.js";import c from"../statistics/predominantCategories.js";import{getSumOfAttributesExpr as b}from"../statistics/support/utils.js";import{getFieldsList as h}from"../support/utils.js";import{LayerType as y,createLayerAdapter as f,getLayerTypeLabels as g}from"../support/adapters/support/layerUtils.js";import{cloneScheme as v,getSchemes as w}from"../symbology/pieChart.js";import j from"../../symbols/SimpleLineSymbol.js";async function z(e){if(!(e&&e.layer&&e.view&&e.attributes?.length))throw new r("pie-chart-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>10)throw new r("pie-chart-renderer:invalid-parameters","PieChart renderer does not support more than 10 attributes");const a={...e};a.shape=a.shape||"pie",a.othersCategoryEnabled=null==a.othersCategoryEnabled||a.othersCategoryEnabled,a.includeSizeVariable=e.includeSizeVariable||!1;const s=[y.CSVLayer,y.FeatureLayer,y.OGCFeatureLayer,y.GeoJSONLayer,y.WFSLayer],t=f(a.layer,s);if(a.layer=t,!t)throw new r("pie-chart-renderer:invalid-parameters","'layer' must be one of these types: "+g(s).join(", "));const n=i(a.signal)?{signal:a.signal}:null;await Promise.all([a.view.when(),t.load(n)]);const o=t.geometryType,l="polygon"===o,p="point"===o||"multipoint"===o||l;if(a.outlineOptimizationEnabled=!!l&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=!!p&&a.sizeOptimizationEnabled,!p)throw new r("pie-chart-renderer:not-supported","PieChart renderer is only supported for point and polygon layers");const m=[],d=a.attributes;for(const r of d){const e=await h({field:r.field,valueExpression:r.valueExpression});m.push(...e)}const c=u(t,m.filter(Boolean),"pie-chart-renderer:invalid-parameters");if(c)throw c;return a}async function E(e){let r=e.pieChartScheme,a=null,s=null;const t=await d(e.basemap,e.view);if(a=i(t.basemapId)?t.basemapId:null,s=i(t.basemapTheme)?t.basemapTheme:null,r)return{scheme:v(r),basemapId:a,basemapTheme:s};const n=w({basemap:a,numColors:e.attributes.length,geometryType:e.layer.geometryType,basemapTheme:s});return n&&(r=n.primaryScheme,a=n.basemapId,s=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:s}}async function C(e,r){const{valueExpression:i,sqlExpression:a,sqlWhere:t}=b(e.attributes),n=await s("esri/smartMapping/t9n/smartMapping");return o({layer:e.layer,basemap:e.basemap,valueExpression:i,sqlExpression:a,sqlWhere:t,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,legendOptions:{title:n.sumOfCategories},view:e.view,signal:e.signal})}async function S(i){const s=await z(i),o=await E(s),u=o?.scheme;if(!u)throw new r("pie-chart-renderer:insufficient-info","Unable to find pie-chart scheme");const d=s.layer,{includeSizeVariable:b,sizeOptimizationEnabled:h,outlineOptimizationEnabled:y,view:f,signal:g}=s,w=u.sizeScheme,S=s.attributes,V=S.map((e=>e.field)),[O,T,I,x]=await Promise.all([V.length>1?c({layer:d,fields:V,view:f,signal:g}):null,b?C(s,w):null,!b&&h?n({layer:d,view:f,signal:g}):null,y?t({layer:d,view:f,signal:g}):null]),R=O&&O.predominantCategoryInfos?{uniqueValueInfos:O.predominantCategoryInfos}:{uniqueValueInfos:V.map((e=>({value:e,count:0})))},q=l(u.colors,S.length),L=S.map(((e,r)=>({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:q[r]}))),P=d.geometryType,F="background"in w&&w.background,U=new e({attributes:L,othersCategory:{color:s.othersCategoryEnabled?u.colorForOthersCategory:null,threshold:.04},holePercentage:"donut"===s.shape?.45:0,backgroundFillSymbol:F?p(P,{type:"2d",color:F.color,outline:m(F,P,x?.opacity)}):null,size:a(u.size),outline:new j(m(u,"point",x?.opacity)),legendOptions:s.legendOptions});if(T&&(U.authoringInfo=T.authoringInfo.clone(),U.visualVariables=T.visualVariables?.map((e=>e.clone()))),x?.visualVariables?.length){const e=x.visualVariables.map((e=>e.clone()));U.visualVariables?U.visualVariables.push(...e):U.visualVariables=e}return I?.minSize&&(U.visualVariables?U.visualVariables.push(I.minSize):U.visualVariables=[I.minSize]),{renderer:U,pieChartScheme:v(u),size:T,basemapId:o.basemapId,basemapTheme:o.basemapTheme,statistics:R}}export{S as createRenderer};
5
+ import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import e from"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../symbols.js";import r from"../../core/Error.js";import{isSome as i}from"../../core/maybe.js";import{toPt as a}from"../../core/screenUtils.js";import{fetchMessageBundle as s}from"../../intl/messages.js";import t from"../heuristics/outline.js";import n from"../heuristics/sizeRange.js";import{createVisualVariables as o}from"./size.js";import{createColors as l,createSymbol as p,getSymbolOutlineFromScheme as m,verifyBasicFieldValidity as u,getBasemapInfo as d}from"./support/utils.js";import c from"../statistics/predominantCategories.js";import{getSumOfAttributesExpr as b}from"../statistics/support/utils.js";import{getFieldsList as h}from"../support/utils.js";import{LayerType as y,createLayerAdapter as f,getLayerTypeLabels as g}from"../support/adapters/support/layerUtils.js";import{cloneScheme as z,getSchemes as v}from"../symbology/pieChart.js";import w from"../../symbols/SimpleLineSymbol.js";async function E(e){if(!(e&&e.layer&&e.view&&e.attributes?.length))throw new r("pie-chart-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>10)throw new r("pie-chart-renderer:invalid-parameters","PieChart renderer does not support more than 10 attributes");const a={...e};a.shape=a.shape||"pie",a.othersCategoryEnabled=null==a.othersCategoryEnabled||a.othersCategoryEnabled,a.includeSizeVariable=e.includeSizeVariable||!1;const s=[y.CSVLayer,y.FeatureLayer,y.OGCFeatureLayer,y.GeoJSONLayer,y.WFSLayer],t=f(a.layer,s);if(a.layer=t,!t)throw new r("pie-chart-renderer:invalid-parameters","'layer' must be one of these types: "+g(s).join(", "));const n=i(a.signal)?{signal:a.signal}:null;await Promise.all([a.view.when(),t.load(n)]);const o=t.geometryType,l="polygon"===o,p="point"===o||"multipoint"===o||l;if(a.outlineOptimizationEnabled=!!l&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=!!p&&a.sizeOptimizationEnabled,!p)throw new r("pie-chart-renderer:not-supported","PieChart renderer is only supported for point and polygon layers");const m=[],d=a.attributes;for(const r of d){const e=await h({field:r.field,valueExpression:r.valueExpression});m.push(...e)}const c=u(t,m.filter(Boolean),"pie-chart-renderer:invalid-parameters");if(c)throw c;return a}async function j(e){let r=e.pieChartScheme,a=null,s=null;const t=await d(e.basemap,e.view);if(a=i(t.basemapId)?t.basemapId:null,s=i(t.basemapTheme)?t.basemapTheme:null,r)return{scheme:z(r),basemapId:a,basemapTheme:s};const n=v({basemap:a,numColors:e.attributes.length,geometryType:e.layer.geometryType,basemapTheme:s});return n&&(r=n.primaryScheme,a=n.basemapId,s=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:s}}async function S(e,r){const{valueExpression:i,sqlExpression:a,sqlWhere:t}=b(e.attributes),n=await s("esri/smartMapping/t9n/smartMapping");return o({layer:e.layer,basemap:e.basemap,valueExpression:i,sqlExpression:a,sqlWhere:t,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,legendOptions:{title:n.sumOfCategories},view:e.view,signal:e.signal})}async function C(i){const s=await E(i),o=await j(s),u=o?.scheme;if(!u)throw new r("pie-chart-renderer:insufficient-info","Unable to find pie-chart scheme");const d=s.layer,{includeSizeVariable:b,sizeOptimizationEnabled:h,outlineOptimizationEnabled:y,view:f,signal:g}=s,v=u.sizeScheme,C=s.attributes,V=C.map((e=>e.field)),[O,T,x,I]=await Promise.all([V.length>1?c({layer:d,fields:V,view:f,signal:g}):null,b?S(s,v):null,!b&&h?n({layer:d,view:f,signal:g}):null,y?t({layer:d,view:f,signal:g}):null]),R=O&&O.predominantCategoryInfos?{uniqueValueInfos:O.predominantCategoryInfos}:{uniqueValueInfos:V.map((e=>({value:e,count:0})))},q=l(u.colors,C.length),L=C.map(((e,r)=>({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:q[r]}))),P=d.geometryType,F="background"in v&&v.background,U=new e({attributes:L,othersCategory:{color:s.othersCategoryEnabled?u.colorForOthersCategory:null,threshold:.04},holePercentage:"donut"===s.shape?.45:0,backgroundFillSymbol:F?p(P,{type:"2d",color:F.color,outline:m(F,P,I?.opacity)}):null,size:a(u.size),outline:new w(m(u,"point",I?.opacity)),legendOptions:s.legendOptions});if(T&&(h||T.visualVariables.forEach((e=>{"number"==typeof e.minSize&&"number"==typeof e.maxSize&&(e.minSize*=2.5,e.maxSize*=1.8)})),h&&"point"===P&&T.visualVariables.forEach((e=>{e?.minSize&&"object"==typeof e.minSize&&e.minSize?.stops.forEach((e=>{e.size*=1.8}))})),U.authoringInfo=T.authoringInfo.clone(),U.visualVariables=T.visualVariables?.map((e=>e.clone()))),I?.visualVariables?.length){const e=I.visualVariables.map((e=>e.clone()));U.visualVariables?U.visualVariables.push(...e):U.visualVariables=e}return x?.minSize&&("point"===P&&x.minSize.stops.forEach((e=>{e.size*=2.5})),"polygon"===P&&x.minSize.stops.forEach((e=>{e.size*=1.8})),U.visualVariables?U.visualVariables.push(x.minSize):U.visualVariables=[x.minSize]),{renderer:U,pieChartScheme:z(u),size:T,basemapId:o.basemapId,basemapTheme:o.basemapTheme,statistics:R}}export{C as createRenderer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- const e="20220607",f="d70e0fb3837987b8a498fbcad96f0c3949fee255";export{e as buildDate,f as commitHash};
5
+ const c="20220608",d="e855bc7bc2ecd376c8cc2dd23fd994d3bda0bc6f";export{c as buildDate,d as commitHash};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import{clone as t}from"../../core/lang.js";import i from"../../core/Logger.js";import{isSome as o}from"../../core/maybe.js";import{pt2px as r,px2pt as n}from"../../core/screenUtils.js";import{numericHash as l}from"../../core/string.js";import{createRendererExpression as a,ArcadeExpression as s}from"../../support/arcadeOnDemand.js";import{CIMSymbolHelper as c,OverrideHelper as f}from"./CIMSymbolHelper.js";import{CapType as m,JoinType as p,Alignment as u}from"./enums.js";import{getExtent as y,getSDFMetrics as h}from"./SDFHelper.js";import{fromCIMColor as g,getValue as d,_adjustTextCase as S,createLabelOverrideFunction as v,evaluateValueOrFunction as N,isGeometryEngineRequired as b,importGeometryEngine as O}from"./utils.js";import{CIMEffectHelper as C}from"./effects/CIMEffectHelper.js";import k from"../../views/2d/arcade/callExpressionWithFeature.js";import{RANDOM_INSIDE_POLYGON_TEXTURE_SIZE as P}from"../../views/2d/engine/webgl/definitions.js";import{getFontFamily as M}from"../../views/2d/engine/webgl/fontUtils.js";import{getMaterialGroup as I}from"../../views/2d/engine/webgl/grouping.js";const w=i.getLogger("esri.symbols.cim.cimAnalyzer");function L(e){switch(e){case"Butt":return m.BUTT;case"Square":return m.SQUARE;default:return m.ROUND}}function X(e){switch(e){case"Bevel":return p.BEVEL;case"Miter":return p.MITER;default:return p.ROUND}}function z(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return w.warnOnce("Horizontal alignment 'justify' is not implemented. Falling back to 'center'."),"center"}}function A(e){switch(e){case"Top":default:return"top";case"Center":return"middle";case"Baseline":return"baseline";case"Bottom":return"bottom"}}function R(e){let t="",i="";if(e){const o=e.toLowerCase();o.includes("italic")?t="italic":o.includes("oblique")&&(t="oblique"),o.includes("bold")?i="bold":o.includes("light")&&(i="lighter")}return{style:t,weight:i}}function J(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function x(e,t,i,o){let r;e[t]?r=e[t]:(r={},e[t]=r),r[i]=o}function H(e){const t=e.markerPlacement;return t&&t.angleToLine?u.MAP:u.SCREEN}async function Y(e,t,i,o,r){const n=o??[];if(!e)return n;let l,s;const c={};if("CIMSymbolReference"!==e.type)return w.error("Expect cim type to be 'CIMSymbolReference'"),n;if(l=e.symbol,s=e.primitiveOverrides,s){const e=[];for(const i of s){const o=i.valueExpressionInfo;if(o&&t){const r=o.expression,n=a(r,t.spatialReference,t.fields).then((e=>{e&&x(c,i.primitiveName,i.propertyName,e)}));e.push(n)}else null!=i.value&&x(c,i.primitiveName,i.propertyName,i.value)}e.length>0&&await Promise.all(e)}const f=[];switch(fe(l,i,f),f.length>0&&await Promise.all(f),l.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":$(l,s,c,t,n,i,r)}return n}function $(e,t,i,o,r,n,l){if(!e)return;const a=e.symbolLayers;if(!a)return;const s=e.effects;let m;const p=c.getSize(e);"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(m=u.MAP);let y=a.length;for(;y--;){const c=a[y];if(!c||!1===c.enable)continue;let u;s&&s.length&&(u=[...s]);const h=c.effects;h&&h.length&&(s?u.push(...h):u=[...h]);const g=[];let d;f.findEffectOverrides(u,t,g),d=g.length>0?re(u,g,i,o):u;const S=[];switch(f.findApplicableOverrides(c,t,S),c.type){case"CIMSolidFill":E(c,d,i,S,o,r);break;case"CIMPictureFill":T(c,d,i,S,o,n,r);break;case"CIMHatchFill":j(c,d,i,S,o,r);break;case"CIMGradientFill":F(c,d,i,S,o,r);break;case"CIMSolidStroke":W(c,d,i,S,o,r,"CIMPolygonSymbol"===e.type,p);break;case"CIMPictureStroke":D(c,d,i,S,o,r,"CIMPolygonSymbol"===e.type,p);break;case"CIMGradientStroke":U(c,d,i,S,o,r,"CIMPolygonSymbol"===e.type,p);break;case"CIMCharacterMarker":if(G(c,d,i,S,o,r))break;break;case"CIMPictureMarker":if(G(c,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=H(c)),B(c,d,i,S,o,n,r,m,p);break;case"CIMVectorMarker":if(G(c,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(m=H(c)),q(c,d,i,S,o,r,n,m,p,l);break;default:w.error("Cannot analyze CIM layer",c.type)}}}function E(e,t,i,o,r,n){const a=e.primitiveName,s=g(e.color),[c,f]=ce(o,a,t,null,null),m=l(JSON.stringify(e)+f).toString();n.push({type:"fill",templateHash:m,materialHash:c?()=>m:m,cim:e,materialOverrides:null,colorLocked:e.colorLocked,color:ie(a,i,"Color",r,s,te),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0})}function T(e,t,i,r,n,a,s){const c=e.primitiveName,f=e.tintColor?g(e.tintColor):{r:255,g:255,b:255,a:1},[m,p]=ce(r,c,t,null,null),u=l(JSON.stringify(e)+p).toString(),y=l(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString();let h=d(e.scaleX);if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),h/=i*(e.height/t)}s.push({type:"fill",templateHash:u,materialHash:m?()=>y:y,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:ie(c,i,"TintColor",n,f,te),height:ie(c,i,"Height",n,e.height),scaleX:ie(c,i,"ScaleX",n,h),angle:ie(c,i,"Rotation",n,d(e.rotation)),offsetX:ie(c,i,"OffsetX",n,d(e.offsetX)),offsetY:ie(c,i,"OffsetY",n,d(e.offsetY)),url:e.url,applyRandomOffset:!1,sampleAlphaOnly:!1})}function j(e,t,i,o,r,n){const a=["Rotation","OffsetX","OffsetY"],s=o.filter((t=>t.primitiveName!==e.primitiveName&&!a.includes(t.propertyName))),c=e.primitiveName,[f,m]=ce(o,c,t,null,null),p=l(JSON.stringify(e)+m).toString(),u=l(`${e.separation}${JSON.stringify(e.lineSymbol)}`).toString();let y={r:255,g:255,b:255,a:1};if(e.lineSymbol){const t=e.lineSymbol?.symbolLayers.find((e=>"CIMSolidStroke"===e.type));t&&(y=g(t.color))}n.push({type:"fill",templateHash:p,materialHash:f?ae(u,i,s,r):u,cim:e,materialOverrides:s,colorLocked:e.colorLocked,effects:t,color:y,height:ie(c,i,"Separation",r,e.separation),scaleX:1,angle:ie(c,i,"Rotation",r,d(e.rotation)),offsetX:ie(c,i,"OffsetX",r,d(e.offsetX)),offsetY:ie(c,i,"OffsetY",r,d(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0})}function F(e,t,i,o,r,n){const a=e.primitiveName,[s,c]=ce(o,a,t,null,null),f=l(JSON.stringify(e)+c).toString();n.push({type:"fill",templateHash:f,materialHash:s?ae(f,i,o,r):f,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,applyRandomOffset:!1,sampleAlphaOnly:!1})}function W(e,t,i,o,r,n,a,s){const c=e.primitiveName,f=g(e.color),m=void 0!==e.width?e.width:4,p=L(e.capStyle),u=X(e.joinStyle),y=e.miterLimit,[h,d]=ce(o,c,t,null,null),S=l(JSON.stringify(e)+d).toString();let v,N;if(t&&t instanceof Array&&t.length>0){const e=t[t.length-1];if("CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&null===e.offsetAlongLine){const e=(t=[...t]).pop();v=e.dashTemplate,N=e.scaleDash}}n.push({type:"line",templateHash:S,materialHash:h?()=>S:S,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:ie(c,i,"Color",r,f,te),width:ie(c,i,"Width",r,m),cap:ie(c,i,"CapStyle",r,p),join:ie(c,i,"JoinStyle",r,u),miterLimit:ie(c,i,"MiterLimit",r,y),referenceWidth:s,zOrder:ee(e.name),dashTemplate:v,scaleDash:N,sampleAlphaOnly:!0})}function D(e,t,i,o,r,n,a,s){const c=l(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),f=e.primitiveName,m=g(e.tintColor),p=void 0!==e.width?e.width:4,u=L(e.capStyle),y=X(e.joinStyle),h=e.miterLimit,[d,S]=ce(o,f,t,null,null),v=l(JSON.stringify(e)+S).toString();n.push({type:"line",templateHash:v,materialHash:d?()=>c:c,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:ie(f,i,"TintColor",r,m,te),width:ie(f,i,"Width",r,p),cap:ie(f,i,"CapStyle",r,u),join:ie(f,i,"JoinStyle",r,y),miterLimit:ie(f,i,"MiterLimit",r,h),referenceWidth:s,zOrder:ee(e.name),dashTemplate:null,scaleDash:!1,url:e.url,sampleAlphaOnly:!1})}function U(e,t,i,o,r,n,a,s){const c=e.primitiveName,f=void 0!==e.width?e.width:4,m=L(e.capStyle),p=X(e.joinStyle),u=e.miterLimit,[y,h]=ce(o,c,t,null,null),g=l(JSON.stringify(e)+h).toString();n.push({type:"line",templateHash:g,materialHash:y?ae(g,i,o,r):g,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},width:ie(c,i,"Width",r,f),cap:ie(c,i,"CapStyle",r,m),join:ie(c,i,"JoinStyle",r,p),miterLimit:ie(c,i,"MiterLimit",r,u),referenceWidth:s,zOrder:ee(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1})}function G(e,t,i,o,r,a){const s=e.markerPlacement;if(!s||"CIMMarkerPlacementInsidePolygon"!==s.type)return!1;const c=s,f=Math.abs(c.stepX),m=Math.abs(c.stepY);if(0===f||0===m)return!0;const p=["Rotation","OffsetX","OffsetY"],u=o.filter((t=>t.primitiveName!==e.primitiveName&&!p.includes(t.propertyName))),y="url"in e?e.url:null,[h,S]=ce(o,c.primitiveName,t,null,null),v=l(JSON.stringify(e)+S).toString();let N,b,O=null;if("Random"===s.gridType){const e=n(P),t=Math.max(Math.floor(e/f),1),i=Math.max(Math.floor(e/m),1);N=m*i,O=e=>e?e*i:0;b=t*f/N}else s.shiftOddRows?(N=2*m,O=e=>e?2*e:0,b=f/m*.5):(N=m,O=null,b=f/m);let C={r:255,g:255,b:255,a:1};return"tintColor"in e&&(C=g(e.tintColor)),a.push({type:"fill",templateHash:v,materialHash:h?ae(v,i,u,r):v,cim:e,materialOverrides:u,colorLocked:e.colorLocked,effects:t,color:ie(c.primitiveName,i,"TintColor",r,C,te),height:ie(c.primitiveName,i,"StepY",r,N,O),scaleX:b,angle:ie(c.primitiveName,i,"GridAngle",r,c.gridAngle),offsetX:ie(c.primitiveName,i,"OffsetX",r,d(c.offsetX)),offsetY:ie(c.primitiveName,i,"OffsetY",r,d(c.offsetY)),url:y,applyRandomOffset:"Random"===s.gridType,sampleAlphaOnly:!y}),!0}function B(e,t,i,r,n,a,s,c,f){const m=e.primitiveName,p=d(e.size);let u=d(e.scaleX);const y=d(e.rotation),h=d(e.offsetX),S=d(e.offsetY),v=e.tintColor?g(e.tintColor):{r:255,g:255,b:255,a:1},b=l(`${e.url}${JSON.stringify(e.colorSubstitutions)}${JSON.stringify(e.animatedSymbolProperties)}`).toString(),O=ne(e.markerPlacement,r,i,n),C=le(e.animatedSymbolProperties,r,i,n),[k,P]=ce(r,m,t,O,C),M=l(JSON.stringify(e)+P).toString(),w=e.anchorPoint??{x:0,y:0};if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),u/=i*(p/t)}function L(e,t){return N(C,e,t)}const X=e.animatedSymbolProperties&&!0===e.animatedSymbolProperties.randomizeStartTime?(e,t,i,o)=>{const r=I(o),n=L(e,t);return b+`-MATERIALGROUP(${r})`+`-ASP(${JSON.stringify(n)})`}:k?(e,t)=>{const i=L(e,t);return b+`-ASP(${JSON.stringify(i)})`}:b;s.push({type:"marker",templateHash:M,materialHash:X,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:!1,alignment:c,size:ie(m,i,"Size",n,p),scaleX:ie(m,i,"ScaleX",n,u),rotation:ie(m,i,"Rotation",n,y),offsetX:ie(m,i,"OffsetX",n,h),offsetY:ie(m,i,"OffsetY",n,S),color:ie(m,i,"TintColor",n,v,te),anchorPoint:{x:w.x,y:-w.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,frameHeight:0,rotateClockwise:e.rotateClockwise,referenceSize:f,sizeRatio:1,markerPlacement:O,url:e.url,animatedSymbolProperties:C})}function q(e,t,i,o,r,n,l,a,s,c){const f=e.markerGraphics;if(!f)return;let m=0;if(e.scaleSymbolsProportionally){const t=e.frame;t&&(m=t.ymax-t.ymin)}const p=ne(e.markerPlacement,o,i,r);for(const u of f)if(u){const f=u.symbol;if(!f)continue;switch(f.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":K(e,t,p,null,u,o,i,r,n,l,a,s,m,c);break;case"CIMTextSymbol":V(e,t,p,u,i,o,r,n,a,s,m)}}}function V(e,t,i,o,r,n,a,s,m,p,u){const y=[];f.findApplicableOverrides(o,n,y);const h=o.geometry;if(!("x"in h)||!("y"in h))return;const b=o.symbol,O=J(b),C=R(b.fontStyleName),k=M(b.fontFamilyName);b.font={family:k,decoration:O,...C};const P=e.frame,I=h.x-.5*(P.xmin+P.xmax),w=h.y-.5*(P.ymin+P.ymax),L=e.size/u,X=e.primitiveName,x=d(b.height)*L,H=d(b.angle),Y=d(e.offsetX)+(d(b.offsetX)+I)*L,$=d(e.offsetY)+(d(b.offsetY)+w)*L,E=g(c.getFillColor(b));let T=g(c.getStrokeColor(b)),j=c.getStrokeWidth(b);j||(T=g(c.getFillColor(b.haloSymbol)),j=b.haloSize*L);const[F,W]=ce(n,X,t,i,null),D=JSON.stringify(e.effects)+Number(e.colorLocked)+JSON.stringify(e.anchorPoint)+e.anchorPointUnits+JSON.stringify(e.markerPlacement),U=l(JSON.stringify(o)+D+W).toString();let G=ie(o.primitiveName,r,"TextString",a,o.textString,S,b.textCase);if(null==G)return;const{fontStyleName:B}=b,q=k+(B?"-"+B.toLowerCase():"-regular"),V=q;"string"==typeof G&&G.includes("[")&&b.fieldMap&&(G=v(b.fieldMap,G,b.textCase)),s.push({type:"text",templateHash:U,materialHash:F||"function"==typeof G||G.match(/\[(.*?)\]/)?(e,t,i)=>V+"-"+N(G,e,t,i):V+"-"+l(G),cim:b,materialOverrides:null,colorLocked:e.colorLocked,effects:t,alignment:m,anchorPoint:{x:e.anchorPoint?e.anchorPoint.x:0,y:e.anchorPoint?e.anchorPoint.y:0},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,fontName:q,decoration:O,weight:ie(X,r,"Weight",a,C.weight),style:ie(X,r,"Size",a,C.style),size:ie(X,r,"Size",a,x),angle:ie(X,r,"Rotation",a,H),offsetX:ie(X,r,"OffsetX",a,Y),offsetY:ie(X,r,"OffsetY",a,$),horizontalAlignment:z(b.horizontalAlignment),verticalAlignment:A(b.verticalAlignment),text:G,color:E,outlineColor:T,outlineSize:j,referenceSize:p,sizeRatio:1,markerPlacement:i})}function K(e,t,i,r,n,a,s,f,m,p,u,S,v,N){const b=n.symbol,O=b.symbolLayers;if(!O)return;if(N)return void _(e,t,i,r,n,s,a,f,m,p,u,S,v);let k=O.length;if(me(O))return void Q(e,t,i,r,n,O,a,s,f,m,u,S,v);const P=C.applyEffects(b.effects,n.geometry,p.geometryEngine);if(P)for(;k--;){const N=O[k];if(N&&!1!==N.enable)switch(N.type){case"CIMSolidFill":case"CIMSolidStroke":{const b=C.applyEffects(N.effects,P,p.geometryEngine),O=y(b);if(!O)continue;const[k,M,I]=h(O,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),w="CIMSolidFill"===N.type,L={type:"sdf",geom:b,asFill:w},X=e.primitiveName,z=d(e.size)??10,A=d(e.rotation),R=d(e.offsetX),J=d(e.offsetY),x=N.path,H=N.primitiveName,Y=g(w?c.getFillColor(N):c.getStrokeColor(N)),$=w?{r:0,g:0,b:0,a:0}:g(c.getStrokeColor(N)),E=c.getStrokeWidth(N);if(!w&&!E)break;let T=!1,j="";for(const e of a)e.primitiveName!==H&&e.primitiveName!==X||(void 0!==e.value?j+=`-${e.primitiveName}-${e.propertyName}-${JSON.stringify(e.value)}`:e.valueExpressionInfo&&(T=!0));o(t)&&"function"==typeof t&&(T=!0);const F=JSON.stringify({...e,markerGraphics:null}),W=l(JSON.stringify(L)+x).toString(),D={type:"marker",templateHash:l(JSON.stringify(n)+JSON.stringify(N)+F+j).toString(),materialHash:T?()=>W:W,cim:L,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:u,anchorPoint:{x:M,y:I},isAbsoluteAnchorPoint:!1,size:ie(e.primitiveName,s,"Size",f,z),rotation:ie(e.primitiveName,s,"Rotation",f,A),offsetX:ie(e.primitiveName,s,"OffsetX",f,R),offsetY:ie(e.primitiveName,s,"OffsetY",f,J),scaleX:1,frameHeight:v,rotateClockwise:e.rotateClockwise,referenceSize:S,sizeRatio:k,color:ie(H,s,"Color",f,Y,te),outlineColor:ie(H,s,"Color",f,$,te),outlineWidth:ie(H,s,"Width",f,E),markerPlacement:i,animatedSymbolProperties:r,path:x};m.push(D);break}default:_(e,t,i,r,n,s,a,f,m,p,u,S,v)}}}function Q(e,t,i,o,r,n,a,s,f,m,p,u,S){const v=r.geometry,N=n[0],b=n[1],O=y(v);if(!O)return;const[C,k,P]=h(O,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),M={type:"sdf",geom:v,asFill:!0},I=e.primitiveName,w=d(e.size),L=d(e.rotation),X=d(e.offsetX),z=d(e.offsetY),A=b.path,R=b.primitiveName,J=N.primitiveName,x=g(c.getFillColor(b)),H=g(c.getStrokeColor(N)),Y=c.getStrokeWidth(N);let $=!1,E="";for(const l of a)l.primitiveName!==R&&l.primitiveName!==J&&l.primitiveName!==I||(void 0!==l.value?E+=`-${l.primitiveName}-${l.propertyName}-${JSON.stringify(l.value)}`:l.valueExpressionInfo&&($=!0));const T=JSON.stringify({...e,markerGraphics:null}),j=l(JSON.stringify(M)+A).toString(),F={type:"marker",templateHash:l(JSON.stringify(r)+JSON.stringify(b)+JSON.stringify(N)+T+E).toString(),materialHash:$?()=>j:j,cim:M,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:p,anchorPoint:{x:k,y:P},isAbsoluteAnchorPoint:!1,size:ie(e.primitiveName,s,"Size",f,w),rotation:ie(e.primitiveName,s,"Rotation",f,L),offsetX:ie(e.primitiveName,s,"OffsetX",f,X),offsetY:ie(e.primitiveName,s,"OffsetY",f,z),scaleX:1,frameHeight:S,rotateClockwise:e.rotateClockwise,referenceSize:u,sizeRatio:C,color:ie(R,s,"Color",f,x,te),outlineColor:ie(J,s,"Color",f,H,te),outlineWidth:ie(J,s,"Width",f,Y),markerPlacement:i,path:A,animatedSymbolProperties:o};m.push(F)}function _(e,t,i,n,a,s,f,m,p,u,y,h,g){const S=Z(e,a);let v=[];const N=["Rotation","OffsetX","OffsetY"];v=f.filter((t=>t.primitiveName!==e.primitiveName||!N.includes(t.propertyName)));let b="";for(const o of f)void 0!==o.value&&(b+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`);const[O,C,k]=c.getTextureAnchor(S,u),P=e.primitiveName,M=d(e.rotation),I=d(e.offsetX),w=d(e.offsetY),L=l(JSON.stringify(S)+b).toString(),X={type:"marker",templateHash:L,materialHash:v.length>0||o(t)&&"function"==typeof t?ae(L,s,v,m):L,cim:S,materialOverrides:v,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:y,anchorPoint:{x:O,y:C},isAbsoluteAnchorPoint:!1,size:e.size,rotation:ie(P,s,"Rotation",m,M),offsetX:ie(P,s,"OffsetX",m,I),offsetY:ie(P,s,"OffsetY",m,w),color:{r:255,g:255,b:255,a:1},outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,scaleX:1,frameHeight:g,rotateClockwise:e.rotateClockwise,referenceSize:h,sizeRatio:k/r(e.size),markerPlacement:i,animatedSymbolProperties:n};p.push(X)}function Z(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function ee(e){if(e&&0===e.indexOf("Level_")){const t=parseInt(e.substr(6),10);if(!isNaN(t))return t}return 0}function te(t){if(!t||0===t.length)return null;const i=new e(t).toRgba();return{r:i[0],g:i[1],b:i[2],a:i[3]}}function ie(e,t,i,o,r,n,l){const a=t[e];if(a){const e=a[i];if("string"==typeof e||"number"==typeof e||e instanceof Array)return n?n.call(null,e,l):e;if(null!=e&&e instanceof s)return(t,i,a)=>{let s=k(e,t,{$view:a},o.geometryType,i);return null!==s&&n&&(s=n.call(null,s,l)),null!==s?s:r}}return r}function oe(e){return e?e.charAt(0).toLowerCase()+e.substr(1):e}function re(e,i,o,r){for(const t of i){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof s&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}return(o,r,n)=>{for(const e of i)e.fn&&(e.value=e.fn(o,r,n));const l=[];for(let a of e){const e=a?.primitiveName;if(e){let o=!1;for(const r of i)if(r.primitiveName===e){const e=oe(r.propertyName);null!=r.value&&r.value!==a[e]&&(o||(a=t(a),o=!0),a[e]=r.value)}}l.push(a)}return l}}function ne(e,i,o,r){const n=[];if(f.findApplicableOverrides(e,i,n),0===n.length)return e;for(const t of n){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof s&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}return(i,o,r)=>{for(const e of n)e.fn&&(e.value=e.fn(i,o,r));const l=t(e),a=e.primitiveName;for(const e of n)if(e.primitiveName===a){const t=oe(e.propertyName);null!=e.value&&e.value!==l[t]&&(l[t]=e.value)}return l}}function le(e,i,o,r){const n=[];if(f.findApplicableOverrides(e,i,n),0===n.length)return e;for(const t of n){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof s&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}return(i,o,r)=>{for(const e of n)e.fn&&(e.value=e.fn(i,o,r));const l=t(e),a=e.primitiveName;for(const e of n)if(e.primitiveName===a){const t=oe(e.propertyName);null!=e.value&&e.value!==l[t]&&(l[t]=e.value)}return l}}function ae(e,t,i,o){for(const r of i){if(r.valueExpressionInfo){const e=t[r.primitiveName]&&t[r.primitiveName][r.propertyName];e instanceof s&&(r.fn=(t,i,r)=>k(e,t,{$view:r},o.geometryType,i))}}return(t,o,r)=>{for(const e of i)e.fn&&(e.value=e.fn(t,o,r));return l(e+f.buildOverrideKey(i)).toString()}}function se(e,t){if(!t||0===t.length)return e;const i=JSON.parse(JSON.stringify(e));return f.applyOverrides(i,t),i}function ce(e,t,i,r,n){let l=!1,a="";for(const o of e)o.primitiveName===t&&(void 0!==o.value?a+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`:o.valueExpressionInfo&&(l=!0));return o(i)&&"function"==typeof i&&(l=!0),o(r)&&"function"==typeof r&&(l=!0),o(n)&&"function"==typeof n&&(l=!0),[l,a]}function fe(e,t,i){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const o=e.symbolLayers;if(!o)return;for(const e of o)switch(ue(e,t,i),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&i.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)continue;for(const e of o)if(e){const o=e.symbol;o&&fe(o,t,i)}}}}}}const me=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&!e[0].effects&&!e[1].effects;let pe;function ue(e,t,i){if(!e.effects||o(t.geometryEngine))return;if(pe)return void i.push(pe);b(e.effects)&&(pe=O(),i.push(pe),pe.then((e=>t.geometryEngine=e)))}export{se as analyzeCIMResource,Y as analyzeCIMSymbol};
5
+ import e from"../../Color.js";import{clone as t}from"../../core/lang.js";import i from"../../core/Logger.js";import{isSome as o}from"../../core/maybe.js";import{pt2px as r,px2pt as n}from"../../core/screenUtils.js";import{numericHash as l}from"../../core/string.js";import{createRendererExpression as a,ArcadeExpression as s}from"../../support/arcadeOnDemand.js";import{CIMSymbolHelper as c,OverrideHelper as f}from"./CIMSymbolHelper.js";import{Alignment as m,CapType as p,JoinType as u}from"./enums.js";import{getExtent as y,getSDFMetrics as h}from"./SDFHelper.js";import{fromCIMColor as g,getValue as d,_adjustTextCase as S,createLabelOverrideFunction as v,evaluateValueOrFunction as N,isGeometryEngineRequired as b,importGeometryEngine as O}from"./utils.js";import{CIMEffectHelper as C}from"./effects/CIMEffectHelper.js";import k from"../../views/2d/arcade/callExpressionWithFeature.js";import{RANDOM_INSIDE_POLYGON_TEXTURE_SIZE as P}from"../../views/2d/engine/webgl/definitions.js";import{getFontFamily as M}from"../../views/2d/engine/webgl/fontUtils.js";import{getMaterialGroup as I}from"../../views/2d/engine/webgl/grouping.js";const w=i.getLogger("esri.symbols.cim.cimAnalyzer");function L(e){switch(e){case"Butt":return p.BUTT;case"Square":return p.SQUARE;default:return p.ROUND}}function X(e){switch(e){case"Bevel":return u.BEVEL;case"Miter":return u.MITER;default:return u.ROUND}}function z(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return w.warnOnce("Horizontal alignment 'justify' is not implemented. Falling back to 'center'."),"center"}}function A(e){switch(e){case"Top":default:return"top";case"Center":return"middle";case"Baseline":return"baseline";case"Bottom":return"bottom"}}function R(e){let t="",i="";if(e){const o=e.toLowerCase();o.includes("italic")?t="italic":o.includes("oblique")&&(t="oblique"),o.includes("bold")?i="bold":o.includes("light")&&(i="lighter")}return{style:t,weight:i}}function J(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function x(e,t,i,o){let r;e[t]?r=e[t]:(r={},e[t]=r),r[i]=o}function H(e){const t=e.markerPlacement;return t&&t.angleToLine?m.MAP:m.SCREEN}async function Y(e,t,i,o,r){const n=o??[];if(!e)return n;let l,s;const c={};if("CIMSymbolReference"!==e.type)return w.error("Expect cim type to be 'CIMSymbolReference'"),n;if(l=e.symbol,s=e.primitiveOverrides,s){const e=[];for(const i of s){const o=i.valueExpressionInfo;if(o&&t){const r=o.expression,n=a(r,t.spatialReference,t.fields).then((e=>{e&&x(c,i.primitiveName,i.propertyName,e)}));e.push(n)}else null!=i.value&&x(c,i.primitiveName,i.propertyName,i.value)}e.length>0&&await Promise.all(e)}const f=[];switch(fe(l,i,f),f.length>0&&await Promise.all(f),l.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":$(l,s,c,t,n,i,r)}return n}function $(e,t,i,o,r,n,l){if(!e)return;const a=e.symbolLayers;if(!a)return;const s=e.effects;let p;const u=c.getSize(e);"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(p=m.MAP);let y=a.length;for(;y--;){const c=a[y];if(!c||!1===c.enable)continue;let m;s&&s.length&&(m=[...s]);const h=c.effects;h&&h.length&&(s?m.push(...h):m=[...h]);const g=[];let d;f.findEffectOverrides(m,t,g),d=g.length>0?re(m,g,i,o):m;const S=[];switch(f.findApplicableOverrides(c,t,S),c.type){case"CIMSolidFill":E(c,d,i,S,o,r);break;case"CIMPictureFill":T(c,d,i,S,o,n,r);break;case"CIMHatchFill":j(c,d,i,S,o,r);break;case"CIMGradientFill":F(c,d,i,S,o,r);break;case"CIMSolidStroke":W(c,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMPictureStroke":D(c,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMGradientStroke":U(c,d,i,S,o,r,"CIMPolygonSymbol"===e.type,u);break;case"CIMCharacterMarker":if(G(c,d,i,S,o,r))break;break;case"CIMPictureMarker":if(G(c,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(p=H(c)),B(c,d,i,S,o,n,r,p,u);break;case"CIMVectorMarker":if(G(c,d,i,S,o,r))break;"CIMLineSymbol"===e.type&&(p=H(c)),q(c,d,i,S,o,r,n,p,u,l);break;default:w.error("Cannot analyze CIM layer",c.type)}}}function E(e,t,i,o,r,n){const a=e.primitiveName,s=g(e.color),[c,f]=ce(o,a,t,null,null),m=l(JSON.stringify(e)+f).toString();n.push({type:"fill",templateHash:m,materialHash:c?()=>m:m,cim:e,materialOverrides:null,colorLocked:e.colorLocked,color:ie(a,i,"Color",r,s,te),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0})}function T(e,t,i,r,n,a,s){const c=e.primitiveName,f=e.tintColor?g(e.tintColor):{r:255,g:255,b:255,a:1},[m,p]=ce(r,c,t,null,null),u=l(JSON.stringify(e)+p).toString(),y=l(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString();let h=d(e.scaleX);if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),h/=i*(e.height/t)}s.push({type:"fill",templateHash:u,materialHash:m?()=>y:y,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:ie(c,i,"TintColor",n,f,te),height:ie(c,i,"Height",n,e.height),scaleX:ie(c,i,"ScaleX",n,h),angle:ie(c,i,"Rotation",n,d(e.rotation)),offsetX:ie(c,i,"OffsetX",n,d(e.offsetX)),offsetY:ie(c,i,"OffsetY",n,d(e.offsetY)),url:e.url,applyRandomOffset:!1,sampleAlphaOnly:!1})}function j(e,t,i,o,r,n){const a=["Rotation","OffsetX","OffsetY"],s=o.filter((t=>t.primitiveName!==e.primitiveName&&!a.includes(t.propertyName))),c=e.primitiveName,[f,m]=ce(o,c,t,null,null),p=l(JSON.stringify(e)+m).toString(),u=l(`${e.separation}${JSON.stringify(e.lineSymbol)}`).toString();let y={r:255,g:255,b:255,a:1};if(e.lineSymbol){const t=e.lineSymbol?.symbolLayers.find((e=>"CIMSolidStroke"===e.type));t&&(y=g(t.color))}n.push({type:"fill",templateHash:p,materialHash:f?ae(u,i,s,r):u,cim:e,materialOverrides:s,colorLocked:e.colorLocked,effects:t,color:y,height:ie(c,i,"Separation",r,e.separation),scaleX:1,angle:ie(c,i,"Rotation",r,d(e.rotation)),offsetX:ie(c,i,"OffsetX",r,d(e.offsetX)),offsetY:ie(c,i,"OffsetY",r,d(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0})}function F(e,t,i,o,r,n){const a=e.primitiveName,[s,c]=ce(o,a,t,null,null),f=l(JSON.stringify(e)+c).toString();n.push({type:"fill",templateHash:f,materialHash:s?ae(f,i,o,r):f,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,applyRandomOffset:!1,sampleAlphaOnly:!1})}function W(e,t,i,o,r,n,a,s){const c=e.primitiveName,f=g(e.color),m=void 0!==e.width?e.width:4,p=L(e.capStyle),u=X(e.joinStyle),y=e.miterLimit,[h,d]=ce(o,c,t,null,null),S=l(JSON.stringify(e)+d).toString();let v,N;if(t&&t instanceof Array&&t.length>0){const e=t[t.length-1];if("CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&null===e.offsetAlongLine){const e=(t=[...t]).pop();v=e.dashTemplate,N=e.scaleDash}}n.push({type:"line",templateHash:S,materialHash:h?()=>S:S,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:ie(c,i,"Color",r,f,te),width:ie(c,i,"Width",r,m),cap:ie(c,i,"CapStyle",r,p),join:ie(c,i,"JoinStyle",r,u),miterLimit:ie(c,i,"MiterLimit",r,y),referenceWidth:s,zOrder:ee(e.name),dashTemplate:v,scaleDash:N,sampleAlphaOnly:!0})}function D(e,t,i,o,r,n,a,s){const c=l(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),f=e.primitiveName,m=g(e.tintColor),p=void 0!==e.width?e.width:4,u=L(e.capStyle),y=X(e.joinStyle),h=e.miterLimit,[d,S]=ce(o,f,t,null,null),v=l(JSON.stringify(e)+S).toString();n.push({type:"line",templateHash:v,materialHash:d?()=>c:c,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:ie(f,i,"TintColor",r,m,te),width:ie(f,i,"Width",r,p),cap:ie(f,i,"CapStyle",r,u),join:ie(f,i,"JoinStyle",r,y),miterLimit:ie(f,i,"MiterLimit",r,h),referenceWidth:s,zOrder:ee(e.name),dashTemplate:null,scaleDash:!1,url:e.url,sampleAlphaOnly:!1})}function U(e,t,i,o,r,n,a,s){const c=e.primitiveName,f=void 0!==e.width?e.width:4,m=L(e.capStyle),p=X(e.joinStyle),u=e.miterLimit,[y,h]=ce(o,c,t,null,null),g=l(JSON.stringify(e)+h).toString();n.push({type:"line",templateHash:g,materialHash:y?ae(g,i,o,r):g,cim:e,materialOverrides:null,isOutline:a,colorLocked:e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},width:ie(c,i,"Width",r,f),cap:ie(c,i,"CapStyle",r,m),join:ie(c,i,"JoinStyle",r,p),miterLimit:ie(c,i,"MiterLimit",r,u),referenceWidth:s,zOrder:ee(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1})}function G(e,t,i,o,r,a){const s=e.markerPlacement;if(!s||"CIMMarkerPlacementInsidePolygon"!==s.type)return!1;const c=s,f=Math.abs(c.stepX),m=Math.abs(c.stepY);if(0===f||0===m)return!0;const p=["Rotation","OffsetX","OffsetY"],u=o.filter((t=>t.primitiveName!==e.primitiveName&&!p.includes(t.propertyName))),y="url"in e?e.url:null,[h,S]=ce(o,c.primitiveName,t,null,null),v=l(JSON.stringify(e)+S).toString();let N,b,O=null;if("Random"===s.gridType){const e=n(P),t=Math.max(Math.floor(e/f),1),i=Math.max(Math.floor(e/m),1);N=m*i,O=e=>e?e*i:0;b=t*f/N}else s.shiftOddRows?(N=2*m,O=e=>e?2*e:0,b=f/m*.5):(N=m,O=null,b=f/m);let C={r:255,g:255,b:255,a:1};return"tintColor"in e&&(C=g(e.tintColor)),a.push({type:"fill",templateHash:v,materialHash:h?ae(v,i,u,r):v,cim:e,materialOverrides:u,colorLocked:e.colorLocked,effects:t,color:ie(c.primitiveName,i,"TintColor",r,C,te),height:ie(c.primitiveName,i,"StepY",r,N,O),scaleX:b,angle:ie(c.primitiveName,i,"GridAngle",r,c.gridAngle),offsetX:ie(c.primitiveName,i,"OffsetX",r,d(c.offsetX)),offsetY:ie(c.primitiveName,i,"OffsetY",r,d(c.offsetY)),url:y,applyRandomOffset:"Random"===s.gridType,sampleAlphaOnly:!y}),!0}function B(e,t,i,r,n,a,s,c,f){const m=e.primitiveName,p=d(e.size);let u=d(e.scaleX);const y=d(e.rotation),h=d(e.offsetX),S=d(e.offsetY),v=e.tintColor?g(e.tintColor):{r:255,g:255,b:255,a:1},b=l(`${e.url}${JSON.stringify(e.colorSubstitutions)}${JSON.stringify(e.animatedSymbolProperties)}`).toString(),O=ne(e.markerPlacement,r,i,n),C=le(e.animatedSymbolProperties,r,i,n),[k,P]=ce(r,m,t,O,C),M=l(JSON.stringify(e)+P).toString(),w=e.anchorPoint??{x:0,y:0};if("width"in e){const t=e.width;let i=1;const r=a.getResource(e.url);o(r)&&(i=r.width/r.height),u/=i*(p/t)}function L(e,t){return N(C,e,t)}const X=e.animatedSymbolProperties&&!0===e.animatedSymbolProperties.randomizeStartTime?(e,t,i,o)=>{const r=I(o),n=L(e,t);return b+`-MATERIALGROUP(${r})`+`-ASP(${JSON.stringify(n)})`}:k?(e,t)=>{const i=L(e,t);return b+`-ASP(${JSON.stringify(i)})`}:b;s.push({type:"marker",templateHash:M,materialHash:X,cim:e,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:!1,alignment:c,size:ie(m,i,"Size",n,p),scaleX:ie(m,i,"ScaleX",n,u),rotation:ie(m,i,"Rotation",n,y),offsetX:ie(m,i,"OffsetX",n,h),offsetY:ie(m,i,"OffsetY",n,S),color:ie(m,i,"TintColor",n,v,te),anchorPoint:{x:w.x,y:-w.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,frameHeight:0,rotateClockwise:e.rotateClockwise,referenceSize:f,sizeRatio:1,markerPlacement:O,url:e.url,animatedSymbolProperties:C})}function q(e,t,i,o,r,n,l,a,s,c){const f=e.markerGraphics;if(!f)return;let m=0;if(e.scaleSymbolsProportionally){const t=e.frame;t&&(m=t.ymax-t.ymin)}const p=ne(e.markerPlacement,o,i,r);for(const u of f)if(u){const f=u.symbol;if(!f)continue;switch(f.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":K(e,t,p,null,u,o,i,r,n,l,a,s,m,c);break;case"CIMTextSymbol":V(e,t,p,u,i,o,r,n,a,s,m)}}}function V(e,t,i,o,r,n,a,s,m,p,u){const y=[];f.findApplicableOverrides(o,n,y);const h=o.geometry;if(!("x"in h)||!("y"in h))return;const b=o.symbol,O=J(b),C=R(b.fontStyleName),k=M(b.fontFamilyName);b.font={family:k,decoration:O,...C};const P=e.frame,I=h.x-.5*(P.xmin+P.xmax),w=h.y-.5*(P.ymin+P.ymax),L=e.size/u,X=e.primitiveName,x=d(b.height)*L,H=d(b.angle),Y=d(e.offsetX)+(d(b.offsetX)+I)*L,$=d(e.offsetY)+(d(b.offsetY)+w)*L,E=g(c.getFillColor(b));let T=g(c.getStrokeColor(b)),j=c.getStrokeWidth(b);j||(T=g(c.getFillColor(b.haloSymbol)),j=b.haloSize*L);const[F,W]=ce(n,X,t,i,null),D=JSON.stringify(e.effects)+Number(e.colorLocked)+JSON.stringify(e.anchorPoint)+e.anchorPointUnits+JSON.stringify(e.markerPlacement),U=l(JSON.stringify(o)+D+W).toString();let G=ie(o.primitiveName,r,"TextString",a,o.textString,S,b.textCase);if(null==G)return;const{fontStyleName:B}=b,q=k+(B?"-"+B.toLowerCase():"-regular"),V=q;"string"==typeof G&&G.includes("[")&&b.fieldMap&&(G=v(b.fieldMap,G,b.textCase)),s.push({type:"text",templateHash:U,materialHash:F||"function"==typeof G||G.match(/\[(.*?)\]/)?(e,t,i)=>V+"-"+N(G,e,t,i):V+"-"+l(G),cim:b,materialOverrides:null,colorLocked:e.colorLocked,effects:t,alignment:m,anchorPoint:{x:e.anchorPoint?e.anchorPoint.x:0,y:e.anchorPoint?e.anchorPoint.y:0},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,fontName:q,decoration:O,weight:ie(X,r,"Weight",a,C.weight),style:ie(X,r,"Size",a,C.style),size:ie(X,r,"Size",a,x),angle:ie(X,r,"Rotation",a,H),offsetX:ie(X,r,"OffsetX",a,Y),offsetY:ie(X,r,"OffsetY",a,$),horizontalAlignment:z(b.horizontalAlignment),verticalAlignment:A(b.verticalAlignment),text:G,color:E,outlineColor:T,outlineSize:j,referenceSize:p,sizeRatio:1,markerPlacement:i})}function K(e,t,i,r,n,a,s,f,m,p,u,S,v,N){const b=n.symbol,O=b.symbolLayers;if(!O)return;if(N)return void _(e,t,i,r,n,s,a,f,m,p,u,S,v);let k=O.length;if(me(O))return void Q(e,t,i,r,n,O,a,s,f,m,u,S,v);const P=C.applyEffects(b.effects,n.geometry,p.geometryEngine);if(P)for(;k--;){const N=O[k];if(N&&!1!==N.enable)switch(N.type){case"CIMSolidFill":case"CIMSolidStroke":{const b=C.applyEffects(N.effects,P,p.geometryEngine),O=y(b);if(!O)continue;const[k,M,I]=h(O,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),w="CIMSolidFill"===N.type,L={type:"sdf",geom:b,asFill:w},X=e.primitiveName,z=d(e.size)??10,A=d(e.rotation),R=d(e.offsetX),J=d(e.offsetY),x=N.path,H=N.primitiveName,Y=g(w?c.getFillColor(N):c.getStrokeColor(N)),$=w?{r:0,g:0,b:0,a:0}:g(c.getStrokeColor(N)),E=c.getStrokeWidth(N);if(!w&&!E)break;let T=!1,j="";for(const e of a)e.primitiveName!==H&&e.primitiveName!==X||(void 0!==e.value?j+=`-${e.primitiveName}-${e.propertyName}-${JSON.stringify(e.value)}`:e.valueExpressionInfo&&(T=!0));o(t)&&"function"==typeof t&&(T=!0);const F=JSON.stringify({...e,markerGraphics:null}),W=l(JSON.stringify(L)+x).toString(),D={type:"marker",templateHash:l(JSON.stringify(n)+JSON.stringify(N)+F+j).toString(),materialHash:T?()=>W:W,cim:L,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:u,anchorPoint:{x:M,y:I},isAbsoluteAnchorPoint:!1,size:ie(e.primitiveName,s,"Size",f,z),rotation:ie(e.primitiveName,s,"Rotation",f,A),offsetX:ie(e.primitiveName,s,"OffsetX",f,R),offsetY:ie(e.primitiveName,s,"OffsetY",f,J),scaleX:1,frameHeight:v,rotateClockwise:e.rotateClockwise,referenceSize:S,sizeRatio:k,color:ie(H,s,"Color",f,Y,te),outlineColor:ie(H,s,"Color",f,$,te),outlineWidth:ie(H,s,"Width",f,E),markerPlacement:i,animatedSymbolProperties:r,path:x};m.push(D);break}default:_(e,t,i,r,n,s,a,f,m,p,u,S,v)}}}function Q(e,t,i,o,r,n,a,s,f,m,p,u,S){const v=r.geometry,N=n[0],b=n[1],O=y(v);if(!O)return;const[C,k,P]=h(O,e.frame,e.size,e.anchorPoint,"Relative"!==e.anchorPointUnits),M={type:"sdf",geom:v,asFill:!0},I=e.primitiveName,w=d(e.size),L=d(e.rotation),X=d(e.offsetX),z=d(e.offsetY),A=b.path,R=b.primitiveName,J=N.primitiveName,x=g(c.getFillColor(b)),H=g(c.getStrokeColor(N)),Y=c.getStrokeWidth(N);let $=!1,E="";for(const l of a)l.primitiveName!==R&&l.primitiveName!==J&&l.primitiveName!==I||(void 0!==l.value?E+=`-${l.primitiveName}-${l.propertyName}-${JSON.stringify(l.value)}`:l.valueExpressionInfo&&($=!0));const T=JSON.stringify({...e,markerGraphics:null}),j=l(JSON.stringify(M)+A).toString(),F={type:"marker",templateHash:l(JSON.stringify(r)+JSON.stringify(b)+JSON.stringify(N)+T+E).toString(),materialHash:$?()=>j:j,cim:M,materialOverrides:null,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:p,anchorPoint:{x:k,y:P},isAbsoluteAnchorPoint:!1,size:ie(e.primitiveName,s,"Size",f,w),rotation:ie(e.primitiveName,s,"Rotation",f,L),offsetX:ie(e.primitiveName,s,"OffsetX",f,X),offsetY:ie(e.primitiveName,s,"OffsetY",f,z),scaleX:1,frameHeight:S,rotateClockwise:e.rotateClockwise,referenceSize:u,sizeRatio:C,color:ie(R,s,"Color",f,x,te),outlineColor:ie(J,s,"Color",f,H,te),outlineWidth:ie(J,s,"Width",f,Y),markerPlacement:i,path:A,animatedSymbolProperties:o};m.push(F)}function _(e,t,i,n,a,s,f,m,p,u,y,h,g){const S=Z(e,a);let v=[];const N=["Rotation","OffsetX","OffsetY"];v=f.filter((t=>t.primitiveName!==e.primitiveName||!N.includes(t.propertyName)));let b="";for(const o of f)void 0!==o.value&&(b+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`);const[O,C,k]=c.getTextureAnchor(S,u),P=e.primitiveName,M=d(e.rotation),I=d(e.offsetX),w=d(e.offsetY),L=l(JSON.stringify(S)+b).toString(),X={type:"marker",templateHash:L,materialHash:v.length>0||o(t)&&"function"==typeof t?ae(L,s,v,m):L,cim:S,materialOverrides:v,colorLocked:e.colorLocked,effects:t,scaleSymbolsProportionally:e.scaleSymbolsProportionally,alignment:y,anchorPoint:{x:O,y:C},isAbsoluteAnchorPoint:!1,size:e.size,rotation:ie(P,s,"Rotation",m,M),offsetX:ie(P,s,"OffsetX",m,I),offsetY:ie(P,s,"OffsetY",m,w),color:{r:255,g:255,b:255,a:1},outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,scaleX:1,frameHeight:g,rotateClockwise:e.rotateClockwise,referenceSize:h,sizeRatio:k/r(e.size),markerPlacement:i,animatedSymbolProperties:n};p.push(X)}function Z(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function ee(e){if(e&&0===e.indexOf("Level_")){const t=parseInt(e.substr(6),10);if(!isNaN(t))return t}return 0}function te(t){if(!t||0===t.length)return null;const i=new e(t).toRgba();return{r:i[0],g:i[1],b:i[2],a:i[3]}}function ie(e,t,i,o,r,n,l){const a=t[e];if(a){const e=a[i];if("string"==typeof e||"number"==typeof e||e instanceof Array)return n?n.call(null,e,l):e;if(null!=e&&e instanceof s)return(t,i,a)=>{let s=k(e,t,{$view:a},o.geometryType,i);return null!==s&&n&&(s=n.call(null,s,l)),null!==s?s:r}}return r}function oe(e){return e?e.charAt(0).toLowerCase()+e.substr(1):e}function re(e,i,o,r){for(const t of i){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof s&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}return(o,r,n)=>{for(const e of i)e.fn&&(e.value=e.fn(o,r,n));const l=[];for(let a of e){const e=a?.primitiveName;if(e){let o=!1;for(const r of i)if(r.primitiveName===e){const e=oe(r.propertyName);null!=r.value&&r.value!==a[e]&&(o||(a=t(a),o=!0),a[e]=r.value)}}l.push(a)}return l}}function ne(e,i,o,r){const n=[];if(f.findApplicableOverrides(e,i,n),0===n.length)return e;for(const t of n){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof s&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}return(i,o,r)=>{for(const e of n)e.fn&&(e.value=e.fn(i,o,r));const l=t(e),a=e.primitiveName;for(const e of n)if(e.primitiveName===a){const t=oe(e.propertyName);null!=e.value&&e.value!==l[t]&&(l[t]=e.value)}return l}}function le(e,i,o,r){const n=[];if(f.findApplicableOverrides(e,i,n),0===n.length)return e;for(const t of n){if(t.valueExpressionInfo){const e=o[t.primitiveName]&&o[t.primitiveName][t.propertyName];e instanceof s&&(t.fn=(t,i,o)=>k(e,t,{$view:o},r.geometryType,i))}}return(i,o,r)=>{for(const e of n)e.fn&&(e.value=e.fn(i,o,r));const l=t(e),a=e.primitiveName;for(const e of n)if(e.primitiveName===a){const t=oe(e.propertyName);null!=e.value&&e.value!==l[t]&&(l[t]=e.value)}return l}}function ae(e,t,i,o){for(const r of i){if(r.valueExpressionInfo){const e=t[r.primitiveName]&&t[r.primitiveName][r.propertyName];e instanceof s&&(r.fn=(t,i,r)=>k(e,t,{$view:r},o.geometryType,i))}}return(t,o,r)=>{for(const e of i)e.fn&&(e.value=e.fn(t,o,r));return l(e+f.buildOverrideKey(i)).toString()}}function se(e,t){if(!t||0===t.length)return e;const i=JSON.parse(JSON.stringify(e));return f.applyOverrides(i,t),i}function ce(e,t,i,r,n){let l=!1,a="";for(const o of e)o.primitiveName===t&&(void 0!==o.value?a+=`-${o.primitiveName}-${o.propertyName}-${JSON.stringify(o.value)}`:o.valueExpressionInfo&&(l=!0));return o(i)&&"function"==typeof i&&(l=!0),o(r)&&"function"==typeof r&&(l=!0),o(n)&&"function"==typeof n&&(l=!0),[l,a]}function fe(e,t,i){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const o=e.symbolLayers;if(!o)return;for(const e of o)switch(ue(e,t,i),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&i.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)continue;for(const e of o)if(e){const o=e.symbol;o&&fe(o,t,i)}}}}}}const me=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&!e[0].effects&&!e[1].effects;let pe;function ue(e,t,i){if(!e.effects||o(t.geometryEngine))return;if(pe)return void i.push(pe);b(e.effects)&&(pe=O(),i.push(pe),pe.then((e=>t.geometryEngine=e)))}export{se as analyzeCIMResource,Y as analyzeCIMSymbol};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../core/Error.js";import t from"../../../../core/Logger.js";import{isPowerOfTwo as r}from"../../../../core/mathUtils.js";import{pt2px as n}from"../../../../core/screenUtils.js";import{CapType as a,JoinType as s}from"../../../../symbols/cim/enums.js";import{copyAndPremultiply as i}from"./color.js";import{WGLGeometryType as o,WGLSymbologyType as c,VVType as u}from"./enums.js";import{TextProperties as l}from"./SymbolProperties.js";import{Usage as m,TextureType as f,PixelFormat as p,PixelType as d,TextureWrapMode as y,DataType as g,TextureSamplingMode as h}from"../../../webgl/enums.js";import{Texture as I}from"../../../webgl/Texture.js";import{VertexElementDescriptor as T}from"../../../webgl/VertexElementDescriptor.js";const E=t.getLogger("esri.views.2d.engine.webgl.Utils"),S="geometry",w="per_instance",L="per_instance_vv",A=[{name:S,strideInBytes:36}],N=[{name:S,strideInBytes:12}],M=[{name:S,strideInBytes:36}],D=[{name:S,strideInBytes:24}],_=[{name:S,strideInBytes:12}],U=[{name:S,strideInBytes:40}],v=[{name:S,strideInBytes:36}],R=[{name:S,strideInBytes:36}];function B(e){const t={};for(const r of e)t[r.name]=r.strideInBytes;return t}const C=B(A),b=B(N),O=B(M),F=B(D),x=B(_),z=B(U),P=B(v),j=B(R);function G(e,t){switch(e){case o.MARKER:return t===c.HEATMAP?b:C;case o.FILL:switch(t){case c.DOT_DENSITY:return x;case c.SIMPLE:case c.OUTLINE_FILL_SIMPLE:return F;default:return O}case o.LINE:return z;case o.TEXT:return P;case o.LABEL:return j}}const $=[S],k=[S],V=[S],Y=[S],H=[S];function q(e){switch(e){case o.MARKER:return $;case o.FILL:return k;case o.LINE:return V;case o.TEXT:return Y;case o.LABEL:return H}}function X(e){switch(e%4){case 0:case 2:return 4;case 1:case 3:return 1}}function K(e,t){switch(t%4){case 0:case 2:return new Uint32Array(Math.floor(e*t/4));case 1:case 3:return new Uint8Array(e*t)}}function W(e,t){switch(t%4){case 0:case 2:return new Uint32Array(e);case 1:case 3:return new Uint8Array(e)}}function Z(e){return l.pool.acquire(e.color?i(e.color):[255,255,255,255],e.haloColor?i(e.haloColor):[255,255,255,255],n(e.haloSize),n(e.font.size),e.angle*Math.PI/180,e.xoffset/e.font.size,e.yoffset/e.font.size,"left"===e.horizontalAlignment?0:"right"===e.horizontalAlignment?1:.5,"top"===e.verticalAlignment?0:"bottom"===e.verticalAlignment?1:.5)}function J(e){return null!=e}function Q(e){return"number"==typeof e}function ee(t){switch(t){case"butt":return a.BUTT;case"round":return a.ROUND;case"square":return a.SQUARE;default:return E.error(new e("mapview-invalid-type",`Cap type ${t} is not a valid option. Defaulting to round`)),a.ROUND}}function te(t){switch(t){case"miter":return s.MITER;case"bevel":return s.BEVEL;case"round":return s.ROUND;default:return E.error(new e("mapview-invalid-type",`Join type ${t} is not a valid option. Defaulting to round`)),s.ROUND}}function re(e){switch(e){case"opacity":return u.OPACITY;case"color":return u.COLOR;case"rotation":return u.ROTATION;case"size":return u.SIZE;default:return E.error(`Cannot interpret unknown vv: ${e}`),null}}function ne(e){const{transform:t,hasZ:r,hasM:n}=e;return{transform:t,hasZ:r,hasM:n}}function ae(e,t,r,n,a,s,i){for(const c in s){const t=s[c].stride,n=X(t),i=s[c].data,o=r[c].data,u=t*a.vertexCount/n,l=t*e/n,m=t*a.vertexFrom/n;for(let e=0;e<u;++e)o[e+l]=i[e+m]}const o=a.indexCount;for(let c=0;c<o;++c)n[c+t]=i[c+a.indexFrom]-a.vertexFrom+e}const se={[S]:m.STATIC_DRAW};function ie(e,t){const r=[];for(let n=0;n<5;++n){const a=q(n),s={};for(const e of a)s[e]={data:t(n,e)};r.push({data:e(n),buffers:s})}return r}function oe(e,t){let n,a;return r(t.width)&&r(t.height)?(n=!0,a=h.LINEAR_MIPMAP_LINEAR):(n=!1,a=h.LINEAR),new I(e,{target:f.TEXTURE_2D,pixelFormat:p.RGBA,internalFormat:p.RGBA,dataType:d.UNSIGNED_BYTE,hasMipmap:n,samplingMode:a,wrapMode:y.CLAMP_TO_EDGE,flipped:!0},t)}function ce(e){return{vertexFrom:void 0,vertexTo:void 0,geometry:e}}function ue(e){switch(e){case g.BYTE:case g.UNSIGNED_BYTE:return 1;case g.SHORT:case g.UNSIGNED_SHORT:return 2;case g.FLOAT:case g.INT:case g.UNSIGNED_INT:return 4}}function le(t){switch(t){case d.UNSIGNED_BYTE:return 1;case d.UNSIGNED_SHORT_4_4_4_4:return 2;case d.FLOAT:return 4;default:return void E.error(new e("webgl-utils",`Unable to handle type ${t}`))}}function me(t){switch(t){case d.UNSIGNED_BYTE:return Uint8Array;case d.UNSIGNED_SHORT_4_4_4_4:return Uint16Array;case d.FLOAT:return Float32Array;default:return void E.error(new e("webgl-utils",`Unable to handle type ${t}`))}}function fe(e){const t={};for(const r in e){const n=e[r];let a=0;t[r]=n.map((e=>{const t=new T(e.name,e.count,e.type,a,0,e.normalized||!1);return a+=e.count*ue(e.type),t})),t[r].forEach((e=>e.stride=a))}return t}const pe=e=>{const t=new Map;for(const r in e)for(const n of e[r])t.set(n.name,n.location);return t},de=e=>{const t={};for(const r in e){const n=e[r];t[r]=n.length?n[0].stride:0}return t},ye=new Map,ge=(e,t)=>{if(!ye.has(e)){const r=fe(t),n={strides:de(r),bufferLayouts:r,attributes:pe(t)};ye.set(e,n)}return ye.get(e)};function he(e){e(o.FILL),e(o.LINE),e(o.MARKER),e(o.TEXT),e(o.LABEL)}const Ie=e=>"path"in e&&Re(e.path),Te=e=>"url"in e&&e.url||"imageData"in e&&e.imageData,Ee=e=>"imageData"in e&&e.imageData&&"contentType"in e&&e.contentType?`data:${e.contentType};base64,${e.imageData}`:"url"in e?e.url:null,Se=e=>e.startsWith("data:image/gif"),we=e=>"url"in e&&e.url&&(e.url.includes(".gif")||Se(e.url))||"contentType"in e&&"image/gif"===e.contentType||"imageData"in e&&Se(e.imageData),Le=e=>e.startsWith("data:image/png"),Ae=e=>"url"in e&&e.url&&(e.url.includes(".png")||Le(e.url))||"contentType"in e&&"image/png"===e.contentType||"imageData"in e&&Le(e.imageData),Ne=e=>e.type&&e.type.toLowerCase().includes("3d");function Me(e){switch(e.type){case"line":{const t=e;return"CIMSolidStroke"===t.cim.type&&!t.dashTemplate}case"fill":return"CIMSolidFill"===e.cim.type;case"esriSFS":return"esriSFSSolid"===e.style||"esriSFSNull"===e.style;case"esriSLS":return"esriSLSSolid"===e.style||"esriSLSNull"===e.style;default:return!1}}const De=e=>e.includes("data:image/svg+xml");function _e(e){switch("cim"in e?e.cim.type:e.type){case"esriSMS":case"esriPMS":case"CIMPointSymbol":return!1;case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":return Be(e);default:return!0}}function Ue(e){const t="maxVVSize"in e&&e.maxVVSize,r="width"in e&&e.width||"size"in e&&e.size||0;return t||r}function ve(e){const t=[];for(let r=0;r<e.length;r++)t.push(e.charCodeAt(r));return t}const Re=e=>!!e&&(e=e.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(e)&&/[\dz]$/i.test(e)&&e.length>4)),Be=e=>"fill"===e.type&&"CIMMarkerPlacementInsidePolygon"===e?.cim?.markerPlacement?.type;export{O as C_FILL_STRIDE_SPEC,x as C_FILL_STRIDE_SPEC_DD,F as C_FILL_STRIDE_SPEC_SIMPLE,M as C_FILL_VERTEX_DEF,_ as C_FILL_VERTEX_DEF_DD,D as C_FILL_VERTEX_DEF_SIMPLE,b as C_HEATMAP_STRIDE_SPEC,N as C_HEATMAP_VERTEX_DEF,C as C_ICON_STRIDE_SPEC,A as C_ICON_VERTEX_DEF,j as C_LABEL_STRIDE_SPEC,R as C_LABEL_VERTEX_DEF,z as C_LINE_STRIDE_SPEC,U as C_LINE_VERTEX_DEF,P as C_TEXT_STRIDE_SPEC,v as C_TEXT_VERTEX_DEF,S as C_VBO_GEOMETRY,se as C_VBO_INFO,w as C_VBO_PERINSTANCE,L as C_VBO_PERINSTANCE_VV,K as allocateTypedArrayBuffer,W as allocateTypedArrayBufferwithData,ve as charCodes,ae as copyMeshData,ie as createGeometryData,ge as createProgramDescriptor,oe as createTextureFromTexelData,he as forEachGeometryType,ce as geometryToMappedGeometry,ue as getBytes,ee as getCapType,te as getJoinType,q as getNamedBuffers,Ue as getPMSResourceSize,me as getPixelArrayCtor,le as getPixelBytes,G as getStrides,Z as getTextProperties,ne as getTransformParams,Ee as getUrl,re as getVVType,Ne as is3D,J as isDefined,we as isGIF,Se as isGIFDataUri,Te as isImageResource,Be as isMarkerPlacementInsidePolygon,Q as isNumber,Ae as isPNG,Le as isPNGDataUri,De as isSVGImage,Ie as isSVGResource,Me as isSimple,Re as isValidSVG,_e as shouldRepeat,X as strideToPackingFactor};
5
+ import e from"../../../../core/Error.js";import t from"../../../../core/Logger.js";import{isPowerOfTwo as r}from"../../../../core/mathUtils.js";import{pt2px as n}from"../../../../core/screenUtils.js";import{CapType as a,JoinType as s}from"../../../../symbols/cim/enums.js";import{copyAndPremultiply as i}from"./color.js";import{WGLGeometryType as o,WGLSymbologyType as c,VVType as u}from"./enums.js";import{TextProperties as l}from"./SymbolProperties.js";import{Usage as m,TextureSamplingMode as f,TextureType as p,PixelFormat as d,PixelType as y,TextureWrapMode as g,DataType as h}from"../../../webgl/enums.js";import{Texture as I}from"../../../webgl/Texture.js";import{VertexElementDescriptor as T}from"../../../webgl/VertexElementDescriptor.js";const E=t.getLogger("esri.views.2d.engine.webgl.Utils"),S="geometry",w="per_instance",L="per_instance_vv",A=[{name:S,strideInBytes:36}],N=[{name:S,strideInBytes:12}],M=[{name:S,strideInBytes:36}],D=[{name:S,strideInBytes:24}],_=[{name:S,strideInBytes:12}],U=[{name:S,strideInBytes:40}],v=[{name:S,strideInBytes:36}],R=[{name:S,strideInBytes:36}];function B(e){const t={};for(const r of e)t[r.name]=r.strideInBytes;return t}const C=B(A),b=B(N),O=B(M),F=B(D),x=B(_),z=B(U),P=B(v),j=B(R);function G(e,t){switch(e){case o.MARKER:return t===c.HEATMAP?b:C;case o.FILL:switch(t){case c.DOT_DENSITY:return x;case c.SIMPLE:case c.OUTLINE_FILL_SIMPLE:return F;default:return O}case o.LINE:return z;case o.TEXT:return P;case o.LABEL:return j}}const $=[S],k=[S],V=[S],Y=[S],H=[S];function q(e){switch(e){case o.MARKER:return $;case o.FILL:return k;case o.LINE:return V;case o.TEXT:return Y;case o.LABEL:return H}}function X(e){switch(e%4){case 0:case 2:return 4;case 1:case 3:return 1}}function K(e,t){switch(t%4){case 0:case 2:return new Uint32Array(Math.floor(e*t/4));case 1:case 3:return new Uint8Array(e*t)}}function W(e,t){switch(t%4){case 0:case 2:return new Uint32Array(e);case 1:case 3:return new Uint8Array(e)}}function Z(e){return l.pool.acquire(e.color?i(e.color):[255,255,255,255],e.haloColor?i(e.haloColor):[255,255,255,255],n(e.haloSize),n(e.font.size),e.angle*Math.PI/180,e.xoffset/e.font.size,e.yoffset/e.font.size,"left"===e.horizontalAlignment?0:"right"===e.horizontalAlignment?1:.5,"top"===e.verticalAlignment?0:"bottom"===e.verticalAlignment?1:.5)}function J(e){return null!=e}function Q(e){return"number"==typeof e}function ee(t){switch(t){case"butt":return a.BUTT;case"round":return a.ROUND;case"square":return a.SQUARE;default:return E.error(new e("mapview-invalid-type",`Cap type ${t} is not a valid option. Defaulting to round`)),a.ROUND}}function te(t){switch(t){case"miter":return s.MITER;case"bevel":return s.BEVEL;case"round":return s.ROUND;default:return E.error(new e("mapview-invalid-type",`Join type ${t} is not a valid option. Defaulting to round`)),s.ROUND}}function re(e){switch(e){case"opacity":return u.OPACITY;case"color":return u.COLOR;case"rotation":return u.ROTATION;case"size":return u.SIZE;default:return E.error(`Cannot interpret unknown vv: ${e}`),null}}function ne(e){const{transform:t,hasZ:r,hasM:n}=e;return{transform:t,hasZ:r,hasM:n}}function ae(e,t,r,n,a,s,i){for(const c in s){const t=s[c].stride,n=X(t),i=s[c].data,o=r[c].data,u=t*a.vertexCount/n,l=t*e/n,m=t*a.vertexFrom/n;for(let e=0;e<u;++e)o[e+l]=i[e+m]}const o=a.indexCount;for(let c=0;c<o;++c)n[c+t]=i[c+a.indexFrom]-a.vertexFrom+e}const se={[S]:m.STATIC_DRAW};function ie(e,t){const r=[];for(let n=0;n<5;++n){const a=q(n),s={};for(const e of a)s[e]={data:t(n,e)};r.push({data:e(n),buffers:s})}return r}function oe(e,t){let n,a;return r(t.width)&&r(t.height)?(n=!0,a=f.LINEAR_MIPMAP_LINEAR):(n=!1,a=f.LINEAR),new I(e,{target:p.TEXTURE_2D,pixelFormat:d.RGBA,internalFormat:d.RGBA,dataType:y.UNSIGNED_BYTE,hasMipmap:n,samplingMode:a,wrapMode:g.CLAMP_TO_EDGE,flipped:!0},t)}function ce(e){return{vertexFrom:void 0,vertexTo:void 0,geometry:e}}function ue(e){switch(e){case h.BYTE:case h.UNSIGNED_BYTE:return 1;case h.SHORT:case h.UNSIGNED_SHORT:return 2;case h.FLOAT:case h.INT:case h.UNSIGNED_INT:return 4}}function le(t){switch(t){case y.UNSIGNED_BYTE:return 1;case y.UNSIGNED_SHORT_4_4_4_4:return 2;case y.FLOAT:return 4;default:return void E.error(new e("webgl-utils",`Unable to handle type ${t}`))}}function me(t){switch(t){case y.UNSIGNED_BYTE:return Uint8Array;case y.UNSIGNED_SHORT_4_4_4_4:return Uint16Array;case y.FLOAT:return Float32Array;default:return void E.error(new e("webgl-utils",`Unable to handle type ${t}`))}}function fe(e){const t={};for(const r in e){const n=e[r];let a=0;t[r]=n.map((e=>{const t=new T(e.name,e.count,e.type,a,0,e.normalized||!1);return a+=e.count*ue(e.type),t})),t[r].forEach((e=>e.stride=a))}return t}const pe=e=>{const t=new Map;for(const r in e)for(const n of e[r])t.set(n.name,n.location);return t},de=e=>{const t={};for(const r in e){const n=e[r];t[r]=n.length?n[0].stride:0}return t},ye=new Map,ge=(e,t)=>{if(!ye.has(e)){const r=fe(t),n={strides:de(r),bufferLayouts:r,attributes:pe(t)};ye.set(e,n)}return ye.get(e)};function he(e){e(o.FILL),e(o.LINE),e(o.MARKER),e(o.TEXT),e(o.LABEL)}const Ie=e=>"path"in e&&Re(e.path),Te=e=>"url"in e&&e.url||"imageData"in e&&e.imageData,Ee=e=>"imageData"in e&&e.imageData&&"contentType"in e&&e.contentType?`data:${e.contentType};base64,${e.imageData}`:"url"in e?e.url:null,Se=e=>e.startsWith("data:image/gif"),we=e=>"url"in e&&e.url&&(e.url.includes(".gif")||Se(e.url))||"contentType"in e&&"image/gif"===e.contentType||"imageData"in e&&Se(e.imageData),Le=e=>e.startsWith("data:image/png"),Ae=e=>"url"in e&&e.url&&(e.url.includes(".png")||Le(e.url))||"contentType"in e&&"image/png"===e.contentType||"imageData"in e&&Le(e.imageData),Ne=e=>e.type&&e.type.toLowerCase().includes("3d");function Me(e){switch(e.type){case"line":{const t=e;return"CIMSolidStroke"===t.cim.type&&!t.dashTemplate}case"fill":return"CIMSolidFill"===e.cim.type;case"esriSFS":return"esriSFSSolid"===e.style||"esriSFSNull"===e.style;case"esriSLS":return"esriSLSSolid"===e.style||"esriSLSNull"===e.style;default:return!1}}const De=e=>e.includes("data:image/svg+xml");function _e(e){switch("cim"in e?e.cim.type:e.type){case"esriSMS":case"esriPMS":case"CIMPointSymbol":return!1;case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":return Be(e);default:return!0}}function Ue(e){const t="maxVVSize"in e&&e.maxVVSize,r="width"in e&&e.width||"size"in e&&e.size||0;return t||r}function ve(e){const t=[];for(let r=0;r<e.length;r++)t.push(e.charCodeAt(r));return t}const Re=e=>!!e&&(e=e.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(e)&&/[\dz]$/i.test(e)&&e.length>4)),Be=e=>"fill"===e.type&&"CIMMarkerPlacementInsidePolygon"===e?.cim?.markerPlacement?.type;export{O as C_FILL_STRIDE_SPEC,x as C_FILL_STRIDE_SPEC_DD,F as C_FILL_STRIDE_SPEC_SIMPLE,M as C_FILL_VERTEX_DEF,_ as C_FILL_VERTEX_DEF_DD,D as C_FILL_VERTEX_DEF_SIMPLE,b as C_HEATMAP_STRIDE_SPEC,N as C_HEATMAP_VERTEX_DEF,C as C_ICON_STRIDE_SPEC,A as C_ICON_VERTEX_DEF,j as C_LABEL_STRIDE_SPEC,R as C_LABEL_VERTEX_DEF,z as C_LINE_STRIDE_SPEC,U as C_LINE_VERTEX_DEF,P as C_TEXT_STRIDE_SPEC,v as C_TEXT_VERTEX_DEF,S as C_VBO_GEOMETRY,se as C_VBO_INFO,w as C_VBO_PERINSTANCE,L as C_VBO_PERINSTANCE_VV,K as allocateTypedArrayBuffer,W as allocateTypedArrayBufferwithData,ve as charCodes,ae as copyMeshData,ie as createGeometryData,ge as createProgramDescriptor,oe as createTextureFromTexelData,he as forEachGeometryType,ce as geometryToMappedGeometry,ue as getBytes,ee as getCapType,te as getJoinType,q as getNamedBuffers,Ue as getPMSResourceSize,me as getPixelArrayCtor,le as getPixelBytes,G as getStrides,Z as getTextProperties,ne as getTransformParams,Ee as getUrl,re as getVVType,Ne as is3D,J as isDefined,we as isGIF,Se as isGIFDataUri,Te as isImageResource,Be as isMarkerPlacementInsidePolygon,Q as isNumber,Ae as isPNG,Le as isPNGDataUri,De as isSVGImage,Ie as isSVGResource,Me as isSimple,Re as isValidSVG,_e as shouldRepeat,X as strideToPackingFactor};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{getFeatureId as t}from"../../../../analysis/analysisUtils.js";import o from"../../../../core/Accessor.js";import i from"../../../../core/Evented.js";import n from"../../../../core/Handles.js";import{handlesGroup as r,makeHandle as s}from"../../../../core/handleUtils.js";import{equals as a}from"../../../../core/lang.js";import c from"../../../../core/Logger.js";import{isNone as l,isSome as p,abortMaybe as u,unwrapOr as d,none as g}from"../../../../core/maybe.js";import{createTask as h,ignoreAbortErrors as m}from"../../../../core/promiseUtils.js";import{watch as v,on as f,syncAndInitial as _,sync as b}from"../../../../core/reactiveUtils.js";import{property as y}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as C}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as I,i as T,b as P,n as O,g as S,a as j,j as w,v as R}from"../../../../chunks/vec3.js";import{c as A}from"../../../../chunks/vec3f64.js";import{WatchUpdatingTracking as E}from"../../../../core/support/WatchUpdatingTracking.js";import{projectOrLoad as L,projectBoundingRect as F}from"../../../../geometry/projection.js";import{empty as V,containsPointObject as H,intersectsSegment as x}from"../../../../geometry/support/aaBoundingRect.js";import{fromPoints as D,create as N}from"../../../../geometry/support/ray.js";import{zValueInAbsoluteHeightMode as k}from"../../../../support/elevationInfoUtils.js";import{LineOfSightAnalysisResult as z}from"../LineOfSightAnalysisResult.js";import{LineOfSightComputation as M}from"./LineOfSightComputation.js";import{LineOfSightRayIntersector as U}from"./LineOfSightRayIntersector.js";import{logFailedGeometryProjectionError as G}from"../support/projectionUtils.js";import{StoreResults as q}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as B,getIntersectedFeatureBSRadius as W}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{ImmediateTask as Z,TaskPriority as J}from"../../../support/Scheduler.js";import K from"../../../../geometry/Point.js";const Q=c.getLogger("esri.views.3d.analysis.LineOfSight.LineOfSightController");let X=class extends(i.EventedMixin(o)){constructor(e){super(e),this.updateOnCameraChange=!0,this._effectiveObserverElevationMode="absolute-height",this._observerFeatureId=null,this._updatingHandles=new E,this._frameTask=Z,this._handles=new n,this._computationHandles=new n,this._externalObserverUpdate=!0}initialize(){const e=this.view.resourceController?.scheduler;this._frameTask=e?e.registerTask(J.LINE_OF_SIGHT_TOOL):Z,this._intersector=new U({view:this.view}),this._handles.add([this._connectObserver(),this._connectComputations(),this._connectTargets()])}destroy(){this._handles.destroy(),this._computationHandles.destroy(),this._computations.removeAll(),this._updatingHandles.destroy()}get updating(){return this._frameTask.updating||this._updatingHandles.updating}get priority(){return this._frameTask.priority}set priority(e){this._frameTask.priority=e}get _computations(){return this.analysisViewData.computations}get _elevationAlignedObserverPositionRenderSpace(){return this.analysisViewData.observerEngineLocation}set _elevationAlignedObserverPositionRenderSpace(e){this.analysisViewData.observerEngineLocation=e}get _screenPixelSize(){return this.view.state.camera.computeScreenPixelSizeAt(this._elevationAlignedObserverPositionRenderSpace)}getLineOfSightComputationDependencies(e){const{inputPoints:t}=e;return{inputPoints:t}}_computeResult(e){const t=e.computation,{inputPoints:o,computationResult:i}=t,{observerAdjusted:n,targetAdjusted:r}=o,{start:s,end:a}=i;I(s,n),I(a,r);this._canCompute(t)?this._computeIntersection(e):this._interpolateIntersection(e),t.notifyResultChanged(),this.emit("result-changed",{target:e.computation.target,result:t.result})}_adjustStartEndPositionsFromFeatures(e){const o=this.view,{sceneIntersectionHelper:i}=o,{inputPoints:n}=e,{observer:r,target:s,observerFeatureId:a,targetFeatureId:c}=n;if(l(a)&&l(c))return;const u=T(r,s),d=this._intersector.intersector,g=D(n.observer,n.target,ee);d.options.store=q.ALL,i.intersectToolIntersectorRay(g,d);let h=null,m=null,v=null,f=null;for(const _ of d.results.all){const e=B(_,this.view);if(l(e)||l(_.distanceInRenderSpace))continue;const i=t(e);if(!l(i)){if(p(a)&&i===a){if(l(h)){const e=W(_,o);h=p(e)?e*oe:0}_.distanceInRenderSpace<h&&(v=_)}if(p(c)&&i===c){if(l(m)){const e=W(_,o);m=p(e)?e*oe:0}_.distanceInRenderSpace<u&&u-_.distanceInRenderSpace<m&&(f=_)}}}p(v)&&v.getIntersectionPoint(r)&&(n.observerSurfaceNormal=v.getTransformedNormal(A())),p(f)&&f.getIntersectionPoint(s)&&(n.targetSurfaceNormal=f.getTransformedNormal(A()))}_adjustStartEndPositions(e){const t=this._screenPixelSize,o=this.view,{inputPoints:i}=e,{observer:n,observerSurfaceNormal:r,target:s,targetSurfaceNormal:a,observerAdjusted:c,targetAdjusted:l}=i,u=$;p(r)?I(u,r):P(u,s,n);const d=t;O(u,u),S(u,u,Math.min(d,1)),j(c,n,u),p(a)?I(u,a):P(u,n,s);const g=o.state.camera.computeScreenPixelSizeAt(s);O(u,u),S(u,u,Math.min(g,1)),j(l,s,u)}_computeIntersection({computation:e,interpolationInfo:t}){const{view:o}=this,{sceneIntersectionHelper:i,renderCoordsHelper:n}=o;if(l(i))return;const r=this._intersector.intersector,{computationResult:s,inputPoints:a}=e,{observer:c,target:u}=a,{start:d,end:g}=s,h=D(d,g,ee);r.options.store=q.MIN,i.intersectToolIntersectorRay(h,r);const m=r.results.min,v=s.intersection,f=$;let _=!0;if(p(m)&&m.getIntersectionPoint(v)){I(t.originalIntersection,v),I(t.originalObserver,d),I(t.originalTarget,g),n.fromRenderCoords(v,f,o.spatialReference);const e=1-w(g,u)/w(d,u);_=w(c,v)>=e*w(c,u)}const b=new K(f,o.spatialReference);{const{result:t,target:i}=e;p(t)?(t.target=i,t.intersectedGraphic=_?null:B(m,o),t.intersectedLocation=_?null:b,t.visible=_):e.result=new z({target:i,elevationAlignedTargetLocation:e.elevationAlignedTargetLocation,intersectedGraphic:_?null:B(m,o),intersectedLocation:_?null:b,visible:_})}s.isValid=a.isValid=!0,s.isTargetVisible=_}_interpolateIntersection({computation:e,interpolationInfo:t}){const{computationResult:o,inputPoints:i}=e,{start:n,end:r,intersection:s}=o,{originalIntersection:a,originalObserver:c,originalTarget:l}=t;if(I(s,a),i.isValid){const e=$,t=w(c,a)/w(c,l);R(e,n,c),S(e,e,1-t),j(s,s,e),R(e,r,l),S(e,e,t),j(s,s,e),o.isValid=!0}else e.result=null,o.isValid=!1,o.isTargetVisible=!1}_canCompute(e){const t=this.analysisViewData.elevationAlignedObserver,o=this.view.frustum;if(l(t)||l(e.elevationAlignedTargetLocation)||l(o))return!1;const{observerAdjusted:i,targetAdjusted:n}=e.inputPoints,r=o.intersectsPoint(i),s=o.intersectsPoint(n);return r&&s}_onObserverPositionChange(e,o,i,n,r){if(this._externalObserverUpdate=r,l(e))return this.analysisViewData.elevationAlignedObserver=null,void(this._observerFeatureId=null);if(l(o))return G(this.analysis,e.spatialReference,Q),void(this.analysisViewData.elevationAlignedObserver=null);const s=this._getEffectiveElevationInfo(o,i);o.z=k(o.x,o.y,o.z,this.view.spatialReference,this.view,s),this._effectiveObserverElevationMode=s.mode,this.analysisViewData.elevationAlignedObserver=o;const a=A();this.view.renderCoordsHelper.toRenderCoords(o,a),this._elevationAlignedObserverPositionRenderSpace=a,this._observerFeatureId=t(n),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onObserverRenderSpacePositionChangeForComputation(e,t,o,i){const{inputPoints:n}=e;switch(I(n.observer,t),o){case"on-the-ground":case"relative-to-ground":n.observerSurfaceNormal=this._intersector.adjustFromGroundIntersection(t,n.observer);break;case"relative-to-scene":case"absolute-height":n.observerSurfaceNormal=null}n.observerFeatureId=i,this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onTargetPositionChange(e,o,i,n,r,s=!0){const a=e.inputPoints;if(s&&(a.isValid=!1),l(i))return G(this.analysis,o.spatialReference,Q),e.elevationAlignedTargetLocation=null,void e.notifyInputPointsChanged();const c=this._getEffectiveElevationInfo(i,n);switch(i.z=k(i.x,i.y,i.z,this.view.spatialReference,this.view,c),e.elevationAlignedTargetLocation=i,this.view.renderCoordsHelper.toRenderCoords(e.elevationAlignedTargetLocation,a.target),c.mode){case"on-the-ground":case"relative-to-ground":a.targetSurfaceNormal=this._intersector.adjustFromGroundIntersection(a.target,a.targetAdjusted);break;case"relative-to-scene":case"absolute-height":a.targetSurfaceNormal=null}a.targetFeatureId=t(r),this._adjustStartEndPositionsFromFeatures(e),this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_connectComputationToTarget(e){return r([v((()=>({computation:e,targetPosition:e.target.position,targetElevationInfo:e.target.elevationInfo,targetFeatureInfo:e.target.feature,projectedTargetPosition:L(e.target.position,this.view.spatialReference)})),(({computation:e,targetPosition:t,targetElevationInfo:o,targetFeatureInfo:i,projectedTargetPosition:n})=>{l(t)||(p(n.pending)?this._updatingHandles.addPromise(n.pending):this._onTargetPositionChange(e,t,n.geometry,o,i))}),_)])}_connectComputationToObserver(e){return v((()=>({computation:e,observer:this.analysisViewData.elevationAlignedObserver})),(({computation:e})=>{this._externalObserverUpdate&&(e.inputPoints.isValid=!1,e.notifyInputPointsChanged())}),_)}_connectComputationToRenderSpaceObserver(e){return v((()=>({computation:e,observer:this._elevationAlignedObserverPositionRenderSpace,observerElevationMode:this._effectiveObserverElevationMode,observerFeatureId:this._observerFeatureId})),(({computation:e,observer:t,observerElevationMode:o,observerFeatureId:i})=>{this._onObserverRenderSpacePositionChangeForComputation(e,t,o,i)}),_)}_connectComputationToCamera(e){return v((()=>({camera:this.view.state.camera,isDirty:this._isCameraDirty})),(({isDirty:t})=>{!this.updateOnCameraChange||e.inputPoints.isValid&&!t||e.notifyInputPointsChanged()}),b)}_connectComputationToSlicePlane(e){return v((()=>this.view.slicePlane),(()=>{e.inputPoints.isValid=!1,e.notifyInputPointsChanged()}))}_connectComputationToElevation(e){const t=(o,i)=>{const n=this.analysis.observer,r=e.target;let s=null,a=null,c=null,u=null,d=null,g=null;if(p(n)&&p(n.position)){const e=L(n.position,this.view.spatialReference);if(p(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));s=e.geometry,a=n.elevationInfo,c=n.feature}if(p(r.position)){const e=L(r.position,this.view.spatialReference);if(p(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));u=e.geometry,d=r.elevationInfo,g=r.feature}l(s)&&l(u)||(F(o,i,te,this.view.spatialReference),p(n)&&p(s)&&H(te,s)&&this._onObserverPositionChange(n.position,s,a,c,!1),p(r)&&p(r.position)&&p(u)&&H(te,u)&&this._onTargetPositionChange(e,r.position,u,d,g,!1),p(s)&&p(u)&&x(te,s,u)&&e.notifyInputPointsChanged())};return this.view.elevationProvider.on("elevation-change",(e=>t(e.extent,e.spatialReference)))}_connectComputationToTask(e){let t=g;const o={computation:e,interpolationInfo:{originalIntersection:A(),originalObserver:A(),originalTarget:A()}};return r([v((()=>this.getLineOfSightComputationDependencies(e)),(()=>{t=u(t),t=h((async e=>{await m(this._frameTask.schedule((()=>this._computeResult(o)),e))}))}),{sync:!0,initial:!0,equals:a}),s((()=>t=u(t)))])}_connectComputation(e){const t=this._computationHandles;t.has(e)||t.add([this._connectComputationToTarget(e),this._connectComputationToObserver(e),this._connectComputationToRenderSpaceObserver(e),this._connectComputationToCamera(e),this._connectComputationToSlicePlane(e),this._connectComputationToElevation(e),this._connectComputationToTask(e)],e)}_disconnectComputation(e){this._computationHandles.remove(e)}_onComputationCollectionChange({added:e,removed:t}){for(const o of t)this._disconnectComputation(o);for(const o of e)this._connectComputation(o)}_onTargetCollectionChange({added:e,removed:t}){for(const o of t)this._removeTarget(o);for(const o of e)this._addTarget(o)}_onCursorTargetChange(e,t){p(t)&&this._removeTarget(t),p(e)&&this._addTarget(e)}_addTarget(e){this._computations.some((t=>t.target===e))||this._computations.add(new M({target:e}))}_removeTarget(e){const t=this._computations.findIndex((t=>t.target===e));this._computations.removeAt(t)}_connectObserver(){return r([v((()=>({observerPosition:p(this.analysis.observer)?this.analysis.observer.position:null,projectedObserverPosition:L(p(this.analysis.observer)?this.analysis.observer.position:null,this.view.spatialReference),observerElevationInfo:p(this.analysis.observer)?this.analysis.observer.elevationInfo:null,observerFeatureInfo:p(this.analysis.observer)?this.analysis.observer.feature:null})),(({observerPosition:e,projectedObserverPosition:t,observerElevationInfo:o,observerFeatureInfo:i})=>{p(t.pending)?this._updatingHandles.addPromise(t.pending):this._onObserverPositionChange(e,t.geometry,o,i,!0)}),_)])}_connectComputations(){return f((()=>this._computations),"change",(e=>this._onComputationCollectionChange(e)),{onListenerAdd:e=>{for(const t of e)this._connectComputation(t)},onListenerRemove:e=>{for(const t of e)this._disconnectComputation(t)},sync:!0})}_connectTargets(){return r([this._updatingHandles.addOnCollectionChange((()=>this.analysis.targets),(e=>this._onTargetCollectionChange(e)),{initial:!0,final:!0}),v((()=>this.analysisViewData.cursorTarget),((e,t)=>{this._onCursorTargetChange(e,t)}))])}get _isCameraDirty(){const e=this.analysisViewData.elevationAlignedObserver,{view:t}=this,{renderCoordsHelper:o}=t;if(l(e)||l(o))return!1;const i=$;o.toRenderCoords(e,i);const n=t.state.camera.computeScreenPixelSizeAt(i);return Math.abs((n-this._screenPixelSize)/this._screenPixelSize)>Y}_getEffectiveElevationInfo(e,t){return e.hasZ?d(t,{mode:"absolute-height",offset:0}):{mode:"on-the-ground",offset:0}}};e([y({constructOnly:!0})],X.prototype,"analysis",void 0),e([y({constructOnly:!0})],X.prototype,"analysisViewData",void 0),e([y({constructOnly:!0})],X.prototype,"view",void 0),e([y()],X.prototype,"updating",null),e([y()],X.prototype,"priority",null),e([y()],X.prototype,"updateOnCameraChange",void 0),e([y()],X.prototype,"_computations",null),e([y()],X.prototype,"_elevationAlignedObserverPositionRenderSpace",null),e([y()],X.prototype,"_effectiveObserverElevationMode",void 0),e([y()],X.prototype,"_observerFeatureId",void 0),e([y()],X.prototype,"_screenPixelSize",null),e([y({readOnly:!0})],X.prototype,"_updatingHandles",void 0),e([y()],X.prototype,"_frameTask",void 0),e([y()],X.prototype,"_isCameraDirty",null),X=e([C("esri.views.3d.analysis.LineOfSight.LineOfSightController")],X);const Y=.1,$=A(),ee=N(),te=V(),oe=.05;export{X as LineOfSightController};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../geometry.js";import{getFeatureId as t}from"../../../../analysis/analysisUtils.js";import o from"../../../../core/Accessor.js";import i from"../../../../core/Evented.js";import n from"../../../../core/Handles.js";import{handlesGroup as r,makeHandle as s}from"../../../../core/handleUtils.js";import{equals as a}from"../../../../core/lang.js";import c from"../../../../core/Logger.js";import{isNone as l,isSome as p,abortMaybe as u,unwrapOr as d,none as g}from"../../../../core/maybe.js";import{createTask as h,ignoreAbortErrors as m}from"../../../../core/promiseUtils.js";import{watch as v,on as f,syncAndInitial as _,sync as b}from"../../../../core/reactiveUtils.js";import{property as y}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as C}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as I,i as T,b as P,n as O,g as S,a as j,j as w,v as R}from"../../../../chunks/vec3.js";import{c as A}from"../../../../chunks/vec3f64.js";import{WatchUpdatingTracking as E}from"../../../../core/support/WatchUpdatingTracking.js";import{projectOrLoad as L,projectBoundingRect as F}from"../../../../geometry/projection.js";import{empty as V,containsPointObject as H,intersectsSegment as x}from"../../../../geometry/support/aaBoundingRect.js";import{fromPoints as D,create as N}from"../../../../geometry/support/ray.js";import{zValueInAbsoluteHeightMode as k}from"../../../../support/elevationInfoUtils.js";import{LineOfSightAnalysisResult as z}from"../LineOfSightAnalysisResult.js";import{LineOfSightComputation as M}from"./LineOfSightComputation.js";import{LineOfSightRayIntersector as U}from"./LineOfSightRayIntersector.js";import{logFailedGeometryProjectionError as G}from"../support/projectionUtils.js";import{StoreResults as q}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{toGraphic as B,getIntersectedFeatureBSRadius as W}from"../../webgl-engine/lib/intersectorUtilsConversions.js";import{ImmediateTask as Z,TaskPriority as J}from"../../../support/Scheduler.js";import K from"../../../../geometry/Point.js";const Q=c.getLogger("esri.views.3d.analysis.LineOfSight.LineOfSightController");let X=class extends(i.EventedMixin(o)){constructor(e){super(e),this.updateOnCameraChange=!0,this._effectiveObserverElevationMode="absolute-height",this._observerFeatureId=null,this._updatingHandles=new E,this._frameTask=Z,this._handles=new n,this._computationHandles=new n,this._externalObserverUpdate=!0}initialize(){const e=this.view.resourceController?.scheduler;this._frameTask=e?e.registerTask(J.LINE_OF_SIGHT_TOOL):Z,this._intersector=new U({view:this.view}),this._handles.add([this._connectObserver(),this._connectComputations(),this._connectTargets()])}destroy(){this._handles.destroy(),this._computationHandles.destroy(),this._computations.removeAll(),this._updatingHandles.destroy()}get updating(){return this._frameTask.updating||this._updatingHandles.updating}get priority(){return this._frameTask.priority}set priority(e){this._frameTask.priority=e}get _computations(){return this.analysisViewData.computations}get _elevationAlignedObserverPositionRenderSpace(){return this.analysisViewData.observerEngineLocation}set _elevationAlignedObserverPositionRenderSpace(e){this.analysisViewData.observerEngineLocation=e}get _screenPixelSize(){return this.view.state.camera.computeScreenPixelSizeAt(this._elevationAlignedObserverPositionRenderSpace)}getLineOfSightComputationDependencies(e){const{inputPoints:t}=e;return{inputPoints:t}}_computeResult(e){const t=e.computation,{inputPoints:o,computationResult:i}=t,{observerAdjusted:n,targetAdjusted:r}=o,{start:s,end:a}=i;I(s,n),I(a,r);this._canCompute(t)?this._computeIntersection(e):this._interpolateIntersection(e),t.notifyResultChanged(),this.emit("result-changed",{target:e.computation.target,result:t.result})}_adjustStartEndPositionsFromFeatures(e){const o=this.view,{sceneIntersectionHelper:i}=o,{inputPoints:n}=e,{observer:r,target:s,observerFeatureId:a,targetFeatureId:c}=n;if(l(a)&&l(c))return;const u=T(r,s),d=this._intersector.intersector,g=D(n.observer,n.target,ee);d.options.store=q.ALL,i.intersectToolIntersectorRay(g,d);let h=null,m=null,v=null,f=null;for(const _ of d.results.all){const e=B(_,this.view);if(l(e)||l(_.distanceInRenderSpace))continue;const i=t(e);if(!l(i)){if(p(a)&&i===a){if(l(h)){const e=W(_,o);h=p(e)?e*oe:0}_.distanceInRenderSpace<h&&(v=_)}if(p(c)&&i===c){if(l(m)){const e=W(_,o);m=p(e)?e*oe:0}_.distanceInRenderSpace<u&&u-_.distanceInRenderSpace<m&&(f=_)}}}p(v)&&v.getIntersectionPoint(r)&&(n.observerSurfaceNormal=v.getTransformedNormal(A())),p(f)&&f.getIntersectionPoint(s)&&(n.targetSurfaceNormal=f.getTransformedNormal(A()))}_adjustStartEndPositions(e){const t=this._screenPixelSize,o=this.view,{inputPoints:i}=e,{observer:n,observerSurfaceNormal:r,target:s,targetSurfaceNormal:a,observerAdjusted:c,targetAdjusted:l}=i,u=$;p(r)?I(u,r):P(u,s,n);const d=t;O(u,u),S(u,u,Math.min(d,1)),j(c,n,u),p(a)?I(u,a):P(u,n,s);const g=o.state.camera.computeScreenPixelSizeAt(s);O(u,u),S(u,u,Math.min(g,1)),j(l,s,u)}_computeIntersection({computation:e,interpolationInfo:t}){const{view:o}=this,{sceneIntersectionHelper:i,renderCoordsHelper:n}=o;if(l(i))return;const r=this._intersector.intersector,{computationResult:s,inputPoints:a}=e,{observer:c,target:u}=a,{start:d,end:g}=s,h=D(d,g,ee);r.options.store=q.MIN,i.intersectToolIntersectorRay(h,r);const m=r.results.min,v=s.intersection,f=$;let _=!0;if(p(m)&&m.getIntersectionPoint(v)){I(t.originalIntersection,v),I(t.originalObserver,d),I(t.originalTarget,g),n.fromRenderCoords(v,f,o.spatialReference);const e=1-w(g,u)/w(d,u);_=w(c,v)>=e*w(c,u)}const b=new K(f,o.spatialReference);{const{result:t,target:i}=e;p(t)?(t.target=i,t.intersectedGraphic=_?null:B(m,o),t.intersectedLocation=_?null:b,t.visible=_):e.result=new z({target:i,elevationAlignedTargetLocation:e.elevationAlignedTargetLocation,intersectedGraphic:_?null:B(m,o),intersectedLocation:_?null:b,visible:_})}s.isValid=a.isValid=!0,s.isTargetVisible=_}_interpolateIntersection({computation:e,interpolationInfo:t}){const{computationResult:o,inputPoints:i}=e,{start:n,end:r,intersection:s}=o,{originalIntersection:a,originalObserver:c,originalTarget:l}=t;if(I(s,a),i.isValid){const e=$,t=w(c,a)/w(c,l);R(e,n,c),S(e,e,1-t),j(s,s,e),R(e,r,l),S(e,e,t),j(s,s,e),o.isValid=!0}else e.result=null,o.isValid=!1,o.isTargetVisible=!1}_canCompute(e){const t=this.analysisViewData.elevationAlignedObserver,o=this.view.frustum;if(l(t)||l(e.elevationAlignedTargetLocation)||l(o))return!1;const{observerAdjusted:i,targetAdjusted:n}=e.inputPoints,r=o.intersectsPoint(i),s=o.intersectsPoint(n);return r&&s}_onObserverPositionChange(e,o,i,n,r){if(this._externalObserverUpdate=r,l(e))return this.analysisViewData.elevationAlignedObserver=null,void(this._observerFeatureId=null);if(l(o))return G(this.analysis,e.spatialReference,Q),void(this.analysisViewData.elevationAlignedObserver=null);const s=this._getEffectiveElevationInfo(o,i);o.z=k(o.x,o.y,o.z,this.view.spatialReference,this.view,s),this._effectiveObserverElevationMode=s.mode,this.analysisViewData.elevationAlignedObserver=o;const a=A();this.view.renderCoordsHelper.toRenderCoords(o,a),this._elevationAlignedObserverPositionRenderSpace=a,this._observerFeatureId=t(n),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onObserverRenderSpacePositionChangeForComputation(e,t,o,i){const{inputPoints:n}=e;switch(I(n.observer,t),o){case"on-the-ground":case"relative-to-ground":n.observerSurfaceNormal=this._intersector.adjustFromGroundIntersection(t,n.observer);break;case"relative-to-scene":case"absolute-height":n.observerSurfaceNormal=null}n.observerFeatureId=i,this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_onTargetPositionChange(e,o,i,n,r,s=!0){const a=e.inputPoints;if(s&&(a.isValid=!1),l(i))return p(o)&&G(this.analysis,o.spatialReference,Q),e.elevationAlignedTargetLocation=null,void e.notifyInputPointsChanged();const c=this._getEffectiveElevationInfo(i,n);switch(i.z=k(i.x,i.y,i.z,this.view.spatialReference,this.view,c),e.elevationAlignedTargetLocation=i,this.view.renderCoordsHelper.toRenderCoords(e.elevationAlignedTargetLocation,a.target),c.mode){case"on-the-ground":case"relative-to-ground":a.targetSurfaceNormal=this._intersector.adjustFromGroundIntersection(a.target,a.targetAdjusted);break;case"relative-to-scene":case"absolute-height":a.targetSurfaceNormal=null}a.targetFeatureId=t(r),this._adjustStartEndPositionsFromFeatures(e),this._adjustStartEndPositions(e),e.notifyInputPointsChanged(),this.priority=J.LINE_OF_SIGHT_TOOL_INTERACTIVE}_connectComputationToTarget(e){return r([v((()=>({computation:e,targetPosition:e.target.position,targetElevationInfo:e.target.elevationInfo,targetFeatureInfo:e.target.feature,projectedTargetPosition:L(e.target.position,this.view.spatialReference)})),(({computation:e,targetPosition:t,targetElevationInfo:o,targetFeatureInfo:i,projectedTargetPosition:n})=>{p(n.pending)?this._updatingHandles.addPromise(n.pending):this._onTargetPositionChange(e,t,n.geometry,o,i)}),_)])}_connectComputationToObserver(e){return v((()=>({computation:e,observer:this.analysisViewData.elevationAlignedObserver})),(({computation:e})=>{this._externalObserverUpdate&&(e.inputPoints.isValid=!1,e.notifyInputPointsChanged())}),_)}_connectComputationToRenderSpaceObserver(e){return v((()=>({computation:e,observer:this._elevationAlignedObserverPositionRenderSpace,observerElevationMode:this._effectiveObserverElevationMode,observerFeatureId:this._observerFeatureId})),(({computation:e,observer:t,observerElevationMode:o,observerFeatureId:i})=>{this._onObserverRenderSpacePositionChangeForComputation(e,t,o,i)}),_)}_connectComputationToCamera(e){return v((()=>({camera:this.view.state.camera,isDirty:this._isCameraDirty})),(({isDirty:t})=>{!this.updateOnCameraChange||e.inputPoints.isValid&&!t||e.notifyInputPointsChanged()}),b)}_connectComputationToSlicePlane(e){return v((()=>this.view.slicePlane),(()=>{e.inputPoints.isValid=!1,e.notifyInputPointsChanged()}))}_connectComputationToElevation(e){const t=(o,i)=>{const n=this.analysis.observer,r=e.target;let s=null,a=null,c=null,u=null,d=null,g=null;if(p(n)&&p(n.position)){const e=L(n.position,this.view.spatialReference);if(p(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));s=e.geometry,a=n.elevationInfo,c=n.feature}if(p(r.position)){const e=L(r.position,this.view.spatialReference);if(p(e.pending))return this._updatingHandles.addPromise(e.pending),void e.pending.finally((()=>t(o,i)));u=e.geometry,d=r.elevationInfo,g=r.feature}l(s)&&l(u)||(F(o,i,te,this.view.spatialReference),p(s)&&H(te,s)&&this._onObserverPositionChange(p(n)?n.position:null,s,a,c,!1),p(u)&&H(te,u)&&this._onTargetPositionChange(e,r.position,u,d,g,!1),p(s)&&p(u)&&x(te,s,u)&&e.notifyInputPointsChanged())};return this.view.elevationProvider.on("elevation-change",(e=>t(e.extent,e.spatialReference)))}_connectComputationToTask(e){let t=g;const o={computation:e,interpolationInfo:{originalIntersection:A(),originalObserver:A(),originalTarget:A()}};return r([v((()=>this.getLineOfSightComputationDependencies(e)),(()=>{t=u(t),t=h((async e=>{await m(this._frameTask.schedule((()=>this._computeResult(o)),e))}))}),{sync:!0,initial:!0,equals:a}),s((()=>t=u(t)))])}_connectComputation(e){const t=this._computationHandles;t.has(e)||t.add([this._connectComputationToTarget(e),this._connectComputationToObserver(e),this._connectComputationToRenderSpaceObserver(e),this._connectComputationToCamera(e),this._connectComputationToSlicePlane(e),this._connectComputationToElevation(e),this._connectComputationToTask(e)],e)}_disconnectComputation(e){this._computationHandles.remove(e)}_onComputationCollectionChange({added:e,removed:t}){for(const o of t)this._disconnectComputation(o);for(const o of e)this._connectComputation(o)}_onTargetCollectionChange({added:e,removed:t}){for(const o of t)this._removeTarget(o);for(const o of e)this._addTarget(o)}_onCursorTargetChange(e,t){p(t)&&this._removeTarget(t),p(e)&&this._addTarget(e)}_addTarget(e){this._computations.some((t=>t.target===e))||this._computations.add(new M({target:e}))}_removeTarget(e){const t=this._computations.findIndex((t=>t.target===e));this._computations.removeAt(t)}_connectObserver(){return r([v((()=>({observerPosition:p(this.analysis.observer)?this.analysis.observer.position:null,projectedObserverPosition:L(p(this.analysis.observer)?this.analysis.observer.position:null,this.view.spatialReference),observerElevationInfo:p(this.analysis.observer)?this.analysis.observer.elevationInfo:null,observerFeatureInfo:p(this.analysis.observer)?this.analysis.observer.feature:null})),(({observerPosition:e,projectedObserverPosition:t,observerElevationInfo:o,observerFeatureInfo:i})=>{p(t.pending)?this._updatingHandles.addPromise(t.pending):this._onObserverPositionChange(e,t.geometry,o,i,!0)}),_)])}_connectComputations(){return f((()=>this._computations),"change",(e=>this._onComputationCollectionChange(e)),{onListenerAdd:e=>{for(const t of e)this._connectComputation(t)},onListenerRemove:e=>{for(const t of e)this._disconnectComputation(t)},sync:!0})}_connectTargets(){return r([this._updatingHandles.addOnCollectionChange((()=>this.analysis.targets),(e=>this._onTargetCollectionChange(e)),{initial:!0,final:!0}),v((()=>this.analysisViewData.cursorTarget),((e,t)=>{this._onCursorTargetChange(e,t)}))])}get _isCameraDirty(){const e=this.analysisViewData.elevationAlignedObserver,{view:t}=this,{renderCoordsHelper:o}=t;if(l(e)||l(o))return!1;const i=$;o.toRenderCoords(e,i);const n=t.state.camera.computeScreenPixelSizeAt(i);return Math.abs((n-this._screenPixelSize)/this._screenPixelSize)>Y}_getEffectiveElevationInfo(e,t){return e.hasZ?d(t,{mode:"absolute-height",offset:0}):{mode:"on-the-ground",offset:0}}};e([y({constructOnly:!0})],X.prototype,"analysis",void 0),e([y({constructOnly:!0})],X.prototype,"analysisViewData",void 0),e([y({constructOnly:!0})],X.prototype,"view",void 0),e([y()],X.prototype,"updating",null),e([y()],X.prototype,"priority",null),e([y()],X.prototype,"updateOnCameraChange",void 0),e([y()],X.prototype,"_computations",null),e([y()],X.prototype,"_elevationAlignedObserverPositionRenderSpace",null),e([y()],X.prototype,"_effectiveObserverElevationMode",void 0),e([y()],X.prototype,"_observerFeatureId",void 0),e([y()],X.prototype,"_screenPixelSize",null),e([y({readOnly:!0})],X.prototype,"_updatingHandles",void 0),e([y()],X.prototype,"_frameTask",void 0),e([y()],X.prototype,"_isCameraDirty",null),X=e([C("esri.views.3d.analysis.LineOfSight.LineOfSightController")],X);const Y=.1,$=A(),ee=N(),te=V(),oe=.05;export{X as LineOfSightController};