@arcgis/core 6.0.0-next.1 → 6.0.0-next.2

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 (77) hide show
  1. package/analysis/DimensionSimpleStyle.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/01803f76bc0d9f2cd566.js +1 -0
  4. package/assets/esri/core/workers/chunks/{a7325ebb7edf3273bb34.js → 12b84262dedc6b393136.js} +1 -1
  5. package/assets/esri/core/workers/chunks/261fea092ee7d27608a0.js +1 -0
  6. package/assets/esri/core/workers/chunks/{8af92bcc075e03e3e902.js → 512628db534605a2a93e.js} +22 -22
  7. package/assets/esri/core/workers/chunks/5e4d6c283c2fa28db022.js +1 -0
  8. package/assets/esri/core/workers/chunks/64770e2cf41211b63fd2.js +1 -0
  9. package/assets/esri/core/workers/chunks/{ffb3728e6ac428f62af1.js → 71103472c45928bd730c.js} +1 -1
  10. package/assets/esri/core/workers/chunks/73a87fb270818aa75fc5.js +1 -0
  11. package/assets/esri/core/workers/chunks/7ef182e24cad50815b4e.js +1 -0
  12. package/assets/esri/core/workers/chunks/8313c626596a76c7449d.js +1 -0
  13. package/assets/esri/core/workers/chunks/84e9258a57d8c365f361.js +1 -0
  14. package/assets/esri/core/workers/chunks/{b0cfec11c758eed8095f.js → 87b4e916b2668203a6b0.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{aa1054834738aef48bda.js → a0356702f2d3f787aeac.js} +1 -1
  16. package/assets/esri/core/workers/chunks/ac4cc49104d26c384e98.js +1 -0
  17. package/assets/esri/core/workers/chunks/ec28e18275d36e71b438.js +1 -0
  18. package/assets/esri/core/workers/chunks/{050c4b212f2b5691db34.js → f762f70e7d39634ce797.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{32d08b571bbd996d4e6d.js → fb4ff0ac2bc445fec413.js} +1 -1
  20. package/chunks/RibbonLine.glsl.js +9 -11
  21. package/config.js +1 -1
  22. package/core/screenUtils.js +1 -1
  23. package/kernel.js +1 -1
  24. package/package.json +2 -2
  25. package/smartMapping/renderers/support/spikeUtils.js +3 -3
  26. package/symbols/LineSymbol3DLayer.js +1 -1
  27. package/symbols/callouts/LineCallout3D.js +1 -1
  28. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  29. package/symbols/edges/Edges3D.js +1 -1
  30. package/symbols/support/Symbol3DIconOutline.js +1 -1
  31. package/symbols/support/Symbol3DOutline.js +1 -1
  32. package/symbols/support/Symbol3DTextBorder.js +1 -1
  33. package/symbols/support/defaults3D.js +1 -1
  34. package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
  35. package/views/2d/analysis/AreaMeasurementAnalysisView2D.d.ts +2 -0
  36. package/views/2d/analysis/AreaMeasurementAnalysisView2D.js +1 -1
  37. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
  38. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.d.ts +2 -0
  39. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.js +1 -1
  40. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
  41. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerMeshWriter.js +1 -1
  42. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TexturedLineShader.js +1 -1
  43. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
  44. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  45. package/views/3d/analysis/LineOfSight/LineOfSightItemManipulatedObject3D.js +1 -1
  46. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  47. package/views/3d/analysis/LineOfSight/LineOfSightPlacementController.js +1 -1
  48. package/views/3d/analysis/LineOfSight/lineOfSightPlacementUtils.js +1 -1
  49. package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
  50. package/views/3d/analysis/Viewshed/ViewshedPlacementPointPlugin.js +1 -1
  51. package/views/3d/analysis/Viewshed/placementUtils.js +1 -1
  52. package/views/3d/interactive/SnappingVisualizer3D.js +1 -1
  53. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  54. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  55. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  56. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  57. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  58. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  59. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  60. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +3 -3
  61. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +23 -9
  62. package/views/draw/support/PluginContext.js +1 -1
  63. package/views/draw/support/managers/TooltipManager.js +1 -1
  64. package/views/interactive/snapping/SnappingVisualizer.js +1 -1
  65. package/views/interactive/tooltip/infos/DynamicTooltipInfo.js +1 -1
  66. package/widgets/Editor/workflowUtils.js +1 -1
  67. package/widgets/support/SelectionList/FeatureItem.d.ts +9 -2
  68. package/assets/esri/core/workers/chunks/084222c00d263a534952.js +0 -1
  69. package/assets/esri/core/workers/chunks/37a636f61cfe89c6bfd1.js +0 -1
  70. package/assets/esri/core/workers/chunks/4848f195eb93cc93dd15.js +0 -1
  71. package/assets/esri/core/workers/chunks/750a9f3cdb96b966274a.js +0 -1
  72. package/assets/esri/core/workers/chunks/897fc8e78a0d54a5ff5a.js +0 -1
  73. package/assets/esri/core/workers/chunks/9432feca48ca3e5849bd.js +0 -1
  74. package/assets/esri/core/workers/chunks/956a40f40bde416efe93.js +0 -1
  75. package/assets/esri/core/workers/chunks/985b3f18cee87c3fe022.js +0 -1
  76. package/assets/esri/core/workers/chunks/ca7fb75e2c62e7d37122.js +0 -1
  77. package/assets/esri/core/workers/chunks/e7c60bd85abbd36cdc64.js +0 -1
@@ -336,9 +336,10 @@ float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`)
336
336
  float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):M.main.add(S`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
337
337
  float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),M.uniforms.add(new x(`stipplePatternPixelSize`,e=>i(e))),M.main.add(S`
338
338
  float patternLength = patternLineSize * stipplePatternPixelSize;
339
+ vec2 stippleDistanceLimits;
339
340
 
340
341
  ${C(G,S`
341
- vStippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
342
+ stippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
342
343
  vStipplePatternStretch = 1.0;
343
344
 
344
345
  ${C(K,S`
@@ -349,10 +350,10 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
349
350
  `,S`
350
351
  // Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
351
352
  // fragment shader
352
- vStippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
353
+ stippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
353
354
  `)}
354
355
 
355
- vStippleDistance = mix(vStippleDistanceLimits.x, vStippleDistanceLimits.y, isEndVertex);
356
+ vStippleDistance = mix(stippleDistanceLimits.x, stippleDistanceLimits.y, isEndVertex);
356
357
 
357
358
  // Adjust the coordinate to the displaced position (the pattern is shortened/overextended on the in/outside of
358
359
  // joins)
@@ -363,28 +364,25 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
363
364
  float stippleDisplacementFactor = dot(segment.xy, stippleDisplacement.xy) / (segmentLengthScreenDouble * segmentLengthScreenDouble);
364
365
 
365
366
  // Apply this offset to the actual vertex coordinate (can be screen or pseudo-screen space)
366
- vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (vStippleDistanceLimits.y - vStippleDistanceLimits.x);
367
+ vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (stippleDistanceLimits.y - stippleDistanceLimits.x);
367
368
  }
368
369
 
369
370
  ${C(Z,S`
370
371
  float segmentStartInverseW = 1.0 / mix(pos.w, prev.w, isEndVertex);
371
372
  float segmentEndInverseW = 1.0 / mix(next.w, pos.w, isEndVertex);
372
373
  vStipplePerspective = noPerspectiveWrite(
373
- vec4(vStippleDistanceLimits, segmentStartInverseW, segmentEndInverseW),
374
+ vec4(stippleDistanceLimits, segmentStartInverseW, segmentEndInverseW),
374
375
  pos.w
375
376
  );
376
377
  `)}
377
378
 
378
379
  // Cancel out perspective-correct interpolation for screen-space stipple distances.
379
- vStippleDistanceLimits = noPerspectiveWrite(vStippleDistanceLimits, pos.w);
380
+ vStippleLimitsAndCaps.xy = noPerspectiveWrite(stippleDistanceLimits, pos.w);
380
381
  vStippleDistance = noPerspectiveWrite(vStippleDistance, pos.w);
381
382
 
382
383
  // Disable stipple distance limits on caps
383
- vStippleDistanceLimits = isJoin ?
384
- vStippleDistanceLimits :
385
- isStartVertex ?
386
- vec2(-1e34, vStippleDistanceLimits.y) :
387
- vec2(vStippleDistanceLimits.x, 1e34);
384
+ vStippleLimitsAndCaps.zw = isJoin ? vec2(0.0) :
385
+ isStartVertex ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
388
386
  `)),M.main.add(S`
389
387
  // Convert back into NDC
390
388
  pos.xy = (pos.xy / viewport.zw) * pos.w;
package/config.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import"./core/has.js";import{deepMerge as e}from"./core/object.js";const t={apiKey:void 0,apiKeys:{scopes:[]},applicationName:``,applicationUrl:globalThis.location?.href,assetsPath:``,fontsUrl:`https://static.arcgis.com/fonts`,geometryServiceUrl:`https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer`,geoRSSServiceUrl:`https://utility.arcgis.com/sharing/rss`,kmlServiceUrl:`https://utility.arcgis.com/sharing/kml`,userPrivilegesApplied:!0,portalUrl:`https://www.arcgis.com`,respectPrefersReducedMotion:!0,routeServiceUrl:`https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World`,workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:[`arcgis.com`,`arcgisonline.com`,`esrikr.com`,`premiumservices.blackbridge.com`,`esripremium.accuweather.com`,`gbm.digitalglobe.com`,`firstlook.digitalglobe.com`,`msi.digitalglobe.com`],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:`high`,proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),!t.assetsPath&&(t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@6.0.0-next.0/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
2
+ import"./core/has.js";import{deepMerge as e}from"./core/object.js";const t={apiKey:void 0,apiKeys:{scopes:[]},applicationName:``,applicationUrl:globalThis.location?.href,assetsPath:``,fontsUrl:`https://static.arcgis.com/fonts`,geometryServiceUrl:`https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer`,geoRSSServiceUrl:`https://utility.arcgis.com/sharing/rss`,kmlServiceUrl:`https://utility.arcgis.com/sharing/kml`,userPrivilegesApplied:!0,portalUrl:`https://www.arcgis.com`,respectPrefersReducedMotion:!0,routeServiceUrl:`https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World`,workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:[`arcgis.com`,`arcgisonline.com`,`esrikr.com`,`premiumservices.blackbridge.com`,`esripremium.accuweather.com`,`gbm.digitalglobe.com`,`firstlook.digitalglobe.com`,`msi.digitalglobe.com`],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:`high`,proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),!t.assetsPath&&(t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@6.0.0-next.1/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../geometry/Polygon.js";const t=/^-?(\d+(\.\d+)?)\s*((px)|(pt))?$/i;function n(e){return e?e/72*96:0}function r(e){return e?e*72/96:0}function i(e){if(typeof e==`string`){let n=e.match(t);if(n){let t=Number(n[1]),i=n[3]&&n[3].toLowerCase(),a=e.startsWith(`-`),o=i===`px`?r(t):t;return a?-o:o}return console.warn(`screenUtils.toPt: input not recognized!`),null}return e}function a(e=0,t=0){return{x:e,y:t}}function o(e=0,t=0,n=0,r=0){return{x:e,y:t,width:n,height:r}}function s(e){return e.map(e=>a(e[0],e[1]))}function c(e){return e?a(e.x,e.y):null}function l(e=0,t=0){return[e,t]}function u(e=0,t=0){return{x:e,y:t}}function d(e=0,t=0){return p([e,t])}function f(e=0,t=0,n=0){return m([e,t,n])}function p(e){return e}function m(e){return e}function h(e){return e}function g(e,t){return t?(t.x=e[0],t.y=e[1],t):{x:e[0],y:e[1]}}function _(e,t){return t?(t[0]=e.x,t[1]=e.y,t.length>2&&(t[2]=0),t):[e.x,e.y]}function v(e,t){return e===t||e==null&&t==null||e?.x===t?.x&&e?.y===t?.y}function y(e,t){let n=e.x-t.x,r=e.y-t.y;return n*n+r*r}function b(e,t){return Math.sqrt(y(e,t))}function x(e){return`x`in e&&`y`in e&&`width`in e&&`height`in e&&!S(e)}function S(e){return Array.isArray(e)}function C(e){return!Array.isArray(e)&&`x`in e&&`y`in e&&!x(e)&&!S(e)}function w(e){return e&&Number.isFinite(e.x)&&Number.isFinite(e.y)}function T(e){return e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.width)&&Number.isFinite(e.height)}function E(t,n){let{x:r,y:i,width:o,height:s}=n,c=t.toMap(a(r,i)),l=t.toMap(a(r+o,i)),u=t.toMap(a(r+o,i+s)),d=t.toMap(a(r,i+s));return new e({rings:[[c.toArray(),l.toArray(),u.toArray(),d.toArray(),c.toArray()]],spatialReference:c.spatialReference})}function D(e,t,n){let r=Math.max(0,e.x),i=Math.max(0,e.y),a=Math.min(t,e.x+e.width)-r,o=Math.min(n,e.y+e.height)-i;return{x:r,y:i,width:Math.max(0,a),height:Math.max(0,o)}}export{p as castRenderScreenPointArray,m as castRenderScreenPointArray3,h as castScreenPointArray,D as clipRectToView,c as cloneScreenPoint,u as createRenderScreenPoint,d as createRenderScreenPointArray,f as createRenderScreenPointArray3,a as createScreenPoint,l as createScreenPointArray,s as createScreenPolygon,o as createScreenRect,C as isScreenPoint,S as isScreenPolygon,x as isScreenRect,w as isValidScreenPoint,T as isValidScreenRect,n as pt2px,r as px2pt,b as screenDistance,g as screenPointArrayToObject,v as screenPointEqual,_ as screenPointObjectToArray,E as screenRectToPolygon,y as squaredScreenDistance,i as toPt};
2
+ import e from"../geometry/Polygon.js";const t=/^-?(\d+(\.\d+)?)\s*((px)|(pt))?$/i,n=a(1),r=i(1);function i(e){return e?e/72*96:0}function a(e){return e?e*72/96:0}function o(e){if(typeof e==`string`){let n=e.match(t);if(n){let t=Number(n[1]),r=n[3]&&n[3].toLowerCase(),i=e.startsWith(`-`),o=r===`px`?a(t):t;return i?-o:o}return console.warn(`screenUtils.toPt: input not recognized!`),null}return e}function s(e=0,t=0){return{x:e,y:t}}function c(e=0,t=0,n=0,r=0){return{x:e,y:t,width:n,height:r}}function l(e){return e.map(e=>s(e[0],e[1]))}function u(e){return e?s(e.x,e.y):null}function d(e=0,t=0){return[e,t]}function f(e=0,t=0){return{x:e,y:t}}function p(e=0,t=0){return h([e,t])}function m(e=0,t=0,n=0){return g([e,t,n])}function h(e){return e}function g(e){return e}function _(e){return e}function v(e,t){return t?(t.x=e[0],t.y=e[1],t):{x:e[0],y:e[1]}}function y(e,t){return t?(t[0]=e.x,t[1]=e.y,t.length>2&&(t[2]=0),t):[e.x,e.y]}function b(e,t){return e===t||e==null&&t==null||e?.x===t?.x&&e?.y===t?.y}function x(e,t){let n=e.x-t.x,r=e.y-t.y;return n*n+r*r}function S(e,t){return Math.sqrt(x(e,t))}function C(e){return`x`in e&&`y`in e&&`width`in e&&`height`in e&&!w(e)}function w(e){return Array.isArray(e)}function T(e){return!Array.isArray(e)&&`x`in e&&`y`in e&&!C(e)&&!w(e)}function E(e){return e&&Number.isFinite(e.x)&&Number.isFinite(e.y)}function D(e){return e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.width)&&Number.isFinite(e.height)}function O(t,n){let{x:r,y:i,width:a,height:o}=n,c=t.toMap(s(r,i)),l=t.toMap(s(r+a,i)),u=t.toMap(s(r+a,i+o)),d=t.toMap(s(r,i+o));return new e({rings:[[c.toArray(),l.toArray(),u.toArray(),d.toArray(),c.toArray()]],spatialReference:c.spatialReference})}function k(e,t,n){let r=Math.max(0,e.x),i=Math.max(0,e.y),a=Math.min(t,e.x+e.width)-r,o=Math.min(n,e.y+e.height)-i;return{x:r,y:i,width:Math.max(0,a),height:Math.max(0,o)}}export{h as castRenderScreenPointArray,g as castRenderScreenPointArray3,_ as castScreenPointArray,k as clipRectToView,u as cloneScreenPoint,f as createRenderScreenPoint,p as createRenderScreenPointArray,m as createRenderScreenPointArray3,s as createScreenPoint,d as createScreenPointArray,l as createScreenPolygon,c as createScreenRect,T as isScreenPoint,w as isScreenPolygon,C as isScreenRect,E as isValidScreenPoint,D as isValidScreenRect,n as onePixelInPoints,r as onePointInPixels,i as pt2px,a as px2pt,S as screenDistance,v as screenPointArrayToObject,b as screenPointEqual,y as screenPointObjectToArray,O as screenRectToPolygon,x as squaredScreenDistance,o as toPt};
package/kernel.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import has from"./core/has.js";import{addQueryParameter as e}from"./core/urlUtils.js";Symbol.dispose??=Symbol(`Symbol.dispose`),Symbol.asyncDispose??=Symbol(`Symbol.asyncDispose`);const t=`5.2`;let n=`5.2`;n=`6.0.0-next.0`;let r;function i(e){r=e}function a(t){let n=r?.findCredential(t);return n?.token?e(t,`token`,n.token):t}has(`host-webworker`)||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has(`host-webworker`);export{a as addTokenParameter,n as fullVersion,r as id,i as setId,t as version};
2
+ import has from"./core/has.js";import{addQueryParameter as e}from"./core/urlUtils.js";Symbol.dispose??=Symbol(`Symbol.dispose`),Symbol.asyncDispose??=Symbol(`Symbol.asyncDispose`);const t=`5.2`;let n=`5.2`;n=`6.0.0-next.1`;let r;function i(e){r=e}function a(t){let n=r?.findCredential(t);return n?.token?e(t,`token`,n.token):t}has(`host-webworker`)||globalThis.$arcgis||Object.defineProperty(globalThis,"$arcgis",{configurable:!1,enumerable:!0,writable:!1,value:{}}),has(`host-webworker`);export{a as addTokenParameter,n as fullVersion,r as id,i as setId,t as version};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "6.0.0-next.1",
3
+ "version": "6.0.0-next.2",
4
4
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
5
5
  "keywords": [
6
6
  "ArcGIS",
@@ -20,7 +20,7 @@
20
20
  "license": "SEE LICENSE IN LICENSE.md",
21
21
  "dependencies": {
22
22
  "@amcharts/amcharts5": "~5.20.8",
23
- "@arcgis/toolkit": "6.0.0-next.1",
23
+ "@arcgis/toolkit": "6.0.0-next.2",
24
24
  "@esri/arcgis-html-sanitizer": "~4.2.0-next.2",
25
25
  "@esri/calcite-components": "^5.2.0-next.89",
26
26
  "@vaadin/grid": "~25.3.2",
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../Color.js";import{clone as t}from"../../../core/lang.js";import{px2pt as n}from"../../../core/screenUtils.js";import r from"../../../symbols/CIMSymbol.js";const i=`spike-height-override`,a=n(8),o=n(20),s=`triangle-solid-fill-open-outline`;function c(e){let{field:t,normalizationField:n,sizeStops:r}=e,{value:a,size:o}=r[0],{value:s,size:c}=r[1],l=0,u;t&&(l=`$feature["${t}"]`,u=`
2
+ import e from"../../../Color.js";import{clone as t}from"../../../core/lang.js";import{onePixelInPoints as n,px2pt as r}from"../../../core/screenUtils.js";import i from"../../../symbols/CIMSymbol.js";const a=`spike-height-override`,o=r(8),s=r(20),c=`triangle-solid-fill-open-outline`;function l(e){let{field:t,normalizationField:n,sizeStops:r}=e,{value:i,size:o}=r[0],{value:s,size:c}=r[1],l=0,u;t&&(l=`$feature["${t}"]`,u=`
3
3
  if(!HasValue($feature, "${t}")){
4
4
  return 0;
5
5
  }
@@ -15,11 +15,11 @@ import e from"../../../Color.js";import{clone as t}from"../../../core/lang.js";i
15
15
  var maxSize = ${c};
16
16
  var minSize = ${o};
17
17
 
18
- var minDataValue = ${a};
18
+ var minDataValue = ${i};
19
19
  var maxDataValue = ${s};
20
20
 
21
21
  var ratio = Constrain(( value - minDataValue ) / ( maxDataValue - minDataValue ), 0, 1);
22
22
 
23
23
  var size = Constrain(maxSize * ratio, minSize, maxSize);
24
24
  return size;
25
- `,returnType:`Default`};return[{type:`CIMPrimitiveOverride`,primitiveName:i,propertyName:`Length`,valueExpressionInfo:d}]}function l(e){let{primitiveOverrides:t,baseWidth:n,defaultHeight:s}=e,c=u(e);return new r({data:{type:`CIMSymbolReference`,symbol:{type:`CIMPointSymbol`,effects:[{type:`CIMGeometricEffectRadial`,primitiveName:i,angle:90,length:s??o},{type:`CIMGeometricEffectTaperedPolygon`,fromWidth:n??a,toWidth:1,length:5}],symbolLayers:c,haloSize:1,scaleX:1,angleAlignment:`Display`},primitiveOverrides:t}})}function u(e){let t=[d(e)],n=p(e);return n&&t.push(n),t}function d(e){let{strokeColor:t,strokeWidth:r,symbolStyle:i}=e,a=i?.includes(`solid-fill`)||i?.includes(`gradient-fill`),o=t?.toArray(),s=!1;return i?.includes(`outline`)&&a?s=!0:o=e.color?.toArray(),{type:`CIMSolidStroke`,effects:f(i),enable:!0,colorLocked:s,capStyle:`Round`,joinStyle:`Round`,lineStyle3D:`Strip`,miterLimit:4,width:r??n(1),color:o}}function f(e){if(!e?.includes(`closed`))return[{type:`CIMGeometricEffectAddControlPoints`,angleTolerance:90,primitiveName:`spike-control-points`},{type:`CIMGeometricEffectSuppress`,suppress:!0,invert:!0,primitiveName:`spike-stroke-suppress`}]}function p(e){let{color:t,symbolStyle:n}=e,r=n?.includes(`solid-fill`),i=n?.includes(`gradient-fill`);if(!r&&!i||!t)return;if(r)return{type:`CIMSolidFill`,enable:!0,colorLocked:!1,color:t?.toArray()};let a=t.clone();return a.a=0,{type:`CIMGradientFill`,enable:!0,angle:90,colorRamp:{type:`CIMMultipartColorRamp`,colorRamps:[{type:`CIMLinearContinuousColorRamp`,fromColor:t.toArray(),toColor:a.toArray()}],weights:[1]},gradientMethod:`Linear`,gradientSize:70,gradientSizeUnits:`Relative`,gradientType:`Continuous`}}function m(n,r){let{defaultHeight:a,baseWidth:o,color:s,strokeColor:c,primitiveOverrides:l,symbolStyle:u,strokeWidth:f}=r,m=n.data.symbol?.type===`CIMPointSymbol`?n.data.symbol:null,g=m?.symbolLayers;if(!g)return n;let _=m.effects,v=_?.find(e=>e.type===`CIMGeometricEffectTaperedPolygon`),y=_?.find(e=>e.type===`CIMGeometricEffectRadial`&&e.primitiveName===i);o!=null&&v&&(v.fromWidth=o),a!=null&&y&&(y.length=a);let b=g?.find(e=>e.type===`CIMSolidStroke`),x=g?.find(e=>e.type===`CIMSolidFill`),S=g?.find(e=>e.type===`CIMGradientFill`),C=S?.colorRamp?.type===`CIMMultipartColorRamp`&&S.colorRamp.colorRamps[0]?.type===`CIMLinearContinuousColorRamp`?S.colorRamp.colorRamps[0]:null;if(u){let t=x?.color??C?.fromColor??b?.color,n=s??(t?new e(t):void 0),i=b?.color??t,a=c??(i?new e(i):void 0),o=u.includes(`solid-fill`),l=u.includes(`gradient-fill`);if(!o&&!l&&h(g,x??S),n){if(o)h(g,S),x?x.color=n?.toArray():g.push(p({...r,color:n}));else if(l){if(h(g,x),!S)g.push(p({...r,color:n}));else if(C&&s){let e=n.clone();e.a=0,C.fromColor=n.toArray(),C.toColor=e.toArray()}}}if(b){let e=d({...r,strokeColor:a,color:n});b.effects=e.effects,b.color=e.color,b.width=e.width,b.colorLocked=e.colorLocked}}else if(b&&(c&&(b.color=c.toArray()),f!=null&&(b.width=f)),x&&s&&(x.color=s.toArray()),C&&s){let e=s.clone();e.a=0,C.fromColor=s.toArray(),C.toColor=e.toArray()}return l!==void 0&&(n.data.primitiveOverrides=t(l)),n}function h(e,t){if(!t)return;let n=e.indexOf(t);n!==-1&&e.splice(n,1)}export{c as createPrimitiveOverrides,l as createSpikeSymbol,s as defaultSpikeSymbolStyle,m as updateSpikeSymbol};
25
+ `,returnType:`Default`};return[{type:`CIMPrimitiveOverride`,primitiveName:a,propertyName:`Length`,valueExpressionInfo:d}]}function u(e){let{primitiveOverrides:t,baseWidth:n,defaultHeight:r}=e,c=d(e);return new i({data:{type:`CIMSymbolReference`,symbol:{type:`CIMPointSymbol`,effects:[{type:`CIMGeometricEffectRadial`,primitiveName:a,angle:90,length:r??s},{type:`CIMGeometricEffectTaperedPolygon`,fromWidth:n??o,toWidth:1,length:5}],symbolLayers:c,haloSize:1,scaleX:1,angleAlignment:`Display`},primitiveOverrides:t}})}function d(e){let t=[f(e)],n=m(e);return n&&t.push(n),t}function f(e){let{strokeColor:t,strokeWidth:r,symbolStyle:i}=e,a=i?.includes(`solid-fill`)||i?.includes(`gradient-fill`),o=t?.toArray(),s=!1;return i?.includes(`outline`)&&a?s=!0:o=e.color?.toArray(),{type:`CIMSolidStroke`,effects:p(i),enable:!0,colorLocked:s,capStyle:`Round`,joinStyle:`Round`,lineStyle3D:`Strip`,miterLimit:4,width:r??n,color:o}}function p(e){if(!e?.includes(`closed`))return[{type:`CIMGeometricEffectAddControlPoints`,angleTolerance:90,primitiveName:`spike-control-points`},{type:`CIMGeometricEffectSuppress`,suppress:!0,invert:!0,primitiveName:`spike-stroke-suppress`}]}function m(e){let{color:t,symbolStyle:n}=e,r=n?.includes(`solid-fill`),i=n?.includes(`gradient-fill`);if(!r&&!i||!t)return;if(r)return{type:`CIMSolidFill`,enable:!0,colorLocked:!1,color:t?.toArray()};let a=t.clone();return a.a=0,{type:`CIMGradientFill`,enable:!0,angle:90,colorRamp:{type:`CIMMultipartColorRamp`,colorRamps:[{type:`CIMLinearContinuousColorRamp`,fromColor:t.toArray(),toColor:a.toArray()}],weights:[1]},gradientMethod:`Linear`,gradientSize:70,gradientSizeUnits:`Relative`,gradientType:`Continuous`}}function h(n,r){let{defaultHeight:i,baseWidth:o,color:s,strokeColor:c,primitiveOverrides:l,symbolStyle:u,strokeWidth:d}=r,p=n.data.symbol?.type===`CIMPointSymbol`?n.data.symbol:null,h=p?.symbolLayers;if(!h)return n;let _=p.effects,v=_?.find(e=>e.type===`CIMGeometricEffectTaperedPolygon`),y=_?.find(e=>e.type===`CIMGeometricEffectRadial`&&e.primitiveName===a);o!=null&&v&&(v.fromWidth=o),i!=null&&y&&(y.length=i);let b=h?.find(e=>e.type===`CIMSolidStroke`),x=h?.find(e=>e.type===`CIMSolidFill`),S=h?.find(e=>e.type===`CIMGradientFill`),C=S?.colorRamp?.type===`CIMMultipartColorRamp`&&S.colorRamp.colorRamps[0]?.type===`CIMLinearContinuousColorRamp`?S.colorRamp.colorRamps[0]:null;if(u){let t=x?.color??C?.fromColor??b?.color,n=s??(t?new e(t):void 0),i=b?.color??t,a=c??(i?new e(i):void 0),o=u.includes(`solid-fill`),l=u.includes(`gradient-fill`);if(!o&&!l&&g(h,x??S),n){if(o)g(h,S),x?x.color=n?.toArray():h.push(m({...r,color:n}));else if(l){if(g(h,x),!S)h.push(m({...r,color:n}));else if(C&&s){let e=n.clone();e.a=0,C.fromColor=n.toArray(),C.toColor=e.toArray()}}}if(b){let e=f({...r,strokeColor:a,color:n});b.effects=e.effects,b.color=e.color,b.width=e.width,b.colorLocked=e.colorLocked}}else if(b&&(c&&(b.color=c.toArray()),d!=null&&(b.width=d)),x&&s&&(x.color=s.toArray()),C&&s){let e=s.clone();e.a=0,C.fromColor=s.toArray(),C.toColor=e.toArray()}return l!==void 0&&(n.data.primitiveOverrides=t(l)),n}function g(e,t){if(!t)return;let n=e.indexOf(t);n!==-1&&e.splice(n,1)}export{l as createPrimitiveOverrides,u as createSpikeSymbol,c as defaultSpikeSymbolStyle,h as updateSpikeSymbol};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{px2pt as t}from"../core/screenUtils.js";import{property as n,subclass as r}from"../core/accessorSupport/decorators.js";import i from"./LineStyleMarker3D.js";import a from"./Symbol3DLayer.js";import o from"./patterns/LineStylePattern3D.js";import{symbol3dLinePatternProperty as s}from"./patterns/utils.js";import{white as c}from"./support/colors.js";import{screenSizeProperty as l}from"./support/materialUtils.js";import u from"./support/Symbol3DMaterial.js";import{lineJoins as d,lineCaps as f}from"./support/symbolLayerUtils3D.js";import{enumeration as p}from"../core/accessorSupport/decorators/enumeration.js";var m;let h=class extends a{static{m=this}constructor(e){super(e),this.material=null,this.type=`line`,this.join=`miter`,this.cap=`butt`,this.pattern=null,this.imagePattern=null,this.marker=null}get size(){return this._get(`size`)??t(1)}set size(e){this._set(`size`,e)}clone(){let e={enabled:this.enabled,material:this.material==null?null:this.material.clone(),size:this.size,join:this.join,cap:this.cap,pattern:this.pattern==null?null:this.pattern.clone(),imagePattern:this.imagePattern==null?null:this.imagePattern.clone(),marker:this.marker==null?null:this.marker.clone()};return new m(e)}static fromSimpleLineSymbol(e){let n={enabled:!0,size:e.width??t(1),cap:e.cap||`butt`,join:e.join||`miter`,pattern:e.style?new o({style:e.style}):null,imagePattern:null,material:new u({color:(e.color||c).clone()}),marker:e.marker?new i({placement:e.marker.placement,style:e.marker.style,color:e.marker.color?.clone()??null}):null};return new m(n)}};e([n({type:u,json:{write:!0}})],h.prototype,`material`,void 0),e([p({Line:`line`},{readOnly:!0})],h.prototype,`type`,void 0),e([n({type:d,json:{write:!0,default:`miter`}})],h.prototype,`join`,void 0),e([n({type:f,json:{write:!0,default:`butt`}})],h.prototype,`cap`,void 0),e([n({...l,json:{write:{isRequired:!0}}})],h.prototype,`size`,null),e([n(s)],h.prototype,`pattern`,void 0),e([n()],h.prototype,`imagePattern`,void 0),e([n({types:{key:`type`,base:i,typeMap:{style:i}},json:{write:!0}})],h.prototype,`marker`,void 0),h=m=e([r(`esri.symbols.LineSymbol3DLayer`)],h);export{h as default};
2
+ import{__decorate as e}from"tslib";import{onePixelInPoints as t}from"../core/screenUtils.js";import{property as n,subclass as r}from"../core/accessorSupport/decorators.js";import i from"./LineStyleMarker3D.js";import a from"./Symbol3DLayer.js";import o from"./patterns/LineStylePattern3D.js";import{symbol3dLinePatternProperty as s}from"./patterns/utils.js";import{white as c}from"./support/colors.js";import{screenSizeProperty as l}from"./support/materialUtils.js";import u from"./support/Symbol3DMaterial.js";import{lineJoins as d,lineCaps as f}from"./support/symbolLayerUtils3D.js";import{enumeration as p}from"../core/accessorSupport/decorators/enumeration.js";var m;let h=class extends a{static{m=this}constructor(e){super(e),this.material=null,this.type=`line`,this.join=`miter`,this.cap=`butt`,this.pattern=null,this.imagePattern=null,this.marker=null}get size(){return this._get(`size`)??t}set size(e){this._set(`size`,e)}clone(){let e={enabled:this.enabled,material:this.material==null?null:this.material.clone(),size:this.size,join:this.join,cap:this.cap,pattern:this.pattern==null?null:this.pattern.clone(),imagePattern:this.imagePattern==null?null:this.imagePattern.clone(),marker:this.marker==null?null:this.marker.clone()};return new m(e)}static fromSimpleLineSymbol(e){let n={enabled:!0,size:e.width??t,cap:e.cap||`butt`,join:e.join||`miter`,pattern:e.style?new o({style:e.style}):null,imagePattern:null,material:new u({color:(e.color||c).clone()}),marker:e.marker?new i({placement:e.marker.placement,style:e.marker.style,color:e.marker.color?.clone()??null}):null};return new m(n)}};e([n({type:u,json:{write:!0}})],h.prototype,`material`,void 0),e([p({Line:`line`},{readOnly:!0})],h.prototype,`type`,void 0),e([n({type:d,json:{write:!0,default:`miter`}})],h.prototype,`join`,void 0),e([n({type:f,json:{write:!0,default:`butt`}})],h.prototype,`cap`,void 0),e([n({...l,json:{write:{isRequired:!0}}})],h.prototype,`size`,null),e([n(s)],h.prototype,`pattern`,void 0),e([n()],h.prototype,`imagePattern`,void 0),e([n({types:{key:`type`,base:i,typeMap:{style:i}},json:{write:!0}})],h.prototype,`marker`,void 0),h=m=e([r(`esri.symbols.LineSymbol3DLayer`)],h);export{h as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Color.js";import{clone as n}from"../../core/lang.js";import{px2pt as r}from"../../core/screenUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import o from"./Callout3D.js";import s from"./LineCallout3DBorder.js";import{colorAndTransparencyProperty as c,screenSizeProperty as l}from"../support/materialUtils.js";import{enumeration as u}from"../../core/accessorSupport/decorators/enumeration.js";var d;let f=d=class extends o{constructor(e){super(e),this.type=`line`,this.color=new t([0,0,0,1]),this.border=null}get size(){return this._get(`size`)??r(1)}set size(e){this._set(`size`,e)}get visible(){return this.size>0&&this.color!=null&&this.color.a>0}clone(){return new d({color:n(this.color),size:this.size,border:n(this.border)})}};e([u({line:`line`})],f.prototype,`type`,void 0),e([i(c({colorRequiredOnWrite:!0}))],f.prototype,`color`,void 0),e([i({...l,json:{write:{isRequired:!0}}})],f.prototype,`size`,null),e([i({type:s,json:{write:!0}})],f.prototype,`border`,void 0),e([i({readOnly:!0})],f.prototype,`visible`,null),f=d=e([a(`esri.symbols.callouts.LineCallout3D`)],f);export{f as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Color.js";import{clone as n}from"../../core/lang.js";import{onePixelInPoints as r}from"../../core/screenUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import o from"./Callout3D.js";import s from"./LineCallout3DBorder.js";import{colorAndTransparencyProperty as c,screenSizeProperty as l}from"../support/materialUtils.js";import{enumeration as u}from"../../core/accessorSupport/decorators/enumeration.js";var d;let f=d=class extends o{constructor(e){super(e),this.type=`line`,this.color=new t([0,0,0,1]),this.border=null}get size(){return this._get(`size`)??r}set size(e){this._set(`size`,e)}get visible(){return this.size>0&&this.color!=null&&this.color.a>0}clone(){return new d({color:n(this.color),size:this.size,border:n(this.border)})}};e([u({line:`line`})],f.prototype,`type`,void 0),e([i(c({colorRequiredOnWrite:!0}))],f.prototype,`color`,void 0),e([i({...l,json:{write:{isRequired:!0}}})],f.prototype,`size`,null),e([i({type:s,json:{write:!0}})],f.prototype,`border`,void 0),e([i({readOnly:!0})],f.prototype,`visible`,null),f=d=e([a(`esri.symbols.callouts.LineCallout3D`)],f);export{f as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{defaultFontFamily as e}from"../../core/fontUtils.js";import has from"../../core/has.js";import{clone as t}from"../../core/lang.js";import n from"../../core/Logger.js";import{deg2rad as r}from"../../core/mathUtils.js";import i from"../../core/ObjectPool.js";import{px2pt as a,pt2px as o}from"../../core/screenUtils.js";import{GeometryCursor as s}from"../../geometry/GeometryCursor.js";import{empty as c,expandPointInPlace as l,center as u,width as d,height as f,diagonal as p,fromValues as m,create as h}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as g}from"../../geometry/support/boundsUtils.js";import{polygonCentroid as _}from"../../geometry/support/centroid.js";import{targetIntersectsPolygon as v,pointInPolygon as y,nearLine as b}from"../../geometry/support/intersectsBase.js";import{isPolygon as x,isPolyline as S,isExtent as C,isMultipoint as w,isPoint as T}from"../../geometry/support/jsonTypeUtils.js";import{SimpleEffectCursor as E}from"./CIMEffects.js";import ee from"./CIMImageColorSubstitutionHelper.js";import{getEffectOperator as te,getPlacementOperator as ne}from"./CIMOperators.js";import{Placement as re}from"./CIMPlacements.js";import{defaultCIMValues as D}from"./defaultCIMValues.js";import{fromCIMFontStyle as ie}from"./fromCIMFontStyle.js";import{getFirstFrame as O}from"./imageUtils.js";import{rotate as k}from"./mathUtils.js";import{addColorStops as A}from"./rasterizingUtils.js";import ae from"./Rect.js";import{parseRichTextRuns as j,hasRichTextFormattingTags as M}from"./richTextUtils.js";import N from"./TextRasterizer.js";import{getNumericValue as P,isSVGImage as F,getRelativeGradientSize as I,getEffectsInflateSize as oe,fromCIMFontDecoration as se,fromCIMHorizontalAlignment as ce,fromCIMVerticalAlignment as le,getFillColor as L,getStrokeColor as R,getStrokeWidth as z,getFontWeight as B,getFontStyle as V,isCIMFill as H,getSize as U}from"./utils.js";import{destroyHiddenSvg as ue,createHiddenSvg as de,createSvgElement as fe}from"../../views/2d/engine/svgUtils.js";import{magicLabelLineHeight as pe,glyphSize as me,hittestToleranceSmallSymbol as he,hittestSmallSymbolThreshold as ge}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as _e}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as ve,getLineWidth as ye}from"../../views/2d/layers/graphics/graphicsUtils.js";const W=Math.PI/180,G=.5,K=()=>n.getLogger(`esri.symbols.cim.CIMSymbolDrawHelper`);class q{constructor(e){this._t=e}static createIdentity(){return new q([1,0,0,0,1,0])}clone(){let e=this._t;return new q(e.slice())}transform(e){let t=this._t;return[t[0]*e[0]+t[1]*e[1]+t[2],t[3]*e[0]+t[4]*e[1]+t[5]]}static createScale(e,t){return new q([e,0,0,0,t,0])}scale(e,t){let n=this._t;return n[0]*=e,n[1]*=e,n[2]*=e,n[3]*=t,n[4]*=t,n[5]*=t,this}scaleRatio(){return Math.sqrt(this._t[0]*this._t[0]+this._t[1]*this._t[1])}static createTranslate(e,t){return new q([0,0,e,0,0,t])}translate(e,t){let n=this._t;return n[2]+=e,n[5]+=t,this}static createRotate(e){let t=Math.cos(e),n=Math.sin(e);return new q([t,-n,0,n,t,0])}rotate(e){return q.multiply(this,q.createRotate(e),this)}angle(){let e=this._t[0],t=this._t[3],n=Math.sqrt(e*e+t*t);return[e/n,t/n]}static multiply(e,t,n){let r=e._t,i=t._t,a=r[0]*i[0]+r[3]*i[1],o=r[1]*i[0]+r[4]*i[1],s=r[2]*i[0]+r[5]*i[1]+i[2],c=r[0]*i[3]+r[3]*i[4],l=r[1]*i[3]+r[4]*i[4],u=r[2]*i[3]+r[5]*i[4]+i[5],d=n._t;return d[0]=a,d[1]=o,d[2]=s,d[3]=c,d[4]=l,d[5]=u,n}invert(){let e=this._t,t=e[0]*e[4]-e[1]*e[3];if(t===0)return new q([0,0,0,0,0,0]);t=1/t;let n=(e[1]*e[5]-e[2]*e[4])*t,r=(e[2]*e[3]-e[0]*e[5])*t,i=e[4]*t,a=-e[1]*t,o=-e[3]*t,s=e[0]*t;return new q([i,a,n,o,s,r])}}class J{constructor(e,t){this._resourceManager=e,this._transfos=[],this._sizeTransfos=[],this._textScaling=[],this._geomUnitsPerPoint=1,this._placementPool=new i(()=>new re,void 0,void 0,100),this._earlyReturn=!1,this._mapRotation=0,this._transfos.push(t||q.createIdentity()),this._sizeTransfos.push(t?t.scaleRatio():1),this._textScaling.push(1)}setTransform(e,t){this._transfos=[e||q.createIdentity()],this._sizeTransfos=[t||(e?e.scaleRatio():1)],this._textScaling=[1]}setGeomUnitsPerPoint(e){this._geomUnitsPerPoint=e}transformPt(e){return this._transfos[this._transfos.length-1].transform(e)}transformSize(e){return e*this._sizeTransfos[this._sizeTransfos.length-1]}scaleText(e){return e*this._textScaling[this._textScaling.length-1]}reverseTransformPt(e){return this._transfos[this._transfos.length-1].invert().transform(e)}reverseTransformSize(e){return e/this._sizeTransfos[this._sizeTransfos.length-1]}reverseTransformScalar(e){return e/this._transfos[this._transfos.length-1].scaleRatio()}reverseScaleText(e){return e/this._textScaling[this._textScaling.length-1]}getTransformAngle(){return this._transfos[this._transfos.length-1].angle()}geomUnitsPerPoint(){return this.isEmbedded()?1:this._geomUnitsPerPoint}prevGeomUnitsPerPoint(){return this._transfos.length>2?1:this._geomUnitsPerPoint}isEmbedded(){return this._transfos.length>1}back(){return this._transfos[this._transfos.length-1]}push(e,t=!1,n=1){let r=t?e.scaleRatio():1;q.multiply(e,this.back(),e),this._transfos.push(e),this._sizeTransfos.push(this._sizeTransfos[this._sizeTransfos.length-1]*r),this._textScaling.push(this._textScaling[this._textScaling.length-1]*n)}pop(){this._transfos.splice(-1,1),this._sizeTransfos.splice(-1,1),this._textScaling.splice(-1,1)}drawSymbol(e,t,n){if(e)switch(e.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:this.drawMultiLayerSymbol(e,t);break;case`CIMTextSymbol`:this.drawTextSymbol(e,t,n)}}drawMultiLayerSymbol(e,t){if(!e||!t)return;let n=e.symbolLayers;if(!n)return;let r=e.effects;if(r&&r.length>0){let e=this.executeEffects(r,t);if(e){let t=e.next();for(;t;)this.drawSymbolLayers(n,t.asJSON()),t=e.next()}}else this.drawSymbolLayers(n,t)}executeEffects(e,t){let n=this.geomUnitsPerPoint(),r=oe(e),i=new E(s.fromJSONCIM(t));for(let a of e){let e=te(a);e&&(i=e.execute(i,a,{geomUnitsPerPoint:n,tileKey:null,maxInflateSize:r,scale:null,spatialReference:t.spatialReference,preventClipping:!1}))}return i}drawSymbolLayers(e,t){let n=e.length;for(;n--;){let r=e[n];if(!r||r.enable===!1)continue;let i=r.effects;if(i&&i.length>0){let e=this.executeEffects(i,t);if(e){let t=null;for(;(t=e.next())&&(this.drawSymbolLayer(r,t.asJSON()),!this._earlyReturn););}}else this.drawSymbolLayer(r,t);if(this._earlyReturn)return}}drawSymbolLayer(e,t){switch(e.type){case`CIMSolidFill`:this.drawSolidFill(t,e.color,e.path);break;case`CIMHatchFill`:this.drawHatchFill(t,e);break;case`CIMPictureFill`:this.drawPictureFill(t,e);break;case`CIMGradientFill`:this.drawGradientFill(t,e);break;case`CIMSolidStroke`:this.drawSolidStroke(t,e.color,e.width,e.capStyle,e.joinStyle,e.miterLimit,e.path);break;case`CIMPictureStroke`:this.drawPictureStroke(t,e);break;case`CIMGradientStroke`:this.drawGradientStroke(t,e);break;case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:this.drawMarkerLayer(e,t)}}drawHatchFill(e,t){let n=Se(t,e,this.geomUnitsPerPoint());n&&(this.pushClipPath(e),this.drawMultiLayerSymbol(t.lineSymbol,n),this.popClipPath())}drawPictureFill(e,t){}drawGradientFill(e,t){}drawPictureStroke(e,t){}drawGradientStroke(e,t){}drawMarkerLayer(e,t){let n=e.markerPlacement;if(n){let r=ne(n);if(r){let i=n.type===`CIMMarkerPlacementInsidePolygon`||n.type===`CIMMarkerPlacementPolygonCenter`&&n.clipAtBoundary;i&&this.pushClipPath(t);let a=r.execute(s.fromJSONCIM(t),n,this.geomUnitsPerPoint(),null);if(a){let t=null;for(;(t=a.next())&&(this.drawMarker(e,t),!this._earlyReturn););}i&&this.popClipPath()}}else{let n=this._placementPool.acquire();if(T(t))n.tx=t.x,n.ty=t.y,this.drawMarker(e,n);else if(x(t)){let r=_(t);r&&([n.tx,n.ty]=r,this.drawMarker(e,n))}else if(S(t)){for(let r of t.paths)for(let t of r)if(n.tx=t[0],n.ty=t[1],this.drawMarker(e,n),this._earlyReturn)break}else for(let r of t.points)if(n.tx=r[0],n.ty=r[1],this.drawMarker(e,n),this._earlyReturn)break;this._placementPool.release(n)}}drawMarker(e,t){switch(e.type){case`CIMCharacterMarker`:case`CIMPictureMarker`:this.drawPictureMarker(e,t);break;case`CIMVectorMarker`:this.drawVectorMarker(e,t)}}drawPictureMarker(e,t){if(!e)return;let n=this._resourceManager.getResource(e.url),r=P(e.size,D.CIMPictureMarker.size);if(n==null||r<=0)return;let i=n.width,a=n.height;if(!i||!a)return;let o=i/a,s=P(e.scaleX,1),c=q.createIdentity(),l=e.anchorPoint;if(l){let t=l.x,n=l.y;e.anchorPointUnits!==`Absolute`&&(t*=r*o*s,n*=r),c.translate(-t,-n)}let u=P(e.rotation);e.rotateClockwise&&(u=-u),this._mapRotation&&(u+=this._mapRotation),u&&c.rotate(u*W);let d=P(e.offsetX),f=P(e.offsetY);if(d||f){if(this._mapRotation){let e=W*this._mapRotation,t=Math.cos(e),n=Math.sin(e),r=d*t-f*n,i=d*n+f*t;d=r,f=i}c.translate(d,f)}let p=this.geomUnitsPerPoint();p!==1&&c.scale(p,p);let m=t.getAngle();m&&c.rotate(m),c.translate(t.tx,t.ty),this.push(c),this.drawImage(e,r),this.pop()}drawVectorMarker(e,t){if(!e)return;let n=e.markerGraphics;if(!n)return;let r=P(e.size,D.CIMVectorMarker.size),i=e.frame,a=i?i.ymax-i.ymin:0,o=r&&a?r/a:1,s=q.createIdentity();i&&s.translate(-(i.xmax+i.xmin)*.5,-(i.ymax+i.ymin)*.5);let c=e.anchorPoint;if(c){let t=c.x,n=c.y;e.anchorPointUnits===`Absolute`?(t/=o,n/=o):i&&(t*=i.xmax-i.xmin,n*=i.ymax-i.ymin),s.translate(-t,-n)}o!==1&&s.scale(o,o);let l=P(e.rotation);e.rotateClockwise&&(l=-l),this._mapRotation&&(l+=this._mapRotation),l&&s.rotate(l*W);let u=P(e.offsetX),d=P(e.offsetY);if(u||d){if(this._mapRotation){let e=W*this._mapRotation,t=Math.cos(e),n=Math.sin(e),r=u*t-d*n,i=u*n+d*t;u=r,d=i}s.translate(u,d)}let f=this.geomUnitsPerPoint();f!==1&&s.scale(f,f);let p=t.getAngle();p&&s.rotate(p),s.translate(t.tx,t.ty);let m=e.scaleSymbolsProportionally?1:o;this.push(s,e.scaleSymbolsProportionally,m);for(let e of n){(!e?.symbol||!e.geometry)&&K().error(`Invalid marker graphic`,e);let t=e.textString;if(typeof t==`number`&&(t=t.toString()),this.drawSymbol(e.symbol,e.geometry,t),this._earlyReturn)break}this.pop()}drawTextSymbol(e,t,n){if(!e||!T(t)||P(e.height,D.CIMTextSymbol.height)<=0)return;let r=q.createIdentity(),i=P(e.angle);i=-i,i&&r.rotate(i*W);let a=P(e.offsetX),o=P(e.offsetY);(a||o)&&r.translate(a,o);let s=this.geomUnitsPerPoint();s!==1&&r.scale(s,s),r.translate(t.x,t.y),this.push(r),this.drawText(e,n),this.pop()}}class be extends J{constructor(e,t){super(e,t),this.reset()}reset(){this._xmin=this._ymin=1/0,this._xmax=this._ymax=-1/0,this._clipCount=0}envelope(){return new ae(this._xmin,this._ymin,this._xmax-this._xmin,this._ymax-this._ymin)}bounds(){return m(this._xmin,this._ymin,this._xmax,this._ymax)}drawSolidFill(e){if(!(!e||this._clipCount>0)){if(x(e))this._processPath(e.rings,0);else if(S(e))this._processPath(e.paths,0);else if(C(e)){let t=X(e);t&&this._processPath(t.rings,0)}else console.error(`drawSolidFill Unexpected geometry type!`)}}drawSolidStroke(e,t,n){if(!e||this._clipCount>0||n==null||n<=0)return;let r=Math.max(this.transformSize(P(n,D.CIMSolidStroke.width))*.5,.5*G);if(x(e))this._processPath(e.rings,r);else if(S(e))this._processPath(e.paths,r);else if(C(e)){let t=X(e);t&&this._processPath(t.rings,r)}else console.error(`drawSolidStroke unexpected geometry type!`)}drawMarkerLayer(e,t){x(t)&&e.markerPlacement&&(e.markerPlacement.type===`CIMMarkerPlacementInsidePolygon`||e.markerPlacement.type===`CIMMarkerPlacementPolygonCenter`&&e.markerPlacement.clipAtBoundary)?this._processPath(t.rings,0):super.drawMarkerLayer(e,t)}drawHatchFill(e,t){this.drawSolidFill(e)}drawPictureFill(e,t){this.drawSolidFill(e)}drawGradientFill(e,t){this.drawSolidFill(e)}drawPictureStroke(e,t){this.drawSolidStroke(e,null,t.width)}drawGradientStroke(e,t){this.drawSolidStroke(e,null,t.width)}pushClipPath(e){this.drawSolidFill(e),this._clipCount++}popClipPath(){this._clipCount--}drawImage(e,t){let{url:n}=e,r=P(e.scaleX,1),i=r*t,a=t,o=this._resourceManager.getResource(n);if(o!=null){let e=o.height/o.width;i=r*(t?e>1?t:t/e:o.width),a=t?e>1?t*e:t:o.height}this._merge(this.transformPt([-i/2,-a/2]),0),this._merge(this.transformPt([-i/2,a/2]),0),this._merge(this.transformPt([i/2,-a/2]),0),this._merge(this.transformPt([i/2,a/2]),0)}drawText(e,t){if(!t||t.length===0)return;this._textRasterizer||=new N;let n=Q(e),r=j({textString:t,font:n.font,symbol:e,supportsRichText:M(t)}),[i,o]=r?this._textRasterizer.computeRichTextSize(r,n):this._textRasterizer.computeTextSize(t,n);i=a(i),o=a(o);let s=this.transformSize(1)*this.reverseTransformScalar(1);i*=s,o*=s;let c=e.horizontalAlignment??D.CIMTextSymbol.horizontalalignment,l=e.verticalAlignment??D.CIMTextSymbol.verticalalignment,u=0;switch(c){case`Left`:u=i/2;break;case`Right`:u=-i/2}let d=0;switch(l){case`Bottom`:d=o/2;break;case`Top`:d=-o/2;break;case`Baseline`:d=o/6}this._merge(this.transformPt([-i/2+u,-o/2+d]),0),this._merge(this.transformPt([-i/2+u,o/2+d]),0),this._merge(this.transformPt([i/2+u,-o/2+d]),0),this._merge(this.transformPt([i/2+u,o/2+d]),0)}_processPath(e,t){if(e)for(let n of e){let e=n?n.length:0;if(e>1){this._merge(this.transformPt(n[0]),t);for(let r=1;r<e;r++)this._merge(this.transformPt(n[r]),t)}}}_merge(e,t){e[0]-t<this._xmin&&(this._xmin=e[0]-t),e[0]+t>this._xmax&&(this._xmax=e[0]+t),e[1]-t<this._ymin&&(this._ymin=e[1]-t),e[1]+t>this._ymax&&(this._ymax=e[1]+t)}}class Y extends J{constructor(){super(...arguments),this._hittestType=`point`,this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null,this._svg=null,this._path=null,this._canvas=null}destroy(){this._svg=ue(this._svg),this._path=null,this._canvas=null}hitTest(e,t,n,r){let{textInfo:i,mapRotation:s,resolution:c,searchDist:l,hittestType:u,isScreenAligned:d}=r;this._resetHittest();let f=c*o(1);switch(this.setGeomUnitsPerPoint(f),u){case`point`:if(e.length!==1)return K().error(`Unexpected hittest area`,e),!1;this._hittestType=`point`,this._searchDistPoint=l/2/f,this._searchTarget=[[e[0].x,e[0].y]];break;case`rect`:if(e.length!==4)return K().error(`Unexpected hittest area`,e),!1;this._hittestType=`rect`,this._searchDistPoint=0,this._searchTarget=e.map(e=>[e.x,e.y]);break;case`polygon`:this._hittestType=`polygon`,this._searchDistPoint=0,this._searchTarget=e.map(e=>[e.x,e.y])}if(this._textInfo=i,this._mapRotation=d?s:0,!has(`esri-mobile`)){let e=a(he*window.devicePixelRatio),n=a(ge);(t?.type!==`CIMLineSymbol`&&t?.type!==`CIMPolygonSymbol`||!t.symbolLayers?.some(H))&&t?.type!==`CIMMeshSymbol`&&(U(t)??0)<n&&(this._searchDistPoint=e)}return this._earlyReturn=!1,this.drawSymbol(t,n),this._earlyReturn}executeEffects(e,t){return e.at(-1)?.type===`CIMGeometricEffectDashes`&&(e=e.slice(0,-1)),super.executeEffects(e,t)}drawSolidFill(e,t,n){n==null?this._hitTestFill(e):this._hittestSvgPath(e,n,!0)}drawHatchFill(e,t){this._hitTestFill(e)}drawPictureFill(e,t){this._hitTestFill(e)}drawGradientFill(e,t){this._hitTestFill(e)}drawSolidStroke(e,t,n,r,i,a,o){o==null?this._hitTestStroke(e,n):this._hittestSvgPath(e,o,!1,n)}drawPictureStroke(e,t){this._hitTestStroke(e,t.width)}drawGradientStroke(e,t){this._hitTestStroke(e,t.width)}drawMarkerLayer(e,t){e.markerPlacement&&(e.markerPlacement.type===`CIMMarkerPlacementInsidePolygon`||e.markerPlacement.type===`CIMMarkerPlacementPolygonCenter`&&e.markerPlacement.clipAtBoundary)?this._hitTestFill(t):super.drawMarkerLayer(e,t)}drawTextSymbol(e,t,n){if(!e||!T(t)||P(e.height,D.CIMTextSymbol.height)<=0)return;let r=q.createIdentity(),i=this.geomUnitsPerPoint();i!==1&&r.scale(i,i),r.translate(t.x,t.y),this.push(r),this.drawText(e,n),this.pop()}pushClipPath(e){}popClipPath(){}drawImage(e,t){let{url:n}=e,r=P(e.scaleX,1),i=this._resourceManager.getResource(n);if(i==null||i.height===0||t===0)return;let a=t*this.geomUnitsPerPoint(),o=a*r*(i.width/i.height);if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]),t=this._searchDistPoint;Math.abs(e[0])<o/2+t&&Math.abs(e[1])<a/2+t&&(this._earlyReturn=!0)}else{let e=o/2,t=a/2,n=[[-e,t],[e,t],[e,-t],[-e,-t],[-e,t]],r=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;v(r,[n])&&(this._earlyReturn=!0)}}drawText(e,t){let n=this._textInfo;if(!n)return;let r=n.get(e);if(!r||!p(r.glyphMosaicItems))return;let i=ve(P(e.height,D.CIMTextSymbol.height)),{lineGapType:a,lineGap:o}=e,s=a?Z(a,P(o),i):0,c=e.horizontalAlignment??D.CIMTextSymbol.horizontalalignment,l=e.verticalAlignment??D.CIMTextSymbol.verticalalignment,u=e.callout?.type===`CIMBackgroundCallout`,d=_e(r.glyphMosaicItems,{scale:i/me,angle:P(e.angle),xOffset:P(e.offsetX),yOffset:P(e.offsetY),horizontalAlignment:c,verticalAlignment:l,maxLineWidth:ye(e.lineWidth),lineHeight:pe*Math.max(.25,Math.min(s||1,4)),decoration:e.font.decoration||`none`,useCIMAngleBehavior:!1,hasBackground:u}),f=this.reverseScaleText(1);for(let e of d.glyphs){let t=e.offsets,n=[[t.topLeft[0]*f,-t.topLeft[1]*f],[t.topRight[0]*f,-t.topRight[1]*f],[t.bottomRight[0]*f,-t.bottomRight[1]*f],[t.bottomLeft[0]*f,-t.bottomLeft[1]*f],[t.topLeft[0]*f,-t.topLeft[1]*f]];if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]);y(e,[n])&&(this._earlyReturn=!0)}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;v(e,[n])&&(this._earlyReturn=!0)}}function p(e){return e.type===`glyphs`?e.glyphs.length>0:e.runs.some(e=>e.glyphs.glyphs.length>0)}}_hitTestFill(e){let t=null;if(C(e)){let n=e;t=[[[n.xmin,n.ymin],[n.xmin,n.ymax],[n.xmax,n.ymax],[n.xmax,n.ymin],[n.xmin,n.ymin]]]}else if(x(e))t=e.rings;else if(S(e))t=e.paths;else return;if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]);if(y(e,t)&&(this._earlyReturn=!0),!this._earlyReturn){let n=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();b(e,t,n)&&(this._earlyReturn=!0)}}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;v(e,t)&&(this._earlyReturn=!0)}}_getSvgPath(){return(this._svg==null||this._path==null)&&(this._svg??=de(),this._path??=fe(`path`),this._svg.appendChild(this._path)),this._path}_getCanvasContext(e,t){return this._canvas??=document.createElement(`canvas`),this._canvas.width=e,this._canvas.height=t,this._canvas.getContext(`2d`,{willReadFrequently:!0})}_hittestSvgPath(e,t,n,r=0){let i=h();g(i,e);let a={x:i[0],y:i[1],width:i[2]-i[0],height:i[3]-i[1]},o=this._getSvgPath();o.setAttribute(`d`,t);let s=o.getBBox();if(this._hittestType===`point`){let e=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint(),i=this.reverseTransformPt(this._searchTarget[0]),o=Math.max(s.width/a.width,s.height/a.height),c=1,l=2*e*o;l<1&&(c=2/l,o*=c,s.x*=c,s.y*=c,s.width*=c,s.height*=c);let u=1+r*o/2,d=this._getCanvasContext(s.width+u*2,s.height+u*2);d.setTransform(c,0,0,c,-s.x+u,-s.y+u);let f=new Path2D(t);n?d.fill(f):(d.lineWidth=o/c*r,d.stroke(f));let p=(a.width*o-s.width)/2,m=(a.height*o-s.height)/2,h=Math.floor((i[0]-a.x-e)*o-p+u),g=Math.floor((a.height-(i[1]-a.y)-e)*o+m+u),_=Math.ceil(2*e*o),v=Math.ceil(2*e*o),y=d.getImageData(h,g,_,v).data;for(let e=3;e<y.length;e+=4)if(y[e]>127.5){this._earlyReturn=!0;return}}else{let e=[[a.x,a.y],[a.x,a.y+a.height],[a.x+a.width,a.y+a.height],[a.x+a.width,a.y],[a.x,a.y]],t=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;if(v(t,[e])){this._earlyReturn=!0;return}}}_hitTestStroke(e,t){let n=null;if(C(e)){let t=e;n=[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}else if(x(e))n=e.rings;else if(S(e))n=e.paths;else return;if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]),r=P(t,D.CIMSolidStroke.width)*this.geomUnitsPerPoint(),i=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();b(e,n,r/2+i)&&(this._earlyReturn=!0)}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;v(e,n)&&(this._earlyReturn=!0)}}_resetHittest(){this.setTransform(),this._hittestType=`point`,this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null}}class xe extends J{constructor(e,t,n,r){super(t,n),this._applyAdditionalRenderProps=r,this._colorSubstitutionHelper=new ee,this._ctx=e}drawSolidFill(e,t){if(!e)return;if(x(e))this._buildPath(e.rings,!0);else if(S(e))this._buildPath(e.paths,!0);else if(C(e))this._buildPath(X(e).rings,!0);else if(w(e))console.log(`CanvasDrawHelper.drawSolidFill - No implementation!`);else return;let n=this._ctx;n.fillStyle=typeof t==`string`?t:`rgba(`+Math.round(t[0])+`,`+Math.round(t[1])+`,`+Math.round(t[2])+`,`+(t[3]??255)/255+`)`,n.fill(`evenodd`)}drawSolidStroke(e,t,n,r,i,a){if(!e||!t||n===0)return;if(x(e))this._buildPath(e.rings,!0);else if(S(e))this._buildPath(e.paths,!1);else if(C(e))this._buildPath(X(e).rings,!0);else{console.log(`CanvasDrawHelper.drawSolidStroke isn't implemented!`);return}let o=this._ctx;o.strokeStyle=typeof t==`string`?t:`rgba(`+Math.round(t[0])+`,`+Math.round(t[1])+`,`+Math.round(t[2])+`,`+(t[3]??255)/255+`)`,o.lineWidth=Math.max(this.transformSize(n),G),this._setCapStyle(r),this._setJoinStyle(i),o.miterLimit=a,o.stroke()}pushClipPath(e){if(this._ctx.save(),x(e))this._buildPath(e.rings,!0);else if(S(e))this._buildPath(e.paths,!0);else if(C(e))this._buildPath(X(e).rings,!0);else return;this._ctx.clip(`evenodd`)}popClipPath(){this._ctx.restore()}drawImage(e,t){let{colorSubstitutions:n,url:r,tintColor:i}=e,a=P(e.scaleX,1),o=this._resourceManager.getResource(r);if(o==null)return;let s=t*(o.width/o.height),c=t;t||(s=o.width,c=o.height);let l=F(r)||`src`in o&&F(o.src),u=`getFrame`in o?O(o):o;n&&(u=this._colorSubstitutionHelper.applyColorSubstitution(u,n)),this._applyAdditionalRenderProps&&!l&&i&&(u=this._colorSubstitutionHelper.tintImageData(u,i));let d=this.transformPt([0,0]),[f,p]=this.getTransformAngle(),m=this.transformSize(1),h=this._ctx;h.save(),h.setTransform({m11:a*m*f,m12:a*m*p,m21:-m*p,m22:m*f,m41:d[0],m42:d[1]}),h.drawImage(u,-s/2,-c/2,s,c),h.restore()}drawText(e,t){if(!t||t.length===0)return;this._textRasterizer||=new N;let n=Q(e,this.transformSize(a(1))),r=j({textString:t,font:n.font,symbol:e,supportsRichText:M(t)}),i=r?this._textRasterizer.rasterizeRichText(r,n):this._textRasterizer.rasterizeText(t,n);if(!i)return;let{size:o,anchorX:s,anchorY:c,canvas:l}=i,u=o[0]*(s+.5),d=o[1]*(c-.5),f=this._ctx,p=this.transformPt([0,0]),[m,h]=this.getTransformAngle();f.save(),f.setTransform({m11:1*m,m12:1*h,m21:-1*h,m22:1*m,m41:p[0]-1*u,m42:p[1]+1*d}),f.drawImage(l,0,0),f.restore()}drawPictureFill(e,t){if(!e)return;let{colorSubstitutions:n,height:r,offsetX:i,offsetY:a,rotation:o,scaleX:s,tintColor:c,url:l}=t,u=this._resourceManager.getResource(l);if(u==null)return;if(x(e))this._buildPath(e.rings,!0);else if(S(e))this._buildPath(e.paths,!0);else if(C(e))this._buildPath(X(e).rings,!0);else if(w(e))console.log(`CanvasDrawHelper.drawPictureFill - No implementation!`);else return;let d=this._ctx,f=F(l)||`src`in u&&F(u.src),p=`getFrame`in u?O(u):u;n&&(p=this._colorSubstitutionHelper.applyColorSubstitution(p,n));let m;if(this._applyAdditionalRenderProps){f||c&&(p=this._colorSubstitutionHelper.tintImageData(p,c)),m=d.createPattern(p,`repeat`);let e=this.transformSize(1);o||=0,i=i?e*i:0,a=a?e*a:0,r&&=e*r;let t=r?r/u.height:1,n=s&&r?s*r/u.width:1;if(o!==0||t!==1||n!==1||i!==0||a!==0){let e=new DOMMatrix;e.rotateSelf(0,0,-o).translateSelf(i,a).scaleSelf(n,t,1),m.setTransform(e)}}else m=d.createPattern(p,`repeat`);d.save(),d.fillStyle=m,d.fill(`evenodd`),d.restore()}drawPictureStroke(e,n){if(!e)return;let{colorSubstitutions:r,capStyle:i,joinStyle:a,miterLimit:s,tintColor:c,url:l,width:u}=n,d=this._resourceManager.getResource(l);if(d==null)return;let f;if(x(e))f=e.rings;else if(S(e))f=e.paths;else if(C(e))f=X(e).rings;else if(w(e)){console.log(`CanvasDrawHelper.drawPictureStroke - No implementation!`);return}else return;u||=d.width;let p=F(l)||`src`in d&&F(d.src),m=`getFrame`in d?O(d):d;r&&(m=this._colorSubstitutionHelper.applyColorSubstitution(m,r)),this._applyAdditionalRenderProps&&(p||c&&(m=this._colorSubstitutionHelper.tintImageData(m,c)));let h=Math.max(this.transformSize(o(u)),.5),g=h/m.width,_=this._ctx,v=_.createPattern(m,`repeat-y`);_.save(),this._setCapStyle(i),this._setJoinStyle(a),s!==void 0&&(_.miterLimit=s),_.lineWidth=h;let y,b;for(let e of f)if(e=t(e),$(e),!(!e||e.length<=1)){y=this.transformPt(e[0]);for(let t=1;t<e.length;t++){b=this.transformPt(e[t]);let n=Ce(y,b),r=new DOMMatrix;r.translateSelf(0,y[1]-h/2).scaleSelf(g,g,1).rotateSelf(0,0,90-n),v.setTransform(r),_.strokeStyle=v,_.beginPath(),_.moveTo(y[0],y[1]),_.lineTo(b[0],b[1]),_.stroke(),y=b}}_.restore()}drawGradientFill(e,t){if(!e)return;let n;if(x(e))n=e.rings;else if(S(e))n=e.paths;else if(C(e))n=X(e).rings;else{K().error(`Unable to draw gradient fill`);return}this._buildPath(n,!0);let{angle:i,gradientMethod:a,gradientSize:s,gradientSizeUnits:m}=t,h=D.CIMGradientFill,g=t.gradientType??h.gradientType,_=-r(i??0),v=c();for(let e of n){let t=e?e.length:0;if(t>1)for(let n=0;n<t;n++){let t=this.transformPt(e[n]);(a===`Linear`||a===`Rectangular`)&&(t=k(t,-_)),l(v,t)}}let[y,b,w,T]=v,E=this._ctx;switch(E.save(),a){case`Buffered`:K().error(`Gradient method "${a}" currently unsupported.`);break;case`Linear`:{let e=(b+T)/2,n=m===`Absolute`?this.transformSize(o(s)):I(s,h.gradientSize)*(w-y),[r,i]=g===`Discrete`?[w,w-n]:[y+n,y],a=k([r,e],_),c=k([i,e],_),l=E.createLinearGradient(a[0],a[1],c[0],c[1]);A(l,t),E.fillStyle=l,E.fill(`evenodd`);break}case`Circular`:{let e=u(v),n=p(v)/2,r=m===`Absolute`?this.transformSize(o(s)):I(s,h.gradientSize)*n,[i,a]=g===`Discrete`?[n,n-r]:[r,0],c=E.createRadialGradient(e[0],e[1],i,e[0],e[1],a);A(c,t),E.fillStyle=c,E.fill(`evenodd`);break}case`Rectangular`:{let n=u(v),r=n[0],i=n[1],a=k(n,_),c=(n,r,i,o,s,c,l,u)=>{E.save(),this.pushClipPath(e);let d=k([s,c],_),f=k([l,u],_);E.beginPath(),E.moveTo(a[0],a[1]),E.lineTo(d[0],d[1]),E.lineTo(f[0],f[1]),E.lineTo(a[0],a[1]),E.clip();let p=k([n,r],_),m=k([i,o],_),h=E.createLinearGradient(p[0],p[1],m[0],m[1]);A(h,t),E.fillStyle=h,E.fill(`evenodd`),E.restore()},l=m===`Absolute`?this.transformSize(o(s)):I(s,h.gradientSize)*(d(v)/2),[p,x]=g===`Discrete`?[w,w-l]:[r+l,r];c(p,i,x,i,w,b,w,T),[p,x]=g===`Discrete`?[y,y+l]:[r-l,r],c(p,i,x,i,y,T,y,b),l=m===`Absolute`?this.transformSize(o(s)):I(s,h.gradientSize)*(f(v)/2);let[S,C]=g===`Discrete`?[T,T-l]:[i+l,i];c(r,S,r,C,w,T,y,T),[S,C]=g===`Discrete`?[b,b+l]:[i-l,i],c(r,S,r,C,y,b,w,b);break}}E.restore()}drawGradientStroke(e,n){let{capStyle:r,gradientMethod:i,gradientSize:a,gradientSizeUnits:s,joinStyle:c,miterLimit:l,width:u}=n;if(!e||u===0)return;let d;if(x(e))d=e.rings;else if(S(e))d=e.paths;else if(C(e))d=X(e).rings;else{K().error(`Unable to draw gradient stroke`);return}let f=n.gradientType??D.CIMGradientStroke.gradientType,p=Math.max(this.transformSize(o(u)),.5),m=this._ctx;m.save(),this._setCapStyle(r),this._setJoinStyle(c),l!==void 0&&(m.miterLimit=l),m.lineWidth=p;let h,g;for(let e of d){if(e=t(e),$(e),!e||e.length<=1)continue;let r=0;h=this.transformPt(e[0]);for(let t=1;t<e.length;t++){g=this.transformPt(e[t]);let n=g[0]-h[0],i=g[1]-h[1];r+=Math.sqrt(n*n+i*i),h=g}let c=s===`Absolute`?this.transformSize(o(a)):I(a,D.CIMGradientStroke.gradientSize)*(i===`AcrossLine`?p:r),l=0;h=this.transformPt(e[0]);for(let t=1;t<e.length;t++){g=this.transformPt(e[t]);let a=g[0]-h[0],o=g[1]-h[1],s=Math.sqrt(a*a+o*o),u,d,_,v;switch(i){case`AcrossLine`:{let[e,t]=k([a/s,o/s],-Math.PI/2),n=p/2,r=f===`Discrete`?n:c-n;u=(h[0]+g[0])/2+e*r,d=(h[1]+g[1])/2+t*r,_=u-e*c,v=d-t*c;break}case`AlongLine`:{let e=a/s,t=o/s;f===`Discrete`?(u=h[0]-e*l,d=h[1]-t*l,_=u+e*c,v=d+t*c):(_=h[0]+e*(r-l),v=h[1]+t*(r-l),u=_-e*c,d=v-t*c);break}default:K().error(`Unrecognized gradient method:`,i),m.restore();return}let y=m.createLinearGradient(u,d,_,v);A(y,n),m.strokeStyle=y,m.beginPath(),m.moveTo(h[0],h[1]),m.lineTo(g[0],g[1]),m.stroke(),l+=s,h=g}}m.restore()}_buildPath(e,t){let n=this._ctx;if(n.beginPath(),e)for(let r of e){let e=r?r.length:0;if(e>1){let i=this.transformPt(r[0]);n.moveTo(i[0],i[1]);for(let t=1;t<e;t++)i=this.transformPt(r[t]),n.lineTo(i[0],i[1]);t&&n.closePath()}}}_setCapStyle(e){switch(e){case`Butt`:this._ctx.lineCap=`butt`;break;case`Round`:this._ctx.lineCap=`round`;break;case`Square`:this._ctx.lineCap=`square`}}_setJoinStyle(e){switch(e){case`Bevel`:this._ctx.lineJoin=`bevel`;break;case`Round`:this._ctx.lineJoin=`round`;break;case`Miter`:this._ctx.lineJoin=`miter`}}}function Se(e,t,n){let r=P(e.separation,D.CIMHatchFill.separation)*n,i=P(e.rotation);if(r===0)return null;r<0&&(r=-r);let a=0,o=.5*r;for(;a>o;)a-=r;for(;a<-o;)a+=r;let s=h();g(s,t),s[0]-=o,s[1]-=o,s[2]+=o,s[3]+=o;let c=[[s[0],s[1]],[s[0],s[3]],[s[2],s[3]],[s[2],s[1]]];for(;i>180;)i-=180;for(;i<0;)i+=180;let l=Math.cos(i*W),u=Math.sin(i*W),d=-r*u,f=r*l,p=P(e.offsetX)*n,m=P(e.offsetY)*n;a=p*u-m*l;let _,v,y,b;_=y=Number.MAX_VALUE,v=b=-Number.MAX_VALUE;for(let e of c){let t=e[0],n=e[1],r=l*t+u*n,i=-u*t+l*n;_=Math.min(_,r),y=Math.min(y,i),v=Math.max(v,r),b=Math.max(b,i)}y=Math.floor(y/r)*r;let x=l*_-u*y-d*a/r,S=u*_+l*y-f*a/r,C=l*v-u*y-d*a/r,w=u*v+l*y-f*a/r,T=1+Math.round((b-y)/r),E=[];for(let e=0;e<T;e++)x+=d,S+=f,C+=d,w+=f,E.push([[x,S],[C,w]]);return{paths:E}}function Ce(e,t){let n=t[0]-e[0],r=t[1]-e[1];return 180/Math.PI*Math.atan2(r,n)}const X=e=>e?{spatialReference:e.spatialReference,rings:[[[e.xmin,e.ymin],[e.xmin,e.ymax],[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin]]]}:null,Z=(e,t,n)=>{switch(e){case`ExtraLeading`:return 1+t/n;case`Multiple`:return t;case`Exact`:return t/n}};function Q(t,n=1){let r=se(t),i=ie(t.fontStyleName),a=t.fontFamilyName??e,{weight:o,style:s}=i,c=n*(t.height||5),l=ce(t.horizontalAlignment),u=le(t.verticalAlignment),d=L(t),f=L(t.haloSymbol),p=f==null?0:n*(t.haloSize??0),m=R(t.symbol),h=n*(z(t.symbol)||0),g=t.callout?.type===`CIMBackgroundCallout`?t.callout.backgroundSymbol:null,_=L(g),v=z(g),y=R(g);return{color:d,size:c,horizontalAlignment:l,verticalAlignment:u,font:{family:a,style:V(s),weight:B(o),decoration:r},outline:{size:h||0,color:m},halo:{size:p||0,color:f,style:s},backgroundColor:_,borderLine:v!=null&&y!=null?{size:v,color:y}:null,pixelRatio:1,premultiplyColors:!0}}function $(e){let t=e[0],n=1,r,i,a,o,s;for(;n<e.length;)r=e[n][0]-t[0],i=e[n][1]-t[1],o=r===0?Math.PI/2:i/r,a!==void 0&&Math.abs(o-a)<=1e-4?(e.splice(n-1,1),t=s):(s=t,t=e[n],n++),a=o}export{J as CIMSymbolDrawHelper,xe as CanvasDrawHelper,be as EnvDrawHelper,Y as HittestDrawHelper,q as Transformation,W as cDegToRad,Z as lineGapType2LineHeight};
2
+ import{defaultFontFamily as e}from"../../core/fontUtils.js";import has from"../../core/has.js";import{clone as t}from"../../core/lang.js";import n from"../../core/Logger.js";import{deg2rad as r}from"../../core/mathUtils.js";import i from"../../core/ObjectPool.js";import{onePixelInPoints as a,pt2px as o,px2pt as s,onePointInPixels as c}from"../../core/screenUtils.js";import{GeometryCursor as l}from"../../geometry/GeometryCursor.js";import{empty as u,expandPointInPlace as d,center as f,width as p,height as m,diagonal as h,fromValues as g,create as _}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as v}from"../../geometry/support/boundsUtils.js";import{polygonCentroid as y}from"../../geometry/support/centroid.js";import{targetIntersectsPolygon as b,pointInPolygon as x,nearLine as S}from"../../geometry/support/intersectsBase.js";import{isPolygon as C,isPolyline as w,isExtent as T,isMultipoint as E,isPoint as D}from"../../geometry/support/jsonTypeUtils.js";import{SimpleEffectCursor as O}from"./CIMEffects.js";import ee from"./CIMImageColorSubstitutionHelper.js";import{getEffectOperator as te,getPlacementOperator as ne}from"./CIMOperators.js";import{Placement as re}from"./CIMPlacements.js";import{defaultCIMValues as k}from"./defaultCIMValues.js";import{fromCIMFontStyle as ie}from"./fromCIMFontStyle.js";import{getFirstFrame as A}from"./imageUtils.js";import{rotate as j}from"./mathUtils.js";import{addColorStops as M}from"./rasterizingUtils.js";import ae from"./Rect.js";import{parseRichTextRuns as N,hasRichTextFormattingTags as P}from"./richTextUtils.js";import F from"./TextRasterizer.js";import{getNumericValue as I,isSVGImage as L,getRelativeGradientSize as R,getEffectsInflateSize as oe,fromCIMFontDecoration as se,fromCIMHorizontalAlignment as ce,fromCIMVerticalAlignment as le,getFillColor as z,getStrokeColor as B,getStrokeWidth as V,getFontWeight as H,getFontStyle as U,isCIMFill as ue,getSize as de}from"./utils.js";import{destroyHiddenSvg as fe,createHiddenSvg as pe,createSvgElement as W}from"../../views/2d/engine/svgUtils.js";import{magicLabelLineHeight as me,glyphSize as he,hittestToleranceSmallSymbol as ge,hittestSmallSymbolThreshold as _e}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as ve}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as ye,getLineWidth as be}from"../../views/2d/layers/graphics/graphicsUtils.js";const G=Math.PI/180,K=.5,q=()=>n.getLogger(`esri.symbols.cim.CIMSymbolDrawHelper`);class J{constructor(e){this._t=e}static createIdentity(){return new J([1,0,0,0,1,0])}clone(){let e=this._t;return new J(e.slice())}transform(e){let t=this._t;return[t[0]*e[0]+t[1]*e[1]+t[2],t[3]*e[0]+t[4]*e[1]+t[5]]}static createScale(e,t){return new J([e,0,0,0,t,0])}scale(e,t){let n=this._t;return n[0]*=e,n[1]*=e,n[2]*=e,n[3]*=t,n[4]*=t,n[5]*=t,this}scaleRatio(){return Math.sqrt(this._t[0]*this._t[0]+this._t[1]*this._t[1])}static createTranslate(e,t){return new J([0,0,e,0,0,t])}translate(e,t){let n=this._t;return n[2]+=e,n[5]+=t,this}static createRotate(e){let t=Math.cos(e),n=Math.sin(e);return new J([t,-n,0,n,t,0])}rotate(e){return J.multiply(this,J.createRotate(e),this)}angle(){let e=this._t[0],t=this._t[3],n=Math.sqrt(e*e+t*t);return[e/n,t/n]}static multiply(e,t,n){let r=e._t,i=t._t,a=r[0]*i[0]+r[3]*i[1],o=r[1]*i[0]+r[4]*i[1],s=r[2]*i[0]+r[5]*i[1]+i[2],c=r[0]*i[3]+r[3]*i[4],l=r[1]*i[3]+r[4]*i[4],u=r[2]*i[3]+r[5]*i[4]+i[5],d=n._t;return d[0]=a,d[1]=o,d[2]=s,d[3]=c,d[4]=l,d[5]=u,n}invert(){let e=this._t,t=e[0]*e[4]-e[1]*e[3];if(t===0)return new J([0,0,0,0,0,0]);t=1/t;let n=(e[1]*e[5]-e[2]*e[4])*t,r=(e[2]*e[3]-e[0]*e[5])*t,i=e[4]*t,a=-e[1]*t,o=-e[3]*t,s=e[0]*t;return new J([i,a,n,o,s,r])}}class Y{constructor(e,t){this._resourceManager=e,this._transfos=[],this._sizeTransfos=[],this._textScaling=[],this._geomUnitsPerPoint=1,this._placementPool=new i(()=>new re,void 0,void 0,100),this._earlyReturn=!1,this._mapRotation=0,this._transfos.push(t||J.createIdentity()),this._sizeTransfos.push(t?t.scaleRatio():1),this._textScaling.push(1)}setTransform(e,t){this._transfos=[e||J.createIdentity()],this._sizeTransfos=[t||(e?e.scaleRatio():1)],this._textScaling=[1]}setGeomUnitsPerPoint(e){this._geomUnitsPerPoint=e}transformPt(e){return this._transfos[this._transfos.length-1].transform(e)}transformSize(e){return e*this._sizeTransfos[this._sizeTransfos.length-1]}scaleText(e){return e*this._textScaling[this._textScaling.length-1]}reverseTransformPt(e){return this._transfos[this._transfos.length-1].invert().transform(e)}reverseTransformSize(e){return e/this._sizeTransfos[this._sizeTransfos.length-1]}reverseTransformScalar(e){return e/this._transfos[this._transfos.length-1].scaleRatio()}reverseScaleText(e){return e/this._textScaling[this._textScaling.length-1]}getTransformAngle(){return this._transfos[this._transfos.length-1].angle()}geomUnitsPerPoint(){return this.isEmbedded()?1:this._geomUnitsPerPoint}prevGeomUnitsPerPoint(){return this._transfos.length>2?1:this._geomUnitsPerPoint}isEmbedded(){return this._transfos.length>1}back(){return this._transfos[this._transfos.length-1]}push(e,t=!1,n=1){let r=t?e.scaleRatio():1;J.multiply(e,this.back(),e),this._transfos.push(e),this._sizeTransfos.push(this._sizeTransfos[this._sizeTransfos.length-1]*r),this._textScaling.push(this._textScaling[this._textScaling.length-1]*n)}pop(){this._transfos.splice(-1,1),this._sizeTransfos.splice(-1,1),this._textScaling.splice(-1,1)}drawSymbol(e,t,n){if(e)switch(e.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:this.drawMultiLayerSymbol(e,t);break;case`CIMTextSymbol`:this.drawTextSymbol(e,t,n)}}drawMultiLayerSymbol(e,t){if(!e||!t)return;let n=e.symbolLayers;if(!n)return;let r=e.effects;if(r&&r.length>0){let e=this.executeEffects(r,t);if(e){let t=e.next();for(;t;)this.drawSymbolLayers(n,t.asJSON()),t=e.next()}}else this.drawSymbolLayers(n,t)}executeEffects(e,t){let n=this.geomUnitsPerPoint(),r=oe(e),i=new O(l.fromJSONCIM(t));for(let a of e){let e=te(a);e&&(i=e.execute(i,a,{geomUnitsPerPoint:n,tileKey:null,maxInflateSize:r,scale:null,spatialReference:t.spatialReference,preventClipping:!1}))}return i}drawSymbolLayers(e,t){let n=e.length;for(;n--;){let r=e[n];if(!r||r.enable===!1)continue;let i=r.effects;if(i&&i.length>0){let e=this.executeEffects(i,t);if(e){let t=null;for(;(t=e.next())&&(this.drawSymbolLayer(r,t.asJSON()),!this._earlyReturn););}}else this.drawSymbolLayer(r,t);if(this._earlyReturn)return}}drawSymbolLayer(e,t){switch(e.type){case`CIMSolidFill`:this.drawSolidFill(t,e.color,e.path);break;case`CIMHatchFill`:this.drawHatchFill(t,e);break;case`CIMPictureFill`:this.drawPictureFill(t,e);break;case`CIMGradientFill`:this.drawGradientFill(t,e);break;case`CIMSolidStroke`:this.drawSolidStroke(t,e.color,e.width,e.capStyle,e.joinStyle,e.miterLimit,e.path);break;case`CIMPictureStroke`:this.drawPictureStroke(t,e);break;case`CIMGradientStroke`:this.drawGradientStroke(t,e);break;case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:this.drawMarkerLayer(e,t)}}drawHatchFill(e,t){let n=we(t,e,this.geomUnitsPerPoint());n&&(this.pushClipPath(e),this.drawMultiLayerSymbol(t.lineSymbol,n),this.popClipPath())}drawPictureFill(e,t){}drawGradientFill(e,t){}drawPictureStroke(e,t){}drawGradientStroke(e,t){}drawMarkerLayer(e,t){let n=e.markerPlacement;if(n){let r=ne(n);if(r){let i=n.type===`CIMMarkerPlacementInsidePolygon`||n.type===`CIMMarkerPlacementPolygonCenter`&&n.clipAtBoundary;i&&this.pushClipPath(t);let a=r.execute(l.fromJSONCIM(t),n,this.geomUnitsPerPoint(),null);if(a){let t=null;for(;(t=a.next())&&(this.drawMarker(e,t),!this._earlyReturn););}i&&this.popClipPath()}}else{let n=this._placementPool.acquire();if(D(t))n.tx=t.x,n.ty=t.y,this.drawMarker(e,n);else if(C(t)){let r=y(t);r&&([n.tx,n.ty]=r,this.drawMarker(e,n))}else if(w(t)){for(let r of t.paths)for(let t of r)if(n.tx=t[0],n.ty=t[1],this.drawMarker(e,n),this._earlyReturn)break}else for(let r of t.points)if(n.tx=r[0],n.ty=r[1],this.drawMarker(e,n),this._earlyReturn)break;this._placementPool.release(n)}}drawMarker(e,t){switch(e.type){case`CIMCharacterMarker`:case`CIMPictureMarker`:this.drawPictureMarker(e,t);break;case`CIMVectorMarker`:this.drawVectorMarker(e,t)}}drawPictureMarker(e,t){if(!e)return;let n=this._resourceManager.getResource(e.url),r=I(e.size,k.CIMPictureMarker.size);if(n==null||r<=0)return;let i=n.width,a=n.height;if(!i||!a)return;let o=i/a,s=I(e.scaleX,1),c=J.createIdentity(),l=e.anchorPoint;if(l){let t=l.x,n=l.y;e.anchorPointUnits!==`Absolute`&&(t*=r*o*s,n*=r),c.translate(-t,-n)}let u=I(e.rotation);e.rotateClockwise&&(u=-u),this._mapRotation&&(u+=this._mapRotation),u&&c.rotate(u*G);let d=I(e.offsetX),f=I(e.offsetY);if(d||f){if(this._mapRotation){let e=G*this._mapRotation,t=Math.cos(e),n=Math.sin(e),r=d*t-f*n,i=d*n+f*t;d=r,f=i}c.translate(d,f)}let p=this.geomUnitsPerPoint();p!==1&&c.scale(p,p);let m=t.getAngle();m&&c.rotate(m),c.translate(t.tx,t.ty),this.push(c),this.drawImage(e,r),this.pop()}drawVectorMarker(e,t){if(!e)return;let n=e.markerGraphics;if(!n)return;let r=I(e.size,k.CIMVectorMarker.size),i=e.frame,a=i?i.ymax-i.ymin:0,o=r&&a?r/a:1,s=J.createIdentity();i&&s.translate(-(i.xmax+i.xmin)*.5,-(i.ymax+i.ymin)*.5);let c=e.anchorPoint;if(c){let t=c.x,n=c.y;e.anchorPointUnits===`Absolute`?(t/=o,n/=o):i&&(t*=i.xmax-i.xmin,n*=i.ymax-i.ymin),s.translate(-t,-n)}o!==1&&s.scale(o,o);let l=I(e.rotation);e.rotateClockwise&&(l=-l),this._mapRotation&&(l+=this._mapRotation),l&&s.rotate(l*G);let u=I(e.offsetX),d=I(e.offsetY);if(u||d){if(this._mapRotation){let e=G*this._mapRotation,t=Math.cos(e),n=Math.sin(e),r=u*t-d*n,i=u*n+d*t;u=r,d=i}s.translate(u,d)}let f=this.geomUnitsPerPoint();f!==1&&s.scale(f,f);let p=t.getAngle();p&&s.rotate(p),s.translate(t.tx,t.ty);let m=e.scaleSymbolsProportionally?1:o;this.push(s,e.scaleSymbolsProportionally,m);for(let e of n){(!e?.symbol||!e.geometry)&&q().error(`Invalid marker graphic`,e);let t=e.textString;if(typeof t==`number`&&(t=t.toString()),this.drawSymbol(e.symbol,e.geometry,t),this._earlyReturn)break}this.pop()}drawTextSymbol(e,t,n){if(!e||!D(t)||I(e.height,k.CIMTextSymbol.height)<=0)return;let r=J.createIdentity(),i=I(e.angle);i=-i,i&&r.rotate(i*G);let a=I(e.offsetX),o=I(e.offsetY);(a||o)&&r.translate(a,o);let s=this.geomUnitsPerPoint();s!==1&&r.scale(s,s),r.translate(t.x,t.y),this.push(r),this.drawText(e,n),this.pop()}}class xe extends Y{constructor(e,t){super(e,t),this.reset()}reset(){this._xmin=this._ymin=1/0,this._xmax=this._ymax=-1/0,this._clipCount=0}envelope(){return new ae(this._xmin,this._ymin,this._xmax-this._xmin,this._ymax-this._ymin)}bounds(){return g(this._xmin,this._ymin,this._xmax,this._ymax)}drawSolidFill(e){if(!(!e||this._clipCount>0)){if(C(e))this._processPath(e.rings,0);else if(w(e))this._processPath(e.paths,0);else if(T(e)){let t=X(e);t&&this._processPath(t.rings,0)}else console.error(`drawSolidFill Unexpected geometry type!`)}}drawSolidStroke(e,t,n){if(!e||this._clipCount>0||n==null||n<=0)return;let r=Math.max(this.transformSize(I(n,k.CIMSolidStroke.width))*.5,.5*K);if(C(e))this._processPath(e.rings,r);else if(w(e))this._processPath(e.paths,r);else if(T(e)){let t=X(e);t&&this._processPath(t.rings,r)}else console.error(`drawSolidStroke unexpected geometry type!`)}drawMarkerLayer(e,t){C(t)&&e.markerPlacement&&(e.markerPlacement.type===`CIMMarkerPlacementInsidePolygon`||e.markerPlacement.type===`CIMMarkerPlacementPolygonCenter`&&e.markerPlacement.clipAtBoundary)?this._processPath(t.rings,0):super.drawMarkerLayer(e,t)}drawHatchFill(e,t){this.drawSolidFill(e)}drawPictureFill(e,t){this.drawSolidFill(e)}drawGradientFill(e,t){this.drawSolidFill(e)}drawPictureStroke(e,t){this.drawSolidStroke(e,null,t.width)}drawGradientStroke(e,t){this.drawSolidStroke(e,null,t.width)}pushClipPath(e){this.drawSolidFill(e),this._clipCount++}popClipPath(){this._clipCount--}drawImage(e,t){let{url:n}=e,r=I(e.scaleX,1),i=r*t,a=t,o=this._resourceManager.getResource(n);if(o!=null){let e=o.height/o.width;i=r*(t?e>1?t:t/e:o.width),a=t?e>1?t*e:t:o.height}this._merge(this.transformPt([-i/2,-a/2]),0),this._merge(this.transformPt([-i/2,a/2]),0),this._merge(this.transformPt([i/2,-a/2]),0),this._merge(this.transformPt([i/2,a/2]),0)}drawText(e,t){if(!t||t.length===0)return;this._textRasterizer||=new F;let n=Q(e),r=N({textString:t,font:n.font,symbol:e,supportsRichText:P(t)}),[i,a]=r?this._textRasterizer.computeRichTextSize(r,n):this._textRasterizer.computeTextSize(t,n);i=s(i),a=s(a);let o=this.transformSize(1)*this.reverseTransformScalar(1);i*=o,a*=o;let c=e.horizontalAlignment??k.CIMTextSymbol.horizontalalignment,l=e.verticalAlignment??k.CIMTextSymbol.verticalalignment,u=0;switch(c){case`Left`:u=i/2;break;case`Right`:u=-i/2}let d=0;switch(l){case`Bottom`:d=a/2;break;case`Top`:d=-a/2;break;case`Baseline`:d=a/6}this._merge(this.transformPt([-i/2+u,-a/2+d]),0),this._merge(this.transformPt([-i/2+u,a/2+d]),0),this._merge(this.transformPt([i/2+u,-a/2+d]),0),this._merge(this.transformPt([i/2+u,a/2+d]),0)}_processPath(e,t){if(e)for(let n of e){let e=n?n.length:0;if(e>1){this._merge(this.transformPt(n[0]),t);for(let r=1;r<e;r++)this._merge(this.transformPt(n[r]),t)}}}_merge(e,t){e[0]-t<this._xmin&&(this._xmin=e[0]-t),e[0]+t>this._xmax&&(this._xmax=e[0]+t),e[1]-t<this._ymin&&(this._ymin=e[1]-t),e[1]+t>this._ymax&&(this._ymax=e[1]+t)}}class Se extends Y{constructor(){super(...arguments),this._hittestType=`point`,this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null,this._svg=null,this._path=null,this._canvas=null}destroy(){this._svg=fe(this._svg),this._path=null,this._canvas=null}hitTest(e,t,n,r){let{textInfo:i,mapRotation:a,resolution:o,searchDist:l,hittestType:u,isScreenAligned:d}=r;this._resetHittest();let f=o*c;switch(this.setGeomUnitsPerPoint(f),u){case`point`:if(e.length!==1)return q().error(`Unexpected hittest area`,e),!1;this._hittestType=`point`,this._searchDistPoint=l/2/f,this._searchTarget=[[e[0].x,e[0].y]];break;case`rect`:if(e.length!==4)return q().error(`Unexpected hittest area`,e),!1;this._hittestType=`rect`,this._searchDistPoint=0,this._searchTarget=e.map(e=>[e.x,e.y]);break;case`polygon`:this._hittestType=`polygon`,this._searchDistPoint=0,this._searchTarget=e.map(e=>[e.x,e.y])}if(this._textInfo=i,this._mapRotation=d?a:0,!has(`esri-mobile`)){let e=s(ge*window.devicePixelRatio),n=s(_e);(t?.type!==`CIMLineSymbol`&&t?.type!==`CIMPolygonSymbol`||!t.symbolLayers?.some(ue))&&t?.type!==`CIMMeshSymbol`&&(de(t)??0)<n&&(this._searchDistPoint=e)}return this._earlyReturn=!1,this.drawSymbol(t,n),this._earlyReturn}executeEffects(e,t){return e.at(-1)?.type===`CIMGeometricEffectDashes`&&(e=e.slice(0,-1)),super.executeEffects(e,t)}drawSolidFill(e,t,n){n==null?this._hitTestFill(e):this._hittestSvgPath(e,n,!0)}drawHatchFill(e,t){this._hitTestFill(e)}drawPictureFill(e,t){this._hitTestFill(e)}drawGradientFill(e,t){this._hitTestFill(e)}drawSolidStroke(e,t,n,r,i,a,o){o==null?this._hitTestStroke(e,n):this._hittestSvgPath(e,o,!1,n)}drawPictureStroke(e,t){this._hitTestStroke(e,t.width)}drawGradientStroke(e,t){this._hitTestStroke(e,t.width)}drawMarkerLayer(e,t){e.markerPlacement&&(e.markerPlacement.type===`CIMMarkerPlacementInsidePolygon`||e.markerPlacement.type===`CIMMarkerPlacementPolygonCenter`&&e.markerPlacement.clipAtBoundary)?this._hitTestFill(t):super.drawMarkerLayer(e,t)}drawTextSymbol(e,t,n){if(!e||!D(t)||I(e.height,k.CIMTextSymbol.height)<=0)return;let r=J.createIdentity(),i=this.geomUnitsPerPoint();i!==1&&r.scale(i,i),r.translate(t.x,t.y),this.push(r),this.drawText(e,n),this.pop()}pushClipPath(e){}popClipPath(){}drawImage(e,t){let{url:n}=e,r=I(e.scaleX,1),i=this._resourceManager.getResource(n);if(i==null||i.height===0||t===0)return;let a=t*this.geomUnitsPerPoint(),o=a*r*(i.width/i.height);if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]),t=this._searchDistPoint;Math.abs(e[0])<o/2+t&&Math.abs(e[1])<a/2+t&&(this._earlyReturn=!0)}else{let e=o/2,t=a/2,n=[[-e,t],[e,t],[e,-t],[-e,-t],[-e,t]],r=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;b(r,[n])&&(this._earlyReturn=!0)}}drawText(e,t){let n=this._textInfo;if(!n)return;let r=n.get(e);if(!r||!p(r.glyphMosaicItems))return;let i=ye(I(e.height,k.CIMTextSymbol.height)),{lineGapType:a,lineGap:o}=e,s=a?Z(a,I(o),i):0,c=e.horizontalAlignment??k.CIMTextSymbol.horizontalalignment,l=e.verticalAlignment??k.CIMTextSymbol.verticalalignment,u=e.callout?.type===`CIMBackgroundCallout`,d=ve(r.glyphMosaicItems,{scale:i/he,angle:I(e.angle),xOffset:I(e.offsetX),yOffset:I(e.offsetY),horizontalAlignment:c,verticalAlignment:l,maxLineWidth:be(e.lineWidth),lineHeight:me*Math.max(.25,Math.min(s||1,4)),decoration:e.font.decoration||`none`,useCIMAngleBehavior:!1,hasBackground:u}),f=this.reverseScaleText(1);for(let e of d.glyphs){let t=e.offsets,n=[[t.topLeft[0]*f,-t.topLeft[1]*f],[t.topRight[0]*f,-t.topRight[1]*f],[t.bottomRight[0]*f,-t.bottomRight[1]*f],[t.bottomLeft[0]*f,-t.bottomLeft[1]*f],[t.topLeft[0]*f,-t.topLeft[1]*f]];if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]);x(e,[n])&&(this._earlyReturn=!0)}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;b(e,[n])&&(this._earlyReturn=!0)}}function p(e){return e.type===`glyphs`?e.glyphs.length>0:e.runs.some(e=>e.glyphs.glyphs.length>0)}}_hitTestFill(e){let t=null;if(T(e)){let n=e;t=[[[n.xmin,n.ymin],[n.xmin,n.ymax],[n.xmax,n.ymax],[n.xmax,n.ymin],[n.xmin,n.ymin]]]}else if(C(e))t=e.rings;else if(w(e))t=e.paths;else return;if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]);if(x(e,t)&&(this._earlyReturn=!0),!this._earlyReturn){let n=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();S(e,t,n)&&(this._earlyReturn=!0)}}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;b(e,t)&&(this._earlyReturn=!0)}}_getSvgPath(){return(this._svg==null||this._path==null)&&(this._svg??=pe(),this._path??=W(`path`),this._svg.appendChild(this._path)),this._path}_getCanvasContext(e,t){return this._canvas??=document.createElement(`canvas`),this._canvas.width=e,this._canvas.height=t,this._canvas.getContext(`2d`,{willReadFrequently:!0})}_hittestSvgPath(e,t,n,r=0){let i=_();v(i,e);let a={x:i[0],y:i[1],width:i[2]-i[0],height:i[3]-i[1]},o=this._getSvgPath();o.setAttribute(`d`,t);let s=o.getBBox();if(this._hittestType===`point`){let e=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint(),i=this.reverseTransformPt(this._searchTarget[0]),o=Math.max(s.width/a.width,s.height/a.height),c=1,l=2*e*o;l<1&&(c=2/l,o*=c,s.x*=c,s.y*=c,s.width*=c,s.height*=c);let u=1+r*o/2,d=this._getCanvasContext(s.width+u*2,s.height+u*2);d.setTransform(c,0,0,c,-s.x+u,-s.y+u);let f=new Path2D(t);n?d.fill(f):(d.lineWidth=o/c*r,d.stroke(f));let p=(a.width*o-s.width)/2,m=(a.height*o-s.height)/2,h=Math.floor((i[0]-a.x-e)*o-p+u),g=Math.floor((a.height-(i[1]-a.y)-e)*o+m+u),_=Math.ceil(2*e*o),v=Math.ceil(2*e*o),y=d.getImageData(h,g,_,v).data;for(let e=3;e<y.length;e+=4)if(y[e]>127.5){this._earlyReturn=!0;return}}else{let e=[[a.x,a.y],[a.x,a.y+a.height],[a.x+a.width,a.y+a.height],[a.x+a.width,a.y],[a.x,a.y]],t=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;if(b(t,[e])){this._earlyReturn=!0;return}}}_hitTestStroke(e,t){let n=null;if(T(e)){let t=e;n=[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}else if(C(e))n=e.rings;else if(w(e))n=e.paths;else return;if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]),r=I(t,k.CIMSolidStroke.width)*this.geomUnitsPerPoint(),i=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();S(e,n,r/2+i)&&(this._earlyReturn=!0)}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;b(e,n)&&(this._earlyReturn=!0)}}_resetHittest(){this.setTransform(),this._hittestType=`point`,this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null}}class Ce extends Y{constructor(e,t,n,r){super(t,n),this._applyAdditionalRenderProps=r,this._colorSubstitutionHelper=new ee,this._ctx=e}drawSolidFill(e,t){if(!e)return;if(C(e))this._buildPath(e.rings,!0);else if(w(e))this._buildPath(e.paths,!0);else if(T(e))this._buildPath(X(e).rings,!0);else if(E(e))console.log(`CanvasDrawHelper.drawSolidFill - No implementation!`);else return;let n=this._ctx;n.fillStyle=typeof t==`string`?t:`rgba(`+Math.round(t[0])+`,`+Math.round(t[1])+`,`+Math.round(t[2])+`,`+(t[3]??255)/255+`)`,n.fill(`evenodd`)}drawSolidStroke(e,t,n,r,i,a){if(!e||!t||n===0)return;if(C(e))this._buildPath(e.rings,!0);else if(w(e))this._buildPath(e.paths,!1);else if(T(e))this._buildPath(X(e).rings,!0);else{console.log(`CanvasDrawHelper.drawSolidStroke isn't implemented!`);return}let o=this._ctx;o.strokeStyle=typeof t==`string`?t:`rgba(`+Math.round(t[0])+`,`+Math.round(t[1])+`,`+Math.round(t[2])+`,`+(t[3]??255)/255+`)`,o.lineWidth=Math.max(this.transformSize(n),K),this._setCapStyle(r),this._setJoinStyle(i),o.miterLimit=a,o.stroke()}pushClipPath(e){if(this._ctx.save(),C(e))this._buildPath(e.rings,!0);else if(w(e))this._buildPath(e.paths,!0);else if(T(e))this._buildPath(X(e).rings,!0);else return;this._ctx.clip(`evenodd`)}popClipPath(){this._ctx.restore()}drawImage(e,t){let{colorSubstitutions:n,url:r,tintColor:i}=e,a=I(e.scaleX,1),o=this._resourceManager.getResource(r);if(o==null)return;let s=t*(o.width/o.height),c=t;t||(s=o.width,c=o.height);let l=L(r)||`src`in o&&L(o.src),u=`getFrame`in o?A(o):o;n&&(u=this._colorSubstitutionHelper.applyColorSubstitution(u,n)),this._applyAdditionalRenderProps&&!l&&i&&(u=this._colorSubstitutionHelper.tintImageData(u,i));let d=this.transformPt([0,0]),[f,p]=this.getTransformAngle(),m=this.transformSize(1),h=this._ctx;h.save(),h.setTransform({m11:a*m*f,m12:a*m*p,m21:-m*p,m22:m*f,m41:d[0],m42:d[1]}),h.drawImage(u,-s/2,-c/2,s,c),h.restore()}drawText(e,t){if(!t||t.length===0)return;this._textRasterizer||=new F;let n=Q(e,this.transformSize(a)),r=N({textString:t,font:n.font,symbol:e,supportsRichText:P(t)}),i=r?this._textRasterizer.rasterizeRichText(r,n):this._textRasterizer.rasterizeText(t,n);if(!i)return;let{size:o,anchorX:s,anchorY:c,canvas:l}=i,u=o[0]*(s+.5),d=o[1]*(c-.5),f=this._ctx,p=this.transformPt([0,0]),[m,h]=this.getTransformAngle();f.save(),f.setTransform({m11:1*m,m12:1*h,m21:-1*h,m22:1*m,m41:p[0]-1*u,m42:p[1]+1*d}),f.drawImage(l,0,0),f.restore()}drawPictureFill(e,t){if(!e)return;let{colorSubstitutions:n,height:r,offsetX:i,offsetY:a,rotation:o,scaleX:s,tintColor:c,url:l}=t,u=this._resourceManager.getResource(l);if(u==null)return;if(C(e))this._buildPath(e.rings,!0);else if(w(e))this._buildPath(e.paths,!0);else if(T(e))this._buildPath(X(e).rings,!0);else if(E(e))console.log(`CanvasDrawHelper.drawPictureFill - No implementation!`);else return;let d=this._ctx,f=L(l)||`src`in u&&L(u.src),p=`getFrame`in u?A(u):u;n&&(p=this._colorSubstitutionHelper.applyColorSubstitution(p,n));let m;if(this._applyAdditionalRenderProps){f||c&&(p=this._colorSubstitutionHelper.tintImageData(p,c)),m=d.createPattern(p,`repeat`);let e=this.transformSize(1);o||=0,i=i?e*i:0,a=a?e*a:0,r&&=e*r;let t=r?r/u.height:1,n=s&&r?s*r/u.width:1;if(o!==0||t!==1||n!==1||i!==0||a!==0){let e=new DOMMatrix;e.rotateSelf(0,0,-o).translateSelf(i,a).scaleSelf(n,t,1),m.setTransform(e)}}else m=d.createPattern(p,`repeat`);d.save(),d.fillStyle=m,d.fill(`evenodd`),d.restore()}drawPictureStroke(e,n){if(!e)return;let{colorSubstitutions:r,capStyle:i,joinStyle:a,miterLimit:s,tintColor:c,url:l,width:u}=n,d=this._resourceManager.getResource(l);if(d==null)return;let f;if(C(e))f=e.rings;else if(w(e))f=e.paths;else if(T(e))f=X(e).rings;else if(E(e)){console.log(`CanvasDrawHelper.drawPictureStroke - No implementation!`);return}else return;u||=d.width;let p=L(l)||`src`in d&&L(d.src),m=`getFrame`in d?A(d):d;r&&(m=this._colorSubstitutionHelper.applyColorSubstitution(m,r)),this._applyAdditionalRenderProps&&(p||c&&(m=this._colorSubstitutionHelper.tintImageData(m,c)));let h=Math.max(this.transformSize(o(u)),.5),g=h/m.width,_=this._ctx,v=_.createPattern(m,`repeat-y`);_.save(),this._setCapStyle(i),this._setJoinStyle(a),s!==void 0&&(_.miterLimit=s),_.lineWidth=h;let y,b;for(let e of f)if(e=t(e),$(e),!(!e||e.length<=1)){y=this.transformPt(e[0]);for(let t=1;t<e.length;t++){b=this.transformPt(e[t]);let n=Te(y,b),r=new DOMMatrix;r.translateSelf(0,y[1]-h/2).scaleSelf(g,g,1).rotateSelf(0,0,90-n),v.setTransform(r),_.strokeStyle=v,_.beginPath(),_.moveTo(y[0],y[1]),_.lineTo(b[0],b[1]),_.stroke(),y=b}}_.restore()}drawGradientFill(e,t){if(!e)return;let n;if(C(e))n=e.rings;else if(w(e))n=e.paths;else if(T(e))n=X(e).rings;else{q().error(`Unable to draw gradient fill`);return}this._buildPath(n,!0);let{angle:i,gradientMethod:a,gradientSize:s,gradientSizeUnits:c}=t,l=k.CIMGradientFill,g=t.gradientType??l.gradientType,_=-r(i??0),v=u();for(let e of n){let t=e?e.length:0;if(t>1)for(let n=0;n<t;n++){let t=this.transformPt(e[n]);(a===`Linear`||a===`Rectangular`)&&(t=j(t,-_)),d(v,t)}}let[y,b,x,S]=v,E=this._ctx;switch(E.save(),a){case`Buffered`:q().error(`Gradient method "${a}" currently unsupported.`);break;case`Linear`:{let e=(b+S)/2,n=c===`Absolute`?this.transformSize(o(s)):R(s,l.gradientSize)*(x-y),[r,i]=g===`Discrete`?[x,x-n]:[y+n,y],a=j([r,e],_),u=j([i,e],_),d=E.createLinearGradient(a[0],a[1],u[0],u[1]);M(d,t),E.fillStyle=d,E.fill(`evenodd`);break}case`Circular`:{let e=f(v),n=h(v)/2,r=c===`Absolute`?this.transformSize(o(s)):R(s,l.gradientSize)*n,[i,a]=g===`Discrete`?[n,n-r]:[r,0],u=E.createRadialGradient(e[0],e[1],i,e[0],e[1],a);M(u,t),E.fillStyle=u,E.fill(`evenodd`);break}case`Rectangular`:{let n=f(v),r=n[0],i=n[1],a=j(n,_),u=(n,r,i,o,s,c,l,u)=>{E.save(),this.pushClipPath(e);let d=j([s,c],_),f=j([l,u],_);E.beginPath(),E.moveTo(a[0],a[1]),E.lineTo(d[0],d[1]),E.lineTo(f[0],f[1]),E.lineTo(a[0],a[1]),E.clip();let p=j([n,r],_),m=j([i,o],_),h=E.createLinearGradient(p[0],p[1],m[0],m[1]);M(h,t),E.fillStyle=h,E.fill(`evenodd`),E.restore()},d=c===`Absolute`?this.transformSize(o(s)):R(s,l.gradientSize)*(p(v)/2),[h,C]=g===`Discrete`?[x,x-d]:[r+d,r];u(h,i,C,i,x,b,x,S),[h,C]=g===`Discrete`?[y,y+d]:[r-d,r],u(h,i,C,i,y,S,y,b),d=c===`Absolute`?this.transformSize(o(s)):R(s,l.gradientSize)*(m(v)/2);let[w,T]=g===`Discrete`?[S,S-d]:[i+d,i];u(r,w,r,T,x,S,y,S),[w,T]=g===`Discrete`?[b,b+d]:[i-d,i],u(r,w,r,T,y,b,x,b);break}}E.restore()}drawGradientStroke(e,n){let{capStyle:r,gradientMethod:i,gradientSize:a,gradientSizeUnits:s,joinStyle:c,miterLimit:l,width:u}=n;if(!e||u===0)return;let d;if(C(e))d=e.rings;else if(w(e))d=e.paths;else if(T(e))d=X(e).rings;else{q().error(`Unable to draw gradient stroke`);return}let f=n.gradientType??k.CIMGradientStroke.gradientType,p=Math.max(this.transformSize(o(u)),.5),m=this._ctx;m.save(),this._setCapStyle(r),this._setJoinStyle(c),l!==void 0&&(m.miterLimit=l),m.lineWidth=p;let h,g;for(let e of d){if(e=t(e),$(e),!e||e.length<=1)continue;let r=0;h=this.transformPt(e[0]);for(let t=1;t<e.length;t++){g=this.transformPt(e[t]);let n=g[0]-h[0],i=g[1]-h[1];r+=Math.sqrt(n*n+i*i),h=g}let c=s===`Absolute`?this.transformSize(o(a)):R(a,k.CIMGradientStroke.gradientSize)*(i===`AcrossLine`?p:r),l=0;h=this.transformPt(e[0]);for(let t=1;t<e.length;t++){g=this.transformPt(e[t]);let a=g[0]-h[0],o=g[1]-h[1],s=Math.sqrt(a*a+o*o),u,d,_,v;switch(i){case`AcrossLine`:{let[e,t]=j([a/s,o/s],-Math.PI/2),n=p/2,r=f===`Discrete`?n:c-n;u=(h[0]+g[0])/2+e*r,d=(h[1]+g[1])/2+t*r,_=u-e*c,v=d-t*c;break}case`AlongLine`:{let e=a/s,t=o/s;f===`Discrete`?(u=h[0]-e*l,d=h[1]-t*l,_=u+e*c,v=d+t*c):(_=h[0]+e*(r-l),v=h[1]+t*(r-l),u=_-e*c,d=v-t*c);break}default:q().error(`Unrecognized gradient method:`,i),m.restore();return}let y=m.createLinearGradient(u,d,_,v);M(y,n),m.strokeStyle=y,m.beginPath(),m.moveTo(h[0],h[1]),m.lineTo(g[0],g[1]),m.stroke(),l+=s,h=g}}m.restore()}_buildPath(e,t){let n=this._ctx;if(n.beginPath(),e)for(let r of e){let e=r?r.length:0;if(e>1){let i=this.transformPt(r[0]);n.moveTo(i[0],i[1]);for(let t=1;t<e;t++)i=this.transformPt(r[t]),n.lineTo(i[0],i[1]);t&&n.closePath()}}}_setCapStyle(e){switch(e){case`Butt`:this._ctx.lineCap=`butt`;break;case`Round`:this._ctx.lineCap=`round`;break;case`Square`:this._ctx.lineCap=`square`}}_setJoinStyle(e){switch(e){case`Bevel`:this._ctx.lineJoin=`bevel`;break;case`Round`:this._ctx.lineJoin=`round`;break;case`Miter`:this._ctx.lineJoin=`miter`}}}function we(e,t,n){let r=I(e.separation,k.CIMHatchFill.separation)*n,i=I(e.rotation);if(r===0)return null;r<0&&(r=-r);let a=0,o=.5*r;for(;a>o;)a-=r;for(;a<-o;)a+=r;let s=_();v(s,t),s[0]-=o,s[1]-=o,s[2]+=o,s[3]+=o;let c=[[s[0],s[1]],[s[0],s[3]],[s[2],s[3]],[s[2],s[1]]];for(;i>180;)i-=180;for(;i<0;)i+=180;let l=Math.cos(i*G),u=Math.sin(i*G),d=-r*u,f=r*l,p=I(e.offsetX)*n,m=I(e.offsetY)*n;a=p*u-m*l;let h,g,y,b;h=y=Number.MAX_VALUE,g=b=-Number.MAX_VALUE;for(let e of c){let t=e[0],n=e[1],r=l*t+u*n,i=-u*t+l*n;h=Math.min(h,r),y=Math.min(y,i),g=Math.max(g,r),b=Math.max(b,i)}y=Math.floor(y/r)*r;let x=l*h-u*y-d*a/r,S=u*h+l*y-f*a/r,C=l*g-u*y-d*a/r,w=u*g+l*y-f*a/r,T=1+Math.round((b-y)/r),E=[];for(let e=0;e<T;e++)x+=d,S+=f,C+=d,w+=f,E.push([[x,S],[C,w]]);return{paths:E}}function Te(e,t){let n=t[0]-e[0],r=t[1]-e[1];return 180/Math.PI*Math.atan2(r,n)}const X=e=>e?{spatialReference:e.spatialReference,rings:[[[e.xmin,e.ymin],[e.xmin,e.ymax],[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin]]]}:null,Z=(e,t,n)=>{switch(e){case`ExtraLeading`:return 1+t/n;case`Multiple`:return t;case`Exact`:return t/n}};function Q(t,n=1){let r=se(t),i=ie(t.fontStyleName),a=t.fontFamilyName??e,{weight:o,style:s}=i,c=n*(t.height||5),l=ce(t.horizontalAlignment),u=le(t.verticalAlignment),d=z(t),f=z(t.haloSymbol),p=f==null?0:n*(t.haloSize??0),m=B(t.symbol),h=n*(V(t.symbol)||0),g=t.callout?.type===`CIMBackgroundCallout`?t.callout.backgroundSymbol:null,_=z(g),v=V(g),y=B(g);return{color:d,size:c,horizontalAlignment:l,verticalAlignment:u,font:{family:a,style:U(s),weight:H(o),decoration:r},outline:{size:h||0,color:m},halo:{size:p||0,color:f,style:s},backgroundColor:_,borderLine:v!=null&&y!=null?{size:v,color:y}:null,pixelRatio:1,premultiplyColors:!0}}function $(e){let t=e[0],n=1,r,i,a,o,s;for(;n<e.length;)r=e[n][0]-t[0],i=e[n][1]-t[1],o=r===0?Math.PI/2:i/r,a!==void 0&&Math.abs(o-a)<=1e-4?(e.splice(n-1,1),t=s):(s=t,t=e[n],n++),a=o}export{Y as CIMSymbolDrawHelper,Ce as CanvasDrawHelper,xe as EnvDrawHelper,Se as HittestDrawHelper,J as Transformation,G as cDegToRad,Z as lineGapType2LineHeight};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Color.js";import{JSONSupport as n}from"../../core/JSONSupport.js";import{clone as r}from"../../core/lang.js";import{px2pt as i}from"../../core/screenUtils.js";import{property as a,subclass as o}from"../../core/accessorSupport/decorators.js";import{colorAndTransparencyProperty as s,screenSizeProperty as c}from"../support/materialUtils.js";let l=class extends n{constructor(e){super(e),this.color=new t([0,0,0,1])}get extensionLength(){return this._get(`extensionLength`)??0}set extensionLength(e){this._set(`extensionLength`,e)}get size(){return this._get(`size`)??i(1)}set size(e){this._set(`size`,e)}clone(){}cloneProperties(){return{color:r(this.color),size:this.size,extensionLength:this.extensionLength}}};e([a({type:[`solid`,`sketch`],readOnly:!0,json:{read:!0,write:{ignoreOrigin:!0,isRequired:!0}}})],l.prototype,`type`,void 0),e([a(s({colorRequiredOnWrite:!0}))],l.prototype,`color`,void 0),e([a({...c,json:{write:{overridePolicy(e){return{enabled:!!e}}}}})],l.prototype,`extensionLength`,null),e([a(c)],l.prototype,`size`,null),l=e([o(`esri.symbols.edges.Edges3D`)],l);const u=l;export{u as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Color.js";import{JSONSupport as n}from"../../core/JSONSupport.js";import{clone as r}from"../../core/lang.js";import{onePixelInPoints as i}from"../../core/screenUtils.js";import{property as a,subclass as o}from"../../core/accessorSupport/decorators.js";import{colorAndTransparencyProperty as s,screenSizeProperty as c}from"../support/materialUtils.js";let l=class extends n{constructor(e){super(e),this.color=new t([0,0,0,1])}get extensionLength(){return this._get(`extensionLength`)??0}set extensionLength(e){this._set(`extensionLength`,e)}get size(){return this._get(`size`)??i}set size(e){this._set(`size`,e)}clone(){}cloneProperties(){return{color:r(this.color),size:this.size,extensionLength:this.extensionLength}}};e([a({type:[`solid`,`sketch`],readOnly:!0,json:{read:!0,write:{ignoreOrigin:!0,isRequired:!0}}})],l.prototype,`type`,void 0),e([a(s({colorRequiredOnWrite:!0}))],l.prototype,`color`,void 0),e([a({...c,json:{write:{overridePolicy(e){return{enabled:!!e}}}}})],l.prototype,`extensionLength`,null),e([a(c)],l.prototype,`size`,null),l=e([o(`esri.symbols.edges.Edges3D`)],l);const u=l;export{u as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Color.js";import{JSONSupport as n}from"../../core/JSONSupport.js";import{px2pt as r}from"../../core/screenUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import{colorAndTransparencyProperty as o,screenSizeProperty as s}from"./materialUtils.js";var c;let l=c=class extends n{constructor(e){super(e),this.color=new t([0,0,0,1])}get size(){return this._get(`size`)??r(1)}set size(e){this._set(`size`,e)}clone(){let e={color:this.color==null?null:this.color.clone(),size:this.size};return new c(e)}equals(e){return e.size===this.size&&(this.color==null?e.color==null:this.color.equals(e.color))}};e([i(o({colorRequiredOnWrite:!0}))],l.prototype,`color`,void 0),e([i({...s,json:{write:{isRequired:!0}}})],l.prototype,`size`,null),l=c=e([a(`esri.symbols.support.Symbol3DIconOutline`)],l);const u=l;export{u as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Color.js";import{JSONSupport as n}from"../../core/JSONSupport.js";import{onePixelInPoints as r}from"../../core/screenUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import{colorAndTransparencyProperty as o,screenSizeProperty as s}from"./materialUtils.js";var c;let l=c=class extends n{constructor(e){super(e),this.color=new t([0,0,0,1])}get size(){return this._get(`size`)??r}set size(e){this._set(`size`,e)}clone(){let e={color:this.color==null?null:this.color.clone(),size:this.size};return new c(e)}equals(e){return e.size===this.size&&(this.color==null?e.color==null:this.color.equals(e.color))}};e([i(o({colorRequiredOnWrite:!0}))],l.prototype,`color`,void 0),e([i({...s,json:{write:{isRequired:!0}}})],l.prototype,`size`,null),l=c=e([a(`esri.symbols.support.Symbol3DIconOutline`)],l);const u=l;export{u as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Color.js";import{JSONSupport as n}from"../../core/JSONSupport.js";import{px2pt as r}from"../../core/screenUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import{symbol3dOutlineLinePatternProperty as o}from"../patterns/utils.js";import{colorAndTransparencyProperty as s,screenSizeProperty as c}from"./materialUtils.js";import{lineCaps as l}from"./symbolLayerUtils3D.js";var u;let d=u=class extends n{constructor(e){super(e),this.color=new t([0,0,0,1]),this.pattern=null,this.patternCap=`butt`}get size(){return this._get(`size`)??r(1)}set size(e){this._set(`size`,e)}clone(){let e={color:this.color==null?null:this.color.clone(),size:this.size,pattern:this.pattern==null?null:this.pattern.clone(),patternCap:this.patternCap};return new u(e)}};e([i(s({colorRequiredOnWrite:!0}))],d.prototype,`color`,void 0),e([i({...c,json:{write:{isRequired:!0}}})],d.prototype,`size`,null),e([i(o)],d.prototype,`pattern`,void 0),e([i({type:l,json:{default:`butt`,write:{overridePolicy(){return{enabled:this.pattern!=null}}}}})],d.prototype,`patternCap`,void 0),d=u=e([a(`esri.symbols.support.Symbol3DOutline`)],d);const f=d;export{f as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Color.js";import{JSONSupport as n}from"../../core/JSONSupport.js";import{onePixelInPoints as r}from"../../core/screenUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import{symbol3dOutlineLinePatternProperty as o}from"../patterns/utils.js";import{colorAndTransparencyProperty as s,screenSizeProperty as c}from"./materialUtils.js";import{lineCaps as l}from"./symbolLayerUtils3D.js";var u;let d=u=class extends n{constructor(e){super(e),this.color=new t([0,0,0,1]),this.pattern=null,this.patternCap=`butt`}get size(){return this._get(`size`)??r}set size(e){this._set(`size`,e)}clone(){let e={color:this.color==null?null:this.color.clone(),size:this.size,pattern:this.pattern==null?null:this.pattern.clone(),patternCap:this.patternCap};return new u(e)}};e([i(s({colorRequiredOnWrite:!0}))],d.prototype,`color`,void 0),e([i({...c,json:{write:{isRequired:!0}}})],d.prototype,`size`,null),e([i(o)],d.prototype,`pattern`,void 0),e([i({type:l,json:{default:`butt`,write:{overridePolicy(){return{enabled:this.pattern!=null}}}}})],d.prototype,`patternCap`,void 0),d=u=e([a(`esri.symbols.support.Symbol3DOutline`)],d);const f=d;export{f as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Color.js";import{ClonableMixin as n}from"../../core/Clonable.js";import{JSONSupport as r}from"../../core/JSONSupport.js";import{px2pt as i}from"../../core/screenUtils.js";import{property as a,subclass as o}from"../../core/accessorSupport/decorators.js";import{colorAndTransparencyProperty as s,screenSizeProperty as c}from"./materialUtils.js";let l=class extends n(r){constructor(e){super(e),this.color=new t([0,0,0,1])}get size(){return this._get(`size`)??i(1)}set size(e){this._set(`size`,e)}};e([a({...s({colorRequiredOnWrite:!0}),json:void 0})],l.prototype,`color`,void 0),e([a({...c,json:void 0})],l.prototype,`size`,null),l=e([o(`esri.symbols.support.Symbol3DTextBorder`)],l);export{l as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Color.js";import{ClonableMixin as n}from"../../core/Clonable.js";import{JSONSupport as r}from"../../core/JSONSupport.js";import{onePixelInPoints as i}from"../../core/screenUtils.js";import{property as a,subclass as o}from"../../core/accessorSupport/decorators.js";import{colorAndTransparencyProperty as s,screenSizeProperty as c}from"./materialUtils.js";let l=class extends n(r){constructor(e){super(e),this.color=new t([0,0,0,1])}get size(){return this._get(`size`)??i}set size(e){this._set(`size`,e)}};e([a({...s({colorRequiredOnWrite:!0}),json:void 0})],l.prototype,`color`,void 0),e([a({...c,json:void 0})],l.prototype,`size`,null),l=e([o(`esri.symbols.support.Symbol3DTextBorder`)],l);export{l as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../Color.js";import t from"../../core/Collection.js";import{px2pt as n}from"../../core/screenUtils.js";import r from"../FillSymbol3DLayer.js";import i from"../LineSymbol3D.js";import a from"../LineSymbol3DLayer.js";import o from"../MeshSymbol3D.js";import s from"../PointSymbol3D.js";import c from"../PolygonSymbol3D.js";import l from"../edges/SolidEdges3D.js";import{defaultPointSymbol2D as u,defaultPolylineSymbol2D as d,defaultPolygonSymbol2D as f}from"./defaults.js";import{defaultColor as p,defaultOutlineColor as m}from"./defaultsJSON.js";const h=s.fromSimpleMarkerSymbol(u),g=i.fromSimpleLineSymbol(d),_=c.fromSimpleFillSymbol(f),v=new o({symbolLayers:new t([new r({material:{color:p},edges:new l({size:n(1),color:new e(m)})})])}),y=new i({symbolLayers:new t([new a({material:{color:new e([0,0,0])},size:n(1)})])}),b=new c({symbolLayers:new t([new r({outline:{color:new e([0,0,0]),size:n(1)}})])});function x(e){if(e==null)return null;switch(e.type){case`mesh`:return v;case`point`:case`multipoint`:return h;case`polyline`:return g;case`polygon`:case`extent`:return _}return null}export{b as defaultRendererPolygonSymbol3D,y as defaultRendererPolylineSymbol3D,x as getDefaultSymbol3D};
2
+ import e from"../../Color.js";import t from"../../core/Collection.js";import{onePixelInPoints as n}from"../../core/screenUtils.js";import r from"../FillSymbol3DLayer.js";import i from"../LineSymbol3D.js";import a from"../LineSymbol3DLayer.js";import o from"../MeshSymbol3D.js";import s from"../PointSymbol3D.js";import c from"../PolygonSymbol3D.js";import l from"../edges/SolidEdges3D.js";import{defaultPointSymbol2D as u,defaultPolylineSymbol2D as d,defaultPolygonSymbol2D as f}from"./defaults.js";import{defaultColor as p,defaultOutlineColor as m}from"./defaultsJSON.js";const h=s.fromSimpleMarkerSymbol(u),g=i.fromSimpleLineSymbol(d),_=c.fromSimpleFillSymbol(f),v=new o({symbolLayers:new t([new r({material:{color:p},edges:new l({size:n,color:new e(m)})})])}),y=new i({symbolLayers:new t([new a({material:{color:new e([0,0,0])},size:n})])}),b=new c({symbolLayers:new t([new r({outline:{color:new e([0,0,0]),size:n}})])});function x(e){if(e==null)return null;switch(e.type){case`mesh`:return v;case`point`:case`multipoint`:return h;case`polyline`:return g;case`polygon`:case`extent`:return _}return null}export{b as defaultRendererPolygonSymbol3D,y as defaultRendererPolylineSymbol3D,x as getDefaultSymbol3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{multiplyOpacity as n}from"../../../../core/colorUtils.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import{isAborted as i,ignoreAbortErrors as a}from"../../../../core/promiseUtils.js";import{watch as o,initial as s}from"../../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../../core/support/UpdatingHandles.js";import d from"../../../../symbols/SimpleFillSymbol.js";import f from"../../../../symbols/SimpleLineSymbol.js";import{ExclusiveOperationManager as p}from"../../../analysis/ExclusiveOperationManager.js";import{bindViewToolOptions as m}from"../../../interactive/options/bindViewToolOptions.js";import h from"../../../../widgets/Sketch/SketchViewModel.js";function g(e){return e?.type===`polygon`}let _=class extends t{constructor(e){super(e),this._invisibleAreaSymbol=new d({color:null,outline:null}),this._invisibleLineSymbol=new f({color:null,width:0}),this._operationManager=new p,this._updatingHandles=new u}initialize(){this._sketchViewModel=new h({defaultCreateOptions:{mode:`click`},defaultUpdateOptions:{enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,enableZ:!1,highlightOptions:{enabled:!1},multipleSelectionEnabled:!1,reshapeOptions:{edgeOperation:`none`,shapeOperation:`none`},toggleToolOnClick:!1,tool:`reshape`},updateOnGraphicClick:!1,cancelUpdateOnClickAway:!1,view:this.view}),this.addHandles([o(()=>({interactive:this.measurementViewData.interactive,visible:this.measurementViewData.visible}),({interactive:e,visible:t})=>{t&&e&&this._analysis.geometry?this._operationManager.currentOperationType!==`place`&&this.reshape().catch(()=>{}):this._operationManager.stop()}),o(()=>this.measurementViewData.analysis.geometry,e=>{e||(this._operationManager.stop(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll())}),o(()=>this.measurementViewData.snappingOptions,e=>{this._sketchViewModel&&(this._sketchViewModel.snappingOptions=e)},s),m(this._sketchViewModel.sketchOptions,()=>this.view.options,()=>({values:{displayUnits:{area:this._analysis.unit}}})),o(()=>this.view.effectiveTheme.accentColor,e=>{this._areaSymbol=new d({color:n(e,.3),outline:new f({color:e,width:2})})},s)])}destroy(){this._areaSymbol?.destroy(),this._invisibleAreaSymbol.destroy(),this._invisibleLineSymbol.destroy(),this._operationManager.destroy(),this._sketchViewModel?.destroy(),this._updatingHandles.destroy()}get state(){if(!this.measurementViewData.visible||!this._operationManager.currentOperationType)return`idle`;switch(this._operationManager.currentOperationType){case`place`:return`placing`;case`reshape`:return`reshaping`}}get updating(){return!this._sketchViewModel||this._sketchViewModel.updating||this._updatingHandles.updating}async place(e){return this._operationManager.start(`place`,async t=>{if(!this._sketchViewModel||!this.measurementViewData.sketchGraphicsLayer)return;let n=this._analysis.clone(),o=this._sketchViewModel.on([`create`,`undo`,`redo`],e=>{let n=`state`in e?e.state:`active`,r=`graphic`in e?e.graphic:e.graphics?.at(0);switch(n){case`start`:case`active`:{let e=r?.geometry;e?.type===`polygon`&&(this._analysis.geometry=e);break}case`cancel`:case`complete`:t.stop(),a(this.reshape())}});t.handles.push(o,r(()=>{o.remove(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll();let r=this._analysis;if(!r.valid)return r.clear(),t.reject();if(i(e)||n.equals(r))return t.reject();t.resolve({})})),this._sketchViewModel.activeLineSymbol=this._invisibleLineSymbol,this._sketchViewModel.polygonSymbol=this._invisibleAreaSymbol,this._sketchViewModel.layer=this.measurementViewData.sketchGraphicsLayer,this._updatingHandles.consumePromise(a(this._sketchViewModel.create(`polygon`)))},e)}async reshape(e){return this._operationManager.start(`reshape`,async t=>{if(!this._sketchViewModel)return;let n=()=>!this._areaSymbol||!this._sketchViewModel||!this.measurementViewData.manipulatorGraphic||!this.measurementViewData.manipulatorGraphicsLayer?Promise.resolve():(this._sketchViewModel.activeLineSymbol=null,this._sketchViewModel.polygonSymbol=this._areaSymbol,this._sketchViewModel.layer=this.measurementViewData.manipulatorGraphicsLayer,this._updatingHandles.addPromise(a(this._sketchViewModel.update(this.measurementViewData.manipulatorGraphic,{tool:`reshape`})))),o=this._sketchViewModel.on(`update`,e=>{let r=e.graphics[0]?.geometry;this._analysis.geometry=g(r)?r:null,e.state===`complete`&&(this.measurementViewData.interactive?n():t.stop())});t.handles.push(o,r(()=>{if(o.remove(),this._sketchViewModel?.cancel(),i(e))return t.reject();t.resolve()})),await n()},e)}get _analysis(){return this.measurementViewData.analysis}};e([c()],_.prototype,`_sketchViewModel`,void 0),e([c()],_.prototype,`measurementViewData`,void 0),e([c()],_.prototype,`state`,null),e([c()],_.prototype,`updating`,null),e([c()],_.prototype,`view`,void 0),_=e([l(`esri.views.2d.analysis.AreaMeasurement.AreaMeasurementTool`)],_);export{_ as AreaMeasurementTool};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{multiplyOpacity as n}from"../../../../core/colorUtils.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import{isAborted as i,ignoreAbortErrors as a}from"../../../../core/promiseUtils.js";import{watch as o,initial as s}from"../../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../../core/support/UpdatingHandles.js";import d from"../../../../symbols/SimpleFillSymbol.js";import f from"../../../../symbols/SimpleLineSymbol.js";import{ExclusiveOperationManager as p}from"../../../analysis/ExclusiveOperationManager.js";import{bindViewToolOptions as m}from"../../../interactive/options/bindViewToolOptions.js";import h from"../../../../widgets/Sketch/SketchViewModel.js";function g(e){return e?.type===`polygon`}let _=class extends t{constructor(e){super(e),this._invisibleAreaSymbol=new d({color:null,outline:null}),this._invisibleLineSymbol=new f({color:null,width:0}),this._operationManager=new p,this._updatingHandles=new u}initialize(){this._sketchViewModel=new h({defaultCreateOptions:{mode:`click`},defaultUpdateOptions:{enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,enableZ:!1,highlightOptions:{enabled:!1},multipleSelectionEnabled:!1,reshapeOptions:{edgeOperation:`none`,shapeOperation:`none`},toggleToolOnClick:!1,tool:`reshape`},updateOnGraphicClick:!1,cancelUpdateOnClickAway:!1,view:this.view}),this.addHandles([o(()=>({interactive:this.measurementViewData.interactive,visible:this.measurementViewData.visible}),({interactive:e,visible:t})=>{!t||!e?this._operationManager.stop():this._analysis.geometry&&this._operationManager.currentOperationType!==`place`&&this.reshape().catch(()=>{})}),o(()=>this.measurementViewData.analysis.geometry,e=>{e||(this._operationManager.stop(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll())}),o(()=>this.measurementViewData.snappingOptions,e=>{this._sketchViewModel&&(this._sketchViewModel.snappingOptions=e)},s),m(this._sketchViewModel.sketchOptions,()=>this.view.options,()=>({values:{displayUnits:{area:this._analysis.unit}}})),o(()=>this.view.effectiveTheme.accentColor,e=>{this._areaSymbol=new d({color:n(e,.3),outline:new f({color:e,width:2})})},s)])}destroy(){this._areaSymbol?.destroy(),this._invisibleAreaSymbol.destroy(),this._invisibleLineSymbol.destroy(),this._operationManager.destroy(),this._sketchViewModel?.destroy(),this._updatingHandles.destroy()}get state(){if(!this.measurementViewData.visible||!this._operationManager.currentOperationType)return`idle`;switch(this._operationManager.currentOperationType){case`place`:return`placing`;case`reshape`:return`reshaping`}}get updating(){return!this._sketchViewModel||this._sketchViewModel.updating||this._updatingHandles.updating}async place(e){return this._operationManager.start(`place`,async t=>{if(!this._sketchViewModel||!this.measurementViewData.sketchGraphicsLayer)return;let n=this._analysis.clone(),o=this._sketchViewModel.on([`create`,`undo`,`redo`],e=>{let n=`state`in e?e.state:`active`,r=`graphic`in e?e.graphic:e.graphics?.at(0);switch(n){case`start`:case`active`:{let e=r?.geometry;e?.type===`polygon`&&(this._analysis.geometry=e);break}case`cancel`:case`complete`:t.stop(),a(this.reshape())}});t.handles.push(o,r(()=>{o.remove(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll();let r=this._analysis;if(!r.valid)return r.clear(),t.reject();if(i(e)||n.equals(r))return t.reject();t.resolve({})})),this._sketchViewModel.activeLineSymbol=this._invisibleLineSymbol,this._sketchViewModel.polygonSymbol=this._invisibleAreaSymbol,this._sketchViewModel.layer=this.measurementViewData.sketchGraphicsLayer,this._updatingHandles.consumePromise(a(this._sketchViewModel.create(`polygon`)))},e)}async reshape(e){return this._operationManager.start(`reshape`,async t=>{if(!this._sketchViewModel)return;let n=()=>!this._areaSymbol||!this._sketchViewModel||!this.measurementViewData.manipulatorGraphic||!this.measurementViewData.manipulatorGraphicsLayer?Promise.resolve():(this._sketchViewModel.activeLineSymbol=null,this._sketchViewModel.polygonSymbol=this._areaSymbol,this._sketchViewModel.layer=this.measurementViewData.manipulatorGraphicsLayer,this._updatingHandles.addPromise(a(this._sketchViewModel.update(this.measurementViewData.manipulatorGraphic,{tool:`reshape`})))),o=this._sketchViewModel.on(`update`,e=>{let r=e.graphics[0]?.geometry;this._analysis.geometry=g(r)?r:null,e.state===`complete`&&(this.measurementViewData.interactive?n():t.stop())});t.handles.push(o,r(()=>{if(o.remove(),this._sketchViewModel?.cancel(),i(e))return t.reject();t.resolve()})),await n()},e)}get _analysis(){return this.measurementViewData.analysis}};e([c()],_.prototype,`_sketchViewModel`,void 0),e([c()],_.prototype,`measurementViewData`,void 0),e([c()],_.prototype,`state`,null),e([c()],_.prototype,`updating`,null),e([c()],_.prototype,`view`,void 0),_=e([l(`esri.views.2d.analysis.AreaMeasurement.AreaMeasurementTool`)],_);export{_ as AreaMeasurementTool};
@@ -98,6 +98,8 @@ export default abstract class AreaMeasurementAnalysisView2D extends AnalysisView
98
98
  /**
99
99
  * Starts an interactive placement operation to create a new [AreaMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/AreaMeasurementAnalysis/).
100
100
  *
101
+ * Calling this method sets [interactive](https://developers.arcgis.com/javascript/latest/references/core/views/2d/analysis/AreaMeasurementAnalysisView2D/#interactive) to `true`.
102
+ *
101
103
  * The placement operation will finish when the user presses the escape key, double taps, or double clicks.
102
104
  * To stop the placing programmatically, pass an abort signal as an argument when calling the method.
103
105
  *
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{toAdaptiveLengthUnitForArea as t,toAdaptiveAreaUnit as n}from"../../../core/quantity.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as a}from"../../../support/getDefaultUnitForView.js";import o from"./AnalysisView2D.js";import{AreaMeasurementAreaVisualization as s}from"./AreaMeasurement/AreaMeasurementAreaVisualization.js";import{AreaMeasurementController as c}from"./AreaMeasurement/AreaMeasurementController.js";import{AreaMeasurementManipulatorVisualization as l}from"./AreaMeasurement/AreaMeasurementManipulatorVisualization.js";import{AreaMeasurementSketchVisualization as u}from"./AreaMeasurement/AreaMeasurementSketchVisualization.js";import{AreaMeasurementTool as d}from"./AreaMeasurement/AreaMeasurementTool.js";import f from"../../interactive/snapping/SnappingOptions.js";let p=class extends o{constructor(e){super(e),this.analysis=null,this.snappingOptions=new f,this.type=`area-measurement-view-2d`}initialize(){let{view:e}=this;this._areaVisualization=new s({view:e,measurementViewData:this}),this._controller=new c({view:e,measurementViewData:this}),this._manipulatorVisualization=new l({view:e,measurementViewData:this}),this._sketchVisualization=new u({view:e,measurementViewData:this}),this._tool=new d({view:e,measurementViewData:this})}destroy(){this._areaVisualization?.destroy(),this._controller?.destroy(),this._manipulatorVisualization?.destroy(),this._sketchVisualization?.destroy(),this._tool?.destroy()}get manipulatorGraphic(){return this._manipulatorVisualization?.graphic}get manipulatorGraphicsLayer(){return this._manipulatorVisualization?.graphicsLayer}get sketchGraphicsLayer(){return this._sketchVisualization?.graphicsLayer}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get result(){let e=this._controller?.result;if(!e)return e;let{unit:r}=this,{area:i,display:a,mode:o,perimeter:s}=e;return{area:i?n(i,r):null,display:a,mode:o,perimeter:s?t(s,r):null}}get unit(){return this.analysis.unit??this.view.options.displayUnits.area??a(this.view)}get updating(){return(this._areaVisualization?.updating??!0)||(this._controller?.updating??!0)||(this._sketchVisualization?.updating??!0)||(this._tool?.updating??!0)}get visible(){return super.visible}set visible(e){super.visible=e}async place(e){return this._tool.place(e)}};e([r()],p.prototype,`_areaVisualization`,void 0),e([r()],p.prototype,`_controller`,void 0),e([r()],p.prototype,`_manipulatorVisualization`,void 0),e([r()],p.prototype,`_sketchVisualization`,void 0),e([r()],p.prototype,`_tool`,void 0),e([r({constructOnly:!0})],p.prototype,`analysis`,void 0),e([r()],p.prototype,`manipulatorGraphic`,null),e([r()],p.prototype,`manipulatorGraphicsLayer`,null),e([r()],p.prototype,`sketchGraphicsLayer`,null),e([r({readOnly:!0})],p.prototype,`result`,null),e([r({type:f,nonNullable:!0})],p.prototype,`snappingOptions`,void 0),e([r({readOnly:!0})],p.prototype,`type`,void 0),e([r({readOnly:!0})],p.prototype,`unit`,null),e([r({readOnly:!0})],p.prototype,`updating`,null),p=e([i(`esri.views.2d.analysis.AreaMeasurementAnalysisView2D`)],p);const m=p;export{m as default};
2
+ import{__decorate as e}from"tslib";import{toAdaptiveLengthUnitForArea as t,toAdaptiveAreaUnit as n}from"../../../core/quantity.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as a}from"../../../support/getDefaultUnitForView.js";import o from"./AnalysisView2D.js";import{AreaMeasurementAreaVisualization as s}from"./AreaMeasurement/AreaMeasurementAreaVisualization.js";import{AreaMeasurementController as c}from"./AreaMeasurement/AreaMeasurementController.js";import{AreaMeasurementManipulatorVisualization as l}from"./AreaMeasurement/AreaMeasurementManipulatorVisualization.js";import{AreaMeasurementSketchVisualization as u}from"./AreaMeasurement/AreaMeasurementSketchVisualization.js";import{AreaMeasurementTool as d}from"./AreaMeasurement/AreaMeasurementTool.js";import f from"../../interactive/snapping/SnappingOptions.js";let p=class extends o{constructor(e){super(e),this.analysis=null,this.snappingOptions=new f,this.type=`area-measurement-view-2d`}initialize(){let{view:e}=this;this._areaVisualization=new s({view:e,measurementViewData:this}),this._controller=new c({view:e,measurementViewData:this}),this._manipulatorVisualization=new l({view:e,measurementViewData:this}),this._sketchVisualization=new u({view:e,measurementViewData:this}),this._tool=new d({view:e,measurementViewData:this})}destroy(){this._areaVisualization?.destroy(),this._controller?.destroy(),this._manipulatorVisualization?.destroy(),this._sketchVisualization?.destroy(),this._tool?.destroy()}get manipulatorGraphic(){return this._manipulatorVisualization?.graphic}get manipulatorGraphicsLayer(){return this._manipulatorVisualization?.graphicsLayer}get sketchGraphicsLayer(){return this._sketchVisualization?.graphicsLayer}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get result(){let e=this._controller?.result;if(!e)return e;let{unit:r}=this,{area:i,display:a,mode:o,perimeter:s}=e;return{area:i?n(i,r):null,display:a,mode:o,perimeter:s?t(s,r):null}}get unit(){return this.analysis.unit??this.view.options.displayUnits.area??a(this.view)}get updating(){return(this._areaVisualization?.updating??!0)||(this._controller?.updating??!0)||(this._sketchVisualization?.updating??!0)||(this._tool?.updating??!0)}get visible(){return super.visible}set visible(e){super.visible=e}async place(e){return this.interactive=!0,this._tool.place(e)}};e([r()],p.prototype,`_areaVisualization`,void 0),e([r()],p.prototype,`_controller`,void 0),e([r()],p.prototype,`_manipulatorVisualization`,void 0),e([r()],p.prototype,`_sketchVisualization`,void 0),e([r()],p.prototype,`_tool`,void 0),e([r({constructOnly:!0})],p.prototype,`analysis`,void 0),e([r()],p.prototype,`manipulatorGraphic`,null),e([r()],p.prototype,`manipulatorGraphicsLayer`,null),e([r()],p.prototype,`sketchGraphicsLayer`,null),e([r({readOnly:!0})],p.prototype,`result`,null),e([r({type:f,nonNullable:!0})],p.prototype,`snappingOptions`,void 0),e([r({readOnly:!0})],p.prototype,`type`,void 0),e([r({readOnly:!0})],p.prototype,`unit`,null),e([r({readOnly:!0})],p.prototype,`updating`,null),p=e([i(`esri.views.2d.analysis.AreaMeasurementAnalysisView2D`)],p);const m=p;export{m as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{multiplyOpacity as n}from"../../../../core/colorUtils.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import{ignoreAbortErrors as i,isAborted as a}from"../../../../core/promiseUtils.js";import{watch as o,initial as s}from"../../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../../core/support/UpdatingHandles.js";import d from"../../../../symbols/SimpleLineSymbol.js";import{ExclusiveOperationManager as f}from"../../../analysis/ExclusiveOperationManager.js";import{bindViewToolOptions as p}from"../../../interactive/options/bindViewToolOptions.js";import m from"../../../../widgets/Sketch/SketchViewModel.js";function h(e){return e?.type===`polyline`}let g=class extends t{constructor(e){super(e),this._invisibleLineSymbol=new d({color:null,width:0}),this._operationManager=new f,this._updatingHandles=new u}initialize(){this._sketchViewModel=new m({defaultCreateOptions:{mode:`click`},defaultUpdateOptions:{enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,enableZ:!1,highlightOptions:{enabled:!1},multipleSelectionEnabled:!1,reshapeOptions:{edgeOperation:`none`,shapeOperation:`none`},toggleToolOnClick:!1,tool:`reshape`},updateOnGraphicClick:!1,view:this.view}),this.addHandles([o(()=>({interactive:this.measurementViewData.interactive,visible:this.measurementViewData.visible}),({interactive:e,visible:t})=>{t&&e&&this._analysis.geometry?this._operationManager.currentOperationType!==`place`&&this.reshape().catch(()=>{}):this._operationManager.stop()}),o(()=>this.measurementViewData.analysis.geometry,e=>{e||(this._operationManager.stop(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll())}),o(()=>this.measurementViewData.snappingOptions,e=>{this._sketchViewModel&&(this._sketchViewModel.snappingOptions=e)},s),p(this._sketchViewModel.sketchOptions,()=>this.view.options,()=>({values:{displayUnits:{length:this._analysis.unit}}})),o(()=>this.view.effectiveTheme.accentColor,e=>{this._lineSymbol=new d({color:n(e,.3),width:2})},s)])}destroy(){this._invisibleLineSymbol.destroy(),this._lineSymbol?.destroy(),this._operationManager.destroy(),this._sketchViewModel?.destroy(),this._updatingHandles.destroy()}get state(){if(!this.measurementViewData.visible||!this._operationManager.currentOperationType)return`idle`;switch(this._operationManager.currentOperationType){case`place`:return`placing`;case`reshape`:return`reshaping`}}get updating(){return!this._sketchViewModel||this._sketchViewModel.updating||this._updatingHandles.updating}async place(e){return this._operationManager.start(`place`,async t=>{if(!this._sketchViewModel||!this.measurementViewData.sketchGraphicsLayer)return;let n=this._analysis.clone(),o=this._sketchViewModel.on(`create`,e=>{switch(e.state){case`start`:case`active`:{let t=e.graphic?.geometry;t?.type===`polyline`&&(this._analysis.geometry=t);break}case`cancel`:case`complete`:t.stop(),i(this.reshape())}});t.handles.push(o,r(()=>{o.remove(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll();let r=this._analysis;if(!r.valid)return r.clear(),t.reject();if(a(e)||n.equals(r))return t.reject();t.resolve({})})),this._sketchViewModel.activeLineSymbol=this._invisibleLineSymbol,this._sketchViewModel.polylineSymbol=this._invisibleLineSymbol,this._sketchViewModel.layer=this.measurementViewData.sketchGraphicsLayer,this._updatingHandles.consumePromise(i(this._sketchViewModel.create(`polyline`)))},e)}async reshape(e){return this._operationManager.start(`reshape`,async t=>{if(!this._sketchViewModel)return;let n=()=>!this._lineSymbol||!this._sketchViewModel||!this.measurementViewData.manipulatorGraphic||!this.measurementViewData.manipulatorGraphicsLayer?Promise.resolve():(this._sketchViewModel.activeLineSymbol=null,this._sketchViewModel.polylineSymbol=this._lineSymbol,this._sketchViewModel.layer=this.measurementViewData.manipulatorGraphicsLayer,this._updatingHandles.addPromise(i(this._sketchViewModel.update(this.measurementViewData.manipulatorGraphic,{tool:`reshape`})))),o=this._sketchViewModel.on(`update`,e=>{let r=e.graphics[0]?.geometry;this._analysis.geometry=h(r)?r:null,e.state===`complete`&&(this.measurementViewData.interactive?n():t.stop())});t.handles.push(o,r(()=>{if(o.remove(),this._sketchViewModel?.cancel(),a(e))return t.reject();t.resolve()})),await n()},e)}get _analysis(){return this.measurementViewData.analysis}};e([c()],g.prototype,`_sketchViewModel`,void 0),e([c()],g.prototype,`measurementViewData`,void 0),e([c()],g.prototype,`state`,null),e([c()],g.prototype,`updating`,null),e([c()],g.prototype,`view`,void 0),g=e([l(`esri.views.2d.analysis.DistanceMeasurement.DistanceMeasurementTool`)],g);export{g as DistanceMeasurementTool};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{multiplyOpacity as n}from"../../../../core/colorUtils.js";import{makeHandle as r}from"../../../../core/handleUtils.js";import{ignoreAbortErrors as i,isAborted as a}from"../../../../core/promiseUtils.js";import{watch as o,initial as s}from"../../../../core/reactiveUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../../core/support/UpdatingHandles.js";import d from"../../../../symbols/SimpleLineSymbol.js";import{ExclusiveOperationManager as f}from"../../../analysis/ExclusiveOperationManager.js";import{bindViewToolOptions as p}from"../../../interactive/options/bindViewToolOptions.js";import m from"../../../../widgets/Sketch/SketchViewModel.js";function h(e){return e?.type===`polyline`}let g=class extends t{constructor(e){super(e),this._invisibleLineSymbol=new d({color:null,width:0}),this._operationManager=new f,this._updatingHandles=new u}initialize(){this._sketchViewModel=new m({defaultCreateOptions:{mode:`click`},defaultUpdateOptions:{enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,enableZ:!1,highlightOptions:{enabled:!1},multipleSelectionEnabled:!1,reshapeOptions:{edgeOperation:`none`,shapeOperation:`none`},toggleToolOnClick:!1,tool:`reshape`},updateOnGraphicClick:!1,view:this.view}),this.addHandles([o(()=>({interactive:this.measurementViewData.interactive,visible:this.measurementViewData.visible}),({interactive:e,visible:t})=>{!t||!e?this._operationManager.stop():this._analysis.geometry&&this._operationManager.currentOperationType!==`place`&&this.reshape().catch(()=>{})}),o(()=>this.measurementViewData.analysis.geometry,e=>{e||(this._operationManager.stop(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll())}),o(()=>this.measurementViewData.snappingOptions,e=>{this._sketchViewModel&&(this._sketchViewModel.snappingOptions=e)},s),p(this._sketchViewModel.sketchOptions,()=>this.view.options,()=>({values:{displayUnits:{length:this._analysis.unit}}})),o(()=>this.view.effectiveTheme.accentColor,e=>{this._lineSymbol=new d({color:n(e,.3),width:2})},s)])}destroy(){this._invisibleLineSymbol.destroy(),this._lineSymbol?.destroy(),this._operationManager.destroy(),this._sketchViewModel?.destroy(),this._updatingHandles.destroy()}get state(){if(!this.measurementViewData.visible||!this._operationManager.currentOperationType)return`idle`;switch(this._operationManager.currentOperationType){case`place`:return`placing`;case`reshape`:return`reshaping`}}get updating(){return!this._sketchViewModel||this._sketchViewModel.updating||this._updatingHandles.updating}async place(e){return this._operationManager.start(`place`,async t=>{if(!this._sketchViewModel||!this.measurementViewData.sketchGraphicsLayer)return;let n=this._analysis.clone(),o=this._sketchViewModel.on(`create`,e=>{switch(e.state){case`start`:case`active`:{let t=e.graphic?.geometry;t?.type===`polyline`&&(this._analysis.geometry=t);break}case`cancel`:case`complete`:t.stop(),i(this.reshape())}});t.handles.push(o,r(()=>{o.remove(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll();let r=this._analysis;if(!r.valid)return r.clear(),t.reject();if(a(e)||n.equals(r))return t.reject();t.resolve({})})),this._sketchViewModel.activeLineSymbol=this._invisibleLineSymbol,this._sketchViewModel.polylineSymbol=this._invisibleLineSymbol,this._sketchViewModel.layer=this.measurementViewData.sketchGraphicsLayer,this._updatingHandles.consumePromise(i(this._sketchViewModel.create(`polyline`)))},e)}async reshape(e){return this._operationManager.start(`reshape`,async t=>{if(!this._sketchViewModel)return;let n=()=>!this._lineSymbol||!this._sketchViewModel||!this.measurementViewData.manipulatorGraphic||!this.measurementViewData.manipulatorGraphicsLayer?Promise.resolve():(this._sketchViewModel.activeLineSymbol=null,this._sketchViewModel.polylineSymbol=this._lineSymbol,this._sketchViewModel.layer=this.measurementViewData.manipulatorGraphicsLayer,this._updatingHandles.addPromise(i(this._sketchViewModel.update(this.measurementViewData.manipulatorGraphic,{tool:`reshape`})))),o=this._sketchViewModel.on(`update`,e=>{let r=e.graphics[0]?.geometry;this._analysis.geometry=h(r)?r:null,e.state===`complete`&&(this.measurementViewData.interactive?n():t.stop())});t.handles.push(o,r(()=>{if(o.remove(),this._sketchViewModel?.cancel(),a(e))return t.reject();t.resolve()})),await n()},e)}get _analysis(){return this.measurementViewData.analysis}};e([c()],g.prototype,`_sketchViewModel`,void 0),e([c()],g.prototype,`measurementViewData`,void 0),e([c()],g.prototype,`state`,null),e([c()],g.prototype,`updating`,null),e([c()],g.prototype,`view`,void 0),g=e([l(`esri.views.2d.analysis.DistanceMeasurement.DistanceMeasurementTool`)],g);export{g as DistanceMeasurementTool};
@@ -97,6 +97,8 @@ export default abstract class DistanceMeasurementAnalysisView2D extends Analysis
97
97
  /**
98
98
  * Starts an interactive placement operation to create a new [DistanceMeasurementAnalysis](https://developers.arcgis.com/javascript/latest/references/core/analysis/DistanceMeasurementAnalysis/).
99
99
  *
100
+ * Calling this method sets [interactive](https://developers.arcgis.com/javascript/latest/references/core/views/2d/analysis/DistanceMeasurementAnalysisView2D/#interactive) to `true`.
101
+ *
100
102
  * The placement operation will finish when the user presses the escape key, double taps, or double clicks.
101
103
  * To stop the placing programmatically, pass an abort signal as an argument when calling the method.
102
104
  *
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{toAdaptiveLengthUnit as t}from"../../../core/quantity.js";import{property as n,subclass as r}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as i}from"../../../support/getDefaultUnitForView.js";import a from"./AnalysisView2D.js";import{DistanceMeasurementController as o}from"./DistanceMeasurement/DistanceMeasurementController.js";import{DistanceMeasurementLineVisualization as s}from"./DistanceMeasurement/DistanceMeasurementLineVisualization.js";import{DistanceMeasurementManipulatorVisualization as c}from"./DistanceMeasurement/DistanceMeasurementManipulatorVisualization.js";import{DistanceMeasurementSketchVisualization as l}from"./DistanceMeasurement/DistanceMeasurementSketchVisualization.js";import{DistanceMeasurementTool as u}from"./DistanceMeasurement/DistanceMeasurementTool.js";import d from"../../interactive/snapping/SnappingOptions.js";let f=class extends a{constructor(e){super(e),this.analysis=null,this.snappingOptions=new d,this.type=`distance-measurement-view-2d`}initialize(){let{view:e}=this;this._lineVisualization=new s({view:e,measurementViewData:this}),this._controller=new o({view:e,measurementViewData:this}),this._manipulatorVisualization=new c({view:e,measurementViewData:this}),this._sketchVisualization=new l({view:e,measurementViewData:this}),this._tool=new u({view:e,measurementViewData:this})}destroy(){this._lineVisualization?.destroy(),this._controller?.destroy(),this._manipulatorVisualization?.destroy(),this._sketchVisualization?.destroy(),this._tool?.destroy()}get manipulatorGraphic(){return this._manipulatorVisualization?.graphic}get manipulatorGraphicsLayer(){return this._manipulatorVisualization?.graphicsLayer}get sketchGraphicsLayer(){return this._sketchVisualization?.graphicsLayer}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get result(){let e=this._controller?.result;return e&&{...e,length:t(e.length,this.unit)}}get unit(){return this.analysis.unit??this.view.options.displayUnits.length??i(this.view)}get updating(){return(this._controller?.updating??!0)||(this._lineVisualization?.updating??!0)||(this._sketchVisualization?.updating??!0)||(this._tool?.updating??!0)}get visible(){return super.visible}set visible(e){super.visible=e}async place(e){return this._tool.place(e)}};e([n()],f.prototype,`_lineVisualization`,void 0),e([n()],f.prototype,`_controller`,void 0),e([n()],f.prototype,`_manipulatorVisualization`,void 0),e([n()],f.prototype,`_sketchVisualization`,void 0),e([n()],f.prototype,`_tool`,void 0),e([n({constructOnly:!0})],f.prototype,`analysis`,void 0),e([n()],f.prototype,`manipulatorGraphic`,null),e([n()],f.prototype,`manipulatorGraphicsLayer`,null),e([n()],f.prototype,`sketchGraphicsLayer`,null),e([n({readOnly:!0})],f.prototype,`result`,null),e([n({type:d,nonNullable:!0})],f.prototype,`snappingOptions`,void 0),e([n({readOnly:!0})],f.prototype,`type`,void 0),e([n({readOnly:!0})],f.prototype,`unit`,null),e([n({readOnly:!0})],f.prototype,`updating`,null),f=e([r(`esri.views.2d.analysis.DistanceMeasurementAnalysisView2D`)],f);const p=f;export{p as default};
2
+ import{__decorate as e}from"tslib";import{toAdaptiveLengthUnit as t}from"../../../core/quantity.js";import{property as n,subclass as r}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as i}from"../../../support/getDefaultUnitForView.js";import a from"./AnalysisView2D.js";import{DistanceMeasurementController as o}from"./DistanceMeasurement/DistanceMeasurementController.js";import{DistanceMeasurementLineVisualization as s}from"./DistanceMeasurement/DistanceMeasurementLineVisualization.js";import{DistanceMeasurementManipulatorVisualization as c}from"./DistanceMeasurement/DistanceMeasurementManipulatorVisualization.js";import{DistanceMeasurementSketchVisualization as l}from"./DistanceMeasurement/DistanceMeasurementSketchVisualization.js";import{DistanceMeasurementTool as u}from"./DistanceMeasurement/DistanceMeasurementTool.js";import d from"../../interactive/snapping/SnappingOptions.js";let f=class extends a{constructor(e){super(e),this.analysis=null,this.snappingOptions=new d,this.type=`distance-measurement-view-2d`}initialize(){let{view:e}=this;this._lineVisualization=new s({view:e,measurementViewData:this}),this._controller=new o({view:e,measurementViewData:this}),this._manipulatorVisualization=new c({view:e,measurementViewData:this}),this._sketchVisualization=new l({view:e,measurementViewData:this}),this._tool=new u({view:e,measurementViewData:this})}destroy(){this._lineVisualization?.destroy(),this._controller?.destroy(),this._manipulatorVisualization?.destroy(),this._sketchVisualization?.destroy(),this._tool?.destroy()}get manipulatorGraphic(){return this._manipulatorVisualization?.graphic}get manipulatorGraphicsLayer(){return this._manipulatorVisualization?.graphicsLayer}get sketchGraphicsLayer(){return this._sketchVisualization?.graphicsLayer}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get result(){let e=this._controller?.result;return e&&{...e,length:t(e.length,this.unit)}}get unit(){return this.analysis.unit??this.view.options.displayUnits.length??i(this.view)}get updating(){return(this._controller?.updating??!0)||(this._lineVisualization?.updating??!0)||(this._sketchVisualization?.updating??!0)||(this._tool?.updating??!0)}get visible(){return super.visible}set visible(e){super.visible=e}async place(e){return this.interactive=!0,this._tool.place(e)}};e([n()],f.prototype,`_lineVisualization`,void 0),e([n()],f.prototype,`_controller`,void 0),e([n()],f.prototype,`_manipulatorVisualization`,void 0),e([n()],f.prototype,`_sketchVisualization`,void 0),e([n()],f.prototype,`_tool`,void 0),e([n({constructOnly:!0})],f.prototype,`analysis`,void 0),e([n()],f.prototype,`manipulatorGraphic`,null),e([n()],f.prototype,`manipulatorGraphicsLayer`,null),e([n()],f.prototype,`sketchGraphicsLayer`,null),e([n({readOnly:!0})],f.prototype,`result`,null),e([n({type:d,nonNullable:!0})],f.prototype,`snappingOptions`,void 0),e([n({readOnly:!0})],f.prototype,`type`,void 0),e([n({readOnly:!0})],f.prototype,`unit`,null),e([n({readOnly:!0})],f.prototype,`updating`,null),f=e([r(`esri.views.2d.analysis.DistanceMeasurementAnalysisView2D`)],f);const p=f;export{p as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{pt2px as e}from"../../../../../../../core/screenUtils.js";import{GeometryCursor as t}from"../../../../../../../geometry/GeometryCursor.js";import{maxTileCoordValue as n}from"../../../../../../../symbols/cim/constants.js";import{CIMMarkerPlacementHelper as r}from"../../../../../../../symbols/cim/placements/CIMMarkerPlacementHelper.js";import{spritePadding as i,tileSize as a}from"../../../definitions.js";import{AAnimatedMeshWriter as o}from"./AnimatedMeshWriter.js";import{angle as s,sizing as c,animationPointerAndBaseSizeAndReferenceSize as l,uv as u,offset as d,pos as f,bitset as p,id as m,lineLength as h,value1Position2Value2 as g,zoomRange as _}from"./attributes.js";import{clipWithVertexInterpolation as v}from"./clipping.js";import{createComputedAnimatedMeshParams as y}from"./ComputedAnimatedParams.js";function b(e,t){let n=[],r=0,i=0;for(;e.nextPath();){i=t?0:r,e.nextPoint();let{x:a,y:o}=e,s=[{x:a,y:o,attributes:[i]}];for(;e.nextPoint();){let{x:t,y:n}=e,r=t-a,c=n-o,l=Math.sqrt(r*r+c*c);i+=l,s.push({x:t,y:n,attributes:[i]}),a=t,o=n}s.length>1&&n.push(s),r=i}return{lineData:n,totalDistance:r}}class x extends o{get vertexSpec(){return{createComputedParams:y,optionalAttributes:{zoomRange:_,value1Position2Value2:g,lineLength:h},attributes:{id:m,bitset:p,pos:f,offset:d.marker,uv:u.marker,animationPointerAndBaseSizeAndReferenceSize:l,sizing:c,angle:s}}}_write(e,{target:n,effect:r}){let i=r?.geometry,{textureBinding:a}=this.evaluatedMeshParams.sprite;e.recordStart(this.instanceId,this.attributeLayout,a);let o=n.getDisplayId();if(this.shift&&n.geometryType===`esriGeometryPolyline`){if(!i){let r=t.fromFeatureSetReaderCIM(n);r&&this._writeParticles(e,n,r)}}else if(this.evaluatedMeshParams.placement!=null)this._writePlacedMarkers(e,n);else if(n.geometryType===`esriGeometryPolygon`){let t=n.readCentroidForDisplay();if(!t)return;let[r,i]=t.coords;this._writeQuad(e,o,r,i)}else if(n.geometryType===`esriGeometryPoint`){let t=n.readXForDisplay(),r=n.readYForDisplay();this._writeQuad(e,o,t,r)}else{let t=n.readGeometryForDisplay();t&&t.forEachVertex((t,n)=>{this._writeQuad(e,o,t,n)})}e.recordEnd()}_writePlacedMarkers(i,a){let o=t.fromFeatureSetReaderCIM(a)?.clone();if(!o)return;let s=r.getPlacement(o,-1,this.evaluatedMeshParams.placement,e(1),i.id);if(!s)return;let c=a.getDisplayId(),l=s.next(),u=null;for(;l!=null;){let e=l.tx,t=-l.ty;if(Math.abs(e)>n||Math.abs(t)>n){l=s.next();continue}let r=-l.getAngle();i.recordBounds(e,t,64,64),this.shift?u&&this._writeQuad(i,c,u[0],u[1],void 0,r):this._writeQuad(i,c,e,t,void 0,r),u=[e,t],l=s.next()}}_writeParticles(e,t,n){let r=t.getDisplayId(),{placement:i}=this.evaluatedMeshParams,o=i?.placePerPart??!1,{lineData:s,totalDistance:c}=b(n,o);if(s.length===0)return;let l=this.evaluatedMeshParams.baseSize,u={x:-l,y:-l,width:a+2*l,height:a+2*l},d=s.flatMap(e=>{let t=o?e[e.length-1].attributes[0]:c;return S(v(e,u),t)});for(let{particles:t,lineLength:n}of d){let a=i=>{for(let a of t){let{a:t,b:o}=a;this._writeQuad(e,r,t.position[0],t.position[1],[t.distance-i,o.position[0],o.position[1],o.distance-i],this.evaluatedMeshParams.angleToLine?Math.atan2(t.direction[1],t.direction[0]):0,n,!0)}};if(!i||`placementTemplate`in i||i.type===`CIMMarkerPlacementOnVertices`){let e;if(i&&i.type!==`CIMMarkerPlacementOnVertices`)e=i.placementTemplate;else{e=[0];for(let n of t){let{a:t,b:r}=n,i=t.position[0]-r.position[0],a=t.position[1]-r.position[1],o=Math.sqrt(i*i+a*a);e.push(o)}}let r=-1*n;for(;r<2*n;)for(let t of e)r+=t,a(r)}else i.type===`CIMMarkerPlacementAtExtremities`?i.extremityPlacement===`JustBegin`?a(1):i.extremityPlacement===`JustEnd`?(a(n-1),a(-1)):i.extremityPlacement===`Both`&&(a(1),a(n-1)):i.type===`CIMMarkerPlacementOnLine`&&(i.relativeTo===`LineBeginning`?a(1):i.relativeTo===`LineEnd`?(a(n-1),a(-1)):i.relativeTo===`LineMiddle`&&a(n/2))}}_writeQuad(e,t,n,r,a,o=0,s=0,c=!1){let{rect:l}=this.evaluatedMeshParams.sprite,u=l.x+i,d=l.y+i,f=l.x+l.width-i,p=l.y+l.height-i,m=e.vertexCount();c||e.recordBounds(n,r,64,64);let h={texXmin:u,texYmin:d,texXmax:f,texYmax:p,value1Position2Value2:a,angle:o,lineLength:s};for(let i=0;i<4;i++)this._writeVertex(e,t,n,r,h);e.indexEnsureSize(6),e.indexWrite(m),e.indexWrite(m+1),e.indexWrite(m+2),e.indexWrite(m+1),e.indexWrite(m+3),e.indexWrite(m+2)}}function S(e,t){let n=[];for(let r of e){let e=[],{x:i,y:a}=r[0],o=r[0].attributes[0];for(let t=1;t<r.length;t++){let{x:n,y:s}=r[t],c=r[t].attributes[0],l=n-i,u=s-a,d=Math.sqrt(l*l+u*u);if(d>0)l/=d,u/=d;else continue;e.push({a:{position:[i,a],distance:o,direction:[l,u]},b:{position:[n,s],distance:c,direction:[l,u]}}),i=n,a=s,o=c}n.push({particles:e,lineLength:t})}return n}class C extends x{constructor(){super(...arguments),this.shift=!1}}class w extends x{constructor(){super(...arguments),this.shift=!0}}export{C as AnimatedMarkerMeshWriter,w as AnimatedMarkerShiftMeshWriter,b as convertToLineData};
2
+ import{onePointInPixels as e}from"../../../../../../../core/screenUtils.js";import{GeometryCursor as t}from"../../../../../../../geometry/GeometryCursor.js";import{maxTileCoordValue as n}from"../../../../../../../symbols/cim/constants.js";import{CIMMarkerPlacementHelper as r}from"../../../../../../../symbols/cim/placements/CIMMarkerPlacementHelper.js";import{spritePadding as i,tileSize as a}from"../../../definitions.js";import{AAnimatedMeshWriter as o}from"./AnimatedMeshWriter.js";import{angle as s,sizing as c,animationPointerAndBaseSizeAndReferenceSize as l,uv as u,offset as d,pos as f,bitset as p,id as m,lineLength as h,value1Position2Value2 as g,zoomRange as _}from"./attributes.js";import{clipWithVertexInterpolation as v}from"./clipping.js";import{createComputedAnimatedMeshParams as y}from"./ComputedAnimatedParams.js";function b(e,t){let n=[],r=0,i=0;for(;e.nextPath();){i=t?0:r,e.nextPoint();let{x:a,y:o}=e,s=[{x:a,y:o,attributes:[i]}];for(;e.nextPoint();){let{x:t,y:n}=e,r=t-a,c=n-o,l=Math.sqrt(r*r+c*c);i+=l,s.push({x:t,y:n,attributes:[i]}),a=t,o=n}s.length>1&&n.push(s),r=i}return{lineData:n,totalDistance:r}}class x extends o{get vertexSpec(){return{createComputedParams:y,optionalAttributes:{zoomRange:_,value1Position2Value2:g,lineLength:h},attributes:{id:m,bitset:p,pos:f,offset:d.marker,uv:u.marker,animationPointerAndBaseSizeAndReferenceSize:l,sizing:c,angle:s}}}_write(e,{target:n,effect:r}){let i=r?.geometry,{textureBinding:a}=this.evaluatedMeshParams.sprite;e.recordStart(this.instanceId,this.attributeLayout,a);let o=n.getDisplayId();if(this.shift&&n.geometryType===`esriGeometryPolyline`){if(!i){let r=t.fromFeatureSetReaderCIM(n);r&&this._writeParticles(e,n,r)}}else if(this.evaluatedMeshParams.placement!=null)this._writePlacedMarkers(e,n);else if(n.geometryType===`esriGeometryPolygon`){let t=n.readCentroidForDisplay();if(!t)return;let[r,i]=t.coords;this._writeQuad(e,o,r,i)}else if(n.geometryType===`esriGeometryPoint`){let t=n.readXForDisplay(),r=n.readYForDisplay();this._writeQuad(e,o,t,r)}else{let t=n.readGeometryForDisplay();t&&t.forEachVertex((t,n)=>{this._writeQuad(e,o,t,n)})}e.recordEnd()}_writePlacedMarkers(i,a){let o=t.fromFeatureSetReaderCIM(a)?.clone();if(!o)return;let s=r.getPlacement(o,-1,this.evaluatedMeshParams.placement,e,i.id);if(!s)return;let c=a.getDisplayId(),l=s.next(),u=null;for(;l!=null;){let e=l.tx,t=-l.ty;if(Math.abs(e)>n||Math.abs(t)>n){l=s.next();continue}let r=-l.getAngle();i.recordBounds(e,t,64,64),this.shift?u&&this._writeQuad(i,c,u[0],u[1],void 0,r):this._writeQuad(i,c,e,t,void 0,r),u=[e,t],l=s.next()}}_writeParticles(e,t,n){let r=t.getDisplayId(),{placement:i}=this.evaluatedMeshParams,o=i?.placePerPart??!1,{lineData:s,totalDistance:c}=b(n,o);if(s.length===0)return;let l=this.evaluatedMeshParams.baseSize,u={x:-l,y:-l,width:a+2*l,height:a+2*l},d=s.flatMap(e=>{let t=o?e[e.length-1].attributes[0]:c;return S(v(e,u),t)});for(let{particles:t,lineLength:n}of d){let a=i=>{for(let a of t){let{a:t,b:o}=a;this._writeQuad(e,r,t.position[0],t.position[1],[t.distance-i,o.position[0],o.position[1],o.distance-i],this.evaluatedMeshParams.angleToLine?Math.atan2(t.direction[1],t.direction[0]):0,n,!0)}};if(!i||`placementTemplate`in i||i.type===`CIMMarkerPlacementOnVertices`){let e;if(i&&i.type!==`CIMMarkerPlacementOnVertices`)e=i.placementTemplate;else{e=[0];for(let n of t){let{a:t,b:r}=n,i=t.position[0]-r.position[0],a=t.position[1]-r.position[1],o=Math.sqrt(i*i+a*a);e.push(o)}}let r=-1*n;for(;r<2*n;)for(let t of e)r+=t,a(r)}else i.type===`CIMMarkerPlacementAtExtremities`?i.extremityPlacement===`JustBegin`?a(1):i.extremityPlacement===`JustEnd`?(a(n-1),a(-1)):i.extremityPlacement===`Both`&&(a(1),a(n-1)):i.type===`CIMMarkerPlacementOnLine`&&(i.relativeTo===`LineBeginning`?a(1):i.relativeTo===`LineEnd`?(a(n-1),a(-1)):i.relativeTo===`LineMiddle`&&a(n/2))}}_writeQuad(e,t,n,r,a,o=0,s=0,c=!1){let{rect:l}=this.evaluatedMeshParams.sprite,u=l.x+i,d=l.y+i,f=l.x+l.width-i,p=l.y+l.height-i,m=e.vertexCount();c||e.recordBounds(n,r,64,64);let h={texXmin:u,texYmin:d,texXmax:f,texYmax:p,value1Position2Value2:a,angle:o,lineLength:s};for(let i=0;i<4;i++)this._writeVertex(e,t,n,r,h);e.indexEnsureSize(6),e.indexWrite(m),e.indexWrite(m+1),e.indexWrite(m+2),e.indexWrite(m+1),e.indexWrite(m+3),e.indexWrite(m+2)}}function S(e,t){let n=[];for(let r of e){let e=[],{x:i,y:a}=r[0],o=r[0].attributes[0];for(let t=1;t<r.length;t++){let{x:n,y:s}=r[t],c=r[t].attributes[0],l=n-i,u=s-a,d=Math.sqrt(l*l+u*u);if(d>0)l/=d,u/=d;else continue;e.push({a:{position:[i,a],distance:o,direction:[l,u]},b:{position:[n,s],distance:c,direction:[l,u]}}),i=n,a=s,o=c}n.push({particles:e,lineLength:t})}return n}class C extends x{constructor(){super(...arguments),this.shift=!1}}class w extends x{constructor(){super(...arguments),this.shift=!0}}export{C as AnimatedMarkerMeshWriter,w as AnimatedMarkerShiftMeshWriter,b as convertToLineData};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{pt2px as e}from"../../../../../../../core/screenUtils.js";import{identity as t,translate as n,rotate as r}from"../../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as i}from"../../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as a}from"../../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{GeometryCursor as o}from"../../../../../../../geometry/GeometryCursor.js";import{clipCursorToTileExtent as s}from"../../../../../../../symbols/cim/CIMEffects.js";import{maxTileCoordValue as c}from"../../../../../../../symbols/cim/constants.js";import{CIMMarkerPlacementHelper as l}from"../../../../../../../symbols/cim/placements/CIMMarkerPlacementHelper.js";import{packByteSqrt as u,processColorInput as d,getMinMaxZoom as f,getBitMask as p}from"../fill/meshWriterUtils.js";import{ComputedMarkerParams as m}from"./ComputedMarkerParams.js";import{MarkerConstants as h}from"./markerConstants.js";import{MeshWriter as g}from"../mesh/MeshWriter.js";import{DataType as _}from"../../../../../../webgl/enums.js";const v=128/Math.PI;function y(e,t){return e%=t,Math.abs(e>=0?e:e+t)}function b(e){return y(e*v,256)}function x(e,a,o,s,c=!1){let l=i(),u=c?1:-1;return t(l),(a||o)&&n(l,l,[a,-o]),s&&r(l,l,u*.017453292519944444*-s),l}const S={createComputedParams:e=>m.from(e),optionalAttributes:{zoomRange:{type:_.HALF_FLOAT,count:2,pack:({scaleInfo:e},{tileInfo:t})=>f(e,t)}},attributes:{pos:{type:_.SHORT,count:2,pack:`position`,packPrecisionFactor:10},id:{type:_.UNSIGNED_BYTE,count:3,pack:`id`},bitset:{type:_.UNSIGNED_BYTE,count:1,pack:({sprite:e,alignment:t,scaleSymbolsProportionally:n,overrideOutlineColor:r,colorLocked:i})=>{let a=0;return e.sdf&&(a|=p(h.bitset.isSDF)),t===1&&(a|=p(h.bitset.isMapAligned)),n&&(a|=p(h.bitset.scaleSymbolsProportionally)),r&&(a|=p(h.bitset.overrideOutlineColor)),i&&(a|=p(h.bitset.colorLocked)),a}},offset:{type:_.HALF_FLOAT,count:2,packAlternating:{count:4,pack:({angle:e,computedWidth:t,computedHeight:n,anchorX:r,anchorY:i,offsetX:o,offsetY:s,rotateClockwise:c})=>{let l=x(0,o,s,-e,c),u=-(.5+r)*t,d=-(.5-i)*n,f=[u,d],p=[u+t,d],m=[u,d+n],h=[u+t,d+n];return a(f,f,l),a(p,p,l),a(m,m,l),a(h,h,l),[f,p,m,h]}}},textureUV:{type:_.SHORT,count:2,packPrecisionFactor:4,packAlternating:{count:4,pack:({texXmax:e,texXmin:t,texYmax:n,texYmin:r})=>[[t,r],[e,r],[t,n],[e,n]]}},color:{type:_.UNSIGNED_BYTE,count:4,normalized:!0,pack:({color:e})=>d(e)},outlineColor:{type:_.UNSIGNED_BYTE,count:4,normalized:!0,pack:({outlineColor:e})=>d(e)},sizing:{type:_.UNSIGNED_BYTE,count:4,pack:({rawWidth:e,rawHeight:t,outlineSize:n,referenceSize:r})=>[u(Math.max(e,t),128),u(n,128),u(r,128),0]},placementAngle:{type:_.UNSIGNED_BYTE,count:1,packTessellation:({placementAngle:e})=>b(e)},sdfDecodeCoeff:{type:_.UNSIGNED_SHORT,count:1,packPrecisionFactor:64,pack:({sdfDecodeCoeff:e})=>e}}};class C extends g{constructor(){super(...arguments),this.calloutRecordsUseLabelPhase=!1,this.vertexSpec=S}get _requiresPerFeaturePacking(){return this._getPointSymbolCalloutMarkerEffect()!=null}getBoundsInfo(){return this.evaluatedMeshParams.boundsInfo}getLocalCalloutReferenceInfo(){let e=this.evaluatedMeshParams.boundsInfo;if(!e)return;let t=e.size/2;return{anchor:{x:0,y:0},bodyBounds:{xmin:e.offsetX-t,ymin:e.offsetY-t,xmax:e.offsetX+t,ymax:e.offsetY+t},bodyBoundsUseReferenceScale:!0}}getCalloutCollisionBounds(e){if(this._getPointSymbolCalloutMarkerEffect())return this.evaluatedMeshParams.getPointSymbolCalloutBounds(e.bodyBounds)}_prepareEvaluatedMeshParams(t,n,r,i){let a=this._getPointSymbolCalloutMarkerEffect();if(!a)return;let o=i?.effect?.referenceBounds;if(!o){t.resetSizeOverride();return}let s=o.xmax-o.xmin,c=o.ymax-o.ymin;t.applyPointSymbolCalloutBackgroundScale(a.backgroundScale,s,c,e(a.gap??0),a.contentWidthRatio,a.contentHeightRatio,a.contentRequiresRadialFit)}_write(e,{target:t,effect:n,scaleFactor:r}){let i=n?.geometry,a=this.evaluatedMeshParams.sprite?.textureBinding,o=t.getDisplayId();e.recordStart(this.instanceId,this.attributeLayout,a);let l=this.evaluatedMeshParams.minPixelBuffer,u=Math.max(this.evaluatedMeshParams.computedWidth,l),d=Math.max(this.evaluatedMeshParams.computedHeight,l),f=-this.evaluatedMeshParams.anchorX*this.evaluatedMeshParams.computedWidth,p=this.evaluatedMeshParams.anchorY*this.evaluatedMeshParams.computedHeight,m=this.evaluatedMeshParams.offsetX+f,h=-this.evaluatedMeshParams.offsetY+p;if(this.evaluatedMeshParams.placement!=null){let n=null;if(i!=null){let e=Math.max(this.evaluatedMeshParams.computedWidth,this.evaluatedMeshParams.computedHeight)*(r??1);if(n=s(i,2*e,!1),n===null)return}this._writePlacedMarkers(e,t,n,u,d)}else if(i?.nextPath()){i.nextPoint();let t=i.x,n=i.y;e.recordBounds(t+m,n+h,u,d),this._writeQuad(e,o,t,n)}else if(t.geometryType===`esriGeometryPolygon`){let n=t.readCentroidForDisplay();if(!n)return;let[r,i]=n.coords;e.recordBounds(r+m,i+h,u,d),this._writeQuad(e,o,r,i)}else if(t.geometryType===`esriGeometryPoint`){let n=t.readXForDisplay(),r=t.readYForDisplay();e.recordBounds(n+m,r+h,u,d),this._writeQuad(e,o,n,r)}else t.readGeometryForDisplay()?.forEachVertex((t,n)=>{e.recordBounds(t+m,n+h,u,d),!(Math.abs(t)>c||Math.abs(n)>c)&&this._writeQuad(e,o,t,n)});e.recordEnd()}_writePlacedMarkers(t,n,r,i,a){let s=r??o.fromFeatureSetReaderCIM(n);if(!s)return;let u=l.getPlacement(s,-1,this.evaluatedMeshParams.placement,e(1),t.id);if(!u)return;let d=n.getDisplayId(),f=u.next(),p=this.evaluatedMeshParams.offsetX,m=-this.evaluatedMeshParams.offsetY;for(;f!=null;){let e=f.tx,n=-f.ty;if(Math.abs(e)>c||Math.abs(n)>c){f=u.next();continue}let r=-f.getAngle();t.recordBounds(e+p,n+m,i,a),this._writeQuad(t,d,e,n,r),f=u.next()}}_writeQuad(e,t,n,r,i){let a=e.vertexCount(),o=i==null?null:{placementAngle:i};this._writeVertex(e,t,n,r,o),e.indexWrite(a+0),e.indexWrite(a+1),e.indexWrite(a+2),e.indexWrite(a+1),e.indexWrite(a+3),e.indexWrite(a+2)}_getPointSymbolCalloutMarkerEffect(){for(let{effect:e}of this.effectInfos??[])if(e.type===`CIMPointSymbolCallout`&&e.part===`marker`)return e}}export{C as MarkerMeshWriter,S as MarkerVertexSpec};
2
+ import{pt2px as e,onePointInPixels as t}from"../../../../../../../core/screenUtils.js";import{identity as n,translate as r,rotate as i}from"../../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as a}from"../../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as o}from"../../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{GeometryCursor as s}from"../../../../../../../geometry/GeometryCursor.js";import{clipCursorToTileExtent as c}from"../../../../../../../symbols/cim/CIMEffects.js";import{maxTileCoordValue as l}from"../../../../../../../symbols/cim/constants.js";import{CIMMarkerPlacementHelper as u}from"../../../../../../../symbols/cim/placements/CIMMarkerPlacementHelper.js";import{packByteSqrt as d,processColorInput as f,getMinMaxZoom as p,getBitMask as m}from"../fill/meshWriterUtils.js";import{ComputedMarkerParams as h}from"./ComputedMarkerParams.js";import{MarkerConstants as g}from"./markerConstants.js";import{MeshWriter as _}from"../mesh/MeshWriter.js";import{DataType as v}from"../../../../../../webgl/enums.js";const y=128/Math.PI;function b(e,t){return e%=t,Math.abs(e>=0?e:e+t)}function x(e){return b(e*y,256)}function S(e,t,o,s,c=!1){let l=a(),u=c?1:-1;return n(l),(t||o)&&r(l,l,[t,-o]),s&&i(l,l,u*.017453292519944444*-s),l}const C={createComputedParams:e=>h.from(e),optionalAttributes:{zoomRange:{type:v.HALF_FLOAT,count:2,pack:({scaleInfo:e},{tileInfo:t})=>p(e,t)}},attributes:{pos:{type:v.SHORT,count:2,pack:`position`,packPrecisionFactor:10},id:{type:v.UNSIGNED_BYTE,count:3,pack:`id`},bitset:{type:v.UNSIGNED_BYTE,count:1,pack:({sprite:e,alignment:t,scaleSymbolsProportionally:n,overrideOutlineColor:r,colorLocked:i})=>{let a=0;return e.sdf&&(a|=m(g.bitset.isSDF)),t===1&&(a|=m(g.bitset.isMapAligned)),n&&(a|=m(g.bitset.scaleSymbolsProportionally)),r&&(a|=m(g.bitset.overrideOutlineColor)),i&&(a|=m(g.bitset.colorLocked)),a}},offset:{type:v.HALF_FLOAT,count:2,packAlternating:{count:4,pack:({angle:e,computedWidth:t,computedHeight:n,anchorX:r,anchorY:i,offsetX:a,offsetY:s,rotateClockwise:c})=>{let l=S(0,a,s,-e,c),u=-(.5+r)*t,d=-(.5-i)*n,f=[u,d],p=[u+t,d],m=[u,d+n],h=[u+t,d+n];return o(f,f,l),o(p,p,l),o(m,m,l),o(h,h,l),[f,p,m,h]}}},textureUV:{type:v.SHORT,count:2,packPrecisionFactor:4,packAlternating:{count:4,pack:({texXmax:e,texXmin:t,texYmax:n,texYmin:r})=>[[t,r],[e,r],[t,n],[e,n]]}},color:{type:v.UNSIGNED_BYTE,count:4,normalized:!0,pack:({color:e})=>f(e)},outlineColor:{type:v.UNSIGNED_BYTE,count:4,normalized:!0,pack:({outlineColor:e})=>f(e)},sizing:{type:v.UNSIGNED_BYTE,count:4,pack:({rawWidth:e,rawHeight:t,outlineSize:n,referenceSize:r})=>[d(Math.max(e,t),128),d(n,128),d(r,128),0]},placementAngle:{type:v.UNSIGNED_BYTE,count:1,packTessellation:({placementAngle:e})=>x(e)},sdfDecodeCoeff:{type:v.UNSIGNED_SHORT,count:1,packPrecisionFactor:64,pack:({sdfDecodeCoeff:e})=>e}}};class w extends _{constructor(){super(...arguments),this.calloutRecordsUseLabelPhase=!1,this.vertexSpec=C}get _requiresPerFeaturePacking(){return this._getPointSymbolCalloutMarkerEffect()!=null}getBoundsInfo(){return this.evaluatedMeshParams.boundsInfo}getLocalCalloutReferenceInfo(){let e=this.evaluatedMeshParams.boundsInfo;if(!e)return;let t=e.size/2;return{anchor:{x:0,y:0},bodyBounds:{xmin:e.offsetX-t,ymin:e.offsetY-t,xmax:e.offsetX+t,ymax:e.offsetY+t},bodyBoundsUseReferenceScale:!0}}getCalloutCollisionBounds(e){if(this._getPointSymbolCalloutMarkerEffect())return this.evaluatedMeshParams.getPointSymbolCalloutBounds(e.bodyBounds)}_prepareEvaluatedMeshParams(t,n,r,i){let a=this._getPointSymbolCalloutMarkerEffect();if(!a)return;let o=i?.effect?.referenceBounds;if(!o){t.resetSizeOverride();return}let s=o.xmax-o.xmin,c=o.ymax-o.ymin;t.applyPointSymbolCalloutBackgroundScale(a.backgroundScale,s,c,e(a.gap??0),a.contentWidthRatio,a.contentHeightRatio,a.contentRequiresRadialFit)}_write(e,{target:t,effect:n,scaleFactor:r}){let i=n?.geometry,a=this.evaluatedMeshParams.sprite?.textureBinding,o=t.getDisplayId();e.recordStart(this.instanceId,this.attributeLayout,a);let s=this.evaluatedMeshParams.minPixelBuffer,u=Math.max(this.evaluatedMeshParams.computedWidth,s),d=Math.max(this.evaluatedMeshParams.computedHeight,s),f=-this.evaluatedMeshParams.anchorX*this.evaluatedMeshParams.computedWidth,p=this.evaluatedMeshParams.anchorY*this.evaluatedMeshParams.computedHeight,m=this.evaluatedMeshParams.offsetX+f,h=-this.evaluatedMeshParams.offsetY+p;if(this.evaluatedMeshParams.placement!=null){let n=null;if(i!=null){let e=Math.max(this.evaluatedMeshParams.computedWidth,this.evaluatedMeshParams.computedHeight)*(r??1);if(n=c(i,2*e,!1),n===null)return}this._writePlacedMarkers(e,t,n,u,d)}else if(i?.nextPath()){i.nextPoint();let t=i.x,n=i.y;e.recordBounds(t+m,n+h,u,d),this._writeQuad(e,o,t,n)}else if(t.geometryType===`esriGeometryPolygon`){let n=t.readCentroidForDisplay();if(!n)return;let[r,i]=n.coords;e.recordBounds(r+m,i+h,u,d),this._writeQuad(e,o,r,i)}else if(t.geometryType===`esriGeometryPoint`){let n=t.readXForDisplay(),r=t.readYForDisplay();e.recordBounds(n+m,r+h,u,d),this._writeQuad(e,o,n,r)}else t.readGeometryForDisplay()?.forEachVertex((t,n)=>{e.recordBounds(t+m,n+h,u,d),!(Math.abs(t)>l||Math.abs(n)>l)&&this._writeQuad(e,o,t,n)});e.recordEnd()}_writePlacedMarkers(e,n,r,i,a){let o=r??s.fromFeatureSetReaderCIM(n);if(!o)return;let c=u.getPlacement(o,-1,this.evaluatedMeshParams.placement,t,e.id);if(!c)return;let d=n.getDisplayId(),f=c.next(),p=this.evaluatedMeshParams.offsetX,m=-this.evaluatedMeshParams.offsetY;for(;f!=null;){let t=f.tx,n=-f.ty;if(Math.abs(t)>l||Math.abs(n)>l){f=c.next();continue}let r=-f.getAngle();e.recordBounds(t+p,n+m,i,a),this._writeQuad(e,d,t,n,r),f=c.next()}}_writeQuad(e,t,n,r,i){let a=e.vertexCount(),o=i==null?null:{placementAngle:i};this._writeVertex(e,t,n,r,o),e.indexWrite(a+0),e.indexWrite(a+1),e.indexWrite(a+2),e.indexWrite(a+1),e.indexWrite(a+3),e.indexWrite(a+2)}_getPointSymbolCalloutMarkerEffect(){for(let{effect:e}of this.effectInfos??[])if(e.type===`CIMPointSymbolCallout`&&e.part===`marker`)return e}}export{w as MarkerMeshWriter,C as MarkerVertexSpec};