@arcgis/core 4.28.5 → 4.28.7

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 (65) hide show
  1. package/README.md +15 -25
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/0c08d59c5d65921ba5ae.js +1 -0
  4. package/assets/esri/core/workers/chunks/0dbf3fa096d02d83b222.js +1 -0
  5. package/assets/esri/core/workers/chunks/16453ca31cc3e09fde46.js +1 -0
  6. package/assets/esri/core/workers/chunks/{1da721608993783dc9cf.js → 24d04cca452ba2fec5d4.js} +1 -1
  7. package/assets/esri/core/workers/chunks/2c121541cde5c24b1fbe.js +1 -0
  8. package/assets/esri/core/workers/chunks/2efd2496f7310142f928.js +1 -0
  9. package/assets/esri/core/workers/chunks/42880f0fac5f1606201c.js +1 -0
  10. package/assets/esri/core/workers/chunks/5b17de91091fc17d9821.js +1 -0
  11. package/assets/esri/core/workers/chunks/70eba80261d7fdc624ad.js +1 -0
  12. package/assets/esri/core/workers/chunks/{3dcb2a82e1e4b520c9c9.js → 7b901d0b68e5cc17533a.js} +1 -1
  13. package/assets/esri/core/workers/chunks/7f68c2cc1048d136fd1b.js +1 -0
  14. package/assets/esri/core/workers/chunks/85d6dd6703b228248e30.js +1 -0
  15. package/assets/esri/core/workers/chunks/adc138e5d9983a5752d4.js +1 -0
  16. package/assets/esri/core/workers/chunks/b35e87cf2b8244e3584f.js +1 -0
  17. package/assets/esri/core/workers/chunks/b49f830a8d74c4564ed8.js +1 -0
  18. package/assets/esri/core/workers/chunks/b6d77edf9eec757e88da.js +1 -0
  19. package/assets/esri/core/workers/chunks/c9306fb3ec1a2d5e137a.js +1 -0
  20. package/assets/esri/core/workers/chunks/cd201c627e9396edf6b9.js +1 -0
  21. package/assets/esri/core/workers/chunks/ceeaa8d1b0034b59eae7.js +1 -0
  22. package/assets/esri/core/workers/chunks/dc4a71e72e56cbdff49a.js +1 -0
  23. package/assets/esri/core/workers/chunks/f78b1bfacd95a6ccf7b4.js +1 -0
  24. package/assets/esri/themes/base/widgets/_LabeledSwitch.scss +6 -1
  25. package/assets/esri/themes/dark/main.css +1 -1
  26. package/assets/esri/themes/light/main.css +1 -1
  27. package/assets/esri/themes/light/view.css +1 -1
  28. package/core/sql/WhereClause.js +1 -1
  29. package/core/sql/sqlCompareUtils.js +1 -1
  30. package/core/sql/sqlDateParsingUtils.js +1 -1
  31. package/kernel.js +1 -1
  32. package/layers/support/FieldsIndex.js +1 -1
  33. package/package.json +1 -1
  34. package/support/revision.js +1 -1
  35. package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
  36. package/views/webgl/FramebufferObject.js +1 -1
  37. package/widgets/Editor/UpdateFeatureWorkflow.js +1 -1
  38. package/widgets/Editor/workflowUtils.js +1 -1
  39. package/widgets/FeatureForm/featureFormUtils.js +1 -1
  40. package/widgets/FeatureForm.js +1 -1
  41. package/widgets/Features.js +1 -1
  42. package/widgets/Popup.js +1 -1
  43. package/widgets/ShadowCast/ShadowCastViewModel.js +1 -1
  44. package/widgets/Sketch.js +1 -1
  45. package/widgets/support/LabeledSwitch.js +1 -1
  46. package/widgets/support/dateUtils.js +1 -1
  47. package/assets/esri/core/workers/chunks/16b56e541afa438dfb7f.js +0 -1
  48. package/assets/esri/core/workers/chunks/340ab726ba40fe3a99c8.js +0 -1
  49. package/assets/esri/core/workers/chunks/46b4a17ec898ab744861.js +0 -1
  50. package/assets/esri/core/workers/chunks/4747741429e8ff7112bb.js +0 -1
  51. package/assets/esri/core/workers/chunks/4f0412b52844aa9c7bd4.js +0 -1
  52. package/assets/esri/core/workers/chunks/5b80ae1eb79f1db75dc6.js +0 -1
  53. package/assets/esri/core/workers/chunks/80fcb63476829b6a48d2.js +0 -1
  54. package/assets/esri/core/workers/chunks/84725021c43f1122056a.js +0 -1
  55. package/assets/esri/core/workers/chunks/8cdece03397d01767593.js +0 -1
  56. package/assets/esri/core/workers/chunks/9607460895182d31aef9.js +0 -1
  57. package/assets/esri/core/workers/chunks/a0a86383e69932a25e50.js +0 -1
  58. package/assets/esri/core/workers/chunks/a3bf50d9e24ad1de9847.js +0 -1
  59. package/assets/esri/core/workers/chunks/a5db3be5eeb3005df3c1.js +0 -1
  60. package/assets/esri/core/workers/chunks/a87ab14d6a6ccc9004a0.js +0 -1
  61. package/assets/esri/core/workers/chunks/a8cf23c3a55c1834178c.js +0 -1
  62. package/assets/esri/core/workers/chunks/ba00df2e707550939a6f.js +0 -1
  63. package/assets/esri/core/workers/chunks/cfa6d1b63b794febe70a.js +0 -1
  64. package/assets/esri/core/workers/chunks/e0382138cf58191a9697.js +0 -1
  65. package/assets/esri/core/workers/chunks/fe0c6814ef56604540b3.js +0 -1
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import t from"../core/Collection.js";import{eventKey as i}from"../core/events.js";import s from"../core/Logger.js";import{watch as o,when as r}from"../core/reactiveUtils.js";import{throttle as n}from"../core/throttle.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import d from"./Feature.js";import c from"./Spinner.js";import u from"./Widget.js";import{css as h}from"./Feature/resources.js";import{FeatureContentMixin as p}from"./Feature/support/FeatureContentMixin.js";import{css as m}from"./Features/css.js";import v from"./Features/FeaturesRelatedRecords.js";import g from"./Features/FeaturesViewModel.js";import _ from"./Features/FeaturesVisibleElements.js";import{ActionsCollection as w}from"./Popup/actions.js";import{getPointFromGeometry as f}from"./Popup/actionUtils.js";import{loadCalciteComponents as M}from"./support/componentsUtils.js";import{globalCss as F}from"./support/globalCss.js";import{Heading as b}from"./support/Heading.js";import"./support/widgetUtils.js";import{messageBundle as y}from"./support/decorators/messageBundle.js";import{vmEvent as I}from"./support/decorators/vmEvent.js";import{tsx as C}from"./support/jsxFactory.js";import{substitute as A}from"../intl/substitute.js";import{formatNumber as x}from"../intl/number.js";const j="selected-index",R=0,O="features-spinner";let k=class extends(p(u)){constructor(e,i){super(e,i),this._featureMenuIntersectionObserverCallback=([e])=>{e?.isIntersecting&&null!=this.viewModel.featurePage&&this.viewModel.featurePage++},this._featureMenuIntersectionObserver=new IntersectionObserver(this._featureMenuIntersectionObserverCallback,{root:window.document}),this._featureMenuIntersectionObserverNode=null,this._focusOn=null,this._spinner=null,this._feature=null,this._relatedRecordsFlowItems=new t,this._relatedRecordsWidget=new v({flowItems:this._relatedRecordsFlowItems}),this._rootFlowItemNode=null,this._featureMenuViewportNode=null,this.collapsed=!1,this.icon=null,this.featureNavigationTop=!1,this.headerActions=new w,this.headingLevel=2,this.messages=null,this.messagesCommon=null,this.responsiveActionsEnabled=!1,this.viewModel=new g,this.visibleElements=new _,this._renderAction=(e,t)=>{const i=this._getActionTitle(e),{type:s,active:o,uid:r,disabled:n,indicator:a}=e;return e.visible?C("calcite-action",{active:"toggle"===s&&e.value,appearance:"solid",bind:this,"data-action-uid":r,disabled:n,icon:this._getActionIcon(e),indicator:a,key:`action-${t}`,loading:o,onclick:this._triggerAction,scale:"s",text:i,title:this._hideActionText?i:void 0},this._getFallbackIcon(e)):null},this._openFeatureMenu=()=>{this.featureMenuOpen=!0},this._previousFeature=()=>{this.viewModel.selectedFeatureIndex--},this._nextFeature=()=>{this.viewModel.selectedFeatureIndex++},this._handleFeatureMenuBack=()=>{this.featureMenuOpen&&(this._focusOn="root-flow-item",this.featureMenuOpen=!1,this.viewModel.browseClusterEnabled=!1)},this._displaySpinnerThrottled=n((()=>this._displaySpinner()),R),this._addSelectedFeatureIndexHandle(),this.addHandles([this._displaySpinnerThrottled,o((()=>this.viewModel?.active),(()=>this._toggleScreenLocationEnabled())),o((()=>this.viewModel?.active),(e=>this._relatedRecordsWidget.closed=!e)),o((()=>this.visibleElements?.closeButton),(e=>this._relatedRecordsWidget.closable=e)),o((()=>this.visibleElements?.spinner),(e=>this._spinnerEnabledChange(e))),o((()=>this.viewModel?.view),((e,t)=>this._viewChange(e,t))),o((()=>this.viewModel?.view?.ready),((e,t)=>this._viewReadyChange(e??!1,t??!1))),o((()=>[this.viewModel?.waitingForResult,this.viewModel?.location]),(()=>{this._hideSpinner(),this._displaySpinnerThrottled()})),o((()=>this.selectedFeatureWidget),(()=>this._destroyRelatedRecordsFlowItemWidgets())),o((()=>{const e=this.selectedFeatureWidget?.viewModel;return[e?.title,e?.state]}),(()=>this._setTitleFromFeatureWidget())),o((()=>{const e=this.selectedFeatureWidget?.viewModel;return[e?.content,e?.state]}),(()=>this._setContentFromFeatureWidget())),o((()=>this.viewModel?.featureViewModels),(()=>this._featureMenuViewportScrollTop())),this._relatedRecordsWidget.on("close",(()=>this.close())),this._relatedRecordsWidget.on("exit",(()=>this._destroyRelatedRecordsFlowItemWidgets())),this._relatedRecordsWidget.on("open-related-feature",(({feature:e})=>this._openRelatedFeature(e)))])}loadDependencies(){return M({action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar.js"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group.js"),button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow.js"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item.js"),list:()=>import("@esri/calcite-components/dist/components/calcite-list.js"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item.js"),"list-item-group":()=>import("@esri/calcite-components/dist/components/calcite-list-item-group.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")})}destroy(){this._destroyRelatedRecordsFlowItemWidgets(),this._destroySelectedFeatureWidget(),this._destroySpinner(),this._unobserveFeatureMenuObserver(),this._featureMenuIntersectionObserver?.disconnect(),this._relatedRecordsWidget?.destroy()}get _hideActionText(){if(!this.responsiveActionsEnabled)return!1;const e=this.view?.widthBreakpoint;return"xsmall"===e||"small"===e||"medium"===e}get _featureNavigationVisible(){return this.viewModel.active&&this.viewModel.featureCount>1&&this.visibleElements.featureNavigation}get _isCollapsed(){return this._collapseEnabled&&this.collapsed}get _collapseEnabled(){return this.visibleElements.collapseButton&&!!this.title&&!!this.content}get content(){return this.viewModel.content}set content(e){this.viewModel.content=e}get featureMenuOpen(){return this.viewModel.featureMenuOpen}set featureMenuOpen(e){this.viewModel.featureMenuOpen=e}get features(){return this.viewModel.features}set features(e){this.viewModel.features=e}get location(){return this.viewModel.location}set location(e){this.viewModel.location=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get promises(){return this.viewModel.promises}set promises(e){this.viewModel.promises=e}get selectedFeature(){return this.viewModel.selectedFeature}get selectedFeatureIndex(){return this.viewModel.selectedFeatureIndex}set selectedFeatureIndex(e){this.viewModel.selectedFeatureIndex=e}get selectedFeatureWidget(){const{_feature:e,headingLevel:t,_relatedRecordsFlowItems:i}=this,{selectedFeatureViewModel:s}=this.viewModel,o={title:!1};return s?(e?(e.viewModel=s,e.visibleElements=o):this._feature=new d({flowItems:i,headingLevel:t+1,viewModel:s,visibleElements:o}),this._feature):null}get title(){return this.viewModel.title}set title(e){this.viewModel.title=e}get updateLocationEnabled(){return this.viewModel.updateLocationEnabled}set updateLocationEnabled(e){this.viewModel.updateLocationEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}blur(){const{active:e}=this.viewModel;e?this._rootFlowItemNode?.blur():s.getLogger(this).warn("Features can only be blurred when currently active.")}clear(){return this.viewModel.clear()}close(){this.viewModel.visible=!1}fetchFeatures(e,t){return this.viewModel.fetchFeatures(e,t)}focus(){const{active:e}=this.viewModel;e?(this._setFocusOn(),this.scheduleRender()):s.getLogger(this).warn("Features can only be focused when currently active.")}next(){return this.viewModel.next()}open(e){this.removeHandles(j);const t={collapsed:e?.collapsed??!1};this.set(t),this.viewModel.open(e),this.addHandles(r((()=>!this.viewModel.waitingForResult),(()=>this._addSelectedFeatureIndexHandle()),{once:!0}))}previous(){return this.viewModel.previous()}triggerAction(e){return this.viewModel.triggerAction(e)}render(){return C("div",{bind:this,class:this.classes(m.base,F.widget,F.panel),onkeydown:this._onMainKeydown},this._renderHeader(),this._renderContentContainer())}_renderFeatureNavigation(){return[this._renderPagination(),this._renderFeatureMenuButton()]}_renderHeader(){return!this.featureMenuOpen&&this.featureNavigationTop&&this._featureNavigationVisible?C("div",{class:m.header,key:"header-actions"},this._renderFeatureNavigation()):null}_renderFooter(){return this.featureMenuOpen||this.featureNavigationTop||!this._featureNavigationVisible?null:C("div",{class:m.footer,key:"footer-actions",slot:"footer"},this._renderFeatureNavigation())}_renderFeatureMenuButton(){const{messages:e,viewModel:t}=this,{featureCount:i,selectedFeatureIndex:s,pendingPromisesCount:o}=t;return C("calcite-action",{appearance:"solid",bind:this,icon:"list",key:"feature-menu-button",label:e.selectFeature,loading:o>0,onclick:this._openFeatureMenu,scale:"s",text:A(e.pageText,{index:x(s+1),total:x(i)}),textEnabled:!0,title:e.selectFeature})}_renderPagination(){const{previous:e,next:t}=this.messagesCommon.pagination;return C("calcite-action-bar",{class:m.paginationActionBar,expandDisabled:!0,key:"pagination-action-bar",layout:"horizontal",overflowActionsDisabled:!0,scale:"s"},C("calcite-action-group",{scale:"s"},C("calcite-action",{appearance:"solid",class:m.paginationPrevious,icon:"chevron-left",iconFlipRtl:!0,label:e,onclick:this._previousFeature,scale:"s",text:e,title:e}),C("calcite-action",{appearance:"solid",icon:"chevron-right",iconFlipRtl:!0,label:t,onclick:this._nextFeature,scale:"s",text:t,title:t})))}_renderFeatureMenuItem(e){const{selectedFeatureViewModel:t,featureViewModels:i}=this.viewModel,s=e===t,o=i.indexOf(e);return C("calcite-list-item",{bind:this,"data-feature-index":o,key:`feature-menu-item-${e.uid}`,onblur:this._removeActiveFeature,onfocus:this._setActiveFeature,onmouseleave:this._removeActiveFeature,onmouseover:this._setActiveFeature,selected:s,onCalciteListItemSelect:this._selectFeature},C("span",{innerHTML:e.title||this.messagesCommon.untitled,slot:"content"}))}_groupResultsByLayer(){const{featureViewModels:e}=this.viewModel,t=new Map;return e.forEach((e=>{const i=e?.graphic;if(!i)return;const s=i.sourceLayer??i.layer,o=t.get(s)??[];t.set(s,[...o,e])})),t}_renderFeatureMenu(){const{featureViewModels:e}=this.viewModel,t=this._groupResultsByLayer();return e.length?C("calcite-list",{selectionAppearance:"icon",selectionMode:"single"},Array.from(t.keys()).map((e=>C("calcite-list-item-group",{heading:e?.title??this.messagesCommon.untitled,key:e?.uid||"untitled"},t.get(e)?.map((e=>this._renderFeatureMenuItem(e))))))):null}_renderHeaderAction(e,t){return e.visible?C("calcite-action",{active:"toggle"===e.type&&e.value,appearance:"solid",bind:this,"data-action-uid":e.uid,disabled:e.disabled,icon:e.icon||"",indicator:e.indicator,key:`header-action-${t}`,loading:e.active,onclick:this._triggerHeaderAction,scale:"m",slot:"header-actions-end",text:e.title||"",title:e.title||""}):null}_renderHeaderActions(){return this.headerActions.map(((e,t)=>this._renderHeaderAction(e,t))).toArray()}_renderContentFeature(){const{headingLevel:e,visibleElements:t,_isCollapsed:i,_collapseEnabled:s,featureNavigationTop:o}=this,{title:r,active:n}=this.viewModel,a=t.heading&&r?r:"";return C("calcite-flow-item",{afterCreate:this._focusRootFlowItemNode,afterUpdate:this._focusRootFlowItemNode,bind:this,class:this.classes({[m.contentFeature]:!0,[m.flowItemCollapsed]:i}),closable:t.closeButton,closed:!n,collapsed:i,collapseDirection:o?"down":"up",collapsible:s,headingLevel:e,key:"root-flow-item",onCalciteFlowItemClose:this.close,onCalciteFlowItemToggle:this._handleCollapseToggle},a?C(b,{class:this.classes(m.featuresHeading,F.heading),innerHTML:a,key:"header-content",level:this.headingLevel,slot:"header-content"}):null,this._renderHeaderActions(),this._renderActionBar(),i?null:C("div",{class:this.classes(m.container,m.contentContainer)},this._renderContent()),this._renderFooter())}_renderFeatureMenuContainer(){const{viewModel:e,featureMenuOpen:t,messages:i,messagesCommon:s}=this,{active:o,featureViewModels:r,pendingPromisesCount:n}=e;return t?C("calcite-flow-item",{afterCreate:this._focusFeatureMenuFlowItemNode,afterUpdate:this._focusFeatureMenuFlowItemNode,bind:this,closable:!1,closed:!o,description:A(i.total,{total:r.length}),heading:i.selectFeature,key:"feature-menu",loading:e.waitingForContents,onCalciteFlowItemBack:this._handleFeatureMenuBack},n>0?C("calcite-loader",{class:m.loader,inline:!0,key:"feature-menu-loader",label:s.loading,scale:"m",slot:"header-actions-end"}):null,C("div",{class:m.container},this._renderFeatureMenu()),C("div",{afterCreate:this._featureMenuIntersectionObserverCreated,bind:this,class:m.featureMenuObserver}),C("calcite-button",{appearance:"transparent",onclick:this._handleFeatureMenuBack,slot:"footer-actions",width:"full"},s.back)):null}_renderContentContainer(){return C("calcite-flow",{key:"content-container"},this._renderContentFeature(),this._renderFeatureMenuContainer(),this._relatedRecordsWidget.render())}_getIconStyles(e){return{"background-image":e?`url(${e})`:""}}_getActionImage(e){const{selectedFeature:t}=this,i=t?.attributes,{image:s}=e;return s&&i?A(s,i):s??""}_getFallbackIcon(e){const{className:t,icon:i}=e;if(i)return null;const s=this._getActionImage(e),o={[m.icon]:!!t,[m.actionImage]:!!s};return t&&(o[t]=!0),s||t?C("span",{"aria-hidden":"true",class:this.classes(m.icon,o),key:"icon",styles:s?this._getIconStyles(s):{}}):null}_renderActionBar(){return!this._isCollapsed&&this.visibleElements.actionBar&&this.viewModel.allActions?.length?C("calcite-action-bar",{expandDisabled:!0,expanded:!this._hideActionText,key:"header-action-bar",scale:"s",slot:"action-bar"},C("calcite-action-group",{overlayPositioning:"fixed",scale:"s"},this._renderActions())):null}_renderActions(){return this.viewModel.allActions.toArray().map(this._renderAction)}_renderContent(){const e=this.viewModel?.content;return e?"string"==typeof e?C("div",{class:h.contentNode,innerHTML:e,key:e}):this.renderNodeContent(e):null}_setFocusOn(){this._focusOn=this.featureMenuOpen?"menu-flow-item":"root-flow-item"}_handleCollapseToggle(){this.collapsed=!this.collapsed}async _openRelatedFeature(e){await e.viewModel.updateGeometry();const t=e.graphic,i=t?.geometry;if(null==i||null==t)return;this._destroyRelatedRecordsFlowItemWidgets(),await this.viewModel.zoomTo({target:i});const s=f(i);this.open({features:[t],location:null!=s?s:void 0})}_focusRootFlowItemNode(e){this._rootFlowItemNode=e,"root-flow-item"===this._focusOn&&(this._focusOn=null,requestAnimationFrame((()=>e?.setFocus())))}_focusFeatureMenuFlowItemNode(e){this._featureMenuViewportNode=e,"menu-flow-item"===this._focusOn&&(this._focusOn=null,requestAnimationFrame((()=>e?.setFocus())))}_setActiveFeature(e){const{viewModel:t}=this,i=e.currentTarget["data-feature-index"];t.activeFeature=t.features?.[i]||null}_removeActiveFeature(){this.viewModel.activeFeature=null}_selectFeature(e){const t=e.currentTarget["data-feature-index"];isNaN(t)||(this.viewModel.selectedFeatureIndex=t),this._handleFeatureMenuBack()}_unobserveFeatureMenuObserver(){this._featureMenuIntersectionObserverNode&&this._featureMenuIntersectionObserver.unobserve(this._featureMenuIntersectionObserverNode)}_featureMenuIntersectionObserverCreated(e){this._unobserveFeatureMenuObserver(),this._featureMenuIntersectionObserver.observe(e),this._featureMenuIntersectionObserverNode=e}_getActionIcon(e){return e.icon?e.icon:e.image||e.className?void 0:"question"}_getActionTitle(e){const{messages:t,selectedFeature:i,messagesCommon:s}=this,{id:o}=e,r=i?.attributes,n=e.title??"",a="zoom-to-feature"===o?A(n,{messages:t}):"remove-selected-feature"===o?A(n,{messages:s}):"zoom-to-clustered-features"===o||"browse-clustered-features"===o?A(n,{messages:t}):e.title;return a&&r?A(a,r):a??""}_onMainKeydown(e){const t=i(e);"ArrowLeft"===t&&(e.stopPropagation(),this._handleFeatureMenuBack(),this.previous()),"ArrowRight"===t&&(e.stopPropagation(),this._handleFeatureMenuBack(),this.next())}_featureMenuViewportScrollTop(){this._featureMenuViewportNode&&this._featureMenuViewportNode.scrollContentTo({top:0})}_setContentFromFeatureWidget(){const{selectedFeatureWidget:e}=this;e&&(this.viewModel.content=e)}_setTitleFromFeatureWidget(){const{selectedFeatureWidget:e,messagesCommon:t}=this,i=e?.viewModel;e&&(this.viewModel.title="error"===i?.state?t?.errorMessage:i?.title||"")}_addSelectedFeatureIndexHandle(){const e=o((()=>this.viewModel?.selectedFeatureIndex),((e,t)=>this._selectedFeatureIndexUpdated(e,t)));this.addHandles(e,j)}_selectedFeatureIndexUpdated(e,t){const{featureCount:i}=this.viewModel;i&&e!==t&&-1!==e&&(this._destroyRelatedRecordsFlowItemWidgets(),this._rootFlowItemNode&&this._rootFlowItemNode.scrollContentTo({top:0}))}_triggerHeaderAction(e){const t=e.currentTarget;if(t.disabled)return;const i=t.dataset.actionUid,s=this.headerActions.find((({uid:e})=>e===i));s&&!s.disabled&&("toggle"===s?.type&&(s.value=!s.value),this.emit("trigger-header-action",{action:s}))}_triggerAction(e){const t=e.currentTarget;if(t.disabled)return;const i=t.dataset.actionUid,{allActions:s}=this.viewModel,o=s.findIndex((e=>e.uid===i)),r=s.at(o);r&&"toggle"===r.type&&(r.value=!r.value),this.viewModel.triggerAction(o)}_createSpinner(e){e&&(this._spinner=new c({view:e}),e.ui.add(this._spinner,{key:O,position:"manual",internal:!0}))}_wireUpView(e){this._destroySpinner(),e&&this.visibleElements?.spinner&&this._createSpinner(e)}_hideSpinner(){const{_spinner:e}=this;e&&(e.location=null,e.hide())}_viewReadyChange(e,t){e?this._wireUpView(this.viewModel?.view):t&&this.viewModel.clear()}_viewChange(e,t){e&&t&&this.viewModel.clear()}_destroySelectedFeatureWidget(){const{_feature:e}=this;e&&(e.viewModel=null,!e.destroyed&&e.destroy()),this._feature=null}_destroyRelatedRecordsFlowItemWidgets(){this._relatedRecordsFlowItems.removeAll().forEach((e=>{"showAllEnabled"in e.viewModel&&(e.viewModel.showAllEnabled=!1),e.viewModel=null,e.destroy()}))}_toggleScreenLocationEnabled(){const{viewModel:e}=this;e&&(e.screenLocationEnabled=e.active)}_displaySpinner(){const{_spinner:e}=this;if(!e)return;const{location:t,waitingForResult:i}=this.viewModel;i&&t?e.show({location:t}):e.hide()}_destroySpinner(){const{_spinner:e,view:t}=this;e&&(t?.ui?.remove(e,O),e.destroy(),this._spinner=null)}_spinnerEnabledChange(e){this._destroySpinner(),e&&this._createSpinner(this.viewModel?.view)}};e([a()],k.prototype,"_focusOn",void 0),e([a()],k.prototype,"_relatedRecordsFlowItems",void 0),e([a()],k.prototype,"_hideActionText",null),e([a()],k.prototype,"_featureNavigationVisible",null),e([a()],k.prototype,"_isCollapsed",null),e([a()],k.prototype,"_collapseEnabled",null),e([a()],k.prototype,"collapsed",void 0),e([a()],k.prototype,"content",null),e([a()],k.prototype,"icon",void 0),e([a()],k.prototype,"featureMenuOpen",null),e([a()],k.prototype,"featureNavigationTop",void 0),e([a()],k.prototype,"features",null),e([a({type:w})],k.prototype,"headerActions",void 0),e([a()],k.prototype,"headingLevel",void 0),e([a()],k.prototype,"location",null),e([a()],k.prototype,"label",null),e([a(),y("esri/widgets/Features/t9n/Features")],k.prototype,"messages",void 0),e([a(),y("esri/t9n/common")],k.prototype,"messagesCommon",void 0),e([a()],k.prototype,"promises",null),e([a()],k.prototype,"responsiveActionsEnabled",void 0),e([a({readOnly:!0})],k.prototype,"selectedFeature",null),e([a()],k.prototype,"selectedFeatureIndex",null),e([a({readOnly:!0})],k.prototype,"selectedFeatureWidget",null),e([a()],k.prototype,"title",null),e([a()],k.prototype,"updateLocationEnabled",null),e([a()],k.prototype,"view",null),e([a({type:g}),I(["triggerAction","trigger-action"])],k.prototype,"viewModel",void 0),e([a({type:_,nonNullable:!0})],k.prototype,"visibleElements",void 0),e([a()],k.prototype,"visible",null),k=e([l("esri.widgets.Features")],k);const N=k;export{N as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import t from"../core/Collection.js";import{eventKey as i}from"../core/events.js";import o from"../core/Logger.js";import{watch as s,when as r}from"../core/reactiveUtils.js";import{throttle as n}from"../core/throttle.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import d from"./Feature.js";import c from"./Spinner.js";import u from"./Widget.js";import{css as h}from"./Feature/resources.js";import{FeatureContentMixin as p}from"./Feature/support/FeatureContentMixin.js";import{css as m}from"./Features/css.js";import v from"./Features/FeaturesRelatedRecords.js";import w from"./Features/FeaturesViewModel.js";import g from"./Features/FeaturesVisibleElements.js";import{ActionsCollection as _}from"./Popup/actions.js";import{getPointFromGeometry as f}from"./Popup/actionUtils.js";import{loadCalciteComponents as F}from"./support/componentsUtils.js";import{globalCss as M}from"./support/globalCss.js";import{Heading as b}from"./support/Heading.js";import"./support/widgetUtils.js";import{messageBundle as y}from"./support/decorators/messageBundle.js";import{vmEvent as I}from"./support/decorators/vmEvent.js";import{tsx as C}from"./support/jsxFactory.js";import{substitute as A}from"../intl/substitute.js";import{formatNumber as N}from"../intl/number.js";const x="selected-index",j=0,R="features-spinner",k=50;let O=class extends(p(u)){constructor(e,i){super(e,i),this._featureMenuIntersectionObserverCallback=([e])=>{e?.isIntersecting&&null!=this.viewModel.featurePage&&this.viewModel.featurePage++},this._featureMenuIntersectionObserver=new IntersectionObserver(this._featureMenuIntersectionObserverCallback,{root:window.document}),this._featureMenuIntersectionObserverNode=null,this._focusOn=null,this._spinner=null,this._feature=null,this._relatedRecordsFlowItems=new t,this._relatedRecordsWidget=new v({flowItems:this._relatedRecordsFlowItems}),this._rootFlowItemNode=null,this._featureMenuViewportNode=null,this.collapsed=!1,this.icon=null,this.featureNavigationTop=!1,this.headerActions=new _,this.headingLevel=2,this.messages=null,this.messagesCommon=null,this.responsiveActionsEnabled=!1,this.viewModel=new w,this.visibleElements=new g,this._renderAction=(e,t)=>{const i=this._getActionTitle(e),{type:o,active:s,uid:r,disabled:n,indicator:a}=e;return e.visible?C("calcite-action",{active:"toggle"===o&&e.value,appearance:"solid",bind:this,"data-action-uid":r,disabled:n,icon:this._getActionIcon(e),indicator:a,key:`action-${t}`,loading:s,onclick:this._triggerAction,scale:"s",text:i,title:this._hideActionText?i:void 0},this._getFallbackIcon(e)):null},this._openFeatureMenu=()=>{this.featureMenuOpen=!0},this._previousFeature=()=>{this.viewModel.selectedFeatureIndex--},this._nextFeature=()=>{this.viewModel.selectedFeatureIndex++},this._handleFeatureMenuBack=()=>{this.featureMenuOpen&&(this._focusOn="root-flow-item",this.featureMenuOpen=!1)},this._focusFlowItemNode=e=>{this._focusOn===e&&requestAnimationFrame((async()=>{switch(e){case"menu-flow-item":await(this._featureMenuViewportNode?.setFocus());break;case"root-flow-item":await(this._rootFlowItemNode?.setFocus())}this._focusOn=null}))},this._focusFlowItemNodeThrottled=n(this._focusFlowItemNode,k),this._displaySpinnerThrottled=n((()=>this._displaySpinner()),j),this._addSelectedFeatureIndexHandle(),this.addHandles([this._displaySpinnerThrottled,this._focusFlowItemNodeThrottled,s((()=>this.viewModel?.active),(()=>this._toggleScreenLocationEnabled())),s((()=>this.viewModel?.active),(e=>this._relatedRecordsWidget.closed=!e)),s((()=>this.visibleElements?.closeButton),(e=>this._relatedRecordsWidget.closable=e)),s((()=>this.visibleElements?.spinner),(e=>this._spinnerEnabledChange(e))),s((()=>this.viewModel?.view),((e,t)=>this._viewChange(e,t))),s((()=>this.viewModel?.view?.ready),((e,t)=>this._viewReadyChange(e??!1,t??!1))),s((()=>[this.viewModel?.waitingForResult,this.viewModel?.location]),(()=>{this._hideSpinner(),this._displaySpinnerThrottled()})),s((()=>this.selectedFeatureWidget),(()=>this._destroyRelatedRecordsFlowItemWidgets())),s((()=>{const e=this.selectedFeatureWidget?.viewModel;return[e?.title,e?.state]}),(()=>this._setTitleFromFeatureWidget())),s((()=>{const e=this.selectedFeatureWidget?.viewModel;return[e?.content,e?.state]}),(()=>this._setContentFromFeatureWidget())),s((()=>this.viewModel?.featureViewModels),(()=>this._featureMenuViewportScrollTop())),this._relatedRecordsWidget.on("close",(()=>this.close())),this._relatedRecordsWidget.on("exit",(()=>this._destroyRelatedRecordsFlowItemWidgets())),this._relatedRecordsWidget.on("open-related-feature",(({feature:e})=>this._openRelatedFeature(e)))])}loadDependencies(){return F({action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar.js"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group.js"),button:()=>import("@esri/calcite-components/dist/components/calcite-button.js"),flow:()=>import("@esri/calcite-components/dist/components/calcite-flow.js"),"flow-item":()=>import("@esri/calcite-components/dist/components/calcite-flow-item.js"),list:()=>import("@esri/calcite-components/dist/components/calcite-list.js"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item.js"),"list-item-group":()=>import("@esri/calcite-components/dist/components/calcite-list-item-group.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")})}destroy(){this._destroyRelatedRecordsFlowItemWidgets(),this._destroySelectedFeatureWidget(),this._destroySpinner(),this._unobserveFeatureMenuObserver(),this._featureMenuIntersectionObserver?.disconnect(),this._relatedRecordsWidget?.destroy()}get _hideActionText(){if(!this.responsiveActionsEnabled)return!1;const e=this.view?.widthBreakpoint;return"xsmall"===e||"small"===e||"medium"===e}get _featureNavigationVisible(){return this.viewModel.active&&this.viewModel.featureCount>1&&this.visibleElements.featureNavigation}get _isCollapsed(){return this._collapseEnabled&&this.collapsed}get _collapseEnabled(){return this.visibleElements.collapseButton&&!!this.title&&!!this.content}get content(){return this.viewModel.content}set content(e){this.viewModel.content=e}get featureMenuOpen(){return this.viewModel.featureMenuOpen}set featureMenuOpen(e){this.viewModel.featureMenuOpen=e}get features(){return this.viewModel.features}set features(e){this.viewModel.features=e}get location(){return this.viewModel.location}set location(e){this.viewModel.location=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get promises(){return this.viewModel.promises}set promises(e){this.viewModel.promises=e}get selectedFeature(){return this.viewModel.selectedFeature}get selectedFeatureIndex(){return this.viewModel.selectedFeatureIndex}set selectedFeatureIndex(e){this.viewModel.selectedFeatureIndex=e}get selectedFeatureWidget(){const{_feature:e,headingLevel:t,_relatedRecordsFlowItems:i}=this,{selectedFeatureViewModel:o}=this.viewModel,s={title:!1};return o?(e?(e.viewModel=o,e.visibleElements=s):this._feature=new d({flowItems:i,headingLevel:t+1,viewModel:o,visibleElements:s}),this._feature):null}get title(){return this.viewModel.title}set title(e){this.viewModel.title=e}get updateLocationEnabled(){return this.viewModel.updateLocationEnabled}set updateLocationEnabled(e){this.viewModel.updateLocationEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}blur(){const{active:e}=this.viewModel;e?this._rootFlowItemNode?.blur():o.getLogger(this).warn("Features can only be blurred when currently active.")}clear(){return this.viewModel.clear()}close(){this.viewModel.visible=!1}fetchFeatures(e,t){return this.viewModel.fetchFeatures(e,t)}focus(){const{active:e}=this.viewModel;e?this._setFocusOn():o.getLogger(this).warn("Features can only be focused when currently active.")}next(){return this.viewModel.next()}open(e){this.removeHandles(x);const t={collapsed:e?.collapsed??!1};this.set(t),this.viewModel.open(e),this.addHandles(r((()=>!this.viewModel.waitingForResult),(()=>this._addSelectedFeatureIndexHandle()),{once:!0}))}previous(){return this.viewModel.previous()}triggerAction(e){return this.viewModel.triggerAction(e)}render(){return C("div",{bind:this,class:this.classes(m.base,M.widget,M.panel),onkeydown:this._onMainKeydown},this._renderHeader(),this._renderContentContainer())}_renderFeatureNavigation(){return[this._renderPagination(),this._renderFeatureMenuButton()]}_renderHeader(){return!this.featureMenuOpen&&this.featureNavigationTop&&this._featureNavigationVisible?C("div",{class:m.header,key:"header-actions"},this._renderFeatureNavigation()):null}_renderFooter(){return this.featureMenuOpen||this.featureNavigationTop||!this._featureNavigationVisible?null:C("div",{class:m.footer,key:"footer-actions",slot:"footer"},this._renderFeatureNavigation())}_renderFeatureMenuButton(){const{messages:e,viewModel:t}=this,{featureCount:i,selectedFeatureIndex:o,pendingPromisesCount:s}=t;return C("calcite-action",{appearance:"solid",bind:this,icon:"list",key:"feature-menu-button",label:e.selectFeature,loading:s>0,onclick:this._openFeatureMenu,scale:"s",text:A(e.pageText,{index:N(o+1),total:N(i)}),textEnabled:!0,title:e.selectFeature})}_renderPagination(){const{previous:e,next:t}=this.messagesCommon.pagination;return C("calcite-action-bar",{class:m.paginationActionBar,expandDisabled:!0,key:"pagination-action-bar",layout:"horizontal",overflowActionsDisabled:!0,scale:"s"},C("calcite-action-group",{scale:"s"},C("calcite-action",{appearance:"solid",class:m.paginationPrevious,icon:"chevron-left",iconFlipRtl:!0,label:e,onclick:this._previousFeature,scale:"s",text:e,title:e}),C("calcite-action",{appearance:"solid",icon:"chevron-right",iconFlipRtl:!0,label:t,onclick:this._nextFeature,scale:"s",text:t,title:t})))}_renderFeatureMenuItem(e){const{selectedFeatureViewModel:t,featureViewModels:i}=this.viewModel,o=e===t,s=i.indexOf(e);return C("calcite-list-item",{bind:this,"data-feature-index":s,key:`feature-menu-item-${e.uid}`,onblur:this._removeActiveFeature,onfocus:this._setActiveFeature,onmouseleave:this._removeActiveFeature,onmouseover:this._setActiveFeature,selected:o,onCalciteListItemSelect:this._selectFeature},C("span",{innerHTML:e.title||this.messagesCommon.untitled,slot:"content"}))}_groupResultsByLayer(){const{featureViewModels:e}=this.viewModel,t=new Map;return e.forEach((e=>{const i=e?.graphic;if(!i)return;const o=i.sourceLayer??i.layer,s=t.get(o)??[];t.set(o,[...s,e])})),t}_renderFeatureMenu(){const{featureViewModels:e}=this.viewModel,t=this._groupResultsByLayer();return e.length?C("calcite-list",{selectionAppearance:"icon",selectionMode:"single"},Array.from(t.keys()).map((e=>C("calcite-list-item-group",{heading:e?.title??this.messagesCommon.untitled,key:e?.uid||"untitled"},t.get(e)?.map((e=>this._renderFeatureMenuItem(e))))))):null}_renderHeaderAction(e,t){return e.visible?C("calcite-action",{active:"toggle"===e.type&&e.value,appearance:"solid",bind:this,"data-action-uid":e.uid,disabled:e.disabled,icon:e.icon||"",indicator:e.indicator,key:`header-action-${t}`,loading:e.active,onclick:this._triggerHeaderAction,scale:"m",slot:"header-actions-end",text:e.title||"",title:e.title||""}):null}_renderHeaderActions(){return this.headerActions.map(((e,t)=>this._renderHeaderAction(e,t))).toArray()}_renderContentFeature(){const{headingLevel:e,visibleElements:t,_isCollapsed:i,_collapseEnabled:o,featureNavigationTop:s}=this,{title:r,active:n}=this.viewModel,a=t.heading&&r?r:"";return C("calcite-flow-item",{afterCreate:this._storeRootFlowItemNode,afterUpdate:this._focusRootFlowItemNode,bind:this,class:this.classes({[m.contentFeature]:!0,[m.flowItemCollapsed]:i}),closable:t.closeButton,closed:!n,collapsed:i,collapseDirection:s?"down":"up",collapsible:o,headingLevel:e,key:"root-flow-item",onCalciteFlowItemClose:this.close,onCalciteFlowItemToggle:this._handleCollapseToggle},a?C(b,{class:this.classes(m.featuresHeading,M.heading),innerHTML:a,key:"header-content",level:this.headingLevel,slot:"header-content"}):null,this._renderHeaderActions(),this._renderActionBar(),i?null:C("div",{class:this.classes(m.container,m.contentContainer)},this._renderContent()),this._renderFooter())}_renderFeatureMenuContainer(){const{viewModel:e,featureMenuOpen:t,messages:i,messagesCommon:o}=this,{active:s,featureViewModels:r,pendingPromisesCount:n}=e;return t?C("calcite-flow-item",{afterCreate:this._storeFeatureMenuFlowItemNode,afterUpdate:this._focusFeatureMenuFlowItemNode,bind:this,closable:!1,closed:!s,description:A(i.total,{total:r.length}),heading:i.selectFeature,key:"feature-menu",loading:e.waitingForContents,onCalciteFlowItemBack:this._handleFeatureMenuBack},n>0?C("calcite-loader",{class:m.loader,inline:!0,key:"feature-menu-loader",label:o.loading,scale:"m",slot:"header-actions-end"}):null,C("div",{class:m.container},this._renderFeatureMenu()),C("div",{afterCreate:this._featureMenuIntersectionObserverCreated,bind:this,class:m.featureMenuObserver}),C("calcite-button",{appearance:"transparent",onclick:this._handleFeatureMenuBack,slot:"footer-actions",width:"full"},o.back)):null}_renderContentContainer(){return C("calcite-flow",{key:"content-container"},this._renderContentFeature(),this._renderFeatureMenuContainer(),this._relatedRecordsWidget.render())}_getIconStyles(e){return{"background-image":e?`url(${e})`:""}}_getActionImage(e){const{selectedFeature:t}=this,i=t?.attributes,{image:o}=e;return o&&i?A(o,i):o??""}_getFallbackIcon(e){const{className:t,icon:i}=e;if(i)return null;const o=this._getActionImage(e),s={[m.icon]:!!t,[m.actionImage]:!!o};return t&&(s[t]=!0),o||t?C("span",{"aria-hidden":"true",class:this.classes(m.icon,s),key:"icon",styles:o?this._getIconStyles(o):{}}):null}_renderActionBar(){return!this._isCollapsed&&this.visibleElements.actionBar&&this.viewModel.allActions?.length?C("calcite-action-bar",{expandDisabled:!0,expanded:!this._hideActionText,key:"header-action-bar",scale:"s",slot:"action-bar"},C("calcite-action-group",{overlayPositioning:"fixed",scale:"s"},this._renderActions())):null}_renderActions(){return this.viewModel.allActions.toArray().map(this._renderAction)}_renderContent(){const e=this.viewModel?.content;return e?"string"==typeof e?C("div",{class:h.contentNode,innerHTML:e,key:e}):this.renderNodeContent(e):null}_setFocusOn(){this._focusOn=this.featureMenuOpen?"menu-flow-item":"root-flow-item",this.renderNow()}_handleCollapseToggle(){this.collapsed=!this.collapsed}async _openRelatedFeature(e){await e.viewModel.updateGeometry();const t=e.graphic,i=t?.geometry;if(null==i||null==t)return;this._destroyRelatedRecordsFlowItemWidgets(),await this.viewModel.zoomTo({target:i});const o=f(i);this.open({features:[t],location:null!=o?o:void 0})}_focusRootFlowItemNode(){this._focusFlowItemNodeThrottled("root-flow-item")}_focusFeatureMenuFlowItemNode(){this._focusFlowItemNodeThrottled("menu-flow-item")}_storeRootFlowItemNode(e){this._rootFlowItemNode=e,this._focusFlowItemNodeThrottled("root-flow-item")}_storeFeatureMenuFlowItemNode(e){this._featureMenuViewportNode=e,this._focusFlowItemNodeThrottled("menu-flow-item")}_setActiveFeature(e){const{viewModel:t}=this,i=e.currentTarget["data-feature-index"];t.activeFeature=t.features?.[i]||null}_removeActiveFeature(){this.viewModel.activeFeature=null}_selectFeature(e){const t=e.currentTarget["data-feature-index"];isNaN(t)||(this.viewModel.selectedFeatureIndex=t),this._handleFeatureMenuBack()}_unobserveFeatureMenuObserver(){this._featureMenuIntersectionObserverNode&&this._featureMenuIntersectionObserver.unobserve(this._featureMenuIntersectionObserverNode)}_featureMenuIntersectionObserverCreated(e){this._unobserveFeatureMenuObserver(),this._featureMenuIntersectionObserver.observe(e),this._featureMenuIntersectionObserverNode=e}_getActionIcon(e){return e.icon?e.icon:e.image||e.className?void 0:"question"}_getActionTitle(e){const{messages:t,selectedFeature:i,messagesCommon:o}=this,{id:s}=e,r=i?.attributes,n=e.title??"",a="zoom-to-feature"===s?A(n,{messages:t}):"remove-selected-feature"===s?A(n,{messages:o}):"zoom-to-clustered-features"===s||"browse-clustered-features"===s?A(n,{messages:t}):e.title;return a&&r?A(a,r):a??""}_onMainKeydown(e){const t=i(e);"ArrowLeft"===t&&(e.stopPropagation(),this._handleFeatureMenuBack(),this.previous()),"ArrowRight"===t&&(e.stopPropagation(),this._handleFeatureMenuBack(),this.next())}_featureMenuViewportScrollTop(){this._featureMenuViewportNode&&this._featureMenuViewportNode.scrollContentTo({top:0})}_setContentFromFeatureWidget(){const{selectedFeatureWidget:e}=this;e&&(this.viewModel.content=e)}_setTitleFromFeatureWidget(){const{selectedFeatureWidget:e,messagesCommon:t}=this,i=e?.viewModel;e&&(this.viewModel.title="error"===i?.state?t?.errorMessage:i?.title||"")}_addSelectedFeatureIndexHandle(){const e=s((()=>this.viewModel?.selectedFeatureIndex),((e,t)=>this._selectedFeatureIndexUpdated(e,t)));this.addHandles(e,x)}_selectedFeatureIndexUpdated(e,t){const{featureCount:i}=this.viewModel;i&&e!==t&&-1!==e&&(this._destroyRelatedRecordsFlowItemWidgets(),this._rootFlowItemNode&&this._rootFlowItemNode.scrollContentTo({top:0}))}_triggerHeaderAction(e){const t=e.currentTarget;if(t.disabled)return;const i=t.dataset.actionUid,o=this.headerActions.find((({uid:e})=>e===i));o&&!o.disabled&&("toggle"===o?.type&&(o.value=!o.value),this.emit("trigger-header-action",{action:o}))}_triggerAction(e){const t=e.currentTarget;if(t.disabled)return;const i=t.dataset.actionUid,{allActions:o}=this.viewModel,s=o.findIndex((e=>e.uid===i)),r=o.at(s);r&&"toggle"===r.type&&(r.value=!r.value),this.viewModel.triggerAction(s)}_createSpinner(e){e&&(this._spinner=new c({view:e}),e.ui.add(this._spinner,{key:R,position:"manual",internal:!0}))}_wireUpView(e){this._destroySpinner(),e&&this.visibleElements?.spinner&&this._createSpinner(e)}_hideSpinner(){const{_spinner:e}=this;e&&(e.location=null,e.hide())}_viewReadyChange(e,t){e?this._wireUpView(this.viewModel?.view):t&&this.viewModel.clear()}_viewChange(e,t){e&&t&&this.viewModel.clear()}_destroySelectedFeatureWidget(){const{_feature:e}=this;e&&(e.viewModel=null,!e.destroyed&&e.destroy()),this._feature=null}_destroyRelatedRecordsFlowItemWidgets(){this._relatedRecordsFlowItems.removeAll().forEach((e=>{"showAllEnabled"in e.viewModel&&(e.viewModel.showAllEnabled=!1),e.viewModel=null,e.destroy()}))}_toggleScreenLocationEnabled(){const{viewModel:e}=this;e&&(e.screenLocationEnabled=e.active)}_displaySpinner(){const{_spinner:e}=this;if(!e)return;const{location:t,waitingForResult:i}=this.viewModel;i&&t?e.show({location:t}):e.hide()}_destroySpinner(){const{_spinner:e,view:t}=this;e&&(t?.ui?.remove(e,R),e.destroy(),this._spinner=null)}_spinnerEnabledChange(e){this._destroySpinner(),e&&this._createSpinner(this.viewModel?.view)}};e([a()],O.prototype,"_focusOn",void 0),e([a()],O.prototype,"_relatedRecordsFlowItems",void 0),e([a()],O.prototype,"_hideActionText",null),e([a()],O.prototype,"_featureNavigationVisible",null),e([a()],O.prototype,"_isCollapsed",null),e([a()],O.prototype,"_collapseEnabled",null),e([a()],O.prototype,"collapsed",void 0),e([a()],O.prototype,"content",null),e([a()],O.prototype,"icon",void 0),e([a()],O.prototype,"featureMenuOpen",null),e([a()],O.prototype,"featureNavigationTop",void 0),e([a()],O.prototype,"features",null),e([a({type:_})],O.prototype,"headerActions",void 0),e([a()],O.prototype,"headingLevel",void 0),e([a()],O.prototype,"location",null),e([a()],O.prototype,"label",null),e([a(),y("esri/widgets/Features/t9n/Features")],O.prototype,"messages",void 0),e([a(),y("esri/t9n/common")],O.prototype,"messagesCommon",void 0),e([a()],O.prototype,"promises",null),e([a()],O.prototype,"responsiveActionsEnabled",void 0),e([a({readOnly:!0})],O.prototype,"selectedFeature",null),e([a()],O.prototype,"selectedFeatureIndex",null),e([a({readOnly:!0})],O.prototype,"selectedFeatureWidget",null),e([a()],O.prototype,"title",null),e([a()],O.prototype,"updateLocationEnabled",null),e([a()],O.prototype,"view",null),e([a({type:w}),I(["triggerAction","trigger-action"])],O.prototype,"viewModel",void 0),e([a({type:g,nonNullable:!0})],O.prototype,"visibleElements",void 0),e([a()],O.prototype,"visible",null),O=e([l("esri.widgets.Features")],O);const T=O;export{T as default};
package/widgets/Popup.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import{deprecatedProperty as t}from"../core/deprecate.js";import i from"../core/Logger.js";import{watch as o,on as n,whenOnce as s}from"../core/reactiveUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import a from"../support/actions/ActionButton.js";import d from"./Features.js";import c from"./Widget.js";import{css as p}from"./Popup/css.js";import h from"./Popup/PopupViewModel.js";import u from"./Popup/PopupVisibleElements.js";import{globalCss as g}from"./support/globalCss.js";import{isRTL as v}from"./support/widgetUtils.js";import{messageBundle as w}from"./support/decorators/messageBundle.js";import{vmEvent as m}from"./support/decorators/vmEvent.js";import{tsx as b}from"./support/jsxFactory.js";const f={buttonEnabled:!0,position:"auto",breakpoint:{width:544}};let _=class extends c{constructor(e,t){super(e,t),this._dockAction=new a({id:"popup-dock-action"}),this._featuresWidget=new d({responsiveActionsEnabled:!0}),this._containerNode=null,this._mainContainerNode=null,this._pointerOffsetInPx=16,this.alignment="auto",this.collapsed=!1,this.collapseEnabled=!0,this.dockEnabled=!1,this.headingLevel=2,this.maxInlineActions=3,this.messages=null,this.spinnerEnabled=!0,this.viewModel=new h,this.visibleElements=new u}initialize(){this.addHandles([o((()=>[this.viewModel?.view?.widthBreakpoint,this.dockEnabled]),(()=>this._handleDockIcon()),{initial:!0}),o((()=>[this.dockEnabled,this.messages?.undock,this.messages?.dock]),(()=>this._handleDockEnabled()),{initial:!0}),o((()=>this.dockOptions),(e=>{const{_dockAction:t}=this,i=this._featuresWidget.headerActions;i.remove(t),e.buttonEnabled&&i.add(t)}),{initial:!0}),o((()=>this.viewModel?.screenLocation),(()=>this._positionContainer())),o((()=>[this.viewModel?.active,this.dockEnabled]),(()=>this._toggleScreenLocationEnabled())),o((()=>[this.viewModel?.screenLocation,this.viewModel?.view?.padding,this.viewModel?.view?.size,this.viewModel?.active,this.viewModel?.location,this.alignment]),(()=>this.reposition())),o((()=>this.viewModel?.view?.size),((e,t)=>this._updateDockEnabledForViewSize(e,t))),o((()=>this.viewModel?.view),((e,t)=>this._viewChange(e,t))),o((()=>this.viewModel?.view?.ready),((e,t)=>this._viewReadyChange(e??!1,t??!1))),o((()=>this.viewModel),(()=>this._featuresWidget.viewModel=this.viewModel),{initial:!0}),o((()=>this._featureNavigationTop),(e=>this._featuresWidget.featureNavigationTop=e),{initial:!0}),o((()=>this.headingLevel),(e=>this._featuresWidget.headingLevel=e),{initial:!0}),o((()=>this.collapseEnabled),(e=>this._featuresWidget.visibleElements.collapseButton=e),{initial:!0}),o((()=>this.collapsed),(e=>this._featuresWidget.collapsed=e),{initial:!0}),o((()=>this.visibleElements.closeButton),(e=>this._featuresWidget.visibleElements.closeButton=!!e),{initial:!0}),o((()=>this.spinnerEnabled),(e=>this._featuresWidget.visibleElements.spinner=e),{initial:!0}),o((()=>this.visibleElements.featureNavigation),(e=>this._featuresWidget.visibleElements.featureNavigation=!!e),{initial:!0}),n((()=>this._featuresWidget),"trigger-header-action",(e=>{e.action===this._dockAction&&(this.dockEnabled=!this.dockEnabled)}))])}destroy(){this._dockAction.destroy(),this._featuresWidget?.destroy()}get _featureNavigationTop(){const{currentAlignment:e,currentDockPosition:t}=this;return"bottom-left"===e||"bottom-center"===e||"bottom-right"===e||"top-left"===t||"top-center"===t||"top-right"===t}get actions(){return this.viewModel.actions}set actions(e){this.viewModel.actions=e}get autoCloseEnabled(){return this.viewModel.autoCloseEnabled}set autoCloseEnabled(e){this.viewModel.autoCloseEnabled=e}get autoOpenEnabled(){return t(i.getLogger(this),"autoOpenEnabled",{replacement:"MapView/SceneView.popupEnabled",version:"4.27"}),this.viewModel.autoOpenEnabled}set autoOpenEnabled(e){t(i.getLogger(this),"autoOpenEnabled",{replacement:"MapView/SceneView.popupEnabled",version:"4.27"}),this.viewModel.autoOpenEnabled=e}get defaultPopupTemplateEnabled(){return this.viewModel.defaultPopupTemplateEnabled}set defaultPopupTemplateEnabled(e){this.viewModel.defaultPopupTemplateEnabled=e}get content(){return this.viewModel.content}set content(e){this.viewModel.content=e}get currentAlignment(){return this._getCurrentAlignment()}get currentDockPosition(){return this._getCurrentDockPosition()}get dockOptions(){return this._get("dockOptions")||f}set dockOptions(e){const t={...f},i=this.viewModel?.view?.breakpoints,o={};i&&(o.width=i.xsmall,o.height=i.xsmall);const n={...t,...e},s={...t.breakpoint,...o},{breakpoint:r}=n;"object"==typeof r?n.breakpoint={...s,...r}:r&&(n.breakpoint=s),this._set("dockOptions",n),this._setCurrentDockPosition(),this.reposition()}get featureCount(){return this.viewModel.featureCount}get featureMenuOpen(){return this.viewModel.featureMenuOpen}set featureMenuOpen(e){this.viewModel.featureMenuOpen=e}get features(){return this.viewModel.features}set features(e){this.viewModel.features=e}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get highlightEnabled(){return this.viewModel.highlightEnabled}set highlightEnabled(e){this.viewModel.highlightEnabled=e}get location(){return this.viewModel.location}set location(e){this.viewModel.location=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get promises(){return this.viewModel.promises}set promises(e){this.viewModel.promises=e}get selectedFeature(){return this.viewModel.selectedFeature}get selectedFeatureIndex(){return this.viewModel.selectedFeatureIndex}set selectedFeatureIndex(e){this.viewModel.selectedFeatureIndex=e}get selectedFeatureWidget(){return this._featuresWidget.selectedFeatureWidget}get title(){return this.viewModel.title}set title(e){this.viewModel.title=e}get updateLocationEnabled(){return this.viewModel.updateLocationEnabled}set updateLocationEnabled(e){this.viewModel.updateLocationEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}blur(){const{active:e}=this.viewModel;e||i.getLogger(this).warn("Popup can only be blurred when currently active."),this._featuresWidget.blur()}clear(){return this.viewModel.clear()}close(){this.visible=!1}fetchFeatures(e,t){return this.viewModel.fetchFeatures(e,t)}focus(){const{active:e}=this.viewModel;e||i.getLogger(this).warn("Popup can only be focused when currently active."),this._featuresWidget.focus(),this.scheduleRender()}next(){return this.viewModel.next()}open(e){const t=!!e&&!!e.featureMenuOpen,i={collapsed:!!e&&!!e.collapsed,featureMenuOpen:t};this.set(i),this.viewModel.open(e),this._shouldFocus(e)}previous(){return this.viewModel.previous()}reposition(){this.renderNow(),this._positionContainer(),this._setCurrentAlignment()}triggerAction(e){return this.viewModel.triggerAction(e)}render(){const{dockEnabled:e,currentAlignment:t,currentDockPosition:i}=this,{active:o}=this.viewModel,n=o&&e,s=o&&!e,r=this.selectedFeature?.layer?.title,l=this.selectedFeature?.layer?.id,a={[p.alignTopCenter]:"top-center"===t,[p.alignBottomCenter]:"bottom-center"===t,[p.alignTopLeft]:"top-left"===t,[p.alignBottomLeft]:"bottom-left"===t,[p.alignTopRight]:"top-right"===t,[p.alignBottomRight]:"bottom-right"===t,[p.isDocked]:n,[p.shadow]:s,[p.isDockedTopLeft]:"top-left"===i,[p.isDockedTopCenter]:"top-center"===i,[p.isDockedTopRight]:"top-right"===i,[p.isDockedBottomLeft]:"bottom-left"===i,[p.isDockedBottomCenter]:"bottom-center"===i,[p.isDockedBottomRight]:"bottom-right"===i};return b("div",{afterCreate:this._positionContainer,afterUpdate:this._positionContainer,bind:this,class:this.classes(p.base,a),"data-layer-id":l,"data-layer-title":r,role:"presentation"},o?[this._renderMainContainer(),this._renderPointer()]:null)}_renderPointer(){return this.dockEnabled?null:b("div",{class:p.pointer,key:"popup-pointer",role:"presentation"},b("div",{class:this.classes(p.pointerDirection,p.shadow)}))}_renderMainContainer(){const{dockEnabled:e}=this,t={[p.shadow]:e};return b("div",{afterCreate:this._setMainContainerNode,afterUpdate:this._setMainContainerNode,bind:this,class:this.classes(p.main,g.widget,t)},this._featuresWidget.render())}async _shouldFocus(e){e?.shouldFocus&&(await s((()=>!0===this.viewModel?.active)),this.focus())}_isOutsideView(e){const{popupHeight:t,popupWidth:i,screenLocation:o,side:n,view:s}=e;if(isNaN(i)||isNaN(t)||!s||!o)return!1;const r=s.padding;return"right"===n&&o.x+i/2>s.width-r.right||("left"===n&&o.x-i/2<r.left||("top"===n&&o.y-t<r.top||"bottom"===n&&o.y+t>s.height-r.bottom))}_calculateAutoAlignment(e){if("auto"!==e)return e;const{_pointerOffsetInPx:t,_containerNode:i,_mainContainerNode:o,viewModel:n}=this,{screenLocation:s,view:r}=n;if(null==s||!r||!i)return"top-center";function l(e){return parseInt(e.replaceAll(/[^-\d\.]/g,""),10)}const a=o?window.getComputedStyle(o,null):null,d=a?l(a.getPropertyValue("max-height")):0,c=a?l(a.getPropertyValue("height")):0,{height:p,width:h}=i.getBoundingClientRect(),u=h+t,g=Math.max(p,d,c)+t,v=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"right",view:r}),w=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"left",view:r}),m=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"top",view:r}),b=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"bottom",view:r});return w?m?"bottom-right":"top-right":v?m?"bottom-left":"top-left":m?b?"top-center":"bottom-center":"top-center"}_callCurrentAlignment(e){return"function"==typeof e?e.call(this):e}_getCurrentAlignment(){const{alignment:e,dockEnabled:t}=this;return t||!this.viewModel.active?null:this._calculatePositionResult(this._calculateAutoAlignment(this._callCurrentAlignment(e)))}_setCurrentAlignment(){this._set("currentAlignment",this._getCurrentAlignment())}_setCurrentDockPosition(){this._set("currentDockPosition",this._getCurrentDockPosition())}_calculatePositionResult(e){const t=["left","right"];return v(this.container)&&t.reverse(),e?.replace(/leading/gi,t[0]).replaceAll(/trailing/gi,t[1])}_callDockPosition(e){return"function"==typeof e?e.call(this):e}_getDockPosition(){return this._calculatePositionResult(this._calculateAutoDockPosition(this._callDockPosition(this.dockOptions?.position)))}_getCurrentDockPosition(){return this.dockEnabled&&this.viewModel.active?this._getDockPosition():null}_calculateAutoDockPosition(e){if("auto"!==e)return e;const t=this.viewModel?.view,i=v(this.container)?"top-left":"top-right";if(!t)return i;const o=t.padding||{left:0,right:0,top:0,bottom:0},n=t.width-o.left-o.right,{breakpoints:s}=t;return s&&n<=s.xsmall?"bottom-center":i}_getDockIcon(){const e=this._getDockPosition();if(this.dockEnabled)return"minimize";switch(e){case"top-left":case"bottom-left":return"dock-left";case"top-center":return"maximize";case"bottom-center":return"dock-bottom";default:return"dock-right"}}_handleDockIcon(){this._dockAction.icon=this._getDockIcon()}_handleDockEnabled(){this._dockAction.title=this.dockEnabled?this.messages?.undock:this.messages?.dock}_setMainContainerNode(e){this._mainContainerNode=e}_positionContainer(e=this._containerNode){if(e&&(this._containerNode=e),!this._containerNode)return;const{screenLocation:t}=this.viewModel,{width:i}=this._containerNode.getBoundingClientRect(),o=this._calculatePositionStyle(t,i);o&&Object.assign(this._containerNode.style,o)}_calculateFullWidth(e){const{currentAlignment:t,_pointerOffsetInPx:i}=this;return"top-left"===t||"bottom-left"===t||"top-right"===t||"bottom-right"===t?e+i:e}_calculateAlignmentPosition(e,t,i,o){const{currentAlignment:n,_pointerOffsetInPx:s}=this;if(!i)return;const{padding:r}=i,l=o/2,a=i.height-t,d=i.width-e;return"bottom-center"===n?{top:t+s-r.top,left:e-l-r.left}:"top-left"===n?{bottom:a+s-r.bottom,right:d+s-r.right}:"bottom-left"===n?{top:t+s-r.top,right:d+s-r.right}:"top-right"===n?{bottom:a+s-r.bottom,left:e+s-r.left}:"bottom-right"===n?{top:t+s-r.top,left:e+s-r.left}:"top-center"===n?{bottom:a+s-r.bottom,left:e-l-r.left}:void 0}_calculatePositionStyle(e,t){const{dockEnabled:i,view:o}=this;if(!o)return;if(i)return{left:"",top:"",right:"",bottom:""};if(null==e||!t)return;const n=this._calculateFullWidth(t),s=this._calculateAlignmentPosition(e.x,e.y,o,n);return s?{top:void 0!==s.top?`${s.top}px`:"auto",left:void 0!==s.left?`${s.left}px`:"auto",bottom:void 0!==s.bottom?`${s.bottom}px`:"auto",right:void 0!==s.right?`${s.right}px`:"auto"}:void 0}_viewChange(e,t){e&&t&&(this.close(),this.clear())}_viewReadyChange(e,t){e?this._wireUpView():t&&(this.close(),this.clear())}_wireUpView(){this._setDockEnabledForViewSize(this.dockOptions)}_dockingThresholdCrossed(e,t,i){const[o,n]=e,[s,r]=t,{width:l=0,height:a=0}=i??{};return o<=l&&s>l||o>l&&s<=l||n<=a&&r>a||n>a&&r<=a}_updateDockEnabledForViewSize(e,t){if(!e||!t)return;const i=this.viewModel?.view?.padding||{left:0,right:0,top:0,bottom:0},o=i.left+i.right,n=i.top+i.bottom,s=[],r=[];s[0]=e[0]-o,s[1]=e[1]-n,r[0]=t[0]-o,r[1]=t[1]-n;const{dockOptions:l}=this,a=l.breakpoint;this._dockingThresholdCrossed(s,r,a)&&this._setDockEnabledForViewSize(l),this._setCurrentDockPosition()}_toggleScreenLocationEnabled(){const{dockEnabled:e,viewModel:t}=this;if(!t)return;const i=t.active&&!e;t.screenLocationEnabled=i}_shouldDockAtCurrentViewSize(e){const t=e.breakpoint,i=this.viewModel?.view?.ui;if(!i)return!1;const{width:o,height:n}=i;if(isNaN(o)||isNaN(n))return!1;if(!t)return!1;const s=t.hasOwnProperty("width")&&o<=(t.width??0),r=t.hasOwnProperty("height")&&n<=(t.height??0);return s||r}_setDockEnabledForViewSize(e){e.breakpoint&&(this.dockEnabled=this._shouldDockAtCurrentViewSize(e))}};e([r({readOnly:!0})],_.prototype,"_featureNavigationTop",null),e([r()],_.prototype,"actions",null),e([r()],_.prototype,"alignment",void 0),e([r()],_.prototype,"autoCloseEnabled",null),e([r()],_.prototype,"autoOpenEnabled",null),e([r()],_.prototype,"defaultPopupTemplateEnabled",null),e([r()],_.prototype,"content",null),e([r()],_.prototype,"collapsed",void 0),e([r()],_.prototype,"collapseEnabled",void 0),e([r({readOnly:!0})],_.prototype,"currentAlignment",null),e([r({readOnly:!0})],_.prototype,"currentDockPosition",null),e([r()],_.prototype,"dockOptions",null),e([r()],_.prototype,"dockEnabled",void 0),e([r({readOnly:!0})],_.prototype,"featureCount",null),e([r()],_.prototype,"featureMenuOpen",null),e([r()],_.prototype,"features",null),e([r()],_.prototype,"goToOverride",null),e([r()],_.prototype,"headingLevel",void 0),e([r()],_.prototype,"highlightEnabled",null),e([r()],_.prototype,"location",null),e([r()],_.prototype,"label",null),e([r()],_.prototype,"maxInlineActions",void 0),e([r(),w("esri/widgets/Popup/t9n/Popup")],_.prototype,"messages",void 0),e([r()],_.prototype,"promises",null),e([r({readOnly:!0})],_.prototype,"selectedFeature",null),e([r()],_.prototype,"selectedFeatureIndex",null),e([r({readOnly:!0})],_.prototype,"selectedFeatureWidget",null),e([r()],_.prototype,"spinnerEnabled",void 0),e([r()],_.prototype,"title",null),e([r()],_.prototype,"updateLocationEnabled",null),e([r()],_.prototype,"view",null),e([r({type:h}),m(["triggerAction","trigger-action"])],_.prototype,"viewModel",void 0),e([r()],_.prototype,"visible",null),e([r({type:u,nonNullable:!0})],_.prototype,"visibleElements",void 0),_=e([l("esri.widgets.Popup")],_);const k=_;export{k as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import{deprecatedProperty as t}from"../core/deprecate.js";import i from"../core/Logger.js";import{watch as o,on as n,whenOnce as s}from"../core/reactiveUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as l}from"../core/accessorSupport/decorators/subclass.js";import a from"../support/actions/ActionButton.js";import d from"./Features.js";import c from"./Widget.js";import{css as p}from"./Popup/css.js";import h from"./Popup/PopupViewModel.js";import u from"./Popup/PopupVisibleElements.js";import{globalCss as g}from"./support/globalCss.js";import{isRTL as v}from"./support/widgetUtils.js";import{messageBundle as w}from"./support/decorators/messageBundle.js";import{vmEvent as m}from"./support/decorators/vmEvent.js";import{tsx as b}from"./support/jsxFactory.js";const f={buttonEnabled:!0,position:"auto",breakpoint:{width:544}};let _=class extends c{constructor(e,t){super(e,t),this._dockAction=new a({id:"popup-dock-action"}),this._featuresWidget=new d({responsiveActionsEnabled:!0}),this._containerNode=null,this._mainContainerNode=null,this._pointerOffsetInPx=16,this.alignment="auto",this.collapsed=!1,this.collapseEnabled=!0,this.dockEnabled=!1,this.headingLevel=2,this.maxInlineActions=3,this.messages=null,this.spinnerEnabled=!0,this.viewModel=new h,this.visibleElements=new u}initialize(){this.addHandles([o((()=>[this.viewModel?.view?.widthBreakpoint,this.dockEnabled]),(()=>this._handleDockIcon()),{initial:!0}),o((()=>[this.dockEnabled,this.messages?.undock,this.messages?.dock]),(()=>this._handleDockEnabled()),{initial:!0}),o((()=>this.dockOptions),(e=>{const{_dockAction:t}=this,i=this._featuresWidget.headerActions;i.remove(t),e.buttonEnabled&&i.add(t)}),{initial:!0}),o((()=>this.viewModel?.screenLocation),(()=>this._positionContainer())),o((()=>[this.viewModel?.active,this.dockEnabled]),(()=>this._toggleScreenLocationEnabled())),o((()=>[this.viewModel?.screenLocation,this.viewModel?.view?.padding,this.viewModel?.view?.size,this.viewModel?.active,this.viewModel?.location,this.alignment]),(()=>this.reposition())),o((()=>this.viewModel?.view?.size),((e,t)=>this._updateDockEnabledForViewSize(e,t))),o((()=>this.viewModel?.view),((e,t)=>this._viewChange(e,t))),o((()=>this.viewModel?.view?.ready),((e,t)=>this._viewReadyChange(e??!1,t??!1))),o((()=>this.viewModel),(()=>this._featuresWidget.viewModel=this.viewModel),{initial:!0}),o((()=>this._featureNavigationTop),(e=>this._featuresWidget.featureNavigationTop=e),{initial:!0}),o((()=>this.headingLevel),(e=>this._featuresWidget.headingLevel=e),{initial:!0}),o((()=>this.collapseEnabled),(e=>this._featuresWidget.visibleElements.collapseButton=e),{initial:!0}),o((()=>this.collapsed),(e=>this._featuresWidget.collapsed=e),{initial:!0}),o((()=>this.visibleElements.closeButton),(e=>this._featuresWidget.visibleElements.closeButton=!!e),{initial:!0}),o((()=>this.spinnerEnabled),(e=>this._featuresWidget.visibleElements.spinner=e),{initial:!0}),o((()=>this.visibleElements.featureNavigation),(e=>this._featuresWidget.visibleElements.featureNavigation=!!e),{initial:!0}),n((()=>this._featuresWidget),"trigger-header-action",(e=>{e.action===this._dockAction&&(this.dockEnabled=!this.dockEnabled)}))])}destroy(){this._dockAction.destroy(),this._featuresWidget?.destroy()}get _featureNavigationTop(){const{currentAlignment:e,currentDockPosition:t}=this;return"bottom-left"===e||"bottom-center"===e||"bottom-right"===e||"top-left"===t||"top-center"===t||"top-right"===t}get actions(){return this.viewModel.actions}set actions(e){this.viewModel.actions=e}get autoCloseEnabled(){return this.viewModel.autoCloseEnabled}set autoCloseEnabled(e){this.viewModel.autoCloseEnabled=e}get autoOpenEnabled(){return t(i.getLogger(this),"autoOpenEnabled",{replacement:"MapView/SceneView.popupEnabled",version:"4.27"}),this.viewModel.autoOpenEnabled}set autoOpenEnabled(e){t(i.getLogger(this),"autoOpenEnabled",{replacement:"MapView/SceneView.popupEnabled",version:"4.27"}),this.viewModel.autoOpenEnabled=e}get defaultPopupTemplateEnabled(){return this.viewModel.defaultPopupTemplateEnabled}set defaultPopupTemplateEnabled(e){this.viewModel.defaultPopupTemplateEnabled=e}get content(){return this.viewModel.content}set content(e){this.viewModel.content=e}get currentAlignment(){return this._getCurrentAlignment()}get currentDockPosition(){return this._getCurrentDockPosition()}get dockOptions(){return this._get("dockOptions")||f}set dockOptions(e){const t={...f},i=this.viewModel?.view?.breakpoints,o={};i&&(o.width=i.xsmall,o.height=i.xsmall);const n={...t,...e},s={...t.breakpoint,...o},{breakpoint:r}=n;"object"==typeof r?n.breakpoint={...s,...r}:r&&(n.breakpoint=s),this._set("dockOptions",n),this._setCurrentDockPosition(),this.reposition()}get featureCount(){return this.viewModel.featureCount}get featureMenuOpen(){return this.viewModel.featureMenuOpen}set featureMenuOpen(e){this.viewModel.featureMenuOpen=e}get features(){return this.viewModel.features}set features(e){this.viewModel.features=e}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get highlightEnabled(){return this.viewModel.highlightEnabled}set highlightEnabled(e){this.viewModel.highlightEnabled=e}get location(){return this.viewModel.location}set location(e){this.viewModel.location=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get promises(){return this.viewModel.promises}set promises(e){this.viewModel.promises=e}get selectedFeature(){return this.viewModel.selectedFeature}get selectedFeatureIndex(){return this.viewModel.selectedFeatureIndex}set selectedFeatureIndex(e){this.viewModel.selectedFeatureIndex=e}get selectedFeatureWidget(){return this._featuresWidget.selectedFeatureWidget}get title(){return this.viewModel.title}set title(e){this.viewModel.title=e}get updateLocationEnabled(){return this.viewModel.updateLocationEnabled}set updateLocationEnabled(e){this.viewModel.updateLocationEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}blur(){const{active:e}=this.viewModel;e||i.getLogger(this).warn("Popup can only be blurred when currently active."),this._featuresWidget.blur()}clear(){return this.viewModel.clear()}close(){this.visible=!1}fetchFeatures(e,t){return this.viewModel.fetchFeatures(e,t)}focus(){const{active:e}=this.viewModel;e||i.getLogger(this).warn("Popup can only be focused when currently active."),this.renderNow(),this._featuresWidget.focus()}next(){return this.viewModel.next()}open(e){const t=!!e&&!!e.featureMenuOpen,i={collapsed:!!e&&!!e.collapsed,featureMenuOpen:t};this.set(i),this.viewModel.open(e),this._shouldFocus(e)}previous(){return this.viewModel.previous()}reposition(){this.renderNow(),this._positionContainer(),this._setCurrentAlignment()}triggerAction(e){return this.viewModel.triggerAction(e)}render(){const{dockEnabled:e,currentAlignment:t,currentDockPosition:i}=this,{active:o}=this.viewModel,n=o&&e,s=o&&!e,r=this.selectedFeature?.layer?.title,l=this.selectedFeature?.layer?.id,a={[p.alignTopCenter]:"top-center"===t,[p.alignBottomCenter]:"bottom-center"===t,[p.alignTopLeft]:"top-left"===t,[p.alignBottomLeft]:"bottom-left"===t,[p.alignTopRight]:"top-right"===t,[p.alignBottomRight]:"bottom-right"===t,[p.isDocked]:n,[p.shadow]:s,[p.isDockedTopLeft]:"top-left"===i,[p.isDockedTopCenter]:"top-center"===i,[p.isDockedTopRight]:"top-right"===i,[p.isDockedBottomLeft]:"bottom-left"===i,[p.isDockedBottomCenter]:"bottom-center"===i,[p.isDockedBottomRight]:"bottom-right"===i};return b("div",{afterCreate:this._positionContainer,afterUpdate:this._positionContainer,bind:this,class:this.classes(p.base,a),"data-layer-id":l,"data-layer-title":r,role:"presentation"},o?[this._renderMainContainer(),this._renderPointer()]:null)}_renderPointer(){return this.dockEnabled?null:b("div",{class:p.pointer,key:"popup-pointer",role:"presentation"},b("div",{class:this.classes(p.pointerDirection,p.shadow)}))}_renderMainContainer(){const{dockEnabled:e}=this,t={[p.shadow]:e};return b("div",{afterCreate:this._setMainContainerNode,afterUpdate:this._setMainContainerNode,bind:this,class:this.classes(p.main,g.widget,t)},this._featuresWidget.render())}async _shouldFocus(e){e?.shouldFocus&&(await s((()=>!0===this.viewModel?.active)),this.focus())}_isOutsideView(e){const{popupHeight:t,popupWidth:i,screenLocation:o,side:n,view:s}=e;if(isNaN(i)||isNaN(t)||!s||!o)return!1;const r=s.padding;return"right"===n&&o.x+i/2>s.width-r.right||("left"===n&&o.x-i/2<r.left||("top"===n&&o.y-t<r.top||"bottom"===n&&o.y+t>s.height-r.bottom))}_calculateAutoAlignment(e){if("auto"!==e)return e;const{_pointerOffsetInPx:t,_containerNode:i,_mainContainerNode:o,viewModel:n}=this,{screenLocation:s,view:r}=n;if(null==s||!r||!i)return"top-center";function l(e){return parseInt(e.replaceAll(/[^-\d\.]/g,""),10)}const a=o?window.getComputedStyle(o,null):null,d=a?l(a.getPropertyValue("max-height")):0,c=a?l(a.getPropertyValue("height")):0,{height:p,width:h}=i.getBoundingClientRect(),u=h+t,g=Math.max(p,d,c)+t,v=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"right",view:r}),w=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"left",view:r}),m=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"top",view:r}),b=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"bottom",view:r});return w?m?"bottom-right":"top-right":v?m?"bottom-left":"top-left":m?b?"top-center":"bottom-center":"top-center"}_callCurrentAlignment(e){return"function"==typeof e?e.call(this):e}_getCurrentAlignment(){const{alignment:e,dockEnabled:t}=this;return t||!this.viewModel.active?null:this._calculatePositionResult(this._calculateAutoAlignment(this._callCurrentAlignment(e)))}_setCurrentAlignment(){this._set("currentAlignment",this._getCurrentAlignment())}_setCurrentDockPosition(){this._set("currentDockPosition",this._getCurrentDockPosition())}_calculatePositionResult(e){const t=["left","right"];return v(this.container)&&t.reverse(),e?.replace(/leading/gi,t[0]).replaceAll(/trailing/gi,t[1])}_callDockPosition(e){return"function"==typeof e?e.call(this):e}_getDockPosition(){return this._calculatePositionResult(this._calculateAutoDockPosition(this._callDockPosition(this.dockOptions?.position)))}_getCurrentDockPosition(){return this.dockEnabled&&this.viewModel.active?this._getDockPosition():null}_calculateAutoDockPosition(e){if("auto"!==e)return e;const t=this.viewModel?.view,i=v(this.container)?"top-left":"top-right";if(!t)return i;const o=t.padding||{left:0,right:0,top:0,bottom:0},n=t.width-o.left-o.right,{breakpoints:s}=t;return s&&n<=s.xsmall?"bottom-center":i}_getDockIcon(){const e=this._getDockPosition();if(this.dockEnabled)return"minimize";switch(e){case"top-left":case"bottom-left":return"dock-left";case"top-center":return"maximize";case"bottom-center":return"dock-bottom";default:return"dock-right"}}_handleDockIcon(){this._dockAction.icon=this._getDockIcon()}_handleDockEnabled(){this._dockAction.title=this.dockEnabled?this.messages?.undock:this.messages?.dock}_setMainContainerNode(e){this._mainContainerNode=e}_positionContainer(e=this._containerNode){if(e&&(this._containerNode=e),!this._containerNode)return;const{screenLocation:t}=this.viewModel,{width:i}=this._containerNode.getBoundingClientRect(),o=this._calculatePositionStyle(t,i);o&&Object.assign(this._containerNode.style,o)}_calculateFullWidth(e){const{currentAlignment:t,_pointerOffsetInPx:i}=this;return"top-left"===t||"bottom-left"===t||"top-right"===t||"bottom-right"===t?e+i:e}_calculateAlignmentPosition(e,t,i,o){const{currentAlignment:n,_pointerOffsetInPx:s}=this;if(!i)return;const{padding:r}=i,l=o/2,a=i.height-t,d=i.width-e;return"bottom-center"===n?{top:t+s-r.top,left:e-l-r.left}:"top-left"===n?{bottom:a+s-r.bottom,right:d+s-r.right}:"bottom-left"===n?{top:t+s-r.top,right:d+s-r.right}:"top-right"===n?{bottom:a+s-r.bottom,left:e+s-r.left}:"bottom-right"===n?{top:t+s-r.top,left:e+s-r.left}:"top-center"===n?{bottom:a+s-r.bottom,left:e-l-r.left}:void 0}_calculatePositionStyle(e,t){const{dockEnabled:i,view:o}=this;if(!o)return;if(i)return{left:"",top:"",right:"",bottom:""};if(null==e||!t)return;const n=this._calculateFullWidth(t),s=this._calculateAlignmentPosition(e.x,e.y,o,n);return s?{top:void 0!==s.top?`${s.top}px`:"auto",left:void 0!==s.left?`${s.left}px`:"auto",bottom:void 0!==s.bottom?`${s.bottom}px`:"auto",right:void 0!==s.right?`${s.right}px`:"auto"}:void 0}_viewChange(e,t){e&&t&&(this.close(),this.clear())}_viewReadyChange(e,t){e?this._wireUpView():t&&(this.close(),this.clear())}_wireUpView(){this._setDockEnabledForViewSize(this.dockOptions)}_dockingThresholdCrossed(e,t,i){const[o,n]=e,[s,r]=t,{width:l=0,height:a=0}=i??{};return o<=l&&s>l||o>l&&s<=l||n<=a&&r>a||n>a&&r<=a}_updateDockEnabledForViewSize(e,t){if(!e||!t)return;const i=this.viewModel?.view?.padding||{left:0,right:0,top:0,bottom:0},o=i.left+i.right,n=i.top+i.bottom,s=[],r=[];s[0]=e[0]-o,s[1]=e[1]-n,r[0]=t[0]-o,r[1]=t[1]-n;const{dockOptions:l}=this,a=l.breakpoint;this._dockingThresholdCrossed(s,r,a)&&this._setDockEnabledForViewSize(l),this._setCurrentDockPosition()}_toggleScreenLocationEnabled(){const{dockEnabled:e,viewModel:t}=this;if(!t)return;const i=t.active&&!e;t.screenLocationEnabled=i}_shouldDockAtCurrentViewSize(e){const t=e.breakpoint,i=this.viewModel?.view?.ui;if(!i)return!1;const{width:o,height:n}=i;if(isNaN(o)||isNaN(n))return!1;if(!t)return!1;const s=t.hasOwnProperty("width")&&o<=(t.width??0),r=t.hasOwnProperty("height")&&n<=(t.height??0);return s||r}_setDockEnabledForViewSize(e){e.breakpoint&&(this.dockEnabled=this._shouldDockAtCurrentViewSize(e))}};e([r({readOnly:!0})],_.prototype,"_featureNavigationTop",null),e([r()],_.prototype,"actions",null),e([r()],_.prototype,"alignment",void 0),e([r()],_.prototype,"autoCloseEnabled",null),e([r()],_.prototype,"autoOpenEnabled",null),e([r()],_.prototype,"defaultPopupTemplateEnabled",null),e([r()],_.prototype,"content",null),e([r()],_.prototype,"collapsed",void 0),e([r()],_.prototype,"collapseEnabled",void 0),e([r({readOnly:!0})],_.prototype,"currentAlignment",null),e([r({readOnly:!0})],_.prototype,"currentDockPosition",null),e([r()],_.prototype,"dockOptions",null),e([r()],_.prototype,"dockEnabled",void 0),e([r({readOnly:!0})],_.prototype,"featureCount",null),e([r()],_.prototype,"featureMenuOpen",null),e([r()],_.prototype,"features",null),e([r()],_.prototype,"goToOverride",null),e([r()],_.prototype,"headingLevel",void 0),e([r()],_.prototype,"highlightEnabled",null),e([r()],_.prototype,"location",null),e([r()],_.prototype,"label",null),e([r()],_.prototype,"maxInlineActions",void 0),e([r(),w("esri/widgets/Popup/t9n/Popup")],_.prototype,"messages",void 0),e([r()],_.prototype,"promises",null),e([r({readOnly:!0})],_.prototype,"selectedFeature",null),e([r()],_.prototype,"selectedFeatureIndex",null),e([r({readOnly:!0})],_.prototype,"selectedFeatureWidget",null),e([r()],_.prototype,"spinnerEnabled",void 0),e([r()],_.prototype,"title",null),e([r()],_.prototype,"updateLocationEnabled",null),e([r()],_.prototype,"view",null),e([r({type:h}),m(["triggerAction","trigger-action"])],_.prototype,"viewModel",void 0),e([r()],_.prototype,"visible",null),e([r({type:u,nonNullable:!0})],_.prototype,"visibleElements",void 0),_=e([l("esri.widgets.Popup")],_);const k=_;export{k 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.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Color.js";import i from"../../core/Accessor.js";import{isSome as r}from"../../core/arrayUtils.js";import{createTask as s}from"../../core/asyncUtils.js";import"../../core/has.js";import{abortMaybe as o,destroyMaybe as n}from"../../core/maybe.js";import{after as a,throwIfAborted as l}from"../../core/promiseUtils.js";import{watch as u,syncAndInitial as p}from"../../core/reactiveUtils.js";import{createScreenPointArray as d,createRenderScreenPointArray as c}from"../../core/screenUtils.js";import{convertTime as h,offsetDateUTC as m}from"../../core/timeUtils.js";import{property as f}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import{subclass as _}from"../../core/accessorSupport/decorators/subclass.js";import{c as v}from"../../chunks/vec3f64.js";import{longitudeToTimezone as y}from"../../views/3d/support/earthUtils.js";import{computeDirectionsOverTime as w}from"../../views/3d/support/sunUtils.js";import{ShadowCastVisualization as g}from"../../views/3d/webgl-engine/shaders/ShadowCastVisualizeTechniqueConfiguration.js";import T from"./DiscreteOptions.js";import{DurationMode as D}from"./DurationMode.js";import P from"./DurationOptions.js";import{ShadowCastState as b}from"./ShadowCastState.js";import{ShadowTooltipViewModel as O}from"./ShadowTooltipViewModel.js";import{ShadowVisualizationType as j}from"./ShadowVisualizationType.js";import z from"./ThresholdOptions.js";import{breadthFirstBinaryPartitioning as U}from"../support/traversalUtils.js";const C=[],V=v(),E=[],S=255,A=h(1,"hours","milliseconds"),R=500;let N=class extends i{constructor(e){super(e),this.view=null,this.tooltip=new O({getDuration:(e,t)=>this.getDuration(e,t)}),this.startTimeOfDay=h(10,"hours","milliseconds"),this.endTimeOfDay=h(16,"hours","milliseconds"),this.visualizationType=j.Threshold,this.thresholdOptions=new z,this.durationOptions=new P,this.discreteOptions=new T,this._running=!0,this._stopPreviewingTask=null,this._forcePreview=!1,this._autoRestoreForcePreviewEnabled=!0,this._utcOffset=null,this.date=new Date}initialize(){this.addHandles([u((()=>({view:this.view,tooltipEnabled:this._tooltipEnabled})),(({view:e,tooltipEnabled:t})=>{this.tooltip.view=e,this.tooltip.enabled=t}),p),u((()=>this._forcePreviewDependencies),(()=>{o(this._stopPreviewingTask),this._forcePreview=!0,this._autoRestoreForcePreviewEnabled&&(this._stopPreviewingTask=s((async e=>{await a(R,e),l(e),this._forcePreview=!1})))}),p),u((()=>({renderer:this.renderer,parameters:this._visualizationParameters})),(e=>x(e.renderer,e.parameters)),p),u((()=>({renderer:this.renderer,parameters:{lightDirections:this._lightDirections}})),(e=>x(e.renderer,e.parameters)),p),u((()=>({renderer:this.renderer,parameters:{enabled:this._running}})),(e=>x(e.renderer,e.parameters)),p),u((()=>({renderer:this.renderer,parameters:{previewing:this._previewing}})),(e=>x(e.renderer,e.parameters)),p)])}destroy(){this.stop(),n(this.tooltip)}get state(){return null!=this.view&&this.view.ready&&null!=this._referencePosition?b.Ready:b.Disabled}set date(e){const t=new Date(e);t.setHours(0,0,0,0),this._set("date",t)}get utcOffset(){return this._utcOffset??this._utcOffsetAuto}set utcOffset(e){this._utcOffset=e}get testData(){return{setAutoRestoreForcedPreviewEnabled:e=>{this._autoRestoreForcePreviewEnabled=e},setForcedPreview:e=>{this._forcePreview=e},isPreviewing:()=>this._previewing}}get _previewing(){const{view:e}=this;return null==e?.allLayerViews||(this._forcePreview||!e.stationary||e.allLayerViews.some((e=>M(e)&&e.updating)))}get _utcOffsetAuto(){const e=this._referencePosition;return null!=e?y(e[0],!1):0}get _dateUTCOffset(){let e=this.date;return e=m(e,-e.getTimezoneOffset(),"minutes"),e=m(e,-this.utcOffset,"hours"),e}get _startDateTimeUTC(){return m(this._dateUTCOffset,this.startTimeOfDay)}get _endDateTimeUTC(){return m(this._dateUTCOffset,this.endTimeOfDay)}get _referencePosition(){return this.view?.environmentManager?.referencePositionWGS84Comparable}get _interval(){const e=this._duration>0?Math.floor(this._duration/S):S,t=this.discreteOptions.interval;switch(this.visualizationType){case j.Threshold:case j.Duration:return e;case j.Discrete:return t>0?t:e}}get _sampleCount(){return this._lightDirections.length}get _duration(){return this.endTimeOfDay-this.startTimeOfDay}get _lightDirections(){const{view:e}=this;if(null==e)return C;const t="global"===e.viewingMode?V:this._referencePosition;if(null==t)return C;const i=this._interval,r=w(this._startDateTimeUTC,this._endDateTimeUTC,i,t,e.state.viewingMode),s=r.length;E.length=0;const o=U(0,s,E),n=new Array(s);for(let a=0;a<s;++a)n[a]=r[o[a]];return n}get _tooltipEnabled(){return this.state===b.Ready&&this.visualizationType!==j.Discrete&&this._running&&!this._previewing}get _visualizationParameters(){if(!this._running)return null;switch(this.visualizationType){case j.Threshold:return this._thresholdVisualizationParameters;case j.Duration:return this._durationVisualizationParameters;case j.Discrete:return this._discreteVisualizationParameters}}get _thresholdVisualizationParameters(){const{value:e,color:i}=this.thresholdOptions,r=this._duration;return{visualization:g.Threshold,color:t.toUnitRGBA(i),threshold:r>0?e/this._duration:0}}get _durationVisualizationParameters(){const{color:e,mode:i}=this.durationOptions,r=this._duration,s=r>0&&i===D.Hourly?A/r:0;return{color:t.toUnitRGBA(e),visualization:g.Gradient,bandsEnabled:s>0,bandSize:s}}get _discreteVisualizationParameters(){return{color:t.toUnitRGBA(this.discreteOptions.color),visualization:g.Gradient,bandsEnabled:!1,bandSize:0}}get _forcePreviewDependencies(){const{view:e}=this;if(null==e)return null;const t=e.slicePlane,i=e.allLayerViews.toArray().filter(M),s=i.map((e=>e.layer)).filter(r),o=i.map((e=>e.visible)),n=s.map((e=>e.visible)),a=s.map((e=>e.opacity)),l=s.filter((e=>"definitionExpression"in e)).map((e=>e.definitionExpression)),u=i.filter((e=>"filter"in e)).map((e=>e.filter));return{slicePlane:t,startDateUTC:this._startDateTimeUTC,endDateUTC:this._endDateTimeUTC,layerViewVisibilities:o,layerVisibilities:n,layerOpacities:a,filters:u,definitionExpressions:l}}get renderer(){const{view:e}=this;if(null==e)return null;const t=e._stage;return null==t?null:t.renderer}start(){this._running=!0}stop(){this._running=!1}setRunning(e){this._running=e}async getDuration(e,t){const{view:i,renderer:r}=this;if(null==i||null==r)return 0;const s=i.state.camera.screenToRender(d(e.x,e.y),c()),o=r.readAccumulatedShadow(s),n=this._sampleCount;if(0===n)return 0;return o*n*(this._duration/n)}};function x(e,t){null!=e&&null!=t&&e.setParameters({shadowCastOptions:t})}function M(e){if(e.suspended)return!1;switch(e.type){case"building-scene-3d":case"csv-3d":case"elevation-3d":case"feature-3d":case"geojson-3d":case"graphics-3d":case"integrated-mesh-3d":case"ogc-feature-3d":case"route-3d":case"scene-layer-3d":case"scene-layer-graphics-3d":case"stream-3d":case"wms-3d":return!0;case"base-dynamic-3d":case"dimension-3d":case"imagery-3d":case"imagery-tile-3d":case"line-of-sight-3d":case"map-image-3d":case"point-cloud-3d":case"tile-3d":case"vector-tile-3d":case"voxel-3d":case"wfs-3d":case"wmts-3d":case"media-3d":default:return!1;case"group":return e.layerViews.toArray().some((e=>M(e)))}}e([f()],N.prototype,"state",null),e([f()],N.prototype,"view",void 0),e([f()],N.prototype,"tooltip",void 0),e([f({nonNullable:!0})],N.prototype,"date",null),e([f({nonNullable:!0})],N.prototype,"utcOffset",null),e([f({nonNullable:!0})],N.prototype,"startTimeOfDay",void 0),e([f({nonNullable:!0})],N.prototype,"endTimeOfDay",void 0),e([f({nonNullable:!0})],N.prototype,"visualizationType",void 0),e([f({type:z,nonNullable:!0})],N.prototype,"thresholdOptions",void 0),e([f({type:P,nonNullable:!0})],N.prototype,"durationOptions",void 0),e([f({type:T,nonNullable:!0})],N.prototype,"discreteOptions",void 0),e([f()],N.prototype,"_running",void 0),e([f()],N.prototype,"_stopPreviewingTask",void 0),e([f()],N.prototype,"_forcePreview",void 0),e([f()],N.prototype,"_autoRestoreForcePreviewEnabled",void 0),e([f()],N.prototype,"_previewing",null),e([f()],N.prototype,"_utcOffset",void 0),e([f()],N.prototype,"_utcOffsetAuto",null),e([f()],N.prototype,"_dateUTCOffset",null),e([f()],N.prototype,"_startDateTimeUTC",null),e([f()],N.prototype,"_endDateTimeUTC",null),e([f()],N.prototype,"_referencePosition",null),e([f()],N.prototype,"_interval",null),e([f()],N.prototype,"_sampleCount",null),e([f()],N.prototype,"_duration",null),e([f()],N.prototype,"_lightDirections",null),e([f()],N.prototype,"_tooltipEnabled",null),e([f()],N.prototype,"_visualizationParameters",null),e([f()],N.prototype,"_thresholdVisualizationParameters",null),e([f()],N.prototype,"_durationVisualizationParameters",null),e([f()],N.prototype,"_discreteVisualizationParameters",null),e([f()],N.prototype,"_forcePreviewDependencies",null),e([f()],N.prototype,"renderer",null),N=e([_("esri.widgets.ShadowCast.ShadowCastViewModel")],N);const k=N;export{k as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Color.js";import i from"../../core/Accessor.js";import{isSome as r}from"../../core/arrayUtils.js";import{createTask as s}from"../../core/asyncUtils.js";import"../../core/has.js";import{abortMaybe as o,destroyMaybe as n}from"../../core/maybe.js";import{after as a,throwIfAborted as l}from"../../core/promiseUtils.js";import{watch as u,syncAndInitial as p}from"../../core/reactiveUtils.js";import{createScreenPointArray as d,createRenderScreenPointArray as c}from"../../core/screenUtils.js";import{convertTime as h,offsetDateUTC as m}from"../../core/timeUtils.js";import{property as f}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import{subclass as _}from"../../core/accessorSupport/decorators/subclass.js";import{c as v}from"../../chunks/vec3f64.js";import{longitudeToTimezone as y}from"../../views/3d/support/earthUtils.js";import{computeDirectionsOverTime as w}from"../../views/3d/support/sunUtils.js";import{ShadowCastVisualization as g}from"../../views/3d/webgl-engine/shaders/ShadowCastVisualizeTechniqueConfiguration.js";import T from"./DiscreteOptions.js";import{DurationMode as D}from"./DurationMode.js";import P from"./DurationOptions.js";import{ShadowCastState as b}from"./ShadowCastState.js";import{ShadowTooltipViewModel as O}from"./ShadowTooltipViewModel.js";import{ShadowVisualizationType as j}from"./ShadowVisualizationType.js";import z from"./ThresholdOptions.js";import{breadthFirstBinaryPartitioning as U}from"../support/traversalUtils.js";const C=[],V=v(),E=[],R=255,S=h(1,"hours","milliseconds"),A=500;let N=class extends i{constructor(e){super(e),this.view=null,this.tooltip=new O({getDuration:(e,t)=>this.getDuration(e,t)}),this.startTimeOfDay=h(10,"hours","milliseconds"),this.endTimeOfDay=h(16,"hours","milliseconds"),this.visualizationType=j.Threshold,this.thresholdOptions=new z,this.durationOptions=new P,this.discreteOptions=new T,this._running=!0,this._stopPreviewingTask=null,this._forcePreview=!1,this._autoRestoreForcePreviewEnabled=!0,this._utcOffset=null,this.date=new Date}initialize(){this.addHandles([u((()=>({view:this.view,tooltipEnabled:this._tooltipEnabled})),(({view:e,tooltipEnabled:t})=>{this.tooltip.view=e,this.tooltip.enabled=t}),p),u((()=>this._forcePreviewDependencies),(()=>{o(this._stopPreviewingTask),this._forcePreview=!0,this._autoRestoreForcePreviewEnabled&&(this._stopPreviewingTask=s((async e=>{await a(A,e),l(e),this._forcePreview=!1})))}),p),u((()=>({renderer:this.renderer,parameters:this._visualizationParameters})),(e=>x(e.renderer,e.parameters)),p),u((()=>({renderer:this.renderer,parameters:{lightDirections:this._lightDirections}})),(e=>x(e.renderer,e.parameters)),p),u((()=>({renderer:this.renderer,parameters:{enabled:this._running}})),(e=>x(e.renderer,e.parameters)),p),u((()=>({renderer:this.renderer,parameters:{previewing:this._previewing}})),(e=>x(e.renderer,e.parameters)),p)])}destroy(){this.stop(),x(this.renderer,{enabled:!1}),n(this.tooltip)}get state(){return null!=this.view&&this.view.ready&&null!=this._referencePosition?b.Ready:b.Disabled}set date(e){const t=new Date(e);t.setHours(0,0,0,0),this._set("date",t)}get utcOffset(){return this._utcOffset??this._utcOffsetAuto}set utcOffset(e){this._utcOffset=e}get testData(){return{setAutoRestoreForcedPreviewEnabled:e=>{this._autoRestoreForcePreviewEnabled=e},setForcedPreview:e=>{this._forcePreview=e},isPreviewing:()=>this._previewing}}get _previewing(){const{view:e}=this;return null==e?.allLayerViews||(this._forcePreview||!e.stationary||e.allLayerViews.some((e=>M(e)&&e.updating)))}get _utcOffsetAuto(){const e=this._referencePosition;return null!=e?y(e[0],!1):0}get _dateUTCOffset(){let e=this.date;return e=m(e,-e.getTimezoneOffset(),"minutes"),e=m(e,-this.utcOffset,"hours"),e}get _startDateTimeUTC(){return m(this._dateUTCOffset,this.startTimeOfDay)}get _endDateTimeUTC(){return m(this._dateUTCOffset,this.endTimeOfDay)}get _referencePosition(){return this.view?.environmentManager?.referencePositionWGS84Comparable}get _interval(){const e=this._duration>0?Math.floor(this._duration/R):R,t=this.discreteOptions.interval;switch(this.visualizationType){case j.Threshold:case j.Duration:return e;case j.Discrete:return t>0?t:e}}get _sampleCount(){return this._lightDirections.length}get _duration(){return this.endTimeOfDay-this.startTimeOfDay}get _lightDirections(){const{view:e}=this;if(null==e)return C;const t="global"===e.viewingMode?V:this._referencePosition;if(null==t)return C;const i=this._interval,r=w(this._startDateTimeUTC,this._endDateTimeUTC,i,t,e.state.viewingMode),s=r.length;E.length=0;const o=U(0,s,E),n=new Array(s);for(let a=0;a<s;++a)n[a]=r[o[a]];return n}get _tooltipEnabled(){return this.state===b.Ready&&this.visualizationType!==j.Discrete&&this._running&&!this._previewing}get _visualizationParameters(){if(!this._running)return null;switch(this.visualizationType){case j.Threshold:return this._thresholdVisualizationParameters;case j.Duration:return this._durationVisualizationParameters;case j.Discrete:return this._discreteVisualizationParameters}}get _thresholdVisualizationParameters(){const{value:e,color:i}=this.thresholdOptions,r=this._duration;return{visualization:g.Threshold,color:t.toUnitRGBA(i),threshold:r>0?e/this._duration:0}}get _durationVisualizationParameters(){const{color:e,mode:i}=this.durationOptions,r=this._duration,s=r>0&&i===D.Hourly?S/r:0;return{color:t.toUnitRGBA(e),visualization:g.Gradient,bandsEnabled:s>0,bandSize:s}}get _discreteVisualizationParameters(){return{color:t.toUnitRGBA(this.discreteOptions.color),visualization:g.Gradient,bandsEnabled:!1,bandSize:0}}get _forcePreviewDependencies(){const{view:e}=this;if(null==e)return null;const t=e.slicePlane,i=e.allLayerViews.toArray().filter(M),s=i.map((e=>e.layer)).filter(r),o=i.map((e=>e.visible)),n=s.map((e=>e.visible)),a=s.map((e=>e.opacity)),l=s.filter((e=>"definitionExpression"in e)).map((e=>e.definitionExpression)),u=i.filter((e=>"filter"in e)).map((e=>e.filter));return{slicePlane:t,startDateUTC:this._startDateTimeUTC,endDateUTC:this._endDateTimeUTC,layerViewVisibilities:o,layerVisibilities:n,layerOpacities:a,filters:u,definitionExpressions:l}}get renderer(){const{view:e}=this;if(null==e)return null;const t=e._stage;return null==t?null:t.renderer}start(){this.setRunning(!0)}stop(){this.setRunning(!1)}setRunning(e){this._running=e}async getDuration(e,t){const{view:i,renderer:r}=this;if(null==i||null==r)return 0;const s=i.state.camera.screenToRender(d(e.x,e.y),c()),o=r.readAccumulatedShadow(s),n=this._sampleCount;if(0===n)return 0;return o*n*(this._duration/n)}};function x(e,t){null!=e&&null!=t&&e.setParameters({shadowCastOptions:t})}function M(e){if(e.suspended)return!1;switch(e.type){case"building-scene-3d":case"csv-3d":case"elevation-3d":case"feature-3d":case"geojson-3d":case"graphics-3d":case"integrated-mesh-3d":case"ogc-feature-3d":case"route-3d":case"scene-layer-3d":case"scene-layer-graphics-3d":case"stream-3d":case"wms-3d":return!0;case"base-dynamic-3d":case"dimension-3d":case"imagery-3d":case"imagery-tile-3d":case"line-of-sight-3d":case"map-image-3d":case"point-cloud-3d":case"tile-3d":case"vector-tile-3d":case"voxel-3d":case"wfs-3d":case"wmts-3d":case"media-3d":default:return!1;case"group":return e.layerViews.toArray().some((e=>M(e)))}}e([f()],N.prototype,"state",null),e([f()],N.prototype,"view",void 0),e([f()],N.prototype,"tooltip",void 0),e([f({nonNullable:!0})],N.prototype,"date",null),e([f({nonNullable:!0})],N.prototype,"utcOffset",null),e([f({nonNullable:!0})],N.prototype,"startTimeOfDay",void 0),e([f({nonNullable:!0})],N.prototype,"endTimeOfDay",void 0),e([f({nonNullable:!0})],N.prototype,"visualizationType",void 0),e([f({type:z,nonNullable:!0})],N.prototype,"thresholdOptions",void 0),e([f({type:P,nonNullable:!0})],N.prototype,"durationOptions",void 0),e([f({type:T,nonNullable:!0})],N.prototype,"discreteOptions",void 0),e([f()],N.prototype,"_running",void 0),e([f()],N.prototype,"_stopPreviewingTask",void 0),e([f()],N.prototype,"_forcePreview",void 0),e([f()],N.prototype,"_autoRestoreForcePreviewEnabled",void 0),e([f()],N.prototype,"_previewing",null),e([f()],N.prototype,"_utcOffset",void 0),e([f()],N.prototype,"_utcOffsetAuto",null),e([f()],N.prototype,"_dateUTCOffset",null),e([f()],N.prototype,"_startDateTimeUTC",null),e([f()],N.prototype,"_endDateTimeUTC",null),e([f()],N.prototype,"_referencePosition",null),e([f()],N.prototype,"_interval",null),e([f()],N.prototype,"_sampleCount",null),e([f()],N.prototype,"_duration",null),e([f()],N.prototype,"_lightDirections",null),e([f()],N.prototype,"_tooltipEnabled",null),e([f()],N.prototype,"_visualizationParameters",null),e([f()],N.prototype,"_thresholdVisualizationParameters",null),e([f()],N.prototype,"_durationVisualizationParameters",null),e([f()],N.prototype,"_discreteVisualizationParameters",null),e([f()],N.prototype,"_forcePreviewDependencies",null),e([f()],N.prototype,"renderer",null),N=e([_("esri.widgets.ShadowCast.ShadowCastViewModel")],N);const k=N;export{k as default};
package/widgets/Sketch.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{handlesGroup as t}from"../core/handleUtils.js";import{removeMaybe as o,destroyMaybe as i}from"../core/maybe.js";import{watch as s,syncAndInitial as n,when as l}from"../core/reactiveUtils.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as r}from"../core/accessorSupport/decorators/subclass.js";import c from"./Widget.js";import u from"./Sketch/SketchViewModel.js";import d from"./Sketch/VisibleElements.js";import{loadCalciteComponents as p}from"./support/componentsUtils.js";import{globalCss as h}from"./support/globalCss.js";import{legacyIcon as v}from"./support/legacyIcon.js";import m from"./support/SelectionToolbar.js";import _ from"./support/SketchTooltipControls.js";import g from"./support/SnappingControls.js";import{isRTL as b}from"./support/widgetUtils.js";import{messageBundle as f}from"./support/decorators/messageBundle.js";import{vmEvent as w}from"./support/decorators/vmEvent.js";import{tsx as y}from"./support/jsxFactory.js";import{substitute as C}from"../intl/substitute.js";const T="esri-sketch",M={base:T,widgetIcon:v.edit,verticalLayout:`${T}--vertical`,panel:`${T}__panel`,infoPanel:`${T}__info-panel`,section:`${T}__section`,toolSection:`${T}__tool-section`,infoSection:`${T}__info-section`,infoCountSection:`${T}__info-count-section`,menuContainer:`${T}__menu-container`,menuHeader:`${T}__menu-header`,menuTitle:`${T}__menu-title`,featureCountBadge:`${T}__feature-count-badge`,featureCountText:`${T}__feature-count-text`,featureCountNumber:`${T}__feature-count-number`,actionToggle:`${T}__action-toggle`,actionToggleOn:`${T}__action-toggle--on`,actionTitle:`${T}__item-action-title`,actionIcon:`${T}__item-action-icon`};let O=class extends c{constructor(e,t){super(e,t),this._activeCreateOptions=null,this._menuOpen=!1,this._selectionToolbar=null,this._viewModelHandlesGroup=null,this.availableCreateTools=["point","polyline","polygon","rectangle","circle"],this.creationMode="continuous",this.iconClass=M.widgetIcon,this.icon=null,this.layout="horizontal",this.messages=null,this.messagesCommon=null,this.visibleElements=new d,this._activateCreateTool=this._activateCreateTool.bind(this),this.viewModel=e?.viewModel||new u}initialize(){const{layer:e,view:i}=this,{selectionTools:a}=this.visibleElements,r=new m({view:"2d"===i?.type?i:null,sources:e?[e]:null,visibleElements:{lassoTool:!!a?.["lasso-selection"],rectangleTool:!!a?.["rectangle-selection"]}});this.addHandles([s((()=>this.viewModel),(e=>{this._viewModelHandlesGroup=o(this._viewModelHandlesGroup),e&&(this._viewModelHandlesGroup=t([e.on("create",(e=>{this.scheduleRender(),this._onCreateOperation(e)})),e.on("update",(()=>this.scheduleRender())),e.on("delete",(e=>this.emit("delete",e))),e.on("undo",(()=>this.scheduleRender())),e.on("redo",(()=>this.scheduleRender())),s((()=>e.layer),(e=>{this._selectionToolbar&&(this._selectionToolbar.sources=e?[e]:null)})),s((()=>e.view),(e=>{this._selectionToolbar&&(this._selectionToolbar.view="2d"===e?.type?e:null)})),s((()=>e.state),(()=>this.notifyChange("state")))]))}),n),l((()=>r.activeToolInfo),(()=>this.viewModel.cancel())),r.on("complete",(e=>this._onSelectionOperationComplete(e)))]),this._selectionToolbar=r}loadDependencies(){return p({action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js")})}destroy(){this._selectionToolbar?.destroy(),this._viewModelHandlesGroup=o(this._viewModelHandlesGroup)}get activeTool(){const e=this._selectionToolbar?.activeToolInfo;if(e)switch(e.toolName){case"lasso":return"lasso-selection";case"rectangle":return"rectangle-selection";case"default":return"custom-selection"}return this.viewModel.activeTool}get createGraphic(){return this.viewModel.createGraphic}get defaultCreateOptions(){return this.viewModel.defaultCreateOptions}set defaultCreateOptions(e){this.viewModel.defaultCreateOptions=e}get defaultUpdateOptions(){return this.viewModel.defaultUpdateOptions}set defaultUpdateOptions(e){this.viewModel.defaultUpdateOptions=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get labelOptions(){return this.viewModel.labelOptions}set labelOptions(e){this.viewModel.labelOptions=e}get layer(){return this.viewModel.layer}set layer(e){this.viewModel.layer=e}get snappingOptions(){return this.viewModel.snappingOptions}set snappingOptions(e){this.viewModel.snappingOptions=e}get state(){return this._selectionToolbar?.activeToolInfo?"active":this.viewModel.state}get tooltipOptions(){return this.viewModel.tooltipOptions}set tooltipOptions(e){this.viewModel.tooltipOptions=e}get updateGraphics(){return this.viewModel.updateGraphics}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}set viewModel(e){const t=this._get("viewModel");e!==t&&(t&&i(t),this._set("viewModel",e))}get _effectiveAvailableCreateTools(){const{availableCreateTools:e,visibleElements:t}=this;return e?.filter((e=>!!t.createTools?.[e]))}create(e,t){this._activeCreateOptions=t||null,this.viewModel.create(e,t)}update(e,t){return this.viewModel.update(e,t)}complete(){this.viewModel.complete()}cancel(){this._selectionToolbar?.cancel(),this.viewModel.cancel()}undo(){this.viewModel.undo(),this.view?.focus()}redo(){this.viewModel.redo(),this.view?.focus()}delete(){this.viewModel.delete()}duplicate(){return this.viewModel.duplicate()}render(){const{label:e,layout:t,viewModel:{state:o}}=this;return y("div",{"aria-label":e,class:this.classes(M.base,h.widget,{[h.disabled]:"disabled"===o,[M.verticalLayout]:"vertical"===t})},y("div",{class:M.panel,role:"toolbar"},this._renderTopPanelContents()),y("div",{class:this.classes(M.panel,M.infoPanel)},this._renderInfoPanelContents()))}_renderTopPanelContents(){const e=this.classes(M.section,M.toolSection),{_effectiveAvailableCreateTools:t,visibleElements:o,viewModel:i}=this;return[i.updateOnGraphicClick||this._selectionToolbar?.visibleToolCount?y("div",{class:e,key:"selection-button-container",role:"menu"},this._renderDefaultSelectionButton(),this._renderSelectionToolbar()):null,t?.length?y("div",{class:e,role:"menu"},this._renderDrawButtons()):null,o.undoRedoMenu?y("div",{class:e,key:"undo-redo-menu-button-container",role:"menu"},this._renderUndoRedoMenuButtons()):null,o.settingsMenu?y("div",{class:M.section,key:"settings-menu-button-container"},this._renderSettingsMenuButton()):null]}_renderInfoPanelContents(){return this._menuOpen?this._renderSettingsMenu():this.updateGraphics.length?[y("div",{class:this.classes(M.section,M.infoSection,M.infoCountSection),key:"feature-count-container"},this._renderFeatureCount()),y("div",{class:this.classes(M.section,M.infoSection),key:"delete-button-container"},this._renderDuplicateButton(),this._renderDeleteButton())]:void 0}_renderSettingsMenu(){const{labelOptions:e,messagesCommon:t,snappingOptions:o,tooltipOptions:i,view:s,visibleElements:n}=this;return[y("div",{class:M.menuContainer,"data-testid":"menu",key:"settings-menu-container",role:"menu"},y("header",{class:M.menuHeader,key:"settings-menu-header"},y("span",{class:M.menuTitle},t.settings)),n.sketchTooltipControls?y(_,{labelOptions:e,tooltipOptions:i,viewType:s?.type,visibleElements:n.sketchTooltipControlsElements}):void 0,n.snappingControls&&s&&o?y(g,{snappingOptions:o,view:s,visibleElements:n.snappingControlsElements}):void 0)]}_renderFeatureCount(){const{layout:e,messages:t,updateGraphics:{length:o}}=this,i=C(t.selectedCount,{count:o});return y("div",{"aria-label":i,class:M.featureCountBadge},y("span",{class:M.featureCountNumber},"vertical"===e?o:i))}_renderDuplicateButton(){if(!this.visibleElements.duplicateButton)return;const e=this.messages,t=this.updateGraphics.length>1?e.duplicateFeatures:e.duplicateFeature;return y("calcite-action",{bind:this,label:t,onclick:this._onDuplicateSelect,scale:"s",text:t,title:t},y("calcite-icon",{icon:"copy",scale:"s"}))}_renderDeleteButton(){const e=this.messages,t=this.updateGraphics.length>1?e.deleteFeatures:e.deleteFeature;return y("calcite-action",{bind:this,label:t,onclick:this.delete,scale:"s",text:t,title:t},y("calcite-icon",{icon:"trash",scale:"s"}))}_renderDefaultSelectionButton(){if(!this.viewModel.updateOnGraphicClick)return;const e=this.messages.selectFeature;return y("calcite-action",{active:"ready"===this.state,bind:this,label:e,onclick:this._activateDefaultSelectTool,scale:"s",text:e,title:e},y("calcite-icon",{icon:"cursor",scale:"s"}))}_renderSelectionToolbar(){if("2d"===this.view?.type&&this._selectionToolbar)return this._selectionToolbar.render()}_renderDrawButtons(){return this._effectiveAvailableCreateTools?.map((e=>{switch(e){case"point":return this._renderPointButton();case"polyline":return this._renderPolylineButton();case"polygon":return this._renderPolygonButton();case"rectangle":return this._renderRectangleButton();case"circle":return this._renderCircleButton();default:return}}))}_renderPointButton(){const e="point",t=this.messages.drawPoint;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"pin",scale:"s"}))}_renderPolygonButton(){const e="polygon",t=this.messages.drawPolygon;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"polygon",scale:"s"}))}_renderPolylineButton(){const e="polyline",t=this.messages.drawPolyline;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"line",scale:"s"}))}_renderCircleButton(){const e="circle",t=this.messages.drawCircle;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"circle",scale:"s"}))}_renderRectangleButton(){const e="rectangle",t=this.messages.drawRectangle;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"rectangle",scale:"s"}))}_renderUndoRedoMenuButtons(){return[this._renderUndoButton(),this._renderRedoButton()]}_renderUndoButton(){const e=this.messages.undo;return y("calcite-action",{bind:this,disabled:!this.viewModel.canUndo(),label:e,onclick:this.undo,scale:"s",text:e,title:e},y("calcite-icon",{icon:b(this.container)?"redo":"undo",scale:"s"}))}_renderRedoButton(){const e=this.messages.redo;return y("calcite-action",{bind:this,disabled:!this.viewModel.canRedo(),label:e,onclick:this.redo,scale:"s",text:e,title:e},y("calcite-icon",{icon:b(this.container)?"undo":"redo",scale:"s"}))}_renderSettingsMenuButton(){const e=this.messagesCommon.settings;return y("calcite-action",{active:this._menuOpen,bind:this,"data-testid":"settings-menu-action",label:e,onclick:this._toggleMenu,scale:"s",text:e,title:e},y("calcite-icon",{icon:"gear",scale:"s"}))}_activateCreateTool(e){this.activeTool!==e?(this._selectionToolbar?.cancel(),this.create(e)):this.cancel()}_onCreateOperation(e){if("complete"!==e.state)return;const{creationMode:t}=this,{type:o}=e;if("create"===o){const{tool:o,graphic:i}=e,s=this._activeCreateOptions;this._activeCreateOptions=null,"continuous"===t?this.create(o,s):"update"===t&&this.update([i])}}_toggleMenu(){this._menuOpen=!this._menuOpen,this.scheduleRender()}_onDuplicateSelect(){const e=this.duplicate(),t=this.viewModel.activeTool;"transform"!==t&&"reshape"!==t||this.update(e,{tool:t})}_onSelectionOperationComplete(e){const{viewModel:{defaultUpdateOptions:t}}=this,{selection:o}=e;if(!e.aborted&&o.length){const e=t.tool,i=o.length>1&&"reshape"===e?"transform":e;this.update(o,{...t,tool:i})}this.notifyChange("state")}_activateDefaultSelectTool(){this.cancel(),this.view?.focus()}};e([a()],O.prototype,"activeTool",null),e([a({cast:e=>{if(!e?.length)return null;const t=new Set(["point","polyline","polygon","rectangle","circle"]);return e.filter((e=>t.has(e)))}})],O.prototype,"availableCreateTools",void 0),e([a({readOnly:!0})],O.prototype,"createGraphic",null),e([a()],O.prototype,"creationMode",void 0),e([a()],O.prototype,"defaultCreateOptions",null),e([a()],O.prototype,"defaultUpdateOptions",null),e([a()],O.prototype,"iconClass",void 0),e([a()],O.prototype,"icon",void 0),e([a()],O.prototype,"label",null),e([a()],O.prototype,"labelOptions",null),e([a()],O.prototype,"layer",null),e([a({type:["horizontal","vertical"]})],O.prototype,"layout",void 0),e([a(),f("esri/widgets/Sketch/t9n/Sketch")],O.prototype,"messages",void 0),e([a(),f("esri/t9n/common")],O.prototype,"messagesCommon",void 0),e([a()],O.prototype,"snappingOptions",null),e([a()],O.prototype,"state",null),e([a()],O.prototype,"tooltipOptions",null),e([a({readOnly:!0})],O.prototype,"updateGraphics",null),e([a()],O.prototype,"view",null),e([a(),w(["create","update","undo","redo"])],O.prototype,"viewModel",null),e([a({type:d,nonNullable:!0})],O.prototype,"visibleElements",void 0),e([a()],O.prototype,"_effectiveAvailableCreateTools",null),O=e([r("esri.widgets.Sketch")],O);const S=O;export{S as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{handlesGroup as t}from"../core/handleUtils.js";import{removeMaybe as o,destroyMaybe as i}from"../core/maybe.js";import{watch as s,syncAndInitial as n,when as l}from"../core/reactiveUtils.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as r}from"../core/accessorSupport/decorators/subclass.js";import c from"./Widget.js";import u from"./Sketch/SketchViewModel.js";import d from"./Sketch/VisibleElements.js";import{loadCalciteComponents as p}from"./support/componentsUtils.js";import{globalCss as h}from"./support/globalCss.js";import{legacyIcon as v}from"./support/legacyIcon.js";import m from"./support/SelectionToolbar.js";import _ from"./support/SketchTooltipControls.js";import g from"./support/SnappingControls.js";import{isRTL as b}from"./support/widgetUtils.js";import{messageBundle as f}from"./support/decorators/messageBundle.js";import{vmEvent as w}from"./support/decorators/vmEvent.js";import{tsx as y}from"./support/jsxFactory.js";import{substitute as C}from"../intl/substitute.js";const T="esri-sketch",M={base:T,widgetIcon:v.edit,verticalLayout:`${T}--vertical`,panel:`${T}__panel`,infoPanel:`${T}__info-panel`,section:`${T}__section`,toolSection:`${T}__tool-section`,infoSection:`${T}__info-section`,infoCountSection:`${T}__info-count-section`,menuContainer:`${T}__menu-container`,menuHeader:`${T}__menu-header`,menuTitle:`${T}__menu-title`,featureCountBadge:`${T}__feature-count-badge`,featureCountText:`${T}__feature-count-text`,featureCountNumber:`${T}__feature-count-number`,actionToggle:`${T}__action-toggle`,actionToggleOn:`${T}__action-toggle--on`,actionTitle:`${T}__item-action-title`,actionIcon:`${T}__item-action-icon`};let O=class extends c{constructor(e,t){super(e,t),this._activeCreateOptions=null,this._menuOpen=!1,this._selectionToolbar=null,this._viewModelHandlesGroup=null,this.availableCreateTools=["point","polyline","polygon","rectangle","circle"],this.creationMode="continuous",this.iconClass=M.widgetIcon,this.icon=null,this.layout="horizontal",this.messages=null,this.messagesCommon=null,this.visibleElements=new d,this._activateCreateTool=this._activateCreateTool.bind(this),this.viewModel=e?.viewModel||new u}initialize(){const{layer:e,view:i}=this,a=new m({view:"2d"===i?.type?i:null,sources:e?[e]:null});this.addHandles([s((()=>this.viewModel),(e=>{this._viewModelHandlesGroup=o(this._viewModelHandlesGroup),e&&(this._viewModelHandlesGroup=t([e.on("create",(e=>{this.scheduleRender(),this._onCreateOperation(e)})),e.on("update",(()=>this.scheduleRender())),e.on("delete",(e=>this.emit("delete",e))),e.on("undo",(()=>this.scheduleRender())),e.on("redo",(()=>this.scheduleRender())),s((()=>e.layer),(e=>{this._selectionToolbar&&(this._selectionToolbar.sources=e?[e]:null)})),s((()=>e.view),(e=>{this._selectionToolbar&&(this._selectionToolbar.view="2d"===e?.type?e:null)})),s((()=>e.state),(()=>this.notifyChange("state")))]))}),n),l((()=>a.activeToolInfo),(()=>this.viewModel.cancel())),a.on("complete",(e=>this._onSelectionOperationComplete(e))),s((()=>{const{selectionTools:e}=this.visibleElements;return{lassoTool:!!e?.["lasso-selection"],rectangleTool:!!e?.["rectangle-selection"]}}),(e=>{Object.assign(a.visibleElements,e)}),n)]),this._selectionToolbar=a}loadDependencies(){return p({action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js")})}destroy(){this._selectionToolbar?.destroy(),this._viewModelHandlesGroup=o(this._viewModelHandlesGroup)}get activeTool(){const e=this._selectionToolbar?.activeToolInfo;if(e)switch(e.toolName){case"lasso":return"lasso-selection";case"rectangle":return"rectangle-selection";case"default":return"custom-selection"}return this.viewModel.activeTool}get createGraphic(){return this.viewModel.createGraphic}get defaultCreateOptions(){return this.viewModel.defaultCreateOptions}set defaultCreateOptions(e){this.viewModel.defaultCreateOptions=e}get defaultUpdateOptions(){return this.viewModel.defaultUpdateOptions}set defaultUpdateOptions(e){this.viewModel.defaultUpdateOptions=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get labelOptions(){return this.viewModel.labelOptions}set labelOptions(e){this.viewModel.labelOptions=e}get layer(){return this.viewModel.layer}set layer(e){this.viewModel.layer=e}get snappingOptions(){return this.viewModel.snappingOptions}set snappingOptions(e){this.viewModel.snappingOptions=e}get state(){return this._selectionToolbar?.activeToolInfo?"active":this.viewModel.state}get tooltipOptions(){return this.viewModel.tooltipOptions}set tooltipOptions(e){this.viewModel.tooltipOptions=e}get updateGraphics(){return this.viewModel.updateGraphics}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}set viewModel(e){const t=this._get("viewModel");e!==t&&(t&&i(t),this._set("viewModel",e))}get _effectiveAvailableCreateTools(){const{availableCreateTools:e,visibleElements:t}=this;return e?.filter((e=>!!t.createTools?.[e]))}create(e,t){this._activeCreateOptions=t||null,this.viewModel.create(e,t)}update(e,t){return this.viewModel.update(e,t)}complete(){this.viewModel.complete()}cancel(){this._selectionToolbar?.cancel(),this.viewModel.cancel()}undo(){this.viewModel.undo(),this.view?.focus()}redo(){this.viewModel.redo(),this.view?.focus()}delete(){this.viewModel.delete()}duplicate(){return this.viewModel.duplicate()}render(){const{label:e,layout:t,viewModel:{state:o}}=this;return y("div",{"aria-label":e,class:this.classes(M.base,h.widget,{[h.disabled]:"disabled"===o,[M.verticalLayout]:"vertical"===t})},y("div",{class:M.panel,role:"toolbar"},this._renderTopPanelContents()),y("div",{class:this.classes(M.panel,M.infoPanel)},this._renderInfoPanelContents()))}_renderTopPanelContents(){const e=this.classes(M.section,M.toolSection),{_effectiveAvailableCreateTools:t,visibleElements:o,viewModel:i}=this;return[i.updateOnGraphicClick||this._selectionToolbar?.visibleToolCount?y("div",{class:e,key:"selection-button-container",role:"menu"},this._renderDefaultSelectionButton(),this._renderSelectionToolbar()):null,t?.length?y("div",{class:e,role:"menu"},this._renderDrawButtons()):null,o.undoRedoMenu?y("div",{class:e,key:"undo-redo-menu-button-container",role:"menu"},this._renderUndoRedoMenuButtons()):null,o.settingsMenu?y("div",{class:M.section,key:"settings-menu-button-container"},this._renderSettingsMenuButton()):null]}_renderInfoPanelContents(){return this._menuOpen?this._renderSettingsMenu():this.updateGraphics.length?[y("div",{class:this.classes(M.section,M.infoSection,M.infoCountSection),key:"feature-count-container"},this._renderFeatureCount()),y("div",{class:this.classes(M.section,M.infoSection),key:"delete-button-container"},this._renderDuplicateButton(),this._renderDeleteButton())]:void 0}_renderSettingsMenu(){const{labelOptions:e,messagesCommon:t,snappingOptions:o,tooltipOptions:i,view:s,visibleElements:n}=this;return[y("div",{class:M.menuContainer,"data-testid":"menu",key:"settings-menu-container",role:"menu"},y("header",{class:M.menuHeader,key:"settings-menu-header"},y("span",{class:M.menuTitle},t.settings)),n.sketchTooltipControls?y(_,{labelOptions:e,tooltipOptions:i,viewType:s?.type,visibleElements:n.sketchTooltipControlsElements}):void 0,n.snappingControls&&s&&o?y(g,{snappingOptions:o,view:s,visibleElements:n.snappingControlsElements}):void 0)]}_renderFeatureCount(){const{layout:e,messages:t,updateGraphics:{length:o}}=this,i=C(t.selectedCount,{count:o});return y("div",{"aria-label":i,class:M.featureCountBadge},y("span",{class:M.featureCountNumber},"vertical"===e?o:i))}_renderDuplicateButton(){if(!this.visibleElements.duplicateButton)return;const e=this.messages,t=this.updateGraphics.length>1?e.duplicateFeatures:e.duplicateFeature;return y("calcite-action",{bind:this,label:t,onclick:this._onDuplicateSelect,scale:"s",text:t,title:t},y("calcite-icon",{icon:"copy",scale:"s"}))}_renderDeleteButton(){const e=this.messages,t=this.updateGraphics.length>1?e.deleteFeatures:e.deleteFeature;return y("calcite-action",{bind:this,label:t,onclick:this.delete,scale:"s",text:t,title:t},y("calcite-icon",{icon:"trash",scale:"s"}))}_renderDefaultSelectionButton(){if(!this.viewModel.updateOnGraphicClick)return;const e=this.messages.selectFeature;return y("calcite-action",{active:"ready"===this.state,bind:this,label:e,onclick:this._activateDefaultSelectTool,scale:"s",text:e,title:e},y("calcite-icon",{icon:"cursor",scale:"s"}))}_renderSelectionToolbar(){if("2d"===this.view?.type&&this._selectionToolbar)return this._selectionToolbar.render()}_renderDrawButtons(){return this._effectiveAvailableCreateTools?.map((e=>{switch(e){case"point":return this._renderPointButton();case"polyline":return this._renderPolylineButton();case"polygon":return this._renderPolygonButton();case"rectangle":return this._renderRectangleButton();case"circle":return this._renderCircleButton();default:return}}))}_renderPointButton(){const e="point",t=this.messages.drawPoint;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"pin",scale:"s"}))}_renderPolygonButton(){const e="polygon",t=this.messages.drawPolygon;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"polygon",scale:"s"}))}_renderPolylineButton(){const e="polyline",t=this.messages.drawPolyline;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"line",scale:"s"}))}_renderCircleButton(){const e="circle",t=this.messages.drawCircle;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"circle",scale:"s"}))}_renderRectangleButton(){const e="rectangle",t=this.messages.drawRectangle;return y("calcite-action",{active:this.activeTool===e,bind:this,label:t,onclick:()=>this._activateCreateTool(e),scale:"s",text:t,title:t},y("calcite-icon",{icon:"rectangle",scale:"s"}))}_renderUndoRedoMenuButtons(){return[this._renderUndoButton(),this._renderRedoButton()]}_renderUndoButton(){const e=this.messages.undo;return y("calcite-action",{bind:this,disabled:!this.viewModel.canUndo(),label:e,onclick:this.undo,scale:"s",text:e,title:e},y("calcite-icon",{icon:b(this.container)?"redo":"undo",scale:"s"}))}_renderRedoButton(){const e=this.messages.redo;return y("calcite-action",{bind:this,disabled:!this.viewModel.canRedo(),label:e,onclick:this.redo,scale:"s",text:e,title:e},y("calcite-icon",{icon:b(this.container)?"undo":"redo",scale:"s"}))}_renderSettingsMenuButton(){const e=this.messagesCommon.settings;return y("calcite-action",{active:this._menuOpen,bind:this,"data-testid":"settings-menu-action",label:e,onclick:this._toggleMenu,scale:"s",text:e,title:e},y("calcite-icon",{icon:"gear",scale:"s"}))}_activateCreateTool(e){this.activeTool!==e?(this._selectionToolbar?.cancel(),this.create(e)):this.cancel()}_onCreateOperation(e){if("complete"!==e.state)return;const{creationMode:t}=this,{type:o}=e;if("create"===o){const{tool:o,graphic:i}=e,s=this._activeCreateOptions;this._activeCreateOptions=null,"continuous"===t?this.create(o,s):"update"===t&&this.update([i])}}_toggleMenu(){this._menuOpen=!this._menuOpen,this.scheduleRender()}_onDuplicateSelect(){const e=this.duplicate(),t=this.viewModel.activeTool;"transform"!==t&&"reshape"!==t||this.update(e,{tool:t})}_onSelectionOperationComplete(e){const{viewModel:{defaultUpdateOptions:t}}=this,{selection:o}=e;if(!e.aborted&&o.length){const e=t.tool,i=o.length>1&&"reshape"===e?"transform":e;this.update(o,{...t,tool:i})}this.notifyChange("state")}_activateDefaultSelectTool(){this.cancel(),this.view?.focus()}};e([a()],O.prototype,"activeTool",null),e([a({cast:e=>{if(!e?.length)return null;const t=new Set(["point","polyline","polygon","rectangle","circle"]);return e.filter((e=>t.has(e)))}})],O.prototype,"availableCreateTools",void 0),e([a({readOnly:!0})],O.prototype,"createGraphic",null),e([a()],O.prototype,"creationMode",void 0),e([a()],O.prototype,"defaultCreateOptions",null),e([a()],O.prototype,"defaultUpdateOptions",null),e([a()],O.prototype,"iconClass",void 0),e([a()],O.prototype,"icon",void 0),e([a()],O.prototype,"label",null),e([a()],O.prototype,"labelOptions",null),e([a()],O.prototype,"layer",null),e([a({type:["horizontal","vertical"]})],O.prototype,"layout",void 0),e([a(),f("esri/widgets/Sketch/t9n/Sketch")],O.prototype,"messages",void 0),e([a(),f("esri/t9n/common")],O.prototype,"messagesCommon",void 0),e([a()],O.prototype,"snappingOptions",null),e([a()],O.prototype,"state",null),e([a()],O.prototype,"tooltipOptions",null),e([a({readOnly:!0})],O.prototype,"updateGraphics",null),e([a()],O.prototype,"view",null),e([a(),w(["create","update","undo","redo"])],O.prototype,"viewModel",null),e([a({type:d,nonNullable:!0})],O.prototype,"visibleElements",void 0),e([a()],O.prototype,"_effectiveAvailableCreateTools",null),O=e([r("esri.widgets.Sketch")],O);const S=O;export{S 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.28/esri/copyright.txt for details.
4
4
  */
5
- import{loadCalciteComponents as e}from"./componentsUtils.js";import"./widgetUtils.js";import{tsx as t}from"./jsxFactory.js";const c=()=>Promise.all([e({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),label:()=>import("@esri/calcite-components/dist/components/calcite-label.js"),switch:()=>import("@esri/calcite-components/dist/components/calcite-switch.js"),tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js")})]),i="esri-labeled-switch",l={label:`${i}__label`,labelContent:`${i}__label-content`,icon:`${i}__icon`};function o({checked:e,disabled:c,hint:i,key:o,label:s,onChange:n}){return t("calcite-label",{class:l.label,disabled:c,key:o,layout:"inline-space-between",scale:"s"},t("span",{class:l.labelContent,key:"label-content"},s,i?t("calcite-icon",{class:l.icon,icon:"information",id:o,scale:"s"}):void 0),i?t("calcite-tooltip",{referenceElement:o},i):void 0,t("calcite-switch",{checked:e,disabled:c,scale:"s",onCalciteSwitchChange:e=>n(e.target.checked)}))}export{o as LabeledSwitch,c as loadLabeledSwitchComponents};
5
+ import{loadCalciteComponents as e}from"./componentsUtils.js";import"./widgetUtils.js";import{tsx as t,tsxFragment as c}from"./jsxFactory.js";const i=()=>Promise.all([e({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),label:()=>import("@esri/calcite-components/dist/components/calcite-label.js"),switch:()=>import("@esri/calcite-components/dist/components/calcite-switch.js"),tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js")})]),l="esri-labeled-switch",o={label:`${l}__label`,labelContent:`${l}__label-content`,icon:`${l}__icon`};function n({checked:e,disabled:i,hint:l,key:n,label:s,onChange:a}){return t("calcite-label",{class:o.label,disabled:i,key:n,layout:"inline-space-between",scale:"s"},t("div",{class:o.labelContent,key:"label-content"},l?t(c,null,t("div",null,s),t("calcite-icon",{class:o.icon,icon:"information",id:n,scale:"s"}),t("calcite-tooltip",{referenceElement:n},l)):s),t("calcite-switch",{checked:e,disabled:i,scale:"s",onCalciteSwitchChange:e=>a(e.target.checked)}))}export{n as LabeledSwitch,i as loadLabeledSwitchComponents};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../intl.js";import"../../core/has.js";import n from"../../core/Error.js";import{clamp as e}from"../../core/mathUtils.js";import{formatTimestamp as t,formatTimeOnly as o,formatDateOnly as l,formatDate as i}from"../../intl/date.js";import{utc as r}from"../../time/timeZoneUtils.js";import{isString as u,isNumber as a}from"./dataUtils.js";import{DateTime as s,FixedOffsetZone as m,Interval as f}from"luxon";import{getLocale as c}from"../../intl/locale.js";const d=r,y={date:null,time:null,timeZoneOffset:null},p=new Map([["hours",3600],["minutes",60],["seconds",1],["deciseconds",.1],["centiseconds",.01],["milliseconds",.001]]),v="yyyy-MM-dd",S="TT";var h;!function(n){n.HM="HH:mm",n.HMS="HH:mm:ss",n.HMS_MS="HH:mm:ss.SSS"}(h||(h={}));const M=[h.HMS_MS,h.HMS,h.HM,S],O="latn",g=new Set(["date-only","time-only","timestamp-offset"]),w=n=>"valueAsDate"in n;function H(n){return{locale:c(),numberingSystem:O,zone:n??d}}function j(n){return n?.isValid?n.toMillis():null}function V(n,e){return null===n?null:s.fromMillis(n,H(e))}function x(n){if(null==n||!u(n)||""===n)return y;const e=s.fromISO(n,{setZone:!0});return{date:e.toFormat(v,H()),time:e.toFormat(h.HMS_MS,H()),timeZoneOffset:e.offset.toString()}}function F(n,e){if(null==n||!a(n)||isNaN(n))return y;const t=V(n,e);return t?{date:t.toFormat(v,H(e)),time:t.toFormat(S,H(e))}:y}function I(n,e,r){if(!n||null==e)return null;switch(console.log("getLabelForDateFieldValue"),console.log(" -- value: ",e),console.log(" -- options: ",r),n.type){case"date":return i(e,r);case"date-only":return l(e,r);case"time-only":return o(e,r);case"timestamp-offset":return t(e,r);default:return null}}function Z(n){const{dateComponent:e,timeComponent:t,timeZoneComponent:o,oldValue:l}=n;if(!e?.value||!t?.value)return null;const{year:i,month:u,day:a}=s.fromFormat(e.value,v),{hour:f,minute:c,second:d,millisecond:y}=T(t,r)??s.now(),p=x(l),S=null!=o?.value?parseInt(o.value,10):null!=p.timeZoneOffset?parseInt(p.timeZoneOffset,10):(new Date).getTimezoneOffset(),h=m.instance(S),M=s.fromObject({year:i,month:u,day:a,hour:f,minute:c,second:d,millisecond:y},{zone:h});return M.isValid?M.toISO({includeOffset:!0}):null}function D(n){const{dateComponent:e,timeComponent:t,timeZone:o,max:l,min:i,oldValue:r}=n,u=T(e,o);let a=!!n.applyRange;if(!u)return null;let m=null;if(null!=t?.value){const n=T(t,o),e=Date.now(),i=null!=l&&l<e?l:e,r=s.fromMillis(i,H(o)),a=u||r,{year:f,month:c,day:d}=a,{hour:y,minute:p,second:v,millisecond:S}=n||r;m=a.set({year:f,month:c,day:d,hour:y,minute:p,second:v,millisecond:S})}else{const n=V(C({value:r??Date.now(),max:l,min:i}),o),{year:e,month:t,day:s}=u,{hour:f,minute:c,second:d,millisecond:y}=n;a=!0,m=u.set({year:e,month:t,day:s,hour:f,minute:c,second:d,millisecond:y})}if(!m.isValid)return null;const f=m.toMillis();return a?C({value:f,max:l,min:i}):f}function T(n,e){if(!n||null==n.value||Array.isArray(n.value))return null;let t=null;return t=w(n)?s.fromFormat(n.value,v,H(e)):_(n.value),t?.isValid?t:null}function b(n){const{max:e,min:t,value:o}=n;return!isNaN(o)&&(!(null!=e&&o>e)&&!(null!=t&&o<t))}function C(n){const{max:t,min:o,value:l}=n;return null!=t&&null!=o?e(l,o,t):null!=t&&l>t?t:null!=o&&l<o?o:l}function A(e){if(!e)return"";const t=e.split(".").at(0);if(!t||t.length<1)throw new n("invalid time-only field",`Cannot parse valid time-only field value from ${e}`);const o=t.split(":"),l=new Array(3);for(let n=0;n<3;n++){const e=o.at(n)??"";l[n]=e.padStart(2,"0")}return l.join(":")}function N(n,e){switch(e){case"date":return n.getTime();case"date-only":return n.toISODate();case"time-only":return A(n.toISOTime(!0,!1));case"timestamp-offset":return n.toISOString(!1);default:return null}}function z(n){return!!n&&"object"==typeof n&&"getTime"in n&&"toISOString"in n&&"timeZone"in n}function U(n){return s.fromFormat(n,v)}function _(n){let e=null;return M.find((t=>(e=s.fromFormat(n,t),e.isValid))),e}function k(n){return s.fromISO(n)}function E(n){const{type:e,range:t,value:o}=n;if(null==o||!t)return!0;if("date"===e)return b({value:o,min:t.min,max:t.max});const{rawMax:l,rawMin:i}=t;if(!u(l)||!u(i)||!u(o))return!0;let r=null,a=null,s=null;switch(e){case"date-only":r=U(l),a=U(i),s=U(o);break;case"time-only":r=_(l),a=_(i),s=_(o);break;case"timestamp-offset":r=k(l),a=k(i),s=k(o)}return!(r?.isValid&&a?.isValid&&s?.isValid)||(f.fromDateTimes(a,r).contains(s)||a.valueOf()===s.valueOf()||r.valueOf()===s.valueOf())}export{h as TimeStampOffsetPattern,N as arcadeDateToFieldValue,C as clampValueToRange,V as createDateTimeFromFieldValue,g as dateFieldsWithStringFieldValue,U as dateOnlyToDateTime,E as dateTimeIsInRange,j as dateTimeToFieldValue,v as defaultDatePattern,S as defaultTimePattern,H as getDefaultLocaleOptions,Z as getISOFieldValueFromDateComponents,I as getLabelForDateFieldValue,T as getLocalDateTimeFromComponent,D as getUnixFieldValueFromDateComponents,z as isArcadeDate,w as isCalciteDateComponent,A as normalizeTimeOnlyString,O as numberingSystem,x as prepareISOFieldValueForDateComponents,F as prepareUnixFieldValueForDateComponents,M as supportedTimeFormats,_ as timeOnlyToDateTime,p as timeResolutionToStepMap,k as timestampOffsetToDateTime,b as valueIsInRange};
5
+ import"../../intl.js";import"../../core/has.js";import t from"../../core/Error.js";import{clamp as e}from"../../core/mathUtils.js";import{convertDateFormatToIntlOptions as n,formatTimestamp as o,formatTimeOnly as l,formatDateOnly as i,formatDate as r}from"../../intl/date.js";import{utc as a}from"../../time/timeZoneUtils.js";import{isString as u,isNumber as s}from"./dataUtils.js";import{DateTime as m,FixedOffsetZone as f,Interval as c}from"luxon";import{getLocale as d}from"../../intl/locale.js";const y=a,p={date:null,time:null,timeZoneOffset:null},h=new Map([["hours",3600],["minutes",60],["seconds",1],["deciseconds",.1],["centiseconds",.01],["milliseconds",.001]]),v="yyyy-MM-dd",S="TT";var M;!function(t){t.HM="HH:mm",t.HMS="HH:mm:ss",t.HMS_MS="HH:mm:ss.SSS"}(M||(M={}));const O=[M.HMS_MS,M.HMS,M.HM,S],w="latn",H=new Set(["date-only","time-only","timestamp-offset"]),j=t=>"valueAsDate"in t;function Z(t){return{locale:d(),numberingSystem:w,zone:t??y}}function g(t){return t?.isValid?t.toMillis():null}function x(t,e){return null===t?null:m.fromMillis(t,Z(e))}function V(t){if(null==t||!u(t)||""===t)return p;const e=m.fromISO(t,{setZone:!0});return{date:e.toFormat(v,Z()),time:e.toFormat(M.HMS_MS,Z()),timeZoneOffset:e.offset.toString()}}function I(t,e){if(null==t||!s(t)||isNaN(t))return p;const n=x(t,e);return n?{date:n.toFormat(v,Z(e)),time:n.toFormat(S,Z(e))}:p}function F(t){switch(t.type){case"date":default:return n("short-date-short-time");case"date-only":return n("short-date");case"time-only":return n("short-time");case"timestamp-offset":return{...n("short-date-short-time"),timeZone:void 0,timeZoneName:"short"}}}function T(t,e,n){if(!t||null==e)return null;switch(t.type){case"date":return r(e,n);case"date-only":return i(e,n);case"time-only":return l(e,n);case"timestamp-offset":return o(e,n);default:return null}}function C(t){const{dateComponent:e,timeComponent:n,timeZoneComponent:o,oldValue:l}=t;if(!e?.value||!n?.value)return null;const{year:i,month:r,day:u}=m.fromFormat(e.value,v),{hour:s,minute:c,second:d,millisecond:y}=b(n,a)??m.now(),p=V(l),h=null!=o?.value?parseInt(o.value,10):null!=p.timeZoneOffset?parseInt(p.timeZoneOffset,10):(new Date).getTimezoneOffset(),S=f.instance(h),M=m.fromObject({year:i,month:r,day:u,hour:s,minute:c,second:d,millisecond:y},{zone:S});return M.isValid?M.toISO({includeOffset:!0}):null}function D(t){const{dateComponent:e,timeComponent:n,timeZone:o,max:l,min:i,oldValue:r}=t,a=b(e,o);let u=!!t.applyRange;if(!a)return null;let s=null;if(null!=n?.value){const t=b(n,o),e=Date.now(),i=null!=l&&l<e?l:e,r=m.fromMillis(i,Z(o)),u=a||r,{year:f,month:c,day:d}=u,{hour:y,minute:p,second:h,millisecond:v}=t||r;s=u.set({year:f,month:c,day:d,hour:y,minute:p,second:h,millisecond:v})}else{const t=x(A({value:r??Date.now(),max:l,min:i}),o),{year:e,month:n,day:m}=a,{hour:f,minute:c,second:d,millisecond:y}=t;u=!0,s=a.set({year:e,month:n,day:m,hour:f,minute:c,second:d,millisecond:y})}if(!s.isValid)return null;const f=s.toMillis();return u?A({value:f,max:l,min:i}):f}function b(t,e){if(!t||null==t.value||Array.isArray(t.value))return null;let n=null;return n=j(t)?m.fromFormat(t.value,v,Z(e)):E(t.value),n?.isValid?n:null}function N(t){const{max:e,min:n,value:o}=t;return!isNaN(o)&&(!(null!=e&&o>e)&&!(null!=n&&o<n))}function A(t){const{max:n,min:o,value:l}=t;return null!=n&&null!=o?e(l,o,n):null!=n&&l>n?n:null!=o&&l<o?o:l}function z(e){if(!e)return"";const n=e.split(".").at(0);if(!n||n.length<1)throw new t("invalid time-only field",`Cannot parse valid time-only field value from ${e}`);const o=n.split(":"),l=new Array(3);for(let t=0;t<3;t++){const e=o.at(t)??"";l[t]=e.padStart(2,"0")}return l.join(":")}function U(t,e){switch(e){case"date":return t.getTime();case"date-only":return t.toISODate();case"time-only":return z(t.toISOTime(!0,!1));case"timestamp-offset":return t.toISOString(!1);default:return null}}function _(t){return!!t&&"object"==typeof t&&"getTime"in t&&"toISOString"in t&&"timeZone"in t}function k(t){return m.fromFormat(t,v)}function E(t){let e=null;return O.find((n=>(e=m.fromFormat(t,n),e.isValid))),e}function R(t){return m.fromISO(t)}function $(t){const{type:e,range:n,value:o}=t;if(null==o||!n)return!0;if("date"===e)return N({value:o,min:n.min,max:n.max});const{rawMax:l,rawMin:i}=n;if(!u(l)||!u(i)||!u(o))return!0;let r=null,a=null,s=null;switch(e){case"date-only":r=k(l),a=k(i),s=k(o);break;case"time-only":r=E(l),a=E(i),s=E(o);break;case"timestamp-offset":r=R(l),a=R(i),s=R(o)}return!(r?.isValid&&a?.isValid&&s?.isValid)||(c.fromDateTimes(a,r).contains(s)||a.valueOf()===s.valueOf()||r.valueOf()===s.valueOf())}export{M as TimeStampOffsetPattern,U as arcadeDateToFieldValue,A as clampValueToRange,x as createDateTimeFromFieldValue,H as dateFieldsWithStringFieldValue,k as dateOnlyToDateTime,$ as dateTimeIsInRange,g as dateTimeToFieldValue,v as defaultDatePattern,S as defaultTimePattern,Z as getDefaultLocaleOptions,C as getISOFieldValueFromDateComponents,F as getIntlOptionsForField,T as getLabelForDateFieldValue,b as getLocalDateTimeFromComponent,D as getUnixFieldValueFromDateComponents,_ as isArcadeDate,j as isCalciteDateComponent,z as normalizeTimeOnlyString,w as numberingSystem,V as prepareISOFieldValueForDateComponents,I as prepareUnixFieldValueForDateComponents,O as supportedTimeFormats,E as timeOnlyToDateTime,h as timeResolutionToStepMap,R as timestampOffsetToDateTime,N as valueIsInRange};