@arcgis/map-components
Version:
ArcGIS Map Components
2 lines • 18.8 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
import{c as b}from"./XUKTPPFV.js";import e from"./KA7BM2DQ.js";import{a as B}from"./HZFVK34O.js";import d from"./LKOVDQTE.js";import c from"./OAWV35F7.js";import{a as R,f as M}from"./AKBXFBDL.js";import"./LMBRORN7.js";import a from"./5E6WEUZS.js";import"./PBSJQPB2.js";import{O as E,R as g,U as $,a as C,b as u,x as _,z as x}from"./WUJCCZQC.js";import"./3TTFCHAA.js";export default $arcgis.t(([{property:p,subclass:k},T,I,{ignoreAbortErrors:D},{watch:m,on:H,whenOnce:f},j,V,K,W,U,Q,q,J,{fetchPopupFeaturesFromGraphics:G},,,,N])=>{var X=C`:host{width:100%;height:100%;padding:var(--calcite-spacing-none);margin:var(--calcite-spacing-none);display:flex;--internal-attribution-height: 16px;--arcgis-internal-presentation-padding-start: unset;--arcgis-internal-presentation-padding-end: unset;--arcgis-internal-presentation-cover-padding-top: unset;--arcgis-internal-presentation-cover-padding-bottom: unset;--arcgis-internal-presentation-cover-padding-start: unset;--arcgis-internal-presentation-cover-padding-end: unset}p{padding:0;margin:0}.root{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%}.presentation-content{display:flex;width:100%;justify-content:flex-end;padding-top:var(--calcite-spacing-lg);padding-inline-start:calc(var(--calcite-spacing-lg) + var(--arcgis-internal-presentation-padding-start));padding-inline-end:calc(var(--calcite-spacing-lg) + var(--arcgis-internal-presentation-padding-end))}.navigation{width:fit-content;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);margin-block:auto calc(var(--calcite-spacing-lg) + var(--internal-attribution-height));margin-inline-start:var(--calcite-spacing-lg)}.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}.legend{pointer-events:all;box-shadow:var(--calcite-shadow-sm);max-width:300px;height:auto;max-height:calc(100vh - 136px);overflow:hidden auto}`,Z=Object.defineProperty,Y=Object.getOwnPropertyDescriptor,d=(i,e,t,s)=>{for(var n=s>1?void 0:s?Y(e,t):e,r=i.length-1,a;r>=0;r--)(a=i[r])&&(n=(s?a(e,t,n):a(n))||n);return s&&n&&Z(e,t,n),n},o=class extends T{constructor(i){super(i),this.transitionActive=!1,this.showLegend=!1,this.keyboardNavigationEnabled=!1,this._subscribeToSlideEvents=e=>{this._unsubscribeToSlideEvents(e),e.forEach(t=>{let s=t.on("apply-slide-start",()=>this._onApplySlideStart(t)),n=t.on("apply-slide-complete",()=>this._onApplySlideComplete(t)),r=t.on("apply-slide-cancel",()=>this._onApplySlideCancel(t));this.addHandles(s,t.id),this.addHandles(n,t.id),this.addHandles(r,t.id)})},this._unsubscribeToSlideEvents=e=>{e.forEach(t=>{this.hasHandles(t.id)&&this.removeHandles(t.id)})}}initialize(){this.addHandles(m(()=>this.view?.map,(i,e)=>{if(this.hasHandles("sceneLoaded")&&this.removeHandles("sceneLoaded"),e){let t=e.presentation?.slides;t&&t.length>0&&this._unsubscribeToSlideEvents(t)}i&&this.addHandles(m(()=>i.loaded,t=>{t&&(this.removeHandles("sceneLoaded"),this._startWatchSlides(),this._slideId&&this._applySlideById(this._slideId))},{initial:!0}),"sceneLoaded")},{initial:!0}))}destroy(){this._unsubscribeToSlideEvents(this.slides)}get slideId(){return this._slideId}set slideId(i){i===void 0||!this.view?.map?.loaded?this._slideId=i:this._applySlideById(i)}get visibleSlides(){return this.view?.map?.presentation?.slides?.filter(i=>!i.hidden)??new I}get slides(){return this.view?.map?.presentation?.slides??new I}get lastSlideSelected(){return this.getSlideIndexBySlideId(this.slideId)===this.visibleSlides.length-1}get firstSlideSelected(){return this.getSlideIndexBySlideId(this.slideId)===0}get slideSelected(){return this.getSlideIndexBySlideId(this.slideId)>-1}get hasOnlyOneSlide(){return this.visibleSlides.length===1}get slideIndex(){return this.getSlideIndexBySlideId(this.slideId)}getSlideIndexBySlideId(i){let e=-1;return i&&(e=this.visibleSlides.findIndex(t=>t.id===i)),e}navigateInPresentation(i){let e=this.slideIndex+i,t=this._getSlideBySlideIndex(e);t??=this._getSlideBySlideIndex(0),t&&this._applySlide(t)}captureArrowKeysForNavigation(i,e){let t=["ArrowLeft","ArrowRight","PageUp","PageDown"];if(document.activeElement?.nodeName.toLowerCase()==="arcgis-scene"||!t.includes(i.code))return;let s=e==="rtl"?"ArrowRight":"ArrowLeft",n=i.code===s||i.code==="PageUp"?-1:1;this.navigateInPresentation(n)}async setSliceAnalysisInteractive(){if(!this.view?.analyses?.length)return;let i=this.view.analyses.find(t=>t.type==="slice"&&t.origin?.type==="web-scene");if(!i)return;let e=await this.view.whenAnalysisView(i);e&&(e.interactive=!0)}_getSlideBySlideIndex(i){if(i!=null&&i>=0&&i<this.visibleSlides.length)return this.visibleSlides.getItemAt(i)}async _applySlideById(i){let e=i?this._getSlideBySlideId(i):void 0;e&&await this._applySlide(e)}_getSlideBySlideId(i){return this.visibleSlides.find(e=>e.id===i)}async _applySlide(i){this.view&&await D(i.applyTo(this.view))}_startWatchSlides(){this._subscribeToSlideEvents(this.slides),this.addHandles(H(()=>this.slides,"change",i=>{this._subscribeToSlideEvents(new I(i.added)),this._unsubscribeToSlideEvents(new I(i.removed))},{onListenerAdd:this._subscribeToSlideEvents,onListenerRemove:this._unsubscribeToSlideEvents}))}_onApplySlideStart(i){this._slideId=i.id,this.transitionActive=!0,this.showLegend=!1,this.onApplySlideStart?.(i)}_onApplySlideComplete(i){this.transitionActive=!1,this.showLegend=!!i.elements.legendInfo?.visible,this.onApplySlideComplete?.(i)}_onApplySlideCancel(i){this.transitionActive=!1,this.showLegend=!!i.elements.legendInfo?.visible,this.onApplySlideCancel?.(i)}};d([p()],o.prototype,"_slideId",2);d([p()],o.prototype,"view",2);d([p()],o.prototype,"slideId",1);d([p()],o.prototype,"transitionActive",2);d([p()],o.prototype,"showLegend",2);d([p()],o.prototype,"keyboardNavigationEnabled",2);d([p()],o.prototype,"visibleSlides",1);d([p()],o.prototype,"slides",1);d([p()],o.prototype,"lastSlideSelected",1);d([p()],o.prototype,"firstSlideSelected",1);d([p()],o.prototype,"slideSelected",1);d([p()],o.prototype,"hasOnlyOneSlide",1);d([p()],o.prototype,"onApplySlideStart",2);d([p()],o.prototype,"onApplySlideComplete",2);d([p()],o.prototype,"onApplySlideCancel",2);d([p()],o.prototype,"getSlideIndexBySlideId",1);o=d([k("components.presentation.PresentationViewModel")],o);var L=class extends x{constructor(e){super(e)}hostLoaded(){this.component.manager.onLifecycle(()=>{let e=this.component;f(()=>e.referenceElement).then(t=>{this._isArcgisScene(t)&&(this._sceneRef=t)})})}openPopup(e){this.component.view&&this.component.slideId===e.id&&e.elements.popupInfo!=null&&this._preparePopupFeature(this.component.view,e.elements.popupInfo).then(({success:t,features:s,popupInfo:n})=>{this.component.slideId===e.id&&(t?this._handlePopupFeatureFound(e,s,n):this.component.arcgisPopupFeatureNotFound.emit({slide:e}))})}_isArcgisScene(e){return e===void 0||typeof e=="string"?!1:"tagName"in e&&e.tagName==="ARCGIS-SCENE"}closePopup(){this.component.slidePopupDisabled||this._sceneRef?.closePopup()}async _handlePopupFeatureFound(e,t,s){let n=s?.location??void 0;this.component.arcgisPopupFeaturesRetrieved.emit({slide:e,features:t,location:n}),this.component.slidePopupDisabled||await this._sceneRef?.openPopup({features:t,location:n})}async _preparePopupFeature(e,t){let s=[];if(!t.features?.length||t.features.length===0)return{success:!1,features:s};let n=t.features?.getItemAt(t.selectedFeatureIndex)?.layerReference;if(n?.layerId==null)return{success:!1,features:s};let{layer:r,sublayer:a}=this._getLayersFromView(e,n.layerId,n?.sublayerId);if(!r)return{success:!1,features:s};let c=a??r;if(!c||!this._layerTypeSupportsCapturePopup(c))return{success:!1,features:s};if(s=await this._fetchFeaturesFromQueryable(e,t,r,a,c),s&&this._featureHasBeenFilledWithAttributes(s)){let l=s[0];return this._setFallbackPopupTemplate(l,a,r),this._setFallbackGeometry(l,t?.location),{success:!0,features:s,popupInfo:t}}debugger;return{success:!1,features:s}}_getLayersFromView(e,t,s){let n=e.map?.findLayerById(t)??void 0,r=this._getBuildingSceneLayerSublayer(n,s);return{layer:n,sublayer:r}}_getBuildingSceneLayerSublayer(e,t){let s;return e&&this._isLayer(e)&&this._isBuildingSceneLayer(e)&&t!=null&&(s=e.allSublayers.find(n=>n.id===t&&n.type==="building-component")),s}_featureHasBeenFilledWithAttributes(e){return e&&e.length>0&&e[0].attributes&&Object.entries(e[0].attributes)?.length>1}async _fetchFeaturesFromQueryable(e,t,s,n,r){let a=t.features?.getItemAt(t.selectedFeatureIndex);if(a?.id==null)return await Promise.resolve([]);let c=await e.whenLayerView(s);await f(()=>!c.updating);let l=this._tryGetBuildingComponentSublayerView(s,n,c)??c;await f(()=>!l.updating);let h=this._createFeatureGraphic(s,n,r,a.id),y=await G(l,[h]);return this._featureHasBeenFilledWithAttributes(y)||(await f(()=>!e.updating),y=await G(l,[h])),y}_tryGetBuildingComponentSublayerView(e,t,s){let n;return this._isLayer(e)&&this._isBuildingSceneLayer(e)&&t!=null&&(n=s.sublayerViews.find(r=>r.sublayer.id===t.id)),n}_setFallbackPopupTemplate(e,t,s){e.popupTemplate==null&&(e.popupTemplate=t?.popupTemplate?t.popupTemplate:s.popupTemplate)}_setFallbackGeometry(e,t){e.geometry==null&&t&&(e.geometry=t.clone())}_createFeatureGraphic(e,t,s,n){let r=this._getGlobalIdFieldNameFromLayer(s),a=n.type==="global-id"&&r?r:s.objectIdField,c=this._getGraphicOrigin(e,t),l=new j({attributes:{},layer:e,origin:c});return l.attributes[a]=n.value,l}_getGraphicOrigin(e,t){switch(e.type){case"csv":return new K(e);case"feature":return new J(e);case"geojson":return new W(e);case"scene":return new U(e);case"wfs":return new Q(e);case"building-scene":return t?new q(t):void 0;default:return}}_layerTypeSupportsCapturePopup(e){return e!=null&&["csv","feature","geojson","wfs","scene","building-component"].includes(e.type)}_isLayer(e){return!!e&&e instanceof V}_isBuildingSceneLayer(e){return e?.type==="building-scene"}_getGlobalIdFieldNameFromLayer(e){return e.fields?.find(t=>t.type==="global-id")?.name}},ee=i=>new L(i),v=Object.freeze({width:0,height:0}),w=new WeakMap,S=()=>({topCenter:{...v},topLeft:{...v},topRight:{...v},bottomCenter:{...v},bottomLeft:{...v},bottomRight:{...v}}),O=i=>({topCenter:{...i.topCenter},topLeft:{...i.topLeft},topRight:{...i.topRight},bottomCenter:{...i.bottomCenter},bottomLeft:{...i.bottomLeft},bottomRight:{...i.bottomRight}}),z=i=>{let e=w.get(i);return e||(e={observedGroups:new Map,observedSizes:S(),subscribers:new Set},w.set(i,e)),e},te=i=>{let e=i?.topCenter.value,t=i?.topLeft.value,s=i?.topRight.value,n=i?.bottomCenter.value,r=i?.bottomLeft.value,a=i?.bottomRight.value;return e&&t&&s&&n&&r&&a?{topCenter:e,topLeft:t,topRight:s,bottomCenter:n,bottomLeft:r,bottomRight:a}:null},ie=(i,e)=>b.every(t=>i.get(t)===e[t]),se=i=>{let e=O(i.observedSizes);i.subscribers.forEach(t=>t(e))},ne=(i,e)=>{let t=w.get(i);if(!t)return;let s=!1;e.forEach(n=>{let r=b.find(y=>t.observedGroups.get(y)===n.target);if(!r)return;let{width:a,height:c}=n.contentRect,l={width:a,height:c},h=t.observedSizes[r];h.width===l.width&&h.height===l.height||(t.observedSizes[r]=l,s=!0)}),s&&se(t)},A=(i,e)=>{let t=z(i);t.resizeObserver||(t.resizeObserver=new ResizeObserver(n=>{ne(i,n)}));let s=te(e);if(!s){t.observedGroups.size>0&&(t.resizeObserver.disconnect(),t.observedGroups.clear());return}ie(t.observedGroups,s)||(t.resizeObserver.disconnect(),t.observedGroups.clear(),b.forEach(n=>{let r=s[n];t.observedGroups.set(n,r),t.resizeObserver?.observe(r)}))},re=(i,e)=>{let t=z(i);return t.subscribers.add(e),e(O(t.observedSizes)),()=>{let s=w.get(i);s&&(s.subscribers.delete(e),s.subscribers.size===0&&(s.resizeObserver?.disconnect(),s.observedGroups.clear(),w.delete(i)))}},P=class extends x{#t;#e;#i;constructor(e){super(e),this.exports=S()}hostDisconnected(){this.#i?.(),this.#i=void 0,this.#e=void 0,this.#t=void 0,this.exports=S()}hostLifecycle(){return[m(()=>this.#s(),e=>{if(this.#e!==e){if(this.#i?.(),this.#i=void 0,this.#e=e,this.#t=e?.slotGroupRefs,!e){this.exports=S();return}this.#i=re(e,t=>{this.#n(t)||(this.exports=t)}),A(e,this.#t)}},{sync:!0,initial:!0}),m(()=>this.#s()?.slotGroupRefs,e=>{this.#t=e,this.#e&&e&&A(this.#e,e)},{sync:!0,initial:!0})]}#s(){let{referenceElement:e}=this.component;return e&&typeof e!="string"?e:void 0}hostUpdated(){!this.#e||!this.#t||A(this.#e,this.#t)}#n(e){let t=this.exports??S();return b.every(s=>{let n=t[s],r=e[s];return n.width===r.width&&n.height===r.height})}},ae=R(P),oe=N(o),F=class extends E{constructor(){super(...arguments),this._messages=B(),this.viewModel=oe(this),this._direction=M(),this._captureArrowKeysForNavigation=e=>{this.viewModel.captureArrowKeysForNavigation(e,this._direction)},this._useFeatureRefPopup=ee(this),this._handleApplySlideStart=()=>{this._useFeatureRefPopup.closePopup()},this._handleApplySlideComplete=e=>{this._useFeatureRefPopup.openPopup(e),this.sliceAnalysisInteractive&&this.viewModel.setSliceAnalysisInteractive()},this.autoDestroyDisabled=!1,this.view=this.viewModel.view,this.scale="m",this.keyboardNavigationEnabled=!1,this.slidePopupDisabled=!1,this.slideCaptionsDisabled=!1,this.slideLegendDisabled=!1,this.sliceAnalysisInteractive=!1,this.arcgisPopupFeatureNotFound=_(),this.arcgisPopupFeaturesRetrieved=_(),this.arcgisReady=_()}static{this.properties={_slotSizesController:16,slideId:1,autoDestroyDisabled:5,view:0,scale:1,keyboardNavigationEnabled:5,slidePopupDisabled:5,slideCaptionsDisabled:5,slideLegendDisabled:5,sliceAnalysisInteractive:5}}static{this.styles=X}get slideId(){return this.viewModel.slideId}set slideId(e){this.viewModel.slideId=e}async destroy(){await this.manager.destroy()}loaded(){this.manager.onLifecycle(()=>{this.viewModel.onApplySlideStart=this._handleApplySlideStart,this.viewModel.onApplySlideComplete=this._handleApplySlideComplete,this._keyboardHandle=m(()=>this.keyboardNavigationEnabled,t=>{document.removeEventListener("keydown",this._captureArrowKeysForNavigation),t&&document.addEventListener("keydown",this._captureArrowKeysForNavigation)},{initial:!0});let e=this;f(()=>e.referenceElement).then(t=>{this._isArcgisScene(t)&&(this._slotSizesController=ae(this),this._watchSceneViewSlotSizes())}),this.manager.onDisconnected(()=>{document.removeEventListener("keydown",this._captureArrowKeysForNavigation),this._keyboardHandle?.remove()})})}_isArcgisScene(e){return e===void 0||typeof e=="string"?!1:"tagName"in e&&e.tagName==="ARCGIS-SCENE"}_watchSceneViewSlotSizes(){return m(()=>this._slotSizesController,e=>this._updatePresentationCaptionsPadding(e?.topLeft,e?.topRight,e?.bottomLeft,e?.bottomRight),{initial:!0})}_updatePresentationCaptionsPadding(e,t,s,n){let r=this._direction==="ltr"?e?.width??0:t?.width??0,a=this._direction==="ltr"?t?.width??0:e?.width??0,c=Math.max(e?.height??0,t?.height??0),l=Math.max(s?.height??0,n?.height??0);r>0?this.el.style.setProperty("--arcgis-internal-presentation-padding-start",`calc(var(--calcite-spacing-lg) + ${r.toString()}px)`):this.el.style.setProperty("--arcgis-internal-presentation-padding-start","0px"),a>0?this.el.style.setProperty("--arcgis-internal-presentation-padding-end",`calc(var(--calcite-spacing-lg) + ${a.toString()}px)`):this.el.style.setProperty("--arcgis-internal-presentation-padding-end","0px");let h=r<=Math.max(c,l)&&a<=Math.max(c,l);this.el.style.setProperty("--arcgis-internal-presentation-cover-padding-top",h?"0":`${c}px`),this.el.style.setProperty("--arcgis-internal-presentation-cover-padding-bottom",h?"0":`${l}px`),this.el.style.setProperty("--arcgis-internal-presentation-cover-padding-start",h?`${r}px`:"0"),this.el.style.setProperty("--arcgis-internal-presentation-cover-padding-end",h?`${a}px`:"0")}render(){if(this.viewModel.visibleSlides.length===0)return u`<div></div>`;let e=this.viewModel.visibleSlides.find(r=>r.id===this.slideId),t=this._renderNavigation(),s=this._renderCaptions(e),n=this._renderLegend();return u`<div class="root"><div class="presentation-content">${s}${n}</div>${t}</div>`}_renderNavigation(){let e=this.viewModel.lastSlideSelected&&!this.viewModel.hasOnlyOneSlide,t=this._direction==="rtl",s=t?"chevron-right":"chevron-left",n=t?"chevron-left":"chevron-right";return u`<div class="navigation"><calcite-button appearance=transparent icon-start=${s??g} kind=neutral .scale=${this.scale} .disabled=${this.viewModel.firstSlideSelected||!this.viewModel.slideSelected} .label=${this._messages.previous} title=${this._messages.previous??g} =${()=>this.viewModel.navigateInPresentation(-1)}></calcite-button><div class="slide-counter-text">${this._renderSlideCounter()}</div><calcite-button appearance=transparent icon-start=${(e?"reset":n)??g} kind=neutral .scale=${this.scale} .label=${e?this._messages.restart:this._messages.next} title=${(e?this._messages.restart:this._messages.next)??g} =${()=>this.viewModel.navigateInPresentation(1)}></calcite-button></div>`}_renderSlideCounter(){let e=this.viewModel.slideIndex+1,t=this._messages?.slideNavAriaText?.replace("${index}",e.toString()).replace("${numberOfSlides}",this.viewModel.visibleSlides.length.toString());return this.viewModel.slideSelected?u`<p role=banner aria-label=${t??g} 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>`:u`<p role=banner data-testId=arcgis-map-presentation-numberOfSlides>${this.viewModel.visibleSlides?.length} ${this._messages?.slides}</p>`}_renderCaptions(e){return this.slideCaptionsDisabled?null:u`<arcgis-presentation-captions .slide=${e} .transitionActive=${this.viewModel.transitionActive}></arcgis-presentation-captions>`}_renderLegend(){return this.slideLegendDisabled||!this.viewModel.showLegend?null:u`<calcite-panel data-testid=presentation-legend class="legend" .heading=${this._messages.legend} closable =${()=>this.viewModel.showLegend=!1}><arcgis-legend .view=${this.view} =${e=>e.stopPropagation()}></arcgis-legend></calcite-panel>`}};$("arcgis-presentation",F);return F},"core/accessorSupport/decorators","core/Accessor","core/Collection","core/promiseUtils","core/reactiveUtils","Graphic","layers/Layer","graphic/CSVGraphicOrigin","graphic/GeoJSONGraphicOrigin","graphic/SceneGraphicOrigin","graphic/WFSGraphicOrigin","graphic/BuildingGraphicOrigin","graphic/FeatureGraphicOrigin","applications/SceneViewer/sceneViewerUtils",a,c,d,e)