@geoscene/core 4.29.5 → 4.29.6

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 (136) hide show
  1. package/arcade/serviceAreaMetaData.js +1 -1
  2. package/assets/geoscene/core/workers/RemoteClient.js +1 -1
  3. package/assets/geoscene/core/workers/chunks/02a8f0cc511b810d29dd.js +1 -1
  4. package/assets/geoscene/core/workers/chunks/0b2f4079142b4c2a4ddf.js +1 -1
  5. package/assets/geoscene/core/workers/chunks/26f1ec6ce2720bcc1202.js +1 -1
  6. package/assets/geoscene/core/workers/chunks/348bcc57b99a975902a8.js +1 -1
  7. package/assets/geoscene/core/workers/chunks/54c8eea3a70e92842c6a.js +1 -1
  8. package/assets/geoscene/core/workers/chunks/5db9739e00f15613d1ea.js +1 -1
  9. package/assets/geoscene/core/workers/chunks/71fed2917f4bee173836.js +1 -1
  10. package/assets/geoscene/core/workers/chunks/851de06c5980b9b7362a.js +1 -1
  11. package/assets/geoscene/core/workers/chunks/9d8ce7eec9d80a038477.js +1 -1
  12. package/assets/geoscene/core/workers/chunks/b139cf91bc148aa84419.js +1 -1
  13. package/assets/geoscene/core/workers/chunks/c527692694688a5b3b07.js +2 -4
  14. package/assets/geoscene/core/workers/chunks/c556644bb0cf88770939.js +1 -1
  15. package/assets/geoscene/core/workers/chunks/cf3d5bd2c9115a3e0b79.js +1 -1
  16. package/assets/geoscene/core/workers/chunks/eceaa46f622f6fa31128.js +1 -1
  17. package/assets/geoscene/core/workers/chunks/f59b5ea05caca8a1a398.js +1 -1
  18. package/assets/geoscene/core/workers/chunks/f60e5dd0e712cf32f782.js +1 -1
  19. package/assets/geoscene/themes/base/widgets/_BasemapGallery.scss +0 -1
  20. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace.json +1 -1
  21. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ar.json +1 -1
  22. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bg.json +1 -1
  23. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bs.json +1 -1
  24. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ca.json +1 -1
  25. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
  26. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_da.json +1 -1
  27. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_de.json +1 -1
  28. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
  29. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_en.json +1 -1
  30. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_es.json +1 -1
  31. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_et.json +1 -1
  32. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fi.json +1 -1
  33. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
  34. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_he.json +1 -1
  35. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hr.json +1 -1
  36. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hu.json +1 -1
  37. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_id.json +1 -1
  38. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_it.json +1 -1
  39. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ja.json +1 -1
  40. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ko.json +1 -1
  41. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lt.json +1 -1
  42. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
  43. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nb.json +1 -1
  44. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nl.json +1 -1
  45. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pl.json +1 -1
  46. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-BR.json +1 -1
  47. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-PT.json +1 -1
  48. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ro.json +1 -1
  49. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ru.json +1 -1
  50. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sk.json +1 -1
  51. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sl.json +1 -1
  52. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sr.json +1 -1
  53. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sv.json +1 -1
  54. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_th.json +1 -1
  55. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_tr.json +1 -1
  56. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_uk.json +1 -1
  57. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_vi.json +1 -1
  58. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-CN.json +1 -1
  59. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-HK.json +1 -1
  60. package/assets/geoscene/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-TW.json +1 -1
  61. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology.json +1 -1
  62. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ar.json +1 -1
  63. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_bg.json +1 -1
  64. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_bs.json +1 -1
  65. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ca.json +1 -1
  66. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_cs.json +1 -1
  67. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_da.json +1 -1
  68. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_de.json +1 -1
  69. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_el.json +1 -1
  70. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_en.json +1 -1
  71. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_es.json +1 -1
  72. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_et.json +1 -1
  73. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_fi.json +1 -1
  74. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_fr.json +1 -1
  75. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_he.json +1 -1
  76. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_hr.json +1 -1
  77. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_hu.json +1 -1
  78. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_id.json +1 -1
  79. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_it.json +1 -1
  80. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ja.json +1 -1
  81. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ko.json +1 -1
  82. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_lt.json +1 -1
  83. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_lv.json +1 -1
  84. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_nb.json +1 -1
  85. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_nl.json +1 -1
  86. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pl.json +1 -1
  87. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pt-BR.json +1 -1
  88. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pt-PT.json +1 -1
  89. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ro.json +1 -1
  90. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ru.json +1 -1
  91. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sk.json +1 -1
  92. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sl.json +1 -1
  93. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sr.json +1 -1
  94. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sv.json +1 -1
  95. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_th.json +1 -1
  96. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_tr.json +1 -1
  97. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_uk.json +1 -1
  98. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_vi.json +1 -1
  99. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-CN.json +1 -1
  100. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-HK.json +1 -1
  101. package/assets/geoscene/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-TW.json +1 -1
  102. package/chunks/HUDMaterial.glsl.js +0 -1
  103. package/chunks/persistableUrlUtils.js +1 -1
  104. package/config.js +1 -1
  105. package/copyright.txt +1 -1
  106. package/core/devEnvironmentUtils.js +1 -1
  107. package/core/urlUtils.js +1 -1
  108. package/identity/IdentityManagerBase.js +1 -1
  109. package/identity/IdentityModal.js +1 -1
  110. package/layers/TileLayer.js +1 -1
  111. package/layers/VectorTileLayer.js +1 -1
  112. package/layers/support/arcgisLayerUrl.js +1 -1
  113. package/layers/support/arcgisLayers.js +1 -1
  114. package/package.json +1 -1
  115. package/portal/schemas/definitions.js +1 -1
  116. package/portal/support/urlUtils.js +1 -1
  117. package/request.js +1 -1
  118. package/rest/support/PlacesParameters.js +1 -1
  119. package/support/BasemapStyle.js +1 -1
  120. package/support/apiKeyUtils.js +1 -1
  121. package/support/basemapUtils.js +1 -1
  122. package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +1 -1
  123. package/views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl.js +0 -2
  124. package/widgets/Editor/EditorViewModel.js +1 -1
  125. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  126. package/widgets/Search/support/layerSearchUtils.js +1 -1
  127. package/assets/geoscene/core/workers/chunks/0af5d2f792b83f7dd0aa.js.LICENSE.txt +0 -5
  128. package/assets/geoscene/core/workers/chunks/5015d4fccf4854b9da1e.js.LICENSE.txt +0 -10
  129. package/assets/geoscene/core/workers/chunks/54c8eea3a70e92842c6a.js.LICENSE.txt +0 -16
  130. package/assets/geoscene/core/workers/chunks/804267fca0627d277286.js.LICENSE.txt +0 -5
  131. package/assets/geoscene/core/workers/chunks/87c4848dd48119fd75f9.js.LICENSE.txt +0 -5
  132. package/assets/geoscene/core/workers/chunks/8ec7475f19f8979dfaae.js.LICENSE.txt +0 -5
  133. package/assets/geoscene/core/workers/chunks/904b3e9c98e5de220650.js.LICENSE.txt +0 -11
  134. package/assets/geoscene/core/workers/chunks/c1f78653c70f6bde65b3.js.LICENSE.txt +0 -5
  135. package/assets/geoscene/core/workers/chunks/da21d31db537be097da9.js.LICENSE.txt +0 -5
  136. package/assets/geoscene/core/workers/chunks/e742cd41ab9b164ad974.js.LICENSE.txt +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- const e=/^https:\/\/([a-z\d-]+)(\.maps([^.]*))?\.arcgis\.com/i,s={devext:{customBaseUrl:"mapsdevext.arcgis.com",portalHostname:"devext.geoscene.cn"},qaext:{customBaseUrl:"mapsqa.geoscene.cn",portalHostname:"qaext.geoscene.cn"},www:{customBaseUrl:"maps.arcgis.com",portalHostname:"www.arcgis.com"}};function a(a){const t=a?.match(e);if(!t)return null;const[,r,o,l]=t;if(!r)return null;let c=null,m=null,n=null;const{devext:u,qaext:i,www:p}=s;if(o)if(c=r,l)switch(l.toLowerCase()){case"devext":({customBaseUrl:m,portalHostname:n}=u);break;case"qa":({customBaseUrl:m,portalHostname:n}=i);break;default:return null}else({customBaseUrl:m,portalHostname:n}=p);else switch(r.toLowerCase()){case"devext":({customBaseUrl:m,portalHostname:n}=u);break;case"qaext":({customBaseUrl:m,portalHostname:n}=i);break;case"www":({customBaseUrl:m,portalHostname:n}=p);break;default:return null}return{customBaseUrl:m,isPortal:!1,portalHostname:n,urlKey:c}}function t(e){return/\/(sharing|usrsvcs)\/(appservices|servers)\//i.test(e)}export{t as isSecureProxyService,a as parseKnownArcGISOnlineDomain};
5
+ const e=/^https:\/\/([a-z\d-]+)(\.maps([^.]*))?\.geosceneonline\.cn/i,s={devext:{customBaseUrl:"mapsdevext.geoscene.cn",portalHostname:"devext.geoscene.cn"},qaext:{customBaseUrl:"mapsqa.geoscene.cn",portalHostname:"qaext.geoscene.cn"},www:{customBaseUrl:"maps.geoscene.cn",portalHostname:"www.geoscene.cn"}};function a(a){const t=a?.match(e);if(!t)return null;const[,r,o,l]=t;if(!r)return null;let c=null,m=null,n=null;const{devext:u,qaext:i,www:p}=s;if(o)if(c=r,l)switch(l.toLowerCase()){case"devext":({customBaseUrl:m,portalHostname:n}=u);break;case"qa":({customBaseUrl:m,portalHostname:n}=i);break;default:return null}else({customBaseUrl:m,portalHostname:n}=p);else switch(r.toLowerCase()){case"devext":({customBaseUrl:m,portalHostname:n}=u);break;case"qaext":({customBaseUrl:m,portalHostname:n}=i);break;case"www":({customBaseUrl:m,portalHostname:n}=p);break;default:return null}return{customBaseUrl:m,isPortal:!1,portalHostname:n,urlKey:c}}function t(e){return/\/(sharing|usrsvcs)\/(appservices|servers)\//i.test(e)}export{t as isSecureProxyService,a as parseKnownOnlineDomain};
package/request.js CHANGED
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- import e from"./config.js";import{id as t}from"./kernel.js";import r from"./core/Error.js";import has from"./core/has.js";import{clone as s}from"./core/lang.js";import{onAbort as o,isAbortError as a,createAbortError as n,isAborted as i}from"./core/promiseUtils.js";import{queryToObject as l,isDataProtocol as u,isBlobProtocol as c,normalize as d,getInterceptor as p,isTrustedServer as h,getOrigin as m,toHTTPS as f,objectToQuery as y,getProxyRule as w,getProxyUrl as g,addQueryParameters as b,hasSameOrigin as q,getAppUrl as S,addProxyRule as T}from"./core/urlUtils.js";import{isSecureProxyService as k}from"./portal/support/urlUtils.js";import{supportsApiKey as O}from"./support/apiKeyUtils.js";import{registerNoCorsDomains as v,isNoCorsRequestRequired as C,sendNoCorsRequest as x,createTimeoutError as L,loadImageAsync as E}from"./support/requestUtils.js";async function U(e,t){e instanceof URL&&(e=e.toString()),t?.query instanceof URLSearchParams&&(t.query=l(t.query.toString().replaceAll("+"," ")));const r=u(e),s=c(e);s||r||(e=d(e));const a={url:e,requestOptions:{...t}};let n=p(e);if(n){const e=await G(n,a);if(null!=e)return{data:e,getAllHeaders:H,getHeader:H,httpStatus:200,requestOptions:a.requestOptions,url:a.url};n.after||n.error||(n=null)}if(e=a.url,"image"===(t=a.requestOptions).responseType&&(has("host-webworker")||has("host-node")))throw N("request:invalid-parameters",new Error("responseType 'image' is not supported in Web Workers or Node environment"),a);if("head"===t.method){if(t.body)throw N("request:invalid-parameters",new Error("body parameter cannot be set when method is 'head'"),a);if(r||s)throw N("request:invalid-parameters",new Error("data and blob URLs are not supported for method 'head'"),a)}if(await B(),j)return j.execute(e,t);const i=new AbortController;o(t,(()=>i.abort()));const h={controller:i,credential:void 0,credentialToken:void 0,fetchOptions:void 0,hasToken:!1,interceptor:n,params:a,redoRequest:!1,useIdentity:A.useIdentity,useProxy:!1,useSSL:!1,withCredentials:!1},m=await Q(h);return n?.after?.(m),m}let j;const A=e.request,P="FormData"in globalThis,_=new Set([499,498,403,401]),D=new Set(["COM_0056","COM_0057","SB_0008"]),F=[/\/arcgis\/tokens/i,/\/sharing(\/rest)?\/generatetoken/i,/\/rest\/info/i],H=()=>null,I=Symbol();function R(e){const t=m(e);t&&!U._corsServers.includes(t)&&U._corsServers.push(t)}function M(e){const t=m(e);return!t||t.endsWith(".arcgis.com")||U._corsServers.includes(t)||h(t)}function N(e,t,o,i){let l="Error";const u={url:o.url,requestOptions:o.requestOptions,getAllHeaders:H,getHeader:H,ssl:!1};if(t instanceof r)return t.details?(t.details=s(t.details),t.details.url=o.url,t.details.requestOptions=o.requestOptions):t.details=u,t;if(t){const e=i&&(()=>Array.from(i.headers)),r=i&&(e=>i.headers.get(e)),s=i?.status,o=t.message;o&&(l=o),e&&r&&(u.getAllHeaders=e,u.getHeader=r),u.httpStatus=(null!=t.httpCode?t.httpCode:t.code)||s||0,u.subCode=t.subcode,u.messageCode=t.messageCode,"string"==typeof t.details?u.messages=[t.details]:u.messages=t.details,u.raw=I in t?t[I]:t}return a(t)?n():new r(e,l,u)}async function B(){has("host-webworker")&&!j&&(j=await import("./core/workers/request.js"))}async function $(){t||await import("./identity/IdentityManager.js")}async function z(r){const s=r.params.url,o=r.params.requestOptions,a=r.controller.signal,n=o.body;let l=null,u=null;if(P&&"HTMLFormElement"in globalThis&&(n instanceof FormData?l=n:n instanceof HTMLFormElement&&(l=new FormData(n))),"string"==typeof n&&(u=n),r.fetchOptions={cache:o.cacheBust?"no-cache":"default",credentials:"same-origin",headers:o.headers||{},method:"head"===o.method?"HEAD":"GET",mode:"cors",priority:A.priority,redirect:"follow",signal:a},(l||u)&&(r.fetchOptions.body=l||u),"anonymous"===o.authMode&&(r.useIdentity=!1),r.hasToken=!!(/token=/i.test(s)||o.query?.token||l?.get("token")),!r.hasToken&&e.apiKey&&O(s)&&(o.query||(o.query={}),o.query.token=e.apiKey,r.hasToken=!0),r.useIdentity&&!r.hasToken&&!r.credentialToken&&!K(s)&&!i(a)){let e;"immediate"===o.authMode?(await $(),e=await t.getCredential(s,{signal:a}),r.credential=e):"no-prompt"===o.authMode?(await $(),e=await t.getCredential(s,{prompt:!1,signal:a}).catch((()=>{})),r.credential=e):t&&(e=t.findCredential(s)),e&&(r.credentialToken=e.token,r.useSSL=!!e.ssl)}}function K(e){return F.some((t=>t.test(e)))}async function W(e){let r=e.params.url;const s=e.params.requestOptions,o=e.fetchOptions??{},a=c(r)||u(r),i=s.responseType||"json",l=a?0:null!=s.timeout?s.timeout:A.timeout;let d=!1;if(!a){e.useSSL&&(r=f(r));let a={...s.query};e.credentialToken&&(a.token=e.credentialToken);let n=y(a);has("geoscene-url-encodes-apostrophe")&&(n=n.replaceAll("'","%27"));const i=r.length+1+n.length;let l;d="delete"===s.method||"post"===s.method||"put"===s.method||!!s.body||i>A.maxUrlLength;const u=s.useProxy||!!w(r);if(u){const e=g(r);l=e.path,!d&&l.length+1+i>A.maxUrlLength&&(d=!0),e.query&&(a={...e.query,...a})}if("HEAD"===o.method&&(d||u)){if(d){if(i>A.maxUrlLength)throw N("request:invalid-parameters",new Error("URL exceeds maximum length"),e.params);throw N("request:invalid-parameters",new Error("cannot use POST request when method is 'head'"),e.params)}if(u)throw N("request:invalid-parameters",new Error("cannot use proxy when method is 'head'"),e.params)}if(d?(o.method="delete"===s.method?"DELETE":"put"===s.method?"PUT":"POST",s.body?r=b(r,a):(o.body=y(a),o.headers||(o.headers={}),o.headers["Content-Type"]="application/x-www-form-urlencoded")):r=b(r,a),u&&(e.useProxy=!0,r=`${l}?${r}`),a.token&&P&&o.body instanceof FormData&&!k(r)&&o.body.set("token",a.token),s.hasOwnProperty("withCredentials"))e.withCredentials=s.withCredentials;else if(!q(r,S()))if(h(r))e.withCredentials=!0;else if(t){const s=t.findServerInfo(r);s?.webTierAuth&&(e.withCredentials=!0)}e.withCredentials&&(o.credentials="include",C(r)&&await x(d?b(r,a):r))}let p,O,v=0,E=!1;l>0&&(v=setTimeout((()=>{E=!0,e.controller.abort()}),l));try{if("native-request-init"===s.responseType)O=o,O.url=r;else if("image"!==s.responseType||"default"!==o.cache||"GET"!==o.method||d||J(s.headers)||!a&&!e.useProxy&&A.proxyUrl&&!M(r)){if(U._beforeFetch&&await U._beforeFetch(r,o),p=await fetch(r,o),U._afterFetch&&await U._afterFetch(p),e.useProxy||R(r),"native"===s.responseType)O=p;else if("HEAD"!==o.method)if(p.ok){switch(i){case"array-buffer":O=await p.arrayBuffer();break;case"blob":case"image":O=await p.blob();break;default:O=await p.text()}if(v&&(clearTimeout(v),v=0),"json"===i||"xml"===i||"document"===i)if(O)switch(i){case"json":O=JSON.parse(O);break;case"xml":O=X(O,"application/xml");break;case"document":O=X(O,"text/html")}else O=null;if(O){if("array-buffer"===i||"blob"===i){const e=p.headers.get("Content-Type");if(e&&/application\/json|text\/plain/i.test(e)&&O["blob"===i?"size":"byteLength"]<=750)try{const e=await new Response(O).json();e.error&&(O=e)}catch{}}"image"===i&&O instanceof Blob&&(O=await Y(URL.createObjectURL(O),e,!0))}}else{O=await p.text();try{O=JSON.parse(O)}catch{}}}else O=await Y(r,e)}catch(j){if("AbortError"===j.name){if(E)throw L();throw n("Request canceled")}if(!(!p&&j instanceof TypeError&&A.proxyUrl)||s.body||"delete"===s.method||"head"===s.method||"post"===s.method||"put"===s.method||e.useProxy||M(r))throw j;e.redoRequest=!0,T({proxyUrl:A.proxyUrl,urlPrefix:m(r)??""})}finally{v&&clearTimeout(v)}return[p,O]}async function G(e,t){if(null!=e.responseData)return e.responseData;if(e.headers&&(t.requestOptions.headers={...t.requestOptions.headers,...e.headers}),e.query&&(t.requestOptions.query={...t.requestOptions.query,...e.query}),e.before){let o,a;try{a=await e.before(t)}catch(s){o=N("request:interceptor",s,t)}if((a instanceof Error||a instanceof r)&&(o=N("request:interceptor",a,t)),o)throw e.error&&e.error(o),o;return a}}function J(e){if(e)for(const t of Object.getOwnPropertyNames(e))if(e[t])return!0;return!1}function X(e,t){let r;try{r=(new DOMParser).parseFromString(e,t)}catch{}if(!r||r.getElementsByTagName("parsererror").length)throw new SyntaxError("XML Parse error");return r}async function Q(e){let r,s;await z(e);try{do{[r,s]=await W(e)}while(!await V(e,r,s))}catch(n){const t=N("request:server",n,e.params,r);throw t.details.ssl=e.useSSL,e.interceptor?.error&&e.interceptor.error(t),t}const o=e.params.url;if(s&&/\/sharing\/rest\/(accounts|portals)\/self/i.test(o)){if(!e.hasToken&&!e.credentialToken&&s.user?.username&&!h(o)){const e=m(o,!0);e&&A.trustedServers.push(e)}Array.isArray(s.authorizedCrossOriginNoCorsDomains)&&v(s.authorizedCrossOriginNoCorsDomains)}const a=e.credential;if(a&&t){const e=t.findServerInfo(a.server);let r=e?.owningSystemUrl;if(r){r=r.replace(/\/?$/,"/sharing");const e=t.findCredential(r,a.userId);e&&-1===t._getIdenticalSvcIdx(r,e)&&e.resources.unshift(r)}}return{data:s,getAllHeaders:r?()=>Array.from(r.headers):H,getHeader:r?e=>r.headers.get(e):H,httpStatus:r?.status??200,requestOptions:e.params.requestOptions,ssl:e.useSSL,url:e.params.url}}async function V(e,r,s){if(e.redoRequest)return e.redoRequest=!1,!1;const o=e.params.requestOptions;if(!r||"native"===o.responseType||"native-request-init"===o.responseType)return!0;let a,n;if(s&&(s.error?a=s.error:"error"===s.status&&Array.isArray(s.messages)&&(a={...s},a[I]=s,a.details=s.messages)),!a&&!r.ok)throw a=new Error(`Unable to load ${r.url} status: ${r.status}`),a[I]=s,a;let i,l=null;a&&(n=Number(a.code),l=a.hasOwnProperty("subcode")?Number(a.subcode):null,i=a.messageCode,i=i?.toUpperCase());const u=o.authMode;if(403===n&&(4===l||a.message?.toLowerCase().includes("ssl")&&!a.message.toLowerCase().includes("permission"))){if(!e.useSSL)return e.useSSL=!0,!1}else if(!e.hasToken&&e.useIdentity&&("no-prompt"!==u||498===n)&&void 0!==n&&_.has(n)&&!K(e.params.url)&&(403!==n||(!i||!D.has(i))&&(null==l||2===l&&e.credentialToken))){await $();try{const r=await t.getCredential(e.params.url,{error:N("request:server",a,e.params),prompt:"no-prompt"!==u,signal:e.controller.signal,token:e.credentialToken});return e.credential=r,e.credentialToken=r.token,e.useSSL=e.useSSL||r.ssl,!1}catch(c){if("no-prompt"===u)return e.credential=void 0,e.credentialToken=void 0,!1;a=c}}if(a)throw a;return!0}function Y(e,t,r=!1){const s=t.controller.signal,o=new Image;return t.withCredentials?o.crossOrigin="use-credentials":o.crossOrigin="anonymous",o.alt="",o.fetchPriority=A.priority,o.src=e,E(o,e,r,s)}U._corsServers=["https://www.geosceneonline.cn"],U._beforeFetch=void 0,U._afterFetch=void 0;export{U as default};
5
+ import e from"./config.js";import{id as t}from"./kernel.js";import r from"./core/Error.js";import has from"./core/has.js";import{clone as s}from"./core/lang.js";import{onAbort as o,isAbortError as a,createAbortError as n,isAborted as i}from"./core/promiseUtils.js";import{queryToObject as l,isDataProtocol as u,isBlobProtocol as c,normalize as d,getInterceptor as p,isTrustedServer as h,getOrigin as m,toHTTPS as f,objectToQuery as y,getProxyRule as w,getProxyUrl as g,addQueryParameters as b,hasSameOrigin as q,getAppUrl as S,addProxyRule as T}from"./core/urlUtils.js";import{isSecureProxyService as k}from"./portal/support/urlUtils.js";import{supportsApiKey as O}from"./support/apiKeyUtils.js";import{registerNoCorsDomains as v,isNoCorsRequestRequired as C,sendNoCorsRequest as x,createTimeoutError as L,loadImageAsync as E}from"./support/requestUtils.js";async function U(e,t){e instanceof URL&&(e=e.toString()),t?.query instanceof URLSearchParams&&(t.query=l(t.query.toString().replaceAll("+"," ")));const r=u(e),s=c(e);s||r||(e=d(e));const a={url:e,requestOptions:{...t}};let n=p(e);if(n){const e=await G(n,a);if(null!=e)return{data:e,getAllHeaders:H,getHeader:H,httpStatus:200,requestOptions:a.requestOptions,url:a.url};n.after||n.error||(n=null)}if(e=a.url,"image"===(t=a.requestOptions).responseType&&(has("host-webworker")||has("host-node")))throw N("request:invalid-parameters",new Error("responseType 'image' is not supported in Web Workers or Node environment"),a);if("head"===t.method){if(t.body)throw N("request:invalid-parameters",new Error("body parameter cannot be set when method is 'head'"),a);if(r||s)throw N("request:invalid-parameters",new Error("data and blob URLs are not supported for method 'head'"),a)}if(await B(),j)return j.execute(e,t);const i=new AbortController;o(t,(()=>i.abort()));const h={controller:i,credential:void 0,credentialToken:void 0,fetchOptions:void 0,hasToken:!1,interceptor:n,params:a,redoRequest:!1,useIdentity:A.useIdentity,useProxy:!1,useSSL:!1,withCredentials:!1},m=await Q(h);return n?.after?.(m),m}let j;const A=e.request,P="FormData"in globalThis,_=new Set([499,498,403,401]),D=new Set(["COM_0056","COM_0057","SB_0008"]),F=[/\/arcgis\/tokens/i,/\/sharing(\/rest)?\/generatetoken/i,/\/rest\/info/i],H=()=>null,I=Symbol();function R(e){const t=m(e);t&&!U._corsServers.includes(t)&&U._corsServers.push(t)}function M(e){const t=m(e);return!t||t.endsWith(".geosceneonline.cn")||U._corsServers.includes(t)||h(t)}function N(e,t,o,i){let l="Error";const u={url:o.url,requestOptions:o.requestOptions,getAllHeaders:H,getHeader:H,ssl:!1};if(t instanceof r)return t.details?(t.details=s(t.details),t.details.url=o.url,t.details.requestOptions=o.requestOptions):t.details=u,t;if(t){const e=i&&(()=>Array.from(i.headers)),r=i&&(e=>i.headers.get(e)),s=i?.status,o=t.message;o&&(l=o),e&&r&&(u.getAllHeaders=e,u.getHeader=r),u.httpStatus=(null!=t.httpCode?t.httpCode:t.code)||s||0,u.subCode=t.subcode,u.messageCode=t.messageCode,"string"==typeof t.details?u.messages=[t.details]:u.messages=t.details,u.raw=I in t?t[I]:t}return a(t)?n():new r(e,l,u)}async function B(){has("host-webworker")&&!j&&(j=await import("./core/workers/request.js"))}async function $(){t||await import("./identity/IdentityManager.js")}async function z(r){const s=r.params.url,o=r.params.requestOptions,a=r.controller.signal,n=o.body;let l=null,u=null;if(P&&"HTMLFormElement"in globalThis&&(n instanceof FormData?l=n:n instanceof HTMLFormElement&&(l=new FormData(n))),"string"==typeof n&&(u=n),r.fetchOptions={cache:o.cacheBust?"no-cache":"default",credentials:"same-origin",headers:o.headers||{},method:"head"===o.method?"HEAD":"GET",mode:"cors",priority:A.priority,redirect:"follow",signal:a},(l||u)&&(r.fetchOptions.body=l||u),"anonymous"===o.authMode&&(r.useIdentity=!1),r.hasToken=!!(/token=/i.test(s)||o.query?.token||l?.get("token")),!r.hasToken&&e.apiKey&&O(s)&&(o.query||(o.query={}),o.query.token=e.apiKey,r.hasToken=!0),r.useIdentity&&!r.hasToken&&!r.credentialToken&&!K(s)&&!i(a)){let e;"immediate"===o.authMode?(await $(),e=await t.getCredential(s,{signal:a}),r.credential=e):"no-prompt"===o.authMode?(await $(),e=await t.getCredential(s,{prompt:!1,signal:a}).catch((()=>{})),r.credential=e):t&&(e=t.findCredential(s)),e&&(r.credentialToken=e.token,r.useSSL=!!e.ssl)}}function K(e){return F.some((t=>t.test(e)))}async function W(e){let r=e.params.url;const s=e.params.requestOptions,o=e.fetchOptions??{},a=c(r)||u(r),i=s.responseType||"json",l=a?0:null!=s.timeout?s.timeout:A.timeout;let d=!1;if(!a){e.useSSL&&(r=f(r));let a={...s.query};e.credentialToken&&(a.token=e.credentialToken);let n=y(a);has("geoscene-url-encodes-apostrophe")&&(n=n.replaceAll("'","%27"));const i=r.length+1+n.length;let l;d="delete"===s.method||"post"===s.method||"put"===s.method||!!s.body||i>A.maxUrlLength;const u=s.useProxy||!!w(r);if(u){const e=g(r);l=e.path,!d&&l.length+1+i>A.maxUrlLength&&(d=!0),e.query&&(a={...e.query,...a})}if("HEAD"===o.method&&(d||u)){if(d){if(i>A.maxUrlLength)throw N("request:invalid-parameters",new Error("URL exceeds maximum length"),e.params);throw N("request:invalid-parameters",new Error("cannot use POST request when method is 'head'"),e.params)}if(u)throw N("request:invalid-parameters",new Error("cannot use proxy when method is 'head'"),e.params)}if(d?(o.method="delete"===s.method?"DELETE":"put"===s.method?"PUT":"POST",s.body?r=b(r,a):(o.body=y(a),o.headers||(o.headers={}),o.headers["Content-Type"]="application/x-www-form-urlencoded")):r=b(r,a),u&&(e.useProxy=!0,r=`${l}?${r}`),a.token&&P&&o.body instanceof FormData&&!k(r)&&o.body.set("token",a.token),s.hasOwnProperty("withCredentials"))e.withCredentials=s.withCredentials;else if(!q(r,S()))if(h(r))e.withCredentials=!0;else if(t){const s=t.findServerInfo(r);s?.webTierAuth&&(e.withCredentials=!0)}e.withCredentials&&(o.credentials="include",C(r)&&await x(d?b(r,a):r))}let p,O,v=0,E=!1;l>0&&(v=setTimeout((()=>{E=!0,e.controller.abort()}),l));try{if("native-request-init"===s.responseType)O=o,O.url=r;else if("image"!==s.responseType||"default"!==o.cache||"GET"!==o.method||d||J(s.headers)||!a&&!e.useProxy&&A.proxyUrl&&!M(r)){if(U._beforeFetch&&await U._beforeFetch(r,o),p=await fetch(r,o),U._afterFetch&&await U._afterFetch(p),e.useProxy||R(r),"native"===s.responseType)O=p;else if("HEAD"!==o.method)if(p.ok){switch(i){case"array-buffer":O=await p.arrayBuffer();break;case"blob":case"image":O=await p.blob();break;default:O=await p.text()}if(v&&(clearTimeout(v),v=0),"json"===i||"xml"===i||"document"===i)if(O)switch(i){case"json":O=JSON.parse(O);break;case"xml":O=X(O,"application/xml");break;case"document":O=X(O,"text/html")}else O=null;if(O){if("array-buffer"===i||"blob"===i){const e=p.headers.get("Content-Type");if(e&&/application\/json|text\/plain/i.test(e)&&O["blob"===i?"size":"byteLength"]<=750)try{const e=await new Response(O).json();e.error&&(O=e)}catch{}}"image"===i&&O instanceof Blob&&(O=await Y(URL.createObjectURL(O),e,!0))}}else{O=await p.text();try{O=JSON.parse(O)}catch{}}}else O=await Y(r,e)}catch(j){if("AbortError"===j.name){if(E)throw L();throw n("Request canceled")}if(!(!p&&j instanceof TypeError&&A.proxyUrl)||s.body||"delete"===s.method||"head"===s.method||"post"===s.method||"put"===s.method||e.useProxy||M(r))throw j;e.redoRequest=!0,T({proxyUrl:A.proxyUrl,urlPrefix:m(r)??""})}finally{v&&clearTimeout(v)}return[p,O]}async function G(e,t){if(null!=e.responseData)return e.responseData;if(e.headers&&(t.requestOptions.headers={...t.requestOptions.headers,...e.headers}),e.query&&(t.requestOptions.query={...t.requestOptions.query,...e.query}),e.before){let o,a;try{a=await e.before(t)}catch(s){o=N("request:interceptor",s,t)}if((a instanceof Error||a instanceof r)&&(o=N("request:interceptor",a,t)),o)throw e.error&&e.error(o),o;return a}}function J(e){if(e)for(const t of Object.getOwnPropertyNames(e))if(e[t])return!0;return!1}function X(e,t){let r;try{r=(new DOMParser).parseFromString(e,t)}catch{}if(!r||r.getElementsByTagName("parsererror").length)throw new SyntaxError("XML Parse error");return r}async function Q(e){let r,s;await z(e);try{do{[r,s]=await W(e)}while(!await V(e,r,s))}catch(n){const t=N("request:server",n,e.params,r);throw t.details.ssl=e.useSSL,e.interceptor?.error&&e.interceptor.error(t),t}const o=e.params.url;if(s&&/\/sharing\/rest\/(accounts|portals)\/self/i.test(o)){if(!e.hasToken&&!e.credentialToken&&s.user?.username&&!h(o)){const e=m(o,!0);e&&A.trustedServers.push(e)}Array.isArray(s.authorizedCrossOriginNoCorsDomains)&&v(s.authorizedCrossOriginNoCorsDomains)}const a=e.credential;if(a&&t){const e=t.findServerInfo(a.server);let r=e?.owningSystemUrl;if(r){r=r.replace(/\/?$/,"/sharing");const e=t.findCredential(r,a.userId);e&&-1===t._getIdenticalSvcIdx(r,e)&&e.resources.unshift(r)}}return{data:s,getAllHeaders:r?()=>Array.from(r.headers):H,getHeader:r?e=>r.headers.get(e):H,httpStatus:r?.status??200,requestOptions:e.params.requestOptions,ssl:e.useSSL,url:e.params.url}}async function V(e,r,s){if(e.redoRequest)return e.redoRequest=!1,!1;const o=e.params.requestOptions;if(!r||"native"===o.responseType||"native-request-init"===o.responseType)return!0;let a,n;if(s&&(s.error?a=s.error:"error"===s.status&&Array.isArray(s.messages)&&(a={...s},a[I]=s,a.details=s.messages)),!a&&!r.ok)throw a=new Error(`Unable to load ${r.url} status: ${r.status}`),a[I]=s,a;let i,l=null;a&&(n=Number(a.code),l=a.hasOwnProperty("subcode")?Number(a.subcode):null,i=a.messageCode,i=i?.toUpperCase());const u=o.authMode;if(403===n&&(4===l||a.message?.toLowerCase().includes("ssl")&&!a.message.toLowerCase().includes("permission"))){if(!e.useSSL)return e.useSSL=!0,!1}else if(!e.hasToken&&e.useIdentity&&("no-prompt"!==u||498===n)&&void 0!==n&&_.has(n)&&!K(e.params.url)&&(403!==n||(!i||!D.has(i))&&(null==l||2===l&&e.credentialToken))){await $();try{const r=await t.getCredential(e.params.url,{error:N("request:server",a,e.params),prompt:"no-prompt"!==u,signal:e.controller.signal,token:e.credentialToken});return e.credential=r,e.credentialToken=r.token,e.useSSL=e.useSSL||r.ssl,!1}catch(c){if("no-prompt"===u)return e.credential=void 0,e.credentialToken=void 0,!1;a=c}}if(a)throw a;return!0}function Y(e,t,r=!1){const s=t.controller.signal,o=new Image;return t.withCredentials?o.crossOrigin="use-credentials":o.crossOrigin="anonymous",o.alt="",o.fetchPriority=A.priority,o.src=e,E(o,e,r,s)}U._corsServers=["https://www.geosceneonline.cn"],U._beforeFetch=void 0,U._afterFetch=void 0;export{U as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- import{_ as r}from"../../chunks/tslib.es6.js";import s from"../../core/Accessor.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as e}from"../../core/accessorSupport/decorators/subclass.js";let t=class extends s{constructor(r){super(r),this.apiKey=null,this.url="https://places-api.arcgis.com/geoscene/rest/services/places-service/v1"}};r([o()],t.prototype,"apiKey",void 0),r([o()],t.prototype,"url",void 0),t=r([e("geoscene.rest.support.PlacesParameters")],t);const c=t;export{c as default};
5
+ import{_ as r}from"../../chunks/tslib.es6.js";import s from"../../core/Accessor.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as e}from"../../core/accessorSupport/decorators/subclass.js";let t=class extends s{constructor(r){super(r),this.apiKey=null,this.url="https://places-api.geoscene.cn/geoscene/rest/services/places-service/v1"}};r([o()],t.prototype,"apiKey",void 0),r([o()],t.prototype,"url",void 0),t=r([e("geoscene.rest.support.PlacesParameters")],t);const c=t;export{c as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- import{_ as r}from"../chunks/tslib.es6.js";import e from"../core/Accessor.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import"../core/RandomLCG.js";import{subclass as t}from"../core/accessorSupport/decorators/subclass.js";import{getLocale as o,getLanguage as a}from"../intl/locale.js";const p=new Set(["ar","bs","ca","hr","cs","da","nl","en","et","fi","fr","de","el","he","hu","id","it","ja","ko","lv","lt","nb","pl","ro","ru","sr","es","sv","th","tr","uk","vi"]);let c=class extends e{constructor(r){super(r),this.id=null,this.language=null,this.places=null,this.serviceUrl="https://basemapstyles-api.arcgis.com/geoscene/rest/services/styles/v2/webmaps",this.worldview=null}getLanguageParamValue(){if(this.language)return this.language;const r=o().toLowerCase();switch(r){case"pt-br":return"pt-BR";case"pt-pt":return"pt-PT";case"zh-cn":return"zh-CN";case"zh-hk":return"zh-HK";case"zh-tw":return"zh-TW"}const e=a(r);return"pt"===e?"pt-BR":e&&p.has(e)?e:"global"}};r([s()],c.prototype,"id",void 0),r([s()],c.prototype,"language",void 0),r([s()],c.prototype,"places",void 0),r([s()],c.prototype,"serviceUrl",void 0),r([s()],c.prototype,"worldview",void 0),c=r([t("geoscene.support.BasemapStyle")],c);const i=c;export{i as default};
5
+ import{_ as r}from"../chunks/tslib.es6.js";import e from"../core/Accessor.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import"../core/RandomLCG.js";import{subclass as t}from"../core/accessorSupport/decorators/subclass.js";import{getLocale as o,getLanguage as a}from"../intl/locale.js";const p=new Set(["ar","bs","ca","hr","cs","da","nl","en","et","fi","fr","de","el","he","hu","id","it","ja","ko","lv","lt","nb","pl","ro","ru","sr","es","sv","th","tr","uk","vi"]);let c=class extends e{constructor(r){super(r),this.id=null,this.language=null,this.places=null,this.serviceUrl="https://basemapstyles-api.geoscene.cn/geoscene/rest/services/styles/v2/webmaps",this.worldview=null}getLanguageParamValue(){if(this.language)return this.language;const r=o().toLowerCase();switch(r){case"pt-br":return"pt-BR";case"pt-pt":return"pt-PT";case"zh-cn":return"zh-CN";case"zh-hk":return"zh-HK";case"zh-tw":return"zh-TW"}const e=a(r);return"pt"===e?"pt-BR":e&&p.has(e)?e:"global"}};r([s()],c.prototype,"id",void 0),r([s()],c.prototype,"language",void 0),r([s()],c.prototype,"places",void 0),r([s()],c.prototype,"serviceUrl",void 0),r([s()],c.prototype,"worldview",void 0),c=r([t("geoscene.support.BasemapStyle")],c);const i=c;export{i as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- import{getOrigin as s}from"../core/urlUtils.js";const t=new Set(["elevation3d.arcgis.com","js.arcgis.com","jsdev.arcgis.com","jsqa.arcgis.com","static.arcgis.com"]);function r(s){return!!s&&s.length>4&&s.startsWith("AAPK")}function c(r){const c=s(r,!0);return!!c&&(c.endsWith(".arcgis.com")&&!t.has(c)&&!r.endsWith("/sharing/rest/generateToken"))}export{r as isApiKey,c as supportsApiKey};
5
+ import{getOrigin as s}from"../core/urlUtils.js";const t=new Set(["elevation3d.Grcgis.cn","js.Grcgis.cn","jsdev.Grcgis.cn","jsqa.Grcgis.cn","static.Grcgis.cn"]);function r(s){return!!s&&s.length>4&&s.startsWith("AAPK")}function c(r){const c=s(r,!0);return!!c&&(c.endsWith(".Grcgis.cn")&&!t.has(c)&&!r.endsWith("/sharing/rest/generateToken"))}export{r as isApiKey,c as supportsApiKey};
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- import e from"../Basemap.js";import r from"../config.js";import t from"../core/Collection.js";import n from"../core/Logger.js";import{destroyMaybe as a,mappedFind as i}from"../core/maybe.js";import{Url as l,makeAbsolute as s,normalize as u}from"../core/urlUtils.js";import{ensureType as c}from"../core/accessorSupport/ensureType.js";import{effectEquals as o}from"../layers/effects/utils.js";import{esriBasemapDefinitions as f}from"./basemapDefinitions.js";const p=()=>n.getLogger("geoscene.support.basemapUtils");function y(){return{}}function m(e){for(const r in e){const t=e[r];a(t),delete e[r]}}function b(t,n){let a;if("string"==typeof t){const i=t in f,l=!i&&t.includes("/");if(!i&&!l){const e=Object.entries(f).filter((([e,t])=>r.apiKey&&!t.classic||!r.apiKey&&(t.classic||t.is3d))).map((([e])=>`"${e}"`)).sort().join(", ");return p().warn(`Unable to find basemap definition for: ${t}. Try one of these: ${e}`),null}n&&(a=n[t]),a||(a=i?e.fromId(t):new e({style:{id:t}}),n&&(n[t]=a))}else a=c(e,t);return a?.destroyed&&(p().warn("The provided basemap is already destroyed",{basemap:a}),a=null),a}function d(e){return"Web Scene"===e.portalItem?.type||e.referenceLayers.some((e=>"scene"===e.type))}function L(e){return!!e?.portalItem?.tags?.some((e=>"beta"===e.toLowerCase()))}function S(e,r){return e.basemap?.referenceLayers?.some((e=>e.uid===r))||e.basemap?.baseLayers?.some((e=>e.uid===r))}function v(e,r=null){const t=b(e);if(!t)return null;const n=t.clone();return r&&(n.baseLayers=T(n.baseLayers,r.baseLayers),n.referenceLayers=T(n.referenceLayers,r.referenceLayers)),n}let g;function h(e){if(g)return g(e);let r=null;const t=M(e),n=!t?.baseLayers.length;for(const a in f){const e=K(t,$(f[a]),{mustMatchReferences:n});if("equal"===e){r=a;break}"base-layers-equal"===e&&(r=a)}return r}function I(e){g=e}function R(e,r){if(e===r)return!0;if(null!=e?.portalItem?.id&&e.portalItem.id===r?.portalItem?.id)return!0;return"equal"===K(M(e),M(r),{mustMatchReferences:!0})}function T(e,r){const n=new t;return e.forEach((e=>{const t=r.find((r=>"scene"!==r.type&&D(A(e),A(r))))||e;n.includes(t)?n.push(e):n.push(t)})),n}function w(e){return!!e?.baseLayers.concat(e.referenceLayers).some(j)}function j(e){if(x(e.url))return!0;if("vector-tile"===e.type)for(const r in e.sourceNameToSource){const t=e.sourceNameToSource[r];if(x(t?.sourceUrl))return!0}return!1}function U(e,r){if(null==r||null==e)return{spatialReference:null,updating:!1};if("not-loaded"===r.loadStatus)return r.load(),{spatialReference:null,updating:!0};if(r.spatialReference)return{spatialReference:r.spatialReference,updating:!1};if(0===r.baseLayers.length)return{spatialReference:null,updating:!1};const t=r.baseLayers.at(0);switch(t.loadStatus){case"not-loaded":t.load();case"loading":return{spatialReference:null,updating:!0};case"failed":return{spatialReference:null,updating:!1}}const n=(("supportedSpatialReferences"in t?t.supportedSpatialReferences:null)||["tileInfo"in t?t.tileInfo?.spatialReference:t.spatialReference]).filter(Boolean),a=e.spatialReference;return a?{spatialReference:n.find((e=>a.equals(e)))??n[0]??null,updating:!1}:{spatialReference:n[0],updating:!1}}const q=/^(basemaps|ibasemaps).*-api\.arcgis\.com$/i;function x(e){if(!e)return!1;const r=new l(s(e));return!!r.authority&&q.test(r.authority)}function M(e){return e?!e.loaded&&e.resourceInfo?$(e.resourceInfo.data):{baseLayers:k(e.baseLayers),referenceLayers:k(e.referenceLayers)}:null}function k(e){return(t.isCollection(e)?e.toArray():e).map(A)}function A(e){return{type:e.type,effect:"effect"in e?e.effect:void 0,url:E("urlTemplate"in e&&e.urlTemplate||e.url||"styleUrl"in e&&e.styleUrl||""),minScale:"minScale"in e&&null!=e.minScale?e.minScale:0,maxScale:"maxScale"in e&&null!=e.maxScale?e.maxScale:0,opacity:null!=e.opacity?e.opacity:1,visible:null==e.visible||!!e.visible,sublayers:"map-image"!==e.type&&"wms"!==e.type||null==e.sublayers?void 0:e.sublayers?.map((e=>({id:e.id,visible:e.visible}))),activeLayerId:"wmts"===e.type?e.activeLayer?.id:void 0}}function C(e){return e.isReference||"ArcGISSceneServiceLayer"===e.layerType}function $(e){return e?{baseLayers:G((e.baseMapLayers??[]).filter((e=>!C(e)))),referenceLayers:G((e.baseMapLayers??[]).filter((e=>C(e))))}:null}function G(e){return e.map((e=>B(e)))}function B(e){let r;switch(e.layerType){case"VectorTileLayer":r="vector-tile";break;case"ArcGISTiledMapServiceLayer":r="tile";break;case"ArcGISSceneServiceLayer":r="scene";break;default:r="unknown"}return{type:r,effect:e.effect,url:E(e.templateUrl||e.urlTemplate||e.styleUrl||e.url),minScale:e.minScale??0,maxScale:e.maxScale??0,opacity:e.opacity??1,visible:null==e.visibility||!!e.visibility,sublayers:void 0,activeLayerId:void 0}}function K(e,r,t){if(null!=e!=(null!=r))return"not-equal";if(!e||!r)return"equal";if(!N(e.baseLayers,r.baseLayers))return"not-equal";return N(e.referenceLayers,r.referenceLayers)?"equal":t.mustMatchReferences?"not-equal":"base-layers-equal"}function N(e,r){if(e.length!==r.length)return!1;for(let t=0;t<e.length;t++)if(!D(e[t],r[t]))return!1;return!0}function D(e,r){if(e.type!==r.type||e.url!==r.url||e.minScale!==r.minScale||e.maxScale!==r.maxScale||e.visible!==r.visible||e.opacity!==r.opacity)return!1;if(!o(e.effect,r.effect))return!1;if(null!=e.activeLayerId||null!=r.activeLayerId)return e.activeLayerId===r.activeLayerId;if(null!=e.sublayers||null!=r.sublayers){if(null==e.sublayers||null==r.sublayers||e.sublayers.length!==r.sublayers.length)return!1;for(let t=0;t<e.sublayers.length;t++){const n=e.sublayers.at(t),a=r.sublayers.at(t);if(n?.id!==a?.id||n?.visible!==a?.visible)return!1}}return!0}function E(e){return e?u(e).replace(/^\s*https?:/i,"").toLowerCase():""}function O(e){if(!e)return null;const{thumbnailUrl:r}=e;if(r)return r;const t=h(e);return t?f[t].thumbnailUrl:i(e.baseLayers,V)}function V(e){return"portalItem"in e?e.portalItem?.thumbnailUrl:void 0}export{v as clonePreservingTiledLayers,R as contentEquals,y as createCache,m as destroyCache,b as ensureType,U as findSpatialReference,O as getBasemapThumbnailUrl,h as getWellKnownBasemapId,w as hasDeveloperBasemapLayer,d as isBasemap3D,L as isBasemapInBeta,S as isBasemapLayer,j as isDeveloperBasemapLayer,I as overrideGetWellKnownBasemapId};
5
+ import e from"../Basemap.js";import r from"../config.js";import t from"../core/Collection.js";import n from"../core/Logger.js";import{destroyMaybe as a,mappedFind as i}from"../core/maybe.js";import{Url as l,makeAbsolute as s,normalize as u}from"../core/urlUtils.js";import{ensureType as c}from"../core/accessorSupport/ensureType.js";import{effectEquals as o}from"../layers/effects/utils.js";import{esriBasemapDefinitions as f}from"./basemapDefinitions.js";const p=()=>n.getLogger("geoscene.support.basemapUtils");function y(){return{}}function m(e){for(const r in e){const t=e[r];a(t),delete e[r]}}function b(t,n){let a;if("string"==typeof t){const i=t in f,l=!i&&t.includes("/");if(!i&&!l){const e=Object.entries(f).filter((([e,t])=>r.apiKey&&!t.classic||!r.apiKey&&(t.classic||t.is3d))).map((([e])=>`"${e}"`)).sort().join(", ");return p().warn(`Unable to find basemap definition for: ${t}. Try one of these: ${e}`),null}n&&(a=n[t]),a||(a=i?e.fromId(t):new e({style:{id:t}}),n&&(n[t]=a))}else a=c(e,t);return a?.destroyed&&(p().warn("The provided basemap is already destroyed",{basemap:a}),a=null),a}function d(e){return"Web Scene"===e.portalItem?.type||e.referenceLayers.some((e=>"scene"===e.type))}function L(e){return!!e?.portalItem?.tags?.some((e=>"beta"===e.toLowerCase()))}function S(e,r){return e.basemap?.referenceLayers?.some((e=>e.uid===r))||e.basemap?.baseLayers?.some((e=>e.uid===r))}function v(e,r=null){const t=b(e);if(!t)return null;const n=t.clone();return r&&(n.baseLayers=T(n.baseLayers,r.baseLayers),n.referenceLayers=T(n.referenceLayers,r.referenceLayers)),n}let g;function h(e){if(g)return g(e);let r=null;const t=M(e),n=!t?.baseLayers.length;for(const a in f){const e=K(t,$(f[a]),{mustMatchReferences:n});if("equal"===e){r=a;break}"base-layers-equal"===e&&(r=a)}return r}function I(e){g=e}function R(e,r){if(e===r)return!0;if(null!=e?.portalItem?.id&&e.portalItem.id===r?.portalItem?.id)return!0;return"equal"===K(M(e),M(r),{mustMatchReferences:!0})}function T(e,r){const n=new t;return e.forEach((e=>{const t=r.find((r=>"scene"!==r.type&&D(A(e),A(r))))||e;n.includes(t)?n.push(e):n.push(t)})),n}function w(e){return!!e?.baseLayers.concat(e.referenceLayers).some(j)}function j(e){if(x(e.url))return!0;if("vector-tile"===e.type)for(const r in e.sourceNameToSource){const t=e.sourceNameToSource[r];if(x(t?.sourceUrl))return!0}return!1}function U(e,r){if(null==r||null==e)return{spatialReference:null,updating:!1};if("not-loaded"===r.loadStatus)return r.load(),{spatialReference:null,updating:!0};if(r.spatialReference)return{spatialReference:r.spatialReference,updating:!1};if(0===r.baseLayers.length)return{spatialReference:null,updating:!1};const t=r.baseLayers.at(0);switch(t.loadStatus){case"not-loaded":t.load();case"loading":return{spatialReference:null,updating:!0};case"failed":return{spatialReference:null,updating:!1}}const n=(("supportedSpatialReferences"in t?t.supportedSpatialReferences:null)||["tileInfo"in t?t.tileInfo?.spatialReference:t.spatialReference]).filter(Boolean),a=e.spatialReference;return a?{spatialReference:n.find((e=>a.equals(e)))??n[0]??null,updating:!1}:{spatialReference:n[0],updating:!1}}const q=/^(basemaps|ibasemaps).*-api\.geoscene\.cn$/i;function x(e){if(!e)return!1;const r=new l(s(e));return!!r.authority&&q.test(r.authority)}function M(e){return e?!e.loaded&&e.resourceInfo?$(e.resourceInfo.data):{baseLayers:k(e.baseLayers),referenceLayers:k(e.referenceLayers)}:null}function k(e){return(t.isCollection(e)?e.toArray():e).map(A)}function A(e){return{type:e.type,effect:"effect"in e?e.effect:void 0,url:E("urlTemplate"in e&&e.urlTemplate||e.url||"styleUrl"in e&&e.styleUrl||""),minScale:"minScale"in e&&null!=e.minScale?e.minScale:0,maxScale:"maxScale"in e&&null!=e.maxScale?e.maxScale:0,opacity:null!=e.opacity?e.opacity:1,visible:null==e.visible||!!e.visible,sublayers:"map-image"!==e.type&&"wms"!==e.type||null==e.sublayers?void 0:e.sublayers?.map((e=>({id:e.id,visible:e.visible}))),activeLayerId:"wmts"===e.type?e.activeLayer?.id:void 0}}function C(e){return e.isReference||"ArcGISSceneServiceLayer"===e.layerType}function $(e){return e?{baseLayers:G((e.baseMapLayers??[]).filter((e=>!C(e)))),referenceLayers:G((e.baseMapLayers??[]).filter((e=>C(e))))}:null}function G(e){return e.map((e=>B(e)))}function B(e){let r;switch(e.layerType){case"VectorTileLayer":r="vector-tile";break;case"ArcGISTiledMapServiceLayer":r="tile";break;case"ArcGISSceneServiceLayer":r="scene";break;default:r="unknown"}return{type:r,effect:e.effect,url:E(e.templateUrl||e.urlTemplate||e.styleUrl||e.url),minScale:e.minScale??0,maxScale:e.maxScale??0,opacity:e.opacity??1,visible:null==e.visibility||!!e.visibility,sublayers:void 0,activeLayerId:void 0}}function K(e,r,t){if(null!=e!=(null!=r))return"not-equal";if(!e||!r)return"equal";if(!N(e.baseLayers,r.baseLayers))return"not-equal";return N(e.referenceLayers,r.referenceLayers)?"equal":t.mustMatchReferences?"not-equal":"base-layers-equal"}function N(e,r){if(e.length!==r.length)return!1;for(let t=0;t<e.length;t++)if(!D(e[t],r[t]))return!1;return!0}function D(e,r){if(e.type!==r.type||e.url!==r.url||e.minScale!==r.minScale||e.maxScale!==r.maxScale||e.visible!==r.visible||e.opacity!==r.opacity)return!1;if(!o(e.effect,r.effect))return!1;if(null!=e.activeLayerId||null!=r.activeLayerId)return e.activeLayerId===r.activeLayerId;if(null!=e.sublayers||null!=r.sublayers){if(null==e.sublayers||null==r.sublayers||e.sublayers.length!==r.sublayers.length)return!1;for(let t=0;t<e.sublayers.length;t++){const n=e.sublayers.at(t),a=r.sublayers.at(t);if(n?.id!==a?.id||n?.visible!==a?.visible)return!1}}return!0}function E(e){return e?u(e).replace(/^\s*https?:/i,"").toLowerCase():""}function O(e){if(!e)return null;const{thumbnailUrl:r}=e;if(r)return r;const t=h(e);return t?f[t].thumbnailUrl:i(e.baseLayers,V)}function V(e){return"portalItem"in e?e.portalItem?.thumbnailUrl:void 0}export{v as clonePreservingTiledLayers,R as contentEquals,y as createCache,m as destroyCache,b as ensureType,U as findSpatialReference,O as getBasemapThumbnailUrl,h as getWellKnownBasemapId,w as hasDeveloperBasemapLayer,d as isBasemap3D,L as isBasemapInBeta,S as isBasemapLayer,j as isDeveloperBasemapLayer,I as overrideGetWellKnownBasemapId};
@@ -11,7 +11,7 @@ import{_ as e}from"../../../../../../chunks/tslib.es6.js";import{normalFromMat4
11
11
  ${c?d`
12
12
  // Negated inputs are intentionally the first two arguments. The other way around the obfuscation in dpAdd() stopped
13
13
  // working for macOS 14+ and iOS 17+.
14
- // Issue: https://devtopia.esri.com/WebGIS/geoscene-js-api/issues/56280
14
+
15
15
  vec3 originDelta = dpAdd(-instanceModelOriginHi, -instanceModelOriginLo, viewOriginHi, viewOriginLo);
16
16
  return _pos - originDelta;`:"return vpos;"}
17
17
  }
@@ -5,7 +5,6 @@ See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
5
5
  import{ColorMixModeEnum as e}from"../../../../layers/support/symbolColorUtils.js";import{ColorConversion as t}from"./ColorConversion.glsl.js";import{glsl as r}from"../../shaderModules/interfaces.js";function i(i){i.include(t),i.code.add(r`
6
6
  vec3 mixExternalColor(vec3 internalColor, vec3 textureColor, vec3 externalColor, int mode) {
7
7
  // workaround for artifacts in OSX using Intel Iris Pro
8
- // see: https://devtopia.esri.com/WebGIS/geoscene-js-api/issues/10475
9
8
  vec3 internalMixed = internalColor * textureColor;
10
9
  vec3 allMixed = internalMixed * externalColor;
11
10
 
@@ -28,7 +27,6 @@ import{ColorMixModeEnum as e}from"../../../../layers/support/symbolColorUtils.js
28
27
 
29
28
  float mixExternalOpacity(float internalOpacity, float textureOpacity, float externalOpacity, int mode) {
30
29
  // workaround for artifacts in OSX using Intel Iris Pro
31
- // see: https://devtopia.esri.com/WebGIS/geoscene-js-api/issues/10475
32
30
  float internalMixed = internalOpacity * textureOpacity;
33
31
  float allMixed = internalMixed * externalOpacity;
34
32
 
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../chunks/tslib.es6.js";import{createTask as e}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{deprecatedProperty as r,deprecated as i}from"../../core/deprecate.js";import s from"../../core/Error.js";import o from"../../core/Evented.js";import{makeHandle as n}from"../../core/handleUtils.js";import l from"../../core/Logger.js";import{abortMaybe as p,removeMaybe as d,destroyMaybe as c}from"../../core/maybe.js";import{throwIfAborted as u,createResolver as h}from"../../core/promiseUtils.js";import{watch as w,on as f,when as m,whenOnce as y,syncAndInitial as k,initial as g,sync as v}from"../../core/reactiveUtils.js";import{property as _}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/RandomLCG.js";import{subclass as W}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as b}from"../../core/support/UpdatingHandles.js";import I from"../../layers/GraphicsLayer.js";import{isEditableLayer as F}from"../../layers/support/editableLayers.js";import{isFeatureLayer as E,getOwningPortalUrl as M}from"../../layers/support/layerUtils.js";import{parseKnownArcGISOnlineDomain as C}from"../../portal/support/urlUtils.js";import V from"../../views/interactive/sketch/SketchOptions.js";import{SnappingManager as O}from"../../views/interactive/snapping/SnappingManager.js";import U from"../../views/interactive/snapping/SnappingOptions.js";import T from"../Attachments/AttachmentsViewModel.js";import L from"./CreateFeaturesWorkflow.js";import A from"./UpdateWorkflow.js";import{whenEditorLayerView as j}from"./workflowUtils.js";import S from"./support/EditorItem.js";import P from"../FeatureTemplates/FeatureTemplatesViewModel.js";import R from"../Sketch/SketchViewModel.js";import H from"../Spinner/SpinnerViewModel.js";const x="geoscene.widgets.Editor.EditorViewModel",D=()=>l.getLogger(x),G=["create-features","update"];function q(t,e,a){D().error(new s(t,e,a))}function B(t,e){return t?.find((t=>t.layer===e))}let Q=class extends o.EventedAccessor{constructor(t){super(t),this._sketchEventListenerHandle=null,this._sketchGraphicsLayer=new I({listMode:"hide",internal:!0}),this._snappingManager=null,this._updateItemsTask=null,this._updatingHandles=new b,this._featureTemplatesViewModelLocked=!1,this.activeWorkflow=null,this._activityQueue=new a,this.editorItems=new a,this.failures=[],this.hideTemplatesForInactiveLayers=!1,this.attachmentsViewModel=new T({capabilities:{editing:!0}}),this.featureTemplatesViewModel=new P({disabledItemFunction:({layer:t})=>this._itemIsSuspended(t)}),this.ownSketchViewModel=new R({layer:this._sketchGraphicsLayer}),this.sketchOptions=new V,this.snappingOptions=new U,this.spinnerViewModel=new H,this.pageStack=[],this.showDiscardEditsPrompt=()=>Promise.resolve(!0),this._candidateCommitted=!1,this.back=async()=>{this.canGoBack&&(this.activeWorkflow?.hasPreviousStep?await this.activeWorkflow.back(this.showDiscardEditsPrompt):await this._cancelWorkflow({force:!this.hasPendingEdits}))},this.saveWorkflow=async()=>{const{featureFormViewModel:t}=this;if(t){if(t.submit(),!t.submittable)return;const e=t.getValues();if(t.validateContingencyConstraints(e,{includeIncompleteViolations:!0}).length>0)return}await(this.activeWorkflow?.save())},this.selectFeature=(t,e=!1)=>{const a=this.activeWorkflow;this._candidateCommitted||"update"!==a?.type||(a.data.rootFeature=t,e&&(a.next(),this._candidateCommitted=!0))}}initialize(){this.addHandles([w((()=>{const t=this.view,e=t?.map?.editableLayers,a=t?.allLayerViews,r=a?.filter((t=>!!e?.includes(t.layer)));return[e,r,this.layerInfos,this.allowedWorkflows]}),(()=>this._updateEditorItems()),k),w((()=>this.hideTemplatesForInactiveLayers),(()=>this.syncFeatureTemplates())),f((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),f((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),f((()=>this.activeWorkflow),"complete",(()=>{this.emit("workflow-commit"),this._set("activeWorkflow",null)})),m((()=>this.view?.map),(t=>t.add(this._sketchGraphicsLayer)),g),f((()=>this.editorItems),"change",(()=>this._afterEditorItemsChange())),w((()=>[this.canCreate,this.canUpdateVisible]),(()=>this._afterEditorItemsChange())),w((()=>this.page),((t,e)=>{const a=[...this.pageStack];if(-1===a.indexOf(t))a.push(t);else for(;a.length&&a.at(-1)!==t;)a.pop();this.pageStack=a}),k),m((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1)),f((()=>this.featureTemplatesViewModel),"select",(async({item:t,oldItem:e})=>{const{activeWorkflow:a}=this;if(a){if("update"===a.type&&"awaiting-feature-creation-info"===a.activeWorkflow?.stepId)return;try{await this.cancelWorkflow({force:!this.hasPendingEdits})}catch{return void this.featureTemplatesViewModel.select(e,{emit:!1})}}if(!t)return;const r={layer:t.layer,template:t.template};if(t.supportsUpload)return this.featureTemplatesViewModel.select(e,{emit:!1}),this.startCreateFeaturesWorkflow(r);this.startCreateFeaturesWorkflowAtFeatureCreation(r)})),f((()=>this.view),"key-down",(t=>{"Escape"===t.key&&this.activeWorkflow?.keyboardCancellationEnabled&&(t.stopPropagation(),this.back())})),f((()=>this.sketchViewModel),["create","delete","update"],(t=>{const{activeWorkflow:e}=this,a="update"===e?.type,r=a?e.activeWorkflow?.layer:e?.layer,i=a?e?.activeWorkflow?.parentLayer:void 0,s=`sketch-${t.type}`;this.emit(s,{type:s,detail:t,layer:r,parentLayer:i})}),v),w((()=>this.view),(t=>{if(this._snappingManager=c(this._snappingManager),!t)return;const e=this.snappingOptions;this._snappingManager=new O({view:t,options:e})}),k),w((()=>this.snappingOptions),(t=>{this._snappingManager&&(this._snappingManager.options=t)}),k)])}destroy(){this._cancelWorkflow({warnIfNoWorkflow:!1}).then((()=>{this.view?.map?.remove(this._sketchGraphicsLayer),this.view=null})),this._updateItemsTask=p(this._updateItemsTask),this._updatingHandles.destroy(),this._sketchEventListenerHandle=d(this._sketchEventListenerHandle)}get allowedWorkflows(){return this._get("allowedWorkflows")}set allowedWorkflows(t){r(l.getLogger(this),"allowedWorkflows",{replacement:"Editor.visibleElements",version:"4.29",warnOnce:!0}),t&&0!==t.length||(t=[...G]),this._set("allowedWorkflows",t)}get canCreate(){return this.editorItems.some((t=>t.supportsCreateFeaturesWorkflow))}get canCreateVisible(){return!!this.featureTemplatesLayers.length}get canUpdate(){return this.editorItems.some((t=>t.supportsUpdateWorkflow))}get canUpdateVisible(){return this.editorItems.some((t=>t.supportsUpdateWorkflow&&t.visible))}get featureTemplatesLayers(){const t=new a;for(const e of this.editorItems){const a=e.supportsCreateFeaturesWorkflow&&!e.isTable,r=this.hideTemplatesForInactiveLayers&&!e.visible;a&&!r&&t.push(e.layer)}return t}get editableItems(){return r(l.getLogger(this),"editableItems",{replacement:"editorItems",version:"4.29",warnOnce:!0}),this.editorItems.map((t=>{const{capabilities:e,disabled:a,hasInvalidFormTemplate:r,layer:i}=t,s=[],o=e.create,n=e.update,l=e.delete;return o.enabled&&s.push("create"),n.enabled&&s.push("update"),l.enabled&&s.push("delete"),{layer:i,supports:s,suspended:a,attributeUpdatesEnabled:n.attributes,geometryUpdatesEnabled:n.geometry,attachmentsOnCreateEnabled:o.attachments.enabled,attachmentsOnUpdateEnabled:n.attachments.enabled,hasInvalidFormTemplate:r,hasAttachments:e.attachments.enabled}}))}get featureFormViewModel(){const{activeWorkflow:t}=this;return"update"===t?.type?t.activeFeatureFormViewModel:"create-features"===t?.type?t.featureFormViewModel:null}get labelOptions(){return this.sketchOptions.labels}set labelOptions(t){this.sketchOptions.labels=t}set layerInfos(t){const e=t?.some((t=>"allowAttachments"in t));e&&i(D(),"Property: layerInfo.allowAttachments",{replacement:"layerInfo.attachmentsOnCreateEnabled or layerInfo.attachmentsOnUpdateEnabled",version:"4.26"}),this._set("layerInfos",t)}get sketchViewModel(){const{activeWorkflow:t}=this;return"update"===t?.type?t.activeSketchViewModel:"create-features"===t?.type?t.sketchViewModel:this.ownSketchViewModel}get state(){if(!this.view?.ready)return"disabled";const t=this.attachmentsViewModel.mode;if("add"===t)return"adding-attachment";if("edit"===t)return"editing-attachment";const{activeWorkflow:e}=this;return e?.stepId?"update"===e.type&&e.activeWorkflow?.stepId?e.activeWorkflow.stepId:e.stepId:"ready"}get syncing(){return this._activityQueue.length>0}get updating(){return this._updatingHandles.updating||!0===this.activeWorkflow?.updating}get tooltipOptions(){return this.sketchOptions.tooltips}set tooltipOptions(t){this.sketchOptions.tooltips=t}get valueOptions(){return this.sketchOptions.values}set valueOptions(t){this.sketchOptions.values=t}set view(t){this.ownSketchViewModel.view=t,this.spinnerViewModel.view=t,this._set("view",t)}get page(){const{activeWorkflow:t,state:e}=this;if("update"===t?.type&&"awaiting-feature-to-update"===t.stepId)return"ready";if("create-features"===t?.type&&0===t.numPendingFeatures){const e=t.data.upload;if(e)return"default"===e.state?"ready":"creating-features-upload-details"}return e??"disabled"}get featureFormDisabled(){const{activeWorkflow:t}=this;return"update"===t?.type&&!1===t.activeEditorItem?.capabilities.update.attributes}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeWorkflow:t}=this;return!!t&&"update"===t.type&&!!t.activeEditorItem?.capabilities.delete.enabled}get hasPendingEdits(){return this.activeWorkflow?.hasPendingEdits??!1}async startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.startCreateFeaturesWorkflow()}async startCreateFeaturesWorkflowAtFeatureCreation(t){return this.startCreateFeaturesWorkflow(t,"creating-features")}async startCreateFeaturesWorkflow(t,e="awaiting-feature-creation-info"){if(await y((()=>!this.updating)),!this.canCreate)throw new s("editing:unsupported-workflow","Creating features is unsupported or disabled.");const a=this._createUpdatingResolver();await this._cancelWorkflow();const r=this._createCreateFeaturesWorkflow(t,e);this._set("activeWorkflow",r),await r.start(),a.resolve()}async startCreateFeaturesWorkflowAtFeatureEdit(t){await y((()=>!this.updating));const e=this._createUpdatingResolver(),{initialFeature:a}=t,r=a.sourceLayer=a.layer,i=r?this.findEditorItemForLayer(r):void 0;if(!i?.supportsCreateFeaturesWorkflow)throw new s("editing:unsupported-workflow","Creating features is unsupported or disabled for this layer.");await this._cancelWorkflow();const o=this._createCreateFeaturesWorkflow({initialFeature:a,layer:i.layer,maxFeatures:1},"creating-features");this._set("activeWorkflow",o),await o.start(),e.resolve()}async startUpdateWorkflowAtFeatureSelection(){if(await y((()=>!this.updating)),!this.canUpdate)return void q("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const t=this._createUpdatingResolver();await this._cancelWorkflow();const e=this._createUpdateWorkflow();this._set("activeWorkflow",e),await e.start(),t.resolve()}async startUpdateWorkflowAtMultipleFeatureSelection(t){if(await y((()=>!this.updating)),!this.canUpdate)return void q("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const e=this._createUpdatingResolver();await this._cancelWorkflow();const a=this._createUpdateWorkflow("awaiting-update-feature-candidate");a.data.candidates=t,this._set("activeWorkflow",a),await a.start(),e.resolve()}async startUpdateWorkflowAtFeatureEdit(t){if(await y((()=>!this.updating)),!this.canUpdate)return void q("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const e=this._createUpdatingResolver();await this._cancelWorkflow();const a=this._createUpdateWorkflow("editing-existing-feature");a.data.rootFeature=t,this._set("activeWorkflow",a),await a.start(),e.resolve()}async deleteFeatureFromWorkflow(){const{activeWorkflow:t}=this;t&&"update"===t.type?await t.deleteActiveFeature():q("editing:unsupported-workflow","Deleting requires an active update workflow.")}async cancelWorkflow(t){return this._cancelWorkflow({warnIfNoWorkflow:!0,...t})}findEditorItemForLayer(t){return this.editorItems.find((e=>e.layer===t))}itemHasInvalidFormTemplate(t){return null!=t&&!0===this.findEditorItemForLayer(t.layer)?.hasInvalidFormTemplate}syncFeatureTemplates(){this._featureTemplatesViewModelLocked||(this.featureTemplatesViewModel.layers=this.featureTemplatesLayers.toArray())}async toggleUpdateWorkflow(){this.canUpdate&&(this.hasPendingEdits&&!await this.showDiscardEditsPrompt()||(this.activeWorkflow&&"awaiting-feature-to-update"===this.state?await this.cancelWorkflow({force:!0}):await this.startUpdateWorkflowAtFeatureSelection()))}lockFeatureTemplatesViewModel(){return this._featureTemplatesViewModelLocked=!0,n((()=>{this._featureTemplatesViewModelLocked=!1,this.syncFeatureTemplates()}))}async _getEditorItemCandidates(t){const{view:e}=this;if(!e?.map)return[];const{map:a}=e,r=a.editableLayers.toArray()??[],i=a.allTables.toArray().filter(E)??[];return await Promise.allSettled([...r.map((t=>"subtype-group"===t.type?t.loadAll():Promise.resolve())),...i.map((t=>t.load()))]),u(t),[...r.reverse(),...i.reverse()].filter((t=>F(t)&&("mesh"!==t.geometryType||"3d"===e.type))).flatMap((t=>"subtype-group"===t.type?t.sublayers.toArray():t))}_drainEditorItems(){this.editorItems.drain((t=>t.destroy()))}async _updateEditorItems(){p(this._updateItemsTask);const{view:t}=this,a=e((async e=>{if(!t?.map||!t?.allLayerViews)return;const a=await this._getEditorItemCandidates(e);if(!a.length)return void this._drainEditorItems();const r=[],i=[],s=[],{layerInfos:o}=this;for(const l of a){const e=B(o,l),a=await j(t,l).catch((()=>null));(e?r:a?i:s).push(new S({layer:l,layerInfo:e,layerView:a}))}o?.length&&r.sort(((t,e)=>o.findIndex((({layer:e})=>e===t.layer))-o.findIndex((({layer:t})=>t===e.layer))));const n=[...r,...i,...s];e.aborted||(this._drainEditorItems(),this.editorItems.addMany(n))}));this._updatingHandles.addPromise(a.promise),this._updateItemsTask=a}_afterEditorItemsChange(){const{activeWorkflow:t}=this;if(this.syncFeatureTemplates(),!t)return;const{stepId:e}=t;"create-features"!==t.type?"update"===t.type&&("awaiting-feature-to-update"===e&&!this.canUpdateVisible||"awaiting-update-feature-candidate"===e&&!t.hasUpdatableCandidates)&&this._cancelWorkflow():"awaiting-feature-creation-info"!==e||this.canCreate||this._cancelWorkflow()}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t?.warnIfNoWorkflow&&q("editing:no-active-workflow","There is no active workflow to cancel."));if(!t||!1!==t.force)return this.emit("workflow-cancel"),this._set("activeWorkflow",null),void await e.cancel(t);await e.cancel(t),this._set("activeWorkflow",null)}_createCreateFeaturesWorkflow(t,e){return L.create({viewModel:this,creationInfo:t,sketchOptions:this.sketchOptions,snappingManager:this._snappingManager,startAt:e,applyEditsCallback:(t,e,a)=>this._applyEdits(t,e,a),addAttachmentsCallback:(t,e)=>this._addAttachments(t,e)})}_createUpdateWorkflow(t){return A.create({viewModel:this,sketchOptions:this.sketchOptions,snappingManager:this._snappingManager,startAt:t,applyEditsCallback:(t,e,a)=>this._applyEdits(t,e,a),addAttachmentsCallback:(t,e)=>this._addAttachments(t,e)})}_addAttachments(t,e){const a=e.map((e=>this._addAttachment(t,e.feature,e.attachment)))??[];return Promise.all(a)}async _addAttachment(t,e,a){let r=null;if(!("addAttachment"in t)||null==t.capabilities?.attachment)throw new s("editor:attachments-not-supported","Adding attachments is not supported for this layer type");return await this._queueOperation((async()=>(r=await(t.addAttachment?.(e,a).catch((t=>{throw t?.error||t})))??null,r))),r}async _applyEdits(t,e,a){let r=null;const i=t.url?await M(t.url):null,s={returnServiceEditsOption:(!i||!C(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{const{view:a}=this;if(!a)return null;const i=await j(a,t).catch((()=>null));return r=await t.applyEdits(e,s),i&&await y((()=>!i.updating)),r})),r}_queueOperation(t){this._activityQueue.push(t);const e=(t,e)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)};return t().then((t=>{if(null!=t&&"error"in t&&null!=t.error)throw t.error;if(null!=t&&"addFeatureResults"in t){const{addFeatureResults:e,deleteFeatureResults:a,updateFeatureResults:r}=t,i=e.find((t=>!!t.error))||r.find((t=>!!t.error))||a.find((t=>!!t.error));if(i)throw i.error}return t})).catch((a=>{q("editing:operation-error","An error occurred.",{error:a});const r={error:a,retry:()=>(e(r,this.failures),this._queueOperation(t)),cancel:()=>{e(r,this.failures)}};this._set("failures",[...this.failures,r])})).then((()=>{e(t,this._activityQueue)}))}_createUpdatingResolver(){const t=h();return this._updatingHandles.addPromise(t.promise),t}_itemIsSuspended(t){const e=this.findEditorItemForLayer(t);return null!=e&&(!e.visible||e.disabled)}};t([_({readOnly:!0})],Q.prototype,"activeWorkflow",void 0),t([_({readOnly:!0})],Q.prototype,"_activityQueue",void 0),t([_({value:[...G]})],Q.prototype,"allowedWorkflows",null),t([_({readOnly:!0})],Q.prototype,"canCreate",null),t([_()],Q.prototype,"canCreateVisible",null),t([_({readOnly:!0})],Q.prototype,"canUpdate",null),t([_()],Q.prototype,"canUpdateVisible",null),t([_()],Q.prototype,"featureTemplatesLayers",null),t([_()],Q.prototype,"editableItems",null),t([_()],Q.prototype,"editorItems",void 0),t([_({readOnly:!0})],Q.prototype,"failures",void 0),t([_()],Q.prototype,"hideTemplatesForInactiveLayers",void 0),t([_()],Q.prototype,"attachmentsViewModel",void 0),t([_()],Q.prototype,"featureFormViewModel",null),t([_()],Q.prototype,"featureTemplatesViewModel",void 0),t([_()],Q.prototype,"labelOptions",null),t([_()],Q.prototype,"layerInfos",null),t([_()],Q.prototype,"ownSketchViewModel",void 0),t([_()],Q.prototype,"sketchOptions",void 0),t([_()],Q.prototype,"sketchViewModel",null),t([_({type:U,nonNullable:!0})],Q.prototype,"snappingOptions",void 0),t([_()],Q.prototype,"spinnerViewModel",void 0),t([_()],Q.prototype,"state",null),t([_({readOnly:!0})],Q.prototype,"syncing",null),t([_()],Q.prototype,"updating",null),t([_()],Q.prototype,"tooltipOptions",null),t([_()],Q.prototype,"valueOptions",null),t([_()],Q.prototype,"view",null),t([_()],Q.prototype,"pageStack",void 0),t([_()],Q.prototype,"showDiscardEditsPrompt",void 0),t([_()],Q.prototype,"_candidateCommitted",void 0),t([_()],Q.prototype,"page",null),t([_()],Q.prototype,"featureFormDisabled",null),t([_()],Q.prototype,"canGoBack",null),t([_()],Q.prototype,"shouldShowDeleteButton",null),t([_()],Q.prototype,"hasPendingEdits",null),Q=t([W(x)],Q);const N=Q;export{N as default};
5
+ import{_ as t}from"../../chunks/tslib.es6.js";import{createTask as e}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{deprecatedProperty as r,deprecated as i}from"../../core/deprecate.js";import s from"../../core/Error.js";import o from"../../core/Evented.js";import{makeHandle as n}from"../../core/handleUtils.js";import l from"../../core/Logger.js";import{abortMaybe as p,removeMaybe as d,destroyMaybe as c}from"../../core/maybe.js";import{throwIfAborted as u,createResolver as h}from"../../core/promiseUtils.js";import{watch as w,on as f,when as m,whenOnce as y,syncAndInitial as k,initial as g,sync as v}from"../../core/reactiveUtils.js";import{property as _}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/RandomLCG.js";import{subclass as W}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as b}from"../../core/support/UpdatingHandles.js";import I from"../../layers/GraphicsLayer.js";import{isEditableLayer as F}from"../../layers/support/editableLayers.js";import{isFeatureLayer as E,getOwningPortalUrl as M}from"../../layers/support/layerUtils.js";import{parseKnownOnlineDomain as C}from"../../portal/support/urlUtils.js";import V from"../../views/interactive/sketch/SketchOptions.js";import{SnappingManager as O}from"../../views/interactive/snapping/SnappingManager.js";import U from"../../views/interactive/snapping/SnappingOptions.js";import T from"../Attachments/AttachmentsViewModel.js";import L from"./CreateFeaturesWorkflow.js";import A from"./UpdateWorkflow.js";import{whenEditorLayerView as j}from"./workflowUtils.js";import S from"./support/EditorItem.js";import P from"../FeatureTemplates/FeatureTemplatesViewModel.js";import R from"../Sketch/SketchViewModel.js";import H from"../Spinner/SpinnerViewModel.js";const x="geoscene.widgets.Editor.EditorViewModel",D=()=>l.getLogger(x),G=["create-features","update"];function q(t,e,a){D().error(new s(t,e,a))}function B(t,e){return t?.find((t=>t.layer===e))}let Q=class extends o.EventedAccessor{constructor(t){super(t),this._sketchEventListenerHandle=null,this._sketchGraphicsLayer=new I({listMode:"hide",internal:!0}),this._snappingManager=null,this._updateItemsTask=null,this._updatingHandles=new b,this._featureTemplatesViewModelLocked=!1,this.activeWorkflow=null,this._activityQueue=new a,this.editorItems=new a,this.failures=[],this.hideTemplatesForInactiveLayers=!1,this.attachmentsViewModel=new T({capabilities:{editing:!0}}),this.featureTemplatesViewModel=new P({disabledItemFunction:({layer:t})=>this._itemIsSuspended(t)}),this.ownSketchViewModel=new R({layer:this._sketchGraphicsLayer}),this.sketchOptions=new V,this.snappingOptions=new U,this.spinnerViewModel=new H,this.pageStack=[],this.showDiscardEditsPrompt=()=>Promise.resolve(!0),this._candidateCommitted=!1,this.back=async()=>{this.canGoBack&&(this.activeWorkflow?.hasPreviousStep?await this.activeWorkflow.back(this.showDiscardEditsPrompt):await this._cancelWorkflow({force:!this.hasPendingEdits}))},this.saveWorkflow=async()=>{const{featureFormViewModel:t}=this;if(t){if(t.submit(),!t.submittable)return;const e=t.getValues();if(t.validateContingencyConstraints(e,{includeIncompleteViolations:!0}).length>0)return}await(this.activeWorkflow?.save())},this.selectFeature=(t,e=!1)=>{const a=this.activeWorkflow;this._candidateCommitted||"update"!==a?.type||(a.data.rootFeature=t,e&&(a.next(),this._candidateCommitted=!0))}}initialize(){this.addHandles([w((()=>{const t=this.view,e=t?.map?.editableLayers,a=t?.allLayerViews,r=a?.filter((t=>!!e?.includes(t.layer)));return[e,r,this.layerInfos,this.allowedWorkflows]}),(()=>this._updateEditorItems()),k),w((()=>this.hideTemplatesForInactiveLayers),(()=>this.syncFeatureTemplates())),f((()=>this.activeWorkflow),"cancel",(()=>this.emit("workflow-cancel"))),f((()=>this.activeWorkflow),"commit",(()=>this.emit("workflow-commit"))),f((()=>this.activeWorkflow),"complete",(()=>{this.emit("workflow-commit"),this._set("activeWorkflow",null)})),m((()=>this.view?.map),(t=>t.add(this._sketchGraphicsLayer)),g),f((()=>this.editorItems),"change",(()=>this._afterEditorItemsChange())),w((()=>[this.canCreate,this.canUpdateVisible]),(()=>this._afterEditorItemsChange())),w((()=>this.page),((t,e)=>{const a=[...this.pageStack];if(-1===a.indexOf(t))a.push(t);else for(;a.length&&a.at(-1)!==t;)a.pop();this.pageStack=a}),k),m((()=>"awaiting-update-feature-candidate"===this.state),(()=>this._candidateCommitted=!1)),f((()=>this.featureTemplatesViewModel),"select",(async({item:t,oldItem:e})=>{const{activeWorkflow:a}=this;if(a){if("update"===a.type&&"awaiting-feature-creation-info"===a.activeWorkflow?.stepId)return;try{await this.cancelWorkflow({force:!this.hasPendingEdits})}catch{return void this.featureTemplatesViewModel.select(e,{emit:!1})}}if(!t)return;const r={layer:t.layer,template:t.template};if(t.supportsUpload)return this.featureTemplatesViewModel.select(e,{emit:!1}),this.startCreateFeaturesWorkflow(r);this.startCreateFeaturesWorkflowAtFeatureCreation(r)})),f((()=>this.view),"key-down",(t=>{"Escape"===t.key&&this.activeWorkflow?.keyboardCancellationEnabled&&(t.stopPropagation(),this.back())})),f((()=>this.sketchViewModel),["create","delete","update"],(t=>{const{activeWorkflow:e}=this,a="update"===e?.type,r=a?e.activeWorkflow?.layer:e?.layer,i=a?e?.activeWorkflow?.parentLayer:void 0,s=`sketch-${t.type}`;this.emit(s,{type:s,detail:t,layer:r,parentLayer:i})}),v),w((()=>this.view),(t=>{if(this._snappingManager=c(this._snappingManager),!t)return;const e=this.snappingOptions;this._snappingManager=new O({view:t,options:e})}),k),w((()=>this.snappingOptions),(t=>{this._snappingManager&&(this._snappingManager.options=t)}),k)])}destroy(){this._cancelWorkflow({warnIfNoWorkflow:!1}).then((()=>{this.view?.map?.remove(this._sketchGraphicsLayer),this.view=null})),this._updateItemsTask=p(this._updateItemsTask),this._updatingHandles.destroy(),this._sketchEventListenerHandle=d(this._sketchEventListenerHandle)}get allowedWorkflows(){return this._get("allowedWorkflows")}set allowedWorkflows(t){r(l.getLogger(this),"allowedWorkflows",{replacement:"Editor.visibleElements",version:"4.29",warnOnce:!0}),t&&0!==t.length||(t=[...G]),this._set("allowedWorkflows",t)}get canCreate(){return this.editorItems.some((t=>t.supportsCreateFeaturesWorkflow))}get canCreateVisible(){return!!this.featureTemplatesLayers.length}get canUpdate(){return this.editorItems.some((t=>t.supportsUpdateWorkflow))}get canUpdateVisible(){return this.editorItems.some((t=>t.supportsUpdateWorkflow&&t.visible))}get featureTemplatesLayers(){const t=new a;for(const e of this.editorItems){const a=e.supportsCreateFeaturesWorkflow&&!e.isTable,r=this.hideTemplatesForInactiveLayers&&!e.visible;a&&!r&&t.push(e.layer)}return t}get editableItems(){return r(l.getLogger(this),"editableItems",{replacement:"editorItems",version:"4.29",warnOnce:!0}),this.editorItems.map((t=>{const{capabilities:e,disabled:a,hasInvalidFormTemplate:r,layer:i}=t,s=[],o=e.create,n=e.update,l=e.delete;return o.enabled&&s.push("create"),n.enabled&&s.push("update"),l.enabled&&s.push("delete"),{layer:i,supports:s,suspended:a,attributeUpdatesEnabled:n.attributes,geometryUpdatesEnabled:n.geometry,attachmentsOnCreateEnabled:o.attachments.enabled,attachmentsOnUpdateEnabled:n.attachments.enabled,hasInvalidFormTemplate:r,hasAttachments:e.attachments.enabled}}))}get featureFormViewModel(){const{activeWorkflow:t}=this;return"update"===t?.type?t.activeFeatureFormViewModel:"create-features"===t?.type?t.featureFormViewModel:null}get labelOptions(){return this.sketchOptions.labels}set labelOptions(t){this.sketchOptions.labels=t}set layerInfos(t){const e=t?.some((t=>"allowAttachments"in t));e&&i(D(),"Property: layerInfo.allowAttachments",{replacement:"layerInfo.attachmentsOnCreateEnabled or layerInfo.attachmentsOnUpdateEnabled",version:"4.26"}),this._set("layerInfos",t)}get sketchViewModel(){const{activeWorkflow:t}=this;return"update"===t?.type?t.activeSketchViewModel:"create-features"===t?.type?t.sketchViewModel:this.ownSketchViewModel}get state(){if(!this.view?.ready)return"disabled";const t=this.attachmentsViewModel.mode;if("add"===t)return"adding-attachment";if("edit"===t)return"editing-attachment";const{activeWorkflow:e}=this;return e?.stepId?"update"===e.type&&e.activeWorkflow?.stepId?e.activeWorkflow.stepId:e.stepId:"ready"}get syncing(){return this._activityQueue.length>0}get updating(){return this._updatingHandles.updating||!0===this.activeWorkflow?.updating}get tooltipOptions(){return this.sketchOptions.tooltips}set tooltipOptions(t){this.sketchOptions.tooltips=t}get valueOptions(){return this.sketchOptions.values}set valueOptions(t){this.sketchOptions.values=t}set view(t){this.ownSketchViewModel.view=t,this.spinnerViewModel.view=t,this._set("view",t)}get page(){const{activeWorkflow:t,state:e}=this;if("update"===t?.type&&"awaiting-feature-to-update"===t.stepId)return"ready";if("create-features"===t?.type&&0===t.numPendingFeatures){const e=t.data.upload;if(e)return"default"===e.state?"ready":"creating-features-upload-details"}return e??"disabled"}get featureFormDisabled(){const{activeWorkflow:t}=this;return"update"===t?.type&&!1===t.activeEditorItem?.capabilities.update.attributes}get canGoBack(){return null!=this.activeWorkflow&&!this.syncing}get shouldShowDeleteButton(){const{activeWorkflow:t}=this;return!!t&&"update"===t.type&&!!t.activeEditorItem?.capabilities.delete.enabled}get hasPendingEdits(){return this.activeWorkflow?.hasPendingEdits??!1}async startCreateFeaturesWorkflowAtFeatureTypeSelection(){return this.startCreateFeaturesWorkflow()}async startCreateFeaturesWorkflowAtFeatureCreation(t){return this.startCreateFeaturesWorkflow(t,"creating-features")}async startCreateFeaturesWorkflow(t,e="awaiting-feature-creation-info"){if(await y((()=>!this.updating)),!this.canCreate)throw new s("editing:unsupported-workflow","Creating features is unsupported or disabled.");const a=this._createUpdatingResolver();await this._cancelWorkflow();const r=this._createCreateFeaturesWorkflow(t,e);this._set("activeWorkflow",r),await r.start(),a.resolve()}async startCreateFeaturesWorkflowAtFeatureEdit(t){await y((()=>!this.updating));const e=this._createUpdatingResolver(),{initialFeature:a}=t,r=a.sourceLayer=a.layer,i=r?this.findEditorItemForLayer(r):void 0;if(!i?.supportsCreateFeaturesWorkflow)throw new s("editing:unsupported-workflow","Creating features is unsupported or disabled for this layer.");await this._cancelWorkflow();const o=this._createCreateFeaturesWorkflow({initialFeature:a,layer:i.layer,maxFeatures:1},"creating-features");this._set("activeWorkflow",o),await o.start(),e.resolve()}async startUpdateWorkflowAtFeatureSelection(){if(await y((()=>!this.updating)),!this.canUpdate)return void q("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const t=this._createUpdatingResolver();await this._cancelWorkflow();const e=this._createUpdateWorkflow();this._set("activeWorkflow",e),await e.start(),t.resolve()}async startUpdateWorkflowAtMultipleFeatureSelection(t){if(await y((()=>!this.updating)),!this.canUpdate)return void q("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const e=this._createUpdatingResolver();await this._cancelWorkflow();const a=this._createUpdateWorkflow("awaiting-update-feature-candidate");a.data.candidates=t,this._set("activeWorkflow",a),await a.start(),e.resolve()}async startUpdateWorkflowAtFeatureEdit(t){if(await y((()=>!this.updating)),!this.canUpdate)return void q("editing:unsupported-workflow","Update workflow is unsupported or disabled.");const e=this._createUpdatingResolver();await this._cancelWorkflow();const a=this._createUpdateWorkflow("editing-existing-feature");a.data.rootFeature=t,this._set("activeWorkflow",a),await a.start(),e.resolve()}async deleteFeatureFromWorkflow(){const{activeWorkflow:t}=this;t&&"update"===t.type?await t.deleteActiveFeature():q("editing:unsupported-workflow","Deleting requires an active update workflow.")}async cancelWorkflow(t){return this._cancelWorkflow({warnIfNoWorkflow:!0,...t})}findEditorItemForLayer(t){return this.editorItems.find((e=>e.layer===t))}itemHasInvalidFormTemplate(t){return null!=t&&!0===this.findEditorItemForLayer(t.layer)?.hasInvalidFormTemplate}syncFeatureTemplates(){this._featureTemplatesViewModelLocked||(this.featureTemplatesViewModel.layers=this.featureTemplatesLayers.toArray())}async toggleUpdateWorkflow(){this.canUpdate&&(this.hasPendingEdits&&!await this.showDiscardEditsPrompt()||(this.activeWorkflow&&"awaiting-feature-to-update"===this.state?await this.cancelWorkflow({force:!0}):await this.startUpdateWorkflowAtFeatureSelection()))}lockFeatureTemplatesViewModel(){return this._featureTemplatesViewModelLocked=!0,n((()=>{this._featureTemplatesViewModelLocked=!1,this.syncFeatureTemplates()}))}async _getEditorItemCandidates(t){const{view:e}=this;if(!e?.map)return[];const{map:a}=e,r=a.editableLayers.toArray()??[],i=a.allTables.toArray().filter(E)??[];return await Promise.allSettled([...r.map((t=>"subtype-group"===t.type?t.loadAll():Promise.resolve())),...i.map((t=>t.load()))]),u(t),[...r.reverse(),...i.reverse()].filter((t=>F(t)&&("mesh"!==t.geometryType||"3d"===e.type))).flatMap((t=>"subtype-group"===t.type?t.sublayers.toArray():t))}_drainEditorItems(){this.editorItems.drain((t=>t.destroy()))}async _updateEditorItems(){p(this._updateItemsTask);const{view:t}=this,a=e((async e=>{if(!t?.map||!t?.allLayerViews)return;const a=await this._getEditorItemCandidates(e);if(!a.length)return void this._drainEditorItems();const r=[],i=[],s=[],{layerInfos:o}=this;for(const l of a){const e=B(o,l),a=await j(t,l).catch((()=>null));(e?r:a?i:s).push(new S({layer:l,layerInfo:e,layerView:a}))}o?.length&&r.sort(((t,e)=>o.findIndex((({layer:e})=>e===t.layer))-o.findIndex((({layer:t})=>t===e.layer))));const n=[...r,...i,...s];e.aborted||(this._drainEditorItems(),this.editorItems.addMany(n))}));this._updatingHandles.addPromise(a.promise),this._updateItemsTask=a}_afterEditorItemsChange(){const{activeWorkflow:t}=this;if(this.syncFeatureTemplates(),!t)return;const{stepId:e}=t;"create-features"!==t.type?"update"===t.type&&("awaiting-feature-to-update"===e&&!this.canUpdateVisible||"awaiting-update-feature-candidate"===e&&!t.hasUpdatableCandidates)&&this._cancelWorkflow():"awaiting-feature-creation-info"!==e||this.canCreate||this._cancelWorkflow()}async _cancelWorkflow(t){const e=this.activeWorkflow;if(!e)return void(t?.warnIfNoWorkflow&&q("editing:no-active-workflow","There is no active workflow to cancel."));if(!t||!1!==t.force)return this.emit("workflow-cancel"),this._set("activeWorkflow",null),void await e.cancel(t);await e.cancel(t),this._set("activeWorkflow",null)}_createCreateFeaturesWorkflow(t,e){return L.create({viewModel:this,creationInfo:t,sketchOptions:this.sketchOptions,snappingManager:this._snappingManager,startAt:e,applyEditsCallback:(t,e,a)=>this._applyEdits(t,e,a),addAttachmentsCallback:(t,e)=>this._addAttachments(t,e)})}_createUpdateWorkflow(t){return A.create({viewModel:this,sketchOptions:this.sketchOptions,snappingManager:this._snappingManager,startAt:t,applyEditsCallback:(t,e,a)=>this._applyEdits(t,e,a),addAttachmentsCallback:(t,e)=>this._addAttachments(t,e)})}_addAttachments(t,e){const a=e.map((e=>this._addAttachment(t,e.feature,e.attachment)))??[];return Promise.all(a)}async _addAttachment(t,e,a){let r=null;if(!("addAttachment"in t)||null==t.capabilities?.attachment)throw new s("editor:attachments-not-supported","Adding attachments is not supported for this layer type");return await this._queueOperation((async()=>(r=await(t.addAttachment?.(e,a).catch((t=>{throw t?.error||t})))??null,r))),r}async _applyEdits(t,e,a){let r=null;const i=t.url?await M(t.url):null,s={returnServiceEditsOption:(!i||!C(i))&&!RegExp("/hosted/","i").test(t.url)?"original-and-current-features":void 0,...a};return await this._queueOperation((async()=>{const{view:a}=this;if(!a)return null;const i=await j(a,t).catch((()=>null));return r=await t.applyEdits(e,s),i&&await y((()=>!i.updating)),r})),r}_queueOperation(t){this._activityQueue.push(t);const e=(t,e)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)};return t().then((t=>{if(null!=t&&"error"in t&&null!=t.error)throw t.error;if(null!=t&&"addFeatureResults"in t){const{addFeatureResults:e,deleteFeatureResults:a,updateFeatureResults:r}=t,i=e.find((t=>!!t.error))||r.find((t=>!!t.error))||a.find((t=>!!t.error));if(i)throw i.error}return t})).catch((a=>{q("editing:operation-error","An error occurred.",{error:a});const r={error:a,retry:()=>(e(r,this.failures),this._queueOperation(t)),cancel:()=>{e(r,this.failures)}};this._set("failures",[...this.failures,r])})).then((()=>{e(t,this._activityQueue)}))}_createUpdatingResolver(){const t=h();return this._updatingHandles.addPromise(t.promise),t}_itemIsSuspended(t){const e=this.findEditorItemForLayer(t);return null!=e&&(!e.visible||e.disabled)}};t([_({readOnly:!0})],Q.prototype,"activeWorkflow",void 0),t([_({readOnly:!0})],Q.prototype,"_activityQueue",void 0),t([_({value:[...G]})],Q.prototype,"allowedWorkflows",null),t([_({readOnly:!0})],Q.prototype,"canCreate",null),t([_()],Q.prototype,"canCreateVisible",null),t([_({readOnly:!0})],Q.prototype,"canUpdate",null),t([_()],Q.prototype,"canUpdateVisible",null),t([_()],Q.prototype,"featureTemplatesLayers",null),t([_()],Q.prototype,"editableItems",null),t([_()],Q.prototype,"editorItems",void 0),t([_({readOnly:!0})],Q.prototype,"failures",void 0),t([_()],Q.prototype,"hideTemplatesForInactiveLayers",void 0),t([_()],Q.prototype,"attachmentsViewModel",void 0),t([_()],Q.prototype,"featureFormViewModel",null),t([_()],Q.prototype,"featureTemplatesViewModel",void 0),t([_()],Q.prototype,"labelOptions",null),t([_()],Q.prototype,"layerInfos",null),t([_()],Q.prototype,"ownSketchViewModel",void 0),t([_()],Q.prototype,"sketchOptions",void 0),t([_()],Q.prototype,"sketchViewModel",null),t([_({type:U,nonNullable:!0})],Q.prototype,"snappingOptions",void 0),t([_()],Q.prototype,"spinnerViewModel",void 0),t([_()],Q.prototype,"state",null),t([_({readOnly:!0})],Q.prototype,"syncing",null),t([_()],Q.prototype,"updating",null),t([_()],Q.prototype,"tooltipOptions",null),t([_()],Q.prototype,"valueOptions",null),t([_()],Q.prototype,"view",null),t([_()],Q.prototype,"pageStack",void 0),t([_()],Q.prototype,"showDiscardEditsPrompt",void 0),t([_()],Q.prototype,"_candidateCommitted",void 0),t([_()],Q.prototype,"page",null),t([_()],Q.prototype,"featureFormDisabled",null),t([_()],Q.prototype,"canGoBack",null),t([_()],Q.prototype,"shouldShowDeleteButton",null),t([_()],Q.prototype,"hasPendingEdits",null),Q=t([W(x)],Q);const N=Q;export{N as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import"../../../intl.js";import{addTokenParameter as s}from"../../../kernel.js";import l from"../../../request.js";import"../../../symbols.js";import i from"../../../core/Accessor.js";import{isSome as r}from"../../../core/arrayUtils.js";import n from"../../../core/Collection.js";import{JSONMap as a}from"../../../core/jsonMap.js";import o from"../../../core/Logger.js";import{debounce as u}from"../../../core/promiseUtils.js";import{on as c,watch as d,whenOnce as y,initial as h}from"../../../core/reactiveUtils.js";import{px2pt as m}from"../../../core/screenUtils.js";import{addQueryParameters as f}from"../../../core/urlUtils.js";import{property as p}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import{subclass as g}from"../../../core/accessorSupport/decorators/subclass.js";import{OriginId as b}from"../../../core/accessorSupport/PropertyOrigin.js";import{EffectView as S}from"../../../layers/effects/EffectView.js";import{effectFunctionsFromJSON as _}from"../../../layers/effects/jsonUtils.js";import{ExportImageParameters as v}from"../../../layers/support/ExportImageParameters.js";import{isFeatureLayer as w}from"../../../layers/support/layerUtils.js";import{getPixelValueRange as L}from"../../../layers/support/rasterFormats/pixelRangeUtils.js";import{fromJSON as E}from"../../../renderers/support/jsonUtils.js";import{isSupportedRenderer3D as C}from"../../../renderers/support/rendererConversion.js";import I from"../../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{applyCIMSymbolColor as R}from"../../../symbols/support/cimSymbolUtils.js";import{SymbolSizeDefaults as F}from"../../../symbols/support/previewUtils.js";import{renderSymbol as V}from"../../../symbols/support/renderUtils.js";import{renderColorRampPreviewHTML as T,renderDotDensityPreviewHTML as z,renderPieChartPreviewHTML as x,renderPreviewHTML as D}from"../../../symbols/support/symbolUtils.js";import{isVolumetricSymbol as j}from"../../../symbols/support/utils.js";import{getEffectiveClusterSizeVariable as O}from"./clusterUtils.js";import{getColorFromPointCloudStops as P,getRampStopsForPointCloud as A,getStretchRampStops as M,getRampStops as U}from"./colorRampUtils.js";import{getHeatmapRampStops as k}from"./heatmapRampUtils.js";import{getRotationAngleForFocus as B,getRelationshipRampElement as N}from"./relationshipRampUtils.js";import{getRampStops as q,realWorldMaxSize as H,realWorldMinSize as $}from"./sizeRampUtils.js";import{specialCharsLessThan as W,specialCharsGreaterThan as G,getSymbolForFlowRenderer as J,isRasterBandStatistics as Q,getMedianColor as Z,rgbImgSource as K,getDateFormatOptions as X}from"./utils.js";import{formatNumberLabel as Y}from"../../smartMapping/support/utils.js";import ee from"../../../symbols/SimpleMarkerSymbol.js";import te from"../../../symbols/SimpleFillSymbol.js";import{fetchMessageBundle as se}from"../../../intl/messages.js";import{substitute as le}from"../../../intl/substitute.js";const ie="https://utility.arcgis.com/sharing/tools/legend",re="geoscene.layers.ImageryLayer",ne="geoscene.layers.ImageryTileLayer",ae="geoscene.layers.WCSLayer",oe=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i,ue=new a({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryMultiPatch:"multipatch"}),ce=new ee({size:6,outline:{color:[128,128,128,.5],width:.5}}),de=new te({style:"solid"});function ye(e){return"flow"===e.type}function he(e){return"vector-field"===e.type}function me(e){return"raster-colormap"===e.type}function fe(e){return"raster-stretch"===e.type}function pe(e){return"raster-shaded-relief"===e.type}function ge(e){return"geoscene.renderers.SimpleRenderer"===e.declaredClass}function be(e){return"geoscene.renderers.ClassBreaksRenderer"===e.declaredClass}function Se(e){return"geoscene.renderers.UniqueValueRenderer"===e.declaredClass}function _e(e){return"geoscene.renderers.HeatmapRenderer"===e.declaredClass}function ve(e){return Le(e)||Ee(e)||Ce(e)||we(e)}function we(e){return"geoscene.renderers.PointCloudRGBRenderer"===e.declaredClass}function Le(e){return"geoscene.renderers.PointCloudClassBreaksRenderer"===e.declaredClass}function Ee(e){return"geoscene.renderers.PointCloudStretchRenderer"===e.declaredClass}function Ce(e){return"geoscene.renderers.PointCloudUniqueValueRenderer"===e.declaredClass}function Ie(e){return"geoscene.renderers.DotDensityRenderer"===e.declaredClass}function Re(e){return"geoscene.renderers.PieChartRenderer"===e.declaredClass}function Fe(e,t){return ge(e)||be(e)||Se(e)||_e(e)||Ie(e)||Re(e)?"2d"===t.type||C(e):fe(e)||me(e)||pe(e)||Le(e)||Ee(e)||Ce(e)||he(e)||ye(e)}function Ve(e){return"geoscene.layers.BuildingSceneLayer"===e.declaredClass}function Te(e){return"geoscene.layers.SubtypeGroupLayer"===e.declaredClass}function ze(e){return"geoscene.layers.VoxelLayer"===e.declaredClass}function xe(e){return"geoscene.layers.WMSLayer"===e.declaredClass}function De(e){return"geoscene.layers.WMTSLayer"===e.declaredClass}function je(e){return"geoscene.layers.MapImageLayer"===e.declaredClass}function Oe(e){return"geoscene.layers.TileLayer"===e.declaredClass}function Pe(e){return e.declaredClass===re}function Ae(e){return e.declaredClass===ne}function Me(e){return e.declaredClass===ae}function Ue(e){return"stretch-ramp"===e.type}function ke(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type}function Be(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type&&"above-and-below"===t?.univariateTheme}function Ne(e){return"sublayers"in e}async function qe(e,t){const s=await se("geoscene/widgets/Legend/t9n/Legend");return"previewTemplateAriaLabel"!==e||t||(e="previewAriaLabel"),le(s[e],{label:t})}const He=new ee({style:"path",path:"M10,5 L5,0 0,5 M5,0 L5,15",size:15,outline:{width:1,color:[85,85,85,1]}});let $e={},We=class extends i{constructor(e){super(e),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._webStyleSymbolCache=new Map,this._dotDensityUrlCache=new Map,this._scaleDrivenSizeVariable=null,this._hasClusterSizeVariable=!1,this.children=new n,this.layerView=null,this.layer=null,this.legendElements=[],this.parent=null,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.respectLayerVisibility=!0,this.sublayerIds=[],this.title=null,this.view=null}initialize(){const e=()=>this.notifyChange("ready");this.addHandles([c((()=>this.children),"change",(t=>{const{added:s,removed:l}=t;s.forEach((t=>{const s=`activeLayerInfo-ready-watcher-${t.layer.uid}`;this.addHandles(d((()=>t.ready),e,h),s)})),l.forEach((e=>this.removeHandles(e.layer.uid))),e()}))]),this.keepCacheOnDestroy||($e={})}destroy(){this._webStyleSymbolCache=null,this._dotDensityUrlCache=null,this._scaleDrivenSizeVariable=null,this.keepCacheOnDestroy||($e=null)}get effectList(){const e=this.layer;let t=null;return"effect"in e&&e.effect&&(t=new S,t.effect=e.effect,t.endTransitions(),t.scale=this.scale),t}get opacity(){const e=this.layer.opacity,t=this.parent?.opacity,s=this.layer.parent,l=s&&"uid"in s?this._getParentLayerOpacity(s):null;return null!=t?t*e:null!=l?l*e:e}get ready(){return null===this.layer||(this.children.length>0?this._isGroupActive():this.legendElements.length>0)}get scale(){return this.view?.scale??0}get isScaleDriven(){const e=this.layer;if(null===e)return!1;if("effect"in e&&e.effect&&Array.isArray(e.effect))return!0;if("featureReduction"in e&&e.featureReduction){if("cluster"===e.featureReduction.type)return!0;if("binning"===e.featureReduction.type&&"renderer"in e.featureReduction&&e.featureReduction.renderer)return this._isRendererScaleDriven(e.featureReduction.renderer)}return"renderer"in e&&e.renderer?this._isRendererScaleDriven(e.renderer):this._isLayerScaleDriven(this.layer)}get version(){return this._get("version")+1}async buildLegendElementsForFeatureCollections(e){if(!(!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView()))return this.legendElements=[],void this.notifyChange("ready");const t=Array.from(e,(e=>{if(w(e))return this._getRendererLegendElements(e.renderer,{title:e.title});if(e.featureSet?.features.length){const t=e.layerDefinition,s=t?.drawingInfo,l=s&&E(s.renderer),i=ue.read(t.geometryType);return l?this._getRendererLegendElements(l,{title:e.name,geometryType:i}):(o.getLogger(this).warn("drawingInfo not available!"),null)}return null}));try{const e=[],s=await Promise.allSettled(t);for(const t of s)if("fulfilled"===t.status)for(const s of t.value??[])e.push(s);this.legendElements=e,this.notifyChange("ready")}catch(s){o.getLogger(this).warn("error while building legend for layer!",s)}}async buildLegendElementsForRenderer(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getRendererLegendElements(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForFeatureReduction(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getLegendElementsForFeatureReduction(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForTools(){const e=this.layer;if(ze(e))this._constructLegendElementsForVoxelLayer();else if(De(e))this._constructLegendElementsForWMTSlayer();else if(xe(e))await this._constructLegendElementsForWMSSublayers();else if(Ve(e))await this._constructLegendElementsForBuildingSceneLayer();else if(je(e)||Oe(e)||Te(e))await this._constructLegendElementsForSublayers();else{this.removeHandles("imageryLayers-watcher");let t="default";if(Pe(e)){const s=e;t=(s?.rasterFunction?.functionName||"default")+"_"+(e.bandIds?.length?e.bandIds.join(""):"###")}if(Ae(e))return;await this._getLegendLayers(`${e.uid}-${t}`).then((async t=>{this.legendElements=[],this.notifyChange("ready");const s=t.map((async t=>{if(Pe(e)){const t=d((()=>["renderingRule"in e&&e.rasterFunction,e.bandIds]),(()=>u((async()=>{$e.default=null,e.renderer?await this.buildLegendElementsForRenderer(e.renderer):await this.buildLegendElementsForTools()}))()));this.addHandles(t,"imageryLayers-watcher")}const s=this._generateSymbolTableElementForLegendLayer(t);s&&s.infos.length&&(Pe(e)&&(s.title=e.title),this.legendElements.push(s)),this.notifyChange("ready")}));await Promise.allSettled(s)})).catch((e=>{o.getLogger(this).warn("Request to server for legend has failed!",e)}))}}async _isLayerInCurrentView(){const e=this.layer,t=this.layerView,s=t&&"createQuery"in t&&"queryFeatureCount"in t;if(!s&&!(t&&"createQuery"in e&&"queryFeatureCount"in e))return!0;await y((()=>!t.updating));const l=s?"createQuery"in t&&t.createQuery():"createQuery"in e&&e.createQuery();if(!l)return!0;l.geometry=this.view.extent;return 0!==(s?"queryFeatureCount"in t&&await t.queryFeatureCount(l):"queryFeatureCount"in e&&await e.queryFeatureCount(l))}_getParentLayerOpacity(e){let t=1;const s=e.parent;return s&&"uid"in s&&(t=this._getParentLayerOpacity(s)),e.opacity*t}_isGroupActive(){return this.children.some((e=>e.ready))}_isRendererScaleDriven(e){if("dot-density"===e.type)return!0;const t="valueExpression"in e?e.valueExpression:null;if(oe.test(t))return!0;const s="visualVariables"in e?e.visualVariables:null;return!!s?.some((e=>this._isScaleDrivenSizeVariable(e)))||this._hasScaleDrivenSymbols(e)}_hasScaleDrivenSymbols(e){switch(e.type){case"simple":return this._isScaleDrivenSymbol(e.symbol);case"class-breaks":return this._isScaleDrivenSymbol(e.defaultSymbol)||e.classBreakInfos.some((e=>this._isScaleDrivenSymbol(e.symbol)));case"unique-value":return this._isScaleDrivenSymbol(e.defaultSymbol)||!!e.uniqueValueInfos?.some((e=>this._isScaleDrivenSymbol(e.symbol)))}return!1}_isScaleDrivenSymbol(e){if("cim"===e?.type){const{primitiveOverrides:t,minScale:s,maxScale:l}=e.data,i=t?.some((e=>/\$view\.scale/.test(e.valueExpressionInfo?.expression||"")))??!1;return null!=s||null!=l||i}return!1}_isScaleDrivenSizeVariable(e){if(e&&"size"!==e.type)return!1;const t=e,s=t.minSize,l=t.maxSize;return!("object"!=typeof s||!s||!this._isScaleDrivenSizeVariable(s))||(!("object"!=typeof l||!l||!this._isScaleDrivenSizeVariable(l))||(!!t.expression||oe.test(t.valueExpression)))}_isLayerScaleDriven(e){if("minScale"in e&&e.minScale>0||"maxScale"in e&&e.maxScale>0)return!0;if("sublayers"in e&&e.sublayers)return e.sublayers.some((e=>this._isLayerScaleDriven(e)));const t=e.parent;if(!1===e.loaded&&t&&je(t)&&"source"in e&&e.source&&"map-layer"===e.source.type)for(const s of t.sourceJSON.layers??[])if(s.id===e.source.mapLayerId&&(s.minScale>0||s.maxScale>0))return!0;return!1}async _constructLegendElementsForVoxelLayer(){this.legendElements=[],this.removeHandles("voxel-style-watcher"),this.removeHandles("voxel-current-variable");const e=this.layer;this.addHandles(d((()=>e.currentVariableId),(()=>this._constructLegendElementsForVoxelLayer())),"voxel-current-variable"),this.addHandles(d((()=>e.getVariableStyles()),(()=>this._constructLegendElementsForVoxelLayer())),"voxel-style-watcher");const t=e.getVariableStyle(null),s=[];if(t)if(t.uniqueValues?.length){const e=[];t.uniqueValues.forEach((t=>{t.enabled&&e.push({label:t.label||`${t.value}`,value:t.value,symbol:new te({color:t.color,outline:null})})})),e.length&&s.push({type:"symbol-table",title:t.label,infos:e})}else if(t.transferFunction){const{colorStops:e,stretchRange:l}=t.transferFunction,i=e.toArray().reverse(),r=l.map(((e,t)=>`${0===t?W:G} ${Y(e)}`)).reverse(),n=i.map((e=>({color:e.color,value:null,label:null})));n[0].label=r[0],n[n.length-1].label=r[1],s.push({type:"color-ramp",title:t.label,infos:n,preview:T(i.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})})}const l=e.opacity,i=s.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).map((e=>this._getSymbolPreview(e,l)));await Promise.allSettled(i),this.legendElements=s,this.notifyChange("ready")}_constructLegendElementsForWMTSlayer(){this.legendElements=[],this.removeHandles("wmts-activeLayer-watcher");const e=this.layer.activeLayer;this.addHandles(d((()=>{const{layer:e}=this;return e&&"activeLayer"in e&&e.activeLayer}),(()=>this._constructLegendElementsForWMTSlayer())),"wmts-activeLayer-watcher");const t=e.styleId?e.styles?.find((({id:t})=>t===e.styleId))?.legendUrl:void 0;t&&(this.legendElements=[{type:"symbol-table",title:e.title,infos:[{src:t,opacity:this.opacity}]}]),this.notifyChange("ready")}async _constructLegendElementsForWMSSublayers(){this.legendElements=[],this.removeHandles("wms-sublayers-watcher");const e=this.layer;let t=null;(e.customParameters||e.customLayerParameters)&&(t={...e.customParameters,...e.customLayerParameters}),this.addHandles(d((()=>{const{layer:e}=this;return e&&"sublayers"in e&&e.sublayers}),(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher"),this.legendElements=await this._generateLegendElementsForWMSSublayers(e.sublayers,t),this.notifyChange("ready")}async _generateLegendElementsForWMSSublayers(e,t){const s=this.layer,l=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher");const i=this.sublayerIds?.map((e=>s.findSublayerById(e)))?.filter(r)??[],n=i.length?i:e.toArray();for(const r of n){const e=d((()=>[r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForWMSSublayers()));if(this.addHandles(e,"wms-sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled){const e=await this._generateSymbolTableElementForWMSSublayer(r,t);e?.infos.length&&l.unshift(e)}}return l}async _generateSymbolTableElementForWMSSublayer(e,t){if(!e.legendUrl&&e.sublayers){const s=(await this._generateLegendElementsForWMSSublayers(e.sublayers,t)).filter((e=>e));return{type:"symbol-table",title:e.title,infos:s}}return this._generateSymbolTableElementForLegendUrl(e,t)}async _generateSymbolTableElementForLegendUrl(e,t){let s=e.legendUrl;if(!s)return;const i={type:"symbol-table",title:e.title||e.name||String(e.id??""),infos:[]};t&&(s=f(s,t));let r=null;const n=e.layer?.opacity;try{r=(await l(s,{responseType:"image"})).data,r&&(r.style.opacity=n)}catch{}return i.infos.push({src:s,preview:r,opacity:n}),i}_getLegendLayers(e,t){const s=$e&&$e[e];return s?Promise.resolve(s):this._legendRequest(t).then((t=>{const s=t.layers;return $e[e]=s,s}))}_legendRequest(e){const t=this.layer;let s={f:"json",dynamicLayers:e};if(Pe(t)){const e=t.exportImageServiceParameters.rasterFunction;if(e&&(s.renderingRule=JSON.stringify(e.functionDefinition?.toJSON()||e.toJSON())),t.bandIds&&(s.bandIds=t.bandIds.join()),t.raster||t.viewId||t.customParameters){const{raster:e,viewId:l,customParameters:i}=t;s={raster:e,viewId:l,...s,...i}}}let i=t.url.replace(/(\/)+$/,"");if("version"in t&&+t.version>=10.01){const e=i.indexOf("?");e>-1?i=i.substring(0,e)+"/legend"+i.substring(e):i+="/legend"}else{const e=i.toLowerCase().indexOf("/rest/"),t=i.substring(0,e)+i.substring(e+5,i.length);i=ie+"?soapUrl="+encodeURI(t)+"&returnbytes=true"}return l(i,{query:s}).then((e=>e.data))}async _constructLegendElementsForBuildingSceneLayer(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForBuildingSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}async _generateLegendElementsForBuildingSublayers(e,t){let s=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");const l=e.toArray();for(const i of l){const e=d((()=>["renderer"in i&&i.renderer,i.opacity,i.title,i.visible]),(()=>this._constructLegendElementsForBuildingSceneLayer()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||i.visible){const e=null!=i?.opacity?i.opacity:null,l=null!=e?e*t:t;if("building-group"===i.type){const e={type:"symbol-table",title:i.title,infos:[]},t=await this._generateLegendElementsForBuildingSublayers(i.sublayers,l);e.infos.push(...t),s=[e,...s]}else if(i.renderer){s=[...await this._getRendererLegendElements(i.renderer,{title:i.title,opacity:l,sublayer:i}),...s]}}}return s.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _constructLegendElementsForSublayers(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;if(je(e)||Oe(e)||Te(e)){this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForSublayers)),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}}async _generateLegendElementsForSublayers(e,t,s){const l=this.layer;let i=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForSublayers())),"sublayers-watcher");let n=e.toArray();!s&&this.sublayerIds&&this.sublayerIds.length&&(n=Te(l)?this.sublayerIds.map((e=>l.findSublayerForSubtypeCode(e))).filter(r):this.sublayerIds.map((e=>l.findSublayerById(e))).filter(r));for(const r of n){const e=d((()=>[r.renderer,r.opacity,r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForSublayers()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled&&this._isSublayerInScale(r)){const e=null!=r?.opacity?r.opacity:null,l=null!=e?e*t:t,n=!Ne(r)||r.originIdOf("renderer")>b.SERVICE&&!r.sublayers;if(r.renderer&&n){await r.load();i=[...await this._getRendererLegendElements(r.renderer,{title:r.title,opacity:l,sublayer:r}),...i]}else if(Ne(r)){const e=await this._generateSymbolTableElementForSublayer(r,l,s);e&&i.unshift(e)}}}return i.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _generateSymbolTableElementForSublayer(e,t,s){if(!s){s=new Map;const t=this.layer,l=e.source;let i=null;if(!(!l||"map-layer"===l.type&&l.mapLayerId===e.id&&(!l.gdbVersion||l.gdbVersion===("gdbVersion"in t&&t.gdbVersion)))||e.originIdOf("renderer")>b.SERVICE||e.originIdOf("labelingInfo")>b.SERVICE||e.originIdOf("labelsVisible")>b.SERVICE){const e=new v({layer:this.layer});i=e.hasDynamicLayers?e.dynamicLayers:null,e.destroy()}const r=i||`${t.uid}-default`;(await this._getLegendLayers(r,i)).forEach((e=>s.set(e.layerId,e)))}const l=s.get(e.id);if((!l||l?.subLayerIds&&l.defaultVisibility)&&e.sublayers){const l=await this._generateLegendElementsForSublayers(e.sublayers,t,s);return{type:"symbol-table",title:e.title,infos:l}}return this._generateSymbolTableElementForLegendLayer(l,e,t)}_generateSymbolTableElementForLegendLayer(e,t,s){if(!e?.legend||this.respectLayerVisibility&&!this._isLegendLayerInScale(e,t))return null;const l=t?.renderer;let i=t?.title||e.layerName;if(l&&(!t||t?.originIdOf("renderer")>b.SERVICE)){const e=t?.title||this._getRendererTitle(l,t);e&&(i&&"string"!=typeof e&&"title"in e&&(e.title=i),i=e)}const r={type:"symbol-table",title:i,legendType:e.legendType||null,infos:[]},n=t?this._sanitizeLegendForSublayer(e.legend.slice(),t):e.legend;return e.legendGroups&&e.legendGroups.length>0?e.legendGroups.forEach((t=>{const l={type:"symbol-table",title:t.heading,legendType:e.legendType||null,infos:this._generateSymbolTableElementInfosForLegendLayer(n.filter((e=>e.groupId===t.id)),e.layerId,s)};l.infos?.length>0&&r.infos.push(l)})):r.infos=this._generateSymbolTableElementInfosForLegendLayer(n,e.layerId,s),r.infos.length>0?r:null}_generateSymbolTableElementInfosForLegendLayer(e,t,l){return e.map((e=>{let i=e.url;if(e.imageData&&e.imageData.length>0)i=`data:image/png;base64,${e.imageData}`;else{if(0===i.indexOf("http"))return null;i=s(`${this.layer.url}/${t}/images/${i}`)}return{label:e.label,src:i,opacity:l??this.opacity,width:e.width,height:e.height}})).filter(r)}_isSublayerInScale(e){const t=e.minScale||0,s=e.maxScale||0;return!(t>0&&t<this.scale||s>this.scale)}_isLegendLayerInScale(e,t){const s=t||this.layer;let l=null,i=null,r=!0;return!s.minScale&&0!==s.minScale||!s.maxScale&&0!==s.maxScale?(0===e.minScale&&s.tileInfo&&(l=s.tileInfo.lods[0].scale),0===e.maxScale&&s.tileInfo&&(i=s.tileInfo.lods[s.tileInfo.lods.length-1].scale)):(l=Math.min(s.minScale,e.minScale)||s.minScale||e.minScale,i=Math.max(s.maxScale,e.maxScale)),(l>0&&l<this.scale||i>this.scale)&&(r=!1),r}_sanitizeLegendForSublayer(e,t){if("version"in this.layer&&+this.layer.version<10.1||0===e.length)return e;const s=t.renderer,l=e.some((e=>e.values));let i=0,r=null;return l&&e.some(((e,t)=>(e.values||(i=t,r=e,r.label||(r.label="others")),null!=r))),s?"unique-value"===s.type?r&&(e.splice(i,1),e.push(r)):"class-breaks"===s.type&&(r&&e.splice(i,1),e.reverse(),r&&e.push(r)):r&&(e.splice(i,1),e.push(r)),e}async _getRendererLegendElements(e,t={}){if(!Fe(e,this.view))return o.getLogger(this).warn(`Renderer of type '${e.type}' not supported!`),[];if(ve(e))return this._constructPointCloudRendererLegendElements(e,t);if(Ie(e))return this._constructDotDensityRendererLegendElements(e);const s=await this._loadRenderer(e);return Re(s)?this._constructPieChartRendererLegendElements(s):this._constructRendererLegendElements(s,t)}async _getLegendElementsForFeatureReduction(e){let t=null;return"binning"===e.type?t=e.renderer:"cluster"===e.type&&(t=this._getClusterRenderer(e)),t?this._getRendererLegendElements(t):[]}_getPointCloudRendererTitle(e){return(e.legendOptions?.title||e.field)??""}async _constructPointCloudRendererLegendElements(e,t={}){const s=t.title,l=[];let i=null,r=null;if(Le(e))i={type:"symbol-table",title:s||this._getPointCloudRendererTitle(e),infos:[]},e.colorClassBreakInfos.forEach((e=>{i.infos.unshift({label:e.label||e.minValue+" - "+e.maxValue,value:[e.minValue,e.maxValue],symbol:this._getAppliedCloneSymbol(ce,e.color)})}));else if(Ee(e)){const t=e.stops;let l=null;if(t?.length&&(1===t.length&&(l=t[0].color),!l)){const e=t[0].value,s=t[t.length-1].value;if(null!=e&&null!=s){l=P(e+(s-e)/2,t)}}i={type:"symbol-table",title:null,infos:[{label:null,value:null,symbol:this._getAppliedCloneSymbol(ce,l||ce.color)}]};const n=A(e.stops??[])??[];r={type:"color-ramp",title:s||this._getPointCloudRendererTitle(e),infos:n,preview:T(n.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})}}else Ce(e)&&(i={type:"symbol-table",title:s||this._getPointCloudRendererTitle(e),infos:[]},e.colorUniqueValueInfos?.forEach((e=>{i.infos.push({label:e.label||e.values.join(", "),value:e.values.join(", "),symbol:this._getAppliedCloneSymbol(ce,e.color)})})));i&&i.infos.length&&l.push(i),r&&r.infos.length&&l.push(r);const n=l.reduce(((e,t)=>[...e,...t.infos??[]]),[]).filter((e=>!!e.symbol)).map((t=>this._getSymbolPreview(t,this.opacity,{symbolConfig:{applyColorModulation:!!e.colorModulation}})));return await Promise.allSettled(n),l}async _getElementInfoForDotDensity(e,t){const{color:s,label:l,valueExpressionTitle:i}=t,{backgroundColor:r,outline:n,dotSize:a}=e,o=this.effectList,u=o?.effects.map((e=>e.toJSON())),c=_(u),d=await qe("previewTemplateAriaLabel",l||i),y=a+"-"+s+"-"+r+"-"+(n&&JSON.stringify(n.toJSON()))+"-"+c,h=this._dotDensityUrlCache,m=h.has(y)?h.get(y):z(e,s,{ariaLabel:d});h.set(y,m);const f={shape:{type:"image",x:0,y:0,width:m.width,height:m.height,src:m.src},fill:null,stroke:null,offset:[0,0]},p=V([[f]],[m.width,m.height],{effectView:this.effectList,ariaLabel:d});return{opacity:1,src:m.src,preview:p,width:m.width,height:m.height}}async _constructDotDensityRendererLegendElements(e){const t=e.calculateDotValue(this.view.scale),s=e.legendOptions?.unit,l={type:"symbol-table",title:{value:t&&Math.round(t),unit:s||""},infos:[]};for(const i of e.attributes){const t=await this._getElementInfoForDotDensity(e,i);t.label=i.label||i.valueExpressionTitle||i.field,l.infos.push(t)}return[l]}async _constructPieChartRendererLegendElements(e){const t=this.layer.opacity,s=[];let l=null;const i=e.outline;e.attributes.forEach((e=>{const t=new ee({color:e.color,outline:i}),l=e.label||e.valueExpressionTitle||e.field;s.push({label:l,symbol:t})}));const r=s.length?[...s]:[];if(e.othersCategory?.color&&0!==e.othersCategory?.threshold){const t=new ee({color:e.othersCategory.color,outline:i});l=e.othersCategory.label||"Other",s.push({label:l,symbol:t})}if(e.defaultColor?.a){const t=new ee({color:e.defaultColor,outline:i});s.push({label:e.defaultLabel,symbol:t})}const n=await this._getVisualVariableLegendElements(e,this.layer)||[];if(s.length){n.unshift({type:"symbol-table",title:null,infos:s});const t=r.filter((e=>e.label!==l)).map((e=>e.symbol.color)).filter(Boolean),a=x(t,{holePercentage:e.holePercentage,backgroundColor:e.backgroundFillSymbol?.color,effectList:this.effectList,outline:i,ariaLabel:await qe("previewPieChartAriaLabel")});n.unshift({type:"pie-chart-ramp",title:this._getRendererTitle(e,this.layer),infos:s,preview:a})}const a=n.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol&&!e?.preview)).map((e=>this._getSymbolPreview(e,t,{effectList:this.effectList})));return await Promise.allSettled(a),n}async _constructRendererLegendElements(e,t={}){const{title:s,sublayer:l}=t,i=l||this.layer;this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._scaleDrivenSizeVariable=null;const r=await this._getVisualVariableLegendElements(e,i)||[],n={type:"symbol-table",title:s||this._getRendererTitle(e,i),infos:[]};let a=null,o=!1;const u=new Set;if(ye(e)&&!this._hasSizeRamp){const t=await J(e);n.infos.push({label:null,symbol:t})}else if(ke(e)){let t=s;const l=Be(e)?"univariate-above-and-below-ramp":"univariate-color-size-ramp",i=r.findIndex((e=>"color-ramp"===e.type)),n=-1!==i?r.splice(i,1)[0]:null,a=r.findIndex((e=>"size-ramp"===e.type)),o=-1!==a?r.splice(a,1)[0]:null,u=[];n&&(t=n.title,u.push(n)),o&&(t=o.title,u.push(o)),u.length>0&&r.push({type:l,title:t,infos:u})}else if(_e(e)){const t=k(e);r.push({type:"heatmap-ramp",title:s||this._getRendererTitle(e,i),infos:t,preview:T(t.map((e=>e.color)),{effectList:this.effectList,ariaLabel:await qe("previewColorRampAriaLabel")})})}else if(Se(e)){const t=e&&e.authoringInfo;if(t&&"relationship"===t.type){const{numClasses:s,field1:l,field2:a}=t,o=t.focus;if(s&&l&&a){const t=[l,a];let c=B(o)||0;for(const e of t){const{field:t,normalizationField:s,label:l}=e,r=l||{field:this._getFieldAlias(t,i),normField:s&&this._getFieldAlias(s,i)},a=He.clone();a.angle=c,n.infos.push({label:r,symbol:a}),u.add(a),c+=90}const d=N({focus:o,numClasses:s,infos:e.uniqueValueInfos??[]});r.unshift(d)}}else if(Pe(this.layer)||Ae(this.layer))e.uniqueValueInfos?.forEach((e=>{e.symbol&&n.infos.push({label:e.label||e.value,value:e.value,symbol:e.symbol})}));else{const{field:t,field2:l,field3:r,fieldDelimiter:a,valueExpression:u,defaultSymbol:c}=e,d=!(!t&&!u||!l&&!r),y=[];if(e.uniqueValueGroups?.forEach((e=>{const s={type:"symbol-table",title:e.heading,infos:[]};e.classes?.forEach((e=>{const{symbol:n,values:o}=e;if(n){const c=[],y=[];for(const e of o??[]){const{value:s,value2:n,value3:o}=e,h=[],m=[];(t||u)&&(h.push(s),m.push(this._getDomainName(t,s,i))),l&&(h.push(n),m.push(this._getDomainName(l,n,i))),r&&(h.push(o),m.push(this._getDomainName(r,o,i))),c.push(d?h.join(a||""):h[0]),y.push(m.join(" - "))}const h=c.join(", ");let m=e.label;if(!m){const e=y.filter(Boolean);m=e.length?e.join(", "):h}s.infos.push({label:m,value:h,symbol:n})}})),s.infos.length&&y.push(s)})),y.length){const t=y[0];1===y.length&&"title"in t&&!t.title?n.infos.push(...t.infos??[]):(c&&(y.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:c}]}),o=!0),n.infos.push(...y)),s||e.legendOptions?.title||e.valueExpressionTitle||(n.title=null)}}e.defaultSymbol&&!o&&(n.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),o=!0)}else if(be(e)){a=this._isUnclassedRenderer(e);(!a||!this._hasSizeRamp)&&(e.classBreakInfos.forEach((e=>{e.symbol&&n.infos.unshift({label:e.label||(a?null:e.minValue+" - "+e.maxValue),value:[e.minValue,e.maxValue],symbol:e.symbol})})),a&&(n.title=null),this._updateInfosForClassedSizeRenderer(e,n.infos)),e.defaultSymbol&&!a&&(n.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),o=!0)}else if(fe(e))if(Ae(this.layer)||Me(this.layer)){const t=await this._constructTileImageryStretchRendererElements(e);Ue(t)?r.push(t):n.infos=t}else{const t=this.layer;let s,l;if(e.statistics?.length){const t=e.statistics[0];Q(t)?(s=t.min,l=t.max):[s,l]=t}let i=[],a=t.serviceRasterInfo;if(t.rasterFunction)try{a=await t.generateRasterInfo(t.rasterFunction)}catch{}const o=L(a.pixelType);if(1===a.bandCount){const i=t.bandIds?.[0]||0;s=null!=s?s:a.statistics?a.statistics[i].min:o[0],l=null!=l?l:a.statistics?a.statistics[i].max:o[1],s||l?r.push(await this._getStretchLegendElements(e,{min:s,max:l})):this._getServerSideLegend()}else if(t.bandIds&&1===t.bandIds.length)s=null!=s?s:a.statistics?a.statistics[t.bandIds[0]].min:o[0],l=null!=l?l:a.statistics?a.statistics[t.bandIds[0]].max:o[1],s||l?r.push(await this._getStretchLegendElements(e,{min:s,max:l})):this._getServerSideLegend();else if(a.bandCount>=3){const{bandInfos:e}=a,{bandIds:s}=t;e.length>=a.bandCount?3===s?.length?(i=s.map((t=>e[t].name)),n.infos=this._createSymbolTableElementMultiBand(i)):"lerc"===t.format?(i=[0,1,2].map((t=>e[t].name)),n.infos=this._createSymbolTableElementMultiBand(i)):this._getServerSideLegend():"lerc"===t.format?(i=["band1","band2","band3"],n.infos=this._createSymbolTableElementMultiBand(i)):this._getServerSideLegend()}else this._getServerSideLegend()}else if(me(e))e.colormapInfos.forEach((e=>{n.infos.push({label:e.label,value:e.value,symbol:this._getAppliedCloneSymbol(de,e.color)})}));else if(ge(e)){let s=e.symbol;switch(t.geometryType){case"point":s="pointSymbol"in i?i.pointSymbol:null;break;case"polyline":s="lineSymbol"in i?i.lineSymbol:null;break;case"polygon":s="polygonSymbol"in i?i.polygonSymbol:null}const l=this._hasClusterSizeVariable&&this._getClusterSymbol()||!this._hasSizeRamp;e.symbol&&l&&n.infos.push({label:e.label,symbol:s})}else if(he(e)){e.outputUnit&&(this.title="("+e.toJSON().outputUnit+")"),n.title=e.attributeField;const t=e.getClassBreakInfos();t?.length?t.forEach((e=>{n.infos.push({label:e.minValue+" - "+e.maxValue,symbol:e.symbol})})):n.infos.push({label:e.attributeField,symbol:e.getDefaultSymbol()})}else pe(e)&&r.push(await this._getStretchLegendElements(e,{min:0,max:255}));const c=e.defaultSymbol;!c||o||ge(e)||a&&!this._hasColorRamp&&!this._hasSizeRamp&&!this._hasOpacityRamp||r.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:c}]}),n.infos.length&&r.unshift(n);const d=null==t.opacity?this.opacity:t.opacity,y=this._isTallSymbol("visualVariables"in e?e.visualVariables:null),h=Pe(this.layer)||Ae(this.layer),m=r.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).filter((e=>{if("cim"===e.symbol.type){const{minScale:t,maxScale:s}=e.symbol.data;if(t&&t<this.scale||s&&s>this.scale)return!1}return!0})).map((e=>this._getSymbolPreview(e,d,{isDefault:e.symbol===c,applyScaleDrivenSize:!u.has(e.symbol),symbolConfig:{isTall:y,isSquareFill:h},effectList:u.has(e.symbol)?null:this.effectList})));return e=null,await Promise.allSettled(m),r}_getServerSideLegend(){setTimeout((()=>this.buildLegendElementsForTools()),0)}_getAllInfos(e){const t=e?.infos;return t?t.reduce(((e,t)=>e.concat(this._getAllInfos(t))),[]):[e]}async _constructTileImageryStretchRendererElements(e){const t=this.layer,s=t.symbolizer.rasterInfo??t.raster.rasterInfo;let l,i;const r=e?.statistics?.length?e.statistics:s?.statistics;if(r){const e=r[0];Q(e)?(l=e.min,i=e.max):[l,i]=e}else{const e=L(s.pixelType);l=e[0],i=e[1]}if(t.hasStandardTime()&&(l=t.getStandardTimeValue(l),i=t.getStandardTimeValue(i)),1===s.bandCount||1===t.bandIds?.length)return this._getStretchLegendElements(e,{min:l,max:i});const n=(t?.bandIds?.length?t.bandIds:Array.from(Array(Math.min(s.bandCount,3)).keys())).map((e=>s.bandInfos[e].name));return n.length<3?n.push(n[1]):n.length>3&&n.splice(3),this._createSymbolTableElementMultiBand(n)}async _getStretchLegendElements(e,t){const s=e.colorRamp,l=M(s,t);return{type:"stretch-ramp",title:"",infos:l,preview:T(l.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})}}_getClusterSymbol(){const e=this.layer,t="featureReduction"in e&&e.featureReduction,s=t&&"symbol"in t&&t.renderer;return s&&!0!==s?.authoringInfo?.isAutoGenerated?null:t&&"symbol"in t?t.symbol:null}async _getSizeLegendElement(e,t,s,l){return{type:"size-ramp",title:this._hasClusterSizeVariable?this._getClusterTitle(t):e,infos:await q(s,t,await Z(s),this.scale,this.view,l,this._hasClusterSizeVariable?this._getClusterSymbol():null)}}_createSymbolTableElementMultiBand(e){const t=[],s=["red","green","blue"];return e.forEach(((e,l)=>{t.push({label:{colorName:s[l],bandName:e},src:K[l],opacity:this.opacity??1})})),t}_updateInfosForClassedSizeRenderer(e,t){const s=e.authoringInfo&&"class-breaks-size"===e.authoringInfo.type,l=e.classBreakInfos.some((e=>j(e.symbol)));if(s&&l){const s=H,l=$,i=e.classBreakInfos.length,r=(s-l)/(i>1?i-1:i);t.forEach(((e,t)=>{e.size=s-r*t}))}}_isTallSymbol(e){let t=!1,s=!1;if(e)for(let l=0;l<e.length&&(!t||!s);l++){const i=e[l];"size"===i.type&&("height"===i.axis&&(t=!0),"width-and-depth"===i.axis&&(s=!0))}return t&&s}async _getSymbolPreview(e,t,s){let l=!s?.isDefault&&null==e.size&&this._hasSizeRamp?m(F.size):e.size;if(this._scaleDrivenSizeVariable&&s?.applyScaleDrivenSize){const{getSize:t}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");l=t(this._scaleDrivenSizeVariable,null,{view:this.view.type,scale:this.scale,shape:"simple-marker"===e.symbol.type?e.symbol.style:null})}const i=!s?.isDefault&&this._hasSizeRamp||!(!this._scaleDrivenSizeVariable||!s?.applyScaleDrivenSize);return D(e.symbol,{size:l,opacity:t,scale:!1,symbolConfig:s?.symbolConfig,effectView:s?.effectList,style:"legend",cimOptions:{allowScalingUp:i,viewParams:this.isScaleDriven?{viewingMode:"2d"===this.view?.type?"map":this.view?.viewingMode,scale:this.view?.scale}:null},ariaLabel:e.label&&"string"!=typeof e.label?null:await qe("previewTemplateAriaLabel",e.label)}).then((t=>(e.preview=t,e))).catch((()=>(e.preview=null,e)))}_getClusterRenderer(e){this._hasClusterSizeVariable=!1;const t="renderer"in this.layer?this.layer.renderer:null,s=e.renderer?.clone()||t?.clone(),l=O(e,this.layerView,this.view);if(l&&null!=s&&"visualVariables"in s){const t=s.visualVariables?.some((e=>"size"===e.type&&"outline"!==e.target&&!oe.test(e.valueExpression)));if(!t){if("clusterMinSize"in e&&"clusterMaxSize"in e){const{clusterMinSize:t,clusterMaxSize:s}=e;l.legendOptions=new I({showLegend:t!==s})}const t=s.visualVariables||[];s.visualVariables=t.concat([l]),this._hasClusterSizeVariable=!0}}return s}async _loadRenderer(e){const t=[],s=e.clone(),l=await Z(s);if(be(s)||Se(s)){const e=(s.classBreakInfos||s.uniqueValueInfos).map((e=>this._fetchSymbol(e.symbol,l).then((t=>{e.symbol=t})).catch((()=>{e.symbol=null}))));Array.prototype.push.apply(t,e)}return t.push(this._fetchSymbol(s.symbol||s.defaultSymbol,s.defaultSymbol?null:l).then((e=>{this._applySymbolToRenderer(s,e,ge(s))})).catch((()=>{this._applySymbolToRenderer(s,null,ge(s))}))),await Promise.allSettled(t),s}_applySymbolToRenderer(e,t,s){s?e.symbol=t:e.defaultSymbol=t}async _fetchSymbol(e,t){if(!e)throw new Error;if("web-style"===e.type){const s=this._webStyleSymbolCache;try{const l=await("2d"===this.view.type?e.fetchCIMSymbol({cache:s}):e.fetchSymbol({cache:s}));return this._getAppliedCloneSymbol(l,t)}catch{throw o.getLogger(this).warn("Fetching web-style failed!"),new Error}}return this._getAppliedCloneSymbol(e,t)}_getAppliedCloneSymbol(e,s){if(!e||!s)return e;const l=e.clone(),i=s&&s.toRgba();return l.type.includes("3d")?this._applyColorTo3dSymbol(l,i):"cim"===l.type?R(l,s):l.color&&(l.color=new t(i||l.color)),l}_applyColorTo3dSymbol(e,s){s&&e.symbolLayers.forEach((e=>{e&&(e.material||(e.material={}),e.material.color=new t(s))}))}async _getVisualVariableLegendElements(e,t){if(!("visualVariables"in e)||!e.visualVariables||"vector-field"===e.type)return null;const s=e.visualVariables,l=[],i=[],n=[];for(const r of s)"color"===r.type?l.push(r):"size"===r.type?i.push(r):"opacity"===r.type&&n.push(r);const a=[...l,...i,...n];let o,u;if(0===l.length&&be(e)&&e.classBreakInfos&&1===e.classBreakInfos.length){const t=e.classBreakInfos[0];o=t&&t.symbol}if(0===l.length&&ge(e)&&(o=e.symbol),o)if(o.type.includes("3d")){const e=o.symbolLayers.at(0);"water"===e.type?null!=e.color&&(u=e.color):null!=e.material?.color&&(u=e.material.color)}else o.url||(u=o.color);const c=this.effectList;return(await Promise.all(a.map((async s=>{if(!s.legendOptions||!1!==s.legendOptions.showLegend){const l=ye(e)?s.field:this._getRampTitle(s,t);let i=null;const r=X(t,s,this.view.timeZone);if("color"===s.type){const e=await U(s,null,r)??[];i={type:"color-ramp",title:l,infos:e,preview:T(e.map((e=>e.color)),{effectList:c,ariaLabel:await qe("previewColorRampAriaLabel")})},this._hasColorRamp||(this._hasColorRamp=e.length>0)}else if("size"===s.type&&"outline"!==s.target)oe.test(s.valueExpression)?this._hasClusterSizeVariable||(this._scaleDrivenSizeVariable=s):(i=await this._getSizeLegendElement(l,s,e,r),this._hasSizeRamp||(this._hasSizeRamp=!(null==i.infos||!i.infos.length)));else if("opacity"===s.type){const e=await U(s,u,r)??[];i={type:"opacity-ramp",title:l,infos:e,preview:T(e.map((e=>e.color)),{effectList:c,ariaLabel:await qe("previewColorRampAriaLabel")})},this._hasOpacityRamp||(this._hasOpacityRamp=e.length>0)}return i&&i.infos?i:null}})))).filter(r)}_getDomainName(e,t,s){if(e&&"function"!=typeof e){const l="getField"in s&&s.getField?.(e),i=l&&"getFieldDomain"in s&&s.getFieldDomain?s.getFieldDomain(l.name):null;return"coded-value"===i?.type?i.getName(t):null}return null}_getClusterTitle(e){const t=this.layer,s=e.field;if("featureReduction"in t&&t.featureReduction&&"cluster"===t.featureReduction.type){const e=t.featureReduction,l="popupTemplate"in e&&e.popupTemplate,i=l&&l.fieldInfos;if(i)for(const t of i)if(t.fieldName===s)return"cluster_count"===s?t.label||{showCount:!0}:t.label}return{showCount:!0}}_getRampTitle(e,t){let s=e.field,l=e.normalizationField,i=!1,r=!1,n=!1,a=null;s="function"==typeof s?null:s,l="function"==typeof l?null:l;const o=e.legendOptions?.title;if(null!=o)a=o;else if(e.valueExpressionTitle)a=e.valueExpressionTitle;else{if("renderer"in t&&t.renderer&&"authoringInfo"in t.renderer&&t.renderer.authoringInfo?.visualVariables){const e=t.renderer.authoringInfo.visualVariables;for(let t=0;t<e.length;t++){const s=e[t];if("color"===s.type){if("ratio"===s.style){i=!0;break}if("percent"===s.style){r=!0;break}if("percent-of-total"===s.style){n=!0;break}}}}a={field:s&&this._getFieldAlias(s,t),normField:l&&this._getFieldAlias(l,t),ratio:i,ratioPercent:r,ratioPercentTotal:n}}return a}_getRendererTitle(e,t){const s=e;if(s.legendOptions?.title)return s.legendOptions.title;if(s.valueExpressionTitle)return s.valueExpressionTitle;let l=s.field,i=null,r=null;if(be(s)&&(i=s.normalizationField,r="percent-of-total"===s.normalizationType),l="function"==typeof l?null:l,i="function"==typeof i?null:i,Se(s)){const{field2:e,field3:i,fieldDelimiter:r}=s;let n=l&&this._getFieldAlias(l,t);return e&&(n=`<${n}>${r}<${this._getFieldAlias(e,t)}>`,i&&(n=`${n}${r}<${this._getFieldAlias(i,t)}>`)),n}let n=null;return(l||i)&&(n={field:l&&this._getFieldAlias(l,t),normField:i&&this._getFieldAlias(i,t),normByPct:r}),n}_getFieldAlias(e,t){const s="popupTemplate"in t?t.popupTemplate:null,l=s?.fieldInfos;let i=l?.find((t=>e===t.fieldName)),r=null;"getField"in t&&t.getField?r=t.getField(e):"fieldsIndex"in t&&t.fieldsIndex&&(r=t.fieldsIndex.get(e));let n=null;const a="featureReduction"in t&&t.featureReduction;a&&(i??="popupTemplate"in a?a.popupTemplate?.fieldInfos?.find((t=>e?.toLowerCase()===t.fieldName?.toLowerCase())):void 0,"fields"in a&&a.fields&&(n=a.fields.find((t=>t.name?.toLowerCase()===e?.toLowerCase()))));const o=i||r||n;let u=null;return o&&(u=i?.label||r?.alias||n?.alias||"name"in o&&o.name||"fieldName"in o&&o.fieldName||null),u}_isUnclassedRenderer(e){const t=e.visualVariables;let s=!1;return be(e)&&e.classBreakInfos&&1===e.classBreakInfos.length&&t&&(s=e.field?t.some((t=>!(!t||e.field!==t.field||(e.normalizationField||t.normalizationField)&&e.normalizationField!==t.normalizationField))):!!t.length),s}};e([p()],We.prototype,"children",void 0),e([p({readOnly:!0})],We.prototype,"effectList",null),e([p()],We.prototype,"layerView",void 0),e([p()],We.prototype,"layer",void 0),e([p()],We.prototype,"legendElements",void 0),e([p({readOnly:!0})],We.prototype,"opacity",null),e([p()],We.prototype,"parent",void 0),e([p({readOnly:!0,dependsOn:[]})],We.prototype,"ready",null),e([p()],We.prototype,"hideLayersNotInCurrentView",void 0),e([p()],We.prototype,"keepCacheOnDestroy",void 0),e([p()],We.prototype,"respectLayerVisibility",void 0),e([p({readOnly:!0})],We.prototype,"scale",null),e([p()],We.prototype,"sublayerIds",void 0),e([p({readOnly:!0})],We.prototype,"isScaleDriven",null),e([p()],We.prototype,"title",void 0),e([p({readOnly:!0,dependsOn:["ready"],value:0})],We.prototype,"version",null),e([p()],We.prototype,"view",void 0),We=e([g("geoscene.widgets.Legend.support.ActiveLayerInfo")],We);const Ge=We;export{Ge as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import"../../../intl.js";import{addTokenParameter as s}from"../../../kernel.js";import l from"../../../request.js";import"../../../symbols.js";import i from"../../../core/Accessor.js";import{isSome as r}from"../../../core/arrayUtils.js";import n from"../../../core/Collection.js";import{JSONMap as a}from"../../../core/jsonMap.js";import o from"../../../core/Logger.js";import{debounce as u}from"../../../core/promiseUtils.js";import{on as c,watch as d,whenOnce as y,initial as h}from"../../../core/reactiveUtils.js";import{px2pt as m}from"../../../core/screenUtils.js";import{addQueryParameters as f}from"../../../core/urlUtils.js";import{property as p}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import{subclass as g}from"../../../core/accessorSupport/decorators/subclass.js";import{OriginId as b}from"../../../core/accessorSupport/PropertyOrigin.js";import{EffectView as S}from"../../../layers/effects/EffectView.js";import{effectFunctionsFromJSON as _}from"../../../layers/effects/jsonUtils.js";import{ExportImageParameters as v}from"../../../layers/support/ExportImageParameters.js";import{isFeatureLayer as w}from"../../../layers/support/layerUtils.js";import{getPixelValueRange as L}from"../../../layers/support/rasterFormats/pixelRangeUtils.js";import{fromJSON as E}from"../../../renderers/support/jsonUtils.js";import{isSupportedRenderer3D as C}from"../../../renderers/support/rendererConversion.js";import I from"../../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{applyCIMSymbolColor as R}from"../../../symbols/support/cimSymbolUtils.js";import{SymbolSizeDefaults as F}from"../../../symbols/support/previewUtils.js";import{renderSymbol as V}from"../../../symbols/support/renderUtils.js";import{renderColorRampPreviewHTML as T,renderDotDensityPreviewHTML as z,renderPieChartPreviewHTML as x,renderPreviewHTML as D}from"../../../symbols/support/symbolUtils.js";import{isVolumetricSymbol as j}from"../../../symbols/support/utils.js";import{getEffectiveClusterSizeVariable as O}from"./clusterUtils.js";import{getColorFromPointCloudStops as P,getRampStopsForPointCloud as A,getStretchRampStops as M,getRampStops as U}from"./colorRampUtils.js";import{getHeatmapRampStops as k}from"./heatmapRampUtils.js";import{getRotationAngleForFocus as B,getRelationshipRampElement as N}from"./relationshipRampUtils.js";import{getRampStops as q,realWorldMaxSize as H,realWorldMinSize as $}from"./sizeRampUtils.js";import{specialCharsLessThan as W,specialCharsGreaterThan as G,getSymbolForFlowRenderer as J,isRasterBandStatistics as Q,getMedianColor as Z,rgbImgSource as K,getDateFormatOptions as X}from"./utils.js";import{formatNumberLabel as Y}from"../../smartMapping/support/utils.js";import ee from"../../../symbols/SimpleMarkerSymbol.js";import te from"../../../symbols/SimpleFillSymbol.js";import{fetchMessageBundle as se}from"../../../intl/messages.js";import{substitute as le}from"../../../intl/substitute.js";const ie="https://www.geosceneonline.cn/geoscene/sharing/tools/legend",re="geoscene.layers.ImageryLayer",ne="geoscene.layers.ImageryTileLayer",ae="geoscene.layers.WCSLayer",oe=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i,ue=new a({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryMultiPatch:"multipatch"}),ce=new ee({size:6,outline:{color:[128,128,128,.5],width:.5}}),de=new te({style:"solid"});function ye(e){return"flow"===e.type}function he(e){return"vector-field"===e.type}function me(e){return"raster-colormap"===e.type}function fe(e){return"raster-stretch"===e.type}function pe(e){return"raster-shaded-relief"===e.type}function ge(e){return"geoscene.renderers.SimpleRenderer"===e.declaredClass}function be(e){return"geoscene.renderers.ClassBreaksRenderer"===e.declaredClass}function Se(e){return"geoscene.renderers.UniqueValueRenderer"===e.declaredClass}function _e(e){return"geoscene.renderers.HeatmapRenderer"===e.declaredClass}function ve(e){return Le(e)||Ee(e)||Ce(e)||we(e)}function we(e){return"geoscene.renderers.PointCloudRGBRenderer"===e.declaredClass}function Le(e){return"geoscene.renderers.PointCloudClassBreaksRenderer"===e.declaredClass}function Ee(e){return"geoscene.renderers.PointCloudStretchRenderer"===e.declaredClass}function Ce(e){return"geoscene.renderers.PointCloudUniqueValueRenderer"===e.declaredClass}function Ie(e){return"geoscene.renderers.DotDensityRenderer"===e.declaredClass}function Re(e){return"geoscene.renderers.PieChartRenderer"===e.declaredClass}function Fe(e,t){return ge(e)||be(e)||Se(e)||_e(e)||Ie(e)||Re(e)?"2d"===t.type||C(e):fe(e)||me(e)||pe(e)||Le(e)||Ee(e)||Ce(e)||he(e)||ye(e)}function Ve(e){return"geoscene.layers.BuildingSceneLayer"===e.declaredClass}function Te(e){return"geoscene.layers.SubtypeGroupLayer"===e.declaredClass}function ze(e){return"geoscene.layers.VoxelLayer"===e.declaredClass}function xe(e){return"geoscene.layers.WMSLayer"===e.declaredClass}function De(e){return"geoscene.layers.WMTSLayer"===e.declaredClass}function je(e){return"geoscene.layers.MapImageLayer"===e.declaredClass}function Oe(e){return"geoscene.layers.TileLayer"===e.declaredClass}function Pe(e){return e.declaredClass===re}function Ae(e){return e.declaredClass===ne}function Me(e){return e.declaredClass===ae}function Ue(e){return"stretch-ramp"===e.type}function ke(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type}function Be(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type&&"above-and-below"===t?.univariateTheme}function Ne(e){return"sublayers"in e}async function qe(e,t){const s=await se("geoscene/widgets/Legend/t9n/Legend");return"previewTemplateAriaLabel"!==e||t||(e="previewAriaLabel"),le(s[e],{label:t})}const He=new ee({style:"path",path:"M10,5 L5,0 0,5 M5,0 L5,15",size:15,outline:{width:1,color:[85,85,85,1]}});let $e={},We=class extends i{constructor(e){super(e),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._webStyleSymbolCache=new Map,this._dotDensityUrlCache=new Map,this._scaleDrivenSizeVariable=null,this._hasClusterSizeVariable=!1,this.children=new n,this.layerView=null,this.layer=null,this.legendElements=[],this.parent=null,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.respectLayerVisibility=!0,this.sublayerIds=[],this.title=null,this.view=null}initialize(){const e=()=>this.notifyChange("ready");this.addHandles([c((()=>this.children),"change",(t=>{const{added:s,removed:l}=t;s.forEach((t=>{const s=`activeLayerInfo-ready-watcher-${t.layer.uid}`;this.addHandles(d((()=>t.ready),e,h),s)})),l.forEach((e=>this.removeHandles(e.layer.uid))),e()}))]),this.keepCacheOnDestroy||($e={})}destroy(){this._webStyleSymbolCache=null,this._dotDensityUrlCache=null,this._scaleDrivenSizeVariable=null,this.keepCacheOnDestroy||($e=null)}get effectList(){const e=this.layer;let t=null;return"effect"in e&&e.effect&&(t=new S,t.effect=e.effect,t.endTransitions(),t.scale=this.scale),t}get opacity(){const e=this.layer.opacity,t=this.parent?.opacity,s=this.layer.parent,l=s&&"uid"in s?this._getParentLayerOpacity(s):null;return null!=t?t*e:null!=l?l*e:e}get ready(){return null===this.layer||(this.children.length>0?this._isGroupActive():this.legendElements.length>0)}get scale(){return this.view?.scale??0}get isScaleDriven(){const e=this.layer;if(null===e)return!1;if("effect"in e&&e.effect&&Array.isArray(e.effect))return!0;if("featureReduction"in e&&e.featureReduction){if("cluster"===e.featureReduction.type)return!0;if("binning"===e.featureReduction.type&&"renderer"in e.featureReduction&&e.featureReduction.renderer)return this._isRendererScaleDriven(e.featureReduction.renderer)}return"renderer"in e&&e.renderer?this._isRendererScaleDriven(e.renderer):this._isLayerScaleDriven(this.layer)}get version(){return this._get("version")+1}async buildLegendElementsForFeatureCollections(e){if(!(!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView()))return this.legendElements=[],void this.notifyChange("ready");const t=Array.from(e,(e=>{if(w(e))return this._getRendererLegendElements(e.renderer,{title:e.title});if(e.featureSet?.features.length){const t=e.layerDefinition,s=t?.drawingInfo,l=s&&E(s.renderer),i=ue.read(t.geometryType);return l?this._getRendererLegendElements(l,{title:e.name,geometryType:i}):(o.getLogger(this).warn("drawingInfo not available!"),null)}return null}));try{const e=[],s=await Promise.allSettled(t);for(const t of s)if("fulfilled"===t.status)for(const s of t.value??[])e.push(s);this.legendElements=e,this.notifyChange("ready")}catch(s){o.getLogger(this).warn("error while building legend for layer!",s)}}async buildLegendElementsForRenderer(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getRendererLegendElements(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForFeatureReduction(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getLegendElementsForFeatureReduction(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForTools(){const e=this.layer;if(ze(e))this._constructLegendElementsForVoxelLayer();else if(De(e))this._constructLegendElementsForWMTSlayer();else if(xe(e))await this._constructLegendElementsForWMSSublayers();else if(Ve(e))await this._constructLegendElementsForBuildingSceneLayer();else if(je(e)||Oe(e)||Te(e))await this._constructLegendElementsForSublayers();else{this.removeHandles("imageryLayers-watcher");let t="default";if(Pe(e)){const s=e;t=(s?.rasterFunction?.functionName||"default")+"_"+(e.bandIds?.length?e.bandIds.join(""):"###")}if(Ae(e))return;await this._getLegendLayers(`${e.uid}-${t}`).then((async t=>{this.legendElements=[],this.notifyChange("ready");const s=t.map((async t=>{if(Pe(e)){const t=d((()=>["renderingRule"in e&&e.rasterFunction,e.bandIds]),(()=>u((async()=>{$e.default=null,e.renderer?await this.buildLegendElementsForRenderer(e.renderer):await this.buildLegendElementsForTools()}))()));this.addHandles(t,"imageryLayers-watcher")}const s=this._generateSymbolTableElementForLegendLayer(t);s&&s.infos.length&&(Pe(e)&&(s.title=e.title),this.legendElements.push(s)),this.notifyChange("ready")}));await Promise.allSettled(s)})).catch((e=>{o.getLogger(this).warn("Request to server for legend has failed!",e)}))}}async _isLayerInCurrentView(){const e=this.layer,t=this.layerView,s=t&&"createQuery"in t&&"queryFeatureCount"in t;if(!s&&!(t&&"createQuery"in e&&"queryFeatureCount"in e))return!0;await y((()=>!t.updating));const l=s?"createQuery"in t&&t.createQuery():"createQuery"in e&&e.createQuery();if(!l)return!0;l.geometry=this.view.extent;return 0!==(s?"queryFeatureCount"in t&&await t.queryFeatureCount(l):"queryFeatureCount"in e&&await e.queryFeatureCount(l))}_getParentLayerOpacity(e){let t=1;const s=e.parent;return s&&"uid"in s&&(t=this._getParentLayerOpacity(s)),e.opacity*t}_isGroupActive(){return this.children.some((e=>e.ready))}_isRendererScaleDriven(e){if("dot-density"===e.type)return!0;const t="valueExpression"in e?e.valueExpression:null;if(oe.test(t))return!0;const s="visualVariables"in e?e.visualVariables:null;return!!s?.some((e=>this._isScaleDrivenSizeVariable(e)))||this._hasScaleDrivenSymbols(e)}_hasScaleDrivenSymbols(e){switch(e.type){case"simple":return this._isScaleDrivenSymbol(e.symbol);case"class-breaks":return this._isScaleDrivenSymbol(e.defaultSymbol)||e.classBreakInfos.some((e=>this._isScaleDrivenSymbol(e.symbol)));case"unique-value":return this._isScaleDrivenSymbol(e.defaultSymbol)||!!e.uniqueValueInfos?.some((e=>this._isScaleDrivenSymbol(e.symbol)))}return!1}_isScaleDrivenSymbol(e){if("cim"===e?.type){const{primitiveOverrides:t,minScale:s,maxScale:l}=e.data,i=t?.some((e=>/\$view\.scale/.test(e.valueExpressionInfo?.expression||"")))??!1;return null!=s||null!=l||i}return!1}_isScaleDrivenSizeVariable(e){if(e&&"size"!==e.type)return!1;const t=e,s=t.minSize,l=t.maxSize;return!("object"!=typeof s||!s||!this._isScaleDrivenSizeVariable(s))||(!("object"!=typeof l||!l||!this._isScaleDrivenSizeVariable(l))||(!!t.expression||oe.test(t.valueExpression)))}_isLayerScaleDriven(e){if("minScale"in e&&e.minScale>0||"maxScale"in e&&e.maxScale>0)return!0;if("sublayers"in e&&e.sublayers)return e.sublayers.some((e=>this._isLayerScaleDriven(e)));const t=e.parent;if(!1===e.loaded&&t&&je(t)&&"source"in e&&e.source&&"map-layer"===e.source.type)for(const s of t.sourceJSON.layers??[])if(s.id===e.source.mapLayerId&&(s.minScale>0||s.maxScale>0))return!0;return!1}async _constructLegendElementsForVoxelLayer(){this.legendElements=[],this.removeHandles("voxel-style-watcher"),this.removeHandles("voxel-current-variable");const e=this.layer;this.addHandles(d((()=>e.currentVariableId),(()=>this._constructLegendElementsForVoxelLayer())),"voxel-current-variable"),this.addHandles(d((()=>e.getVariableStyles()),(()=>this._constructLegendElementsForVoxelLayer())),"voxel-style-watcher");const t=e.getVariableStyle(null),s=[];if(t)if(t.uniqueValues?.length){const e=[];t.uniqueValues.forEach((t=>{t.enabled&&e.push({label:t.label||`${t.value}`,value:t.value,symbol:new te({color:t.color,outline:null})})})),e.length&&s.push({type:"symbol-table",title:t.label,infos:e})}else if(t.transferFunction){const{colorStops:e,stretchRange:l}=t.transferFunction,i=e.toArray().reverse(),r=l.map(((e,t)=>`${0===t?W:G} ${Y(e)}`)).reverse(),n=i.map((e=>({color:e.color,value:null,label:null})));n[0].label=r[0],n[n.length-1].label=r[1],s.push({type:"color-ramp",title:t.label,infos:n,preview:T(i.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})})}const l=e.opacity,i=s.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).map((e=>this._getSymbolPreview(e,l)));await Promise.allSettled(i),this.legendElements=s,this.notifyChange("ready")}_constructLegendElementsForWMTSlayer(){this.legendElements=[],this.removeHandles("wmts-activeLayer-watcher");const e=this.layer.activeLayer;this.addHandles(d((()=>{const{layer:e}=this;return e&&"activeLayer"in e&&e.activeLayer}),(()=>this._constructLegendElementsForWMTSlayer())),"wmts-activeLayer-watcher");const t=e.styleId?e.styles?.find((({id:t})=>t===e.styleId))?.legendUrl:void 0;t&&(this.legendElements=[{type:"symbol-table",title:e.title,infos:[{src:t,opacity:this.opacity}]}]),this.notifyChange("ready")}async _constructLegendElementsForWMSSublayers(){this.legendElements=[],this.removeHandles("wms-sublayers-watcher");const e=this.layer;let t=null;(e.customParameters||e.customLayerParameters)&&(t={...e.customParameters,...e.customLayerParameters}),this.addHandles(d((()=>{const{layer:e}=this;return e&&"sublayers"in e&&e.sublayers}),(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher"),this.legendElements=await this._generateLegendElementsForWMSSublayers(e.sublayers,t),this.notifyChange("ready")}async _generateLegendElementsForWMSSublayers(e,t){const s=this.layer,l=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher");const i=this.sublayerIds?.map((e=>s.findSublayerById(e)))?.filter(r)??[],n=i.length?i:e.toArray();for(const r of n){const e=d((()=>[r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForWMSSublayers()));if(this.addHandles(e,"wms-sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled){const e=await this._generateSymbolTableElementForWMSSublayer(r,t);e?.infos.length&&l.unshift(e)}}return l}async _generateSymbolTableElementForWMSSublayer(e,t){if(!e.legendUrl&&e.sublayers){const s=(await this._generateLegendElementsForWMSSublayers(e.sublayers,t)).filter((e=>e));return{type:"symbol-table",title:e.title,infos:s}}return this._generateSymbolTableElementForLegendUrl(e,t)}async _generateSymbolTableElementForLegendUrl(e,t){let s=e.legendUrl;if(!s)return;const i={type:"symbol-table",title:e.title||e.name||String(e.id??""),infos:[]};t&&(s=f(s,t));let r=null;const n=e.layer?.opacity;try{r=(await l(s,{responseType:"image"})).data,r&&(r.style.opacity=n)}catch{}return i.infos.push({src:s,preview:r,opacity:n}),i}_getLegendLayers(e,t){const s=$e&&$e[e];return s?Promise.resolve(s):this._legendRequest(t).then((t=>{const s=t.layers;return $e[e]=s,s}))}_legendRequest(e){const t=this.layer;let s={f:"json",dynamicLayers:e};if(Pe(t)){const e=t.exportImageServiceParameters.rasterFunction;if(e&&(s.renderingRule=JSON.stringify(e.functionDefinition?.toJSON()||e.toJSON())),t.bandIds&&(s.bandIds=t.bandIds.join()),t.raster||t.viewId||t.customParameters){const{raster:e,viewId:l,customParameters:i}=t;s={raster:e,viewId:l,...s,...i}}}let i=t.url.replace(/(\/)+$/,"");if("version"in t&&+t.version>=10.01){const e=i.indexOf("?");e>-1?i=i.substring(0,e)+"/legend"+i.substring(e):i+="/legend"}else{const e=i.toLowerCase().indexOf("/rest/"),t=i.substring(0,e)+i.substring(e+5,i.length);i=ie+"?soapUrl="+encodeURI(t)+"&returnbytes=true"}return l(i,{query:s}).then((e=>e.data))}async _constructLegendElementsForBuildingSceneLayer(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForBuildingSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}async _generateLegendElementsForBuildingSublayers(e,t){let s=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");const l=e.toArray();for(const i of l){const e=d((()=>["renderer"in i&&i.renderer,i.opacity,i.title,i.visible]),(()=>this._constructLegendElementsForBuildingSceneLayer()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||i.visible){const e=null!=i?.opacity?i.opacity:null,l=null!=e?e*t:t;if("building-group"===i.type){const e={type:"symbol-table",title:i.title,infos:[]},t=await this._generateLegendElementsForBuildingSublayers(i.sublayers,l);e.infos.push(...t),s=[e,...s]}else if(i.renderer){s=[...await this._getRendererLegendElements(i.renderer,{title:i.title,opacity:l,sublayer:i}),...s]}}}return s.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _constructLegendElementsForSublayers(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;if(je(e)||Oe(e)||Te(e)){this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForSublayers)),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}}async _generateLegendElementsForSublayers(e,t,s){const l=this.layer;let i=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForSublayers())),"sublayers-watcher");let n=e.toArray();!s&&this.sublayerIds&&this.sublayerIds.length&&(n=Te(l)?this.sublayerIds.map((e=>l.findSublayerForSubtypeCode(e))).filter(r):this.sublayerIds.map((e=>l.findSublayerById(e))).filter(r));for(const r of n){const e=d((()=>[r.renderer,r.opacity,r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForSublayers()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled&&this._isSublayerInScale(r)){const e=null!=r?.opacity?r.opacity:null,l=null!=e?e*t:t,n=!Ne(r)||r.originIdOf("renderer")>b.SERVICE&&!r.sublayers;if(r.renderer&&n){await r.load();i=[...await this._getRendererLegendElements(r.renderer,{title:r.title,opacity:l,sublayer:r}),...i]}else if(Ne(r)){const e=await this._generateSymbolTableElementForSublayer(r,l,s);e&&i.unshift(e)}}}return i.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _generateSymbolTableElementForSublayer(e,t,s){if(!s){s=new Map;const t=this.layer,l=e.source;let i=null;if(!(!l||"map-layer"===l.type&&l.mapLayerId===e.id&&(!l.gdbVersion||l.gdbVersion===("gdbVersion"in t&&t.gdbVersion)))||e.originIdOf("renderer")>b.SERVICE||e.originIdOf("labelingInfo")>b.SERVICE||e.originIdOf("labelsVisible")>b.SERVICE){const e=new v({layer:this.layer});i=e.hasDynamicLayers?e.dynamicLayers:null,e.destroy()}const r=i||`${t.uid}-default`;(await this._getLegendLayers(r,i)).forEach((e=>s.set(e.layerId,e)))}const l=s.get(e.id);if((!l||l?.subLayerIds&&l.defaultVisibility)&&e.sublayers){const l=await this._generateLegendElementsForSublayers(e.sublayers,t,s);return{type:"symbol-table",title:e.title,infos:l}}return this._generateSymbolTableElementForLegendLayer(l,e,t)}_generateSymbolTableElementForLegendLayer(e,t,s){if(!e?.legend||this.respectLayerVisibility&&!this._isLegendLayerInScale(e,t))return null;const l=t?.renderer;let i=t?.title||e.layerName;if(l&&(!t||t?.originIdOf("renderer")>b.SERVICE)){const e=t?.title||this._getRendererTitle(l,t);e&&(i&&"string"!=typeof e&&"title"in e&&(e.title=i),i=e)}const r={type:"symbol-table",title:i,legendType:e.legendType||null,infos:[]},n=t?this._sanitizeLegendForSublayer(e.legend.slice(),t):e.legend;return e.legendGroups&&e.legendGroups.length>0?e.legendGroups.forEach((t=>{const l={type:"symbol-table",title:t.heading,legendType:e.legendType||null,infos:this._generateSymbolTableElementInfosForLegendLayer(n.filter((e=>e.groupId===t.id)),e.layerId,s)};l.infos?.length>0&&r.infos.push(l)})):r.infos=this._generateSymbolTableElementInfosForLegendLayer(n,e.layerId,s),r.infos.length>0?r:null}_generateSymbolTableElementInfosForLegendLayer(e,t,l){return e.map((e=>{let i=e.url;if(e.imageData&&e.imageData.length>0)i=`data:image/png;base64,${e.imageData}`;else{if(0===i.indexOf("http"))return null;i=s(`${this.layer.url}/${t}/images/${i}`)}return{label:e.label,src:i,opacity:l??this.opacity,width:e.width,height:e.height}})).filter(r)}_isSublayerInScale(e){const t=e.minScale||0,s=e.maxScale||0;return!(t>0&&t<this.scale||s>this.scale)}_isLegendLayerInScale(e,t){const s=t||this.layer;let l=null,i=null,r=!0;return!s.minScale&&0!==s.minScale||!s.maxScale&&0!==s.maxScale?(0===e.minScale&&s.tileInfo&&(l=s.tileInfo.lods[0].scale),0===e.maxScale&&s.tileInfo&&(i=s.tileInfo.lods[s.tileInfo.lods.length-1].scale)):(l=Math.min(s.minScale,e.minScale)||s.minScale||e.minScale,i=Math.max(s.maxScale,e.maxScale)),(l>0&&l<this.scale||i>this.scale)&&(r=!1),r}_sanitizeLegendForSublayer(e,t){if("version"in this.layer&&+this.layer.version<10.1||0===e.length)return e;const s=t.renderer,l=e.some((e=>e.values));let i=0,r=null;return l&&e.some(((e,t)=>(e.values||(i=t,r=e,r.label||(r.label="others")),null!=r))),s?"unique-value"===s.type?r&&(e.splice(i,1),e.push(r)):"class-breaks"===s.type&&(r&&e.splice(i,1),e.reverse(),r&&e.push(r)):r&&(e.splice(i,1),e.push(r)),e}async _getRendererLegendElements(e,t={}){if(!Fe(e,this.view))return o.getLogger(this).warn(`Renderer of type '${e.type}' not supported!`),[];if(ve(e))return this._constructPointCloudRendererLegendElements(e,t);if(Ie(e))return this._constructDotDensityRendererLegendElements(e);const s=await this._loadRenderer(e);return Re(s)?this._constructPieChartRendererLegendElements(s):this._constructRendererLegendElements(s,t)}async _getLegendElementsForFeatureReduction(e){let t=null;return"binning"===e.type?t=e.renderer:"cluster"===e.type&&(t=this._getClusterRenderer(e)),t?this._getRendererLegendElements(t):[]}_getPointCloudRendererTitle(e){return(e.legendOptions?.title||e.field)??""}async _constructPointCloudRendererLegendElements(e,t={}){const s=t.title,l=[];let i=null,r=null;if(Le(e))i={type:"symbol-table",title:s||this._getPointCloudRendererTitle(e),infos:[]},e.colorClassBreakInfos.forEach((e=>{i.infos.unshift({label:e.label||e.minValue+" - "+e.maxValue,value:[e.minValue,e.maxValue],symbol:this._getAppliedCloneSymbol(ce,e.color)})}));else if(Ee(e)){const t=e.stops;let l=null;if(t?.length&&(1===t.length&&(l=t[0].color),!l)){const e=t[0].value,s=t[t.length-1].value;if(null!=e&&null!=s){l=P(e+(s-e)/2,t)}}i={type:"symbol-table",title:null,infos:[{label:null,value:null,symbol:this._getAppliedCloneSymbol(ce,l||ce.color)}]};const n=A(e.stops??[])??[];r={type:"color-ramp",title:s||this._getPointCloudRendererTitle(e),infos:n,preview:T(n.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})}}else Ce(e)&&(i={type:"symbol-table",title:s||this._getPointCloudRendererTitle(e),infos:[]},e.colorUniqueValueInfos?.forEach((e=>{i.infos.push({label:e.label||e.values.join(", "),value:e.values.join(", "),symbol:this._getAppliedCloneSymbol(ce,e.color)})})));i&&i.infos.length&&l.push(i),r&&r.infos.length&&l.push(r);const n=l.reduce(((e,t)=>[...e,...t.infos??[]]),[]).filter((e=>!!e.symbol)).map((t=>this._getSymbolPreview(t,this.opacity,{symbolConfig:{applyColorModulation:!!e.colorModulation}})));return await Promise.allSettled(n),l}async _getElementInfoForDotDensity(e,t){const{color:s,label:l,valueExpressionTitle:i}=t,{backgroundColor:r,outline:n,dotSize:a}=e,o=this.effectList,u=o?.effects.map((e=>e.toJSON())),c=_(u),d=await qe("previewTemplateAriaLabel",l||i),y=a+"-"+s+"-"+r+"-"+(n&&JSON.stringify(n.toJSON()))+"-"+c,h=this._dotDensityUrlCache,m=h.has(y)?h.get(y):z(e,s,{ariaLabel:d});h.set(y,m);const f={shape:{type:"image",x:0,y:0,width:m.width,height:m.height,src:m.src},fill:null,stroke:null,offset:[0,0]},p=V([[f]],[m.width,m.height],{effectView:this.effectList,ariaLabel:d});return{opacity:1,src:m.src,preview:p,width:m.width,height:m.height}}async _constructDotDensityRendererLegendElements(e){const t=e.calculateDotValue(this.view.scale),s=e.legendOptions?.unit,l={type:"symbol-table",title:{value:t&&Math.round(t),unit:s||""},infos:[]};for(const i of e.attributes){const t=await this._getElementInfoForDotDensity(e,i);t.label=i.label||i.valueExpressionTitle||i.field,l.infos.push(t)}return[l]}async _constructPieChartRendererLegendElements(e){const t=this.layer.opacity,s=[];let l=null;const i=e.outline;e.attributes.forEach((e=>{const t=new ee({color:e.color,outline:i}),l=e.label||e.valueExpressionTitle||e.field;s.push({label:l,symbol:t})}));const r=s.length?[...s]:[];if(e.othersCategory?.color&&0!==e.othersCategory?.threshold){const t=new ee({color:e.othersCategory.color,outline:i});l=e.othersCategory.label||"Other",s.push({label:l,symbol:t})}if(e.defaultColor?.a){const t=new ee({color:e.defaultColor,outline:i});s.push({label:e.defaultLabel,symbol:t})}const n=await this._getVisualVariableLegendElements(e,this.layer)||[];if(s.length){n.unshift({type:"symbol-table",title:null,infos:s});const t=r.filter((e=>e.label!==l)).map((e=>e.symbol.color)).filter(Boolean),a=x(t,{holePercentage:e.holePercentage,backgroundColor:e.backgroundFillSymbol?.color,effectList:this.effectList,outline:i,ariaLabel:await qe("previewPieChartAriaLabel")});n.unshift({type:"pie-chart-ramp",title:this._getRendererTitle(e,this.layer),infos:s,preview:a})}const a=n.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol&&!e?.preview)).map((e=>this._getSymbolPreview(e,t,{effectList:this.effectList})));return await Promise.allSettled(a),n}async _constructRendererLegendElements(e,t={}){const{title:s,sublayer:l}=t,i=l||this.layer;this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._scaleDrivenSizeVariable=null;const r=await this._getVisualVariableLegendElements(e,i)||[],n={type:"symbol-table",title:s||this._getRendererTitle(e,i),infos:[]};let a=null,o=!1;const u=new Set;if(ye(e)&&!this._hasSizeRamp){const t=await J(e);n.infos.push({label:null,symbol:t})}else if(ke(e)){let t=s;const l=Be(e)?"univariate-above-and-below-ramp":"univariate-color-size-ramp",i=r.findIndex((e=>"color-ramp"===e.type)),n=-1!==i?r.splice(i,1)[0]:null,a=r.findIndex((e=>"size-ramp"===e.type)),o=-1!==a?r.splice(a,1)[0]:null,u=[];n&&(t=n.title,u.push(n)),o&&(t=o.title,u.push(o)),u.length>0&&r.push({type:l,title:t,infos:u})}else if(_e(e)){const t=k(e);r.push({type:"heatmap-ramp",title:s||this._getRendererTitle(e,i),infos:t,preview:T(t.map((e=>e.color)),{effectList:this.effectList,ariaLabel:await qe("previewColorRampAriaLabel")})})}else if(Se(e)){const t=e&&e.authoringInfo;if(t&&"relationship"===t.type){const{numClasses:s,field1:l,field2:a}=t,o=t.focus;if(s&&l&&a){const t=[l,a];let c=B(o)||0;for(const e of t){const{field:t,normalizationField:s,label:l}=e,r=l||{field:this._getFieldAlias(t,i),normField:s&&this._getFieldAlias(s,i)},a=He.clone();a.angle=c,n.infos.push({label:r,symbol:a}),u.add(a),c+=90}const d=N({focus:o,numClasses:s,infos:e.uniqueValueInfos??[]});r.unshift(d)}}else if(Pe(this.layer)||Ae(this.layer))e.uniqueValueInfos?.forEach((e=>{e.symbol&&n.infos.push({label:e.label||e.value,value:e.value,symbol:e.symbol})}));else{const{field:t,field2:l,field3:r,fieldDelimiter:a,valueExpression:u,defaultSymbol:c}=e,d=!(!t&&!u||!l&&!r),y=[];if(e.uniqueValueGroups?.forEach((e=>{const s={type:"symbol-table",title:e.heading,infos:[]};e.classes?.forEach((e=>{const{symbol:n,values:o}=e;if(n){const c=[],y=[];for(const e of o??[]){const{value:s,value2:n,value3:o}=e,h=[],m=[];(t||u)&&(h.push(s),m.push(this._getDomainName(t,s,i))),l&&(h.push(n),m.push(this._getDomainName(l,n,i))),r&&(h.push(o),m.push(this._getDomainName(r,o,i))),c.push(d?h.join(a||""):h[0]),y.push(m.join(" - "))}const h=c.join(", ");let m=e.label;if(!m){const e=y.filter(Boolean);m=e.length?e.join(", "):h}s.infos.push({label:m,value:h,symbol:n})}})),s.infos.length&&y.push(s)})),y.length){const t=y[0];1===y.length&&"title"in t&&!t.title?n.infos.push(...t.infos??[]):(c&&(y.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:c}]}),o=!0),n.infos.push(...y)),s||e.legendOptions?.title||e.valueExpressionTitle||(n.title=null)}}e.defaultSymbol&&!o&&(n.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),o=!0)}else if(be(e)){a=this._isUnclassedRenderer(e);(!a||!this._hasSizeRamp)&&(e.classBreakInfos.forEach((e=>{e.symbol&&n.infos.unshift({label:e.label||(a?null:e.minValue+" - "+e.maxValue),value:[e.minValue,e.maxValue],symbol:e.symbol})})),a&&(n.title=null),this._updateInfosForClassedSizeRenderer(e,n.infos)),e.defaultSymbol&&!a&&(n.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),o=!0)}else if(fe(e))if(Ae(this.layer)||Me(this.layer)){const t=await this._constructTileImageryStretchRendererElements(e);Ue(t)?r.push(t):n.infos=t}else{const t=this.layer;let s,l;if(e.statistics?.length){const t=e.statistics[0];Q(t)?(s=t.min,l=t.max):[s,l]=t}let i=[],a=t.serviceRasterInfo;if(t.rasterFunction)try{a=await t.generateRasterInfo(t.rasterFunction)}catch{}const o=L(a.pixelType);if(1===a.bandCount){const i=t.bandIds?.[0]||0;s=null!=s?s:a.statistics?a.statistics[i].min:o[0],l=null!=l?l:a.statistics?a.statistics[i].max:o[1],s||l?r.push(await this._getStretchLegendElements(e,{min:s,max:l})):this._getServerSideLegend()}else if(t.bandIds&&1===t.bandIds.length)s=null!=s?s:a.statistics?a.statistics[t.bandIds[0]].min:o[0],l=null!=l?l:a.statistics?a.statistics[t.bandIds[0]].max:o[1],s||l?r.push(await this._getStretchLegendElements(e,{min:s,max:l})):this._getServerSideLegend();else if(a.bandCount>=3){const{bandInfos:e}=a,{bandIds:s}=t;e.length>=a.bandCount?3===s?.length?(i=s.map((t=>e[t].name)),n.infos=this._createSymbolTableElementMultiBand(i)):"lerc"===t.format?(i=[0,1,2].map((t=>e[t].name)),n.infos=this._createSymbolTableElementMultiBand(i)):this._getServerSideLegend():"lerc"===t.format?(i=["band1","band2","band3"],n.infos=this._createSymbolTableElementMultiBand(i)):this._getServerSideLegend()}else this._getServerSideLegend()}else if(me(e))e.colormapInfos.forEach((e=>{n.infos.push({label:e.label,value:e.value,symbol:this._getAppliedCloneSymbol(de,e.color)})}));else if(ge(e)){let s=e.symbol;switch(t.geometryType){case"point":s="pointSymbol"in i?i.pointSymbol:null;break;case"polyline":s="lineSymbol"in i?i.lineSymbol:null;break;case"polygon":s="polygonSymbol"in i?i.polygonSymbol:null}const l=this._hasClusterSizeVariable&&this._getClusterSymbol()||!this._hasSizeRamp;e.symbol&&l&&n.infos.push({label:e.label,symbol:s})}else if(he(e)){e.outputUnit&&(this.title="("+e.toJSON().outputUnit+")"),n.title=e.attributeField;const t=e.getClassBreakInfos();t?.length?t.forEach((e=>{n.infos.push({label:e.minValue+" - "+e.maxValue,symbol:e.symbol})})):n.infos.push({label:e.attributeField,symbol:e.getDefaultSymbol()})}else pe(e)&&r.push(await this._getStretchLegendElements(e,{min:0,max:255}));const c=e.defaultSymbol;!c||o||ge(e)||a&&!this._hasColorRamp&&!this._hasSizeRamp&&!this._hasOpacityRamp||r.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:c}]}),n.infos.length&&r.unshift(n);const d=null==t.opacity?this.opacity:t.opacity,y=this._isTallSymbol("visualVariables"in e?e.visualVariables:null),h=Pe(this.layer)||Ae(this.layer),m=r.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).filter((e=>{if("cim"===e.symbol.type){const{minScale:t,maxScale:s}=e.symbol.data;if(t&&t<this.scale||s&&s>this.scale)return!1}return!0})).map((e=>this._getSymbolPreview(e,d,{isDefault:e.symbol===c,applyScaleDrivenSize:!u.has(e.symbol),symbolConfig:{isTall:y,isSquareFill:h},effectList:u.has(e.symbol)?null:this.effectList})));return e=null,await Promise.allSettled(m),r}_getServerSideLegend(){setTimeout((()=>this.buildLegendElementsForTools()),0)}_getAllInfos(e){const t=e?.infos;return t?t.reduce(((e,t)=>e.concat(this._getAllInfos(t))),[]):[e]}async _constructTileImageryStretchRendererElements(e){const t=this.layer,s=t.symbolizer.rasterInfo??t.raster.rasterInfo;let l,i;const r=e?.statistics?.length?e.statistics:s?.statistics;if(r){const e=r[0];Q(e)?(l=e.min,i=e.max):[l,i]=e}else{const e=L(s.pixelType);l=e[0],i=e[1]}if(t.hasStandardTime()&&(l=t.getStandardTimeValue(l),i=t.getStandardTimeValue(i)),1===s.bandCount||1===t.bandIds?.length)return this._getStretchLegendElements(e,{min:l,max:i});const n=(t?.bandIds?.length?t.bandIds:Array.from(Array(Math.min(s.bandCount,3)).keys())).map((e=>s.bandInfos[e].name));return n.length<3?n.push(n[1]):n.length>3&&n.splice(3),this._createSymbolTableElementMultiBand(n)}async _getStretchLegendElements(e,t){const s=e.colorRamp,l=M(s,t);return{type:"stretch-ramp",title:"",infos:l,preview:T(l.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})}}_getClusterSymbol(){const e=this.layer,t="featureReduction"in e&&e.featureReduction,s=t&&"symbol"in t&&t.renderer;return s&&!0!==s?.authoringInfo?.isAutoGenerated?null:t&&"symbol"in t?t.symbol:null}async _getSizeLegendElement(e,t,s,l){return{type:"size-ramp",title:this._hasClusterSizeVariable?this._getClusterTitle(t):e,infos:await q(s,t,await Z(s),this.scale,this.view,l,this._hasClusterSizeVariable?this._getClusterSymbol():null)}}_createSymbolTableElementMultiBand(e){const t=[],s=["red","green","blue"];return e.forEach(((e,l)=>{t.push({label:{colorName:s[l],bandName:e},src:K[l],opacity:this.opacity??1})})),t}_updateInfosForClassedSizeRenderer(e,t){const s=e.authoringInfo&&"class-breaks-size"===e.authoringInfo.type,l=e.classBreakInfos.some((e=>j(e.symbol)));if(s&&l){const s=H,l=$,i=e.classBreakInfos.length,r=(s-l)/(i>1?i-1:i);t.forEach(((e,t)=>{e.size=s-r*t}))}}_isTallSymbol(e){let t=!1,s=!1;if(e)for(let l=0;l<e.length&&(!t||!s);l++){const i=e[l];"size"===i.type&&("height"===i.axis&&(t=!0),"width-and-depth"===i.axis&&(s=!0))}return t&&s}async _getSymbolPreview(e,t,s){let l=!s?.isDefault&&null==e.size&&this._hasSizeRamp?m(F.size):e.size;if(this._scaleDrivenSizeVariable&&s?.applyScaleDrivenSize){const{getSize:t}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");l=t(this._scaleDrivenSizeVariable,null,{view:this.view.type,scale:this.scale,shape:"simple-marker"===e.symbol.type?e.symbol.style:null})}const i=!s?.isDefault&&this._hasSizeRamp||!(!this._scaleDrivenSizeVariable||!s?.applyScaleDrivenSize);return D(e.symbol,{size:l,opacity:t,scale:!1,symbolConfig:s?.symbolConfig,effectView:s?.effectList,style:"legend",cimOptions:{allowScalingUp:i,viewParams:this.isScaleDriven?{viewingMode:"2d"===this.view?.type?"map":this.view?.viewingMode,scale:this.view?.scale}:null},ariaLabel:e.label&&"string"!=typeof e.label?null:await qe("previewTemplateAriaLabel",e.label)}).then((t=>(e.preview=t,e))).catch((()=>(e.preview=null,e)))}_getClusterRenderer(e){this._hasClusterSizeVariable=!1;const t="renderer"in this.layer?this.layer.renderer:null,s=e.renderer?.clone()||t?.clone(),l=O(e,this.layerView,this.view);if(l&&null!=s&&"visualVariables"in s){const t=s.visualVariables?.some((e=>"size"===e.type&&"outline"!==e.target&&!oe.test(e.valueExpression)));if(!t){if("clusterMinSize"in e&&"clusterMaxSize"in e){const{clusterMinSize:t,clusterMaxSize:s}=e;l.legendOptions=new I({showLegend:t!==s})}const t=s.visualVariables||[];s.visualVariables=t.concat([l]),this._hasClusterSizeVariable=!0}}return s}async _loadRenderer(e){const t=[],s=e.clone(),l=await Z(s);if(be(s)||Se(s)){const e=(s.classBreakInfos||s.uniqueValueInfos).map((e=>this._fetchSymbol(e.symbol,l).then((t=>{e.symbol=t})).catch((()=>{e.symbol=null}))));Array.prototype.push.apply(t,e)}return t.push(this._fetchSymbol(s.symbol||s.defaultSymbol,s.defaultSymbol?null:l).then((e=>{this._applySymbolToRenderer(s,e,ge(s))})).catch((()=>{this._applySymbolToRenderer(s,null,ge(s))}))),await Promise.allSettled(t),s}_applySymbolToRenderer(e,t,s){s?e.symbol=t:e.defaultSymbol=t}async _fetchSymbol(e,t){if(!e)throw new Error;if("web-style"===e.type){const s=this._webStyleSymbolCache;try{const l=await("2d"===this.view.type?e.fetchCIMSymbol({cache:s}):e.fetchSymbol({cache:s}));return this._getAppliedCloneSymbol(l,t)}catch{throw o.getLogger(this).warn("Fetching web-style failed!"),new Error}}return this._getAppliedCloneSymbol(e,t)}_getAppliedCloneSymbol(e,s){if(!e||!s)return e;const l=e.clone(),i=s&&s.toRgba();return l.type.includes("3d")?this._applyColorTo3dSymbol(l,i):"cim"===l.type?R(l,s):l.color&&(l.color=new t(i||l.color)),l}_applyColorTo3dSymbol(e,s){s&&e.symbolLayers.forEach((e=>{e&&(e.material||(e.material={}),e.material.color=new t(s))}))}async _getVisualVariableLegendElements(e,t){if(!("visualVariables"in e)||!e.visualVariables||"vector-field"===e.type)return null;const s=e.visualVariables,l=[],i=[],n=[];for(const r of s)"color"===r.type?l.push(r):"size"===r.type?i.push(r):"opacity"===r.type&&n.push(r);const a=[...l,...i,...n];let o,u;if(0===l.length&&be(e)&&e.classBreakInfos&&1===e.classBreakInfos.length){const t=e.classBreakInfos[0];o=t&&t.symbol}if(0===l.length&&ge(e)&&(o=e.symbol),o)if(o.type.includes("3d")){const e=o.symbolLayers.at(0);"water"===e.type?null!=e.color&&(u=e.color):null!=e.material?.color&&(u=e.material.color)}else o.url||(u=o.color);const c=this.effectList;return(await Promise.all(a.map((async s=>{if(!s.legendOptions||!1!==s.legendOptions.showLegend){const l=ye(e)?s.field:this._getRampTitle(s,t);let i=null;const r=X(t,s,this.view.timeZone);if("color"===s.type){const e=await U(s,null,r)??[];i={type:"color-ramp",title:l,infos:e,preview:T(e.map((e=>e.color)),{effectList:c,ariaLabel:await qe("previewColorRampAriaLabel")})},this._hasColorRamp||(this._hasColorRamp=e.length>0)}else if("size"===s.type&&"outline"!==s.target)oe.test(s.valueExpression)?this._hasClusterSizeVariable||(this._scaleDrivenSizeVariable=s):(i=await this._getSizeLegendElement(l,s,e,r),this._hasSizeRamp||(this._hasSizeRamp=!(null==i.infos||!i.infos.length)));else if("opacity"===s.type){const e=await U(s,u,r)??[];i={type:"opacity-ramp",title:l,infos:e,preview:T(e.map((e=>e.color)),{effectList:c,ariaLabel:await qe("previewColorRampAriaLabel")})},this._hasOpacityRamp||(this._hasOpacityRamp=e.length>0)}return i&&i.infos?i:null}})))).filter(r)}_getDomainName(e,t,s){if(e&&"function"!=typeof e){const l="getField"in s&&s.getField?.(e),i=l&&"getFieldDomain"in s&&s.getFieldDomain?s.getFieldDomain(l.name):null;return"coded-value"===i?.type?i.getName(t):null}return null}_getClusterTitle(e){const t=this.layer,s=e.field;if("featureReduction"in t&&t.featureReduction&&"cluster"===t.featureReduction.type){const e=t.featureReduction,l="popupTemplate"in e&&e.popupTemplate,i=l&&l.fieldInfos;if(i)for(const t of i)if(t.fieldName===s)return"cluster_count"===s?t.label||{showCount:!0}:t.label}return{showCount:!0}}_getRampTitle(e,t){let s=e.field,l=e.normalizationField,i=!1,r=!1,n=!1,a=null;s="function"==typeof s?null:s,l="function"==typeof l?null:l;const o=e.legendOptions?.title;if(null!=o)a=o;else if(e.valueExpressionTitle)a=e.valueExpressionTitle;else{if("renderer"in t&&t.renderer&&"authoringInfo"in t.renderer&&t.renderer.authoringInfo?.visualVariables){const e=t.renderer.authoringInfo.visualVariables;for(let t=0;t<e.length;t++){const s=e[t];if("color"===s.type){if("ratio"===s.style){i=!0;break}if("percent"===s.style){r=!0;break}if("percent-of-total"===s.style){n=!0;break}}}}a={field:s&&this._getFieldAlias(s,t),normField:l&&this._getFieldAlias(l,t),ratio:i,ratioPercent:r,ratioPercentTotal:n}}return a}_getRendererTitle(e,t){const s=e;if(s.legendOptions?.title)return s.legendOptions.title;if(s.valueExpressionTitle)return s.valueExpressionTitle;let l=s.field,i=null,r=null;if(be(s)&&(i=s.normalizationField,r="percent-of-total"===s.normalizationType),l="function"==typeof l?null:l,i="function"==typeof i?null:i,Se(s)){const{field2:e,field3:i,fieldDelimiter:r}=s;let n=l&&this._getFieldAlias(l,t);return e&&(n=`<${n}>${r}<${this._getFieldAlias(e,t)}>`,i&&(n=`${n}${r}<${this._getFieldAlias(i,t)}>`)),n}let n=null;return(l||i)&&(n={field:l&&this._getFieldAlias(l,t),normField:i&&this._getFieldAlias(i,t),normByPct:r}),n}_getFieldAlias(e,t){const s="popupTemplate"in t?t.popupTemplate:null,l=s?.fieldInfos;let i=l?.find((t=>e===t.fieldName)),r=null;"getField"in t&&t.getField?r=t.getField(e):"fieldsIndex"in t&&t.fieldsIndex&&(r=t.fieldsIndex.get(e));let n=null;const a="featureReduction"in t&&t.featureReduction;a&&(i??="popupTemplate"in a?a.popupTemplate?.fieldInfos?.find((t=>e?.toLowerCase()===t.fieldName?.toLowerCase())):void 0,"fields"in a&&a.fields&&(n=a.fields.find((t=>t.name?.toLowerCase()===e?.toLowerCase()))));const o=i||r||n;let u=null;return o&&(u=i?.label||r?.alias||n?.alias||"name"in o&&o.name||"fieldName"in o&&o.fieldName||null),u}_isUnclassedRenderer(e){const t=e.visualVariables;let s=!1;return be(e)&&e.classBreakInfos&&1===e.classBreakInfos.length&&t&&(s=e.field?t.some((t=>!(!t||e.field!==t.field||(e.normalizationField||t.normalizationField)&&e.normalizationField!==t.normalizationField))):!!t.length),s}};e([p()],We.prototype,"children",void 0),e([p({readOnly:!0})],We.prototype,"effectList",null),e([p()],We.prototype,"layerView",void 0),e([p()],We.prototype,"layer",void 0),e([p()],We.prototype,"legendElements",void 0),e([p({readOnly:!0})],We.prototype,"opacity",null),e([p()],We.prototype,"parent",void 0),e([p({readOnly:!0,dependsOn:[]})],We.prototype,"ready",null),e([p()],We.prototype,"hideLayersNotInCurrentView",void 0),e([p()],We.prototype,"keepCacheOnDestroy",void 0),e([p()],We.prototype,"respectLayerVisibility",void 0),e([p({readOnly:!0})],We.prototype,"scale",null),e([p()],We.prototype,"sublayerIds",void 0),e([p({readOnly:!0})],We.prototype,"isScaleDriven",null),e([p()],We.prototype,"title",void 0),e([p({readOnly:!0,dependsOn:["ready"],value:0})],We.prototype,"version",null),e([p()],We.prototype,"view",void 0),We=e([g("geoscene.widgets.Legend.support.ActiveLayerInfo")],We);const Ge=We;export{Ge as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright GeoScene, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.geoscene.cn/4.29/geoscene/copyright.txt for details.
4
4
  */
5
- import"../../../intl.js";import e from"../../../core/Error.js";import{clone as t}from"../../../core/lang.js";import r from"../../../core/Logger.js";import{mappedFind as i}from"../../../core/maybe.js";import{getMetersPerUnitForSR as n}from"../../../core/unitUtils.js";import l from"../../../geometry/Polygon.js";import{createExtentFromGeometry as o,scaleExtent as s}from"../../../geometry/support/geometryUtils.js";import u from"../../../rest/support/FullTextSearch.js";import{substitute as a}from"../../../intl/substitute.js";import{formatDate as c}from"../../../intl/date.js";const d=/https?:\/\/services.*\.arcgis\.com/i,f=/(?:\{([^}]+)\})/g,m=()=>r.getLogger("geoscene.widgets.Search.support.layerSearchUtils");function p(t,r){const{exactMatch:i=!1,location:l,maxResults:o,spatialReference:s,source:u,sourceIndex:a,suggestResult:c,view:d}=t,{layer:f,filter:p,zoomScale:g}=u,b=d?.scale,L=y(u,d),R=r?.signal;return F(f).then((()=>{const e=f.popupTemplate;return e?e.getRequiredFields(f.fieldsIndex):null})).then((t=>{const{objectIdField:r,returnZ:y}=f,F=S(u);if(!I(f,F))throw m().error("invalid-field: displayField is invalid."),new e("getResults():invalid-field","displayField is invalid.");const C=t&&t.length?t:[F],E=u.outFields||C,D=h(E);E.includes(r)||D||E.push(r),f.floorInfo?.floorField&&E.push(f.floorInfo.floorField);if(!(D||j(f,E)))throw m().error("invalid-field: outField is invalid."),new e("getResults():invalid-field","outField is invalid.");const A=f.createQuery(),{orderByFields:N}=u;if(N&&(A.orderByFields=N),s){A.outSpatialReference=s;const e=1/n(s);e&&(A.maxAllowableOffset=e)}const k="mesh"===f.geometryType||"multipatch"===f.geometryType,O=f.capabilities?.data?.supportsZ&&!k;if(A.returnZ=O&&!1!==y,A.returnGeometry=!0,A.multipatchOption=k?"xyFootprint":null,E&&(A.outFields=E),l)A.geometry=l;else if(c.key)A.objectIds=[c.key];else{const t=u.searchFields||[F];if(!j(f,t))throw m().error("invalid-field: search field is invalid."),new e("getResults():invalid-field","search field is invalid.");T(f)&&(A.num=o),L&&(A.geometry=L);const r=c.text?.trim();if(!r)return[];const n=c.text,{prefix:l="",suffix:s=""}=u,a=q(`${l}${n}${s}`);$(f)&&v(f,t)&&!i&&n&&(A.fullText=w({text:n,searchFields:t}));const d=M({searchTerm:a,layer:f,searchFields:t,filter:p,exactMatch:i,query:A,type:"search"});if(A.where=d,!x(A))return[]}return f.queryFeatures(A,{signal:R}).then((e=>Z(e,d,u,a,F,b,g)))}))}function g(t,r){const{source:i,spatialReference:n,view:l,suggestTerm:o,maxSuggestions:s,sourceIndex:u,exactMatch:a}=t,{layer:c,filter:d}=i,p=r?.signal,g=y(i,l);return F(c).then((()=>{if(!T(c))return[];const t=S(i),r=i.searchFields||[t],l=[];i.suggestionTemplate?i.suggestionTemplate.replaceAll(f,((e,t)=>(l.push(t),e))):l.push(t);const y=h(l);l.includes(c.objectIdField)||y||l.push(c.objectIdField);const F=I(c,t),b=y||j(c,l),L=j(c,r);if(!F)throw m().error("invalid-field: displayField is invalid."),new e("getSuggestions():invalid-field","displayField is invalid.");if(!b)throw m().error("invalid-field: outField is invalid."),new e("getSuggestions():invalid-field","outField is invalid.");if(!L)throw m().error("invalid-field: search field is invalid."),new e("getSuggestions():invalid-field","search field is invalid.");const R=c.createQuery(),{orderByFields:C}=i;C&&(R.orderByFields=C),R.outSpatialReference=n,R.returnGeometry=!1,R.num=s,R.outFields=l,g&&(R.geometry=g);if(!o.trim())return[];const{prefix:E="",suffix:D=""}=i,A=q(`${E}${o}${D}`);$(c)&&v(c,r)&&!a&&o&&(R.fullText=w({text:o,searchFields:r}));const N=M({searchTerm:A,layer:c,searchFields:r,filter:d,exactMatch:a,query:R,type:"suggest"});return R.where=N,x(R)?c.queryFeatures(R,{signal:p}).then((e=>B(e,i,u,t))):[]}))}function y(e,t){const{filter:r,withinViewEnabled:i}=e,n=t?.extent,l=r?.geometry;return l??(i&&n?n:void 0)}function h(e){return e&&e.includes("*")}async function F(e){e&&await e.load()}function x(e){return!(!e.fullText&&!e.where)}function v(e,t){const r=e?.indexes;if(!r||!t?.length)return!1;return r.filter((e=>"FullText"===e.indexType)).some((e=>{const r=e.fields?.split(",").map((e=>e.trim().toLowerCase()))||[];return t.every((e=>r.includes(e.toLowerCase())))}))}function w({text:e,searchFields:t}){return e.trim().split(" ").filter((e=>!!e.trim())).map((e=>new u({onFields:t,searchTerm:e,searchType:"prefix"})))}function $(e){return e?.capabilities?.query?.supportsFullTextSearch??!1}function T(e){return e?.capabilities?.query?.supportsPagination??!1}function b(e){return e?.fieldsIndex?.fields?.find((e=>"string"===e.type))?.name??""}function S(e){return e.displayField||e.layer.displayField||b(e.layer)}function j(e,t){return!(!e||!t?.length)&&t.every((t=>I(e,t)))}function I(e,t){return!!e.getField(t)}function L(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return!0;return!1}function R({codedValues:e},t,r){return i(e??[],(e=>{const i=e.name,n=r?i:i.toLowerCase();return(r?t:t.toLowerCase())===n?e.code.toString():null}))??null}function q(e){return e.replaceAll("'","''")}function C(e,t){const r=t?.where;return r?`(${e}) AND (${r})`:e}function E({currentTerm:e,field:t,filter:r,exactMatch:i,url:n,type:l}){const o=t?.type,s=t?.name;if("string"===o||"date"===o||"global-id"===o){const t=d.test(n??""),o=t&&L(e)?"N":"";if(i&&"search"===l)return C(`${s} = ${o}'${e}'`,r);if(t){return C(`${s} LIKE ${o}${`'${e}%'`}`,r)}return C(`${`LOWER(${s})`} LIKE ${o}${`'${e.toLowerCase()}%'`}`,r)}if("oid"===o||"small-integer"===o||"integer"===o||"single"===o||"double"===o){const t=Number(e);return isNaN(t)?null:C(`${s} = ${t}`,r)}return C(`${s} = ${e}`,r)}function D(e,t){return e?` OR (${t})`:`(${t})`}function M({searchTerm:e,layer:t,searchFields:r,filter:i,exactMatch:n,query:l,type:o}){const{definitionExpression:s,url:u}=t;let a="";return!l.fullText&&e&&r&&r.forEach((r=>{const l=t.getField(r),s="function"==typeof t.getFieldDomain&&t.getFieldDomain(r),c=(s&&"coded-value"===s.type?R(s,e,n):null)||e||null;if(null!==c){const e=E({currentTerm:c,field:l,filter:i,exactMatch:n,url:u,type:o});e&&(a+=D(a,e))}})),s&&a?`(${s}) AND (${a})`:s||a}function A(e,t){let r=null;const{codedValues:i}=e;return i&&i.length&&i.some((e=>e.code===t&&(r=e.name,!0))),r}function N(e,t){return e[t]??e[Object.keys(e).find((e=>e.toLowerCase()===t.toLowerCase()))]}function k(e,t,r){const i=e.sourceLayer,{attributes:n}=e,l="function"==typeof i.getFieldDomain&&i.getFieldDomain(r);if(t)return a(t,n);if(r&&n){const e=i.getField(r),t=N(n,r);return null==t?"":l&&"coded-value"===l.type?A(l,t)??"":"date"===e?.type?c(new Date(t)):"number"==typeof t?t.toString():"string"!=typeof t?"":t.trim()}return""}function O(e,t,r,i){const n=e.sourceLayer,{attributes:l}=e,{objectIdField:o}=n,s=o?l[o]:null;return{text:k(e,t.suggestionTemplate,i),key:s,sourceIndex:r}}function B(e,t,r,i){return e.features.map((e=>O(e,t,r,i)))}function U(e){return null!=e&&null!=e.minScale&&null!=e.maxScale}function V(e,r,i,n,u,a,c){const d=e.clone(),f=e.sourceLayer,m=f?.objectIdField,p=m?e.attributes[m]:null,g=k(e,i.searchTemplate,u);null!=a&&U(f)&&(f.minScale&&f.minScale<a?a=f.minScale:f.maxScale&&f.maxScale>a&&(a=f.maxScale));const y=d.geometry?o(d.geometry,r??void 0,a??void 0):void 0,h="number"==typeof c&&y?s(t(y),r??void 0,c):y,F=e.clone();return null!=h&&(F.geometry=l.fromExtent(h)),{extent:h,target:F,feature:d,key:p,name:g,sourceIndex:n}}function Z(e,t,r,i,n,l,o){return e.features.map((e=>V(e,t,r,i,n,l,o)))}export{w as createFullTextSearchInfos,p as getResults,g as getSuggestions};
5
+ import"../../../intl.js";import e from"../../../core/Error.js";import{clone as t}from"../../../core/lang.js";import r from"../../../core/Logger.js";import{mappedFind as i}from"../../../core/maybe.js";import{getMetersPerUnitForSR as n}from"../../../core/unitUtils.js";import l from"../../../geometry/Polygon.js";import{createExtentFromGeometry as o,scaleExtent as s}from"../../../geometry/support/geometryUtils.js";import u from"../../../rest/support/FullTextSearch.js";import{substitute as a}from"../../../intl/substitute.js";import{formatDate as c}from"../../../intl/date.js";const d=/https?:\/\/services.*\.Grcgis\.cn/i,f=/(?:\{([^}]+)\})/g,m=()=>r.getLogger("geoscene.widgets.Search.support.layerSearchUtils");function p(t,r){const{exactMatch:i=!1,location:l,maxResults:o,spatialReference:s,source:u,sourceIndex:a,suggestResult:c,view:d}=t,{layer:f,filter:p,zoomScale:g}=u,b=d?.scale,L=y(u,d),R=r?.signal;return F(f).then((()=>{const e=f.popupTemplate;return e?e.getRequiredFields(f.fieldsIndex):null})).then((t=>{const{objectIdField:r,returnZ:y}=f,F=S(u);if(!I(f,F))throw m().error("invalid-field: displayField is invalid."),new e("getResults():invalid-field","displayField is invalid.");const C=t&&t.length?t:[F],E=u.outFields||C,D=h(E);E.includes(r)||D||E.push(r),f.floorInfo?.floorField&&E.push(f.floorInfo.floorField);if(!(D||j(f,E)))throw m().error("invalid-field: outField is invalid."),new e("getResults():invalid-field","outField is invalid.");const A=f.createQuery(),{orderByFields:N}=u;if(N&&(A.orderByFields=N),s){A.outSpatialReference=s;const e=1/n(s);e&&(A.maxAllowableOffset=e)}const k="mesh"===f.geometryType||"multipatch"===f.geometryType,O=f.capabilities?.data?.supportsZ&&!k;if(A.returnZ=O&&!1!==y,A.returnGeometry=!0,A.multipatchOption=k?"xyFootprint":null,E&&(A.outFields=E),l)A.geometry=l;else if(c.key)A.objectIds=[c.key];else{const t=u.searchFields||[F];if(!j(f,t))throw m().error("invalid-field: search field is invalid."),new e("getResults():invalid-field","search field is invalid.");T(f)&&(A.num=o),L&&(A.geometry=L);const r=c.text?.trim();if(!r)return[];const n=c.text,{prefix:l="",suffix:s=""}=u,a=q(`${l}${n}${s}`);$(f)&&v(f,t)&&!i&&n&&(A.fullText=w({text:n,searchFields:t}));const d=M({searchTerm:a,layer:f,searchFields:t,filter:p,exactMatch:i,query:A,type:"search"});if(A.where=d,!x(A))return[]}return f.queryFeatures(A,{signal:R}).then((e=>Z(e,d,u,a,F,b,g)))}))}function g(t,r){const{source:i,spatialReference:n,view:l,suggestTerm:o,maxSuggestions:s,sourceIndex:u,exactMatch:a}=t,{layer:c,filter:d}=i,p=r?.signal,g=y(i,l);return F(c).then((()=>{if(!T(c))return[];const t=S(i),r=i.searchFields||[t],l=[];i.suggestionTemplate?i.suggestionTemplate.replaceAll(f,((e,t)=>(l.push(t),e))):l.push(t);const y=h(l);l.includes(c.objectIdField)||y||l.push(c.objectIdField);const F=I(c,t),b=y||j(c,l),L=j(c,r);if(!F)throw m().error("invalid-field: displayField is invalid."),new e("getSuggestions():invalid-field","displayField is invalid.");if(!b)throw m().error("invalid-field: outField is invalid."),new e("getSuggestions():invalid-field","outField is invalid.");if(!L)throw m().error("invalid-field: search field is invalid."),new e("getSuggestions():invalid-field","search field is invalid.");const R=c.createQuery(),{orderByFields:C}=i;C&&(R.orderByFields=C),R.outSpatialReference=n,R.returnGeometry=!1,R.num=s,R.outFields=l,g&&(R.geometry=g);if(!o.trim())return[];const{prefix:E="",suffix:D=""}=i,A=q(`${E}${o}${D}`);$(c)&&v(c,r)&&!a&&o&&(R.fullText=w({text:o,searchFields:r}));const N=M({searchTerm:A,layer:c,searchFields:r,filter:d,exactMatch:a,query:R,type:"suggest"});return R.where=N,x(R)?c.queryFeatures(R,{signal:p}).then((e=>B(e,i,u,t))):[]}))}function y(e,t){const{filter:r,withinViewEnabled:i}=e,n=t?.extent,l=r?.geometry;return l??(i&&n?n:void 0)}function h(e){return e&&e.includes("*")}async function F(e){e&&await e.load()}function x(e){return!(!e.fullText&&!e.where)}function v(e,t){const r=e?.indexes;if(!r||!t?.length)return!1;return r.filter((e=>"FullText"===e.indexType)).some((e=>{const r=e.fields?.split(",").map((e=>e.trim().toLowerCase()))||[];return t.every((e=>r.includes(e.toLowerCase())))}))}function w({text:e,searchFields:t}){return e.trim().split(" ").filter((e=>!!e.trim())).map((e=>new u({onFields:t,searchTerm:e,searchType:"prefix"})))}function $(e){return e?.capabilities?.query?.supportsFullTextSearch??!1}function T(e){return e?.capabilities?.query?.supportsPagination??!1}function b(e){return e?.fieldsIndex?.fields?.find((e=>"string"===e.type))?.name??""}function S(e){return e.displayField||e.layer.displayField||b(e.layer)}function j(e,t){return!(!e||!t?.length)&&t.every((t=>I(e,t)))}function I(e,t){return!!e.getField(t)}function L(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return!0;return!1}function R({codedValues:e},t,r){return i(e??[],(e=>{const i=e.name,n=r?i:i.toLowerCase();return(r?t:t.toLowerCase())===n?e.code.toString():null}))??null}function q(e){return e.replaceAll("'","''")}function C(e,t){const r=t?.where;return r?`(${e}) AND (${r})`:e}function E({currentTerm:e,field:t,filter:r,exactMatch:i,url:n,type:l}){const o=t?.type,s=t?.name;if("string"===o||"date"===o||"global-id"===o){const t=d.test(n??""),o=t&&L(e)?"N":"";if(i&&"search"===l)return C(`${s} = ${o}'${e}'`,r);if(t){return C(`${s} LIKE ${o}${`'${e}%'`}`,r)}return C(`${`LOWER(${s})`} LIKE ${o}${`'${e.toLowerCase()}%'`}`,r)}if("oid"===o||"small-integer"===o||"integer"===o||"single"===o||"double"===o){const t=Number(e);return isNaN(t)?null:C(`${s} = ${t}`,r)}return C(`${s} = ${e}`,r)}function D(e,t){return e?` OR (${t})`:`(${t})`}function M({searchTerm:e,layer:t,searchFields:r,filter:i,exactMatch:n,query:l,type:o}){const{definitionExpression:s,url:u}=t;let a="";return!l.fullText&&e&&r&&r.forEach((r=>{const l=t.getField(r),s="function"==typeof t.getFieldDomain&&t.getFieldDomain(r),c=(s&&"coded-value"===s.type?R(s,e,n):null)||e||null;if(null!==c){const e=E({currentTerm:c,field:l,filter:i,exactMatch:n,url:u,type:o});e&&(a+=D(a,e))}})),s&&a?`(${s}) AND (${a})`:s||a}function A(e,t){let r=null;const{codedValues:i}=e;return i&&i.length&&i.some((e=>e.code===t&&(r=e.name,!0))),r}function N(e,t){return e[t]??e[Object.keys(e).find((e=>e.toLowerCase()===t.toLowerCase()))]}function k(e,t,r){const i=e.sourceLayer,{attributes:n}=e,l="function"==typeof i.getFieldDomain&&i.getFieldDomain(r);if(t)return a(t,n);if(r&&n){const e=i.getField(r),t=N(n,r);return null==t?"":l&&"coded-value"===l.type?A(l,t)??"":"date"===e?.type?c(new Date(t)):"number"==typeof t?t.toString():"string"!=typeof t?"":t.trim()}return""}function O(e,t,r,i){const n=e.sourceLayer,{attributes:l}=e,{objectIdField:o}=n,s=o?l[o]:null;return{text:k(e,t.suggestionTemplate,i),key:s,sourceIndex:r}}function B(e,t,r,i){return e.features.map((e=>O(e,t,r,i)))}function U(e){return null!=e&&null!=e.minScale&&null!=e.maxScale}function V(e,r,i,n,u,a,c){const d=e.clone(),f=e.sourceLayer,m=f?.objectIdField,p=m?e.attributes[m]:null,g=k(e,i.searchTemplate,u);null!=a&&U(f)&&(f.minScale&&f.minScale<a?a=f.minScale:f.maxScale&&f.maxScale>a&&(a=f.maxScale));const y=d.geometry?o(d.geometry,r??void 0,a??void 0):void 0,h="number"==typeof c&&y?s(t(y),r??void 0,c):y,F=e.clone();return null!=h&&(F.geometry=l.fromExtent(h)),{extent:h,target:F,feature:d,key:p,name:g,sourceIndex:n}}function Z(e,t,r,i,n,l,o){return e.features.map((e=>V(e,t,r,i,n,l,o)))}export{w as createFullTextSearchInfos,p as getResults,g as getSuggestions};
@@ -1,5 +0,0 @@
1
- /*!
2
- * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
- * See https://github.com/Esri/calcite-design-system/blob/main/LICENSE.md for details.
4
- * v2.4.0
5
- */
@@ -1,10 +0,0 @@
1
- /*!
2
- * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
- * See https://github.com/Esri/calcite-design-system/blob/main/LICENSE.md for details.
4
- * v2.4.0
5
- */
6
-
7
- /*!
8
- * focus-trap 7.5.4
9
- * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
10
- */