@arcgis/core 5.2.0-next.112 → 5.2.0-next.114
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.
- package/Ground.js +1 -1
- package/arcgisGlobal.d.ts +6 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/01ca17092545d72be7b6.js +1 -0
- package/assets/esri/core/workers/chunks/{f5a988bb850f7a7af143.js → 05b373a663cb5d4d722f.js} +1 -1
- package/assets/esri/core/workers/chunks/{36f8caeb574dcd5c0ed5.js → 0b727d7bf3e36e146725.js} +1 -1
- package/assets/esri/core/workers/chunks/0c65862e3dd810015491.js +1 -0
- package/assets/esri/core/workers/chunks/0e3e58ba8e2d358121a5.js +1 -0
- package/assets/esri/core/workers/chunks/0edebc6c516f0b9dac7b.js +1 -0
- package/assets/esri/core/workers/chunks/1004e77593dfa506cd5d.js +1 -0
- package/assets/esri/core/workers/chunks/184942ea601237c8241a.js +1 -0
- package/assets/esri/core/workers/chunks/20de0ea9fa08a6545978.js +1 -0
- package/assets/esri/core/workers/chunks/214d63813d268afc265d.js +1 -0
- package/assets/esri/core/workers/chunks/22e85819e23202a8ba90.js +1 -0
- package/assets/esri/core/workers/chunks/{6e677505d257e0848075.js → 23f9ab77e4e263f82636.js} +1 -1
- package/assets/esri/core/workers/chunks/28a04887ecaee5445d14.js +1 -0
- package/assets/esri/core/workers/chunks/{2fc5c1504691badc7792.js → 2ac2d0a7623dd060c144.js} +1 -1
- package/assets/esri/core/workers/chunks/2afce71e8b6ae86e0792.js +1 -0
- package/assets/esri/core/workers/chunks/36792b8a85e88044cb49.js +1 -0
- package/assets/esri/core/workers/chunks/36a7e19f43517aa94577.js +1 -0
- package/assets/esri/core/workers/chunks/{6e6cdff4bbe1ff2f44ac.js → 3ab25279aaa30f035038.js} +1 -1
- package/assets/esri/core/workers/chunks/{e6dae16208f6978b59e0.js → 3b499cfc89c8f87cdb20.js} +1 -1
- package/assets/esri/core/workers/chunks/445b0ca1b70730c9a2e6.js +1 -0
- package/assets/esri/core/workers/chunks/{24673aac70d6c949b6fa.js → 4bf2cc4d092601ff2b86.js} +1 -1
- package/assets/esri/core/workers/chunks/{d45483dd0dc2853b18b7.js → 4bfd63f3cf9208eb839b.js} +33 -33
- package/assets/esri/core/workers/chunks/501df20cdd09384f6ee2.js +1 -0
- package/assets/esri/core/workers/chunks/510a190a6f0a60ae38c3.js +1 -0
- package/assets/esri/core/workers/chunks/{89a785f8b61263e2d592.js → 552c92b01a5f02a115c5.js} +1 -1
- package/assets/esri/core/workers/chunks/564fdf0d663b773806cc.js +1 -0
- package/assets/esri/core/workers/chunks/{d9270f4935eb0d044db3.js → 57328c206f1e699ac06f.js} +1 -1
- package/assets/esri/core/workers/chunks/{50951fb13013b11b8a24.js → 58e62c8ce1292f4d3b06.js} +1 -1
- package/assets/esri/core/workers/chunks/5aee7739afb5160d4ace.js +1 -0
- package/assets/esri/core/workers/chunks/5b9925f23d4b10a7087e.js +1 -0
- package/assets/esri/core/workers/chunks/5f79ba5639067f734791.js +1 -0
- package/assets/esri/core/workers/chunks/{b013b70e40dfb6ce013e.js → 60c61f34733063730386.js} +1 -1
- package/assets/esri/core/workers/chunks/62b1f94f4fa978d4da48.js +1 -0
- package/assets/esri/core/workers/chunks/6b264006b96cbf93d8ed.js +1 -0
- package/assets/esri/core/workers/chunks/6b9d29ca568590358478.js +1 -0
- package/assets/esri/core/workers/chunks/{7c5310e0104c22da0261.js → 6c7cb7974969e3167f2b.js} +1 -1
- package/assets/esri/core/workers/chunks/6c82cbcd504c711a7450.js +1 -0
- package/assets/esri/core/workers/chunks/{e98b785e8f4edc8bd3ff.js → 6eceeca33fac8e900d9d.js} +1 -1
- package/assets/esri/core/workers/chunks/7232fc11b23777b6be94.js +1 -0
- package/assets/esri/core/workers/chunks/726ca458b98bb4334431.js +1 -0
- package/assets/esri/core/workers/chunks/785206da3962ba23de16.js +1 -0
- package/assets/esri/core/workers/chunks/{1c70620f40be02f532b5.js → 7b169eabafcc03bfaee6.js} +1 -1
- package/assets/esri/core/workers/chunks/7bbc3d22383388d11345.js +1 -0
- package/assets/esri/core/workers/chunks/{082069f80eee0407b828.js → 7edf57e31ff07af9032b.js} +1 -1
- package/assets/esri/core/workers/chunks/83ed38468e316302b157.js +1 -0
- package/assets/esri/core/workers/chunks/85c876ee9e63d5732937.js +1 -0
- package/assets/esri/core/workers/chunks/8f0ecf4d06ec7b67d4ed.js +1 -0
- package/assets/esri/core/workers/chunks/8f1c5f5e70d4b33d021d.js +1 -0
- package/assets/esri/core/workers/chunks/{a1916bca1af5c65be4b0.js → 90ab3c47138875070a53.js} +1 -1
- package/assets/esri/core/workers/chunks/{10389c87d9c6a43363ce.js → 917dec9c004218c58950.js} +1 -1
- package/assets/esri/core/workers/chunks/91f451b98e0f696043df.js +1 -0
- package/assets/esri/core/workers/chunks/943d0026ca4d49eb3ac2.js +1 -0
- package/assets/esri/core/workers/chunks/982a396bd4fffa62e911.js +1 -0
- package/assets/esri/core/workers/chunks/98a5327fd96d9542b39f.js +1 -0
- package/assets/esri/core/workers/chunks/9b9a60f1e0c48aa701f0.js +1 -0
- package/assets/esri/core/workers/chunks/9d92e6f0beed9a8580fa.js +1 -0
- package/assets/esri/core/workers/chunks/9df379041e8860fe7f01.js +1 -0
- package/assets/esri/core/workers/chunks/{1e8ceb4a4b28625236e3.js → a42505b978d54d36d3b6.js} +1 -1
- package/assets/esri/core/workers/chunks/{bfbe6ff786435fe1e7cf.js → a86a4e550a92f770d6d5.js} +1 -1
- package/assets/esri/core/workers/chunks/{a34eee4c9d4c1c2b8c49.js → ab60f3bc18b5ea504f70.js} +1 -1
- package/assets/esri/core/workers/chunks/{18b9ec6ba7a6c0fa2ac6.js → b1880d9f5eafd50ce84b.js} +1 -1
- package/assets/esri/core/workers/chunks/{777fc163530448eea13e.js → b4222152efaf73b37b53.js} +1 -1
- package/assets/esri/core/workers/chunks/b6ca73c1384f07b30b74.js +1 -0
- package/assets/esri/core/workers/chunks/bb4cbf6b7c35e8c78cc7.js +1 -0
- package/assets/esri/core/workers/chunks/bb831d23422acfb00ae2.js +1 -0
- package/assets/esri/core/workers/chunks/c0855be20ffcd52c7026.js +1 -0
- package/assets/esri/core/workers/chunks/{a0f742fd947104662d37.js → c6277236ec47586dca00.js} +1 -1
- package/assets/esri/core/workers/chunks/{3be33a129d3ae7dc4f06.js → caf38cf4d8542fb11c46.js} +1 -1
- package/assets/esri/core/workers/chunks/{2728eda8178e02fbca47.js → cd0f5cd0fefe7f49e3d8.js} +1 -1
- package/assets/esri/core/workers/chunks/{48a53bfeef11c32dadcc.js → d25fb32a233d2128afbe.js} +1 -1
- package/assets/esri/core/workers/chunks/d629708bf23da24ee523.js +1 -0
- package/assets/esri/core/workers/chunks/db141122060d8d9b38da.js +1 -0
- package/assets/esri/core/workers/chunks/dc1944a7601b518a9c48.js +1 -0
- package/assets/esri/core/workers/chunks/{573ee2e59d26bc75201e.js → dc8670f32bb0b93c1473.js} +1 -1
- package/assets/esri/core/workers/chunks/e164acd876bbd42ed658.js +1 -0
- package/assets/esri/core/workers/chunks/e1f2b07be33e33117313.js +1 -0
- package/assets/esri/core/workers/chunks/e52f30dfb7c82491a7f2.js +1 -0
- package/assets/esri/core/workers/chunks/e5906b28b981199fd489.js +1 -0
- package/assets/esri/core/workers/chunks/{b3293ee9f221423a6825.js → e611e452f04a9ce64cf8.js} +1 -1
- package/assets/esri/core/workers/chunks/{0f20c458f873564faff2.js → ec4f887153c24ab83f2c.js} +1 -1
- package/assets/esri/core/workers/chunks/{707b4ae689c4329cad3b.js → f40ceb5e03c699605302.js} +1 -1
- package/assets/esri/core/workers/chunks/{547a073c789fdfb78310.js → f42243c62dd0b6993816.js} +1 -1
- package/assets/esri/core/workers/chunks/f91cab9904020cf25d50.js +1 -0
- package/assets/esri/core/workers/chunks/fdf5ceffec9d5185953d.js +1 -0
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.ar.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.bg.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.bs.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.ca.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.cs.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.da.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.de.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.el.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.es.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.et.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.fi.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.fr.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.he.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.hr.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.hu.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.id.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.it.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.ja.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.ko.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.lt.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.lv.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.nl.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.no.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.pl.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.pt-BR.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.ro.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.ru.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.sk.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.sl.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.sr.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.sv.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.th.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.tr.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.uk.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.vi.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.zh-CN.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.zh-HK.json +1 -1
- package/assets/esri/views/3d/analysis/ShadowCast/t9n/messages.zh-TW.json +1 -1
- package/assets/esri/views/3d/analysis/VolumeMeasurement/t9n/messages.ja.json +1 -1
- package/assets/esri/views/3d/environment/resources/milkyway-band.ktx2 +0 -0
- package/assets/esri/widgets/DistanceMeasurement2D/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/DistanceMeasurement2D/t9n/messages.ro.json +1 -1
- package/assets/esri/widgets/Expand/t9n/messages.id.json +1 -1
- package/assets/esri/widgets/Features/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/Features/t9n/messages.uk.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.bs.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.et.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.hr.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.hu.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.id.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.nl.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.th.json +1 -1
- package/assets/esri/widgets/Home/t9n/messages.tr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/Print/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/Print/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/Print/t9n/messages.lt.json +1 -1
- package/assets/esri/widgets/Print/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/widgets/Print/t9n/messages.sl.json +1 -1
- package/assets/esri/widgets/Print/t9n/messages.sr.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.bs.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.et.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.hr.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/Search/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.ar.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.ca.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.cs.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.el.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.lt.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.pl.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.ro.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.ru.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.sl.json +1 -1
- package/assets/esri/widgets/smartMapping/HeatmapSlider/t9n/messages.uk.json +1 -1
- package/assets/esri/widgets/support/GridControls/t9n/messages.pt-BR.json +1 -1
- package/chunks/DeepSky.glsl.js +2 -2
- package/chunks/FocusArea.glsl.js +1 -1
- package/chunks/GaussianSplatDepth.glsl.js +3 -3
- package/chunks/RibbonLine.glsl.js +15 -13
- package/config.js +1 -1
- package/core/Evented.d.ts +1 -1
- package/form/elements/AttachmentElement.d.ts +5 -5
- package/form/elements/inputs/attachments/AttachmentInput.d.ts +1 -1
- package/geometry/Extent.js +1 -1
- package/geometry/operators/affineTransformOperator.d.ts +9 -3
- package/geometry/operators/affineTransformOperator.js +1 -1
- package/geometry/operators/alphaShapeOperator.d.ts +14 -4
- package/geometry/operators/alphaShapeOperator.js +1 -1
- package/geometry/operators/areaOperator.d.ts +11 -3
- package/geometry/operators/areaOperator.js +1 -1
- package/geometry/operators/autoCompleteOperator.d.ts +6 -2
- package/geometry/operators/autoCompleteOperator.js +1 -1
- package/geometry/operators/boundaryOperator.d.ts +9 -3
- package/geometry/operators/boundaryOperator.js +1 -1
- package/geometry/operators/bufferOperator.d.ts +19 -5
- package/geometry/operators/bufferOperator.js +1 -1
- package/geometry/operators/centroidOperator.d.ts +6 -2
- package/geometry/operators/centroidOperator.js +1 -1
- package/geometry/operators/clipOperator.d.ts +9 -3
- package/geometry/operators/clipOperator.js +1 -1
- package/geometry/operators/containsOperator.d.ts +9 -3
- package/geometry/operators/containsOperator.js +1 -1
- package/geometry/operators/convexHullOperator.d.ts +17 -5
- package/geometry/operators/convexHullOperator.js +1 -1
- package/geometry/operators/crossesOperator.d.ts +9 -3
- package/geometry/operators/crossesOperator.js +1 -1
- package/geometry/operators/cutOperator.d.ts +6 -2
- package/geometry/operators/cutOperator.js +1 -1
- package/geometry/operators/densifyOperator.d.ts +14 -4
- package/geometry/operators/densifyOperator.js +1 -1
- package/geometry/operators/differenceOperator.d.ts +9 -3
- package/geometry/operators/differenceOperator.js +1 -1
- package/geometry/operators/disjointOperator.d.ts +9 -3
- package/geometry/operators/disjointOperator.js +1 -1
- package/geometry/operators/distanceOperator.d.ts +11 -3
- package/geometry/operators/distanceOperator.js +1 -1
- package/geometry/operators/equalsOperator.d.ts +9 -3
- package/geometry/operators/equalsOperator.js +1 -1
- package/geometry/operators/extendOperator.d.ts +11 -3
- package/geometry/operators/extendOperator.js +1 -1
- package/geometry/operators/generalizeOperator.d.ts +14 -4
- package/geometry/operators/generalizeOperator.js +1 -1
- package/geometry/operators/geodesicBufferOperator.d.ts +25 -7
- package/geometry/operators/geodesicBufferOperator.js +1 -1
- package/geometry/operators/geodesicProximityOperator.d.ts +28 -8
- package/geometry/operators/geodesicProximityOperator.js +1 -1
- package/geometry/operators/geodeticAreaOperator.d.ts +17 -5
- package/geometry/operators/geodeticAreaOperator.js +1 -1
- package/geometry/operators/geodeticDensifyOperator.d.ts +20 -6
- package/geometry/operators/geodeticDensifyOperator.js +1 -1
- package/geometry/operators/geodeticDistanceOperator.d.ts +17 -5
- package/geometry/operators/geodeticDistanceOperator.js +1 -1
- package/geometry/operators/geodeticLengthOperator.d.ts +17 -5
- package/geometry/operators/geodeticLengthOperator.js +1 -1
- package/geometry/operators/geodeticUtilsOperator.d.ts +17 -5
- package/geometry/operators/geodeticUtilsOperator.js +1 -1
- package/geometry/operators/graphicBufferOperator.d.ts +11 -3
- package/geometry/operators/graphicBufferOperator.js +1 -1
- package/geometry/operators/integrateOperator.d.ts +6 -2
- package/geometry/operators/integrateOperator.js +1 -1
- package/geometry/operators/intersectionOperator.d.ts +12 -4
- package/geometry/operators/intersectionOperator.js +1 -1
- package/geometry/operators/intersectsOperator.d.ts +9 -3
- package/geometry/operators/intersectsOperator.js +1 -1
- package/geometry/operators/isNearOperator.d.ts +11 -3
- package/geometry/operators/isNearOperator.js +1 -1
- package/geometry/operators/json/bufferOperator.js +1 -1
- package/geometry/operators/json/containsOperator.js +1 -1
- package/geometry/operators/json/convexHullOperator.js +1 -1
- package/geometry/operators/json/crossesOperator.js +1 -1
- package/geometry/operators/json/disjointOperator.js +1 -1
- package/geometry/operators/json/generalizeOperator.js +1 -1
- package/geometry/operators/json/geodesicBufferOperator.js +1 -1
- package/geometry/operators/json/graphicBufferOperator.js +1 -1
- package/geometry/operators/json/intersectionOperator.js +1 -1
- package/geometry/operators/json/intersectsOperator.js +1 -1
- package/geometry/operators/json/lengthOperator.js +1 -1
- package/geometry/operators/json/offsetOperator.js +1 -1
- package/geometry/operators/json/overlapsOperator.js +1 -1
- package/geometry/operators/json/projectOperator.js +1 -1
- package/geometry/operators/json/simplifyOperator.js +1 -1
- package/geometry/operators/json/simplifyOperatorOGC.js +1 -1
- package/geometry/operators/json/touchesOperator.js +1 -1
- package/geometry/operators/json/unionOperator.js +1 -1
- package/geometry/operators/json/withinOperator.js +1 -1
- package/geometry/operators/labelPointOperator.d.ts +9 -3
- package/geometry/operators/labelPointOperator.js +1 -1
- package/geometry/operators/lengthOperator.d.ts +11 -3
- package/geometry/operators/lengthOperator.js +1 -1
- package/geometry/operators/linesToPolygonsOperator.d.ts +6 -2
- package/geometry/operators/linesToPolygonsOperator.js +1 -1
- package/geometry/operators/locateBetweenOperator.d.ts +6 -2
- package/geometry/operators/locateBetweenOperator.js +1 -1
- package/geometry/operators/minimumBoundingCircleOperator.d.ts +14 -4
- package/geometry/operators/minimumBoundingCircleOperator.js +1 -1
- package/geometry/operators/multiPartToSinglePartOperator.d.ts +11 -3
- package/geometry/operators/multiPartToSinglePartOperator.js +1 -1
- package/geometry/operators/offsetOperator.d.ts +14 -4
- package/geometry/operators/offsetOperator.js +1 -1
- package/geometry/operators/overlapsOperator.d.ts +9 -3
- package/geometry/operators/overlapsOperator.js +1 -1
- package/geometry/operators/polygonOverlayOperator.d.ts +11 -3
- package/geometry/operators/polygonOverlayOperator.js +1 -1
- package/geometry/operators/polygonSlicerOperator.d.ts +22 -6
- package/geometry/operators/polygonSlicerOperator.js +1 -1
- package/geometry/operators/projectOperator.d.ts +15 -5
- package/geometry/operators/projectOperator.js +1 -1
- package/geometry/operators/proximityOperator.d.ts +22 -6
- package/geometry/operators/proximityOperator.js +1 -1
- package/geometry/operators/relateOperator.d.ts +12 -4
- package/geometry/operators/relateOperator.js +1 -1
- package/geometry/operators/reshapeOperator.d.ts +6 -2
- package/geometry/operators/reshapeOperator.js +1 -1
- package/geometry/operators/shapePreservingProjectOperator.d.ts +20 -6
- package/geometry/operators/shapePreservingProjectOperator.js +1 -1
- package/geometry/operators/simplifyOGCOperator.d.ts +3 -1
- package/geometry/operators/simplifyOGCOperator.js +1 -1
- package/geometry/operators/simplifyOperator.d.ts +12 -4
- package/geometry/operators/simplifyOperator.js +1 -1
- package/geometry/operators/singlePartToMultiPartOperator.js +1 -1
- package/geometry/operators/support/deprecatedOperator.js +2 -0
- package/geometry/operators/symmetricDifferenceOperator.d.ts +9 -3
- package/geometry/operators/symmetricDifferenceOperator.js +1 -1
- package/geometry/operators/touchesOperator.d.ts +9 -3
- package/geometry/operators/touchesOperator.js +1 -1
- package/geometry/operators/unionOperator.d.ts +9 -3
- package/geometry/operators/unionOperator.js +1 -1
- package/geometry/operators/withinOperator.d.ts +9 -3
- package/geometry/operators/withinOperator.js +1 -1
- package/geometry/support/intersectsBase.js +1 -1
- package/geometry/support/normalizeUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/FeatureLayer.d.ts +2 -2
- package/layers/IntegratedMesh3DTilesLayer.js +1 -1
- package/layers/IntegratedMeshLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
- package/layers/list/BasemapItemCollection.d.ts +40 -14
- package/layers/list/BasemapItemCollection.js +1 -1
- package/layers/list/CatalogItemCollection.d.ts +29 -11
- package/layers/list/CatalogItemCollection.js +1 -1
- package/layers/list/Item.d.ts +66 -122
- package/layers/list/Item.js +1 -1
- package/layers/list/ItemPanel.d.ts +23 -34
- package/layers/list/LayerItemCollection.d.ts +33 -43
- package/layers/list/LayerItemCollection.js +1 -1
- package/layers/list/TableItem.d.ts +42 -53
- package/layers/list/TableItem.js +1 -1
- package/layers/list/TableItemCollection.d.ts +25 -55
- package/layers/list/TableItemCollection.js +1 -1
- package/layers/list/TableItemPanel.d.ts +25 -23
- package/layers/list/support/layerListUtils.js +1 -1
- package/layers/list/types.d.ts +158 -37
- package/layers/support/ElevationQuery.js +1 -1
- package/layers/support/FeatureFilter.d.ts +2 -1
- package/layers/support/FeatureFilter.js +1 -1
- package/layers/support/FeatureReductionBinning.d.ts +2 -2
- package/layers/support/FeatureReductionCluster.d.ts +2 -2
- package/layers/support/SubtypeSublayer.d.ts +1 -1
- package/package.json +3 -3
- package/popup/FeatureContent.d.ts +7 -7
- package/portal/schemas/definitions.js +1 -1
- package/portal/types.d.ts +1 -1
- package/renderers/DotDensityRenderer.d.ts +2 -2
- package/rest/knowledgeGraph/GraphDeleteNamedTypeResult.d.ts +0 -1
- package/rest/knowledgeGraph/ReplicaDefinition.d.ts +1 -1
- package/rest/knowledgeGraphService.d.ts +2 -2
- package/rest/support/Query.d.ts +1 -3
- package/rest/support/RelationshipQuery.d.ts +1 -1
- package/support/revision.js +1 -1
- package/symbols/LineSymbol3D.js +1 -1
- package/symbols/LineSymbol3DLayer.d.ts +9 -3
- package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/symbols/cim/OverrideHelper.js +1 -1
- package/symbols/cim/Rasterizer.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/symbols/cim/dashUtils.js +2 -0
- package/symbols/cim/effects/EffectDashes.js +1 -1
- package/symbols/cim/fromCIMFontStyle.js +2 -0
- package/symbols/cim/richTextUtils.js +1 -1
- package/symbols/cim/types.d.ts +32 -0
- package/symbols/cim/utils.js +1 -1
- package/symbols/patterns/LinePattern3D.d.ts +10 -4
- package/symbols/patterns/LinePattern3D.js +1 -1
- package/symbols/patterns/LineTemplatePattern3D.d.ts +48 -0
- package/symbols/patterns/LineTemplatePattern3D.js +2 -0
- package/symbols/patterns/utils.js +1 -1
- package/symbols/support/Symbol3DOutline.js +1 -1
- package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
- package/views/2d/engine/webgl/FeatureDisplayList.js +1 -1
- package/views/2d/engine/webgl/GlyphMosaic.js +1 -1
- package/views/2d/engine/webgl/GlyphWorker.js +1 -1
- package/views/2d/engine/webgl/TextureManager.js +1 -1
- package/views/2d/engine/webgl/decorGlyphRect.js +2 -0
- package/views/2d/engine/webgl/definitions.js +1 -1
- package/views/2d/engine/webgl/effects/highlight/HighlightGradient.js +1 -1
- package/views/2d/engine/webgl/effects/highlight/MultiHighlightGradient.js +1 -1
- package/views/2d/engine/webgl/hashMosaic.js +2 -0
- package/views/2d/engine/webgl/shaderGraph/techniques/featureTechniqueUtils.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ShaderHighlight.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/utils.js +1 -1
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/GraphicsLayerView2D.js +1 -1
- package/views/2d/layers/ImageryLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/MapImageLayerView2D.js +1 -1
- package/views/2d/layers/MapNotesLayerView2D.js +1 -1
- package/views/2d/layers/RouteLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/layers/features/FeatureContainer.js +1 -1
- package/views/2d/layers/features/FeaturePipelineWorker.js +1 -1
- package/views/2d/layers/features/Processor.js +1 -1
- package/views/2d/layers/features/processor/AProcessorStrategy.js +1 -1
- package/views/2d/layers/features/processor/AggregateStrategy.js +1 -1
- package/views/2d/layers/features/processor/FeatureUpdateStrategy.js +1 -1
- package/views/2d/layers/features/processor/bins/BinLevelState.js +1 -1
- package/views/2d/layers/features/processor/clusters/ClusterLevelState.js +1 -1
- package/views/2d/layers/features/processor/tracks/TrackLevelState.js +1 -1
- package/views/2d/layers/features/schema/processor/SimpleProcessorSchema.js +1 -1
- package/views/2d/layers/features/sources/FeatureSource.js +1 -1
- package/views/2d/layers/features/support/AttributeStore.js +1 -1
- package/views/2d/layers/graphics/AGraphicContainer.js +1 -1
- package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
- package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
- package/views/2d/layers/support/FeatureCommandQueue.js +1 -1
- package/views/2d/layers/support/FilterSchema.js +2 -0
- package/views/2d/layers/support/HighlightRegistry.js +2 -0
- package/views/2d/layers/support/annodime/dimensionUtils.js +1 -1
- package/views/2d/layers/support/util.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
- package/views/3d/analysis/ShadowCastAnalysisView3D.d.ts +1 -1
- package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
- package/views/3d/analysis/Viewshed/placementUtils.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/ground/GroundNavigation.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DFeatureStore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/support/Tiles3DMeshIntersectionHandler.js +1 -1
- package/views/3d/navigation/Navigation3D.d.ts +16 -0
- package/views/3d/navigation/Navigation3D.js +2 -0
- package/views/3d/navigation/modes/DefaultNavigationMode3D.d.ts +4 -0
- package/views/3d/navigation/modes/DefaultNavigationMode3D.js +2 -0
- package/views/3d/navigation/modes/GroundNavigationMode3D.d.ts +4 -0
- package/views/3d/navigation/modes/GroundNavigationMode3D.js +2 -0
- package/views/3d/navigation/modes/NavigationMode3D.d.ts +4 -0
- package/views/3d/navigation/modes/NavigationMode3D.js +2 -0
- package/views/3d/navigation/modes/NavigationMode3DUnion.d.ts +5 -0
- package/views/3d/state/ConstraintsManager.js +1 -1
- package/views/3d/support/QualityProfile.js +1 -1
- package/views/3d/support/hitTest.js +1 -1
- package/views/3d/terrain/ExtentHelper.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/effects/AmbientIllumination.js +2 -0
- package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/glow/BlurEmission.js +1 -1
- package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
- package/views/3d/webgl-engine/effects/stars/Stars.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/EmissionComposite.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
- package/views/3d/webgl-engine/materials/lineStippleUtils.js +1 -1
- package/views/3d/webgl-engine/parts/RenderView.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +12 -8
- package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
- package/views/BreakpointsOwner.d.ts +2 -2
- package/views/PopupView.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/SelectionManager.d.ts +24 -24
- package/views/View.js +1 -1
- package/views/View2D.js +1 -1
- package/views/interactive/support/types.d.ts +0 -1
- package/views/layers/FeatureLikeLayerView.js +1 -1
- package/views/support/DefaultsFromMap.js +1 -1
- package/widgets/Attachments/support/attachmentUtils.d.ts +8 -0
- package/widgets/BasemapLayerList/BasemapLayerListViewModel.d.ts +1 -0
- package/widgets/BasemapLayerList/BasemapLayerListViewModel.js +1 -1
- package/widgets/BasemapLayerList/BasemapLayerListVisibleElements.d.ts +5 -1
- package/widgets/BasemapLayerList/types.d.ts +15 -2
- package/widgets/BasemapLayerList.d.ts +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
- package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.d.ts +14 -0
- package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.js +1 -1
- package/widgets/BatchAttributeForm/inputs/BatchFormInputs.js +1 -1
- package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +29 -2
- package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
- package/widgets/BatchAttributeForm/inputs/support/MultipleChoiceController.d.ts +1 -5
- package/widgets/BatchAttributeForm/inputs/support/inputUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/types.d.ts +8 -1
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/EditorViewModel.d.ts +2 -2
- package/widgets/Editor.d.ts +2 -2
- package/widgets/FeatureTable/FeatureTableViewModel.d.ts +6 -6
- package/widgets/FeatureTable/support/FeatureStore.d.ts +2 -2
- package/widgets/FeatureTable.d.ts +5 -5
- package/widgets/LayerList/LayerListViewModel.d.ts +1 -0
- package/widgets/LayerList/LayerListViewModel.js +1 -1
- package/widgets/LayerList/LayerListVisibleElements.d.ts +4 -1
- package/widgets/LayerList/ListItem.d.ts +4 -0
- package/widgets/LayerList/ListItemPanel.d.ts +3 -0
- package/widgets/OrientedImageryViewer/types.d.ts +2 -2
- package/widgets/OrientedImageryViewer.d.ts +20 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/support/SelectionList/SelectionListViewModel.d.ts +1 -1
- package/widgets/support/iconUtils.js +1 -1
- package/assets/esri/core/workers/chunks/03601be8b0763f82e88f.js +0 -1
- package/assets/esri/core/workers/chunks/0bff8d589312be6588fe.js +0 -1
- package/assets/esri/core/workers/chunks/0de90b1ad8118457fd5a.js +0 -1
- package/assets/esri/core/workers/chunks/0e1a067ab243900d0371.js +0 -1
- package/assets/esri/core/workers/chunks/0ee6109e6578395a7900.js +0 -1
- package/assets/esri/core/workers/chunks/0ee7376c29e0fd8f676c.js +0 -1
- package/assets/esri/core/workers/chunks/13551987fbeaae154df8.js +0 -1
- package/assets/esri/core/workers/chunks/186350d720352bd5ff33.js +0 -1
- package/assets/esri/core/workers/chunks/25ecf94d776c3b6db0f3.js +0 -1
- package/assets/esri/core/workers/chunks/262052dfaec3af8a58b9.js +0 -1
- package/assets/esri/core/workers/chunks/2c01477b69c38f691e19.js +0 -1
- package/assets/esri/core/workers/chunks/307297e025eed110095f.js +0 -1
- package/assets/esri/core/workers/chunks/33422dca6f4bcaa0ea74.js +0 -1
- package/assets/esri/core/workers/chunks/33e583166ab3943ecf0e.js +0 -1
- package/assets/esri/core/workers/chunks/37ae52c71bf9c70fbb92.js +0 -1
- package/assets/esri/core/workers/chunks/3daddcb106a7009c5a70.js +0 -1
- package/assets/esri/core/workers/chunks/3de6e54b6ed0feae1940.js +0 -1
- package/assets/esri/core/workers/chunks/448f068a14f24f2f8a43.js +0 -1
- package/assets/esri/core/workers/chunks/4c088c26d5d546c95c90.js +0 -1
- package/assets/esri/core/workers/chunks/5134241be1f1bf25231a.js +0 -1
- package/assets/esri/core/workers/chunks/56163189fbe63aa11e94.js +0 -1
- package/assets/esri/core/workers/chunks/571cf99c3eab8e517542.js +0 -1
- package/assets/esri/core/workers/chunks/5762746cfb02a4119d82.js +0 -1
- package/assets/esri/core/workers/chunks/5830deda121e4c95d199.js +0 -1
- package/assets/esri/core/workers/chunks/58e4aecabca047f1d229.js +0 -1
- package/assets/esri/core/workers/chunks/5c8f423812a23c02c1fd.js +0 -1
- package/assets/esri/core/workers/chunks/5eb726317b6602f1e206.js +0 -1
- package/assets/esri/core/workers/chunks/6e2075bd4832ff0db68c.js +0 -1
- package/assets/esri/core/workers/chunks/7608de0d942b4c16b2f6.js +0 -1
- package/assets/esri/core/workers/chunks/7610dd0b46948b7bd840.js +0 -1
- package/assets/esri/core/workers/chunks/7737ab739eba6d81282d.js +0 -1
- package/assets/esri/core/workers/chunks/7be56ac60e580c806a5d.js +0 -1
- package/assets/esri/core/workers/chunks/7d9468e38f3bf006f86e.js +0 -1
- package/assets/esri/core/workers/chunks/7efc51324cfc8e08c756.js +0 -1
- package/assets/esri/core/workers/chunks/84dc2afd89263a311b81.js +0 -1
- package/assets/esri/core/workers/chunks/852649460d664b0a1a1d.js +0 -1
- package/assets/esri/core/workers/chunks/ab332bd411d6c7d4190c.js +0 -1
- package/assets/esri/core/workers/chunks/bc9b96a539f28afcb8cb.js +0 -1
- package/assets/esri/core/workers/chunks/be69e2dda75b079362b2.js +0 -1
- package/assets/esri/core/workers/chunks/bf9eba555aebca2c132b.js +0 -1
- package/assets/esri/core/workers/chunks/c18de0f6cbeecee4ce34.js +0 -1
- package/assets/esri/core/workers/chunks/c9df18e9ff7367a004b6.js +0 -1
- package/assets/esri/core/workers/chunks/d33d08cb6856cd2eb35e.js +0 -1
- package/assets/esri/core/workers/chunks/e688e6e816824b53a25e.js +0 -1
- package/assets/esri/core/workers/chunks/ea068c797e3e462f4518.js +0 -1
- package/assets/esri/core/workers/chunks/eaf1d38f09744b7e84f5.js +0 -1
- package/assets/esri/core/workers/chunks/eff99e45d818e58fd443.js +0 -1
- package/assets/esri/core/workers/chunks/f219ba010c480bb75684.js +0 -1
- package/assets/esri/core/workers/chunks/f60d5ce49c173d5381ec.js +0 -1
- package/assets/esri/core/workers/chunks/f72f4413fc7461e11a2a.js +0 -1
- package/assets/esri/core/workers/chunks/f834aa732c3f06525089.js +0 -1
- package/assets/esri/core/workers/chunks/fae14e30fa7d81bf706e.js +0 -1
- package/assets/esri/core/workers/chunks/fb6f1b562ee0983c8c6e.js +0 -1
- package/assets/esri/core/workers/chunks/fc1658eae7b312502fab.js +0 -1
- package/graphic/graphicOrigins.js +0 -2
- package/views/2d/engine/webgl/Utils.js +0 -2
- package/views/2d/layers/support/HighlightCounter.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import{pt2px as o,px2pt as a}from"../../core/screenUtils.js";import{numericHash as s}from"../../core/string.js";import{checkForAnimations as l,globalRotation as n,getAnimationParams as m,handleAbsoluteAnchor as p,handleMarker as c,handleRelativeAnchor as f,getFrameTranslation as y,translate as d,getStaticParam as h,shouldUseAnimatedPath as u}from"./animationUtils.js";import{CIMSymbolInflatedSizeHelper as v,CIMSymbolHelper as O,forEachSymbolLayer as g}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as S}from"./constants.js";import{defaultCIMValues as _}from"./defaultCIMValues.js";import{fitVectorMarker as M}from"./fitVectorMarker.js";import{OverrideHelper as C}from"./OverrideHelper.js";import{hasRichTextFormattingTags as k}from"./richTextUtils.js";import{getSDFInfo as b,getExtent as x,getSDFMetrics as P,getSDFDimensions as z}from"./SDFHelper.js";import{CIMSymbolUnits as I}from"./types.js";import{colorToArray as E,normalizeAlpha as L,getSize as V,isCIMMarkerStrokePlacement as N,hasStrokeLayer as R,getNumericValue as w,getMaxStrokeWidth as T,getTintColor as G,normalizePrimitiveOverrideProps as A,getDefaultCIMValue as F,getEnum as X,getFillColor as Y,getStrokeColor as j,fromCIMFontDecoration as W,fromCIMFontStyle as D,getStrokeWidth as H,fromCIMVerticalAlignment as U,fromCIMHorizontalAlignment as J,getTextCasing as B,isValidCIMValue as q,uncapitalize as K}from"./utils.js";import{EffectHelper as Q}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as Z,randomInsidePolygonTextureSize as $}from"../../views/2d/engine/webgl/definitions.js";const ee=()=>i.getLogger("esri.symbols.cim.cimAnalyzer");function te(e){const t=e.markerPlacement;return t&&t.angleToLine?1:0}class re{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,r,i){if(this._cimLayers=i??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(const t of this._primitiveOverrides){const r=t.valueExpressionInfo;if(r)this._setPoMap(t.primitiveName,t.propertyName,r);else if(null!=t.value){let r=t.value;t.propertyName.includes("Color")&&(e(r)&&(r=E(r)),r=L(r)),this._setPoMap(t.primitiveName,t.propertyName,r)}}}return this._analyzeSymbol(t.symbol,r),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){const r=e?.symbolLayers;if(!r)return;for(let l=0;l<r.length;l++){const e=r[l];"CIMVectorMarker"===e.type&&(r[l]=M(e))}const i=e.effects;let o=0;const a=V(e)??0;"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(o=1);const s=l(e);let p={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:s,hasShiftAnimation:!1,hasMotionAnimations:!1};p=n(p),p=m(this._poMap,e,p);const c="CIMPolygonSymbol"===e.type;if("CIMPointSymbol"===e.type&&this._analyzePointSymbolHalo(e,o,a,i,s),ye(r,i))return this._analyzeCompositeOutlineFill(r,i,a);let f=r.length;for(;f--;){const s=r[f];if(!s||!1===s.enable)continue;let l;i?.length&&(l=[...i]);const n=s.effects;n?.length&&(i?l.push(...n):l=[...n]);let m=null;if(l){m=[];for(const e of l){const t=C.findEffectOverrides(e,this._primitiveOverrides);t&&m.push(t)}}const y=[];C.findApplicableOverrides(s,this._primitiveOverrides,y);const d=this._cimLayers.length;switch(s.type){case"CIMSolidFill":this._analyzeSolidFill(s,m,p,R(r));break;case"CIMPictureFill":this._analyzePictureFill(s,m,p);break;case"CIMHatchFill":this._analyzeHatchFill(s,m,p);break;case"CIMGradientFill":this._analyzeGradientFill(s,m);break;case"CIMSolidStroke":this._analyzeSolidStroke(s,m,c,a,p);break;case"CIMPictureStroke":this._analyzePictureStroke(s,m,c,a,p);break;case"CIMGradientStroke":this._analyzeGradientStroke(s,m,c,a);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"!==e.type&&"CIMPolygonSymbol"!==e.type||(o=te(s));const r=[],i=s.primitiveName;i&&r.push(i);const l=c&&N(s.markerPlacement);this._analyzeMarker(s,m,null,r,o,a,t,[],p,!1,l);break}default:ee().error("Cannot analyze CIM layer",s.type)}if(m?.some(({effect:e})=>me(e)))for(let e=d;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzePointSymbolHalo(e,t,i,o,s){const{haloSymbol:l}=e,n=w(e.haloSize,0);if(n<=0||!l?.symbolLayers)return;const m=l.symbolLayers.filter(e=>!1!==e.enable),p=m[0];if(!p)return;const c=1===m.length&&"CIMSolidFill"===p.type;if(s)return void ee().warnOnce("CIM point symbol halos are not supported with symbol animations");const f=o?.map(e=>C.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e);if(f?.some(({effect:e})=>me(e))){if(!c)return void ee().warnOnce("Complex CIM point symbol halos are not supported with geometry-changing effects");const t=e.symbolLayers?.filter(e=>!1!==e.enable)??[];if(!ce(t,f))return void ee().warnOnce("CIM point symbol halos with geometry-changing effects currently require polygon-producing effects and solid fill or stroke layers");const r=T(t),o=this._getValueOrOverrideExpression(p.type,p.primitiveName,"Color",L(p.color));return void this._cimLayers.push({type:"outlineFill",name:p.name,colorLocked:!0,color:o,effects:f,effectsChangeGeometryType:!0,outlineColorLocked:!0,outlineColor:o,outlineWidth:2*n+r,cap:"Round",join:"Round",referenceWidth:i,pixelBufferSize:2*n+r,outlineEffects:f})}const y=e.symbolLayers?.filter(e=>!1!==e.enable)??[],d=1===y.length&&"CIMVectorMarker"===y[0].type?y[0]:null,h=new Set(d?this._primitiveOverrides.filter(e=>e.primitiveName===d.primitiveName&&["Rotation","OffsetX","OffsetY"].includes(e.propertyName)).map(e=>e.propertyName):[]),u=h.size>0?d:null,g=r(e);if(g.effects=void 0,g.angle=0,g.scaleX=1,u){const e=g.symbolLayers?.find(e=>"CIMVectorMarker"===e.type&&!1!==e.enable);e&&(h.has("Rotation")&&(e.rotation=0),h.has("OffsetX")&&(e.offsetX=0),h.has("OffsetY")&&(e.offsetY=0))}const S={...g,haloSize:0,haloSymbol:void 0},_=v.getPointSymbolHaloPadding(e,this._resourceManager),[M,k,x]=O.getTextureAnchor(S,this._resourceManager,Z,_),P=a(x),z=[];C.findApplicableOverrides(g,this._primitiveOverrides,z);const I=u?z.filter(e=>e.primitiveName!==u.primitiveName||!["Rotation","OffsetX","OffsetY"].includes(e.propertyName)):z,E=u?[{offsetX:this._getValueOrOverrideExpression(u.type,u.primitiveName,"OffsetX",h.has("OffsetX")?w(u.offsetX):0),offsetY:this._getValueOrOverrideExpression(u.type,u.primitiveName,"OffsetY",h.has("OffsetY")?w(u.offsetY):0),rotation:this._getValueOrOverrideExpression(u.type,u.primitiveName,"Rotation",h.has("Rotation")?w(u.rotation):0),size:P,frameHeight:P,rotateClockWise:!!u.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:!1}]:[];this._cimLayers.push({type:"marker",spriteRasterizationParam:{type:"sprite-rasterization-param",resource:{type:"cim-point-symbol-halo",symbol:g,sdf:c&&null!=b(S)},overrides:I},colorLocked:!0,color:c?this._getValueOrOverrideExpression(p.type,p.primitiveName,"Color",L(p.color)):[255,255,255,1],effects:f??null,effectsChangeGeometryType:f?.some(({effect:e})=>me(e)),scaleSymbolsProportionally:!1,alignment:t,anchorPoint:{x:M,y:k},isAbsoluteAnchorPoint:!1,size:P,scaleX:w(e.scaleX,1),rotation:w(e.angle,0),offsetX:0,offsetY:0,outlineColor:[0,0,0,0],outlineWidth:0,transform:{type:"cim-marker-transform-param",params:E},frameHeight:P,widthRatio:1,rotateClockwise:!0,referenceSize:i||P,sizeRatio:1,markerPlacement:null,isOutline:!1})}_analyzeSolidFill(e,t,r,i){const{primitiveName:o,type:a}=e,s=L(e.color),l=m(this._poMap,e,r);if(!i&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.effect.type)){const r=this._getValueOrOverrideExpression(a,o,"Color",s);return void this._cimLayers.push({type:"outlineFill",name:e.name,colorLocked:!!e.colorLocked,color:r,effects:t,outlineColor:r,outlineColorLocked:!!e.colorLocked,...S,outlineEffects:t})}this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,o,"Color",s),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:he(l)})}_analyzePictureFill(e,t,r){const{primitiveName:i,type:o}=e,a=G(e),s=w(e.height,_.CIMPictureFill.height);let l=w(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height),l/=r*(s/t)}const n={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(i,o)},p=m(this._poMap,e,r);this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,i,"TintColor",a),height:this._getValueOrOverrideExpression(o,i,"Height",s),scaleX:this._getValueOrOverrideExpression(o,i,"ScaleX",l),angle:this._getValueOrOverrideExpression(o,i,"Rotation",w(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",w(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",w(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:he(p)})}_analyzeHatchFill(e,t,r){const{primitiveName:i,type:o}=e,a=m(this._poMap,e,r),s=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]),l=A(s);let n=[255,255,255,1],p=!1;if(e.lineSymbol?.symbolLayers)for(const m of e.lineSymbol.symbolLayers){if("CIMSolidStroke"!==m.type)continue;const e=m.primitiveName??i;p||!e||m.colorLocked||null==this._poMap[e]?.Color&&null==this._poMap[e]?.StrokeColor||(n=L(m.color),n=this._maybeGetValueOrOverrideExpression(e,"StrokeColor")??this._getValueOrOverrideExpression(o,e,"Color",n),p=!0);const t=this._maybeGetValueOrOverrideExpression(e,"StrokeWidth");if(t){let r=null,i=null;"number"==typeof t?r=t:i=t.valueExpressionInfo;let a=l.find(e=>"strokeWidth"===e.propertyName);a?a.propertyName="width":(a={type:"CIMPrimitiveOverride",primitiveName:e,propertyName:"width",valueExpressionInfo:i,value:r,defaultValue:F(o,"width")},l.push(a))}}const c={type:"sprite-rasterization-param",resource:e,overrides:l};this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:n,height:this._getValueOrOverrideExpression(o,i,"Separation",w(e.separation,_.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(o,i,"Rotation",w(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",w(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",w(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!p,animationParams:he(a)})}_analyzeGradientFill(e,t){const{angle:r,gradientMethod:i,gradientSize:o,gradientSizeUnits:a,gradientType:s,interval:l,primitiveName:n,type:m}=e,p=_.CIMGradientFill,c=e.colorRamp;this._cimLayers.push({type:"gradientFill",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(n,m)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(m,n,"GradientMethod",i??"Linear"),angle:this._getValueOrOverrideExpression(m,n,"Angle",w(r,p.angle)),gradientType:this._getValueOrOverrideExpression(m,n,"GradientType",s??p.gradientType),interval:this._getValueOrOverrideExpression(m,n,"Interval",w(l,"CIMFixedColorRamp"===c.type?c.colors.length:p.interval)),gradientSize:this._getValueOrOverrideExpression(m,n,"GradientSize",w(o,p.gradientSize)),gradientSizeUnits:"Absolute"===a?I.Absolute:"Relative"===a?I.Relative:p.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,r){const i=e.find(e=>"CIMSolidFill"===e.type),o=e.find(e=>"CIMSolidStroke"===e.type);if(null==i||null==o)return;const a=[...t??[],...i.effects??[]].map(e=>C.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),s=[...t??[],...o.effects??[]].map(e=>C.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),l=w(o.width,_.CIMSolidStroke.width),n=X(o.capStyle,_.CIMSolidStroke.capstyle),m=X(o.joinStyle,_.CIMSolidStroke.joinstyle),p=o.miterLimit;this._cimLayers.push({type:"outlineFill",name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,"Color",L(i.color)),effects:a,effectsChangeGeometryType:a.some(({effect:e})=>me(e))||s.some(({effect:e})=>me(e)),outlineColorLocked:!!o.colorLocked,outlineColor:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Color",L(o.color)),outlineWidth:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Width",l),cap:this._getValueOrOverrideExpression(o.type,o.primitiveName,"CapStyle",n),join:this._getValueOrOverrideExpression(o.type,o.primitiveName,"JoinStyle",m),miterLimit:p&&this._getValueOrOverrideExpression(o.type,o.primitiveName,"MiterLimit",p),referenceWidth:r,outlineEffects:s})}_analyzeSolidStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=L(e.color),n=w(e.width,_.CIMSolidStroke.width),p=X(e.capStyle,_.CIMSolidStroke.capstyle),c=X(e.joinStyle,_.CIMSolidStroke.joinstyle),f=e.miterLimit;let y,d,h,u,v=[];if(this._analyzePrimitiveOverrides(a,t,null,null)&&(v=this._getPrimitiveMaterialOverrides(a,s)),t&&Array.isArray(t)&&t.length>0){const e=t[t.length-1].effect;e&&"CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&(y=e.dashTemplate,d=e.scaleDash,h=e.offsetAlongLine,u=e.primitiveName,(t=[...t]).pop())}null!=u&&v.push(...this._getPrimitiveMaterialOverrides(u,s).filter(e=>"dashTemplate"===e.propertyName));const O=void 0!==y?{type:"sprite-rasterization-param",resource:{type:"dash",dashTemplate:y,primitiveName:u},overrides:v}:null,g=m(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:O,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"Color",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",p),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:oe(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(u,"DashTemplate")??y,offsetAlongLine:this._getValueOrOverrideExpression(s,u,"OffsetAlongLine",h??0),scaleDash:d,sampleAlphaOnly:!0,animationParams:he(g)})}_analyzePictureStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=G(e),n=w(e.width,_.CIMPictureStroke.width),p=X(e.capStyle,_.CIMPictureStroke.capstyle),c=X(e.joinStyle,_.CIMPictureStroke.joinstyle),f=e.miterLimit,y={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(a,s)},d=m(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:y,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"TintColor",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",p),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:oe(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:he(d)})}_analyzeGradientStroke(e,t,r,i){const{gradientMethod:o,gradientSize:a,gradientSizeUnits:s,gradientType:l,interval:n,primitiveName:m,type:p}=e,c=_.CIMGradientStroke,f=w(e.width,c.width),y=X(e.capStyle,c.capstyle),d=X(e.joinStyle,c.joinstyle),h=e.miterLimit,u=e.colorRamp;this._cimLayers.push({type:"gradientStroke",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(m,p)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(p,m,"Width",f),cap:this._getValueOrOverrideExpression(p,m,"CapStyle",y),join:this._getValueOrOverrideExpression(p,m,"JoinStyle",d),miterLimit:h&&this._getValueOrOverrideExpression(p,m,"MiterLimit",h),referenceWidth:i,isOutline:r,gradientMethod:this._getValueOrOverrideExpression(p,m,"GradientMethod",o??c.gradientMethod),gradientType:this._getValueOrOverrideExpression(p,m,"GradientType",l??c.gradientType),interval:this._getValueOrOverrideExpression(p,m,"Interval",w(n,"CIMFixedColorRamp"===u.type?u.colors.length:c.interval)),gradientSize:this._getValueOrOverrideExpression(p,m,"GradientSize",w(a,c.gradientSize)),gradientSizeUnits:"Absolute"===s?I.Absolute:"Relative"===s?I.Relative:c.gradientSizeUnits})}_analyzeMarker(e,t,r,i,o,a,s,l,n,y=!1,d=!1){y||=!!e.colorLocked;let h=n;if(h=p(e,h),h=c(this._poMap,e,h),h=f(e,h),h=m(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,y,h))return;const u=w(e.size,_.CIMVectorMarker.size),v=w(e.rotation),O=w(e.offsetX),g=w(e.offsetY),{primitiveName:S,type:M}=e,C=this._getValueOrOverrideExpression(M,S,"Size",u),k=this._getValueOrOverrideExpression(M,S,"Rotation",v),b=this._getValueOrOverrideExpression(M,S,"OffsetX",O),x=this._getValueOrOverrideExpression(M,S,"OffsetY",g);switch(e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,r,i,o,a,C,k,b,x,l,h,y,d);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,r,i,o,a,C,k,b,x,l,h,s,y,d)}}_analyzeMarkerInsidePolygon(e,t,r,i){const{markerPlacement:o,type:s}=e;if(!o||"CIMMarkerPlacementInsidePolygon"!==o.type||i.hasMotionAnimations)return!1;if("CIMVectorMarker"===s||"CIMPictureMarker"===s){const r=e.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;const i=o.primitiveName;if(i&&this._analyzePrimitiveOverrides([i],t,null,null))return!1;if("CIMVectorMarker"===s){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const l=Math.abs(o.stepX),n=Math.abs(o.stepY);if(0===l||0===n)return!0;let m,p;if("Random"===o.gridType){const e=a($),t=Math.max(Math.floor(e/l),1);m=n*Math.max(Math.floor(e/n),1);p=t*l/m}else o.shiftOddRows?(m=2*n,p=l/n*.5):(m=n,p=l/n);const c=G(e),f="CIMCharacterMarker"===e.type?null:{type:"sprite-rasterization-param",resource:{...e,effects:e.effects?.filter(e=>!ne(e))},overrides:[]};return this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:f,colorLocked:r,effects:t,color:c,height:m,scaleX:p,angle:o.gridAngle??0,offsetX:w(o.offsetX),offsetY:w(o.offsetY),applyRandomOffset:"Random"===o.gridType,sampleAlphaOnly:"CIMPictureMarker"!==e.type,hasUnresolvedReplacementColor:!0,animationParams:he(i)}),!0}_analyzePictureMarker(e,t,i,o,a,l,n,m,p,c,f,y,d,h){const{animatedSymbolProperties:u,primitiveName:v,type:O}=e;let g=w(e.scaleX,1);const S=G(e);i||(i=this._createMarkerPlacementOverrideExpression(e.markerPlacement));const _=this._createGIFAnimatedSymbolPropertiesOverrideExpression(u),M=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height);g/=r*(w(e.size)/t)}const C=[...o];let k;e.primitiveName&&C.push(e.primitiveName),u||_?k={type:"animated",url:e.url,urlHash:"H"+s(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(k=r(e),k.markerPlacement=null);const b={type:"sprite-rasterization-param",resource:k,overrides:this._getMaterialOverrides(C,O)};_&&b.overrides.push(..._.overrides);const x=n;this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:b,colorLocked:d,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:n,scaleX:this._getValueOrOverrideExpression(O,v,"ScaleX",g),rotation:m,offsetX:p,offsetY:c,transform:{type:"cim-marker-transform-param",params:f},color:this._getValueOrOverrideExpression(O,v,"TintColor",S),anchorPoint:{x:M.x,y:M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:1,isOutline:h,markerPlacement:i,animationParams:he(y),baseSize:x})}_analyzeVectorMarker(e,t,r,i,o,a,s,l,n,m,p,c,f,u,v){const O=e.markerGraphics;if(!O)return;const g=e.frame;let S=0;S=g?g.ymax-g.ymin:a;const _=!!e.scaleSymbolsProportionally;if(S){const t={offsetX:n,offsetY:m,rotation:l,size:s,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:_};p=[...p,t]}r||(r=this._createMarkerPlacementOverrideExpression(e.markerPlacement));for(const M of O)if(M){const s=M.symbol;if(!s)continue;const l=M.primitiveName;l&&i.push(l);let n,m=c;if(("CIMPointSymbol"===s.type||"CIMTextSymbol"===s.type)&&g){let t=0,r=0;const i=M.geometry;"x"in i&&"y"in i&&(t+=i.x-.5*(g.xmin+g.xmax),r+=i.y-.5*(g.ymin+g.ymax));const o=e.anchorPoint;let a=!1;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,r-=o.y,a=!0):g&&(t-=(g.xmax-g.xmin)*o.x,r-=(g.ymax-g.ymin)*o.y));const s={offsetX:t,offsetY:r,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:_};n=[...p,s]}const O=M.geometry,[C,k]=y(O,g);switch(0===C&&0===k||(m=d(m,C,k)),s.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":f||le(s)?(m={...m,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:h([0,0]),rotation:h(0),scale:h(S),parent:c.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,r,M,i,o,a,n??p,m,S,u,v)):this._analyzeMultiLayerGraphic(e,t,r,M,i,o,a,n??p,m,S,u,v);break;case"CIMTextSymbol":this._analyzeTextGraphic(t,r,M,i,o,a,n??p,u)}l&&i.pop()}}_analyzeMultiLayerGraphic(e,t,r,i,o,a,s,l,n,m,p,c){const f=i.symbol,y=f.symbolLayers;if(y){if(!se(y)||u(n))return fe(y)?(g(f,e=>{e.colorLocked&&(p=!0)}),void this._analyzeMultiLayerGraphicNonSDF(e,t,r,i,o,a,s,l,n,m,p,c)):void this._analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,m,p,c);this._analyzeCompositeMarkerGraphic(e,t,r,i,y,a,s,l,m,p,c)}}_analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,p,c,f){const y=i.symbol,d=y.symbolLayers;if(!d)return;const h=Q.applyEffects(y.effects,i.geometry);if(!h)return;let u=d.length;for(;u--;){const y=d[u];if(!y||!1===y.enable)continue;const v=y.primitiveName;switch(v&&o.push(v),y.type){case"CIMSolidFill":case"CIMSolidStroke":{const o=Q.applyEffects(y.effects,h),d=x(o);if(!d)continue;const u="Relative"!==e.anchorPointUnits,O="CIMSolidStroke"===y.type?y.width:0,{frameSizeRatio:g,anchorX:S,anchorY:M,widthRatio:C,sdfPaddingRatio:k,sdfTextureSize:b}=P(d,e.frame,e.size,e.anchorPoint,u,O,e.scaleSymbolsProportionally),I="CIMSolidFill"===y.type,E={type:"sdf",geometry:o,sdfPaddingRatio:k,asFill:I,sdfTextureSize:b},{path:V}=y,N=I?L(Y(y)):null==V?L(j(y)):[0,0,0,0],R=I?[0,0,0,0]:L(j(y));if(!I&&!O)break;const T=i.primitiveName;let G=null;I&&!y.colorLocked&&(G=this._maybeGetValueOrOverrideExpression(T,"FillColor"));let A=null;I||y.colorLocked||(A=this._maybeGetValueOrOverrideExpression(T,"StrokeColor"));const F=G??this._getValueOrOverrideExpression(y.type,v,"Color",N),X=A??this._getValueOrOverrideExpression(y.type,v,"Color",R),W=this._maybeGetValueOrOverrideExpression(T,"StrokeWidth")??this._getValueOrOverrideExpression(y.type,v,"Width",O),D=V?{type:"sprite-rasterization-param",resource:{type:"path",path:V,asFill:I},overrides:[]}:{type:"sprite-rasterization-param",resource:E,overrides:[]},H=m(this._poMap,y,n),U=w(e.size,_.CIMVectorMarker.size),J=this._getValueOrOverrideExpression(e.type,e.primitiveName,"Size",U);this._cimLayers.push({type:"marker",name:y.name,groupName:e.name,spriteRasterizationParam:D,colorLocked:!!y.colorLocked||!!c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:S,y:M},isAbsoluteAnchorPoint:u,size:p,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:p,widthRatio:C,rotateClockwise:!1,referenceSize:s,sizeRatio:g,color:F,outlineColor:X,outlineWidth:W,isOutline:f,markerPlacement:r,animationParams:he(H),isStroke:"CIMSolidFill"!==y.type,baseSize:J,...z(o,b,k)});break}case"CIMPictureMarker":case"CIMVectorMarker":if(y.markerPlacement){ee().error("Error analyzing CIM, got unexpected marker placement");break}this._analyzeMarker(y,t,r,o,a,s,!1,l,n,c,f)}v&&o.pop()}}_analyzeTextGraphic(e,r,i,o,a,s,l,n){const m=[];C.findApplicableOverrides(i,this._primitiveOverrides,m);const p=i.geometry;if(!("x"in p)||!("y"in p))return;const c=i.symbol,f=W(c),y=D(c.fontStyleName),d=t(c.fontFamilyName);c.font={family:d,decoration:f,...y};const h=w(c.height,_.CIMTextSymbol.height),u=w(c.angle),v=w(c.offsetX),O=w(c.offsetY),{haloSymbol:g}=c,S=w(c.haloSize,0);let M=[0,0,0,0];if(g?.symbolLayers?.length){const e=g.symbolLayers;for(const t of e)if(t.color){M=this._getValueOrOverrideExpression(c?.haloSymbol?.type??"CIMPolygonSymbol",t.primitiveName,"Color",L(t.color));break}}const b=i.primitiveName;let x=[0,0,0,1],P=[0,0,0,0],z=0,I=!1;if(c.symbol?.symbolLayers)for(const t of c.symbol.symbolLayers){const e=t.primitiveName;if("CIMSolidStroke"===t.type)P=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Color",L(t.color)),z=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Width",H(t)??0);else if("CIMSolidFill"===t.type){const r=L(t.color);I=I??!!t.colorLocked,x=this._getValueOrOverrideExpression("CIMSolidFill",e??b,"Color",r)}}let E=null,V=null,N=null,R=null,T=null;b&&(E=this._maybeGetValueOrOverrideExpression(b,"TextSize"),V=this._maybeGetValueOrOverrideExpression(b,"TextAngle"),N=this._maybeGetValueOrOverrideExpression(b,"TextOffsetX"),R=this._maybeGetValueOrOverrideExpression(b,"TextOffsetY"),I||(T=this._maybeGetValueOrOverrideExpression(b,"FillColor")));const G=T??x;let A=null,F=null,X=0;if("CIMBackgroundCallout"===c.callout?.type){const e=c.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?A=L(e.color):"CIMSolidStroke"===e.type&&(F=L(e.color),X=w(e.width,_.CIMSolidStroke.width))}}const Y=this._getValueOrOverrideExpression(c.type,i.primitiveName,"TextString",i.textString??"");if(null==Y)return;const{fontStyleName:j}=c,B=d+(j?"-"+j.toLowerCase():"-regular"),q=this._getMaterialOverrides(o,c.type);q.push(...this._getPrimitiveMaterialOverrides(i.primitiveName,c.type)),this._collectDictionaryTemplateOverrides(q,i);const K={type:"text-rasterization-param",resource:{type:"text",textString:i.textString??"",font:c.font,symbol:c,primitiveName:i.primitiveName,supportsRichText:k(i.textString??"")||q.some(e=>"textString"===e.propertyName)},overrides:q};this._cimLayers.push({type:"text",lineWidth:c.lineWidth,textRasterizationParam:K,colorLocked:!!n||!!I,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:B,decoration:f,haloSize:S,haloColor:M,weight:y.weight,style:y.style,size:E??h,angle:V??u,offsetX:N??v,offsetY:R??O,transform:{type:"cim-marker-transform-param",params:l},horizontalAlignment:J(c.horizontalAlignment),verticalAlignment:U(c.verticalAlignment),text:Y,color:G,outlineColor:P,outlineSize:z,backgroundColor:A,borderLineColor:F,borderLineWidth:X,referenceSize:s,sizeRatio:1,markerPlacement:r})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){const r=B(t.symbol);e.push({propertyName:"textString",defaultValue:"",valueExpressionInfo:{type:"dictionary-template",textCase:r,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,r,i,a,s,l,n,m,p,c,f){const y=ie(e,i),d=e.primitiveName,h=this._analyzeMaterialOverrides(d,["Rotation","OffsetX","OffsetY"]),u=A(h),[v,g,S]=O.getTextureAnchor(y,this._resourceManager,Z),M=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==d||!["rotation","offsetX","offsetY"].includes(e.propertyName));M.push(...u);const C={type:"sprite-rasterization-param",resource:{...y,avoidSDFRasterization:!0},overrides:M},k=w(e.size,_.CIMVectorMarker.size),b=this._getValueOrOverrideExpression(e.type,d,"Size",k);this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:C,colorLocked:c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:v,y:g},isAbsoluteAnchorPoint:!1,size:p,rotation:0,offsetX:0,offsetY:0,transform:{type:"cim-marker-transform-param",params:n},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:p,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:S/o(e.size),isOutline:f,markerPlacement:r,animationParams:he(m),baseSize:b})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;const t=[];return C.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-marker-placement-param",placement:e,overrides:de(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;const t=[];return C.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-gif-animation-params",animation:e,overrides:de(t)}}_analyzeCompositeMarkerGraphic(e,t,r,i,o,a,s,l,n,m,p){const c=i.geometry,f=o[0],y=o[1],d=x(c);if(!d)return;const h="Relative"!==e.anchorPointUnits,u=w(f.width,_.CIMSolidStroke.width),{frameSizeRatio:v,anchorX:O,anchorY:g,widthRatio:S,sdfPaddingRatio:M,sdfTextureSize:C}=P(d,e.frame,e.size,e.anchorPoint,h,u,e.scaleSymbolsProportionally),{path:k}=y,b=y.primitiveName,z=f.primitiveName,I=i.primitiveName;let E=null;y.colorLocked||m||(E=this._maybeGetValueOrOverrideExpression(I,"FillColor"));const V=E??this._getValueOrOverrideExpression(y.type,b,"Color",L(y.color));let N=null;f.colorLocked||m||(N=this._maybeGetValueOrOverrideExpression(I,"StrokeColor"));const R=N??this._getValueOrOverrideExpression(f.type,z,"Color",L(f.color)),T=this._maybeGetValueOrOverrideExpression(I,"StrokeWidth")??this._getValueOrOverrideExpression(f.type,z,"Width",u),G={type:"sprite-rasterization-param",resource:k?{type:"path",path:k,asFill:!0}:{type:"sdf",geometry:c,sdfTextureSize:C,sdfPaddingRatio:M,asFill:!0},overrides:[]};this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:G,colorLocked:m,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:O,y:g},isAbsoluteAnchorPoint:h,size:n,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:n,widthRatio:S,rotateClockwise:!1,referenceSize:s,sizeRatio:v,color:V,outlineColor:R,outlineWidth:T,isOutline:p,markerPlacement:r})}_setPoMap(e,t,r){let i;this._poMap[e]?i=this._poMap[e]:(i={},this._poMap[e]=i),i[t]=r}_maybeGetValueOrOverrideExpression(e,t,r){return this._getValueOrOverrideExpression("",e,t,r,!1)}_getValueOrOverrideExpression(e,t,r,i,o=!0){if(o&&!q(i)&&(i=F(e,r.toLowerCase())),null==t)return i;const a=this._poMap[t];if(null==a)return i;const s=a[r];return"string"==typeof s||"number"==typeof s||Array.isArray(s)?s:s?{valueExpressionInfo:s,defaultValue:i}:i}_analyzePrimitiveOverrides(e,t,r,i){if(null==e)return!1;"string"==typeof e&&(e=[e]);for(const o of this._primitiveOverrides)if(e.includes(o.primitiveName)&&o.valueExpressionInfo)return!0;if(null!=t)for(const o of t)if(o?.overrides.length>0)return!0;if(null!=r)for(const o of r)if(o?.overrides.length>0)return!0;if(null!=i)for(const o of i)if(o?.overrides.length>0)return!0;return!1}_getMaterialOverrides(e,t){if(!e)return[];const r=[];for(const i of e)r.push(...this._getPrimitiveMaterialOverrides(i,t));return r}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];const r=A(this._primitiveOverrides.filter(t=>t.primitiveName===e));return r.forEach(e=>e.defaultValue=F(t,e.propertyName.toLowerCase())),r}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(r=>r.primitiveName!==e||!t.includes(r.propertyName))}}function ie(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function oe(e){if(e?.startsWith("Level_")){const t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ae(e,t){if(!t||0===t.length)return e;const i=r(e);return C.applyOverrides(i,t),i}const se=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function le(e){const t=e.symbolLayers;if(!t)return!1;const r=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectDashes"===e.type&&null!=e.dashTemplate)),i=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectAddControlPoints"===e.type));return!!r||!!i}function ne(e){return me(e)}function me(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectRadial"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type||"PrivateDimensionEffect"===e.type||"PrivateMatcherGeometryOverrideEffect"===e.type}function pe(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type}function ce(e,t){const r=e.some(e=>"CIMSolidFill"===e.type),i=e.every(e=>"CIMSolidFill"===e.type||"CIMSolidStroke"===e.type);return r&&i&&t.some(({effect:e})=>pe(e))}function fe(e){return e.some(e=>"CIMSolidFill"!==e.type&&"CIMSolidStroke"!==e.type&&("CIMVectorMarker"!==e.type&&"CIMPictureMarker"!==e.type||null!=e.markerPlacement))}function ye(e,t){if((t?.some(e=>"CIMGeometricEffectRadial"===e.type)&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.type)||t?.some(e=>"CIMGeometricEffectCircularSector"===e.type))&&2===e.length){const t=e.find(e=>"CIMSolidFill"===e.type),r=e.find(e=>"CIMSolidStroke"===e.type),i=r?.effects?.some(e=>"CIMGeometricEffectDashes"===e.type);if(null!=t&&null!=r&&!i)return!0}return!1}function de(e){return r(e).map(e=>({...e,propertyName:K(e.propertyName)}))}function he(e){return u(e)?{type:"animation-params",params:e}:null}export{re as CIMAnalyzer,ae as analyzeCIMResource};
|
|
2
|
+
import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import{pt2px as o,px2pt as a}from"../../core/screenUtils.js";import{numericHash as s}from"../../core/string.js";import{checkForAnimations as l,globalRotation as n,getAnimationParams as m,handleAbsoluteAnchor as p,handleMarker as c,handleRelativeAnchor as f,getFrameTranslation as y,translate as d,getStaticParam as h,shouldUseAnimatedPath as u}from"./animationUtils.js";import{CIMSymbolInflatedSizeHelper as v,CIMSymbolHelper as O,forEachSymbolLayer as g}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as S}from"./constants.js";import{defaultCIMValues as _}from"./defaultCIMValues.js";import{fitVectorMarker as M}from"./fitVectorMarker.js";import{fromCIMFontStyle as C}from"./fromCIMFontStyle.js";import{OverrideHelper as k}from"./OverrideHelper.js";import{hasRichTextFormattingTags as b}from"./richTextUtils.js";import{getSDFInfo as x,getExtent as P,getSDFMetrics as z,getSDFDimensions as I}from"./SDFHelper.js";import{CIMSymbolUnits as E}from"./types.js";import{colorToArray as L,normalizeAlpha as V,getSize as N,isCIMMarkerStrokePlacement as R,hasStrokeLayer as w,getNumericValue as T,getMaxStrokeWidth as G,getTintColor as A,normalizePrimitiveOverrideProps as F,getDefaultCIMValue as X,getEnum as Y,getFillColor as j,getStrokeColor as W,fromCIMFontDecoration as D,getStrokeWidth as H,fromCIMVerticalAlignment as U,fromCIMHorizontalAlignment as J,getTextCasing as B,isValidCIMValue as q,uncapitalize as K}from"./utils.js";import{EffectHelper as Q}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as Z,randomInsidePolygonTextureSize as $}from"../../views/2d/engine/webgl/definitions.js";const ee=()=>i.getLogger("esri.symbols.cim.cimAnalyzer");function te(e){const t=e.markerPlacement;return t&&t.angleToLine?1:0}class re{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,r,i){if(this._cimLayers=i??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(const t of this._primitiveOverrides){const r=t.valueExpressionInfo;if(r)this._setPoMap(t.primitiveName,t.propertyName,r);else if(null!=t.value){let r=t.value;t.propertyName.includes("Color")&&(e(r)&&(r=L(r)),r=V(r)),this._setPoMap(t.primitiveName,t.propertyName,r)}}}return this._analyzeSymbol(t.symbol,r),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){const r=e?.symbolLayers;if(!r)return;for(let l=0;l<r.length;l++){const e=r[l];"CIMVectorMarker"===e.type&&(r[l]=M(e))}const i=e.effects;let o=0;const a=N(e)??0;"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(o=1);const s=l(e);let p={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:s,hasShiftAnimation:!1,hasMotionAnimations:!1};p=n(p),p=m(this._poMap,e,p);const c="CIMPolygonSymbol"===e.type;if("CIMPointSymbol"===e.type&&this._analyzePointSymbolHalo(e,o,a,i,s),ye(r,i))return this._analyzeCompositeOutlineFill(r,i,a);let f=r.length;for(;f--;){const s=r[f];if(!s||!1===s.enable)continue;let l;i?.length&&(l=[...i]);const n=s.effects;n?.length&&(i?l.push(...n):l=[...n]);let m=null;if(l){m=[];for(const e of l){const t=k.findEffectOverrides(e,this._primitiveOverrides);t&&m.push(t)}}const y=[];k.findApplicableOverrides(s,this._primitiveOverrides,y);const d=this._cimLayers.length;switch(s.type){case"CIMSolidFill":this._analyzeSolidFill(s,m,p,w(r));break;case"CIMPictureFill":this._analyzePictureFill(s,m,p);break;case"CIMHatchFill":this._analyzeHatchFill(s,m,p);break;case"CIMGradientFill":this._analyzeGradientFill(s,m);break;case"CIMSolidStroke":this._analyzeSolidStroke(s,m,c,a,p);break;case"CIMPictureStroke":this._analyzePictureStroke(s,m,c,a,p);break;case"CIMGradientStroke":this._analyzeGradientStroke(s,m,c,a);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"!==e.type&&"CIMPolygonSymbol"!==e.type||(o=te(s));const r=[],i=s.primitiveName;i&&r.push(i);const l=c&&R(s.markerPlacement);this._analyzeMarker(s,m,null,r,o,a,t,[],p,!1,l);break}default:ee().error("Cannot analyze CIM layer",s.type)}if(m?.some(({effect:e})=>me(e)))for(let e=d;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzePointSymbolHalo(e,t,i,o,s){const{haloSymbol:l}=e,n=T(e.haloSize,0);if(n<=0||!l?.symbolLayers)return;const m=l.symbolLayers.filter(e=>!1!==e.enable),p=m[0];if(!p)return;const c=1===m.length&&"CIMSolidFill"===p.type;if(s)return void ee().warnOnce("CIM point symbol halos are not supported with symbol animations");const f=o?.map(e=>k.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e);if(f?.some(({effect:e})=>me(e))){if(!c)return void ee().warnOnce("Complex CIM point symbol halos are not supported with geometry-changing effects");const t=e.symbolLayers?.filter(e=>!1!==e.enable)??[];if(!ce(t,f))return void ee().warnOnce("CIM point symbol halos with geometry-changing effects currently require polygon-producing effects and solid fill or stroke layers");const r=G(t),o=this._getValueOrOverrideExpression(p.type,p.primitiveName,"Color",V(p.color));return void this._cimLayers.push({type:"outlineFill",name:p.name,colorLocked:!0,color:o,effects:f,effectsChangeGeometryType:!0,outlineColorLocked:!0,outlineColor:o,outlineWidth:2*n+r,cap:"Round",join:"Round",referenceWidth:i,pixelBufferSize:2*n+r,outlineEffects:f})}const y=e.symbolLayers?.filter(e=>!1!==e.enable)??[],d=1===y.length&&"CIMVectorMarker"===y[0].type?y[0]:null,h=new Set(d?this._primitiveOverrides.filter(e=>e.primitiveName===d.primitiveName&&["Rotation","OffsetX","OffsetY"].includes(e.propertyName)).map(e=>e.propertyName):[]),u=h.size>0?d:null,g=r(e);if(g.effects=void 0,g.angle=0,g.scaleX=1,u){const e=g.symbolLayers?.find(e=>"CIMVectorMarker"===e.type&&!1!==e.enable);e&&(h.has("Rotation")&&(e.rotation=0),h.has("OffsetX")&&(e.offsetX=0),h.has("OffsetY")&&(e.offsetY=0))}const S={...g,haloSize:0,haloSymbol:void 0},_=v.getPointSymbolHaloPadding(e,this._resourceManager),[M,C,b]=O.getTextureAnchor(S,this._resourceManager,Z,_),P=a(b),z=[];k.findApplicableOverrides(g,this._primitiveOverrides,z);const I=u?z.filter(e=>e.primitiveName!==u.primitiveName||!["Rotation","OffsetX","OffsetY"].includes(e.propertyName)):z,E=u?[{offsetX:this._getValueOrOverrideExpression(u.type,u.primitiveName,"OffsetX",h.has("OffsetX")?T(u.offsetX):0),offsetY:this._getValueOrOverrideExpression(u.type,u.primitiveName,"OffsetY",h.has("OffsetY")?T(u.offsetY):0),rotation:this._getValueOrOverrideExpression(u.type,u.primitiveName,"Rotation",h.has("Rotation")?T(u.rotation):0),size:P,frameHeight:P,rotateClockWise:!!u.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:!1}]:[];this._cimLayers.push({type:"marker",spriteRasterizationParam:{type:"sprite-rasterization-param",resource:{type:"cim-point-symbol-halo",symbol:g,sdf:c&&null!=x(S)},overrides:I},colorLocked:!0,color:c?this._getValueOrOverrideExpression(p.type,p.primitiveName,"Color",V(p.color)):[255,255,255,1],effects:f??null,effectsChangeGeometryType:f?.some(({effect:e})=>me(e)),scaleSymbolsProportionally:!1,alignment:t,anchorPoint:{x:M,y:C},isAbsoluteAnchorPoint:!1,size:P,scaleX:T(e.scaleX,1),rotation:T(e.angle,0),offsetX:0,offsetY:0,outlineColor:[0,0,0,0],outlineWidth:0,transform:{type:"cim-marker-transform-param",params:E},frameHeight:P,widthRatio:1,rotateClockwise:!0,referenceSize:i||P,sizeRatio:1,markerPlacement:null,isOutline:!1})}_analyzeSolidFill(e,t,r,i){const{primitiveName:o,type:a}=e,s=V(e.color),l=m(this._poMap,e,r);if(!i&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.effect.type)){const r=this._getValueOrOverrideExpression(a,o,"Color",s);return void this._cimLayers.push({type:"outlineFill",name:e.name,colorLocked:!!e.colorLocked,color:r,effects:t,outlineColor:r,outlineColorLocked:!!e.colorLocked,...S,outlineEffects:t})}this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,o,"Color",s),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:he(l)})}_analyzePictureFill(e,t,r){const{primitiveName:i,type:o}=e,a=A(e),s=T(e.height,_.CIMPictureFill.height);let l=T(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height),l/=r*(s/t)}const n={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(i,o)},p=m(this._poMap,e,r);this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,i,"TintColor",a),height:this._getValueOrOverrideExpression(o,i,"Height",s),scaleX:this._getValueOrOverrideExpression(o,i,"ScaleX",l),angle:this._getValueOrOverrideExpression(o,i,"Rotation",T(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",T(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",T(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:he(p)})}_analyzeHatchFill(e,t,r){const{primitiveName:i,type:o}=e,a=m(this._poMap,e,r),s=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]),l=F(s);let n=[255,255,255,1],p=!1;if(e.lineSymbol?.symbolLayers)for(const m of e.lineSymbol.symbolLayers){if("CIMSolidStroke"!==m.type)continue;const e=m.primitiveName??i;p||!e||m.colorLocked||null==this._poMap[e]?.Color&&null==this._poMap[e]?.StrokeColor||(n=V(m.color),n=this._maybeGetValueOrOverrideExpression(e,"StrokeColor")??this._getValueOrOverrideExpression(o,e,"Color",n),p=!0);const t=this._maybeGetValueOrOverrideExpression(e,"StrokeWidth");if(t){let r=null,i=null;"number"==typeof t?r=t:i=t.valueExpressionInfo;let a=l.find(e=>"strokeWidth"===e.propertyName);a?a.propertyName="width":(a={type:"CIMPrimitiveOverride",primitiveName:e,propertyName:"width",valueExpressionInfo:i,value:r,defaultValue:X(o,"width")},l.push(a))}}const c={type:"sprite-rasterization-param",resource:e,overrides:l};this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:n,height:this._getValueOrOverrideExpression(o,i,"Separation",T(e.separation,_.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(o,i,"Rotation",T(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",T(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",T(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!p,animationParams:he(a)})}_analyzeGradientFill(e,t){const{angle:r,gradientMethod:i,gradientSize:o,gradientSizeUnits:a,gradientType:s,interval:l,primitiveName:n,type:m}=e,p=_.CIMGradientFill,c=e.colorRamp;this._cimLayers.push({type:"gradientFill",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(n,m)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(m,n,"GradientMethod",i??"Linear"),angle:this._getValueOrOverrideExpression(m,n,"Angle",T(r,p.angle)),gradientType:this._getValueOrOverrideExpression(m,n,"GradientType",s??p.gradientType),interval:this._getValueOrOverrideExpression(m,n,"Interval",T(l,"CIMFixedColorRamp"===c.type?c.colors.length:p.interval)),gradientSize:this._getValueOrOverrideExpression(m,n,"GradientSize",T(o,p.gradientSize)),gradientSizeUnits:"Absolute"===a?E.Absolute:"Relative"===a?E.Relative:p.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,r){const i=e.find(e=>"CIMSolidFill"===e.type),o=e.find(e=>"CIMSolidStroke"===e.type);if(null==i||null==o)return;const a=[...t??[],...i.effects??[]].map(e=>k.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),s=[...t??[],...o.effects??[]].map(e=>k.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),l=T(o.width,_.CIMSolidStroke.width),n=Y(o.capStyle,_.CIMSolidStroke.capstyle),m=Y(o.joinStyle,_.CIMSolidStroke.joinstyle),p=o.miterLimit;this._cimLayers.push({type:"outlineFill",name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,"Color",V(i.color)),effects:a,effectsChangeGeometryType:a.some(({effect:e})=>me(e))||s.some(({effect:e})=>me(e)),outlineColorLocked:!!o.colorLocked,outlineColor:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Color",V(o.color)),outlineWidth:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Width",l),cap:this._getValueOrOverrideExpression(o.type,o.primitiveName,"CapStyle",n),join:this._getValueOrOverrideExpression(o.type,o.primitiveName,"JoinStyle",m),miterLimit:p&&this._getValueOrOverrideExpression(o.type,o.primitiveName,"MiterLimit",p),referenceWidth:r,outlineEffects:s})}_analyzeSolidStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=V(e.color),n=T(e.width,_.CIMSolidStroke.width),p=Y(e.capStyle,_.CIMSolidStroke.capstyle),c=Y(e.joinStyle,_.CIMSolidStroke.joinstyle),f=e.miterLimit;let y,d,h,u,v=[];if(this._analyzePrimitiveOverrides(a,t,null,null)&&(v=this._getPrimitiveMaterialOverrides(a,s)),t&&Array.isArray(t)&&t.length>0){const e=t[t.length-1].effect;e&&"CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&(y=e.dashTemplate,d=e.scaleDash,h=e.offsetAlongLine,u=e.primitiveName,(t=[...t]).pop())}null!=u&&v.push(...this._getPrimitiveMaterialOverrides(u,s).filter(e=>"dashTemplate"===e.propertyName));const O=void 0!==y?{type:"sprite-rasterization-param",resource:{type:"dash",dashTemplate:y,primitiveName:u},overrides:v}:null,g=m(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:O,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"Color",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",p),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:oe(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(u,"DashTemplate")??y,offsetAlongLine:this._getValueOrOverrideExpression(s,u,"OffsetAlongLine",h??0),scaleDash:d,sampleAlphaOnly:!0,animationParams:he(g)})}_analyzePictureStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=A(e),n=T(e.width,_.CIMPictureStroke.width),p=Y(e.capStyle,_.CIMPictureStroke.capstyle),c=Y(e.joinStyle,_.CIMPictureStroke.joinstyle),f=e.miterLimit,y={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(a,s)},d=m(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:y,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"TintColor",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",p),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:oe(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:he(d)})}_analyzeGradientStroke(e,t,r,i){const{gradientMethod:o,gradientSize:a,gradientSizeUnits:s,gradientType:l,interval:n,primitiveName:m,type:p}=e,c=_.CIMGradientStroke,f=T(e.width,c.width),y=Y(e.capStyle,c.capstyle),d=Y(e.joinStyle,c.joinstyle),h=e.miterLimit,u=e.colorRamp;this._cimLayers.push({type:"gradientStroke",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(m,p)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(p,m,"Width",f),cap:this._getValueOrOverrideExpression(p,m,"CapStyle",y),join:this._getValueOrOverrideExpression(p,m,"JoinStyle",d),miterLimit:h&&this._getValueOrOverrideExpression(p,m,"MiterLimit",h),referenceWidth:i,isOutline:r,gradientMethod:this._getValueOrOverrideExpression(p,m,"GradientMethod",o??c.gradientMethod),gradientType:this._getValueOrOverrideExpression(p,m,"GradientType",l??c.gradientType),interval:this._getValueOrOverrideExpression(p,m,"Interval",T(n,"CIMFixedColorRamp"===u.type?u.colors.length:c.interval)),gradientSize:this._getValueOrOverrideExpression(p,m,"GradientSize",T(a,c.gradientSize)),gradientSizeUnits:"Absolute"===s?E.Absolute:"Relative"===s?E.Relative:c.gradientSizeUnits})}_analyzeMarker(e,t,r,i,o,a,s,l,n,y=!1,d=!1){y||=!!e.colorLocked;let h=n;if(h=p(e,h),h=c(this._poMap,e,h),h=f(e,h),h=m(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,y,h))return;const u=T(e.size,_.CIMVectorMarker.size),v=T(e.rotation),O=T(e.offsetX),g=T(e.offsetY),{primitiveName:S,type:M}=e,C=this._getValueOrOverrideExpression(M,S,"Size",u),k=this._getValueOrOverrideExpression(M,S,"Rotation",v),b=this._getValueOrOverrideExpression(M,S,"OffsetX",O),x=this._getValueOrOverrideExpression(M,S,"OffsetY",g);switch(e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,r,i,o,a,C,k,b,x,l,h,y,d);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,r,i,o,a,C,k,b,x,l,h,s,y,d)}}_analyzeMarkerInsidePolygon(e,t,r,i){const{markerPlacement:o,type:s}=e;if(!o||"CIMMarkerPlacementInsidePolygon"!==o.type||i.hasMotionAnimations)return!1;if("CIMVectorMarker"===s||"CIMPictureMarker"===s){const r=e.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;const i=o.primitiveName;if(i&&this._analyzePrimitiveOverrides([i],t,null,null))return!1;if("CIMVectorMarker"===s){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const l=Math.abs(o.stepX),n=Math.abs(o.stepY);if(0===l||0===n)return!0;let m,p;if("Random"===o.gridType){const e=a($),t=Math.max(Math.floor(e/l),1);m=n*Math.max(Math.floor(e/n),1);p=t*l/m}else o.shiftOddRows?(m=2*n,p=l/n*.5):(m=n,p=l/n);const c=A(e),f="CIMCharacterMarker"===e.type?null:{type:"sprite-rasterization-param",resource:{...e,effects:e.effects?.filter(e=>!ne(e))},overrides:[]};return this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:f,colorLocked:r,effects:t,color:c,height:m,scaleX:p,angle:o.gridAngle??0,offsetX:T(o.offsetX),offsetY:T(o.offsetY),applyRandomOffset:"Random"===o.gridType,sampleAlphaOnly:"CIMPictureMarker"!==e.type,hasUnresolvedReplacementColor:!0,animationParams:he(i)}),!0}_analyzePictureMarker(e,t,i,o,a,l,n,m,p,c,f,y,d,h){const{animatedSymbolProperties:u,primitiveName:v,type:O}=e;let g=T(e.scaleX,1);const S=A(e);i||(i=this._createMarkerPlacementOverrideExpression(e.markerPlacement));const _=this._createGIFAnimatedSymbolPropertiesOverrideExpression(u),M=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height);g/=r*(T(e.size)/t)}const C=[...o];let k;e.primitiveName&&C.push(e.primitiveName),u||_?k={type:"animated",url:e.url,urlHash:"H"+s(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(k=r(e),k.markerPlacement=null);const b={type:"sprite-rasterization-param",resource:k,overrides:this._getMaterialOverrides(C,O)};_&&b.overrides.push(..._.overrides);const x=n;this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:b,colorLocked:d,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:n,scaleX:this._getValueOrOverrideExpression(O,v,"ScaleX",g),rotation:m,offsetX:p,offsetY:c,transform:{type:"cim-marker-transform-param",params:f},color:this._getValueOrOverrideExpression(O,v,"TintColor",S),anchorPoint:{x:M.x,y:M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:1,isOutline:h,markerPlacement:i,animationParams:he(y),baseSize:x})}_analyzeVectorMarker(e,t,r,i,o,a,s,l,n,m,p,c,f,u,v){const O=e.markerGraphics;if(!O)return;const g=e.frame;let S=0;S=g?g.ymax-g.ymin:a;const _=!!e.scaleSymbolsProportionally;if(S){const t={offsetX:n,offsetY:m,rotation:l,size:s,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:_};p=[...p,t]}r||(r=this._createMarkerPlacementOverrideExpression(e.markerPlacement));for(const M of O)if(M){const s=M.symbol;if(!s)continue;const l=M.primitiveName;l&&i.push(l);let n,m=c;if(("CIMPointSymbol"===s.type||"CIMTextSymbol"===s.type)&&g){let t=0,r=0;const i=M.geometry;"x"in i&&"y"in i&&(t+=i.x-.5*(g.xmin+g.xmax),r+=i.y-.5*(g.ymin+g.ymax));const o=e.anchorPoint;let a=!1;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,r-=o.y,a=!0):g&&(t-=(g.xmax-g.xmin)*o.x,r-=(g.ymax-g.ymin)*o.y));const s={offsetX:t,offsetY:r,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:_};n=[...p,s]}const O=M.geometry,[C,k]=y(O,g);switch(0===C&&0===k||(m=d(m,C,k)),s.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":f||le(s)?(m={...m,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:h([0,0]),rotation:h(0),scale:h(S),parent:c.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,r,M,i,o,a,n??p,m,S,u,v)):this._analyzeMultiLayerGraphic(e,t,r,M,i,o,a,n??p,m,S,u,v);break;case"CIMTextSymbol":this._analyzeTextGraphic(t,r,M,i,o,a,n??p,u)}l&&i.pop()}}_analyzeMultiLayerGraphic(e,t,r,i,o,a,s,l,n,m,p,c){const f=i.symbol,y=f.symbolLayers;if(y){if(!se(y)||u(n))return fe(y)?(g(f,e=>{e.colorLocked&&(p=!0)}),void this._analyzeMultiLayerGraphicNonSDF(e,t,r,i,o,a,s,l,n,m,p,c)):void this._analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,m,p,c);this._analyzeCompositeMarkerGraphic(e,t,r,i,y,a,s,l,m,p,c)}}_analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,p,c,f){const y=i.symbol,d=y.symbolLayers;if(!d)return;const h=Q.applyEffects(y.effects,i.geometry);if(!h)return;let u=d.length;for(;u--;){const y=d[u];if(!y||!1===y.enable)continue;const v=y.primitiveName;switch(v&&o.push(v),y.type){case"CIMSolidFill":case"CIMSolidStroke":{const o=Q.applyEffects(y.effects,h),d=P(o);if(!d)continue;const u="Relative"!==e.anchorPointUnits,O="CIMSolidStroke"===y.type?y.width:0,{frameSizeRatio:g,anchorX:S,anchorY:M,widthRatio:C,sdfPaddingRatio:k,sdfTextureSize:b}=z(d,e.frame,e.size,e.anchorPoint,u,O,e.scaleSymbolsProportionally),x="CIMSolidFill"===y.type,E={type:"sdf",geometry:o,sdfPaddingRatio:k,asFill:x,sdfTextureSize:b},{path:L}=y,N=x?V(j(y)):null==L?V(W(y)):[0,0,0,0],R=x?[0,0,0,0]:V(W(y));if(!x&&!O)break;const w=i.primitiveName;let G=null;x&&!y.colorLocked&&(G=this._maybeGetValueOrOverrideExpression(w,"FillColor"));let A=null;x||y.colorLocked||(A=this._maybeGetValueOrOverrideExpression(w,"StrokeColor"));const F=G??this._getValueOrOverrideExpression(y.type,v,"Color",N),X=A??this._getValueOrOverrideExpression(y.type,v,"Color",R),Y=this._maybeGetValueOrOverrideExpression(w,"StrokeWidth")??this._getValueOrOverrideExpression(y.type,v,"Width",O),D=L?{type:"sprite-rasterization-param",resource:{type:"path",path:L,asFill:x},overrides:[]}:{type:"sprite-rasterization-param",resource:E,overrides:[]},H=m(this._poMap,y,n),U=T(e.size,_.CIMVectorMarker.size),J=this._getValueOrOverrideExpression(e.type,e.primitiveName,"Size",U);this._cimLayers.push({type:"marker",name:y.name,groupName:e.name,spriteRasterizationParam:D,colorLocked:!!y.colorLocked||!!c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:S,y:M},isAbsoluteAnchorPoint:u,size:p,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:p,widthRatio:C,rotateClockwise:!1,referenceSize:s,sizeRatio:g,color:F,outlineColor:X,outlineWidth:Y,isOutline:f,markerPlacement:r,animationParams:he(H),isStroke:"CIMSolidFill"!==y.type,baseSize:J,...I(o,b,k)});break}case"CIMPictureMarker":case"CIMVectorMarker":if(y.markerPlacement){ee().error("Error analyzing CIM, got unexpected marker placement");break}this._analyzeMarker(y,t,r,o,a,s,!1,l,n,c,f)}v&&o.pop()}}_analyzeTextGraphic(e,r,i,o,a,s,l,n){const m=[];k.findApplicableOverrides(i,this._primitiveOverrides,m);const p=i.geometry;if(!("x"in p)||!("y"in p))return;const c=i.symbol,f=D(c),y=C(c.fontStyleName),d=t(c.fontFamilyName);c.font={family:d,decoration:f,...y};const h=T(c.height,_.CIMTextSymbol.height),u=T(c.angle),v=T(c.offsetX),O=T(c.offsetY),{haloSymbol:g}=c,S=T(c.haloSize,0);let M=[0,0,0,0];if(g?.symbolLayers?.length){const e=g.symbolLayers;for(const t of e)if(t.color){M=this._getValueOrOverrideExpression(c?.haloSymbol?.type??"CIMPolygonSymbol",t.primitiveName,"Color",V(t.color));break}}const x=i.primitiveName;let P=[0,0,0,1],z=[0,0,0,0],I=0,E=!1;if(c.symbol?.symbolLayers)for(const t of c.symbol.symbolLayers){const e=t.primitiveName;if("CIMSolidStroke"===t.type)z=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Color",V(t.color)),I=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Width",H(t)??0);else if("CIMSolidFill"===t.type){const r=V(t.color);E=E??!!t.colorLocked,P=this._getValueOrOverrideExpression("CIMSolidFill",e??x,"Color",r)}}let L=null,N=null,R=null,w=null,G=null;x&&(L=this._maybeGetValueOrOverrideExpression(x,"TextSize"),N=this._maybeGetValueOrOverrideExpression(x,"TextAngle"),R=this._maybeGetValueOrOverrideExpression(x,"TextOffsetX"),w=this._maybeGetValueOrOverrideExpression(x,"TextOffsetY"),E||(G=this._maybeGetValueOrOverrideExpression(x,"FillColor")));const A=G??P;let F=null,X=null,Y=0;if("CIMBackgroundCallout"===c.callout?.type){const e=c.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?F=V(e.color):"CIMSolidStroke"===e.type&&(X=V(e.color),Y=T(e.width,_.CIMSolidStroke.width))}}const j=this._getValueOrOverrideExpression(c.type,i.primitiveName,"TextString",i.textString??"");if(null==j)return;const{fontStyleName:W}=c,B=d+(W?"-"+W.toLowerCase():"-regular"),q=this._getMaterialOverrides(o,c.type);q.push(...this._getPrimitiveMaterialOverrides(i.primitiveName,c.type)),this._collectDictionaryTemplateOverrides(q,i);const K={type:"text-rasterization-param",resource:{type:"text",textString:i.textString??"",font:c.font,symbol:c,primitiveName:i.primitiveName,supportsRichText:b(i.textString??"")||q.some(e=>"textString"===e.propertyName)},overrides:q};this._cimLayers.push({type:"text",lineWidth:c.lineWidth,textRasterizationParam:K,colorLocked:!!n||!!E,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:B,decoration:f,haloSize:S,haloColor:M,weight:y.weight,style:y.style,size:L??h,angle:N??u,offsetX:R??v,offsetY:w??O,transform:{type:"cim-marker-transform-param",params:l},horizontalAlignment:J(c.horizontalAlignment),verticalAlignment:U(c.verticalAlignment),text:j,color:A,outlineColor:z,outlineSize:I,backgroundColor:F,borderLineColor:X,borderLineWidth:Y,referenceSize:s,sizeRatio:1,markerPlacement:r})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){const r=B(t.symbol);e.push({propertyName:"textString",defaultValue:"",valueExpressionInfo:{type:"dictionary-template",textCase:r,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,r,i,a,s,l,n,m,p,c,f){const y=ie(e,i),d=e.primitiveName,h=this._analyzeMaterialOverrides(d,["Rotation","OffsetX","OffsetY"]),u=F(h),[v,g,S]=O.getTextureAnchor(y,this._resourceManager,Z),M=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==d||!["rotation","offsetX","offsetY"].includes(e.propertyName));M.push(...u);const C={type:"sprite-rasterization-param",resource:{...y,avoidSDFRasterization:!0},overrides:M},k=T(e.size,_.CIMVectorMarker.size),b=this._getValueOrOverrideExpression(e.type,d,"Size",k);this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:C,colorLocked:c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:v,y:g},isAbsoluteAnchorPoint:!1,size:p,rotation:0,offsetX:0,offsetY:0,transform:{type:"cim-marker-transform-param",params:n},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:p,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:S/o(e.size),isOutline:f,markerPlacement:r,animationParams:he(m),baseSize:b})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;const t=[];return k.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-marker-placement-param",placement:e,overrides:de(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;const t=[];return k.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-gif-animation-params",animation:e,overrides:de(t)}}_analyzeCompositeMarkerGraphic(e,t,r,i,o,a,s,l,n,m,p){const c=i.geometry,f=o[0],y=o[1],d=P(c);if(!d)return;const h="Relative"!==e.anchorPointUnits,u=T(f.width,_.CIMSolidStroke.width),{frameSizeRatio:v,anchorX:O,anchorY:g,widthRatio:S,sdfPaddingRatio:M,sdfTextureSize:C}=z(d,e.frame,e.size,e.anchorPoint,h,u,e.scaleSymbolsProportionally),{path:k}=y,b=y.primitiveName,x=f.primitiveName,I=i.primitiveName;let E=null;y.colorLocked||m||(E=this._maybeGetValueOrOverrideExpression(I,"FillColor"));const L=E??this._getValueOrOverrideExpression(y.type,b,"Color",V(y.color));let N=null;f.colorLocked||m||(N=this._maybeGetValueOrOverrideExpression(I,"StrokeColor"));const R=N??this._getValueOrOverrideExpression(f.type,x,"Color",V(f.color)),w=this._maybeGetValueOrOverrideExpression(I,"StrokeWidth")??this._getValueOrOverrideExpression(f.type,x,"Width",u),G={type:"sprite-rasterization-param",resource:k?{type:"path",path:k,asFill:!0}:{type:"sdf",geometry:c,sdfTextureSize:C,sdfPaddingRatio:M,asFill:!0},overrides:[]};this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:G,colorLocked:m,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:O,y:g},isAbsoluteAnchorPoint:h,size:n,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:n,widthRatio:S,rotateClockwise:!1,referenceSize:s,sizeRatio:v,color:L,outlineColor:R,outlineWidth:w,isOutline:p,markerPlacement:r})}_setPoMap(e,t,r){let i;this._poMap[e]?i=this._poMap[e]:(i={},this._poMap[e]=i),i[t]=r}_maybeGetValueOrOverrideExpression(e,t,r){return this._getValueOrOverrideExpression("",e,t,r,!1)}_getValueOrOverrideExpression(e,t,r,i,o=!0){if(o&&!q(i)&&(i=X(e,r.toLowerCase())),null==t)return i;const a=this._poMap[t];if(null==a)return i;const s=a[r];return"string"==typeof s||"number"==typeof s||Array.isArray(s)?s:s?{valueExpressionInfo:s,defaultValue:i}:i}_analyzePrimitiveOverrides(e,t,r,i){if(null==e)return!1;"string"==typeof e&&(e=[e]);for(const o of this._primitiveOverrides)if(e.includes(o.primitiveName)&&o.valueExpressionInfo)return!0;if(null!=t)for(const o of t)if(o?.overrides.length>0)return!0;if(null!=r)for(const o of r)if(o?.overrides.length>0)return!0;if(null!=i)for(const o of i)if(o?.overrides.length>0)return!0;return!1}_getMaterialOverrides(e,t){if(!e)return[];const r=[];for(const i of e)r.push(...this._getPrimitiveMaterialOverrides(i,t));return r}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];const r=F(this._primitiveOverrides.filter(t=>t.primitiveName===e));return r.forEach(e=>e.defaultValue=X(t,e.propertyName.toLowerCase())),r}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(r=>r.primitiveName!==e||!t.includes(r.propertyName))}}function ie(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function oe(e){if(e?.startsWith("Level_")){const t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ae(e,t){if(!t||0===t.length)return e;const i=r(e);return k.applyOverrides(i,t),i}const se=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function le(e){const t=e.symbolLayers;if(!t)return!1;const r=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectDashes"===e.type&&null!=e.dashTemplate)),i=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectAddControlPoints"===e.type));return!!r||!!i}function ne(e){return me(e)}function me(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectRadial"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type||"PrivateDimensionEffect"===e.type||"PrivateMatcherGeometryOverrideEffect"===e.type}function pe(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type}function ce(e,t){const r=e.some(e=>"CIMSolidFill"===e.type),i=e.every(e=>"CIMSolidFill"===e.type||"CIMSolidStroke"===e.type);return r&&i&&t.some(({effect:e})=>pe(e))}function fe(e){return e.some(e=>"CIMSolidFill"!==e.type&&"CIMSolidStroke"!==e.type&&("CIMVectorMarker"!==e.type&&"CIMPictureMarker"!==e.type||null!=e.markerPlacement))}function ye(e,t){if((t?.some(e=>"CIMGeometricEffectRadial"===e.type)&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.type)||t?.some(e=>"CIMGeometricEffectCircularSector"===e.type))&&2===e.length){const t=e.find(e=>"CIMSolidFill"===e.type),r=e.find(e=>"CIMSolidStroke"===e.type),i=r?.effects?.some(e=>"CIMGeometricEffectDashes"===e.type);if(null!=t&&null!=r&&!i)return!0}return!1}function de(e){return r(e).map(e=>({...e,propertyName:K(e.propertyName)}))}function he(e){return u(e)?{type:"animation-params",params:e}:null}export{re as CIMAnalyzer,ae as analyzeCIMResource};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
function e(e){return e.split(" ").map(e=>Number(e))}function t(t){return"string"==typeof t?e(t):t}function n(e){let t=e.slice();t.length%2&&(t=[...t,...t]);let n=0;for(;n<t.length&&0===t[n];)n++;let h=0;const l=[];for(let s=n;s<t.length;s++)0===t[s]?h++:0===h?l.push(t[s]):1&h?(l[l.length-1]+=t[s],h=0):(l.push(t[s]),h=0);return t=l,t.length<=1?0===t.length||n%2==0?{dashTemplate:[],hidesLine:!1}:{dashTemplate:[],hidesLine:!0}:(t.length%2==1?n%2==1?t.unshift(0):t.push(0):n%2==1&&(t.unshift(0),t.push(0)),{dashTemplate:t,hidesLine:!1})}function h(e){return e?.dashTemplate&&(e.dashTemplate=t(e.dashTemplate)),e}export{h as normalizeDashEffectTemplate,n as normalizeDashPatternTemplate,t as normalizeDashTemplate,e as parseDashTemplate};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{collectPath as e}from"../../../geometry/geometryCursorCollectUtils.js";import{PathEffectCursor as s}from"../CIMCursor.js";import{
|
|
2
|
+
import{GeometryCursor as t}from"../../../geometry/GeometryCursor.js";import{collectPath as e}from"../../../geometry/geometryCursorCollectUtils.js";import{PathEffectCursor as s}from"../CIMCursor.js";import{normalizeDashEffectTemplate as i,normalizeDashPatternTemplate as r}from"../dashUtils.js";import{GeometryWalker as a,DashPattern as n}from"../GeometryWalker.js";class h{static{this.instance=null}static local(){return null===h.instance&&(h.instance=new h),h.instance}execute(t,e,s){return new l(t,e,s)}}class l extends s{constructor(t,e,s){super(t,!0,!0),this._firstCurve=null;const h=s.geomUnitsPerPoint;this._walker=new a,this._walker.updateTolerance(h),this._endings=e.lineDashEnding??"NoConstraint",this._customDashPos=-(e.offsetAlongLine??0)*h,this._offsetAtEnd=(e.customEndingOffset??0)*h;let l=i(e).dashTemplate;null==l&&(l=[]);const o=r(l);l=o.hidesLine?[-1]:o.dashTemplate,this._pattern=new n,this._pattern.init(l,!1),this._pattern.scale(h)}processPath(s){if(this._pattern.size()%2==1)return null;if(0===this._pattern.length()){this.iteratePath=!1;const i=e(s);return t.fromJSONCIM({paths:[i]})}if(!this.iteratePath){let i=!0;switch(this._endings){case"HalfPattern":case"HalfGap":default:this._pattern.extPtGap=0;break;case"FullPattern":this.isClosed||(this._pattern.extPtGap=.5*this._pattern.firstValue());break;case"FullGap":this.isClosed||(this._pattern.extPtGap=.5*this._pattern.lastValue());break;case"NoConstraint":this.isClosed||(i=!1);break;case"Custom":this.isClosed||(this._pattern.extPtGap=.5*this._offsetAtEnd)}const r=s.pathLength();if(this._pattern.isEmpty()||r<.1*this._pattern.length()){const i=e(s);return t.fromJSONCIM({paths:[i]})}if(!this._walker.init(s,this._pattern,i)){const i=e(s);return t.fromJSONCIM({paths:[i]})}}let i;if(this.iteratePath)i=this._pattern.nextValue();else{let t;switch(this._endings){case"HalfPattern":default:t=.5*this._pattern.firstValue();break;case"HalfGap":t=.5*-this._pattern.lastValue();break;case"FullGap":t=-this._pattern.lastValue();break;case"FullPattern":t=0;break;case"NoConstraint":case"Custom":t=-this._customDashPos}let e=t/this._pattern.length();e-=Math.floor(e),t=e*this._pattern.length(),this._pattern.reset(),i=this._pattern.nextValue();let s=!1;for(;t>=i;)t-=i,i=this._pattern.nextValue(),s=!s;i-=t,s?(this._walker.nextPosition(i),i=this._pattern.nextValue()):this.isClosed&&(this._firstCurve=this._walker.nextCurve(i),i=this._pattern.nextValue(),this._walker.nextPosition(i),i=this._pattern.nextValue())}0===i&&(i=this._pattern.nextValue(),this._walker.nextPosition(i),i=this._pattern.nextValue());let r=this._walker.nextCurve(i);if(r)if(this._walker.isPathEnd()){if(this.iteratePath=!1,this._firstCurve){for(this._firstCurve.nextPath();this._firstCurve.nextPoint();)r.pushXY(this._firstCurve.x,this._firstCurve.y);this._firstCurve=null}}else i=this._pattern.nextValue(),!this._walker.nextPosition(i)||this._walker.isPathEnd()?(this.iteratePath=!1,this._firstCurve&&(r.pushCursor(this._firstCurve),this._firstCurve=null)):this.iteratePath=!0;else this.iteratePath=!1,r=this._firstCurve,this._firstCurve=null;return r?.reset(),r}}export{h as EffectDashes};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
function l(l){let i="normal",e="normal";if(l){const t=l.toLowerCase();t.includes("italic")?i="italic":t.includes("oblique")&&(i="oblique"),t.includes("bold")?e="bold":t.includes("light")&&(e="lighter")}return{style:i,weight:e}}export{l as fromCIMFontStyle};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import t from"../../Color.js";import{fromCIMFontStyle as n}from"./
|
|
2
|
+
import t from"../../Color.js";import{fromCIMFontStyle as n}from"./fromCIMFontStyle.js";const e=/([A-Za-z_][\w-]*)\s*=\s*(['"])(.*?)\2/g,r=/&(amp|lt|gt|quot|apos);/g,o=/<\s*\/?\s*(?:CLR|BOL|_BOL|ITA|_ITA|UND|_UND|FNT|CHR)\b/i;function i(t){return o.test(t)}function a(t){if(!t.supportsRichText||!t.textString.includes("<"))return null;const n=c(t),e=[],r=[];let o=s(n),i="",a=!1;const f=t.textString,g=()=>{if(!i)return;const t=l(i);if(!t)return void(i="");const n=r[r.length-1];n&&u(n,o)?n.text+=t:r.push({text:t,font:{...o.font},fontSize:o.fontSize,characterSpacing:o.characterSpacing,color:o.color}),i=""};let p=0;for(;p<f.length;){const t=f[p];if("<"!==t){i+=t,p++;continue}const n=f.indexOf(">",p+1);if(-1===n)return null;const r=h(f.slice(p+1,n));if(!r)return null;if(a=!0,g(),r.isEnd){const t=e.pop();if(!t||t.name!==r.name)return null;o=t.previous}else{const t=s(o);o=m(o,r),e.push({name:r.name,previous:t})}p=n+1}return e.length?null:(g(),a?r.filter(t=>t.text.length>0):null)}function c(t){return{font:{...t.font},fontSize:t.symbol?.height&&!isNaN(t.symbol.height)?t.symbol.height:10,characterSpacing:0}}function s(t){return{font:{...t.font},fontSize:t.fontSize,characterSpacing:t.characterSpacing,color:t.color}}function u(t,n){return t.fontSize===n.fontSize&&t.characterSpacing===n.characterSpacing&&t.font.family===n.font.family&&t.font.style===n.font.style&&t.font.weight===n.font.weight&&t.font.decoration===n.font.decoration&&f(t.color,n.color)}function f(t,n){return t===n||!!t&&!!n&&t[0]===n[0]&&t[1]===n[1]&&t[2]===n[2]&&t[3]===n[3]}function l(t){return t.replaceAll(r,(t,n)=>{switch(n){case"amp":return"&";case"lt":return"<";case"gt":return">";case"quot":return'"';case"apos":return"'";default:return t}})}function h(t){const n=t.trim();if(!n)return null;const r=n.startsWith("/"),o=r?n.slice(1).trim():n,i=/^([A-Za-z_][\w-]*)/.exec(o);if(!i)return null;const a=i[1],c=o.slice(a.length),s={};let u;for(e.lastIndex=0;u=e.exec(c);)s[u[1]]=u[3];return{isEnd:r,name:a,attributes:s}}function m(t,n){const e=s(t);switch(n.name.toUpperCase()){case"BOL":e.font.weight="bold";break;case"_BOL":e.font.weight="normal";break;case"ITA":e.font.style="italic";break;case"_ITA":e.font.style="normal";break;case"UND":e.font.decoration="underline";break;case"_UND":e.font.decoration="none";break;case"FNT":p(e,n.attributes);break;case"CLR":e.color=b(n.attributes);break;case"CHR":g(e,n.attributes)}return e}function g(t,n){const e=Number(n.spacing);!isNaN(e)&&e>=0&&(t.characterSpacing=e/100)}function p(t,e){const{name:r,style:o,size:i,scale:a,wght:c,ital:s}=e;if(r&&(t.font.family=r),o){const e=n(o);t.font.style=e.style,t.font.weight=e.weight}if(c){const n=Number(c);t.font.weight=n>=600?"bold":"normal"}if(s){const n=Number(s);isNaN(n)||(t.font.style=0!==n?"italic":"normal")}if(i){const n=Number(i);!isNaN(n)&&n>0&&(t.fontSize=n)}if(a){const n=Number(a);!isNaN(n)&&n>0&&(t.fontSize*=n/100)}}function b(n){if(n.hex){const e=t.fromHex(n.hex)?.toArray();if(e){const t="alpha"in n?S(n.alpha):e[3];return[e[0],e[1],e[2],t]}}if("red"in n||"green"in n||"blue"in n)return[N(n.red),N(n.green),N(n.blue),S(n.alpha)];const e=d(n.cyan),r=d(n.magenta),o=d(n.yellow),i=d(n.black),a=S(n.alpha),c=d(n.tint,100)/100,s=1-i;return[Math.round(255*(1-e)*s*c),Math.round(255*(1-r)*s*c),Math.round(255*(1-o)*s*c),a]}function N(t){const n=Number(t);return y(isNaN(n)?0:n)}function d(t,n=0){const e=Number(t);return x((isNaN(e)?n:e)/100)}function S(t){return Math.round(255*d(t,100))}function y(t){return Math.max(0,Math.min(255,Math.round(t)))}function x(t){return Math.max(0,Math.min(1,t))}export{i as hasRichTextFormattingTags,a as parseRichTextRuns};
|
package/symbols/cim/types.d.ts
CHANGED
|
@@ -2600,6 +2600,38 @@ export interface CIMPointSymbol extends CIMMultiLayerSymbol {
|
|
|
2600
2600
|
* @since 5.0
|
|
2601
2601
|
*/
|
|
2602
2602
|
animations?: CIMSymbolAnimation[];
|
|
2603
|
+
/**
|
|
2604
|
+
* The size of the halo around the symbol. Use with the `haloSymbol` property to define the halo's appearance.
|
|
2605
|
+
*
|
|
2606
|
+
* @since 5.2
|
|
2607
|
+
*/
|
|
2608
|
+
haloSize?: number;
|
|
2609
|
+
/**
|
|
2610
|
+
* The symbol used for the halo around the point symbol. Use with the `haloSize` property to define the halo's appearance.
|
|
2611
|
+
*
|
|
2612
|
+
* @since 5.2
|
|
2613
|
+
* @example
|
|
2614
|
+
* ```js
|
|
2615
|
+
* {
|
|
2616
|
+
* type: "CIMPointSymbol",
|
|
2617
|
+
* symbolLayers: [...],
|
|
2618
|
+
* haloSize: 2,
|
|
2619
|
+
* haloSymbol: {
|
|
2620
|
+
* type: "CIMPolygonSymbol",
|
|
2621
|
+
* symbolLayers: [
|
|
2622
|
+
* {
|
|
2623
|
+
* type: "CIMSolidFill",
|
|
2624
|
+
* enable: true,
|
|
2625
|
+
* color: [0, 169, 230, 255],
|
|
2626
|
+
* },
|
|
2627
|
+
* ],
|
|
2628
|
+
* },
|
|
2629
|
+
* scaleX: 1,
|
|
2630
|
+
* angleAlignment: "Display"
|
|
2631
|
+
* }
|
|
2632
|
+
* ```
|
|
2633
|
+
*/
|
|
2634
|
+
haloSymbol?: CIMPolygonSymbol;
|
|
2603
2635
|
/**
|
|
2604
2636
|
* The primitive name of the symbol. Used when setting a [CIMPrimitiveOverride](https://developers.arcgis.com/javascript/latest/references/core/symbols/cim/types/#CIMPrimitiveOverride).
|
|
2605
2637
|
*
|
package/symbols/cim/utils.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{defaultCIMValues as e,defaultCIMColor as t}from"./defaultCIMValues.js";function r(e){return"function"==typeof e}function n(e,t,n,o){return r(e)?e(t,n,o):e}function o(e){return[e.r,e.g,e.b,e.a]}const i=" /-,\n";function a(e){let t=e.length;for(;t--;)if(!i.includes(e.charAt(t)))return!1;return!0}function l(e,t){const r=[];let n=0,o=-1;do{if(o=e.indexOf("[",n),o>=n){if(o>n){const t=e.slice(n,o);r.push([t,null,a(t)])}if(n=o+1,o=e.indexOf("]",n),o>=n){if(o>n){const i=t[e.slice(n,o)];i&&r.push([null,i,!1])}n=o+1}}}while(-1!==o);if(n<e.length){const t=e.slice(n);r.push([t,null,a(t)])}return r}function c(e,t,r){let n="",o=null;for(const i of t){const[t,r,a]=i;if(null!=t&&""!==t)a?o=t:(null!=o&&(n+=o,o=null),n+=t);else{const t=e.readAttribute(r);null!=t&&""!==t&&(null!==o&&(n+=o,o=null),n+=t)}}return u(n,r)}function s(e,t,r,n){let o="",i=null;for(const a of t){const[t,n,l]=a;if(null!=t&&""!==t)l?i=t:(null!=i&&(o+=i,i=null),o+=t);else{let t=n;null!=r&&(t=Y(n,r));const a=e.attributes[t];null!=a&&""!==a&&(null!=i&&(o+=i,i=null),o+=a)}}return u(o,n)}function u(e,t){switch("string"!=typeof e&&(e=String(e)),t){case"LowerCase":return e.toLowerCase();case"Allcaps":return e.toUpperCase();default:return e}}function f(e,t,r,n,o,i,a=!0){const l=t/o,c=r/i,s=Math.ceil(l/2),u=Math.ceil(c/2);for(let f=0;f<i;f++)for(let r=0;r<o;r++){const M=4*(r+(a?i-f-1:f)*o);let y=0,m=0,C=0,h=0,I=0,b=0,p=0;const d=(f+.5)*c;for(let n=Math.floor(f*c);n<(f+1)*c;n++){const o=Math.abs(d-(n+.5))/u,i=(r+.5)*l,a=o*o;for(let c=Math.floor(r*l);c<(r+1)*l;c++){let r=Math.abs(i-(c+.5))/s;const o=Math.sqrt(a+r*r);o>=-1&&o<=1&&(y=2*o*o*o-3*o*o+1,y>0&&(r=4*(c+n*t),p+=y*e[r+3],C+=y,e[r+3]<255&&(y=y*e[r+3]/250),h+=y*e[r],I+=y*e[r+1],b+=y*e[r+2],m+=y))}}n[M]=h/m,n[M+1]=I/m,n[M+2]=b/m,n[M+3]=p/C}}function M(e){return e?[e[0],e[1],e[2],e[3]/255]:[0,0,0,0]}function y(e){return e.data?.symbol??null}function m(e){return"CIMVectorMarker"===e.type||"CIMPictureMarker"===e.type||"CIMBarChartMarker"===e.type||"CIMCharacterMarker"===e.type||"CIMPieChartMarker"===e.type||"CIMStackedBarChartMarker"===e.type}function C(e){return"CIMGradientStroke"===e.type||"CIMPictureStroke"===e.type||"CIMSolidStroke"===e.type}function h(e){return null!=e&&("CIMGradientFill"===e.type||"CIMHatchFill"===e.type||"CIMPictureFill"===e.type||"CIMSolidFill"===e.type||"CIMWaterFill"===e.type)}function I(e){return null!=e&&("CIMMarkerPlacementAlongLineRandomSize"===e.type||"CIMMarkerPlacementAlongLineSameSize"===e.type||"CIMMarkerPlacementAlongLineVariableSize"===e.type||"CIMMarkerPlacementAtExtremities"===e.type||"CIMMarkerPlacementAtMeasuredUnits"===e.type||"CIMMarkerPlacementAtRatioPositions"===e.type||"CIMMarkerPlacementOnLine"===e.type||"CIMMarkerPlacementOnVertices"===e.type)}const b=(e,t=0)=>null==e||isNaN(e)?t:e,p=(e,t)=>null!=e?e:t,d=(e,t)=>e??t,k=e=>e.tintColor?M(e.tintColor):[255,255,255,1];function S(e){if(!e)return"normal";switch(e.toLowerCase()){case"italic":return"italic";case"oblique":return"oblique";default:return"normal"}}function g(e){if(!e)return"normal";switch(e.toLowerCase()){case"bold":return"bold";case"bolder":return"bolder";case"lighter":return"lighter";default:return"normal"}}function P(e){let t="normal",r="normal";if(e){const n=e.toLowerCase();n.includes("italic")?t="italic":n.includes("oblique")&&(t="oblique"),n.includes("bold")?r="bold":n.includes("light")&&(r="lighter")}return{style:t,weight:r}}function w(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function L(e){if(!e)return null;switch(e.type){case"CIMPolygonSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=L(t);if(null!=e)return e}break;case"CIMTextSymbol":return L(e.symbol);case"CIMSolidFill":return e.color}return null}function G(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":{const t=e.symbolLayers;if(t)for(const e of t){const t=G(e);if(null!=t)return t}break}case"CIMTextSymbol":return G(e.symbol);case"CIMSolidStroke":return e.color}}function E(e){for(const t of e)if(t.enable)switch(t.type){case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return!0}return!1}function A(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=A(t);if(void 0!==e)return e}break;case"CIMTextSymbol":return A(e.symbol);case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return e.width}}function x(t){let r=0;for(const n of t??[])!1!==n.enable&&C(n)&&(r=Math.max(r,b(n.width,e[n.type].width)));return r}function T(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return"justify"}}function v(e){switch(e){default:case"Bottom":return"bottom";case"Top":return"top";case"Center":return"middle";case"Baseline":return"baseline"}}function N(e){return(e?Object.keys(e):[]).map(t=>({name:t,alias:t,type:"string"==typeof e[t]?"esriFieldTypeString":"esriFieldTypeDouble"}))}const F=e=>e.includes("data:image/svg+xml");function z(e){if(!e)return null;switch(e.type){case"CIMPointSymbol":case"CIMTextSymbol":return"esriGeometryPoint";case"CIMLineSymbol":return"esriGeometryPolyline";case"CIMPolygonSymbol":return"esriGeometryPolygon";default:return null}}function V(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}function O(e,t,r,n,o,i,a=!0){const{infos:l}=i;let c=1,s=0,u=0,f=0,M=1;for(const{absoluteAnchorPoint:C,offsetX:h,offsetY:I,rotation:b,size:p,frameHeight:d,rotateClockWise:k,scaleSymbolsProportionally:S}of l){M=C?1:c;u=Q(h,I,s,M,u),f=K(h,I,s,M,f),d&&(S||a)&&(c*=p/d),s=Z(b,k,s)}const y=Q(n,o,s,M,u),m=K(n,o,s,M,f);return{size:e*c,rotation:Z(t,r,s),offsetX:y,offsetY:m}}function R(e){if(null==e)return!1;if(Array.isArray(e))return e.every(e=>R(e));switch(typeof e){case"string":return!!e;case"number":return!isNaN(e)}}function D(r,n){if("color"===n||"outlinecolor"===n||"backgroundcolor"===n||"borderlinecolor"===n||"tintcolor"===n)return[...t[n]];const o=e[r];if(!o)throw new Error(`InternalError: default value for type ${r}.`);return o[n]}function W(e){return e.split(" ").map(e=>Number(e))}function j(e){return"string"==typeof e?W(e):e}function q(e){return e?.dashTemplate&&(e.dashTemplate=j(e.dashTemplate)),e}function B(e){if(null==e)return"Normal";switch(e.type){case"CIMTextSymbol":return e.textCase??"Normal";case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const t=e.symbolLayers;if(!t)return"Normal";for(const e of t)if("CIMVectorMarker"===e.type)return B(e)}break;case"CIMVectorMarker":{const t=e.markerGraphics;if(!t)return"Normal";for(const e of t)if(e.symbol)return B(e.symbol)}}return"Normal"}function X(t){if(t)switch(t.type){case"CIMTextSymbol":return t.height;case"CIMPointSymbol":{let r=0;if(t.symbolLayers)for(const n of t.symbolLayers)if(n)switch(n.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const t=n.size??e.CIMVectorMarker.size;t>r&&(r=t);break}}return r}case"CIMLineSymbol":case"CIMPolygonSymbol":{let r=0;if(t.symbolLayers)for(const n of t.symbolLayers)if(n)switch(n.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=n.width;null!=e&&e>r&&(r=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(n.markerPlacement&&I(n.markerPlacement)){const t=n.size??e.CIMVectorMarker.size;t>r&&(r=t)}break;case"CIMPictureFill":{const e=n.height;null!=e&&e>r&&(r=e)}}return r}}}function Y(e,t){if(null!==t){const r=t.get(e);return r?r.name:e}return e}function H(e){return e.map(e=>({...e,propertyName:V(e.propertyName)}))}function J(e){const t={};for(const r in e){const n=e[r];t[V(r)]=n}return t}function U(e){if(!e)return 0;let t=0;for(const r of e)t+=$(r);return t}function $(e){if(!e)return 0;if(re(e))return e.inflateSize??256;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectCircularSector":return Math.abs(e.radius??25);case"CIMGeometricEffectControlMeasureLine":return 500;case"CIMGeometricEffectExtension":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(b(e.offsetX)),Math.abs(b(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRadial":return Math.abs(e.length??5);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude);case"CIMGeometricEffectDonut":return Math.abs(e.width)}}function K(e,t,r,n,o){const i=r*Math.PI/180;if(i){const r=Math.cos(i);return(Math.sin(i)*e+r*t)*n+o}return t*n+o}function Q(e,t,r,n,o){const i=r*Math.PI/180;if(i){return(Math.cos(i)*e-Math.sin(i)*t)*n+o}return e*n+o}function Z(e,t,r){return t?r-e:r+e}function _(e,t,r){const n="Color"===r||"TintColor"===r||"ToColor"===r,o="Rotation"===r||"Angle"===r||"ToRotation"===r;let i=t[V(r)];if(null!=i&&(n?i=[i[0]/255,i[1]/255,i[2]/255,i[3]/255]:o&&(i*=Math.PI/180)),null==i&&(i=D(t.type,r.toLowerCase()),null!=i&&(n?i=[i[0]/255,i[1]/255,i[2]/255,i[3]]:o&&(i*=Math.PI/180))),null!=t.primitiveName){const a=e[t.primitiveName];if(null!=a){const e=a[r];null==e||("string"==typeof e||"number"==typeof e||Array.isArray(e)?(i=e,null!=i&&(n?i=[i[0]/255,i[1]/255,i[2]/255,i[3]/255]:o&&(i*=Math.PI/180))):(i={valueExpressionInfo:e,defaultValue:i},null!=i&&(n?i={type:"Process",op:"ArcadeColor",value:i}:o&&(i={type:"Process",op:"Divide",left:i,right:180/Math.PI}))))}}if(null==i)throw new Error(`Failed to derive a value or an expression for "${r}".`);return i}function ee(e,t,r){if(null!=t[V(r)])return!0;if(null!=t.primitiveName){const n=e[t.primitiveName];if(null!=n){if(null!=n[r])return!0}}return!1}function te(e,t){return Math.max(Math.min((e??t)/100,1),0)}function re(e){return e.type.startsWith("Private")}function ne(e){return null!=e&&oe(e)?e:void 0}function oe(e){return"setControlPoint"in e&&"getControlPoint"in e&&"setControlPointAt"in e&&"getControlPointAt"in e}export{u as adjustTextCase,l as analyzeTextParts,O as applyParentTransform,ne as asCIMGeometryCursor,s as assignTextValuesFromFeature,N as attributesToFields,o as colorToArray,n as evaluateValueOrFunction,w as fromCIMFontDecoration,P as fromCIMFontStyle,T as fromCIMHorizontalAlignment,v as fromCIMVerticalAlignment,D as getDefaultCIMValue,U as getEffectsInflateSize,d as getEnum,Y as getFieldName,L as getFillColor,S as getFontStyle,g as getFontWeight,x as getMaxStrokeWidth,b as getNumericValue,_ as getProcessParam,te as getRelativeGradientSize,X as getSize,G as getStrokeColor,A as getStrokeWidth,B as getTextCasing,c as getTextValuesFromFeatureHandle,k as getTintColor,p as getValue,ee as hasProcessParam,E as hasStrokeLayer,h as isCIMFill,m as isCIMMarker,I as isCIMMarkerStrokePlacement,C as isCIMStroke,r as isFeatureValueFn,re as isPrivateGeometricEffect,F as isSVGImage,R as isValidCIMValue,z as mapCIMSymbolToGeometryType,M as normalizeAlpha,q as normalizeDashEffectTemplate,j as normalizeDashTemplate,H as normalizePrimitiveOverrideProps,W as parseDashTemplate,f as resampleHermite,y as toCIMSymbolJSON,J as toLowerCaseProps,V as uncapitalize};
|
|
2
|
+
import{defaultCIMValues as e,defaultCIMColor as t}from"./defaultCIMValues.js";function r(e){return"function"==typeof e}function n(e,t,n,o){return r(e)?e(t,n,o):e}function o(e){return[e.r,e.g,e.b,e.a]}const a=" /-,\n";function i(e){let t=e.length;for(;t--;)if(!a.includes(e.charAt(t)))return!1;return!0}function l(e,t){const r=[];let n=0,o=-1;do{if(o=e.indexOf("[",n),o>=n){if(o>n){const t=e.slice(n,o);r.push([t,null,i(t)])}if(n=o+1,o=e.indexOf("]",n),o>=n){if(o>n){const a=t[e.slice(n,o)];a&&r.push([null,a,!1])}n=o+1}}}while(-1!==o);if(n<e.length){const t=e.slice(n);r.push([t,null,i(t)])}return r}function c(e,t,r){let n="",o=null;for(const a of t){const[t,r,i]=a;if(null!=t&&""!==t)i?o=t:(null!=o&&(n+=o,o=null),n+=t);else{const t=e.readAttribute(r);null!=t&&""!==t&&(null!==o&&(n+=o,o=null),n+=t)}}return u(n,r)}function s(e,t,r,n){let o="",a=null;for(const i of t){const[t,n,l]=i;if(null!=t&&""!==t)l?a=t:(null!=a&&(o+=a,a=null),o+=t);else{let t=n;null!=r&&(t=j(n,r));const i=e.attributes[t];null!=i&&""!==i&&(null!=a&&(o+=a,a=null),o+=i)}}return u(o,n)}function u(e,t){switch("string"!=typeof e&&(e=String(e)),t){case"LowerCase":return e.toLowerCase();case"Allcaps":return e.toUpperCase();default:return e}}function f(e,t,r,n,o,a,i=!0){const l=t/o,c=r/a,s=Math.ceil(l/2),u=Math.ceil(c/2);for(let f=0;f<a;f++)for(let r=0;r<o;r++){const M=4*(r+(i?a-f-1:f)*o);let y=0,C=0,m=0,h=0,I=0,b=0,p=0;const d=(f+.5)*c;for(let n=Math.floor(f*c);n<(f+1)*c;n++){const o=Math.abs(d-(n+.5))/u,a=(r+.5)*l,i=o*o;for(let c=Math.floor(r*l);c<(r+1)*l;c++){let r=Math.abs(a-(c+.5))/s;const o=Math.sqrt(i+r*r);o>=-1&&o<=1&&(y=2*o*o*o-3*o*o+1,y>0&&(r=4*(c+n*t),p+=y*e[r+3],m+=y,e[r+3]<255&&(y=y*e[r+3]/250),h+=y*e[r],I+=y*e[r+1],b+=y*e[r+2],C+=y))}}n[M]=h/C,n[M+1]=I/C,n[M+2]=b/C,n[M+3]=p/m}}function M(e){return e?[e[0],e[1],e[2],e[3]/255]:[0,0,0,0]}function y(e){return e.data?.symbol??null}function C(e){return"CIMVectorMarker"===e.type||"CIMPictureMarker"===e.type||"CIMBarChartMarker"===e.type||"CIMCharacterMarker"===e.type||"CIMPieChartMarker"===e.type||"CIMStackedBarChartMarker"===e.type}function m(e){return"CIMGradientStroke"===e.type||"CIMPictureStroke"===e.type||"CIMSolidStroke"===e.type}function h(e){return null!=e&&("CIMGradientFill"===e.type||"CIMHatchFill"===e.type||"CIMPictureFill"===e.type||"CIMSolidFill"===e.type||"CIMWaterFill"===e.type)}function I(e){return null!=e&&("CIMMarkerPlacementAlongLineRandomSize"===e.type||"CIMMarkerPlacementAlongLineSameSize"===e.type||"CIMMarkerPlacementAlongLineVariableSize"===e.type||"CIMMarkerPlacementAtExtremities"===e.type||"CIMMarkerPlacementAtMeasuredUnits"===e.type||"CIMMarkerPlacementAtRatioPositions"===e.type||"CIMMarkerPlacementOnLine"===e.type||"CIMMarkerPlacementOnVertices"===e.type)}const b=(e,t=0)=>null==e||isNaN(e)?t:e,p=(e,t)=>null!=e?e:t,d=(e,t)=>e??t,k=e=>e.tintColor?M(e.tintColor):[255,255,255,1];function S(e){if(!e)return"normal";switch(e.toLowerCase()){case"italic":return"italic";case"oblique":return"oblique";default:return"normal"}}function P(e){if(!e)return"normal";switch(e.toLowerCase()){case"bold":return"bold";case"bolder":return"bolder";case"lighter":return"lighter";default:return"normal"}}function g(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function w(e){if(!e)return null;switch(e.type){case"CIMPolygonSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=w(t);if(null!=e)return e}break;case"CIMTextSymbol":return w(e.symbol);case"CIMSolidFill":return e.color}return null}function L(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":{const t=e.symbolLayers;if(t)for(const e of t){const t=L(e);if(null!=t)return t}break}case"CIMTextSymbol":return L(e.symbol);case"CIMSolidStroke":return e.color}}function G(e){for(const t of e)if(t.enable)switch(t.type){case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return!0}return!1}function E(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=E(t);if(void 0!==e)return e}break;case"CIMTextSymbol":return E(e.symbol);case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return e.width}}function A(t){let r=0;for(const n of t??[])!1!==n.enable&&m(n)&&(r=Math.max(r,b(n.width,e[n.type].width)));return r}function x(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return"justify"}}function v(e){switch(e){default:case"Bottom":return"bottom";case"Top":return"top";case"Center":return"middle";case"Baseline":return"baseline"}}function T(e){return(e?Object.keys(e):[]).map(t=>({name:t,alias:t,type:"string"==typeof e[t]?"esriFieldTypeString":"esriFieldTypeDouble"}))}const N=e=>e.includes("data:image/svg+xml");function F(e){if(!e)return null;switch(e.type){case"CIMPointSymbol":case"CIMTextSymbol":return"esriGeometryPoint";case"CIMLineSymbol":return"esriGeometryPolyline";case"CIMPolygonSymbol":return"esriGeometryPolygon";default:return null}}function z(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}function V(e,t,r,n,o,a,i=!0){const{infos:l}=a;let c=1,s=0,u=0,f=0,M=1;for(const{absoluteAnchorPoint:m,offsetX:h,offsetY:I,rotation:b,size:p,frameHeight:d,rotateClockWise:k,scaleSymbolsProportionally:S}of l){M=m?1:c;u=J(h,I,s,M,u),f=H(h,I,s,M,f),d&&(S||i)&&(c*=p/d),s=U(b,k,s)}const y=J(n,o,s,M,u),C=H(n,o,s,M,f);return{size:e*c,rotation:U(t,r,s),offsetX:y,offsetY:C}}function O(e){if(null==e)return!1;if(Array.isArray(e))return e.every(e=>O(e));switch(typeof e){case"string":return!!e;case"number":return!isNaN(e)}}function R(r,n){if("color"===n||"outlinecolor"===n||"backgroundcolor"===n||"borderlinecolor"===n||"tintcolor"===n)return[...t[n]];const o=e[r];if(!o)throw new Error(`InternalError: default value for type ${r}.`);return o[n]}function D(e){if(null==e)return"Normal";switch(e.type){case"CIMTextSymbol":return e.textCase??"Normal";case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const t=e.symbolLayers;if(!t)return"Normal";for(const e of t)if("CIMVectorMarker"===e.type)return D(e)}break;case"CIMVectorMarker":{const t=e.markerGraphics;if(!t)return"Normal";for(const e of t)if(e.symbol)return D(e.symbol)}}return"Normal"}function W(t){if(t)switch(t.type){case"CIMTextSymbol":return t.height;case"CIMPointSymbol":{let r=0;if(t.symbolLayers)for(const n of t.symbolLayers)if(n)switch(n.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const t=n.size??e.CIMVectorMarker.size;t>r&&(r=t);break}}return r}case"CIMLineSymbol":case"CIMPolygonSymbol":{let r=0;if(t.symbolLayers)for(const n of t.symbolLayers)if(n)switch(n.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=n.width;null!=e&&e>r&&(r=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(n.markerPlacement&&I(n.markerPlacement)){const t=n.size??e.CIMVectorMarker.size;t>r&&(r=t)}break;case"CIMPictureFill":{const e=n.height;null!=e&&e>r&&(r=e)}}return r}}}function j(e,t){if(null!==t){const r=t.get(e);return r?r.name:e}return e}function B(e){return e.map(e=>({...e,propertyName:z(e.propertyName)}))}function q(e){const t={};for(const r in e){const n=e[r];t[z(r)]=n}return t}function X(e){if(!e)return 0;let t=0;for(const r of e)t+=Y(r);return t}function Y(e){if(!e)return 0;if(Z(e))return e.inflateSize??256;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectCircularSector":return Math.abs(e.radius??25);case"CIMGeometricEffectControlMeasureLine":return 500;case"CIMGeometricEffectExtension":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(b(e.offsetX)),Math.abs(b(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRadial":return Math.abs(e.length??5);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude);case"CIMGeometricEffectDonut":return Math.abs(e.width)}}function H(e,t,r,n,o){const a=r*Math.PI/180;if(a){const r=Math.cos(a);return(Math.sin(a)*e+r*t)*n+o}return t*n+o}function J(e,t,r,n,o){const a=r*Math.PI/180;if(a){return(Math.cos(a)*e-Math.sin(a)*t)*n+o}return e*n+o}function U(e,t,r){return t?r-e:r+e}function $(e,t,r){const n="Color"===r||"TintColor"===r||"ToColor"===r,o="Rotation"===r||"Angle"===r||"ToRotation"===r;let a=t[z(r)];if(null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]/255]:o&&(a*=Math.PI/180)),null==a&&(a=R(t.type,r.toLowerCase()),null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]]:o&&(a*=Math.PI/180))),null!=t.primitiveName){const i=e[t.primitiveName];if(null!=i){const e=i[r];null==e||("string"==typeof e||"number"==typeof e||Array.isArray(e)?(a=e,null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]/255]:o&&(a*=Math.PI/180))):(a={valueExpressionInfo:e,defaultValue:a},null!=a&&(n?a={type:"Process",op:"ArcadeColor",value:a}:o&&(a={type:"Process",op:"Divide",left:a,right:180/Math.PI}))))}}if(null==a)throw new Error(`Failed to derive a value or an expression for "${r}".`);return a}function K(e,t,r){if(null!=t[z(r)])return!0;if(null!=t.primitiveName){const n=e[t.primitiveName];if(null!=n){if(null!=n[r])return!0}}return!1}function Q(e,t){return Math.max(Math.min((e??t)/100,1),0)}function Z(e){return e.type.startsWith("Private")}function _(e){return null!=e&&ee(e)?e:void 0}function ee(e){return"setControlPoint"in e&&"getControlPoint"in e&&"setControlPointAt"in e&&"getControlPointAt"in e}export{u as adjustTextCase,l as analyzeTextParts,V as applyParentTransform,_ as asCIMGeometryCursor,s as assignTextValuesFromFeature,T as attributesToFields,o as colorToArray,n as evaluateValueOrFunction,g as fromCIMFontDecoration,x as fromCIMHorizontalAlignment,v as fromCIMVerticalAlignment,R as getDefaultCIMValue,X as getEffectsInflateSize,d as getEnum,j as getFieldName,w as getFillColor,S as getFontStyle,P as getFontWeight,A as getMaxStrokeWidth,b as getNumericValue,$ as getProcessParam,Q as getRelativeGradientSize,W as getSize,L as getStrokeColor,E as getStrokeWidth,D as getTextCasing,c as getTextValuesFromFeatureHandle,k as getTintColor,p as getValue,K as hasProcessParam,G as hasStrokeLayer,h as isCIMFill,C as isCIMMarker,I as isCIMMarkerStrokePlacement,m as isCIMStroke,r as isFeatureValueFn,Z as isPrivateGeometricEffect,N as isSVGImage,O as isValidCIMValue,F as mapCIMSymbolToGeometryType,M as normalizeAlpha,B as normalizePrimitiveOverrideProps,f as resampleHermite,y as toCIMSymbolJSON,q as toLowerCaseProps,z as uncapitalize};
|
|
@@ -2,12 +2,18 @@ import type { ClonableMixin } from "../../core/Clonable.js";
|
|
|
2
2
|
import type { JSONSupport } from "../../core/JSONSupport.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* LinePattern3D is the base class for patterns on [LineSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/LineSymbol3DLayer/)
|
|
6
|
-
* outlines on [FillSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/FillSymbol3DLayer/).
|
|
5
|
+
* LinePattern3D is the base class for patterns on [LineSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/LineSymbol3DLayer/)
|
|
6
|
+
* and outlines on [FillSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/FillSymbol3DLayer/).
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* There are two types of patterns called style and template. [LineStylePattern3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/patterns/LineStylePattern3D/) is supported on
|
|
9
|
+
* [LineSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/LineSymbol3DLayer/) and [FillSymbol3DLayer.outline](https://developers.arcgis.com/javascript/latest/references/core/symbols/FillSymbol3DLayer/#outline).
|
|
10
|
+
* [LineTemplatePattern3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/patterns/LineTemplatePattern3D/) applies only to
|
|
11
|
+
* [LineSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/LineSymbol3DLayer/).
|
|
9
12
|
*
|
|
10
13
|
* @since 4.22
|
|
11
14
|
*/
|
|
12
|
-
export default abstract class LinePattern3D extends LinePattern3DSuperclass {
|
|
15
|
+
export default abstract class LinePattern3D extends LinePattern3DSuperclass {
|
|
16
|
+
/** The LinePattern3D type. */
|
|
17
|
+
get type(): "style" | "template";
|
|
18
|
+
}
|
|
13
19
|
declare const LinePattern3DSuperclass: typeof JSONSupport & typeof ClonableMixin
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as r}from"tslib";import{ClonableMixin as
|
|
2
|
+
import{__decorate as r}from"tslib";import{ClonableMixin as e}from"../../core/Clonable.js";import{JSONSupport as o}from"../../core/JSONSupport.js";import{property as t,subclass as s}from"../../core/accessorSupport/decorators.js";let p=class extends(e(o)){constructor(r){super(r)}};r([t({type:["style","template","image"],readOnly:!0,json:{read:!0,write:{ignoreOrigin:!0}}})],p.prototype,"type",void 0),p=r([s("esri.symbols.patterns.LinePattern3D")],p);export{p as default};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type LinePattern3D from "./LinePattern3D.js";
|
|
2
|
+
|
|
3
|
+
/** @since 5.2 */
|
|
4
|
+
export interface LineTemplatePattern3DProperties extends Partial<Pick<LineTemplatePattern3D, "dashTemplate">> {}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Renders lines using a custom repeating sequence of dashes and gaps.
|
|
8
|
+
*
|
|
9
|
+
* @since 5.2
|
|
10
|
+
* @see [LineSymbol3DLayer](https://developers.arcgis.com/javascript/latest/references/core/symbols/LineSymbol3DLayer/)
|
|
11
|
+
* @example
|
|
12
|
+
* ```js
|
|
13
|
+
* const symbol = {
|
|
14
|
+
* type: "line-3d", // autocasts as new LineSymbol3D()
|
|
15
|
+
* symbolLayers: [{
|
|
16
|
+
* type: "line", // autocasts as new LineSymbol3DLayer()
|
|
17
|
+
* size: 4,
|
|
18
|
+
* material: { color: "red" },
|
|
19
|
+
* pattern: {
|
|
20
|
+
* type: "template", // autocasts as new LineTemplatePattern3D()
|
|
21
|
+
* dashTemplate: [10, 6, 2, 6] // lengths relative to the line width
|
|
22
|
+
* }
|
|
23
|
+
* }]
|
|
24
|
+
* };
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export default class LineTemplatePattern3D extends LinePattern3D {
|
|
28
|
+
constructor(properties?: LineTemplatePattern3DProperties);
|
|
29
|
+
/**
|
|
30
|
+
* The custom dash and gap lengths.
|
|
31
|
+
*
|
|
32
|
+
* Values alternate between visible dash lengths and transparent gap lengths, starting with a dash.
|
|
33
|
+
* Each value is a multiple of the [line width](https://developers.arcgis.com/javascript/latest/references/core/symbols/LineSymbol3DLayer/#size). For instance, a value of `1` equals one
|
|
34
|
+
* line width.
|
|
35
|
+
*
|
|
36
|
+
* In case an odd number of values is provided, the sequence is repeated to form a complete dash-gap cycle.
|
|
37
|
+
* Decimals are supported and negative values are converted to their absolute values.
|
|
38
|
+
*
|
|
39
|
+
* @since 5.2
|
|
40
|
+
*/
|
|
41
|
+
accessor dashTemplate: number[];
|
|
42
|
+
/**
|
|
43
|
+
* The pattern type.
|
|
44
|
+
*
|
|
45
|
+
* @since 5.2
|
|
46
|
+
*/
|
|
47
|
+
get type(): "template";
|
|
48
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import{__decorate as e}from"tslib";import{property as t,subclass as s}from"../../core/accessorSupport/decorators.js";import{normalizeDashPatternTemplate as a}from"../cim/dashUtils.js";import o from"./LinePattern3D.js";let p=class extends o{constructor(e){super(e),this.type="template",this.dashTemplate=[]}get normalizedDashTemplate(){const{dashTemplate:e,hidesLine:t}=a(this.dashTemplate);return{dashTemplate:e.map(e=>Math.abs(e)),hidesLine:t}}};e([t({type:["template"]})],p.prototype,"type",void 0),e([t({type:[Number],nonNullable:!0})],p.prototype,"dashTemplate",void 0),e([t()],p.prototype,"normalizedDashTemplate",null),p=e([s("esri.symbols.patterns.LineTemplatePattern3D")],p);const r=p;export{r as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import
|
|
2
|
+
import e from"./LinePattern3D.js";import t from"./LineStylePattern3D.js";import p from"./LineTemplatePattern3D.js";import r from"./Pattern3D.js";import y from"./StylePattern3D.js";const s={key:"type",base:e,typeMap:{style:t}},o={types:{key:"type",base:r,typeMap:{style:y}},json:{write:!0}},a={types:{key:"type",base:e,typeMap:{style:t,template:p}},json:{types:s,write:{overridePolicy:e=>({enabled:"template"!==e?.type})}}},i={types:s,json:{write:!0}};export{a as symbol3dLinePatternProperty,i as symbol3dOutlineLinePatternProperty,o as symbol3dPatternProperty};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as t}from"tslib";import r from"../../Color.js";import{JSONSupport as o}from"../../core/JSONSupport.js";import{px2pt as e}from"../../core/screenUtils.js";import{property as s,subclass as i}from"../../core/accessorSupport/decorators.js";import{
|
|
2
|
+
import{__decorate as t}from"tslib";import r from"../../Color.js";import{JSONSupport as o}from"../../core/JSONSupport.js";import{px2pt as e}from"../../core/screenUtils.js";import{property as s,subclass as i}from"../../core/accessorSupport/decorators.js";import{symbol3dOutlineLinePatternProperty as l}from"../patterns/utils.js";import{colorAndTransparencyProperty as p,screenSizeProperty as n}from"./materialUtils.js";import{lineCaps as a}from"./symbolLayerUtils3D.js";var u;let c=u=class extends o{constructor(t){super(t),this.color=new r([0,0,0,1]),this.pattern=null,this.patternCap="butt"}get size(){return this._get("size")??e(1)}set size(t){this._set("size",t)}clone(){const t={color:null!=this.color?this.color.clone():null,size:this.size,pattern:null!=this.pattern?this.pattern.clone():null,patternCap:this.patternCap};return new u(t)}};t([s(p({colorRequiredOnWrite:!0}))],c.prototype,"color",void 0),t([s({...n,json:{write:{isRequired:!0}}})],c.prototype,"size",null),t([s(l)],c.prototype,"pattern",void 0),t([s({type:a,json:{default:"butt",write:{overridePolicy(){return{enabled:null!=this.pattern}}}}})],c.prototype,"patternCap",void 0),c=u=t([i("esri.symbols.support.Symbol3DOutline")],c);const m=c;export{m as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import t from"../../../../core/Error.js";import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{estimateNumberArrayMemory as i}from"../../../../core/memoryEstimations.js";import{signal as s}from"../../../../core/signal.js";import{dataDrivenUnit2 as r,dataDrivenUnit1 as n,dataDrivenUnit0 as a,visualVariableUnit as u,localTimeOriginUnit as h,gpgpuUnit as o,animationUnit as d,filterFlagsUnit as l}from"./definitions.js";import{getDisplayIdTexel as
|
|
2
|
+
import t from"../../../../core/Error.js";import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{estimateNumberArrayMemory as i}from"../../../../core/memoryEstimations.js";import{signal as s}from"../../../../core/signal.js";import{dataDrivenUnit2 as r,dataDrivenUnit1 as n,dataDrivenUnit0 as a,visualVariableUnit as u,localTimeOriginUnit as h,gpgpuUnit as o,animationUnit as d,filterFlagsUnit as l}from"./definitions.js";import{getDisplayIdTexel as _}from"./DisplayId.js";import{SizedPixelFormat as g,PixelType as p}from"../../../webgl/enums.js";import{DisposableFramebufferObject as c}from"../../../webgl/FramebufferObject.js";import x from"../../../webgl/Texture.js";import{TextureDescriptor as f}from"../../../webgl/TextureDescriptor.js";const b=()=>e.getLogger("esri.views.2d.engine.webgl.AttributeStoreView"),T=e=>{switch(e){case p.UNSIGNED_BYTE:return 1;case p.UNSIGNED_SHORT_4_4_4_4:return 2;case p.FLOAT:return 4;default:return void b().error(new t("webgl-utils",`Unable to handle type ${e}`))}},m=e=>{switch(e){case p.UNSIGNED_BYTE:return Uint8Array;case p.UNSIGNED_SHORT_4_4_4_4:return Uint16Array;case p.FLOAT:return Float32Array;default:return void b().error(new t("webgl-utils",`Unable to handle type ${e}`))}};class y{constructor(t,e,i){this._texture=null,this._lastTexture=null,this._fbos={},this.texelSize=4;const{buffer:s,pixelType:r,textureOnly:n}=t,a=m(r);this.blockIndex=i,this.pixelType=r,this.size=e,this.textureOnly=n,n||(this.data=new a(s)),this._resetRange()}destroy(){this._texture?.dispose();for(const t in this._fbos){const e=this._fbos[t];e&&("0"===t&&e.detachColorTexture(),e.dispose()),this._fbos[t]=null}this._texture=null}get _textureDesc(){const t=new f(this.size);if(t.wrapMode=33071,t.samplingMode=9728,t.dataType=this.pixelType,2===this.blockIndex)t.pixelFormat=6403,t.internalFormat=g.R8;return t}get usedMemory(){return null!=this.data?i(this.data):0}setData(t,e,i){const s=_(t),r=this.data,n=s*this.texelSize+e;!r||n>=r.length||(r[n]=i,this.dirtyStart=Math.min(this.dirtyStart,s),this.dirtyEnd=Math.max(this.dirtyEnd,s))}getData(t,e){if(null==this.data)return null;const i=_(t)*this.texelSize+e;return!this.data||i>=this.data.length?null:this.data[i]}getTexture(t){return this._texture??this._initTexture(t)}getFBO(t,e=0){if(!this._fbos[e]){const i=0===e?this.getTexture(t):this._textureDesc;this._fbos[e]=new c(t,i)}return this._fbos[e]}get hasDirty(){const t=this.dirtyStart;return this.dirtyEnd>=t}updateTexture(e,i){try{const s=this.dirtyStart,r=this.dirtyEnd;if(!this.hasDirty)return;has("esri-2d-update-debug")&&console.debug(`Version[${i}] AttributeStoreView.updateTexture`,{start:s,end:r,firstBytes:new Uint8Array(this.data.buffer.slice(0,16)),block:this}),this._resetRange();const n=this.data.buffer,a=this.getTexture(e),u=4,h=(s-s%this.size)/this.size,o=(r-r%this.size)/this.size,d=h,l=this.size,_=o,g=h*this.size*u,p=(l+_*this.size)*u-g,c=m(this.pixelType),x=new c(n,g*c.BYTES_PER_ELEMENT,p),f=this.size,T=_-d+1;if(T>this.size)return void b().error(new t("mapview-webgl","Out-of-bounds index when updating AttributeData"));a.updateData(0,0,d,f,T,x)}catch(s){}}update(t){const{data:e,start:i,end:s}=t;if(null!=e&&null!=this.data){const s=this.data,r=i*this.texelSize;for(let i=0;i<e.length;i++){const n=1<<i%this.texelSize;t.layout&n&&(s[r+i]=e[i])}}this.dirtyStart=Math.min(this.dirtyStart,i),this.dirtyEnd=Math.max(this.dirtyEnd,s)}resize(t,e){const i=this.size;if(this.size=e,this.textureOnly)return void(i!==this.size&&(this._lastTexture=this._texture,this._texture=null));const s=m(this.pixelType);this.destroy(),this.data=new s(t.buffer)}_resetRange(){this.dirtyStart=2147483647,this.dirtyEnd=0}_initTexture(t){const e=new x(t,this._textureDesc,this.data??void 0);if(null!=this._lastTexture&&this._fbos[0]){const i=this._lastTexture.descriptor.width,s=this._lastTexture.descriptor.height,r=this._lastTexture.descriptor.dataType,n=this._lastTexture.descriptor.pixelFormat,a=this.getFBO(t),u=T(r),h=new(m(r))(new ArrayBuffer(i*s*u*this.texelSize)),o=t.boundFramebuffer,{x:d,y:l,width:_,height:g}=t.getViewport();t.bindFramebuffer(a),a.readPixels(0,0,i,s,n,r,h),e.updateData(0,0,0,2*i,s/2,h),t.setViewport(d,l,_,g),t.bindFramebuffer(o)}return this.destroy(),this._texture=e,this._texture}}class w{constructor(){this.size=0,this._pendingAttributeUpdates=[],this._version=0,this._epoch=0,this._hasPendingUpdate=s(!1),this._locked=!1}get updating(){return this._hasPendingUpdate.value}get locked(){return this._locked}get usedMemory(){let t=0;for(const e of this._data??[])null!=e&&(t+=e.usedMemory);return t}_initialize(t){if(!t)throw new Error("InternalError: initArgs must be defined");const e=t.blockDescriptors;if(this.size=t.blockSize,has("esri-2d-update-debug")&&console.debug("AttributeStoreView.initialize",{message:t}),null==this._data)this._data=e.map((t,e)=>null!=t?new y(t,this.size,e):null);else for(let i=0;i<this._data.length;i++){const t=this._data[i],s=e[i];null!=s&&(null==t?this._data[i]=new y(s,this.size,i):t.resize(s,this.size))}}destroy(){for(const t of this._data??[])t?.destroy();this._defaultTexture?.dispose(),this._defaultTexture=null,this._pendingAttributeUpdates=[]}isEmpty(){return null==this._data}getBlock(t){if(null==this._data)return null;return this._data[t]}setLabelMinZoom(t,e){this.setData(t,0,1,e)}setLocalTimeOrigin(t,e){this.setData(t,7,0,e)}getLabelMinZoom(t){return this.getData(t,0,1,255)}getFilterFlags(t){return this.getData(t,0,0,0)}getVisualVariableData(t,e){return this.getData(t,3,e,0)}getData(t,e,i,s){if(!this._data)return 0;const r=this._data[e];if(null==r)return 0;const n=r.getData(t,i);return null!=n?n:s}setData(t,e,i,s){this._data[e].setData(t,i,s)}lockTextureUploads(){this._locked=!0}unlockTextureUploads(){return this._locked=!1,this.update()}requestUpdate(t){this._version=t.version,this._pendingAttributeUpdates.push(t),this._hasPendingUpdate.value=!0,has("esri-2d-update-debug")&&console.debug(`Version[${this._version}] AttributeStoreView.requestUpdate`,{message:t})}get currentEpoch(){return this._epoch}get hasPendingUpdates(){return this._pendingAttributeUpdates.length>0}update(){if(this._locked)return!1;const t=this._pendingAttributeUpdates;this._pendingAttributeUpdates=[];const e=!!t.length;for(const i of t){const{blockData:t,initArgs:e,sendUpdateEpoch:s,version:r}=i;has("esri-2d-update-debug")&&console.debug(`Version[${this._version}] Epoch[${s}] AttributeStoreView.applyUpdate`),this._version=r,this._epoch=s,null!=e&&this._initialize(e);const n=this._data;for(let i=0;i<t.length;i++){const e=t[i],s=n[i];null!=s&&null!=e&&(has("esri-2d-update-debug")&&console.debug(`Version[${this._version}] CpuBlock[${i}] AttributeStoreView.update`,{block:e}),s.update(e))}}return this._hasPendingUpdate.value=!1,e}getUniforms(){return{size:this.size}}getTextures(t){return{filterFlags:{texture:this._getTexture(t,0),unit:l},animation:{texture:this._getTexture(t,1),unit:d},gpgpu:{texture:this._getTexture(t,2),unit:o},localTimeOrigin:{texture:this._getTexture(t,7),unit:h},visualVariableData:{texture:this._getTexture(t,3),unit:u},dataDriven0:{texture:this._getTexture(t,4),unit:a},dataDriven1:{texture:this._getTexture(t,5),unit:n},dataDriven2:{texture:this._getTexture(t,6),unit:r}}}_getTexture(t,e){const i=this._data?.[e];return i?(i.updateTexture(t,this._version),i.getTexture(t)):this._getDefaultTexture(t)}_getDefaultTexture(t){if(null==this._defaultTexture){const e=new f(1);e.wrapMode=33071,e.samplingMode=9728,this._defaultTexture=new x(t,e,new Uint8Array(4))}return this._defaultTexture}}export{w as AttributeStoreView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import"../../../../core/has.js";import{estimateNumberMemory as t}from"../../../../core/memoryEstimations.js";import{List as e}from"./cpuMapped/FreeList.js";import{isHittest as n}from"./shaderGraph/techniques/featureTechniqueUtils.js";import{PrimitiveType as i,DataType as s}from"../../../webgl/enums.js";function a(t,e){return t<<16|255&e}function r(t){return 255&t}function d(t,e){return e?e.get(t.instanceId)??t.techniqueRef.symbologyPlane:t.techniqueRef.symbologyPlane}class h{constructor(t,e,n,i,s){this.instance=t,this.materialKey=e,this.target=n,this.start=i,this.count=s}get textureKey(){return r(this.materialKey)}get indexEnd(){return this.start+this.count}extend(t){this.count+=t}render(t){const e=this.instance.techniqueRef;this.target.bind(t.context),e.render(t,this)}getStencilReference(){return this.target.stencilRef}getAttributePrecisionPackFactors(){const t=this.instance.instanceId;return this.target.getMesh(t).getAttributePrecisionPackFactors()}draw(t,e){n(t)?this.drawCompute(t.context,e):this.drawGeometry(t.context,e)}drawCompute(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getComputeVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT/3;t.bindVAO(a,e.locations),t.drawElements(i.POINTS,this.count/3,s.UNSIGNED_INT,r),t.bindVAO(null)}drawGeometry(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getGeometryVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT;t.bindVAO(a,e.locations),t.drawElements(i.TRIANGLES,this.count,s.UNSIGNED_INT,r),t.bindVAO(null)}}class o{constructor(){this._length=0,this._minOrderedLength=0,this._materialKeys=new Set}static fromDisplayEntities(t,e,n,i){const s=new o,r=n.getInstanceOrder();for(const d of t.values())for(const t of d.records){const d=n.getInstance(t.instanceId),h=a(d.instanceId,t.textureKey);s.addRecord(d,h,t.indexStart,t.indexCount,t.vertexStart,t.vertexCount,e,i,r)}return s}get length(){return this._length}get minOrderedLength(){return this._minOrderedLength}get minUnorderedLength(){return this._materialKeys.size}get usedMemory(){return this._length?5*this._length*t:0}render(t,e){const{drawPhase:n}=t;for(const
|
|
2
|
+
import"../../../../core/has.js";import{estimateNumberMemory as t}from"../../../../core/memoryEstimations.js";import{List as e}from"./cpuMapped/FreeList.js";import{isHittest as n}from"./shaderGraph/techniques/featureTechniqueUtils.js";import{PrimitiveType as i,DataType as s}from"../../../webgl/enums.js";function a(t,e){return t<<16|255&e}function r(t){return 255&t}function d(t,e){return e?e.get(t.instanceId)??t.techniqueRef.symbologyPlane:t.techniqueRef.symbologyPlane}class h{constructor(t,e,n,i,s){this.instance=t,this.materialKey=e,this.target=n,this.start=i,this.count=s}get textureKey(){return r(this.materialKey)}get indexEnd(){return this.start+this.count}extend(t){this.count+=t}render(t){const e=this.instance.techniqueRef;this.target.bind(t.context),e.render(t,this)}getStencilReference(){return this.target.stencilRef}getAttributePrecisionPackFactors(){const t=this.instance.instanceId;return this.target.getMesh(t).getAttributePrecisionPackFactors()}draw(t,e){n(t)?this.drawCompute(t.context,e):this.drawGeometry(t.context,e)}drawCompute(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getComputeVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT/3;t.bindVAO(a,e.locations),t.drawElements(i.POINTS,this.count/3,s.UNSIGNED_INT,r),t.bindVAO(null)}drawGeometry(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getGeometryVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT;t.bindVAO(a,e.locations),t.drawElements(i.TRIANGLES,this.count,s.UNSIGNED_INT,r),t.bindVAO(null)}}class o{constructor(){this._length=0,this._minOrderedLength=0,this._materialKeys=new Set}static fromDisplayEntities(t,e,n,i){const s=new o,r=n.getInstanceOrder();for(const d of t.values())for(const t of d.records){const d=n.getInstance(t.instanceId),h=a(d.instanceId,t.textureKey);s.addRecord(d,h,t.indexStart,t.indexCount,t.vertexStart,t.vertexCount,e,i,r)}return s}get length(){return this._length}get minOrderedLength(){return this._minOrderedLength}get minUnorderedLength(){return this._materialKeys.size}get usedMemory(){return this._length?5*this._length*t:0}render(t,e){const{drawPhase:n}=t;let i=!1;for(const s of this.infos()){const a=s.instance.techniqueRef;a.drawPhase&n&&(null==e||a.type===e)&&(s.render(t),i=!0)}return i}addRecord(t,n,i,s,a,r,o,l,c){let u=i,_=s;if(_||(u=a,_=r),!_)return;if(null==this._head){const i=new h(t,n,o,u,_);return this._head=new e(i),this._tail=this._head,this._length++,void this._minOrderedLength++}if(1===l)return this._insert(t,n,o,u,_,this._tail,null);let g=null,m=this._head;const f=t.instanceId,y=d(t,c);if(2===l&&(2===y||3===y))return this._insert(t,n,o,u,_,this._tail,null);for(;m;){const e=m.data.instance,i=e.instanceId,s=d(e,c),a=g?.data.instance.instanceId;if(y<s||f===a&&f!==i)return this._insert(t,n,o,u,_,g,m);g=m,m=m.next}this._insert(t,n,o,u,_,g,null)}*infos(){if(null!=this._head)for(const t of this._head.values())yield t}_insert(t,n,i,s,a,r,d){if(null==r&&null==d){const r=new h(t,n,i,s,a);return this._head=new e(r),this._tail=this._head,this._length++,void this._minOrderedLength++}return n!==this._tail.data.materialKey&&this._minOrderedLength++,this._materialKeys.add(n),null==r&&null!=d?this._insertAtHead(t,n,i,s,a,d):null!=r&&null==d?this._insertAtEnd(t,n,i,s,a,r):null!=r&&null!=d?this._insertAtMiddle(t,n,i,s,a,r,d):void 0}_insertAtHead(t,n,i,s,a,r){const d=s+a;if(n===r.data.materialKey&&i===r.data.target&&d===r.data.start)r.data.start=s,r.data.count+=a;else{const d=new h(t,n,i,s,a);this._head=new e(d),this._head.next=r,this._length++}}_insertAtEnd(t,n,i,s,a,r){if(r.data.materialKey===n&&r.data.indexEnd===s)r.data.count+=a;else{const d=new h(t,n,i,s,a);this._tail=new e(d),r.next=this._tail,this._length++}}_insertAtMiddle(t,n,i,s,a,r,d){const o=s+a;if(r.data.materialKey===n&&r.data.target===i&&r.data.indexEnd===s)r.data.count+=a,r.data.materialKey===d.data.materialKey&&r.data.target===d.data.target&&r.data.indexEnd===d.data.start&&(r.data.count+=d.data.count,r.next=d.next,this._length--);else if(n===d.data.materialKey&&i===d.data.target&&o===d.data.start)d.data.start=s,d.data.count+=a;else{const o=new h(t,n,i,s,a),l=new e(o);r.next=l,l.next=d,this._length++}}}export{o as DisplayList,h as DisplayListInfo};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import has from"../../../../core/has.js";import{open as t}from"../../../../core/workers.js";import{
|
|
2
|
+
import has from"../../../../core/has.js";import{open as t}from"../../../../core/workers.js";import{decorGlyphRect as e}from"./decorGlyphRect.js";import{sdfBufferServer as i}from"./definitions.js";import s from"./Rect.js";import r from"../../../webgl/Texture.js";import{TextureDescriptor as h}from"../../../webgl/TextureDescriptor.js";const o=new s(0,0,11,8),n=new s(11,0,11,8);class a{constructor(t,e,i,s){this._snapCoords=i,this._setTextureBinding=s,this.width=0,this.height=0,this._dirties=[],this._pageData=[],this._currentPage=0,this._textures=[],this._worker=this._load(),this.width=t,this.height=e,this._pageData.push(new Uint8Array(t*e)),this._dirties.push(!0),this._textures.push(null),this._initDecorationGlyphs()}dispose(){for(const t of this._textures)t&&t.dispose();this._textures.length=0,this._pageData.length=0,this._worker.then(t=>t.connection.close())}async openMessagePorts(){return(await this._worker).connection.openPorts()}async rasterizeText(t,e,i){return(await this._worker).worker.rasterizeText(t,e,i)}getTexture(t,e){if(!this._textures[e]){const i=new h(this.width,this.height);i.pixelFormat=6406,i.wrapMode=33071,this._textures[e]=new r(t,i,new Uint8Array(this.width*this.height))}return this._dirties[e]&&(this._textures[e].setData(this._pageData[e]),this._dirties[e]=!1),this._textures[e]}bind(t,e,i,s){const r=this.getTexture(t,i);r.setSamplingMode(e),t.bindTexture(r,s)}async _load(){const e={getOptions:()=>({width:this.width,height:this.height,snapCoords:!!this._snapCoords}),recordGlyphs:t=>{const e=i;for(const i of t)i.sdf&&this.recordGlyph(i.mosaicItem,i.rect,i.sdf.buffer,e),this._setTextureBinding&&0!==i.mosaicItem.textureBinding&&this._setTextureBinding(i.mosaicItem)}},s=await t("GlyphWorker",{client:e,strategy:"dedicated"});return{worker:s.createInvokeProxy(),connection:s}}_invalidate(){this._dirties[this._currentPage]=!0}recordGlyph(t,e,i,s){const{page:r,rect:h}=t;if(0===e.width)return;const o=e.width+2*s,n=e.height+2*s;this._pageData[r]||this._allocNewPage(r);const a=this._pageData[r];for(let c=0;c<n;c++){const t=o*c,e=this.width*(h.y+c)+h.x;for(let s=0;s<o;s++)a[e+s]=i[t+s]}has("esri-glyph-debug")&&this._showDebugPage(a),this._invalidate()}_allocNewPage(t){this._dirties[this._currentPage]||(this._pageData[this._currentPage]=null),this._currentPage=t,this._pageData[t]=new Uint8Array(this.width*this.height),this._dirties[t]=!0,this._textures[t]=null,this._initDecorationGlyphs()}_initDecorationGlyphs(){const t=[117,149,181,207,207,181,149,117],s=[],r=[];for(let e=0;e<t.length;e++){const i=t[e];for(let t=0;t<11;t++){const h=e>=3&&e<5&&t>=3&&t<8?255:0;s.push(i),r.push(h)}}const h=new Uint8Array(s),a={rect:o,page:this._currentPage,sdf:!0},c=new Uint8Array(r),d={rect:n,page:this._currentPage,sdf:!0};this.recordGlyph(a,e,h,i),this.recordGlyph(d,e,c,i)}_showDebugPage(t){const e=document.createElement("canvas"),i=e.getContext("2d"),s=new ImageData(this.width,this.height),r=s.data;e.width=this.width,e.height=this.height,e.style.border="1px solid black";for(let h=0;h<t.length;++h)r[4*h]=t[h],r[4*h+1]=0,r[4*h+2]=0,r[4*h+3]=255;i.putImageData(s,0,0),document.body.appendChild(e)}}export{a as GlyphMosaic};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import t from"../../../../request.js";import{bidiText as e}from"../../../../core/BidiText.js";import{getFullyQualifiedFontName as s}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import i from"../../../../core/Logger.js";import{throwIfNotAbortError as a}from"../../../../core/promiseUtils.js";import{loadTextModule as r}from"../../../../libs/librust-text/loadTextModule.js";import{parseRichTextRuns as h}from"../../../../symbols/cim/richTextUtils.js";import{
|
|
2
|
+
import t from"../../../../request.js";import{bidiText as e}from"../../../../core/BidiText.js";import{getFullyQualifiedFontName as s}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import i from"../../../../core/Logger.js";import{throwIfNotAbortError as a}from"../../../../core/promiseUtils.js";import{loadTextModule as r}from"../../../../libs/librust-text/loadTextModule.js";import{parseRichTextRuns as h}from"../../../../symbols/cim/richTextUtils.js";import{decorGlyphRect as n}from"./decorGlyphRect.js";import{sdfRadiusComplex as o,sdfBufferGlyphSDFCreator as c,sdfSizeComplex as p,sdfBufferServer as l,sdfRadiusSimple as f,sdfSizeSimple as g}from"./definitions.js";import{GlyphSDFCreator as d}from"./GlyphSDFCreator.js";import _ from"./GlyphSource.js";import{hashMosaic as y}from"./hashMosaic.js";import u from"./Rect.js";import m from"./RectangleBinPack.js";const w=.25,S="arial-unicode-ms-regular",C=/[\u0695\u0698\u06a9\u06af\u06b5\u06be\u06c6\u06cc\u06ce\u06d5\u06ca]|\p{Script=Thai}|\p{Script=Lao}|\p{Script=Tamil}|\p{Script=Khmer}/u,G=new Set(["Noto Sans Khmer","Noto Sans Lao","Noto Sans Myanmar","Noto Sans Thai"]),P=()=>i.getLogger("esri.views.MapView"),b=(t,e="")=>P().warnOnce(t,e);class R{constructor(){this._glyphSources=new Map,this._snapCoords=!0,this._currentPage=0,this._faces=new Map,this._facePromises=new Map,this._pbfRangePromises=new Map,this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._invalidFonts=new Set,this._preloadCache={},this._glyphSDFCreator=new d({sdfSizePx:p,sdfBufferPx:c,radius:o,cutoff:w})}set remoteClient(t){this._client=t.createInvokeProxy();const e=this._client.getOptions();this._inited=this._init(e)}async rasterizeText(t,e,s){await this._inited;const i=e.symbol?h(e):null;if(i){return{type:"rich-glyphs",runs:(await Promise.all(i.map(async e=>({fontSize:e.fontSize,characterSpacing:e.characterSpacing,decoration:e.font.decoration,color:e.color,glyphs:await this._rasterizeTextRun(t,e.font,e.text,s)})))).filter(t=>null!=t.glyphs)}}return this._rasterizeTextRun(t,e.font,e.textString,s)}async _rasterizeTextRun(t,e,i,a){const r=s(e),h=this._invalidFonts.has(r),n=!!has("esri-2d-force-complex-shaping"),o=!!has("esri-2d-complex-shaping")&&C.test(i),c=G.has(e.family),p=n||o||c,l=h?S:r;let f=await this.getGlyphItems(i,p,t,l,!1,a);return f||(b(`Font ${r} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(r),f=await this.getGlyphItems(i,p,t,S,!1,a)),f}async getGlyphItems(t,s,i,a,r,h){await this._inited;const n=this._getSource(i),d=s?p:g,_=s?o:f,y=s?c:l;let u,m,w;if(has("esri-2d-stabilize-glyphs")&&await this.preloadASCIIGlyphCache(n,a).catch(()=>{}),s){const e=await this._getFace(n,a);if(!e)return null;let s=this._glyphCache.get(a);s||(s=new Map,this._glyphCache.set(a,s));const{shaping:i,isRTL:r}=this._shape(e,t);w=r,u=i.map(t=>this._getShapedGlyph(e,s,t)),m={baseline:e.baseline()/d,midline:e.midline()/d}}else{let s=this._pbfGlyphCache.get(a);s||(s=new Map,this._pbfGlyphCache.set(a,s));const[i,o,c]=e(t),p=j(i);try{await this._fetchRanges(n,a,p,h)}catch{return null}w=o,u=p.map(t=>this._getPBFGlyph(s,n,a,t,r)).filter(t=>!!t)}const S=u.filter(t=>t.needsRecord);return S.length>0&&await this._client.recordGlyphs(S),{type:"glyphs",glyphs:u,faceInfo:m,isRightToLeft:w,sdfSize:d,sdfRadius:_,sdfPadding:y}}async _init(t){const{width:e,height:s,snapCoords:i}=await t;this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._binPack=new m(e,s),this._snapCoords=i,this._currentPage=0,this._initDecorationGlyphs()}_getShapedGlyph(t,e,s){let i,a,r=e.get(s.glyphId);if(!r){i=this._glyphSDFCreator.draw(t,s.glyphId);const h=this._glyphSDFCreator.sdfBufferPx;r={mosaicItem:{rect:this._recordGlyph(i?.rect,h),page:this._currentPage,sdf:!0,textureBinding:y(1,this._currentPage,!0)},glyphRect:i?.rect??{width:0,height:0,top:0,left:0}},e.set(s.glyphId,r),a=!0}return{mosaicItem:r.mosaicItem,rect:r.glyphRect,shaping:{xAdvance:s.xAdvance,yAdvance:s.yAdvance,xOffset:s.xOffset,yOffset:s.yOffset},code:s.isNewline?10:s.isWhitespace?32:NaN,sdf:i,needsRecord:a}}_getPBFGlyph(t,e,s,i,a=!1){let r,h,n=t.get(i);if(!n){const o=e.getRange(s,i),p=o?.getRect(i),l=o?.getShaping(i),f=o?.getBitmap(i);if(a&&(!p||!l))return;if(!p||!l)return M(i);r=f&&{buffer:f,rect:p},n={mosaicItem:{rect:f?this._recordGlyph(p,c):new u(0,0,0,0),sdf:!0,page:this._currentPage,textureBinding:y(1,this._currentPage,!0)},rect:p,shaping:l,code:i},h=!0,t.set(i,n)}const{mosaicItem:o,rect:p,shaping:l}=n;return{mosaicItem:o,rect:p,shaping:l,code:i,sdf:r,needsRecord:h}}_shape(t,s){const i=this._glyphSDFCreator.sdfSizePx,[a,r,h]=e(s,!1),n=new Uint32Array(Array.from(a).map((t,e)=>h.levels[h.targetToSource[e]]));return{shaping:t.shape(a,n,i),isRTL:r}}async _getFace(e,s,i){if(this._faces.has(s))return this._faces.get(s);const a=e.woffURL(s);return await I(this._facePromises,s,async()=>{const e=await t(a,{responseType:"array-buffer",...i}),h=(await r()).Face.parseWoff2(new Uint8Array(e.data));this._faces.set(s,h)}),this._faces.get(s)}_getSource(t){return this._glyphSources.has(t)||this._glyphSources.set(t,new _(t)),this._glyphSources.get(t)}async _fetchRanges(t,e,s,i){const a=x(s),r=[];a.forEach(s=>{r.push(this._fetchRange(t,e,s,i))}),await Promise.all(r)}async _fetchRange(t,e,s,i){if(s>256)return;const a=e+s;return I(this._pbfRangePromises,a,()=>t.fetchRange(e,s,i))}_allocNewPage(){this._currentPage++,this._binPack=new m(this._binPack.width,this._binPack.height),this._initDecorationGlyphs()}_recordGlyph(t,e){const s=this._binPack;if(!t||0===t.width)return new u;const i=t.width+2*e,a=t.height+2*e;let r=i,h=a;if(this._snapCoords){r+=i%4?4-i%4:4,h+=a%4?4-a%4:4}const n=s.allocate(r,h);return n.isEmpty?(this._allocNewPage(),s.allocate(r,h)):n}_initDecorationGlyphs(){this._recordGlyph(n,l),this._recordGlyph(n,l)}preloadASCIIGlyphCache(t,e){const s=this._preloadCache[e];if(null!=s)return s;const i=t.preloadASCIIRange(e).then(async()=>{let s=this._pbfGlyphCache.get(e);s||(s=new Map,this._pbfGlyphCache.set(e,s));for(let a=0;a<256;a++)this._getPBFGlyph(s,t,e,a);const i=Array.from(this._pbfGlyphCache.get(e).values());await this._client.recordGlyphs(i)},t=>{throw delete this._preloadCache[e],t});return this._preloadCache[e]=i,i}}function x(t){const e=new Set;for(const s of t)e.add(Math.floor(s/256));return e}function I(t,e,s){return t.has(e)||t.set(e,s().finally(()=>{t.delete(e)}).catch(t=>{a(t)})),t.get(e)}const M=t=>({mosaicItem:{rect:new u(0,0,0,0),sdf:!0,page:0},rect:{left:0,width:0,height:0,top:0},shaping:{xAdvance:0,yAdvance:0,xOffset:0,yOffset:0},code:t});function j(t){const e=[];for(let s=0;s<t.length;s++)e.push(t.charCodeAt(s));return e}export{R as default};
|