@arcgis/map-components 5.1.0-next.72 → 5.1.0-next.74

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 (183) hide show
  1. package/dist/cdn/2LHTH7PU.js +2 -0
  2. package/dist/cdn/3ATNVL7S.js +2 -0
  3. package/dist/cdn/5EAOM22D.js +2 -0
  4. package/dist/cdn/{Y4JRHCFK.js → 5J37HLFL.js} +1 -1
  5. package/dist/cdn/{554S4GT7.js → 5N7UWAVE.js} +1 -1
  6. package/dist/cdn/{QUNBDVIO.js → 7J7GJZ35.js} +1 -1
  7. package/dist/cdn/{G3GSHZCN.js → A26DRZN4.js} +1 -1
  8. package/dist/cdn/{MEHQNI5S.js → APKTL7SO.js} +1 -1
  9. package/dist/cdn/{USOVBTPF.js → B2S3QOVD.js} +1 -1
  10. package/dist/cdn/{CSCRKC7T.js → BH32Z76H.js} +1 -1
  11. package/dist/cdn/{VRFNBGEQ.js → CQCKW6L4.js} +1 -1
  12. package/dist/cdn/{VLGUP7FS.js → DJOFGKNV.js} +1 -1
  13. package/dist/cdn/EXZFAJW4.js +3 -0
  14. package/dist/cdn/{EVRD2ZXE.js → HAKD7266.js} +1 -1
  15. package/dist/cdn/{UQQFJYIC.js → IP6NIPH4.js} +1 -1
  16. package/dist/cdn/{TSMQD5L3.js → JE27PKO6.js} +1 -1
  17. package/dist/cdn/{VJ5MPLHQ.js → KGLUFWJ7.js} +1 -1
  18. package/dist/cdn/{UEOQ2WED.js → LWQZWUXM.js} +1 -1
  19. package/dist/cdn/{CLUML3RK.js → LZUWGRAM.js} +1 -1
  20. package/dist/cdn/{QAB2Y3S4.js → M7RBOMBN.js} +1 -1
  21. package/dist/cdn/{EDEFI5P6.js → N2ZR7Q6F.js} +1 -1
  22. package/dist/cdn/{OHCJG4B7.js → NMP4CEPM.js} +1 -1
  23. package/dist/cdn/O6JPYYGF.js +2 -0
  24. package/dist/cdn/{LWCHPGXD.js → OEYAER33.js} +1 -1
  25. package/dist/cdn/{QSERDTHV.js → QZBFM3AA.js} +1 -1
  26. package/dist/cdn/{CPYD7PR4.js → S6KYM3LN.js} +1 -1
  27. package/dist/cdn/{Y2ZNQZCC.js → SJDBMERA.js} +1 -1
  28. package/dist/cdn/{KPPYOTL2.js → STRMIFOQ.js} +1 -1
  29. package/dist/cdn/{MRSAL7QR.js → TL3BHZ3H.js} +1 -1
  30. package/dist/cdn/UPVWARLK.js +2 -0
  31. package/dist/cdn/{D3BM7IK7.js → V3BMEZZP.js} +1 -1
  32. package/dist/cdn/{LCVZHLJV.js → WULZBTNW.js} +1 -1
  33. package/dist/cdn/{3W5SAKRU.js → YCM6SOEX.js} +1 -1
  34. package/dist/cdn/ZVDWGIFU.js +2 -0
  35. package/dist/cdn/assets/slider-scale-range/t9n/messages.ar.json +1 -1
  36. package/dist/cdn/assets/slider-scale-range/t9n/messages.bg.json +1 -1
  37. package/dist/cdn/assets/slider-scale-range/t9n/messages.bs.json +1 -1
  38. package/dist/cdn/assets/slider-scale-range/t9n/messages.ca.json +1 -1
  39. package/dist/cdn/assets/slider-scale-range/t9n/messages.cs.json +1 -1
  40. package/dist/cdn/assets/slider-scale-range/t9n/messages.da.json +1 -1
  41. package/dist/cdn/assets/slider-scale-range/t9n/messages.de.json +1 -1
  42. package/dist/cdn/assets/slider-scale-range/t9n/messages.el.json +1 -1
  43. package/dist/cdn/assets/slider-scale-range/t9n/messages.es.json +1 -1
  44. package/dist/cdn/assets/slider-scale-range/t9n/messages.et.json +1 -1
  45. package/dist/cdn/assets/slider-scale-range/t9n/messages.fi.json +1 -1
  46. package/dist/cdn/assets/slider-scale-range/t9n/messages.fr.json +1 -1
  47. package/dist/cdn/assets/slider-scale-range/t9n/messages.he.json +1 -1
  48. package/dist/cdn/assets/slider-scale-range/t9n/messages.hr.json +1 -1
  49. package/dist/cdn/assets/slider-scale-range/t9n/messages.hu.json +1 -1
  50. package/dist/cdn/assets/slider-scale-range/t9n/messages.id.json +1 -1
  51. package/dist/cdn/assets/slider-scale-range/t9n/messages.it.json +1 -1
  52. package/dist/cdn/assets/slider-scale-range/t9n/messages.ja.json +1 -1
  53. package/dist/cdn/assets/slider-scale-range/t9n/messages.ko.json +1 -1
  54. package/dist/cdn/assets/slider-scale-range/t9n/messages.lt.json +1 -1
  55. package/dist/cdn/assets/slider-scale-range/t9n/messages.lv.json +1 -1
  56. package/dist/cdn/assets/slider-scale-range/t9n/messages.nl.json +1 -1
  57. package/dist/cdn/assets/slider-scale-range/t9n/messages.no.json +1 -1
  58. package/dist/cdn/assets/slider-scale-range/t9n/messages.pl.json +1 -1
  59. package/dist/cdn/assets/slider-scale-range/t9n/messages.pt-BR.json +1 -1
  60. package/dist/cdn/assets/slider-scale-range/t9n/messages.pt-PT.json +1 -1
  61. package/dist/cdn/assets/slider-scale-range/t9n/messages.ro.json +1 -1
  62. package/dist/cdn/assets/slider-scale-range/t9n/messages.ru.json +1 -1
  63. package/dist/cdn/assets/slider-scale-range/t9n/messages.sk.json +1 -1
  64. package/dist/cdn/assets/slider-scale-range/t9n/messages.sl.json +1 -1
  65. package/dist/cdn/assets/slider-scale-range/t9n/messages.sr.json +1 -1
  66. package/dist/cdn/assets/slider-scale-range/t9n/messages.sv.json +1 -1
  67. package/dist/cdn/assets/slider-scale-range/t9n/messages.th.json +1 -1
  68. package/dist/cdn/assets/slider-scale-range/t9n/messages.tr.json +1 -1
  69. package/dist/cdn/assets/slider-scale-range/t9n/messages.uk.json +1 -1
  70. package/dist/cdn/assets/slider-scale-range/t9n/messages.vi.json +1 -1
  71. package/dist/cdn/assets/slider-scale-range/t9n/messages.zh-CN.json +1 -1
  72. package/dist/cdn/assets/slider-scale-range/t9n/messages.zh-HK.json +1 -1
  73. package/dist/cdn/assets/slider-scale-range/t9n/messages.zh-TW.json +1 -1
  74. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.ar.json +1 -1
  75. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.bg.json +1 -1
  76. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.bs.json +1 -1
  77. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.ca.json +1 -1
  78. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.cs.json +1 -1
  79. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.da.json +1 -1
  80. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.de.json +1 -1
  81. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.el.json +1 -1
  82. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.es.json +1 -1
  83. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.et.json +1 -1
  84. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.fi.json +1 -1
  85. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.fr.json +1 -1
  86. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.he.json +1 -1
  87. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.hr.json +1 -1
  88. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.hu.json +1 -1
  89. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.id.json +1 -1
  90. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.it.json +1 -1
  91. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.ja.json +1 -1
  92. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.ko.json +1 -1
  93. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.lt.json +1 -1
  94. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.lv.json +1 -1
  95. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.nl.json +1 -1
  96. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.no.json +1 -1
  97. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.pl.json +1 -1
  98. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.pt-BR.json +1 -1
  99. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.pt-PT.json +1 -1
  100. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.ro.json +1 -1
  101. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.ru.json +1 -1
  102. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.sk.json +1 -1
  103. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.sl.json +1 -1
  104. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.sr.json +1 -1
  105. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.sv.json +1 -1
  106. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.th.json +1 -1
  107. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.tr.json +1 -1
  108. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.uk.json +1 -1
  109. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.vi.json +1 -1
  110. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.zh-CN.json +1 -1
  111. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.zh-HK.json +1 -1
  112. package/dist/cdn/assets/utility-network-trace-analysis/t9n/messages.zh-TW.json +1 -1
  113. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.ar.json +1 -1
  114. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.bg.json +1 -1
  115. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.bs.json +1 -1
  116. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.ca.json +1 -1
  117. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.cs.json +1 -1
  118. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.da.json +1 -1
  119. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.de.json +1 -1
  120. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.el.json +1 -1
  121. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.es.json +1 -1
  122. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.et.json +1 -1
  123. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.fi.json +1 -1
  124. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.fr.json +1 -1
  125. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.he.json +1 -1
  126. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.hr.json +1 -1
  127. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.hu.json +1 -1
  128. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.id.json +1 -1
  129. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.it.json +1 -1
  130. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.ja.json +1 -1
  131. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.ko.json +1 -1
  132. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.lt.json +1 -1
  133. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.lv.json +1 -1
  134. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.nl.json +1 -1
  135. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.no.json +1 -1
  136. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.pl.json +1 -1
  137. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.pt-BR.json +1 -1
  138. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.pt-PT.json +1 -1
  139. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.ro.json +1 -1
  140. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.ru.json +1 -1
  141. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.sk.json +1 -1
  142. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.sl.json +1 -1
  143. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.sr.json +1 -1
  144. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.sv.json +1 -1
  145. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.th.json +1 -1
  146. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.tr.json +1 -1
  147. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.uk.json +1 -1
  148. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.vi.json +1 -1
  149. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.zh-CN.json +1 -1
  150. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.zh-HK.json +1 -1
  151. package/dist/cdn/assets/utility-network-trace-location-list/t9n/messages.zh-TW.json +1 -1
  152. package/dist/cdn/index.js +1 -1
  153. package/dist/chunks/async-utils.js +76 -68
  154. package/dist/chunks/feature-utils.js +5 -3
  155. package/dist/chunks/slots.js +1 -1
  156. package/dist/components/arcgis-feature-media/customElement.js +199 -172
  157. package/dist/components/arcgis-feature-relationship/customElement.js +1 -1
  158. package/dist/components/arcgis-presentation/PresentationViewModel.d.ts +3 -1
  159. package/dist/components/arcgis-presentation/customElement.d.ts +48 -0
  160. package/dist/components/arcgis-presentation/customElement.js +242 -87
  161. package/dist/components/arcgis-utility-network-trace-analysis/customElement.js +30 -30
  162. package/dist/components/arcgis-utility-network-trace-inputs/customElement.js +26 -26
  163. package/dist/components/arcgis-utility-network-trace-location/customElement.js +1 -1
  164. package/dist/components/arcgis-utility-network-trace-location-list/customElement.js +11 -8
  165. package/dist/components/arcgis-video/customElement.js +7 -7
  166. package/dist/components/arcgis-video-player/customElement.d.ts +13 -2
  167. package/dist/docs/api.json +1 -1
  168. package/dist/docs/docs.json +1 -1
  169. package/dist/docs/vscode.html-custom-data.json +1 -1
  170. package/dist/docs/web-types.json +1 -1
  171. package/dist/loader.js +1 -1
  172. package/dist/types/lumina.d.ts +3 -1
  173. package/dist/types/preact.d.ts +3 -1
  174. package/dist/types/react.d.ts +3 -1
  175. package/dist/types/stencil.d.ts +3 -1
  176. package/package.json +4 -4
  177. package/dist/cdn/3E5YVI67.js +0 -2
  178. package/dist/cdn/4LHL7RRT.js +0 -3
  179. package/dist/cdn/5MHPKAFK.js +0 -2
  180. package/dist/cdn/6BSMOKA6.js +0 -2
  181. package/dist/cdn/DSWEKHYV.js +0 -2
  182. package/dist/cdn/EQVGDKPR.js +0 -2
  183. package/dist/cdn/ISTXVEU6.js +0 -2
@@ -8,7 +8,7 @@ import { templateHasKey as E, stripHTML as N } from "@arcgis/core/applications/C
8
8
  import { isRelatableFeatureSupportedLayer as K, findRelatedLayer as W } from "@arcgis/core/applications/Components/featureUtils.js";
9
9
  import { substitute as Z, formatNumber as O } from "@arcgis/core/intl.js";
10
10
  import { watch as f, on as z } from "@arcgis/core/core/reactiveUtils.js";
11
- import { m as G } from "../../chunks/feature-utils.js";
11
+ import { o as G } from "../../chunks/feature-utils.js";
12
12
  import V from "@arcgis/core/core/Collection.js";
13
13
  import S from "@arcgis/core/rest/support/RelationshipQuery.js";
14
14
  import { ignoreAbortErrors as q } from "@arcgis/core/core/promiseUtils.js";
@@ -4,7 +4,7 @@ import type SceneView from "@arcgis/core/views/SceneView.js";
4
4
  import type Slide from "@arcgis/core/webscene/Slide.js";
5
5
 
6
6
  /** @internal */
7
- export interface PresentationViewModelProperties extends Partial<Pick<PresentationViewModel, "keyboardNavigationEnabled" | "slideId" | "view">> {}
7
+ export interface PresentationViewModelProperties extends Partial<Pick<PresentationViewModel, "keyboardNavigationEnabled" | "onApplySlideComplete" | "onApplySlideStart" | "slideId" | "view">> {}
8
8
 
9
9
  /** @internal */
10
10
  export default class PresentationViewModel extends Accessor {
@@ -19,6 +19,8 @@ export default class PresentationViewModel extends Accessor {
19
19
  */
20
20
  accessor keyboardNavigationEnabled: boolean;
21
21
  get lastSlideSelected(): boolean;
22
+ accessor onApplySlideComplete: ((slide: Slide) => void) | undefined;
23
+ accessor onApplySlideStart: ((slide: Slide) => void) | undefined;
22
24
  accessor slideId: string | undefined;
23
25
  get slideIndex(): number;
24
26
  get slideSelected(): boolean;
@@ -1,5 +1,8 @@
1
1
  /// <reference path="../../index.d.ts" />
2
2
  import type SceneView from "@arcgis/core/views/SceneView.js";
3
+ import type Slide from "@arcgis/core/webscene/Slide.js";
4
+ import type Graphic from "@arcgis/core/Graphic.js";
5
+ import type Point from "@arcgis/core/geometry/Point.js";
3
6
  import type { PublicLitElement as LitElement } from "@arcgis/lumina";
4
7
  import type { T9nMeta } from "@arcgis/lumina/controllers";
5
8
 
@@ -44,6 +47,14 @@ export abstract class ArcgisPresentation extends LitElement {
44
47
  * @default false
45
48
  */
46
49
  accessor keyboardNavigationEnabled: boolean;
50
+ /**
51
+ * Disable display of popup when slide with popup is applied.
52
+ * Per default the display of popup is disabled.
53
+ * The events arcgisPopupFeaturesRetrieved and arcgisPopupFeatureNotFound will be emitted also when popups are disabled.
54
+ *
55
+ * @default false
56
+ */
57
+ accessor popupDisabled: boolean;
47
58
  /**
48
59
  * specifies the size of the component
49
60
  *
@@ -59,9 +70,46 @@ export abstract class ArcgisPresentation extends LitElement {
59
70
  accessor view: SceneView | undefined;
60
71
  /** Permanently destroy the component */
61
72
  destroy(): Promise<void>;
73
+ /**
74
+ * Fires after a slide with a popup reference element has been applied, but the component was unable to retrieve the popup feature.
75
+ * This event may be used to show a custom error message for such cases.
76
+ *
77
+ * @see [SlideElements.popupInfo](https://developers.arcgis.com/javascript/latest/references/core/webscene/support/SlideElements/#popupInfo)
78
+ * @example
79
+ * ```js
80
+ * reactiveUtils.on(()=> component, "arcgisPopupFeatureNotFound", (event)=>{
81
+ * // show error message if popup feature has not been found
82
+ * console.error("Unable to retrieve popup feature");
83
+ * });
84
+ * ```
85
+ */
86
+ readonly arcgisPopupFeatureNotFound: import("@arcgis/lumina").TargetedEvent<this, { slide: Slide; }>;
87
+ /**
88
+ * Fires after the popup feature(s) of a slide have been retrieved from the service or from the view.
89
+ * This event may be used to show the popup graphic not in a popup, but in another component, e.g. ArcgisFeature.
90
+ *
91
+ * @see [ArcgisFeature](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-feature/)
92
+ * @example
93
+ * ```js
94
+ * reactiveUtils.on(()=> component, "arcgisPopupFeaturesRetrieved", (event)=>{
95
+ * const { features, slide } = (
96
+ * event as CustomEvent<{ slide: Slide; features: Graphic[]; location: Point | undefined }>
97
+ * ).detail;
98
+ * const arcgisFeature = document.querySelector("arcgis-feature");
99
+ * arcgisFeature.graphic = features.length > 0 ? features[0] : null;
100
+ * });
101
+ * ```
102
+ */
103
+ readonly arcgisPopupFeaturesRetrieved: import("@arcgis/lumina").TargetedEvent<this, {
104
+ slide: Slide;
105
+ features: Graphic[];
106
+ location: Point | undefined;
107
+ }>;
62
108
  /** Emitted when the component associated with a map or scene view is ready to be interacted with. */
63
109
  readonly arcgisReady: import("@arcgis/lumina").TargetedEvent<this, void>;
64
110
  readonly "@eventTypes": {
111
+ arcgisPopupFeatureNotFound: ArcgisPresentation["arcgisPopupFeatureNotFound"]["detail"];
112
+ arcgisPopupFeaturesRetrieved: ArcgisPresentation["arcgisPopupFeaturesRetrieved"]["detail"];
65
113
  arcgisReady: ArcgisPresentation["arcgisReady"]["detail"];
66
114
  };
67
115
  }
@@ -1,32 +1,41 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import { c as v } from "../../chunks/runtime.js";
3
- import { css as g, html as h } from "lit";
4
- import { useDirection as u } from "@arcgis/lumina/controllers";
5
- import { LitElement as S, createEvent as m, nothing as a } from "@arcgis/lumina";
6
- import { u as b } from "../../chunks/useT9n.js";
7
- import { m as w } from "../../chunks/useViewModel.js";
8
- import { property as d, subclass as y } from "@arcgis/core/core/accessorSupport/decorators.js";
9
- import f from "@arcgis/core/core/Accessor.js";
10
- import p from "@arcgis/core/core/Collection.js";
11
- import { ignoreAbortErrors as x } from "@arcgis/core/core/promiseUtils.js";
12
- import { on as I, watch as _ } from "@arcgis/core/core/reactiveUtils.js";
13
- const E = g`:host{width:100%;height:100%;padding:var(--calcite-spacing-none);margin:var(--calcite-spacing-none);display:flex}p{padding:0;margin:0}.root{--internal-attribution-height: 16px;pointer-events:auto;display:flex;align-items:center;gap:var(--calcite-spacing-sm);background-color:var(--calcite-color-foreground-1);box-shadow:var(--arcgis-internal-box-shadow);align-self:flex-end;margin-block:auto calc(var(--calcite-spacing-fixed-xl) + var(--internal-attribution-height));margin-inline-start:var(--calcite-spacing-fixed-xl)}.slide-counter-text{display:flex;align-items:center;justify-content:center;gap:var(--calcite-spacing-base);min-width:64px}.slide-counter-text-element{box-sizing:border-box;max-width:28px;margin:0;padding:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums}`;
14
- var M = Object.defineProperty, A = Object.getOwnPropertyDescriptor, r = (e, t, i, l) => {
15
- for (var n = l > 1 ? void 0 : l ? A(t, i) : t, c = e.length - 1, o; c >= 0; c--)
16
- (o = e[c]) && (n = (l ? o(t, i, n) : o(n)) || n);
17
- return l && n && M(t, i, n), n;
2
+ import { c as w } from "../../chunks/runtime.js";
3
+ import { css as _, html as h } from "lit";
4
+ import { GenericController as I, useDirection as x } from "@arcgis/lumina/controllers";
5
+ import { LitElement as F, createEvent as S, nothing as u } from "@arcgis/lumina";
6
+ import { u as P } from "../../chunks/useT9n.js";
7
+ import { m as A } from "../../chunks/useViewModel.js";
8
+ import { property as d, subclass as C } from "@arcgis/core/core/accessorSupport/decorators.js";
9
+ import L from "@arcgis/core/core/Accessor.js";
10
+ import y from "@arcgis/core/core/Collection.js";
11
+ import { ignoreAbortErrors as E } from "@arcgis/core/core/promiseUtils.js";
12
+ import { on as O, whenOnce as g, watch as M } from "@arcgis/core/core/reactiveUtils.js";
13
+ import N from "@arcgis/core/Graphic.js";
14
+ import B from "@arcgis/core/layers/Layer.js";
15
+ import T from "@arcgis/core/graphic/CSVGraphicOrigin.js";
16
+ import G from "@arcgis/core/graphic/GeoJSONGraphicOrigin.js";
17
+ import R from "@arcgis/core/graphic/SceneGraphicOrigin.js";
18
+ import $ from "@arcgis/core/graphic/WFSGraphicOrigin.js";
19
+ import V from "@arcgis/core/graphic/BuildingGraphicOrigin.js";
20
+ import k from "@arcgis/core/graphic/FeatureGraphicOrigin.js";
21
+ import { fetchPopupFeaturesFromGraphics as b } from "@arcgis/core/applications/SceneViewer/sceneViewerUtils.js";
22
+ const D = _`:host{width:100%;height:100%;padding:var(--calcite-spacing-none);margin:var(--calcite-spacing-none);display:flex}p{padding:0;margin:0}.root{--internal-attribution-height: 16px;pointer-events:auto;display:flex;align-items:center;gap:var(--calcite-spacing-sm);background-color:var(--calcite-color-foreground-1);box-shadow:var(--arcgis-internal-box-shadow);align-self:flex-end;margin-block:auto calc(var(--calcite-spacing-fixed-xl) + var(--internal-attribution-height));margin-inline-start:var(--calcite-spacing-fixed-xl)}.slide-counter-text{display:flex;align-items:center;justify-content:center;gap:var(--calcite-spacing-base);min-width:64px}.slide-counter-text-element{box-sizing:border-box;max-width:28px;margin:0;padding:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums}`;
23
+ var H = Object.defineProperty, j = Object.getOwnPropertyDescriptor, l = (s, e, t, i) => {
24
+ for (var r = i > 1 ? void 0 : i ? j(e, t) : e, n = s.length - 1, a; n >= 0; n--)
25
+ (a = s[n]) && (r = (i ? a(e, t, r) : a(r)) || r);
26
+ return i && r && H(e, t, r), r;
18
27
  };
19
- let s = class extends f {
28
+ let o = class extends L {
20
29
  //#region Lifecycle
21
- constructor(e) {
22
- super(e), this.keyboardNavigationEnabled = !1, this._subscribeToSlideEvents = (t) => {
23
- this._unSubscribeToSlideEvents(t), t.forEach((i) => {
24
- const l = i.on("apply-slide-start", () => this._onApplySlideStart(i));
25
- this.addHandles(l, i.id);
30
+ constructor(s) {
31
+ super(s), this.keyboardNavigationEnabled = !1, this._subscribeToSlideEvents = (e) => {
32
+ this._unSubscribeToSlideEvents(e), e.forEach((t) => {
33
+ const i = t.on("apply-slide-start", () => this._onApplySlideStart(t)), r = t.on("apply-slide-complete", () => this._onApplySlideComplete(t));
34
+ this.addHandles(i, t.id), this.addHandles(r, t.id);
26
35
  });
27
- }, this._unSubscribeToSlideEvents = (t) => {
28
- t.forEach((i) => {
29
- this.hasHandles(i.id) && this.removeHandles(i.id);
36
+ }, this._unSubscribeToSlideEvents = (e) => {
37
+ e.forEach((t) => {
38
+ this.hasHandles(t.id) && this.removeHandles(t.id);
30
39
  });
31
40
  };
32
41
  }
@@ -37,7 +46,7 @@ let s = class extends f {
37
46
  this._unSubscribeToSlideEvents(this.visibleSlides);
38
47
  }
39
48
  get visibleSlides() {
40
- return this.view?.map?.presentation?.slides?.filter((e) => !e.hidden) ?? new p();
49
+ return this.view?.map?.presentation?.slides?.filter((s) => !s.hidden) ?? new y();
41
50
  }
42
51
  get lastSlideSelected() {
43
52
  return this.getSlideIndexBySlideId(this.slideId) === this.visibleSlides.length - 1;
@@ -54,38 +63,38 @@ let s = class extends f {
54
63
  get slideIndex() {
55
64
  return this.getSlideIndexBySlideId(this.slideId);
56
65
  }
57
- getSlideIndexBySlideId(e) {
58
- let t = -1;
59
- return e && (t = this.visibleSlides.findIndex((i) => i.id === e)), t;
66
+ getSlideIndexBySlideId(s) {
67
+ let e = -1;
68
+ return s && (e = this.visibleSlides.findIndex((t) => t.id === s)), e;
60
69
  }
61
- navigateInPresentation(e) {
62
- const t = this.slideIndex + e;
63
- let i = this._getSlideBySlideIndex(t);
64
- i ??= this._getSlideBySlideIndex(0), i && this._applySlide(i);
70
+ navigateInPresentation(s) {
71
+ const e = this.slideIndex + s;
72
+ let t = this._getSlideBySlideIndex(e);
73
+ t ??= this._getSlideBySlideIndex(0), t && this._applySlide(t);
65
74
  }
66
- captureArrowKeysForNavigation(e, t) {
67
- const i = ["ArrowLeft", "ArrowRight", "PageUp", "PageDown"];
68
- if (document.activeElement?.nodeName.toLowerCase() === "arcgis-scene" || !i.includes(e.code))
75
+ captureArrowKeysForNavigation(s, e) {
76
+ const t = ["ArrowLeft", "ArrowRight", "PageUp", "PageDown"];
77
+ if (document.activeElement?.nodeName.toLowerCase() === "arcgis-scene" || !t.includes(s.code))
69
78
  return;
70
- const n = t === "rtl" ? "ArrowRight" : "ArrowLeft", o = e.code === n || e.code === "PageUp" ? -1 : 1;
71
- this.navigateInPresentation(o);
79
+ const r = e === "rtl" ? "ArrowRight" : "ArrowLeft", a = s.code === r || s.code === "PageUp" ? -1 : 1;
80
+ this.navigateInPresentation(a);
72
81
  }
73
82
  //#endregion
74
83
  //#region Private Methods
75
- _getSlideBySlideIndex(e) {
76
- if (e != null && e >= 0 && e < this.visibleSlides.length)
77
- return this.visibleSlides.getItemAt(e);
84
+ _getSlideBySlideIndex(s) {
85
+ if (s != null && s >= 0 && s < this.visibleSlides.length)
86
+ return this.visibleSlides.getItemAt(s);
78
87
  }
79
- async _applySlide(e) {
80
- this.view && await x(e.applyTo(this.view));
88
+ async _applySlide(s) {
89
+ this.view && await E(s.applyTo(this.view));
81
90
  }
82
91
  _startWatchVisibleSlides() {
83
92
  this._subscribeToSlideEvents(this.visibleSlides), this.addHandles(
84
- I(
93
+ O(
85
94
  () => this.visibleSlides,
86
95
  "change",
87
- (e) => {
88
- this._subscribeToSlideEvents(new p(e.added)), this._unSubscribeToSlideEvents(new p(e.removed));
96
+ (s) => {
97
+ this._subscribeToSlideEvents(new y(s.added)), this._unSubscribeToSlideEvents(new y(s.removed));
89
98
  },
90
99
  {
91
100
  onListenerAdd: this._subscribeToSlideEvents,
@@ -94,80 +103,226 @@ let s = class extends f {
94
103
  )
95
104
  );
96
105
  }
97
- _onApplySlideStart(e) {
98
- this.slideId = e.id;
106
+ _onApplySlideStart(s) {
107
+ this.slideId = s.id, this.onApplySlideStart?.(s);
108
+ }
109
+ _onApplySlideComplete(s) {
110
+ this.onApplySlideComplete?.(s);
99
111
  }
100
112
  //#endregion
101
113
  };
102
- r([
114
+ l([
115
+ d()
116
+ ], o.prototype, "view", 2);
117
+ l([
118
+ d()
119
+ ], o.prototype, "slideId", 2);
120
+ l([
103
121
  d()
104
- ], s.prototype, "view", 2);
105
- r([
122
+ ], o.prototype, "keyboardNavigationEnabled", 2);
123
+ l([
106
124
  d()
107
- ], s.prototype, "slideId", 2);
108
- r([
125
+ ], o.prototype, "visibleSlides", 1);
126
+ l([
109
127
  d()
110
- ], s.prototype, "keyboardNavigationEnabled", 2);
111
- r([
128
+ ], o.prototype, "lastSlideSelected", 1);
129
+ l([
112
130
  d()
113
- ], s.prototype, "visibleSlides", 1);
114
- r([
131
+ ], o.prototype, "firstSlideSelected", 1);
132
+ l([
115
133
  d()
116
- ], s.prototype, "lastSlideSelected", 1);
117
- r([
134
+ ], o.prototype, "slideSelected", 1);
135
+ l([
118
136
  d()
119
- ], s.prototype, "firstSlideSelected", 1);
120
- r([
137
+ ], o.prototype, "hasOnlyOneSlide", 1);
138
+ l([
121
139
  d()
122
- ], s.prototype, "slideSelected", 1);
123
- r([
140
+ ], o.prototype, "onApplySlideStart", 2);
141
+ l([
124
142
  d()
125
- ], s.prototype, "hasOnlyOneSlide", 1);
126
- r([
143
+ ], o.prototype, "onApplySlideComplete", 2);
144
+ l([
127
145
  d()
128
- ], s.prototype, "getSlideIndexBySlideId", 1);
129
- s = r([
130
- y("components.presentation.PresentationViewModel")
131
- ], s);
132
- const $ = w(s);
133
- class P extends S {
146
+ ], o.prototype, "getSlideIndexBySlideId", 1);
147
+ o = l([
148
+ C("components.presentation.PresentationViewModel")
149
+ ], o);
150
+ class W extends I {
151
+ constructor(e) {
152
+ super(e);
153
+ }
154
+ hostLoaded() {
155
+ this.component.manager.onLifecycle(() => {
156
+ const e = this.component;
157
+ g(() => e.referenceElement).then((t) => {
158
+ this._isArcgisScene(t) && (this._sceneRef = t);
159
+ });
160
+ });
161
+ }
162
+ openPopup(e) {
163
+ this.component.view && this.component.slideId === e.id && e.elements.popupInfo != null && this._preparePopupFeature(this.component.view, e.elements.popupInfo).then(
164
+ ({ success: t, features: i, popupInfo: r }) => {
165
+ this.component.slideId === e.id && (t ? this._handlePopupFeatureFound(e, i, r) : this.component.arcgisPopupFeatureNotFound.emit({ slide: e }));
166
+ }
167
+ );
168
+ }
169
+ //#region Private Methods
170
+ _isArcgisScene(e) {
171
+ return e === void 0 || typeof e == "string" ? !1 : "tagName" in e && e.tagName === "ARCGIS-SCENE";
172
+ }
173
+ closePopup() {
174
+ this.component.popupDisabled || this._sceneRef?.closePopup();
175
+ }
176
+ async _handlePopupFeatureFound(e, t, i) {
177
+ const r = i?.location ?? void 0;
178
+ this.component.arcgisPopupFeaturesRetrieved.emit({ slide: e, features: t, location: r }), this.component.popupDisabled || await this._sceneRef?.openPopup({
179
+ features: t,
180
+ location: r
181
+ });
182
+ }
183
+ async _preparePopupFeature(e, t) {
184
+ let i = [];
185
+ if (!t.features?.length || t.features.length === 0)
186
+ return { success: !1, features: i };
187
+ const r = t.features?.getItemAt(t.selectedFeatureIndex)?.layerReference;
188
+ if (r?.layerId == null)
189
+ return { success: !1, features: i };
190
+ const { layer: n, sublayer: a } = this._getLayersFromView(e, r.layerId, r?.sublayerId);
191
+ if (!n)
192
+ return { success: !1, features: i };
193
+ const c = a ?? n;
194
+ if (!c || !this._layerTypeSupportsCapturePopup(c))
195
+ return { success: !1, features: i };
196
+ if (i = await this._fetchFeaturesFromQueryable(e, t, n, a, c), i && this._featureHasBeenFilledWithAttributes(i)) {
197
+ const p = i[0];
198
+ return this._setFallbackPopupTemplate(p, a, n), this._setFallbackGeometry(p, t?.location), { success: !0, features: i, popupInfo: t };
199
+ }
200
+ return { success: !1, features: i };
201
+ }
202
+ _getLayersFromView(e, t, i) {
203
+ const r = e.map?.findLayerById(t) ?? void 0, n = this._getBuildingSceneLayerSublayer(r, i);
204
+ return { layer: r, sublayer: n };
205
+ }
206
+ _getBuildingSceneLayerSublayer(e, t) {
207
+ let i;
208
+ return e && this._isLayer(e) && this._isBuildingSceneLayer(e) && t != null && (i = e.allSublayers.find(
209
+ (r) => r.id === t && r.type === "building-component"
210
+ )), i;
211
+ }
212
+ _featureHasBeenFilledWithAttributes(e) {
213
+ return e && e.length > 0 && e[0].attributes && Object.entries(e[0].attributes)?.length > 1;
214
+ }
215
+ async _fetchFeaturesFromQueryable(e, t, i, r, n) {
216
+ const a = t.features?.getItemAt(t.selectedFeatureIndex);
217
+ if (a?.id == null)
218
+ return await Promise.resolve([]);
219
+ const c = await e.whenLayerView(i);
220
+ await g(() => !c.updating);
221
+ const m = this._tryGetBuildingComponentSublayerView(i, r, c) ?? c;
222
+ await g(() => !m.updating);
223
+ const f = this._createFeatureGraphic(i, r, n, a.id);
224
+ let v = await b(m, [f]);
225
+ return this._featureHasBeenFilledWithAttributes(v) || (await g(() => !e.updating), v = await b(m, [f])), v;
226
+ }
227
+ _tryGetBuildingComponentSublayerView(e, t, i) {
228
+ let r;
229
+ return this._isLayer(e) && this._isBuildingSceneLayer(e) && t != null && (r = i.sublayerViews.find(
230
+ (n) => n.sublayer.id === t.id
231
+ )), r;
232
+ }
233
+ _setFallbackPopupTemplate(e, t, i) {
234
+ e.popupTemplate == null && (e.popupTemplate = t?.popupTemplate ? t.popupTemplate : i.popupTemplate);
235
+ }
236
+ /**
237
+ * If there is no geometry of the feature in the service,
238
+ * the popup highlights the location point in the scene.
239
+ *
240
+ * @param popupFeature
241
+ * @param location
242
+ * @private
243
+ */
244
+ _setFallbackGeometry(e, t) {
245
+ e.geometry == null && t && (e.geometry = t.clone());
246
+ }
247
+ _createFeatureGraphic(e, t, i, r) {
248
+ const n = this._getGlobalIdFieldNameFromLayer(i), a = r.type === "global-id" && n ? n : i.objectIdField, c = this._getGraphicOrigin(e, t), p = new N({ attributes: {}, layer: e, origin: c });
249
+ return p.attributes[a] = r.value, p;
250
+ }
251
+ _getGraphicOrigin(e, t) {
252
+ switch (e.type) {
253
+ case "csv":
254
+ return new T(e);
255
+ case "feature":
256
+ return new k(e);
257
+ case "geojson":
258
+ return new G(e);
259
+ case "scene":
260
+ return new R(e);
261
+ case "wfs":
262
+ return new $(e);
263
+ case "building-scene":
264
+ return t ? new V(t) : void 0;
265
+ default:
266
+ return;
267
+ }
268
+ }
269
+ _layerTypeSupportsCapturePopup(e) {
270
+ return e != null && ["csv", "feature", "geojson", "wfs", "scene", "building-component"].includes(e.type);
271
+ }
272
+ _isLayer(e) {
273
+ return !!e && e instanceof B;
274
+ }
275
+ _isBuildingSceneLayer(e) {
276
+ return e?.type === "building-scene";
277
+ }
278
+ _getGlobalIdFieldNameFromLayer(e) {
279
+ return e.fields?.find((t) => t.type === "global-id")?.name;
280
+ }
281
+ //#endregion
282
+ }
283
+ const K = (s) => new W(s), z = A(o);
284
+ class Q extends F {
134
285
  constructor() {
135
- super(...arguments), this._messages = b(), this.viewModel = $(this), this._direction = u(), this._captureArrowKeysForNavigation = (t) => {
136
- this.viewModel.captureArrowKeysForNavigation(t, this._direction);
137
- }, this.autoDestroyDisabled = !1, this.view = this.viewModel.view, this.scale = "m", this.keyboardNavigationEnabled = !1, this.arcgisReady = m();
286
+ super(...arguments), this._messages = P(), this.viewModel = z(this), this._direction = x(), this._captureArrowKeysForNavigation = (e) => {
287
+ this.viewModel.captureArrowKeysForNavigation(e, this._direction);
288
+ }, this._useFeatureRefPopup = K(this), this._handleApplySlideStart = () => {
289
+ this._useFeatureRefPopup.closePopup();
290
+ }, this._handleApplySlideComplete = (e) => {
291
+ this._useFeatureRefPopup.openPopup(e);
292
+ }, this.autoDestroyDisabled = !1, this.view = this.viewModel.view, this.scale = "m", this.keyboardNavigationEnabled = !1, this.popupDisabled = !1, this.arcgisPopupFeatureNotFound = S(), this.arcgisPopupFeaturesRetrieved = S(), this.arcgisReady = S();
138
293
  }
139
294
  static {
140
- this.properties = { slideId: 1, autoDestroyDisabled: 5, view: 0, scale: 1, keyboardNavigationEnabled: 5 };
295
+ this.properties = { slideId: 1, autoDestroyDisabled: 5, view: 0, scale: 1, keyboardNavigationEnabled: 5, popupDisabled: 5 };
141
296
  }
142
297
  static {
143
- this.styles = E;
298
+ this.styles = D;
144
299
  }
145
300
  get slideId() {
146
301
  return this.viewModel.slideId;
147
302
  }
148
- set slideId(t) {
149
- this.viewModel.slideId = t;
303
+ set slideId(e) {
304
+ this.viewModel.slideId = e;
150
305
  }
151
306
  async destroy() {
152
307
  await this.manager.destroy();
153
308
  }
154
309
  loaded() {
155
- this.manager.onLifecycle(() => _(() => this.keyboardNavigationEnabled, (i) => {
156
- document.removeEventListener("keydown", this._captureArrowKeysForNavigation), i && document.addEventListener("keydown", this._captureArrowKeysForNavigation);
157
- }, { initial: !0 })), this.manager.onDisconnected(() => {
310
+ this.manager.onLifecycle(() => (this.viewModel.onApplySlideStart = this._handleApplySlideStart, this.viewModel.onApplySlideComplete = this._handleApplySlideComplete, M(() => this.keyboardNavigationEnabled, (t) => {
311
+ document.removeEventListener("keydown", this._captureArrowKeysForNavigation), t && document.addEventListener("keydown", this._captureArrowKeysForNavigation);
312
+ }, { initial: !0 }))), this.manager.onDisconnected(() => {
158
313
  document.removeEventListener("keydown", this._captureArrowKeysForNavigation);
159
314
  });
160
315
  }
161
316
  render() {
162
- const t = this.viewModel.lastSlideSelected && !this.viewModel.hasOnlyOneSlide, i = this._direction === "rtl", l = i ? "chevron-right" : "chevron-left", n = i ? "chevron-left" : "chevron-right";
163
- return this.viewModel.visibleSlides.length === 0 ? h`<div></div>` : h`<div class="root"><calcite-button appearance=transparent icon-start=${l ?? a} kind=neutral .scale=${this.scale} .disabled=${this.viewModel.firstSlideSelected || !this.viewModel.slideSelected} .label=${this._messages.previous} title=${this._messages.previous ?? a} @click=${() => this.viewModel.navigateInPresentation(-1)}></calcite-button><div class="slide-counter-text">${this._renderSlideCounter()}</div><calcite-button appearance=transparent icon-start=${(t ? "reset" : n) ?? a} kind=neutral .scale=${this.scale} .label=${t ? this._messages.restart : this._messages.next} title=${(t ? this._messages.restart : this._messages.next) ?? a} @click=${() => this.viewModel.navigateInPresentation(1)}></calcite-button></div>`;
317
+ const e = this.viewModel.lastSlideSelected && !this.viewModel.hasOnlyOneSlide, t = this._direction === "rtl", i = t ? "chevron-right" : "chevron-left", r = t ? "chevron-left" : "chevron-right";
318
+ return this.viewModel.visibleSlides.length === 0 ? h`<div></div>` : h`<div class="root"><calcite-button appearance=transparent icon-start=${i ?? u} kind=neutral .scale=${this.scale} .disabled=${this.viewModel.firstSlideSelected || !this.viewModel.slideSelected} .label=${this._messages.previous} title=${this._messages.previous ?? u} @click=${() => this.viewModel.navigateInPresentation(-1)}></calcite-button><div class="slide-counter-text">${this._renderSlideCounter()}</div><calcite-button appearance=transparent icon-start=${(e ? "reset" : r) ?? u} kind=neutral .scale=${this.scale} .label=${e ? this._messages.restart : this._messages.next} title=${(e ? this._messages.restart : this._messages.next) ?? u} @click=${() => this.viewModel.navigateInPresentation(1)}></calcite-button></div>`;
164
319
  }
165
320
  _renderSlideCounter() {
166
- const t = this.viewModel.slideIndex + 1, i = this._messages?.slideNavAriaText?.replace("${index}", t.toString()).replace("${numberOfSlides}", this.viewModel.visibleSlides.length.toString());
167
- return this.viewModel.slideSelected ? h`<p role=banner aria-label=${i ?? a} aria-live=polite><div class="slide-counter-text-element" data-testId=arcgis-map-presentation-slideIndex>${t}</div><div class="slide-counter-text-element">/</div><p class="slide-counter-text-element" data-testId=arcgis-map-presentation-numberOfSlides>${this.viewModel.visibleSlides.length}</p></p>` : h`<p role=banner data-testId=arcgis-map-presentation-numberOfSlides>${this.viewModel.visibleSlides?.length} ${this._messages?.slides}</p>`;
321
+ const e = this.viewModel.slideIndex + 1, t = this._messages?.slideNavAriaText?.replace("${index}", e.toString()).replace("${numberOfSlides}", this.viewModel.visibleSlides.length.toString());
322
+ return this.viewModel.slideSelected ? h`<p role=banner aria-label=${t ?? u} aria-live=polite><div class="slide-counter-text-element" data-testId=arcgis-map-presentation-slideIndex>${e}</div><div class="slide-counter-text-element">/</div><p class="slide-counter-text-element" data-testId=arcgis-map-presentation-numberOfSlides>${this.viewModel.visibleSlides.length}</p></p>` : h`<p role=banner data-testId=arcgis-map-presentation-numberOfSlides>${this.viewModel.visibleSlides?.length} ${this._messages?.slides}</p>`;
168
323
  }
169
324
  }
170
- v("arcgis-presentation", P);
325
+ w("arcgis-presentation", Q);
171
326
  export {
172
- P as ArcgisPresentation
327
+ Q as ArcgisPresentation
173
328
  };