@arcgis/core 4.27.0-rc.3 → 4.27.0-rc.5
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/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{0e65e00173b66c7fec2e.js → 09e677ca7532a281d262.js} +1 -1
- package/assets/esri/core/workers/chunks/0f51fa430333cf77faf7.js +1 -0
- package/assets/esri/core/workers/chunks/{89001ee8d3f69fa03cc1.js → 0f7ddb063ee0664f2fca.js} +1 -1
- package/assets/esri/core/workers/chunks/17ab08f60764244b2cf8.js +1 -0
- package/assets/esri/core/workers/chunks/2132edadb75a2c6c216d.js +1 -0
- package/assets/esri/core/workers/chunks/{2446e336b1f7256d4fde.js → 2c587ed66e2586cccb8d.js} +1 -1
- package/assets/esri/core/workers/chunks/{00c7b9fb375c9a934158.js → 38c6452dc9cf18e8bca8.js} +1 -1
- package/assets/esri/core/workers/chunks/{16db0bc87d87a7313dc4.js → 4806df402845c717c842.js} +1 -1
- package/assets/esri/core/workers/chunks/4884432d80e9af947449.js +1 -0
- package/assets/esri/core/workers/chunks/{470e34f5c33185919719.js → 4db447d0f1d865ab6c88.js} +1 -1
- package/assets/esri/core/workers/chunks/588cd91d08cec5207be1.js +1 -0
- package/assets/esri/core/workers/chunks/{83e3d104886b48f00397.js → 633c00c02a81397fc8df.js} +1 -1
- package/assets/esri/core/workers/chunks/{efb96aefe979a0f5c632.js → 640e8ac3498be30c6614.js} +1 -1
- package/assets/esri/core/workers/chunks/{33901eb1574e46abd9af.js → 6c213768715c52625855.js} +1 -1
- package/assets/esri/core/workers/chunks/{3160af63b860b52db389.js → 6f724f75f85dc3989d60.js} +1 -1
- package/assets/esri/core/workers/chunks/85191485a7556d3c99f2.js +1 -0
- package/assets/esri/core/workers/chunks/8b05fb365336cc42fecc.js +1 -0
- package/assets/esri/core/workers/chunks/8eec6da5e862cc33ea2b.js +1 -0
- package/assets/esri/core/workers/chunks/90d8f297d9cb359e071d.js +1 -0
- package/assets/esri/core/workers/chunks/{471f6eba213412b82840.js → 927417abea79c955b216.js} +1 -1
- package/assets/esri/core/workers/chunks/{5e6471dd2a08e66b47d0.js → 979d9f37c555df0e8fa6.js} +58 -59
- package/assets/esri/core/workers/chunks/{adaa9d4239f4e905d011.js → 9d4bd73dd50400e9d328.js} +1 -1
- package/assets/esri/core/workers/chunks/a324cc07d486061d0d8e.js +1 -0
- package/assets/esri/core/workers/chunks/a40130579791293cefa2.js +1 -0
- package/assets/esri/core/workers/chunks/{50f910797c17c3028521.js → a49718c74053314ed741.js} +1 -1
- package/assets/esri/core/workers/chunks/ad2891985e0fe45aa8d2.js +1 -0
- package/assets/esri/core/workers/chunks/afcba35eea836aea98ca.js +1 -0
- package/assets/esri/core/workers/chunks/b3c42e9ba07217a51911.js +1 -0
- package/assets/esri/core/workers/chunks/b3d2e397ea74ebef4423.js +1 -0
- package/assets/esri/core/workers/chunks/b846d4215210aac9f6ef.js +1 -0
- package/assets/esri/core/workers/chunks/c7dc821db8c14fec24a7.js +1 -0
- package/assets/esri/core/workers/chunks/c9df9a0a4a45f9a53ce9.js +1 -0
- package/assets/esri/core/workers/chunks/{45a4041881e6235d73a2.js → d0a9711f48dfa5fee68a.js} +1 -1
- package/assets/esri/core/workers/chunks/e23ec4f867c4735eec20.js +1 -0
- package/assets/esri/core/workers/chunks/{ff42585e1b1d0c5497af.js → ea16230a0edfc9f756bd.js} +1 -1
- package/assets/esri/core/workers/chunks/ef900614353505afb210.js +1 -0
- package/assets/esri/t9n/common_sv.json +1 -1
- package/assets/esri/themes/base/_View.scss +2 -5
- package/assets/esri/themes/base/widgets/_Feature.scss +12 -4
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ar.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_bg.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_bs.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ca.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_cs.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_da.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_de.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_el.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_es.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_et.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_fi.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_fr.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_he.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_hr.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_hu.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_id.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_it.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ja.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ko.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_lt.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_lv.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_nb.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_nl.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pl.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pt-BR.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pt-PT.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ro.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ru.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sk.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sl.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sr.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sv.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_th.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_tr.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_uk.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_vi.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-CN.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-HK.json +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-TW.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ar.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_bg.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_bs.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ca.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_cs.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_da.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_de.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_el.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_es.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_et.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_fi.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_fr.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_he.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_hr.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_hu.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_id.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_it.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ja.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ko.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_lt.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_lv.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_nb.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_nl.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pl.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pt-BR.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_pt-PT.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ro.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_ru.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sk.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sl.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sr.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_sv.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_th.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_tr.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_uk.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_vi.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-CN.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-HK.json +1 -1
- package/assets/esri/widgets/BasemapGallery/t9n/BasemapGallery_zh-TW.json +1 -1
- package/assets/esri/widgets/CoordinateConversion/t9n/CoordinateConversion_ja.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ar.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_bg.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_bs.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ca.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_cs.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_da.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_de.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_el.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_es.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_et.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_fi.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_fr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_he.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_hr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_hu.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_id.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_it.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ja.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ko.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_lt.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_lv.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_nb.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_nl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pt-BR.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_pt-PT.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ro.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_ru.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sk.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sl.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_sv.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_th.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_tr.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_uk.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_vi.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-CN.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-HK.json +1 -1
- package/assets/esri/widgets/Feature/t9n/Feature_zh-TW.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ar.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_bg.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_bs.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ca.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_cs.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_da.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_de.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_el.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_es.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_et.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_fi.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_fr.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_he.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_hr.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_hu.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_id.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_it.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ja.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ko.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_lt.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_lv.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_nb.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_nl.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pl.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pt-BR.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_pt-PT.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ro.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_ru.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sk.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sl.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sr.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_sv.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_th.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_tr.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_uk.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_vi.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-CN.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-HK.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/FeatureForm_zh-TW.json +1 -1
- package/assets/esri/widgets/FeatureTemplates/t9n/FeatureTemplates_ja.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_ar.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_bg.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_bs.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_ca.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_cs.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_da.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_de.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_el.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_es.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_et.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_fi.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_fr.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_he.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_hr.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_hu.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_id.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_it.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_ja.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_ko.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_lt.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_lv.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_nb.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_nl.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_pl.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_pt-BR.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_pt-PT.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_ro.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_ru.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_sk.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_sl.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_sr.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_sv.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_th.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_tr.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_uk.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_vi.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_zh-CN.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_zh-HK.json +1 -1
- package/assets/esri/widgets/Features/t9n/Features_zh-TW.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_ar.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_bg.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_bs.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_ca.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_cs.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_da.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_de.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_el.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_es.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_et.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_fi.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_fr.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_he.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_hr.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_hu.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_id.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_it.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_ja.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_ko.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_lt.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_lv.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_nb.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_nl.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_pl.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_pt-BR.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_pt-PT.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_ro.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_ru.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_sk.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_sl.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_sr.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_sv.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_th.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_tr.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_uk.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_vi.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_zh-CN.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_zh-HK.json +1 -1
- package/assets/esri/widgets/Legend/t9n/Legend_zh-TW.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ar.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bg.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bs.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ca.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_cs.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_da.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_de.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_el.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_es.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_et.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fi.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_he.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hu.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_id.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_it.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ja.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ko.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lt.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lv.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nb.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-BR.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-PT.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ro.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ru.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sk.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sv.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_th.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_tr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_uk.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_vi.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-CN.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-HK.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-TW.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ar.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_bg.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_bs.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ca.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_cs.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_da.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_de.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_el.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_es.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_et.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_fi.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_fr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_he.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_hr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_hu.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_id.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_it.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ja.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ko.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_lt.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_lv.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_nb.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_nl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pt-BR.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_pt-PT.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ro.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_ru.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sk.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sl.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_sv.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_th.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_tr.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_uk.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_vi.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-CN.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-HK.json +1 -1
- package/assets/esri/widgets/Popup/t9n/Popup_zh-TW.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_ar.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_bg.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_bs.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_ca.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_cs.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_da.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_de.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_el.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_es.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_et.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_fi.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_fr.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_he.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_hr.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_hu.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_id.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_it.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_ja.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_ko.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_lt.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_lv.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_nb.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_nl.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_pl.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_pt-BR.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_pt-PT.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_ro.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_ru.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_sk.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_sl.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_sr.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_sv.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_th.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_tr.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_uk.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_vi.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_zh-CN.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_zh-HK.json +1 -1
- package/assets/esri/widgets/Sketch/t9n/Sketch_zh-TW.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ar.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bg.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bs.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ca.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_da.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_de.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_es.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_et.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fi.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_he.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hu.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_id.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_it.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ja.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ko.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lt.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nb.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-BR.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-PT.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ro.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ru.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sk.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sv.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_th.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_tr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_uk.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_vi.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-CN.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-HK.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-TW.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ar.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_bg.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_bs.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ca.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_cs.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_da.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_de.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_el.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_es.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_et.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_fi.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_fr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_he.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_hr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_hu.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_id.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_it.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ja.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ko.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_lt.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_lv.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_nb.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_nl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pt-BR.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_pt-PT.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ro.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_ru.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sk.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_sv.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_th.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_tr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_uk.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_vi.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-CN.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-HK.json +1 -1
- package/assets/esri/widgets/UtilityNetworkValidateTopology/t9n/UtilityNetworkValidateTopology_zh-TW.json +1 -1
- package/chunks/AtmosphereCompositing.glsl.js +9 -5
- package/chunks/ChapmanAtmosphere.glsl.js +6 -6
- package/chunks/DefaultMaterial.glsl.js +42 -42
- package/chunks/Fog.glsl.js +2 -2
- package/chunks/Terrain.glsl.js +7 -7
- package/chunks/vec2.js +1 -1
- package/copyright.txt +1 -1
- package/core/fontUtils.js +1 -1
- package/core/libs/gl-matrix-2/math/vec2.js +1 -1
- package/core/libs/gl-matrix-2/vec2.js +1 -1
- package/core/workers/workers.js +1 -1
- package/geometry/Mesh.js +1 -1
- package/geometry/support/meshUtils/bounds.js +1 -1
- package/geometry/support/meshUtils/georeference.js +1 -1
- package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
- package/interfaces.d.ts +738 -131
- package/kernel.js +1 -1
- package/layers/OrientedImageryLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/VideoLayer.js +1 -1
- package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
- package/layers/graphics/editingSupport.js +1 -1
- package/layers/graphics/sources/FeatureLayerSource.js +1 -1
- package/layers/graphics/sources/OGCFeatureSource.js +1 -1
- package/layers/graphics/sources/support/clientSideDefaults.js +1 -1
- package/layers/graphics/sources/support/uploadAssets.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/mixins/ImageryTileMixin.js +1 -1
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/orientedImagery/core/bestImageUtils.js +1 -1
- package/layers/orientedImagery/core/coverageUtils.js +1 -1
- package/layers/orientedImagery/transformations/groundToImageUtils.js +1 -1
- package/layers/orientedImagery/transformations/imageToGroundUtils.js +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/layers/support/capabilities.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/layers/support/serviceCapabilitiesUtils.js +1 -1
- package/layers/video/VideoCameraSensorModel.js +5 -0
- package/layers/video/VideoController.js +1 -1
- package/layers/video/videoUtils.js +1 -1
- package/networks/support/TraceJobInfo.d.ts +4 -0
- package/package.json +1 -1
- package/portal/PortalItem.js +1 -1
- package/renderers/support/colorRampUtils.js +1 -1
- package/rest/support/meshFeatureSet.js +1 -1
- package/smartMapping/labels/bins.d.ts +4 -0
- package/smartMapping/labels/bins.js +5 -0
- package/smartMapping/labels/clusters.js +1 -1
- package/smartMapping/labels/support/utils.js +5 -0
- package/smartMapping/support/binningUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/symbols/cim/CIMSymbolRasterizer.js +1 -1
- package/symbols/support/previewCIMSymbol.js +1 -1
- package/views/2d/MapViewConstraints.js +1 -1
- package/views/2d/layers/features/schemaUtils.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.js +1 -1
- package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/I3SMeshViewLabeler.js +1 -1
- package/views/3d/layers/I3SMeshWorkerHandle.js +1 -1
- package/views/3d/layers/SceneLayerWorker.js +1 -1
- package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/i3s/I3SClientMaterialUtil.js +5 -0
- package/views/3d/layers/i3s/I3SClientNodeLoader.js +1 -1
- package/views/3d/layers/i3s/I3SGeometryUtil.js +1 -1
- package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
- package/views/3d/layers/i3s/I3SOverrides.js +1 -1
- package/views/3d/layers/i3s/featureEditing.js +1 -1
- package/views/3d/support/engineContent/line.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +19 -20
- package/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +9 -9
- package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
- package/views/3d/webgl-engine/lib/PathVertex.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
- package/views/3d/webgl-engine/shaders/AtmosphereCompositing.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
- package/views/DOMContainer.js +1 -1
- package/views/PopupView.js +1 -1
- package/views/interactive/editGeometry/operations/ScaleVertex.js +1 -1
- package/views/interactive/editGeometry/support/editPlaneUtils.js +1 -1
- package/views/interactive/snapping/RightAngleSnapper.js +1 -1
- package/views/support/geometry2dUtils.js +1 -1
- package/views/support/geometry3dUtils.js +1 -1
- package/views/ui/DefaultUI.js +1 -1
- package/views/ui/UI.js +1 -1
- package/widgets/BasemapGallery.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflowData.js +1 -1
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/UpdateWorkflow.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/Feature/FeatureMedia.js +1 -1
- package/widgets/Feature/support/featureUtils.js +1 -1
- package/widgets/FeatureForm/FormExpressionsManager.js +1 -1
- package/widgets/FeatureForm/RelationshipInput.js +1 -1
- package/widgets/FeatureForm.js +1 -1
- package/widgets/FeatureTemplates/ItemList.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/Popup.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
- package/widgets/UtilityNetworkTrace.js +1 -1
- package/widgets/UtilityNetworkValidateTopology/UtilityNetworkValidateTopologyViewModel.js +1 -1
- package/widgets/support/chartUtils.js +1 -1
- package/widgets/support/chartUtilsAm5.js +1 -1
- package/assets/esri/core/workers/chunks/013de5c2955801b329b3.js +0 -1
- package/assets/esri/core/workers/chunks/030b43764f945cb1f8b0.js +0 -1
- package/assets/esri/core/workers/chunks/0618fb0058f39ecd363f.js +0 -1
- package/assets/esri/core/workers/chunks/07163dcbb871f927a580.js +0 -1
- package/assets/esri/core/workers/chunks/0e46687004392c493c06.js +0 -1
- package/assets/esri/core/workers/chunks/21328f3dd26abe84a10d.js +0 -1
- package/assets/esri/core/workers/chunks/2faa8f08f2fdaac3f4af.js +0 -1
- package/assets/esri/core/workers/chunks/624521961fe1f2c4f2c5.js +0 -1
- package/assets/esri/core/workers/chunks/6f510f28526c73ab453c.js +0 -1
- package/assets/esri/core/workers/chunks/7479dc0c790337af7597.js +0 -1
- package/assets/esri/core/workers/chunks/a6ddf80eb324c35076e1.js +0 -1
- package/assets/esri/core/workers/chunks/a7fd2a95fde197c06828.js +0 -1
- package/assets/esri/core/workers/chunks/b8e6c64792a512df4c4d.js +0 -1
- package/assets/esri/core/workers/chunks/bf9e1fde9f6b2b4f10c0.js +0 -1
- package/assets/esri/core/workers/chunks/c96db6b7ce47bd343fdb.js +0 -1
- package/assets/esri/core/workers/chunks/cfa3b2b1e184681e9af4.js +0 -1
- package/assets/esri/core/workers/chunks/d95ca50ca7af4c222036.js +0 -1
- package/assets/esri/core/workers/chunks/ee5ee03dd2c7dc940272.js +0 -1
- package/assets/esri/core/workers/chunks/f6e68befe2812b90b40d.js +0 -1
- package/assets/esri/core/workers/chunks/f720967ba8c5486a26a2.js +0 -1
- package/layers/orientedImagery/core/Affixes.js +0 -5
- package/layers/orientedImagery/core/CameraProperties.js +0 -5
- package/layers/orientedImagery/core/ImageProperties.js +0 -5
- package/layers/orientedImagery/core/ImageryTypes.js +0 -5
- package/layers/orientedImagery/core/imageryUtils.js +0 -5
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Color.js";import"../../symbols.js";import{bidiText as t}from"../../core/BidiText.js";import{getFontFamily as r}from"../../core/fontUtils.js";import{clone as a}from"../../core/lang.js";import o from"../../core/Logger.js";import i from"../../core/RandomLCG.js";import{pt2px as s,px2pt as n}from"../../core/screenUtils.js";import{create as l,expandPointInPlace as c}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as m}from"../../geometry/support/boundsUtils.js";import{createRendererExpression as f}from"../../support/arcadeOnDemand.js";import{Placement as y}from"./CIMPlacements.js";import{DEFAULT_TEXT_HEIGHT as u,horizontalAlignment2HAlign as h,verticalAlignment2VAlign as p,EnvDrawHelper as M,Transformation as d,CanvasDrawHelper as S,DEFAULT_HATCH_FILL_SEPARATION as b,lineGapType2LineHeight as g}from"./CIMSymbolDrawHelper.js";import{LineCapStyle as C,LineJoinStyle as I,BlockProgression as k,FontEffects as x,FontEncoding as w,FontType as P,GlyphHinting as v,TextReadingDirection as L,VerticalGlyphOrientation as F,BillBoardMode as D,TextureFilter as T,ExtremityPlacement as G}from"./enums.js";import{getValue as z,fromCIMFontStyle as E,fromCIMFontDecoration as O,isCIMMarkerStrokePlacement as A,attributesToFields as N,analyzeTextParts as R,assignTextValuesFromFeature as j,isGeometryEngineRequired as V,importGeometryEngine as B}from"./utils.js";import X from"../../views/2d/arcade/callExpressionWithFeature.js";import{C_INFINITY as _}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{GLYPH_SIZE as H,MAGIC_LABEL_LINE_HEIGHT as Y,RANDOM_INSIDE_POLYGON_TEXTURE_SIZE as U}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as $}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import q from"../Font.js";const W=Math.PI,J=W/2,K=Math.PI/180,Q=96/72,Z=4,ee=o.getLogger("esri.symbols.cim.CIMSymbolHelper");function te(e){if(!e||!e.type)return null;let t;switch(e.type){case"cim":return e.data;case"web-style":return e;case"simple-marker":{const r=ne.fromSimpleMarker(e);if(!r)return null;t=r;break}case"picture-marker":t=ne.fromPictureMarker(e);break;case"simple-line":t=ne.fromSimpleLineSymbol(e);break;case"simple-fill":t=ne.fromSimpleFillSymbol(e);break;case"picture-fill":t=ne.fromPictureFillSymbol(e);break;case"text":t=ne.fromTextSymbol(e)}return{type:"CIMSymbolReference",symbol:t}}function re(e,t,r){switch(t.type){case"CIMSymbolReference":return re(e,t.symbol,r);case"CIMPointSymbol":null==r&&(r={x:0,y:0}),e.drawSymbol(t,r);break;case"CIMLineSymbol":null==r&&(r={paths:[[[0,0],[10,0]]]}),e.drawSymbol(t,r);break;case"CIMPolygonSymbol":null==r&&(r={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]}),e.drawSymbol(t,r);break;case"CIMTextSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMVectorMarker":{const r=new y;e.drawMarker(t,r);break}}return e.envelope()}function ae(e){if(!e)return 0;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAtExtremities":case"CIMMarkerPlacementAtMeasuredUnits":case"CIMMarkerPlacementAtRatioPositions":case"CIMMarkerPlacementOnLine":case"CIMMarkerPlacementOnVertices":return Math.abs(e.offset);default:return 0}}function oe(e){if(!e)return 0;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectExtension":case"CIMGeometricEffectRadial":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(z(e.offsetX)),Math.abs(z(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);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 ie(e){if(!e)return 0;let t=0;for(const r of e)t+=oe(r);return t}class se{getSymbolInflateSize(e,t,r,a,o){return e||(e=[0,0,0,0]),t?this._getInflateSize(e,t,r,a,o):e}static safeSize(e){const t=Math.max(Math.abs(e[0]),Math.abs(e[2])),r=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+r*r)}_vectorMarkerBounds(e,t,r,a){let o=!0;const i=l();if(t&&t.markerGraphics)for(const s of t.markerGraphics){const t=[0,0,0,0];s.geometry&&(m(i,s.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,s.symbol,r,0,a),i[0]+=t[0],i[1]+=t[1],i[2]+=t[2],i[3]+=t[3],o?(e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],o=!1):(e[0]=Math.min(e[0],i[0]),e[1]=Math.min(e[1],i[1]),e[2]=Math.max(e[2],i[2]),e[3]=Math.max(e[3],i[3])))}return e}_getInflateSize(e,t,r,a,o){if(Se(t)){const i=this._getLayersInflateSize(e,t.symbolLayers,r,a,o),s=ie(t.effects);return s>0&&(i[0]-=s,i[1]-=s,i[2]+=s,i[3]+=s),i}return this._getTextInflatedSize(e,t,o)}_getLayersInflateSize(e,t,r,a,o){let i=!0;if(!t)return e;for(const s of t){if(!s)continue;let t=[0,0,0,0];switch(s.type){case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=s;let r=e.width;null!=r&&(e.capStyle===C.Square||e.joinStyle===I.Miter?r/=1.4142135623730951:r/=2,t[0]=-r,t[1]=-r,t[2]=r,t[3]=r);break}case"CIMCharacterMarker":case"CIMVectorMarker":case"CIMPictureMarker":{const e=s;if("CIMVectorMarker"===s.type){const e=s;if(t=this._vectorMarkerBounds(t,e,r,o),e.frame){const r=(e.frame.xmin+e.frame.xmax)/2,a=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=r,t[1]-=a,t[2]-=r,t[3]-=a,null!=e.size){const r=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=r,t[1]*=r,t[2]*=r,t[3]*=r}}}else if("CIMPictureMarker"===s.type){const a=s,o=r.getResource(a.url);let i=1;if(null!=o&&o.height&&(i=o.width/o.height),null!=e.size){const r=e.size/2,o=e.size*i*a.scaleX/2;t=[-o,-r,o,r]}}else if(null!=e.size){const r=e.size/2;t=[-r,-r,r,r]}if(e.anchorPoint){let r,a;"Absolute"===e.anchorPointUnits?(r=e.anchorPoint.x,a=e.anchorPoint.y):(r=e.anchorPoint.x*(t[2]-t[0]),a=e.anchorPoint.y*(t[3]-t[1])),t[0]-=r,t[1]-=a,t[2]-=r,t[3]-=a}let i=z(e.rotation);if(e.rotateClockwise&&(i=-i),a&&(i-=a),i){const e=K*i,r=Math.cos(e),a=Math.sin(e),o=l([_,_,-_,-_]);c(o,[t[0]*r-t[1]*a,t[0]*a+t[1]*r]),c(o,[t[0]*r-t[3]*a,t[0]*a+t[3]*r]),c(o,[t[2]*r-t[1]*a,t[2]*a+t[1]*r]),c(o,[t[2]*r-t[3]*a,t[2]*a+t[3]*r]),t=o}let n=z(e.offsetX),m=z(e.offsetY);if(a){const e=K*a,t=Math.cos(e),r=Math.sin(e),o=n*r+m*t;n=n*t-m*r,m=o}t[0]+=n,t[1]+=m,t[2]+=n,t[3]+=m;const f=ae(e.markerPlacement);f>0&&(t[0]-=f,t[1]-=f,t[2]+=f,t[3]+=f);break}}const n=ie(s.effects);n>0&&(t[0]-=n,t[1]-=n,t[2]+=n,t[3]+=n),i?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],i=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}_getTextInflatedSize(e,r,a){const o=r.height??u;if(e[0]=-o/2,e[1]=-o/2,e[2]=o/2,e[3]=o/2,!a)return e;const i=a.get(r);if(!i)return e;const{text:s,mosaicItem:n}=i;if(!n?.glyphMosaicItems?.length)return e;const{lineGapType:l,lineGap:c}=r,m=l?g(l,c??0,o):0,f=t(s)[1],y=n.glyphMosaicItems,M="CIMBackgroundCallout"===r.callout?.type,d=$(y,f,{scale:o/H,angle:z(r.angle),xOffset:z(r.offsetX),yOffset:z(r.offsetY),hAlign:h(r.horizontalAlignment),vAlign:p(r.verticalAlignment),maxLineWidth:512,lineHeight:Y*Math.max(.25,Math.min(m||1,4)),decoration:r.font.decoration||"none",isCIM:!0,hasBackground:M}).boundsT;return e[0]=d.x-d.halfWidth,e[1]=-d.y-d.halfHeight,e[2]=d.x+d.halfWidth,e[3]=-d.y+d.halfHeight,e}}class ne{static getEnvelope(e,t,r){if(!e)return null;const a=new M(r);if(Array.isArray(e)){let r;for(const o of e)r?r.union(re(a,o,t)):r=re(a,o,t);return r}return re(a,e,t)}static getTextureAnchor(e,t){const r=this.getEnvelope(e,null,t);if(!r)return[0,0,0];const a=(r.x+.5*r.width)*Q,o=(r.y+.5*r.height)*Q,i=r.width*Q+2,s=r.height*Q+2;return[-a/i,-o/s,s]}static rasterize(e,t,r,a,o=!0){const i=r||this.getEnvelope(t,null,a);if(!i)return[null,0,0,0,0];const s=(i.x+.5*i.width)*Q,n=(i.y+.5*i.height)*Q;e.width=i.width*Q,e.height=i.height*Q,r||(e.width+=2,e.height+=2);const l=e.getContext("2d"),c=d.createScale(Q,-Q);c.translate(.5*e.width-s,.5*e.height+n);const m=new S(l,a,c);switch(t.type){case"CIMPointSymbol":{const e={type:"point",x:0,y:0};m.drawSymbol(t,e);break}case"CIMVectorMarker":{const e=new y;m.drawMarker(t,e);break}}const f=l.getImageData(0,0,e.width,e.height),u=new Uint8Array(f.data);if(o){let e;for(let t=0;t<u.length;t+=4)e=u[t+3]/255,u[t]=u[t]*e,u[t+1]=u[t+1]*e,u[t+2]=u[t+2]*e}return[u,e.width,e.height,-s/e.width,-n/e.height]}static fromTextSymbol(e){const{angle:r,color:a,font:o,haloColor:i,haloSize:s,horizontalAlignment:n,kerning:l,text:c,verticalAlignment:m,xoffset:f,yoffset:y,backgroundColor:u,borderLineColor:h,borderLineSize:p}=e;let M,d,S,b,g,C;o&&(M=o.family,d=o.style,S=o.weight,b=o.size,g=o.decoration);let I=!1;if(c){I=t(c)[1]}return(u||p)&&(C={type:"CIMBackgroundCallout",margin:null,backgroundSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",color:ue(u)},{type:"CIMSolidStroke",color:ue(h),width:p}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,anchorPointUnits:"Relative",dominantSizeAxis3D:"Y",size:10,billboardMode3D:"FaceNearPlane",frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",angle:r,blockProgression:k.BTT,depth3D:1,extrapolateBaselines:!0,fontEffects:x.Normal,fontEncoding:w.Unicode,fontFamilyName:M||"Arial",fontStyleName:he(d,S),fontType:P.Unspecified,haloSize:s,height:b,hinting:v.Default,horizontalAlignment:fe(n??"center"),kerning:l,letterWidth:100,ligatures:!0,lineGapType:"Multiple",offsetX:z(f),offsetY:z(y),strikethrough:"line-through"===g,underline:"underline"===g,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ue(a)}]},haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ue(i)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:"Normal",textDirection:I?L.RTL:L.LTR,verticalAlignment:ye(m??"baseline"),verticalGlyphOrientation:F.Right,wordSpacing:100,billboardMode3D:D.FaceNearPlane,callout:C},textString:c}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:"Display"}}static fromPictureFillSymbol(e){const{height:t,outline:r,width:a,xoffset:o,xscale:i,yoffset:s,yscale:n}=e,l=[],c={type:"CIMPolygonSymbol",symbolLayers:l};if(r){const e=ke(r);e&&l.push(e)}let m=e.url;"esriPFS"===e.type&&e.imageData&&(m=e.imageData);const f="angle"in e?e.angle??0:0,y=(a??0)*(i||1),u=(t??0)*(n||1);return l.push({type:"CIMPictureFill",invertBackfaceTexture:!1,scaleX:1,textureFilter:T.Picture,tintColor:null,url:m,height:u,width:y,offsetX:z(o),offsetY:z(s),rotation:z(-f),colorSubstitutions:null}),c}static fromSimpleFillSymbol(e){const{color:t,style:r,outline:o}=e,i=[],s={type:"CIMPolygonSymbol",symbolLayers:i};if(o){const e=ke(o);e&&i.push(e)}if(r&&"solid"!==r&&"none"!==r&&"esriSFSSolid"!==r&&"esriSFSNull"!==r){const e={type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",color:ue(t),capStyle:C.Butt,joinStyle:I.Miter,width:.75}]};let o=0;const s=n(ge(r)?8:10);switch(r){case"vertical":case"esriSFSVertical":o=90;break;case"forward-diagonal":case"esriSFSForwardDiagonal":case"diagonal-cross":case"esriSFSDiagonalCross":o=-45;break;case"backward-diagonal":case"esriSFSBackwardDiagonal":o=45;break;case"cross":case"esriSFSCross":o=0}i.push({type:"CIMHatchFill",lineSymbol:e,offsetX:0,offsetY:0,rotation:o,separation:s}),"cross"===r||"esriSFSCross"===r?i.push({type:"CIMHatchFill",lineSymbol:a(e),offsetX:0,offsetY:0,rotation:90,separation:s}):"diagonal-cross"!==r&&"esriSFSDiagonalCross"!==r||i.push({type:"CIMHatchFill",lineSymbol:a(e),offsetX:0,offsetY:0,rotation:45,separation:s})}else!r||"solid"!==r&&"esriSFSSolid"!==r||i.push({type:"CIMSolidFill",enable:!0,color:ue(t)});return s}static fromSimpleLineSymbol(e){const{cap:t,color:r,join:a,marker:o,miterLimit:i,style:s,width:n}=e;let l=null;"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:de(s,t),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]);const c=[];if(o){let e;switch(o.placement){case"begin-end":e=G.Both;break;case"begin":e=G.JustBegin;break;case"end":e=G.JustEnd;break;default:e=G.None}const t=ne.fromSimpleMarker(o,n,r).symbolLayers[0];t.markerPlacement={type:"CIMMarkerPlacementAtExtremities",angleToLine:!0,offset:0,extremityPlacement:e,offsetAlongLine:0},c.push(t)}return c.push({type:"CIMSolidStroke",color:"none"!==s&&"esriSLSNull"!==s?ue(r):[0,0,0,0],capStyle:ce(t),joinStyle:me(a),miterLimit:i,width:n,effects:l}),{type:"CIMLineSymbol",symbolLayers:c}}static fromPictureMarker(e){const{angle:t,height:r,width:a,xoffset:o,yoffset:i}=e;let s=e.url;return"esriPMS"===e.type&&e.imageData&&(s=e.imageData),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMPictureMarker",invertBackfaceTexture:!1,scaleX:1,textureFilter:T.Picture,tintColor:null,url:s,size:r,width:a,offsetX:z(o),offsetY:z(i),rotation:z(-t)}]}}static fromSimpleMarker(e,t,r){const{style:a}=e,o=e.color??r;if("path"===a){const t=[];if("outline"in e&&e.outline){const r=e.outline;t.push({type:"CIMSolidStroke",enable:!0,width:s(Math.round(n(r.width))),color:ue(r.color)})}t.push({type:"CIMSolidFill",enable:!0,color:ue(o),path:e.path});const[r,a]=be("square");return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:r,markerGraphics:[{type:"CIMMarkerGraphic",geometry:a,symbol:{type:"CIMPolygonSymbol",symbolLayers:t}}]}]}}const[i,l]=be(a);let c;if(l&&i){const r=[];if("outline"in e&&e.outline){const t=e.outline;r.push({type:"CIMSolidStroke",enable:!0,width:null!=t.width&&t.width>.667?s(Math.round(n(t.width))):t.width,color:ue(t.color)})}else!t||"line-marker"!==e.type||"cross"!==e.style&&"x"!==e.style||r.push({type:"CIMSolidStroke",enable:!0,width:t,color:ue(o)});r.push({type:"CIMSolidFill",enable:!0,color:ue(o)});const a={type:"CIMPolygonSymbol",symbolLayers:r};c={type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:z(-e.angle),size:z(e.size||6*t),offsetX:z(e.xoffset),offsetY:z(e.yoffset),frame:i,markerGraphics:[{type:"CIMMarkerGraphic",geometry:l,symbol:a}]}]}}return c}static fromCIMHatchFill(e,t){const r=t*(e.separation??b),o=r/2,i=a(e.lineSymbol);i.symbolLayers?.forEach((e=>{switch(e.type){case"CIMSolidStroke":null!=e.width&&(e.width*=t),e.effects?.forEach((e=>{"CIMGeometricEffectDashes"===e.type&&(e.dashTemplate=e.dashTemplate.map((e=>e*t)))}));break;case"CIMVectorMarker":{null!=e.size&&(e.size*=t);const r=e.markerPlacement;null!=r&&"placementTemplate"in r&&(r.placementTemplate=r.placementTemplate.map((e=>e*t)));break}}}));let s=this._getLineSymbolPeriod(i)||Z;for(;s<Z;)s*=2;const n=s/2;return{type:"CIMVectorMarker",frame:{xmin:-n,xmax:n,ymin:-o,ymax:o},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:[[[-n,0],[n,0]]]},symbol:i}],size:r}}static fetchResources(e,t,a){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const r=e.symbolLayers;if(!r)return;for(const e of r)switch(Ie(e,t,a),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&a.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const r=e.markerGraphics;if(!r)continue;for(const e of r)if(e){const r=e.symbol;r&&ne.fetchResources(r,t,a)}}}break}case"CIMTextSymbol":{const o=e,i=r(o.fontFamilyName),{style:s,weight:n}=E(o.fontStyleName),l=O(o);a.push(t.loadFont(new q({family:i,style:s,weight:n,decoration:l})).catch((()=>{ee.error("unsupported font in preview")})));break}}}static _getLineSymbolPeriod(e){if(e){const t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers)for(const r of e.symbolLayers)if(r){const e=this._getEffectsRepeat(r.effects);if(e)return e;switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=this._getPlacementRepeat(r.markerPlacement);if(e)return e}}}}return 0}static _getEffectsRepeat(e){if(e)for(const t of e)if(t)switch(t.type){case"CIMGeometricEffectDashes":{const e=t.dashTemplate;if(e&&e.length){let t=0;for(const r of e)t+=r;return 1&e.length&&(t*=2),t}break}case"CIMGeometricEffectWave":return t.period;default:ee.error(`unsupported geometric effect type ${t.type}`)}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAlongLineVariableSize":{const t=e.placementTemplate;if(t&&t.length){let e=0;for(const r of t)e+=+r;return 1&t.length&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){const t=e.markerPlacement,r={...e};r.markerPlacement=null,r.anchorPoint=null;const a=Math.abs(t.stepX),o=Math.abs(t.stepY),s=(t.randomness??100)/100;let l,c,m,f;if("Random"===t.gridType){const e=n(U),r=Math.max(Math.floor(e/a),1),y=Math.max(Math.floor(e/o),1);l=r*a/2,c=y*o/2,m=2*c;const u=new i(t.seed),h=s*a/1.5,p=s*o/1.5;f=[];for(let t=0;t<r;t++)for(let e=0;e<y;e++){const r=t*a-l+h*(.5-u.getFloat()),i=e*o-c+p*(.5-u.getFloat());f.push({x:r,y:i}),0===t&&f.push({x:r+2*l,y:i}),0===e&&f.push({x:r,y:i+2*c})}}else!0===t.shiftOddRows?(l=a/2,c=o,m=2*o,f=[{x:-l,y:0},{x:l,y:0},{x:0,y:c},{x:0,y:-c}]):(l=a/2,c=o/2,m=o,f=[{x:-a,y:0},{x:0,y:-o},{x:-a,y:-o},{x:0,y:0},{x:a,y:0},{x:0,y:o},{x:a,y:o},{x:-a,y:o},{x:a,y:-o}]);return{type:"CIMVectorMarker",frame:{xmin:-l,xmax:l,ymin:-c,ymax:c},markerGraphics:f.map((e=>({type:"CIMMarkerGraphic",geometry:e,symbol:{type:"CIMPointSymbol",symbolLayers:[r]}}))),size:m}}static getSize(e){if(e)switch(e.type){case"CIMTextSymbol":return e.height;case"CIMPointSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=r.size;null!=e&&e>t&&(t=e);break}}return t}case"CIMLineSymbol":case"CIMPolygonSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=r.width;null!=e&&e>t&&(t=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(r.markerPlacement&&A(r.markerPlacement)){const e=r.size;null!=e&&e>t&&(t=e)}}return t}}}static getMarkerScaleRatio(e){if(e&&"CIMVectorMarker"===e.type)if(!1!==e.scaleSymbolsProportionally&&e.frame&&null!=e.size){const t=e.frame.ymax-e.frame.ymin;return e.size/t}return 1}}class le{static findApplicableOverrides(e,t,r){if(e&&t){if(e.primitiveName){let a=!1;for(const t of r)if(t.primitiveName===e.primitiveName){a=!0;break}if(!a)for(const o of t)o.primitiveName===e.primitiveName&&r.push(o)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const a of e.effects)le.findApplicableOverrides(a,t,r);if(e.symbolLayers)for(const a of e.symbolLayers)le.findApplicableOverrides(a,t,r);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":if(e.effects)for(const a of e.effects)le.findApplicableOverrides(a,t,r);if(e.markerPlacement&&le.findApplicableOverrides(e.markerPlacement,t,r),"CIMVectorMarker"===e.type){if(e.markerGraphics)for(const a of e.markerGraphics)le.findApplicableOverrides(a,t,r),le.findApplicableOverrides(a.symbol,t,r)}else"CIMCharacterMarker"===e.type?le.findApplicableOverrides(e.symbol,t,r):"CIMHatchFill"===e.type?le.findApplicableOverrides(e.lineSymbol,t,r):"CIMPictureMarker"===e.type&&le.findApplicableOverrides(e.animatedSymbolProperties,t,r)}}}static findEffectOverrides(e,t,r){if(!t||!e)return;const a=e.length;for(let o=0;o<a;o++){const a=e[o],i=a?.primitiveName;if(i){let e=!1;for(const t of r)if(t.primitiveName===i){e=!0;break}if(!e)for(const a of t)a.primitiveName===i&&r.push(a)}}}static async resolveSymbolOverrides(e,t,r,o,i,s,n){if(!e||!e.symbol)return null;let{symbol:l,primitiveOverrides:c}=e;const m=!!c;if(!m&&!o)return l;l=a(l);let f=!0;if(t||(t={attributes:{}},f=!1),m){if(f||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$feature")))),n||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$view")))),c.length>0){const e=N(t.attributes);await le.evaluateOverrides(c,t,{spatialReference:r,fields:e,geometryType:i},s,n)}le.applyOverrides(l,c)}return o&&le.applyDictionaryTextOverrides(l,t,o),l}static async evaluateOverrides(e,t,r,a,o){if(!t)return;let i;for(const s of e){const e=s.valueExpressionInfo;if(e&&r&&r.geometryType){i||(i=[]),s.value=void 0;const n=f(e.expression,r.spatialReference,r.fields).then((e=>{s.value=X(e,t,{$view:o},r.geometryType,a)}));i.push(n)}}void 0!==i&&i.length>0&&await Promise.all(i)}static applyDictionaryTextOverrides(e,t,r,a="Normal"){if(e&&e.type)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":case"CIMTextSymbol":{const o=e.symbolLayers;if(!o)return;for(const i of o)i&&"CIMVectorMarker"===i.type&&le.applyDictionaryTextOverrides(i,t,r,"CIMTextSymbol"===e.type?e.textCase:a)}break;case"CIMVectorMarker":{const a=e.markerGraphics;if(!a)return;for(const e of a)e&&le.applyDictionaryTextOverrides(e,t,r)}break;case"CIMMarkerGraphic":{const o=e.textString;if(o&&o.includes("[")){const i=R(o,r);e.textString=j(t,i,a)}}}}static applyOverrides(e,t,r,a){if(e.primitiveName)for(const o of t)if(o.primitiveName===e.primitiveName){const t=Ce(o.propertyName);if(a&&a.push({cim:e,nocapPropertyName:t,value:e[t]}),o.expression&&(o.value=le.toValue(o.propertyName,o.expression)),r){let t=!1;for(const a of r)a.primitiveName===e.primitiveName&&(t=!0);t||r.push(o)}null!=o.value&&(e[t]=o.value)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const o of e.effects)le.applyOverrides(o,t,r,a);if(e.symbolLayers)for(const o of e.symbolLayers)le.applyOverrides(o,t,r,a);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMSolidFill":case"CIMVectorMarker":if(e.effects)for(const o of e.effects)le.applyOverrides(o,t,r,a);if("CIMVectorMarker"===e.type&&e.markerGraphics)for(const o of e.markerGraphics)le.applyOverrides(o,t,r,a),le.applyOverrides(o.symbol,t,r,a)}}static restoreOverrides(e){for(const t of e)t.cim[t.nocapPropertyName]=t.value}static buildOverrideKey(e){let t="";for(const r of e)void 0!==r.value&&(t+=`${r.primitiveName}${r.propertyName}${JSON.stringify(r.value)}`);return t}static toValue(t,r){if("DashTemplate"===t)return r.split(" ").map((e=>Number(e)));if("Color"===t){const t=new e(r).toRgba();return t[3]*=255,t}return r}}const ce=e=>{if(!e)return C.Butt;switch(e){case"butt":return C.Butt;case"square":return C.Square;case"round":return C.Round}},me=e=>{if(!e)return I.Miter;switch(e){case"miter":return I.Miter;case"round":return I.Round;case"bevel":return I.Bevel}},fe=e=>{if(null==e)return"Center";switch(e){case"left":return"Left";case"right":return"Right";case"center":return"Center"}},ye=e=>{if(null==e)return"Center";switch(e){case"baseline":return"Baseline";case"top":return"Top";case"middle":return"Center";case"bottom":return"Bottom"}},ue=e=>{if(!e)return[0,0,0,0];const{r:t,g:r,b:a,a:o}=e;return[t,r,a,255*o]},he=(e,t)=>{const r=pe(t),a=Me(e);return r&&a?`${r}-${a}`:`${r}${a}`},pe=e=>{if(!e)return"";switch(e.toLowerCase()){case"bold":case"bolder":return"bold"}return""},Me=e=>{if(!e)return"";switch(e.toLowerCase()){case"italic":case"oblique":return"italic"}return""},de=(e,t)=>{const r="butt"===t;switch(e){case"dash":case"esriSLSDash":return r?[4,3]:[3,4];case"dash-dot":case"esriSLSDashDot":return r?[4,3,1,3]:[3,4,0,4];case"dot":case"esriSLSDot":return r?[1,3]:[0,4];case"long-dash":case"esriSLSLongDash":return r?[8,3]:[7,4];case"long-dash-dot":case"esriSLSLongDashDot":return r?[8,3,1,3]:[7,4,0,4];case"long-dash-dot-dot":case"esriSLSDashDotDot":return r?[8,3,1,3,1,3]:[7,4,0,4,0,4];case"short-dash":case"esriSLSShortDash":return r?[4,1]:[3,2];case"short-dash-dot":case"esriSLSShortDashDot":return r?[4,1,1,1]:[3,2,0,2];case"short-dash-dot-dot":case"esriSLSShortDashDotDot":return r?[4,1,1,1,1,1]:[3,2,0,2,0,2];case"short-dot":case"esriSLSShortDot":return r?[1,1]:[0,2];case"solid":case"esriSLSSolid":case"none":return ee.error("Unexpected: style does not require rasterization"),[0,0];default:return ee.error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function Se(e){return void 0!==e.symbolLayers}const be=e=>{const t=100,r=50;let a,o;const i=e;if("circle"===i||"esriSMSCircle"===i){const e=.25;let t=Math.acos(1-e/r),i=Math.ceil(W/t/4);0===i&&(i=1),t=J/i,i*=4;const s=[];s.push([r,0]);for(let a=1;a<i;a++)s.push([r*Math.cos(a*t),-r*Math.sin(a*t)]);s.push([r,0]),a={rings:[s]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("cross"===i||"esriSMSCross"===i){const e=0;a={rings:[[[e,r],[e,e],[r,e],[r,-e],[e,-e],[e,-r],[-e,-r],[-e,-e],[-r,-e],[-r,e],[-e,e],[-e,r],[e,r]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("diamond"===i||"esriSMSDiamond"===i)a={rings:[[[-r,0],[0,r],[r,0],[0,-r],[-r,0]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("square"===i||"esriSMSSquare"===i)a={rings:[[[-r,-r],[-r,r],[r,r],[r,-r],[-r,-r]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("x"===i||"esriSMSX"===i){const e=0;a={rings:[[[0,e],[r-e,r],[r,r-e],[e,0],[r,e-r],[r-e,-r],[0,-e],[e-r,-r],[-r,e-r],[-e,0],[-r,r-e],[e-r,r],[0,e]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("triangle"===i||"esriSMSTriangle"===i){const e=t*.5773502691896257,r=-e,i=2/3*t,s=i-t;a={rings:[[[r,s],[0,i],[e,s],[r,s]]]},o={xmin:r,ymin:s,xmax:e,ymax:i}}else"arrow"===i&&(a={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},o={xmin:-r,ymin:-r,xmax:r,ymax:r});return[o,a]},ge=e=>"vertical"===e||"horizontal"===e||"cross"===e||"esriSFSCross"===e||"esriSFSVertical"===e||"esriSFSHorizontal"===e,Ce=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;function Ie(e,t,r){if(!e.effects||null!=t.geometryEngine)return;if(t.geometryEnginePromise)return void r.push(t.geometryEnginePromise);V(e.effects)&&(t.geometryEnginePromise=B(),r.push(t.geometryEnginePromise),t.geometryEnginePromise.then((e=>t.geometryEngine=e)))}function ke(e){if(!e)return null;let t=null;const{cap:r,color:a,join:o,miterLimit:i,style:s,width:n}=e;return"solid"!==s&&"none"!==s&&"esriSLSSolid"!==s&&"esriSLSNull"!==s&&(t=[{type:"CIMGeometricEffectDashes",dashTemplate:de(s,r),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]),{type:"CIMSolidStroke",color:"esriSLSNull"!==s&&"none"!==s?ue(a):[0,0,0,0],capStyle:ce(r),joinStyle:me(o),miterLimit:i,width:n,effects:t}}export{ne as CIMSymbolHelper,se as CIMSymbolInflatedSizeHelper,le as OverrideHelper,ie as getEffectsInflateSize,de as slsDashToTemplateArray,te as symbolToCIM};
|
|
5
|
+
import e from"../../Color.js";import"../../symbols.js";import{bidiText as t}from"../../core/BidiText.js";import{clone as r}from"../../core/lang.js";import o from"../../core/Logger.js";import a from"../../core/RandomLCG.js";import{pt2px as s,px2pt as i}from"../../core/screenUtils.js";import{create as n,expandPointInPlace as l}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as c}from"../../geometry/support/boundsUtils.js";import{createRendererExpression as f}from"../../support/arcadeOnDemand.js";import{Placement as m}from"./CIMPlacements.js";import{DEFAULT_TEXT_HEIGHT as y,horizontalAlignment2HAlign as u,verticalAlignment2VAlign as h,EnvDrawHelper as p,Transformation as M,CanvasDrawHelper as d,DEFAULT_HATCH_FILL_SEPARATION as S,lineGapType2LineHeight as b}from"./CIMSymbolDrawHelper.js";import{LineCapStyle as C,LineJoinStyle as g,BlockProgression as I,FontEffects as k,FontEncoding as x,FontType as w,GlyphHinting as P,TextReadingDirection as L,VerticalGlyphOrientation as v,BillBoardMode as F,TextureFilter as D,ExtremityPlacement as G}from"./enums.js";import{getValue as T,fromCIMFontStyle as z,fromCIMFontDecoration as E,isCIMMarkerStrokePlacement as O,attributesToFields as A,analyzeTextParts as N,assignTextValuesFromFeature as R,isGeometryEngineRequired as j,importGeometryEngine as V}from"./utils.js";import B from"../../views/2d/arcade/callExpressionWithFeature.js";import{C_INFINITY as X}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{GLYPH_SIZE as _,MAGIC_LABEL_LINE_HEIGHT as H,RANDOM_INSIDE_POLYGON_TEXTURE_SIZE as Y}from"../../views/2d/engine/webgl/definitions.js";import{shapeGlyphs as $}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import U from"../Font.js";const q=Math.PI,W=q/2,J=Math.PI/180,K=96/72,Q=4,Z=o.getLogger("esri.symbols.cim.CIMSymbolHelper");function ee(e){if(!e||!e.type)return null;let t;switch(e.type){case"cim":return e.data;case"web-style":return e;case"simple-marker":{const r=ie.fromSimpleMarker(e);if(!r)return null;t=r;break}case"picture-marker":t=ie.fromPictureMarker(e);break;case"simple-line":t=ie.fromSimpleLineSymbol(e);break;case"simple-fill":t=ie.fromSimpleFillSymbol(e);break;case"picture-fill":t=ie.fromPictureFillSymbol(e);break;case"text":t=ie.fromTextSymbol(e)}return{type:"CIMSymbolReference",symbol:t}}function te(e,t,r){switch(t.type){case"CIMSymbolReference":return te(e,t.symbol,r);case"CIMPointSymbol":null==r&&(r={x:0,y:0}),e.drawSymbol(t,r);break;case"CIMLineSymbol":null==r&&(r={paths:[[[0,0],[10,0]]]}),e.drawSymbol(t,r);break;case"CIMPolygonSymbol":null==r&&(r={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]}),e.drawSymbol(t,r);break;case"CIMTextSymbol":{const r={x:0,y:0};e.drawSymbol(t,r);break}case"CIMVectorMarker":{const r=new m;e.drawMarker(t,r);break}}return e.envelope()}function re(e){if(!e)return 0;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAtExtremities":case"CIMMarkerPlacementAtMeasuredUnits":case"CIMMarkerPlacementAtRatioPositions":case"CIMMarkerPlacementOnLine":case"CIMMarkerPlacementOnVertices":return Math.abs(e.offset);default:return 0}}function oe(e){if(!e)return 0;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectExtension":case"CIMGeometricEffectRadial":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(T(e.offsetX)),Math.abs(T(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);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 ae(e){if(!e)return 0;let t=0;for(const r of e)t+=oe(r);return t}class se{getSymbolInflateSize(e,t,r,o,a){return e||(e=[0,0,0,0]),t?this._getInflateSize(e,t,r,o,a):e}static safeSize(e){const t=Math.max(Math.abs(e[0]),Math.abs(e[2])),r=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+r*r)}_vectorMarkerBounds(e,t,r,o){let a=!0;const s=n();if(t&&t.markerGraphics)for(const i of t.markerGraphics){const t=[0,0,0,0];i.geometry&&(c(s,i.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,i.symbol,r,0,o),s[0]+=t[0],s[1]+=t[1],s[2]+=t[2],s[3]+=t[3],a?(e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],a=!1):(e[0]=Math.min(e[0],s[0]),e[1]=Math.min(e[1],s[1]),e[2]=Math.max(e[2],s[2]),e[3]=Math.max(e[3],s[3])))}return e}_getInflateSize(e,t,r,o,a){if(de(t)){const s=this._getLayersInflateSize(e,t.symbolLayers,r,o,a),i=ae(t.effects);return i>0&&(s[0]-=i,s[1]-=i,s[2]+=i,s[3]+=i),s}return this._getTextInflatedSize(e,t,a)}_getLayersInflateSize(e,t,r,o,a){let s=!0;if(!t)return e;for(const i of t){if(!i)continue;let t=[0,0,0,0];switch(i.type){case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=i;let r=e.width;null!=r&&(e.capStyle===C.Square||e.joinStyle===g.Miter?r/=1.4142135623730951:r/=2,t[0]=-r,t[1]=-r,t[2]=r,t[3]=r);break}case"CIMCharacterMarker":case"CIMVectorMarker":case"CIMPictureMarker":{const e=i;if("CIMVectorMarker"===i.type){const e=i;if(t=this._vectorMarkerBounds(t,e,r,a),e.frame){const r=(e.frame.xmin+e.frame.xmax)/2,o=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=r,t[1]-=o,t[2]-=r,t[3]-=o,null!=e.size){const r=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=r,t[1]*=r,t[2]*=r,t[3]*=r}}}else if("CIMPictureMarker"===i.type){const o=i,a=r.getResource(o.url);let s=1;if(null!=a&&a.height&&(s=a.width/a.height),null!=e.size){const r=e.size/2,a=e.size*s*o.scaleX/2;t=[-a,-r,a,r]}}else if(null!=e.size){const r=e.size/2;t=[-r,-r,r,r]}if(e.anchorPoint){let r,o;"Absolute"===e.anchorPointUnits?(r=e.anchorPoint.x,o=e.anchorPoint.y):(r=e.anchorPoint.x*(t[2]-t[0]),o=e.anchorPoint.y*(t[3]-t[1])),t[0]-=r,t[1]-=o,t[2]-=r,t[3]-=o}let s=T(e.rotation);if(e.rotateClockwise&&(s=-s),o&&(s-=o),s){const e=J*s,r=Math.cos(e),o=Math.sin(e),a=n([X,X,-X,-X]);l(a,[t[0]*r-t[1]*o,t[0]*o+t[1]*r]),l(a,[t[0]*r-t[3]*o,t[0]*o+t[3]*r]),l(a,[t[2]*r-t[1]*o,t[2]*o+t[1]*r]),l(a,[t[2]*r-t[3]*o,t[2]*o+t[3]*r]),t=a}let c=T(e.offsetX),f=T(e.offsetY);if(o){const e=J*o,t=Math.cos(e),r=Math.sin(e),a=c*r+f*t;c=c*t-f*r,f=a}t[0]+=c,t[1]+=f,t[2]+=c,t[3]+=f;const m=re(e.markerPlacement);m>0&&(t[0]-=m,t[1]-=m,t[2]+=m,t[3]+=m);break}}const c=ae(i.effects);c>0&&(t[0]-=c,t[1]-=c,t[2]+=c,t[3]+=c),s?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],s=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}_getTextInflatedSize(e,r,o){const a=r.height??y;if(e[0]=-a/2,e[1]=-a/2,e[2]=a/2,e[3]=a/2,!o)return e;const s=o.get(r);if(!s)return e;const{text:i,mosaicItem:n}=s;if(!n?.glyphMosaicItems?.length)return e;const{lineGapType:l,lineGap:c}=r,f=l?b(l,c??0,a):0,m=t(i)[1],p=n.glyphMosaicItems,M="CIMBackgroundCallout"===r.callout?.type,d=$(p,m,{scale:a/_,angle:T(r.angle),xOffset:T(r.offsetX),yOffset:T(r.offsetY),hAlign:u(r.horizontalAlignment),vAlign:h(r.verticalAlignment),maxLineWidth:512,lineHeight:H*Math.max(.25,Math.min(f||1,4)),decoration:r.font.decoration||"none",isCIM:!0,hasBackground:M}).boundsT;return e[0]=d.x-d.halfWidth,e[1]=-d.y-d.halfHeight,e[2]=d.x+d.halfWidth,e[3]=-d.y+d.halfHeight,e}}class ie{static getEnvelope(e,t,r){if(!e)return null;const o=new p(r);if(Array.isArray(e)){let r;for(const a of e)r?r.union(te(o,a,t)):r=te(o,a,t);return r}return te(o,e,t)}static getTextureAnchor(e,t){const r=this.getEnvelope(e,null,t);if(!r)return[0,0,0];const o=(r.x+.5*r.width)*K,a=(r.y+.5*r.height)*K,s=r.width*K+2,i=r.height*K+2;return[-o/s,-a/i,i]}static rasterize(e,t,r,o,a=!0){const s=r||this.getEnvelope(t,null,o);if(!s)return[null,0,0,0,0];const i=(s.x+.5*s.width)*K,n=(s.y+.5*s.height)*K;e.width=s.width*K,e.height=s.height*K,r||(e.width+=2,e.height+=2);const l=e.getContext("2d"),c=M.createScale(K,-K);c.translate(.5*e.width-i,.5*e.height+n);const f=new d(l,o,c);switch(t.type){case"CIMPointSymbol":{const e={type:"point",x:0,y:0};f.drawSymbol(t,e);break}case"CIMVectorMarker":{const e=new m;f.drawMarker(t,e);break}}const y=l.getImageData(0,0,e.width,e.height),u=new Uint8Array(y.data);if(a){let e;for(let t=0;t<u.length;t+=4)e=u[t+3]/255,u[t]=u[t]*e,u[t+1]=u[t+1]*e,u[t+2]=u[t+2]*e}return[u,e.width,e.height,-i/e.width,-n/e.height]}static fromTextSymbol(e){const{angle:r,color:o,font:a,haloColor:s,haloSize:i,horizontalAlignment:n,kerning:l,text:c,verticalAlignment:f,xoffset:m,yoffset:y,backgroundColor:u,borderLineColor:h,borderLineSize:p}=e;let M,d,S,b,C,g;a&&(M=a.family,d=a.style,S=a.weight,b=a.size,C=a.decoration);let D=!1;if(c){D=t(c)[1]}return(u||p)&&(g={type:"CIMBackgroundCallout",margin:null,backgroundSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",color:ye(u)},{type:"CIMSolidStroke",color:ye(h),width:p}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,anchorPointUnits:"Relative",dominantSizeAxis3D:"Y",size:10,billboardMode3D:"FaceNearPlane",frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{x:0,y:0},symbol:{type:"CIMTextSymbol",angle:r,blockProgression:I.BTT,depth3D:1,extrapolateBaselines:!0,fontEffects:k.Normal,fontEncoding:x.Unicode,fontFamilyName:M||"Arial",fontStyleName:ue(d,S),fontType:w.Unspecified,haloSize:i,height:b,hinting:P.Default,horizontalAlignment:fe(n??"center"),kerning:l,letterWidth:100,ligatures:!0,lineGapType:"Multiple",offsetX:T(m),offsetY:T(y),strikethrough:"line-through"===C,underline:"underline"===C,symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ye(o)}]},haloSymbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:ye(s)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:"Normal",textDirection:D?L.RTL:L.LTR,verticalAlignment:me(f??"baseline"),verticalGlyphOrientation:v.Right,wordSpacing:100,billboardMode3D:F.FaceNearPlane,callout:g},textString:c}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:"Display"}}static fromPictureFillSymbol(e){const{height:t,outline:r,width:o,xoffset:a,xscale:s,yoffset:i,yscale:n}=e,l=[],c={type:"CIMPolygonSymbol",symbolLayers:l};if(r){const e=Ie(r);e&&l.push(e)}let f=e.url;"esriPFS"===e.type&&e.imageData&&(f=e.imageData);const m="angle"in e?e.angle??0:0,y=(o??0)*(s||1),u=(t??0)*(n||1);return l.push({type:"CIMPictureFill",invertBackfaceTexture:!1,scaleX:1,textureFilter:D.Picture,tintColor:null,url:f,height:u,width:y,offsetX:T(a),offsetY:T(i),rotation:T(-m),colorSubstitutions:null}),c}static fromSimpleFillSymbol(e){const{color:t,style:o,outline:a}=e,s=[],n={type:"CIMPolygonSymbol",symbolLayers:s};if(a){const e=Ie(a);e&&s.push(e)}if(o&&"solid"!==o&&"none"!==o&&"esriSFSSolid"!==o&&"esriSFSNull"!==o){const e={type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",color:ye(t),capStyle:C.Butt,joinStyle:g.Miter,width:.75}]};let a=0;const n=i(be(o)?8:10);switch(o){case"vertical":case"esriSFSVertical":a=90;break;case"forward-diagonal":case"esriSFSForwardDiagonal":case"diagonal-cross":case"esriSFSDiagonalCross":a=-45;break;case"backward-diagonal":case"esriSFSBackwardDiagonal":a=45;break;case"cross":case"esriSFSCross":a=0}s.push({type:"CIMHatchFill",lineSymbol:e,offsetX:0,offsetY:0,rotation:a,separation:n}),"cross"===o||"esriSFSCross"===o?s.push({type:"CIMHatchFill",lineSymbol:r(e),offsetX:0,offsetY:0,rotation:90,separation:n}):"diagonal-cross"!==o&&"esriSFSDiagonalCross"!==o||s.push({type:"CIMHatchFill",lineSymbol:r(e),offsetX:0,offsetY:0,rotation:45,separation:n})}else!o||"solid"!==o&&"esriSFSSolid"!==o||s.push({type:"CIMSolidFill",enable:!0,color:ye(t)});return n}static fromSimpleLineSymbol(e){const{cap:t,color:r,join:o,marker:a,miterLimit:s,style:i,width:n}=e;let l=null;"solid"!==i&&"none"!==i&&"esriSLSSolid"!==i&&"esriSLSNull"!==i&&(l=[{type:"CIMGeometricEffectDashes",dashTemplate:Me(i,t),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]);const c=[];if(a){let e;switch(a.placement){case"begin-end":e=G.Both;break;case"begin":e=G.JustBegin;break;case"end":e=G.JustEnd;break;default:e=G.None}const t=ie.fromSimpleMarker(a,n,r).symbolLayers[0];t.markerPlacement={type:"CIMMarkerPlacementAtExtremities",angleToLine:!0,offset:0,extremityPlacement:e,offsetAlongLine:0},c.push(t)}return c.push({type:"CIMSolidStroke",color:"none"!==i&&"esriSLSNull"!==i?ye(r):[0,0,0,0],capStyle:le(t),joinStyle:ce(o),miterLimit:s,width:n,effects:l}),{type:"CIMLineSymbol",symbolLayers:c}}static fromPictureMarker(e){const{angle:t,height:r,width:o,xoffset:a,yoffset:s}=e;let i=e.url;return"esriPMS"===e.type&&e.imageData&&(i=e.imageData),{type:"CIMPointSymbol",symbolLayers:[{type:"CIMPictureMarker",invertBackfaceTexture:!1,scaleX:1,textureFilter:D.Picture,tintColor:null,url:i,size:r,width:o,offsetX:T(a),offsetY:T(s),rotation:T(-t)}]}}static fromSimpleMarker(e,t,r){const{style:o}=e,a=e.color??r;if("path"===o){const t=[];if("outline"in e&&e.outline){const r=e.outline;t.push({type:"CIMSolidStroke",enable:!0,width:s(Math.round(i(r.width))),color:ye(r.color)})}t.push({type:"CIMSolidFill",enable:!0,color:ye(a),path:e.path});const[r,o]=Se("square");return{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:T(-e.angle),size:T(e.size||6),offsetX:T(e.xoffset),offsetY:T(e.yoffset),frame:r,markerGraphics:[{type:"CIMMarkerGraphic",geometry:o,symbol:{type:"CIMPolygonSymbol",symbolLayers:t}}]}]}}const[n,l]=Se(o);let c;if(l&&n){const r=[];if("outline"in e&&e.outline){const t=e.outline;r.push({type:"CIMSolidStroke",enable:!0,width:null!=t.width&&t.width>.667?s(Math.round(i(t.width))):t.width,color:ye(t.color)})}else!t||"line-marker"!==e.type||"cross"!==e.style&&"x"!==e.style||r.push({type:"CIMSolidStroke",enable:!0,width:t,color:ye(a)});r.push({type:"CIMSolidFill",enable:!0,color:ye(a)});const o={type:"CIMPolygonSymbol",symbolLayers:r};c={type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,rotation:T(-e.angle),size:T(e.size||6*t),offsetX:T(e.xoffset),offsetY:T(e.yoffset),frame:n,markerGraphics:[{type:"CIMMarkerGraphic",geometry:l,symbol:o}]}]}}return c}static fromCIMHatchFill(e,t){const o=t*(e.separation??S),a=o/2,s=r(e.lineSymbol);s.symbolLayers?.forEach((e=>{switch(e.type){case"CIMSolidStroke":null!=e.width&&(e.width*=t),e.effects?.forEach((e=>{"CIMGeometricEffectDashes"===e.type&&(e.dashTemplate=e.dashTemplate.map((e=>e*t)))}));break;case"CIMVectorMarker":{null!=e.size&&(e.size*=t);const r=e.markerPlacement;null!=r&&"placementTemplate"in r&&(r.placementTemplate=r.placementTemplate.map((e=>e*t)));break}}}));let i=this._getLineSymbolPeriod(s)||Q;for(;i<Q;)i*=2;const n=i/2;return{type:"CIMVectorMarker",frame:{xmin:-n,xmax:n,ymin:-a,ymax:a},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{paths:[[[-n,0],[n,0]]]},symbol:s}],size:o}}static fetchResources(e,t,r){if(e&&t)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const o=e.symbolLayers;if(!o)return;for(const e of o)switch(ge(e,t,r),e.type){case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMCharacterMarker":case"CIMPictureMarker":"url"in e&&e.url&&r.push(t.fetchResource(e.url,null));break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)continue;for(const e of o)if(e){const o=e.symbol;o&&ie.fetchResources(o,t,r)}}}break}}}static fetchFonts(e,t,r){if(e&&t)if("symbolLayers"in e&&e.symbolLayers){for(const o of e.symbolLayers)if("CIMVectorMarker"===o.type&&o.markerGraphics)for(const e of o.markerGraphics)e?.symbol&&ie.fetchFonts(e.symbol,t,r)}else if("CIMTextSymbol"===e.type){const{fontFamilyName:o,fontStyleName:a}=e;if(!o||"calcitewebcoreicons"===o.toLowerCase())return;const{style:s,weight:i}=z(a),n=E(e),l=new U({family:o,style:s,weight:i,decoration:n});r.push(t.loadFont(l).catch((()=>{Z.error(`Unsupported font ${o} in CIM symbol`)})))}}static _getLineSymbolPeriod(e){if(e){const t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers)for(const r of e.symbolLayers)if(r){const e=this._getEffectsRepeat(r.effects);if(e)return e;switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=this._getPlacementRepeat(r.markerPlacement);if(e)return e}}}}return 0}static _getEffectsRepeat(e){if(e)for(const t of e)if(t)switch(t.type){case"CIMGeometricEffectDashes":{const e=t.dashTemplate;if(e&&e.length){let t=0;for(const r of e)t+=r;return 1&e.length&&(t*=2),t}break}case"CIMGeometricEffectWave":return t.period;default:Z.error(`unsupported geometric effect type ${t.type}`)}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":case"CIMMarkerPlacementAlongLineRandomSize":case"CIMMarkerPlacementAlongLineVariableSize":{const t=e.placementTemplate;if(t&&t.length){let e=0;for(const r of t)e+=+r;return 1&t.length&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){const t=e.markerPlacement,r={...e};r.markerPlacement=null,r.anchorPoint=null;const o=Math.abs(t.stepX),s=Math.abs(t.stepY),n=(t.randomness??100)/100;let l,c,f,m;if("Random"===t.gridType){const e=i(Y),r=Math.max(Math.floor(e/o),1),y=Math.max(Math.floor(e/s),1);l=r*o/2,c=y*s/2,f=2*c;const u=new a(t.seed),h=n*o/1.5,p=n*s/1.5;m=[];for(let t=0;t<r;t++)for(let e=0;e<y;e++){const r=t*o-l+h*(.5-u.getFloat()),a=e*s-c+p*(.5-u.getFloat());m.push({x:r,y:a}),0===t&&m.push({x:r+2*l,y:a}),0===e&&m.push({x:r,y:a+2*c})}}else!0===t.shiftOddRows?(l=o/2,c=s,f=2*s,m=[{x:-l,y:0},{x:l,y:0},{x:0,y:c},{x:0,y:-c}]):(l=o/2,c=s/2,f=s,m=[{x:-o,y:0},{x:0,y:-s},{x:-o,y:-s},{x:0,y:0},{x:o,y:0},{x:0,y:s},{x:o,y:s},{x:-o,y:s},{x:o,y:-s}]);return{type:"CIMVectorMarker",frame:{xmin:-l,xmax:l,ymin:-c,ymax:c},markerGraphics:m.map((e=>({type:"CIMMarkerGraphic",geometry:e,symbol:{type:"CIMPointSymbol",symbolLayers:[r]}}))),size:f}}static getSize(e){if(e)switch(e.type){case"CIMTextSymbol":return e.height;case"CIMPointSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const e=r.size;null!=e&&e>t&&(t=e);break}}return t}case"CIMLineSymbol":case"CIMPolygonSymbol":{let t=0;if(e.symbolLayers)for(const r of e.symbolLayers)if(r)switch(r.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=r.width;null!=e&&e>t&&(t=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(r.markerPlacement&&O(r.markerPlacement)){const e=r.size;null!=e&&e>t&&(t=e)}}return t}}}static getMarkerScaleRatio(e){if(e&&"CIMVectorMarker"===e.type)if(!1!==e.scaleSymbolsProportionally&&e.frame&&null!=e.size){const t=e.frame.ymax-e.frame.ymin;return e.size/t}return 1}}class ne{static findApplicableOverrides(e,t,r){if(e&&t){if(e.primitiveName){let o=!1;for(const t of r)if(t.primitiveName===e.primitiveName){o=!0;break}if(!o)for(const a of t)a.primitiveName===e.primitiveName&&r.push(a)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const o of e.effects)ne.findApplicableOverrides(o,t,r);if(e.symbolLayers)for(const o of e.symbolLayers)ne.findApplicableOverrides(o,t,r);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":case"CIMSolidFill":case"CIMPictureFill":case"CIMHatchFill":case"CIMGradientFill":case"CIMVectorMarker":case"CIMCharacterMarker":case"CIMPictureMarker":if(e.effects)for(const o of e.effects)ne.findApplicableOverrides(o,t,r);if(e.markerPlacement&&ne.findApplicableOverrides(e.markerPlacement,t,r),"CIMVectorMarker"===e.type){if(e.markerGraphics)for(const o of e.markerGraphics)ne.findApplicableOverrides(o,t,r),ne.findApplicableOverrides(o.symbol,t,r)}else"CIMCharacterMarker"===e.type?ne.findApplicableOverrides(e.symbol,t,r):"CIMHatchFill"===e.type?ne.findApplicableOverrides(e.lineSymbol,t,r):"CIMPictureMarker"===e.type&&ne.findApplicableOverrides(e.animatedSymbolProperties,t,r)}}}static findEffectOverrides(e,t,r){if(!t||!e)return;const o=e.length;for(let a=0;a<o;a++){const o=e[a],s=o?.primitiveName;if(s){let e=!1;for(const t of r)if(t.primitiveName===s){e=!0;break}if(!e)for(const o of t)o.primitiveName===s&&r.push(o)}}}static async resolveSymbolOverrides(e,t,o,a,s,i,n){if(!e||!e.symbol)return null;let{symbol:l,primitiveOverrides:c}=e;const f=!!c;if(!f&&!a)return l;l=r(l);let m=!0;if(t||(t={attributes:{}},m=!1),f){if(m||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$feature")))),n||(c=c.filter((e=>!e.valueExpressionInfo?.expression.includes("$view")))),c.length>0){const e=A(t.attributes);await ne.evaluateOverrides(c,t,{spatialReference:o,fields:e,geometryType:s},i,n)}ne.applyOverrides(l,c)}return a&&ne.applyDictionaryTextOverrides(l,t,a),l}static async evaluateOverrides(e,t,r,o,a){if(!t)return;let s;for(const i of e){const e=i.valueExpressionInfo;if(e&&r&&r.geometryType){s||(s=[]),i.value=void 0;const n=f(e.expression,r.spatialReference,r.fields).then((e=>{i.value=B(e,t,{$view:a},r.geometryType,o)}));s.push(n)}}void 0!==s&&s.length>0&&await Promise.all(s)}static applyDictionaryTextOverrides(e,t,r,o="Normal"){if(e&&e.type)switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":case"CIMTextSymbol":{const a=e.symbolLayers;if(!a)return;for(const s of a)s&&"CIMVectorMarker"===s.type&&ne.applyDictionaryTextOverrides(s,t,r,"CIMTextSymbol"===e.type?e.textCase:o)}break;case"CIMVectorMarker":{const o=e.markerGraphics;if(!o)return;for(const e of o)e&&ne.applyDictionaryTextOverrides(e,t,r)}break;case"CIMMarkerGraphic":{const a=e.textString;if(a&&a.includes("[")){const s=N(a,r);e.textString=R(t,s,o)}}}}static applyOverrides(e,t,r,o){if(e.primitiveName)for(const a of t)if(a.primitiveName===e.primitiveName){const t=Ce(a.propertyName);if(o&&o.push({cim:e,nocapPropertyName:t,value:e[t]}),a.expression&&(a.value=ne.toValue(a.propertyName,a.expression)),r){let t=!1;for(const o of r)o.primitiveName===e.primitiveName&&(t=!0);t||r.push(a)}null!=a.value&&(e[t]=a.value)}switch(e.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":if(e.effects)for(const a of e.effects)ne.applyOverrides(a,t,r,o);if(e.symbolLayers)for(const a of e.symbolLayers)ne.applyOverrides(a,t,r,o);break;case"CIMTextSymbol":break;case"CIMSolidStroke":case"CIMSolidFill":case"CIMVectorMarker":if(e.effects)for(const a of e.effects)ne.applyOverrides(a,t,r,o);if("CIMVectorMarker"===e.type&&e.markerGraphics)for(const a of e.markerGraphics)ne.applyOverrides(a,t,r,o),ne.applyOverrides(a.symbol,t,r,o)}}static restoreOverrides(e){for(const t of e)t.cim[t.nocapPropertyName]=t.value}static buildOverrideKey(e){let t="";for(const r of e)void 0!==r.value&&(t+=`${r.primitiveName}${r.propertyName}${JSON.stringify(r.value)}`);return t}static toValue(t,r){if("DashTemplate"===t)return r.split(" ").map((e=>Number(e)));if("Color"===t){const t=new e(r).toRgba();return t[3]*=255,t}return r}}const le=e=>{if(!e)return C.Butt;switch(e){case"butt":return C.Butt;case"square":return C.Square;case"round":return C.Round}},ce=e=>{if(!e)return g.Miter;switch(e){case"miter":return g.Miter;case"round":return g.Round;case"bevel":return g.Bevel}},fe=e=>{if(null==e)return"Center";switch(e){case"left":return"Left";case"right":return"Right";case"center":return"Center"}},me=e=>{if(null==e)return"Center";switch(e){case"baseline":return"Baseline";case"top":return"Top";case"middle":return"Center";case"bottom":return"Bottom"}},ye=e=>{if(!e)return[0,0,0,0];const{r:t,g:r,b:o,a}=e;return[t,r,o,255*a]},ue=(e,t)=>{const r=he(t),o=pe(e);return r&&o?`${r}-${o}`:`${r}${o}`},he=e=>{if(!e)return"";switch(e.toLowerCase()){case"bold":case"bolder":return"bold"}return""},pe=e=>{if(!e)return"";switch(e.toLowerCase()){case"italic":case"oblique":return"italic"}return""},Me=(e,t)=>{const r="butt"===t;switch(e){case"dash":case"esriSLSDash":return r?[4,3]:[3,4];case"dash-dot":case"esriSLSDashDot":return r?[4,3,1,3]:[3,4,0,4];case"dot":case"esriSLSDot":return r?[1,3]:[0,4];case"long-dash":case"esriSLSLongDash":return r?[8,3]:[7,4];case"long-dash-dot":case"esriSLSLongDashDot":return r?[8,3,1,3]:[7,4,0,4];case"long-dash-dot-dot":case"esriSLSDashDotDot":return r?[8,3,1,3,1,3]:[7,4,0,4,0,4];case"short-dash":case"esriSLSShortDash":return r?[4,1]:[3,2];case"short-dash-dot":case"esriSLSShortDashDot":return r?[4,1,1,1]:[3,2,0,2];case"short-dash-dot-dot":case"esriSLSShortDashDotDot":return r?[4,1,1,1,1,1]:[3,2,0,2,0,2];case"short-dot":case"esriSLSShortDot":return r?[1,1]:[0,2];case"solid":case"esriSLSSolid":case"none":return Z.error("Unexpected: style does not require rasterization"),[0,0];default:return Z.error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function de(e){return void 0!==e.symbolLayers}const Se=e=>{const t=100,r=50;let o,a;const s=e;if("circle"===s||"esriSMSCircle"===s){const e=.25;let t=Math.acos(1-e/r),s=Math.ceil(q/t/4);0===s&&(s=1),t=W/s,s*=4;const i=[];i.push([r,0]);for(let o=1;o<s;o++)i.push([r*Math.cos(o*t),-r*Math.sin(o*t)]);i.push([r,0]),o={rings:[i]},a={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("cross"===s||"esriSMSCross"===s){const e=0;o={rings:[[[e,r],[e,e],[r,e],[r,-e],[e,-e],[e,-r],[-e,-r],[-e,-e],[-r,-e],[-r,e],[-e,e],[-e,r],[e,r]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("diamond"===s||"esriSMSDiamond"===s)o={rings:[[[-r,0],[0,r],[r,0],[0,-r],[-r,0]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("square"===s||"esriSMSSquare"===s)o={rings:[[[-r,-r],[-r,r],[r,r],[r,-r],[-r,-r]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r};else if("x"===s||"esriSMSX"===s){const e=0;o={rings:[[[0,e],[r-e,r],[r,r-e],[e,0],[r,e-r],[r-e,-r],[0,-e],[e-r,-r],[-r,e-r],[-e,0],[-r,r-e],[e-r,r],[0,e]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r}}else if("triangle"===s||"esriSMSTriangle"===s){const e=t*.5773502691896257,r=-e,s=2/3*t,i=s-t;o={rings:[[[r,i],[0,s],[e,i],[r,i]]]},a={xmin:r,ymin:i,xmax:e,ymax:s}}else"arrow"===s&&(o={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},a={xmin:-r,ymin:-r,xmax:r,ymax:r});return[a,o]},be=e=>"vertical"===e||"horizontal"===e||"cross"===e||"esriSFSCross"===e||"esriSFSVertical"===e||"esriSFSHorizontal"===e,Ce=e=>e?e.charAt(0).toLowerCase()+e.substr(1):e;function ge(e,t,r){if(!e.effects||null!=t.geometryEngine)return;if(t.geometryEnginePromise)return void r.push(t.geometryEnginePromise);j(e.effects)&&(t.geometryEnginePromise=V(),r.push(t.geometryEnginePromise),t.geometryEnginePromise.then((e=>t.geometryEngine=e)))}function Ie(e){if(!e)return null;let t=null;const{cap:r,color:o,join:a,miterLimit:s,style:i,width:n}=e;return"solid"!==i&&"none"!==i&&"esriSLSSolid"!==i&&"esriSLSNull"!==i&&(t=[{type:"CIMGeometricEffectDashes",dashTemplate:Me(i,r),lineDashEnding:"NoConstraint",scaleDash:!0,offsetAlongLine:null}]),{type:"CIMSolidStroke",color:"esriSLSNull"!==i&&"none"!==i?ye(o):[0,0,0,0],capStyle:le(r),joinStyle:ce(a),miterLimit:s,width:n,effects:t}}export{ie as CIMSymbolHelper,se as CIMSymbolInflatedSizeHelper,ne as OverrideHelper,ae as getEffectsInflateSize,Me as slsDashToTemplateArray,ee as symbolToCIM};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Color.js";import t from"../../request.js";import{unwrapOrThrow as a}from"../../core/maybe.js";import{throwIfAborted as i}from"../../core/promiseUtils.js";import{pt2px as r}from"../../core/screenUtils.js";import{CIMAnalyzer as o,analyzeCIMResource as s}from"./cimAnalyzer.js";import n from"./CIMResourceManager.js";import{Transformation as c,CanvasDrawHelper as l}from"./CIMSymbolDrawHelper.js";import{OverrideHelper as h,CIMSymbolHelper as m}from"./CIMSymbolHelper.js";import g from"./Rasterizer.js";import u from"./TextRasterizer.js";import{mapCIMSymbolToGeometryType as f,createLabelOverrideFunction as d,evaluateValueOrFunction as y,colorToArray as p}from"./utils.js";import{scaleCIMMarker as w}from"../support/cimSymbolUtils.js";import{Symbol3DAnchorPosition2D as C}from"../support/Symbol3DAnchorPosition2D.js";var M;!function(e){e.Legend="legend",e.Preview="preview"}(M||(M={}));const _=e=>e&&e.scaleFactor?e.scaleFactor:1,b=96/72;class z{constructor(e,t){this._spatialReference=e,this._avoidSDF=t,this._resourceCache=new Map,this._imageDataCanvas=null,this._pictureMarkerCache=new Map,this._textRasterizer=new u,this._cimResourceManager=new n,this._rasterizer=new g(this._cimResourceManager)}get resourceManager(){return this._cimResourceManager}async rasterizeCIMSymbolAsync(e,t,a,i,r,o,s,n){if(!e)return null;const{data:g}=e;if(!g||"CIMSymbolReference"!==g.type||!g.symbol)return null;const{symbol:u}=g;o||(o=f(u));const d=await h.resolveSymbolOverrides(g,t,this._spatialReference,r,o,s,n);this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const y=this._imageDataCanvas,p=this._cimResourceManager,w=[];m.fetchResources(d,p,w),w.length>0&&await Promise.all(w);const{width:C,height:M}=a,_=v(o,C,M,i),z=m.getEnvelope(d,_,p);if(!z)return null;const I=(window.devicePixelRatio||1)*b;let x=1,R=0,P=0;switch(u.type){case"CIMPointSymbol":case"CIMTextSymbol":{let e=1;z.width>C&&(e=C/z.width);let t=1;z.height>M&&(t=M/z.height),"preview"===i&&(z.width<C&&(e=C/z.width),z.height<M&&(t=M/z.height)),x=Math.min(e,t),R=z.x+z.width/2,P=z.y+z.height/2}break;case"CIMLineSymbol":{let e=1;z.height>M&&(e=M/z.height),x=e,P=z.y+z.height/2;const t=z.x*x+C/2,a=(z.x+z.width)*x+C/2;if(t<0){const{paths:e}=_;e[0][0][0]-=t}if(a>C){const{paths:e}=_;e[0][2][0]-=a-C}}break;case"CIMPolygonSymbol":{R=z.x+z.width/2,P=z.y+z.height/2;const e=z.x*x+C/2,t=(z.x+z.width)*x+C/2,a=z.y*x+M/2,i=(z.y+z.height)*x+M/2,{rings:r}=_;e<0&&(r[0][0][0]-=e,r[0][3][0]-=e,r[0][4][0]-=e),a<0&&(r[0][0][1]+=a,r[0][1][1]+=a,r[0][4][1]+=a),t>C&&(r[0][1][0]-=t-C,r[0][2][0]-=t-C),i>M&&(r[0][2][1]+=i-M,r[0][3][1]+=i-M)}}y.width=C*I,y.height=M*I;const D=1;y.width+=2*D,y.height+=2*D;const S=y.getContext("2d"),k=c.createIdentity();k.translate(-R,-P),k.scale(x*I,-x*I),k.translate(C*I/2+D,M*I/2+D),S.clearRect(0,0,y.width,y.height);return new l(S,p,k,!0).drawSymbol(d,_),S.getImageData(0,0,y.width,y.height)}async
|
|
5
|
+
import e from"../../Color.js";import t from"../../request.js";import{unwrapOrThrow as a}from"../../core/maybe.js";import{throwIfAborted as i}from"../../core/promiseUtils.js";import{pt2px as r}from"../../core/screenUtils.js";import{CIMAnalyzer as o,analyzeCIMResource as s}from"./cimAnalyzer.js";import n from"./CIMResourceManager.js";import{Transformation as c,CanvasDrawHelper as l}from"./CIMSymbolDrawHelper.js";import{OverrideHelper as h,CIMSymbolHelper as m}from"./CIMSymbolHelper.js";import g from"./Rasterizer.js";import u from"./TextRasterizer.js";import{mapCIMSymbolToGeometryType as f,createLabelOverrideFunction as d,evaluateValueOrFunction as y,colorToArray as p}from"./utils.js";import{scaleCIMMarker as w}from"../support/cimSymbolUtils.js";import{Symbol3DAnchorPosition2D as C}from"../support/Symbol3DAnchorPosition2D.js";var M;!function(e){e.Legend="legend",e.Preview="preview"}(M||(M={}));const _=e=>e&&e.scaleFactor?e.scaleFactor:1,b=96/72;class z{constructor(e,t){this._spatialReference=e,this._avoidSDF=t,this._resourceCache=new Map,this._imageDataCanvas=null,this._pictureMarkerCache=new Map,this._textRasterizer=new u,this._cimResourceManager=new n,this._rasterizer=new g(this._cimResourceManager)}get resourceManager(){return this._cimResourceManager}async rasterizeCIMSymbolAsync(e,t,a,i,r,o,s,n){if(!e)return null;const{data:g}=e;if(!g||"CIMSymbolReference"!==g.type||!g.symbol)return null;const{symbol:u}=g;o||(o=f(u));const d=await h.resolveSymbolOverrides(g,t,this._spatialReference,r,o,s,n);this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const y=this._imageDataCanvas,p=this._cimResourceManager,w=[];m.fetchResources(d,p,w),m.fetchFonts(d,p,w),w.length>0&&await Promise.all(w);const{width:C,height:M}=a,_=v(o,C,M,i),z=m.getEnvelope(d,_,p);if(!z)return null;const I=(window.devicePixelRatio||1)*b;let x=1,R=0,P=0;switch(u.type){case"CIMPointSymbol":case"CIMTextSymbol":{let e=1;z.width>C&&(e=C/z.width);let t=1;z.height>M&&(t=M/z.height),"preview"===i&&(z.width<C&&(e=C/z.width),z.height<M&&(t=M/z.height)),x=Math.min(e,t),R=z.x+z.width/2,P=z.y+z.height/2}break;case"CIMLineSymbol":{let e=1;z.height>M&&(e=M/z.height),x=e,P=z.y+z.height/2;const t=z.x*x+C/2,a=(z.x+z.width)*x+C/2;if(t<0){const{paths:e}=_;e[0][0][0]-=t}if(a>C){const{paths:e}=_;e[0][2][0]-=a-C}}break;case"CIMPolygonSymbol":{R=z.x+z.width/2,P=z.y+z.height/2;const e=z.x*x+C/2,t=(z.x+z.width)*x+C/2,a=z.y*x+M/2,i=(z.y+z.height)*x+M/2,{rings:r}=_;e<0&&(r[0][0][0]-=e,r[0][3][0]-=e,r[0][4][0]-=e),a<0&&(r[0][0][1]+=a,r[0][1][1]+=a,r[0][4][1]+=a),t>C&&(r[0][1][0]-=t-C,r[0][2][0]-=t-C),i>M&&(r[0][2][1]+=i-M,r[0][3][1]+=i-M)}}y.width=C*I,y.height=M*I;const D=1;y.width+=2*D,y.height+=2*D;const S=y.getContext("2d"),k=c.createIdentity();k.translate(-R,-P),k.scale(x*I,-x*I),k.translate(C*I/2+D,M*I/2+D),S.clearRect(0,0,y.width,y.height);return new l(S,p,k,!0).drawSymbol(d,_),S.getImageData(0,0,y.width,y.height)}async analyzeCIMSymbol3D(e,t,a,r,s){const n=[],c=t?{geometryType:r,spatialReference:this._spatialReference,fields:t}:null,l=[];m.fetchFonts(e.data.symbol,this._cimResourceManager,l),await Promise.all(l);const h=new o(this._cimResourceManager,c);let g;await h.analyzeSymbolReference(e.data,this._avoidSDF,n),i(s);for(const i of n)"CIMPictureMarker"!==i.cim.type&&"CIMPictureFill"!==i.cim.type&&"CIMPictureStroke"!==i.cim.type||(g||(g=[]),g.push(this._fetchPictureMarkerResource(i,s))),a&&"text"===i.type&&"string"==typeof i.text&&i.text.includes("[")&&(i.text=d(a,i.text,i.cim.textCase));return g&&await Promise.all(g),n}rasterizeCIMSymbol3D(e,t,a,i,r,o){const s=[];for(const n of e){i&&"function"==typeof i.scaleFactor&&(i.scaleFactor=i.scaleFactor(t,r,o));const e=this._getRasterizedResource(n,t,a,i,r,o);if(!e)continue;let c=0,l=e.anchorX||0,h=e.anchorY||0,m=!1,g=0,u=0;if("esriGeometryPoint"===a){const e=_(i);if(g=y(n.offsetX,t,r,o)*e||0,u=y(n.offsetY,t,r,o)*e||0,"marker"===n.type)c=y(n.rotation,t,r,o)||0,m=n.rotateClockwise??!1;else if("text"===n.type){if(c=y(n.angle,t,r,o)||0,void 0!==n.horizontalAlignment)switch(n.horizontalAlignment){case"left":l=-.5;break;case"right":l=.5;break;default:l=0}if(void 0!==n.verticalAlignment)switch(n.verticalAlignment){case"top":h=.5;break;case"bottom":h=-.5;break;case"baseline":h=-.25;break;default:h=0}}}null!=e&&s.push({angle:c,rotateClockWise:m,anchorX:l,anchorY:h,offsetX:g,offsetY:u,rasterizedResource:e})}return this.getSymbolImage(s)}getSymbolImage(e){const t=document.createElement("canvas"),i=a(t.getContext("2d"));let o=0,s=0,n=0,c=0;const l=[];for(let a=0;a<e.length;a++){const t=e[a],h=t.rasterizedResource;if(!h)continue;const m=h.size,g=t.offsetX,u=t.offsetY,f=t.anchorX,d=t.anchorY,y=t.rotateClockWise||!1;let p=t.angle,w=r(g)-m[0]*(.5+f),C=r(u)-m[1]*(.5+d),M=w+m[0],_=C+m[1];if(p){y&&(p=-p);const e=Math.sin(p*Math.PI/180),t=Math.cos(p*Math.PI/180),a=w*t-C*e,i=w*e+C*t,r=w*t-_*e,o=w*e+_*t,s=M*t-_*e,n=M*e+_*t,c=M*t-C*e,l=M*e+C*t;w=Math.min(a,r,s,c),C=Math.min(i,o,n,l),M=Math.max(a,r,s,c),_=Math.max(i,o,n,l)}o=w<o?w:o,s=C<s?C:s,n=M>n?M:n,c=_>c?_:c;const b=i.createImageData(h.size[0],h.size[1]);b.data.set(new Uint8ClampedArray(h.image.buffer));const z={offsetX:g,offsetY:u,rotateClockwise:y,angle:p,rasterizedImage:b,anchorX:f,anchorY:d};l.push(z)}t.width=n-o,t.height=c-s;const h=-o,m=c;for(let a=0;a<l.length;a++){const e=l[a],t=this._imageDataToCanvas(e.rasterizedImage),o=e.rasterizedImage.width,s=e.rasterizedImage.height,n=h-o*(.5+e.anchorX),c=m-s*(.5-e.anchorY);if(e.angle){const a=(360-e.angle)*Math.PI/180;i.save(),i.translate(r(e.offsetX),-r(e.offsetY)),i.translate(h,m),i.rotate(a),i.translate(-h,-m),i.drawImage(t,n,c),i.restore()}else i.drawImage(t,n+r(e.offsetX),c-r(e.offsetY))}const g=new C({x:h/t.width-.5,y:m/t.height-.5});return{imageData:0!==t.width&&0!==t.height?i.getImageData(0,0,t.width,t.height):i.createImageData(1,1),anchorPosition:g}}async _fetchPictureMarkerResource(e,a){const i=e.materialHash;if(!this._pictureMarkerCache.get(i)){const r=(await t(e.cim.url,{responseType:"image",signal:a&&a.signal})).data;this._pictureMarkerCache.set(i,r)}}_imageDataToCanvas(e){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const t=this._imageDataCanvas,i=a(t.getContext("2d"));return t.width=e.width,t.height=e.height,i.putImageData(e,0,0),t}_imageTo32Array(t,i,r,o){this._imageDataCanvas||(this._imageDataCanvas=document.createElement("canvas"));const s=this._imageDataCanvas,n=a(s.getContext("2d"));if(s.width=i,s.height=r,n.drawImage(t,0,0,i,r),o){n.save();const a=new e(o);n.fillStyle=a.toHex(),n.globalCompositeOperation="multiply",n.fillRect(0,0,i,r),n.globalCompositeOperation="destination-atop",n.drawImage(t,0,0,i,r),n.restore()}return new Uint32Array(n.getImageData(0,0,i,r).data.buffer)}_getRasterizedResource(e,t,i,r,o,s){let n,c,l;const h=null,m=null;if("text"===e.type)return this._rasterizeTextResource(e,t,r,o,s);({analyzedCIM:n,hash:c}=I(e,t,o,s));const g=_(r);if("CIMPictureMarker"===e.cim.type){const i=y(e.size,t,o,s)*g,{image:r,width:n,height:c}=a(this._getPictureResource(e,i,y(e.color,t,o,s)));return l={image:r,size:[n,c],sdf:!1,simplePattern:!1,anchorX:e.anchorPoint?e.anchorPoint.x:0,anchorY:e.anchorPoint?e.anchorPoint.y:0},l}w(n,g,{preserveOutlineWidth:!1});const u=n;c+=i,r&&(c+=JSON.stringify(r));const f=this._resourceCache;return f.has(c)?f.get(c):(l=this._rasterizer.rasterizeJSONResource({cim:u,type:e.type,url:e.url,mosaicHash:c,size:h,path:m},window.devicePixelRatio||1,this._avoidSDF),f.set(c,l),l)}_rasterizeTextResource(e,t,a,i,r){const o=_(a),s=y(e.text,t,i,r);if(!s||0===s.length)return null;const n=e.cim,c=y(n?.fontFamilyName||e.fontName,t,i,r),l=y(n?.font?.style||e.style,t,i,r),h=y(n?.font?.weight||e.weight,t,i,r),m=y(n?.font?.decoration||e.decoration,t,i,r),g=y(e.size,t,i,r)*o,u=y(e.horizontalAlignment,t,i,r),f=y(e.verticalAlignment,t,i,r),d=p(y(e.color,t,i,r)),w=p(y(e.outlineColor,t,i,r)),C=y(e.outlineSize,t,i,r),M=null!=e.backgroundColor?p(e.backgroundColor):null,b=null!=e.borderLineColor?p(e.borderLineColor):null,z=null!=e.borderLineWidth?e.borderLineWidth:null,v={color:d,size:g,horizontalAlignment:u,verticalAlignment:f,font:{family:c,style:l,weight:h,decoration:m},halo:{size:C||0,color:w,style:l},backgroundColor:M,borderLine:null!=b&&null!=z?{color:b,size:z}:null,pixelRatio:1,premultiplyColors:!this._avoidSDF};return this._textRasterizer.rasterizeText(s,v)}_getPictureResource(e,t,a){const i=this._pictureMarkerCache.get(e.materialHash);if(!i)return null;const o=i.height/i.width,s=t?o>1?r(t):r(t)/o:i.width,n=t?o>1?r(t)*o:r(t):i.height;return{image:this._imageTo32Array(i,s,n,a),width:s,height:n}}}function v(e,t,a,i){const r=1,o=-t/2+r,s=t/2-r,n=a/2-r,c=-a/2+r;switch(e){case"esriGeometryPoint":return{x:0,y:0};case"esriGeometryPolyline":return{paths:[[[o,0],[0,0],[s,0]]]};default:return"legend"===i?{rings:[[[o,n],[s,0],[s,c],[o,c],[o,n]]]}:{rings:[[[o,n],[s,n],[s,c],[o,c],[o,n]]]}}}function I(e,t,a,i){let r,o;if("function"==typeof e.materialHash){r=(0,e.materialHash)(t,a,i),o=s(e.cim,e.materialOverrides)}else r=e.materialHash,o=e.cim;return{analyzedCIM:o,hash:r}}export{z as CIMSymbolRasterizer,M as GeometryStyle};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{px2pt as e,pt2px as t}from"../../core/screenUtils.js";import{OverrideHelper as i,CIMSymbolHelper as l}from"../cim/CIMSymbolHelper.js";import{CIMSymbolRasterizer as
|
|
5
|
+
import{px2pt as e,pt2px as t}from"../../core/screenUtils.js";import{OverrideHelper as i,CIMSymbolHelper as l}from"../cim/CIMSymbolHelper.js";import{CIMSymbolRasterizer as r,GeometryStyle as n}from"../cim/CIMSymbolRasterizer.js";import{mapCIMSymbolToGeometryType as o}from"../cim/utils.js";import{SymbolSizeDefaults as a}from"./previewUtils.js";import{renderSymbol as s}from"./renderUtils.js";const c=new r(null,!0),h=e(a.size),m=e(a.maxSize),u=e(a.lineWidth),f=1;function y(e){const t=e?.size;if("number"==typeof t)return{width:t,height:t};return{width:null!=t&&"object"==typeof t&&"width"in t?t.width:null,height:null!=t&&"object"==typeof t&&"height"in t?t.height:null}}async function d(e,r={}){const{node:a,opacity:d,symbolConfig:g}=r,p=null!=g&&"object"==typeof g&&"isSquareFill"in g&&g.isSquareFill,w=r.cimOptions||r,b=w.geometryType||o(e?.data?.symbol),M=y(r),{feature:j,fieldMap:v}=w;if(null==M.width||null==M.height){const t=await i.resolveSymbolOverrides(e.data,j,null,v,b);if(!t)return null;(e=e.clone()).data={type:"CIMSymbolReference",symbol:t},e.data.primitiveOverrides=void 0;const r=[];l.fetchResources(t,c.resourceManager,r),l.fetchFonts(t,c.resourceManager,r),r.length>0&&await Promise.all(r);const n=l.getEnvelope(t,null,c.resourceManager),o=n?.width,a=n?.height;M.width="esriGeometryPolygon"===b?h:"esriGeometryPolyline"===b?u:null!=o&&isFinite(o)?Math.min(o,m):h,M.height="esriGeometryPolygon"===b?h:null!=a&&isFinite(a)?Math.max(Math.min(a,m),f):h}const S=await c.rasterizeCIMSymbolAsync(e,j,M,p||"esriGeometryPolygon"!==b?n.Preview:n.Legend,v,b);if(!S)return null;const{width:C,height:L}=S,I=document.createElement("canvas");I.width=C,I.height=L;I.getContext("2d").putImageData(S,0,0);const P=t(M.width),x=t(M.height),z=new Image(P,x);z.src=I.toDataURL(),z.ariaLabel=r.ariaLabel??null,z.alt=r.ariaLabel??"",null!=d&&(z.style.opacity=`${d}`);let F=z;if(null!=r.effectView){const e={shape:{type:"image",x:0,y:0,width:P,height:x,src:z.src},fill:null,stroke:null,offset:[0,0]};F=s([[e]],[P,x],{effectView:r.effectView,ariaLabel:r.ariaLabel})}return a&&F&&a.appendChild(F),F}export{d as previewCIMSymbol};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as o}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../core/Accessor.js";import e from"../../core/Collection.js";import{property as r}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as s}from"../../core/accessorSupport/decorators/subclass.js";import i from"../../layers/support/LOD.js";import{GeometryConstraint as n}from"./constraints/GeometryConstraint.js";import a from"./constraints/RotationConstraint.js";import m from"./constraints/ZoomConstraint.js";import c from"../../geometry/Extent.js";import l from"../../geometry/Polygon.js";const p={base:null,key:"type",typeMap:{extent:c,polygon:l}};let y=class extends t{constructor(o){super(o),this.lods=null,this.minScale=0,this.maxScale=0,this.minZoom=-1,this.maxZoom=-1,this.rotationEnabled=!0,this.snapToZoom=!0,this.customConstraints=new e}destroy(){this.view=null}get effectiveLODs(){return this._zoom.effectiveLODs}get effectiveMinScale(){return this._zoom.effectiveMinScale}get effectiveMaxScale(){return this._zoom.effectiveMaxScale}get effectiveMinZoom(){return this._zoom.effectiveMinZoom}get effectiveMaxZoom(){return this._zoom.effectiveMaxZoom}set geometry(o){o?this._set("geometry",o):this._set("geometry",null)}get version(){return`${this._zoom?.uid}/${this._rotation?.uid}/${this._geometry?.uid}`}get _geometry(){return new n({geometry:this.geometry,spatialReference:this.view?.constraintsInfo.spatialReference})}get _rotation(){return new a({rotationEnabled:this.rotationEnabled})}get _zoom(){const o=this._get("_zoom"),t=this.lods||this.view?.constraintsInfo.lods,e=this.minZoom,r=this.maxZoom,s=this.minScale,i=this.maxScale,n=this.snapToZoom;return o&&o.lods===t&&o.minZoom===e&&o.maxZoom===r&&o.minScale===s&&o.maxScale===i&&o.snapToZoom===n?o:new m({lods:t,minZoom:e,maxZoom:r,minScale:s,maxScale:i,snapToZoom:n})}canZoomInTo(o){const t=this.effectiveMaxScale;return 0===t||o>=t}canZoomOutTo(o){const t=this.effectiveMinScale;return 0===t||o<=t}constrain(o,t){return this._zoom.constrain(o,t),this._rotation.constrain(o,t),this._geometry.constrain(o,t),this.customConstraints.forEach((e=>e.constrain(o,t))),o}constrainByGeometry(o){return this._geometry.constrain(o)}fit(o){return this._zoom.fit(o)}zoomToScale(o){return this._zoom.zoomToScale(o)}scaleToZoom(o){return this._zoom.scaleToZoom(o)}snapScale(o){return this._zoom.snapToClosestScale(o)}snapToNextScale(o){return this._zoom.snapToNextScale(o)}snapToPreviousScale(o){return this._zoom.snapToPreviousScale(o)}};o([r({readOnly:!0})],y.prototype,"effectiveLODs",null),o([r({readOnly:!0})],y.prototype,"effectiveMinScale",null),o([r({readOnly:!0})],y.prototype,"effectiveMaxScale",null),o([r({readOnly:!0})],y.prototype,"effectiveMinZoom",null),o([r({readOnly:!0})],y.prototype,"effectiveMaxZoom",null),o([r({types:p,value:null})],y.prototype,"geometry",null),o([r({type:[i]})],y.prototype,"lods",void 0),o([r()],y.prototype,"minScale",void 0),o([r()],y.prototype,"maxScale",void 0),o([r()],y.prototype,"minZoom",void 0),o([r()],y.prototype,"maxZoom",void 0),o([r()],y.prototype,"rotationEnabled",void 0),o([r()],y.prototype,"snapToZoom",void 0),o([r({type:e})],y.prototype,"customConstraints",void 0),o([r()],y.prototype,"view",void 0),o([r({readOnly:!0})],y.prototype,"version",null),o([r({type:n})],y.prototype,"_geometry",null),o([r({type:a})],y.prototype,"_rotation",null),o([r({readOnly:!0,type:m})],y.prototype,"_zoom",null),y=o([s("esri.views.2d.MapViewConstraints")],y);const
|
|
5
|
+
import{_ as o}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../core/Accessor.js";import e from"../../core/Collection.js";import{property as r}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as s}from"../../core/accessorSupport/decorators/subclass.js";import i from"../../layers/support/LOD.js";import{GeometryConstraint as n}from"./constraints/GeometryConstraint.js";import a from"./constraints/RotationConstraint.js";import m from"./constraints/ZoomConstraint.js";import c from"../../geometry/Extent.js";import l from"../../geometry/Polygon.js";const p={base:null,key:"type",typeMap:{extent:c,polygon:l}};let y=class extends t{constructor(o){super(o),this.lods=null,this.minScale=0,this.maxScale=0,this.minZoom=-1,this.maxZoom=-1,this.rotationEnabled=!0,this.snapToZoom=!0,this.customConstraints=new e}destroy(){this.view=null}get effectiveLODs(){return this._zoom.effectiveLODs}get effectiveMinScale(){return this._zoom.effectiveMinScale}get effectiveMaxScale(){return this._zoom.effectiveMaxScale}get effectiveMinZoom(){return this._zoom.effectiveMinZoom}get effectiveMaxZoom(){return this._zoom.effectiveMaxZoom}set geometry(o){o?this._set("geometry",o):this._set("geometry",null)}get version(){return`${this._zoom?.uid}/${this._rotation?.uid}/${this._geometry?.uid}`}get _geometry(){const o=this._get("_geometry");return o&&this.geometry===o.geometry&&this.view?.constraintsInfo.spatialReference===o.spatialReference?o:new n({geometry:this.geometry,spatialReference:this.view?.constraintsInfo.spatialReference})}get _rotation(){return new a({rotationEnabled:this.rotationEnabled})}get _zoom(){const o=this._get("_zoom"),t=this.lods||this.view?.constraintsInfo.lods,e=this.minZoom,r=this.maxZoom,s=this.minScale,i=this.maxScale,n=this.snapToZoom;return o&&o.lods===t&&o.minZoom===e&&o.maxZoom===r&&o.minScale===s&&o.maxScale===i&&o.snapToZoom===n?o:new m({lods:t,minZoom:e,maxZoom:r,minScale:s,maxScale:i,snapToZoom:n})}canZoomInTo(o){const t=this.effectiveMaxScale;return 0===t||o>=t}canZoomOutTo(o){const t=this.effectiveMinScale;return 0===t||o<=t}constrain(o,t){return this._zoom.constrain(o,t),this._rotation.constrain(o,t),this._geometry.constrain(o,t),this.customConstraints.forEach((e=>e.constrain(o,t))),o}constrainByGeometry(o){return this._geometry.constrain(o)}fit(o){return this._zoom.fit(o)}zoomToScale(o){return this._zoom.zoomToScale(o)}scaleToZoom(o){return this._zoom.scaleToZoom(o)}snapScale(o){return this._zoom.snapToClosestScale(o)}snapToNextScale(o){return this._zoom.snapToNextScale(o)}snapToPreviousScale(o){return this._zoom.snapToPreviousScale(o)}};o([r({readOnly:!0})],y.prototype,"effectiveLODs",null),o([r({readOnly:!0})],y.prototype,"effectiveMinScale",null),o([r({readOnly:!0})],y.prototype,"effectiveMaxScale",null),o([r({readOnly:!0})],y.prototype,"effectiveMinZoom",null),o([r({readOnly:!0})],y.prototype,"effectiveMaxZoom",null),o([r({types:p,value:null})],y.prototype,"geometry",null),o([r({type:[i]})],y.prototype,"lods",void 0),o([r()],y.prototype,"minScale",void 0),o([r()],y.prototype,"maxScale",void 0),o([r()],y.prototype,"minZoom",void 0),o([r()],y.prototype,"maxZoom",void 0),o([r()],y.prototype,"rotationEnabled",void 0),o([r()],y.prototype,"snapToZoom",void 0),o([r({type:e})],y.prototype,"customConstraints",void 0),o([r()],y.prototype,"view",void 0),o([r({readOnly:!0})],y.prototype,"version",null),o([r({type:n,readOnly:!0})],y.prototype,"_geometry",null),o([r({type:a})],y.prototype,"_rotation",null),o([r({readOnly:!0,type:m})],y.prototype,"_zoom",null),y=o([s("esri.views.2d.MapViewConstraints")],y);const f=y;export{f as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isSome as e}from"../../../../core/arrayUtils.js";import t from"../../../../core/Error.js";import has from"../../../../core/has.js";import r from"../../../../core/Logger.js";import{pt2px as i}from"../../../../core/screenUtils.js";import{sqlAnd as n}from"../../../../core/sql.js";import{diff as s}from"../../../../core/accessorSupport/diffUtils.js";import{validateLabelingInfo as l}from"../../../../layers/support/labelingInfo.js";import{WGLSymbologyType as o}from"../../engine/webgl/enums.js";import{getVVType as a}from"../../engine/webgl/Utils.js";import{getTechniqueFromRenderer as u}from"../../engine/webgl/techniques/utils.js";import{getVVFlags as d}from"../../engine/webgl/util/vvFlagUtils.js";import{createSymbolSchema as f}from"./createSymbolSchema.js";import{getPtMaxVVSize as p}from"./support/pixelBuffering.js";import{getSupportedHeatmapRenderer as c,simplifyVisualVariables as y}from"./support/rendererUtils.js";import{injectDynamicLevelDependentSizeVisualVariable as m,createClusterRenderer as g}from"../support/clusterUtils.js";import{toJSONGeometryType as b}from"../support/util.js";const x=r.getLogger("esri.views.2d.layers.features.schemaUtils"),h="ValidationError";function v(e){return e}function T(e,t){let r=0,i=0,n=o.DEFAULT;if(null!=e){if(i=p(e,t),"visualVariables"in e&&(r=d(e.visualVariables||[]),"dot-density"===e.type&&(n=o.DOT_DENSITY)),"heatmap"===e.type&&(n=o.HEATMAP),"dictionary"===e.type)return{maxVVSize:i,vvFlags:r,symbologyType:o.DEFAULT};if("pie-chart"===e.type)return{maxVVSize:i,vvFlags:r,symbologyType:o.PIE_CHART};if(n!==o.DOT_DENSITY&&n!==o.HEATMAP){const t=e.getSymbols();"backgroundFillSymbol"in e&&e.backgroundFillSymbol&&t.push(e.backgroundFillSymbol);let r=!0,i=!0;for(const e of t)if("cim"===e.type&&(i=!1),"simple-fill"===e.type||"picture-fill"===e.type){const t=e.outline,n=t&&"none"!==t.style&&"solid"!==t.style,s="simple-fill"===e.type&&"none"!==e.style&&"solid"!==e.style;n&&(r=!1),("picture-fill"===e.type||s||n)&&(i=!1)}r?n=i?o.OUTLINE_FILL_SIMPLE:o.OUTLINE_FILL:i&&(n=o.SIMPLE)}}return{vvFlags:r,maxVVSize:i,symbologyType:n}}let S=null;function E(e){if(has("esri-2d-update-debug")){const t=w(e,!0);console.debug("Created new schema",t),console.debug("Schema diff",s(S,t)),S=t}return w(e)}function w(e,t=!1){try{const r=R(e,t),i=D(e),s={};r.map((t=>F(s,e,t)));const l=null!=e.subtypeCode?`${e.subtypeField} = ${e.subtypeCode}`:null,o=n(e.definitionExpression,l);return{source:{definitionExpression:o,fields:e.fields.map((e=>e.toJSON())),gdbVersion:e.gdbVersion,historicMoment:e.historicMoment?.getTime(),outFields:e.availableFields,pixelBuffer:e.pixelBuffer,spatialReference:e.spatialReference.toJSON(),timeExtent:e.timeExtent?.toJSON(),customParameters:e.customParameters},attributes:{fields:{},indexCount:0},processors:r,tileRenderer:i,targets:s}}catch(r){if(r.fieldName===h)return x.error(r),null;throw r}}function F(e,r,i){switch(i.target){case"feature":return void O(e,V(r),i);case"aggregate":{if(!("featureReduction"in r))return;const n=r.featureReduction;switch(n?.type){case"selection":throw new t(h,"Mapview does not support `selection` reduction type",n);case"binning":return O(e,V(r),i),void N(e,n,r.fields.map((e=>e.toJSON())),i);case"cluster":return O(e,V(r),i),void L(e,n,r.fields.map((e=>e.toJSON())),i)}}}}function I(e,t){for(const r in t){const i=t[r];if(i.target!==e.name)continue;const n=e.attributes[r];if(n?.context){const e=n.context;e.mesh=e.mesh||i.context?.mesh,e.storage=e.storage||i.context?.storage}else e.attributes[r]=i}return e}function V(e){return[e.filter?.toJSON()??null,e.featureEffect?.filter?.toJSON()??null]}function O(e,t,r){return e.feature||(e.feature={name:"feature",input:"source",filters:t,attributes:{}}),I(e.feature,r.attributes.fields),e}function z(e,r){const{onStatisticExpression:i,onStatisticField:n,statisticType:s}=e;switch(s){case"min":case"max":case"avg":case"avg_angle":case"sum":case"count":return"esriFieldTypeDouble";case"mode":{if(i){const{returnType:r}=i;return r?"string"===r?"esriFieldTypeString":"esriFieldTypeDouble":(x.error(new t(h,"Unable to infer type of aggregateField with onStatisticExpression. ReturnType is not defined",e)),"esriFieldTypeString")}const s=r.find((e=>e.name===n));return s?s.type:(x.error(new t(h,"Unable to infer type of aggregateField with onStatisticExpression. ReturnType is not defined",e)),"esriFieldTypeString")}}}function N(e,t,r,i){return e.aggregate||(e.aggregate={name:"aggregate",type:"bin",filters:null,input:"feature",params:{fixedBinLevel:t.fixedBinLevel,fields:(t.fields??[]).map((e=>({...e.toJSON(),type:z(e,r)})))},attributes:{}}),I(e.aggregate,i.attributes.fields),e}function L(e,t,r,n){const s=n.aggregateFields??[],l=new Set;for(const i of s)l.add(i.name);for(const i of t?.fields??[])l.has(i.name)||s.push(i);return e.aggregate||(e.aggregate={name:"aggregate",type:"cluster",input:"feature",filters:null,attributes:{},params:{clusterRadius:i(t.clusterRadius/2),clusterPixelBuffer:64*Math.ceil(i(t.clusterMaxSize)/64),fields:s.map((e=>({...e.toJSON(),type:z(e,r)})))}}),I(e.aggregate,n.attributes.fields),e}function M(e,t){return t.field?j(e,{...t,type:"field",field:t.field}):t.valueExpression?j(e,{...t,type:"expression",valueExpression:t.valueExpression}):{field:void 0,fieldIndex:void 0}}function j(e,t){switch(t.type){case"expression":{const r=v(t.valueExpression);if(!e.fields[r]){const i=e.indexCount++;e.fields[r]={...t,name:r,fieldIndex:i}}return{fieldIndex:e.fields[r].fieldIndex}}case"label-expression":{const r=v(JSON.stringify(t.label));if(!e.fields[r]){const i=e.indexCount++;e.fields[r]={...t,name:r,fieldIndex:i}}return{fieldIndex:e.fields[r].fieldIndex}}case"field":{const r=t.field;return"aggregate"===t.target&&e.fields[r]||(e.fields[r]={...t,name:r}),{field:r}}case"statistic":return e.fields[t.name]={...t},{field:t.name}}}function R(e,t=!1){const r=new Array;let i=0;return r.push(A(e,i++,t)),r}function U(e,t,r,i,n,s=!1){const l=j(e,{type:"label-expression",target:r,context:{mesh:!0},resultType:"string",label:{labelExpression:t.labelExpression,labelExpressionInfo:t.labelExpressionInfo?{expression:t.labelExpressionInfo.expression}:null,symbol:!!t.symbol,where:t.where}}),{fieldIndex:o}=l;return{...f(t,n,s),fieldIndex:o,target:r,index:i}}function B(e,r,i){const n="featureReduction"in r&&r.featureReduction;if(!n)return{fields:[],labels:[],matcher:void 0,rendererOverride:void 0};const s="aggregate",o=[];let a=null,u=b(r.geometryType),d=[],p=null;if(n)switch(n.type){case"selection":return x.error(new t(h,"Mapview does not support `selection` reduction type",n)),{fields:[],labels:[],matcher:void 0,rendererOverride:void 0};case"cluster":case"binning":if(o.push(...n.fields??[]),"cluster"===n.type?u="esriGeometryPoint":"binning"===n.type&&(u="esriGeometryPolygon"),n.renderer&&!n.renderer.authoringInfo?.isAutoGenerated){if("cluster"===n.type){const{renderer:e}=m(n.renderer,n,null);p=e}else p=n.renderer;const t=T(n.renderer,n);a=_(e,s,n.renderer,t,i),d=n&&n.labelsVisible&&n.labelingInfo||[]}else if("cluster"===n.type){if(p=g(o,r.renderer,n,null,!0),n.symbol){const e=T(p,n);a={type:"simple",symbol:f(n.symbol,e,i),symbologyType:e.symbologyType}}d=n&&n.labelsVisible&&n.labelingInfo||[]}}k(e,o);return{labels:l(d,"binning"===n.type?"esriGeometryPolygon":u),matcher:a,fields:o,rendererOverride:p}}function A(e,r,i=!1){const n={indexCount:0,fields:{}},s="featureReduction"in e?e.featureReduction??void 0:void 0,a=s?"aggregate":"feature";if("sublayers"in e){const r={type:"subtype",subtypeField:e.subtypeField,renderers:{},symbologyType:o.DEFAULT},s={type:"subtype",mapping:{},target:"feature",subtypeField:e.subtypeField},l={type:"subtype",classes:{}},u={type:"symbol",target:"feature",aggregateFields:[],attributes:n,storage:s,mesh:{matcher:r,aggregateMatcher:null,labels:l,sortKey:null}},f=new Set;let p=0;for(const{renderer:c,subtypeCode:y,labelingInfo:m,labelsVisible:g}of e.sublayers){let e=0;"visualVariables"in c&&c.visualVariables&&(c.visualVariables.some((e=>"rotation"!==e.type))&&x.warnOnce("SubtypeGroupLayer currently only supports rotation visualVariables. All other visualVariable types will be ignored."),e=d(c.visualVariables.filter((e=>"size"!==e.type))));const u={symbologyType:o.DEFAULT,vvFlags:e,maxVVSize:0},b=_(n,a,c,u,i),v=C(n,a,c),T=g&&m;if("dictionary"===b.type)throw new t(h,"Dictionary renderer is not supported in subtype layers");if("subtype"===b.type)throw new t(h,"Nested subtype renderers is not supported");if(null!=v&&"subtype"===v.type)throw new t(h,"Nested subtype storage is not supported");if(null!=v&&null!=v.attributeMapping)throw new t(h,"Non-visual-variable attributes are not supported in subtype layers");if("heatmap"===b.type)throw new t(h,"Heatmaps are not supported in subtype layers");if("pie-chart"===b.type)throw new t(h,"Pie-charts are not supported in subtype layers");if(f.has(y))throw new t(h,"Subtype codes for sublayers must be unique");f.add(y),r.renderers[y]=b,s.mapping[y]=v,T&&(l.classes[y]=T.map((e=>U(n,e,"feature",p++,u,i))))}return u}if("heatmap"===e.renderer?.type&&"raster"===c()){const{radius:t,fieldOffset:r,field:i}=e.renderer;return{type:"heatmap",aggregateFields:[],attributes:n,target:a,storage:null,mesh:{radius:t,fieldOffset:r,field:M(n,{target:a,field:i,resultType:"numeric"}).field}}}const u=B(n,e,i),f=b(e.geometryType),p=u.rendererOverride??e.renderer,y=T(p,s),m=_(n,a,p,y,i),g=C(n,a,p),v=P(n,e.orderBy,e.renderer,s),S=e.labelsVisible&&e.labelingInfo||[],E=l(S,f);let w=0;const F=[...E.map((e=>U(n,e,"feature",w++,y,i))),...u.labels.map((e=>U(n,e,"aggregate",w++,y,i)))];return{type:"symbol",target:a,attributes:n,aggregateFields:u.fields,storage:g,mesh:{matcher:m,labels:{type:"simple",classes:F},aggregateMatcher:u.matcher,sortKey:v}}}function D(e){return"heatmap"===e.renderer?.type&&"raster"===c()?{type:"heatmap"}:{type:"symbol"}}function P(e,r,i,n){if(null!=n)return null;if(null!=r&&r.length){r.length>1&&x.warn(`Layer rendering currently only supports ordering by 1 orderByInfo, but found ${r.length}. All but the first will be discarded`);const i=r[0],n="ascending"===i.order?"asc":"desc";if(i.field)return{field:i.field,order:n};if(i.valueExpression){return{fieldIndex:j(e,{type:"expression",target:"feature",valueExpression:i.valueExpression,resultType:"numeric"}).fieldIndex,order:n}}return x.error(new t(h,"Expected to find a field or valueExpression for OrderByInfo",i)),null}if(null!=i&&"unique-value"===i.type&&i.orderByClassesEnabled){return{byRenderer:!0,order:"asc"}}return null}function k(e,t){const r={mesh:!0,storage:!0};for(const i of t){const{name:t,onStatisticField:n,onStatisticExpression:s,statisticType:l}=i;let o,a;const u="numeric",d="feature";if(s){a=j(e,{type:"expression",target:d,valueExpression:s.expression,resultType:u}).fieldIndex}else{o=j(e,{type:"field",target:d,field:n,resultType:u}).field}j(e,{type:"statistic",target:"aggregate",name:t,context:r,inField:o,inFieldIndex:a,statisticType:l})}}function C(e,t,r){let i;switch(r.type){case"simple":case"class-breaks":case"unique-value":case"dictionary":i={visualVariables:!0,attributes:null};break;default:i=u(r).getStorageSpec(r)}return J(e,t,i,r)}function J(e,t,r,i){if(null==r)return null;const{visualVariables:n,attributes:s}=r;let l=null;n&&"visualVariables"in i&&(l=q(e,t,i.visualVariables));const o=null!=l?4:0;let a=null;return null!=s&&(a=s.map(((r,i)=>{const{field:n,fieldIndex:s}=M(e,{valueExpression:r.valueExpression,field:r.field,resultType:"numeric",target:t});return{binding:i+o,field:n,fieldIndex:s}}))),{type:"simple",target:t,attributeMapping:a,vvMapping:l}}function q(t,r,i){if(!i||!i.length)return[];const n={storage:!0},s="numeric";return y(i).map((e=>{const i=a(e.type),{field:l,fieldIndex:o}=M(t,{target:r,valueExpression:e.valueExpression,field:e.field,context:n,resultType:s});switch(e.type){case"size":return"$view.scale"===e.valueExpression?null:{type:"size",binding:i,field:l,fieldIndex:o,normalizationField:M(t,{target:r,field:e.normalizationField,context:n,resultType:s}).field,valueRepresentation:e.valueRepresentation??null};case"color":return{type:"color",binding:i,field:l,fieldIndex:o,normalizationField:M(t,{target:r,field:e.normalizationField,context:n,resultType:s}).field};case"opacity":return{type:"opacity",binding:i,field:l,fieldIndex:o,normalizationField:M(t,{target:r,field:e.normalizationField,context:n,resultType:s}).field};case"rotation":return{type:"rotation",binding:i,field:l,fieldIndex:o}}})).filter(e)}function _(e,t,r,i,n=!1){const s=e??{indexCount:0,fields:{}};switch(r.type){case"simple":case"dot-density":return G(s,r,i,n);case"class-breaks":return $(s,t,r,i,n);case"unique-value":return K(s,t,r,i,n);case"dictionary":return Y(s,r,i,n);case"heatmap":return Q(s,r,i,n);case"pie-chart":return H(s,r,i,n)}}function G(e,t,r,i=!1){const n=t.getSymbols(),s=n.length?n[0]:null;return{type:"simple",symbol:f(s,r,i),symbologyType:r.symbologyType}}function H(e,t,r,i=!1){const n=t.getSymbols(),s=n[0],l=n.length>1?n[1]:null;return{type:"pie-chart",markerSymbol:f(s,r,i),fillSymbol:f(l,r,i),symbologyType:r.symbologyType}}function $(e,t,r,i,n=!1){const s={mesh:!0,use:"renderer.field"},l=r.backgroundFillSymbol,{field:o,fieldIndex:a}=M(e,{target:t,field:r.field,valueExpression:r.valueExpression,resultType:"numeric",context:s}),u=r.normalizationType,d="log"===u?"esriNormalizeByLog":"percent-of-total"===u?"esriNormalizeByPercentOfTotal":"field"===u?"esriNormalizeByField":null,p=r.classBreakInfos.map((e=>({symbol:f(e.symbol,i,n),min:e.minValue,max:e.maxValue}))).sort(((e,t)=>e.min-t.min));return{type:"interval",attributes:e.fields,field:o,fieldIndex:a,backgroundFillSymbol:f(l,i,n),defaultSymbol:f(r.defaultSymbol,i,n),intervals:p,normalizationField:r.normalizationField,normalizationTotal:r.normalizationTotal,normalizationType:d,isMaxInclusive:r.isMaxInclusive,symbologyType:i.symbologyType}}function K(e,r,i,n,s=!1){const l=[],o=i.backgroundFillSymbol,a={target:r,context:{mesh:!0},resultType:"string"};if(i.field&&"string"!=typeof i.field)throw new t(h,"Expected renderer.field to be a string",i);const{field:u,fieldIndex:d}=M(e,{...a,field:i.field,valueExpression:i.valueExpression});for(const t of i.uniqueValueInfos??[])l.push({value:""+t.value,symbol:f(t.symbol,n,s)});return{type:"map",attributes:e.fields,field:u,fieldIndex:d,field2:M(e,{...a,field:i.field2}).field,field3:M(e,{...a,field:i.field3}).field,fieldDelimiter:i.fieldDelimiter??void 0,backgroundFillSymbol:f(o,n),defaultSymbol:f(i.defaultSymbol,n),map:l,symbologyType:n.symbologyType}}function Y(e,t,r,i=!1){return{type:"dictionary",config:t.config,fieldMap:t.fieldMap,scaleExpression:t.scaleExpression,url:t.url,symbolOptions:r,symbologyType:r.symbologyType}}function Q(e,t,r,i=!1){const n=t.getSymbols(),s=n.length?n[0]:null;return{type:"heatmap",symbol:f(s,r,i),symbologyType:r.symbologyType}}export{k as addAggregateFields,_ as createMatcherSchema,M as createRendererAttributeSchema,E as createSchema,f as createSymbolSchema,T as createSymbolSchemaOptions};
|
|
5
|
+
import{isSome as e}from"../../../../core/arrayUtils.js";import t from"../../../../core/Error.js";import has from"../../../../core/has.js";import r from"../../../../core/Logger.js";import{pt2px as i}from"../../../../core/screenUtils.js";import{sqlAnd as n}from"../../../../core/sql.js";import{diff as s}from"../../../../core/accessorSupport/diffUtils.js";import{validateLabelingInfo as l}from"../../../../layers/support/labelingInfo.js";import{WGLSymbologyType as o}from"../../engine/webgl/enums.js";import{getVVType as a}from"../../engine/webgl/Utils.js";import{getTechniqueFromRenderer as u}from"../../engine/webgl/techniques/utils.js";import{getVVFlags as d}from"../../engine/webgl/util/vvFlagUtils.js";import{createSymbolSchema as f}from"./createSymbolSchema.js";import{getPtMaxVVSize as p}from"./support/pixelBuffering.js";import{getSupportedHeatmapRenderer as c,simplifyVisualVariables as y}from"./support/rendererUtils.js";import{injectDynamicLevelDependentSizeVisualVariable as m,createClusterRenderer as g}from"../support/clusterUtils.js";import{toJSONGeometryType as b}from"../support/util.js";const x=r.getLogger("esri.views.2d.layers.features.schemaUtils"),h="ValidationError";function v(e){return e}function T(e,t){let r=0,i=0,n=o.DEFAULT;if(null!=e){if(i=p(e,t),"visualVariables"in e&&(r=d(e.visualVariables||[]),"dot-density"===e.type&&(n=o.DOT_DENSITY)),"heatmap"===e.type&&(n=o.HEATMAP),"dictionary"===e.type)return{maxVVSize:i,vvFlags:r,symbologyType:o.DEFAULT};if("pie-chart"===e.type)return{maxVVSize:i,vvFlags:r,symbologyType:o.PIE_CHART};if(n!==o.DOT_DENSITY&&n!==o.HEATMAP){const t=e.getSymbols();"backgroundFillSymbol"in e&&e.backgroundFillSymbol&&t.push(e.backgroundFillSymbol);let r=!0,i=!0;for(const e of t)if("cim"!==e.type&&"web-style"!==e.type||(i=!1),"simple-fill"===e.type||"picture-fill"===e.type){const t=e.outline,n=t&&"none"!==t.style&&"solid"!==t.style,s="simple-fill"===e.type&&"none"!==e.style&&"solid"!==e.style;n&&(r=!1),("picture-fill"===e.type||s||n)&&(i=!1)}r?n=i?o.OUTLINE_FILL_SIMPLE:o.OUTLINE_FILL:i&&(n=o.SIMPLE)}}return{vvFlags:r,maxVVSize:i,symbologyType:n}}let S=null;function w(e){if(has("esri-2d-update-debug")){const t=E(e,!0);console.debug("Created new schema",t),console.debug("Schema diff",s(S,t)),S=t}return E(e)}function E(e,t=!1){try{const r=R(e,t),i=D(e),s={};r.map((t=>F(s,e,t)));const l=null!=e.subtypeCode?`${e.subtypeField} = ${e.subtypeCode}`:null,o=n(e.definitionExpression,l);return{source:{definitionExpression:o,fields:e.fields.map((e=>e.toJSON())),gdbVersion:e.gdbVersion,historicMoment:e.historicMoment?.getTime(),outFields:e.availableFields,pixelBuffer:e.pixelBuffer,spatialReference:e.spatialReference.toJSON(),timeExtent:e.timeExtent?.toJSON(),customParameters:e.customParameters},attributes:{fields:{},indexCount:0},processors:r,tileRenderer:i,targets:s}}catch(r){if(r.fieldName===h)return x.error(r),null;throw r}}function F(e,r,i){switch(i.target){case"feature":return void O(e,V(r),i);case"aggregate":{if(!("featureReduction"in r))return;const n=r.featureReduction;switch(n?.type){case"selection":throw new t(h,"Mapview does not support `selection` reduction type",n);case"binning":return O(e,V(r),i),void N(e,n,r.fields.map((e=>e.toJSON())),i);case"cluster":return O(e,V(r),i),void L(e,n,r.fields.map((e=>e.toJSON())),i)}}}}function I(e,t){for(const r in t){const i=t[r];if(i.target!==e.name)continue;const n=e.attributes[r];if(n?.context){const e=n.context;e.mesh=e.mesh||i.context?.mesh,e.storage=e.storage||i.context?.storage}else e.attributes[r]=i}return e}function V(e){return[e.filter?.toJSON()??null,e.featureEffect?.filter?.toJSON()??null]}function O(e,t,r){return e.feature||(e.feature={name:"feature",input:"source",filters:t,attributes:{}}),I(e.feature,r.attributes.fields),e}function z(e,r){const{onStatisticExpression:i,onStatisticField:n,statisticType:s}=e;switch(s){case"min":case"max":case"avg":case"avg_angle":case"sum":case"count":return"esriFieldTypeDouble";case"mode":{if(i){const{returnType:r}=i;return r?"string"===r?"esriFieldTypeString":"esriFieldTypeDouble":(x.error(new t(h,"Unable to infer type of aggregateField with onStatisticExpression. ReturnType is not defined",e)),"esriFieldTypeString")}const s=r.find((e=>e.name===n));return s?s.type:(x.error(new t(h,"Unable to infer type of aggregateField with onStatisticExpression. ReturnType is not defined",e)),"esriFieldTypeString")}}}function N(e,t,r,i){return e.aggregate||(e.aggregate={name:"aggregate",type:"bin",filters:null,input:"feature",params:{fixedBinLevel:t.fixedBinLevel,fields:(t.fields??[]).map((e=>({...e.toJSON(),type:z(e,r)})))},attributes:{}}),I(e.aggregate,i.attributes.fields),e}function L(e,t,r,n){const s=n.aggregateFields??[],l=new Set;for(const i of s)l.add(i.name);for(const i of t?.fields??[])l.has(i.name)||s.push(i);return e.aggregate||(e.aggregate={name:"aggregate",type:"cluster",input:"feature",filters:null,attributes:{},params:{clusterRadius:i(t.clusterRadius/2),clusterPixelBuffer:64*Math.ceil(i(t.clusterMaxSize)/64),fields:s.map((e=>({...e.toJSON(),type:z(e,r)})))}}),I(e.aggregate,n.attributes.fields),e}function M(e,t){return t.field?j(e,{...t,type:"field",field:t.field}):t.valueExpression?j(e,{...t,type:"expression",valueExpression:t.valueExpression}):{field:void 0,fieldIndex:void 0}}function j(e,t){switch(t.type){case"expression":{const r=v(t.valueExpression);if(!e.fields[r]){const i=e.indexCount++;e.fields[r]={...t,name:r,fieldIndex:i}}return{fieldIndex:e.fields[r].fieldIndex}}case"label-expression":{const r=v(JSON.stringify(t.label));if(!e.fields[r]){const i=e.indexCount++;e.fields[r]={...t,name:r,fieldIndex:i}}return{fieldIndex:e.fields[r].fieldIndex}}case"field":{const r=t.field;return"aggregate"===t.target&&e.fields[r]||(e.fields[r]={...t,name:r}),{field:r}}case"statistic":return e.fields[t.name]={...t},{field:t.name}}}function R(e,t=!1){const r=new Array;let i=0;return r.push(A(e,i++,t)),r}function U(e,t,r,i,n,s=!1){const l=j(e,{type:"label-expression",target:r,context:{mesh:!0},resultType:"string",label:{labelExpression:t.labelExpression,labelExpressionInfo:t.labelExpressionInfo?{expression:t.labelExpressionInfo.expression}:null,symbol:!!t.symbol,where:t.where}}),{fieldIndex:o}=l;return{...f(t,n,s),fieldIndex:o,target:r,index:i}}function B(e,r,i){const n="featureReduction"in r&&r.featureReduction;if(!n)return{fields:[],labels:[],matcher:void 0,rendererOverride:void 0};const s="aggregate",o=[];let a=null,u=b(r.geometryType),d=[],p=null;if(n)switch(n.type){case"selection":return x.error(new t(h,"Mapview does not support `selection` reduction type",n)),{fields:[],labels:[],matcher:void 0,rendererOverride:void 0};case"cluster":case"binning":if(o.push(...n.fields??[]),"cluster"===n.type?u="esriGeometryPoint":"binning"===n.type&&(u="esriGeometryPolygon"),n.renderer&&!n.renderer.authoringInfo?.isAutoGenerated){if("cluster"===n.type){const{renderer:e}=m(n.renderer,n,null);p=e}else p=n.renderer;const t=T(n.renderer,n);a=_(e,s,n.renderer,t,i),d=n&&n.labelsVisible&&n.labelingInfo||[]}else if("cluster"===n.type){if(p=g(o,r.renderer,n,null,!0),n.symbol){const e=T(p,n);a={type:"simple",symbol:f(n.symbol,e,i),symbologyType:e.symbologyType}}d=n&&n.labelsVisible&&n.labelingInfo||[]}}k(e,o);return{labels:l(d,"binning"===n.type?"esriGeometryPolygon":u),matcher:a,fields:o,rendererOverride:p}}function A(e,r,i=!1){const n={indexCount:0,fields:{}},s="featureReduction"in e?e.featureReduction??void 0:void 0,a=s?"aggregate":"feature";if("sublayers"in e){const r={type:"subtype",subtypeField:e.subtypeField,renderers:{},symbologyType:o.DEFAULT},s={type:"subtype",mapping:{},target:"feature",subtypeField:e.subtypeField},l={type:"subtype",classes:{}},u={type:"symbol",target:"feature",aggregateFields:[],attributes:n,storage:s,mesh:{matcher:r,aggregateMatcher:null,labels:l,sortKey:null}},f=new Set;let p=0;for(const{renderer:c,subtypeCode:y,labelingInfo:m,labelsVisible:g}of e.sublayers){let e=0;"visualVariables"in c&&c.visualVariables&&(c.visualVariables.some((e=>"rotation"!==e.type))&&x.warnOnce("SubtypeGroupLayer currently only supports rotation visualVariables. All other visualVariable types will be ignored."),e=d(c.visualVariables.filter((e=>"size"!==e.type))));const u={symbologyType:o.DEFAULT,vvFlags:e,maxVVSize:0},b=_(n,a,c,u,i),v=C(n,a,c),T=g&&m;if("dictionary"===b.type)throw new t(h,"Dictionary renderer is not supported in subtype layers");if("subtype"===b.type)throw new t(h,"Nested subtype renderers is not supported");if(null!=v&&"subtype"===v.type)throw new t(h,"Nested subtype storage is not supported");if(null!=v&&null!=v.attributeMapping)throw new t(h,"Non-visual-variable attributes are not supported in subtype layers");if("heatmap"===b.type)throw new t(h,"Heatmaps are not supported in subtype layers");if("pie-chart"===b.type)throw new t(h,"Pie-charts are not supported in subtype layers");if(f.has(y))throw new t(h,"Subtype codes for sublayers must be unique");f.add(y),r.renderers[y]=b,s.mapping[y]=v,T&&(l.classes[y]=T.map((e=>U(n,e,"feature",p++,u,i))))}return u}if("heatmap"===e.renderer?.type&&"raster"===c()){const{radius:t,fieldOffset:r,field:i}=e.renderer;return{type:"heatmap",aggregateFields:[],attributes:n,target:a,storage:null,mesh:{radius:t,fieldOffset:r,field:M(n,{target:a,field:i,resultType:"numeric"}).field}}}const u=B(n,e,i),f=b(e.geometryType),p=u.rendererOverride??e.renderer,y=T(p,s),m=_(n,a,p,y,i),g=C(n,a,p),v=P(n,e.orderBy,e.renderer,s),S=e.labelsVisible&&e.labelingInfo||[],w=l(S,f);let E=0;const F=[...w.map((e=>U(n,e,"feature",E++,y,i))),...u.labels.map((e=>U(n,e,"aggregate",E++,y,i)))];return{type:"symbol",target:a,attributes:n,aggregateFields:u.fields,storage:g,mesh:{matcher:m,labels:{type:"simple",classes:F},aggregateMatcher:u.matcher,sortKey:v}}}function D(e){return"heatmap"===e.renderer?.type&&"raster"===c()?{type:"heatmap"}:{type:"symbol"}}function P(e,r,i,n){if(null!=n)return null;if(null!=r&&r.length){r.length>1&&x.warn(`Layer rendering currently only supports ordering by 1 orderByInfo, but found ${r.length}. All but the first will be discarded`);const i=r[0],n="ascending"===i.order?"asc":"desc";if(i.field)return{field:i.field,order:n};if(i.valueExpression){return{fieldIndex:j(e,{type:"expression",target:"feature",valueExpression:i.valueExpression,resultType:"numeric"}).fieldIndex,order:n}}return x.error(new t(h,"Expected to find a field or valueExpression for OrderByInfo",i)),null}if(null!=i&&"unique-value"===i.type&&i.orderByClassesEnabled){return{byRenderer:!0,order:"asc"}}return null}function k(e,t){const r={mesh:!0,storage:!0};for(const i of t){const{name:t,onStatisticField:n,onStatisticExpression:s,statisticType:l}=i;let o,a;const u="numeric",d="feature";if(s){a=j(e,{type:"expression",target:d,valueExpression:s.expression,resultType:u}).fieldIndex}else{o=j(e,{type:"field",target:d,field:n,resultType:u}).field}j(e,{type:"statistic",target:"aggregate",name:t,context:r,inField:o,inFieldIndex:a,statisticType:l})}}function C(e,t,r){let i;switch(r.type){case"simple":case"class-breaks":case"unique-value":case"dictionary":i={visualVariables:!0,attributes:null};break;default:i=u(r).getStorageSpec(r)}return J(e,t,i,r)}function J(e,t,r,i){if(null==r)return null;const{visualVariables:n,attributes:s}=r;let l=null;n&&"visualVariables"in i&&(l=q(e,t,i.visualVariables));const o=null!=l?4:0;let a=null;return null!=s&&(a=s.map(((r,i)=>{const{field:n,fieldIndex:s}=M(e,{valueExpression:r.valueExpression,field:r.field,resultType:"numeric",target:t});return{binding:i+o,field:n,fieldIndex:s}}))),{type:"simple",target:t,attributeMapping:a,vvMapping:l}}function q(t,r,i){if(!i||!i.length)return[];const n={storage:!0},s="numeric";return y(i).map((e=>{const i=a(e.type),{field:l,fieldIndex:o}=M(t,{target:r,valueExpression:e.valueExpression,field:e.field,context:n,resultType:s});switch(e.type){case"size":return"$view.scale"===e.valueExpression?null:{type:"size",binding:i,field:l,fieldIndex:o,normalizationField:M(t,{target:r,field:e.normalizationField,context:n,resultType:s}).field,valueRepresentation:e.valueRepresentation??null};case"color":return{type:"color",binding:i,field:l,fieldIndex:o,normalizationField:M(t,{target:r,field:e.normalizationField,context:n,resultType:s}).field};case"opacity":return{type:"opacity",binding:i,field:l,fieldIndex:o,normalizationField:M(t,{target:r,field:e.normalizationField,context:n,resultType:s}).field};case"rotation":return{type:"rotation",binding:i,field:l,fieldIndex:o}}})).filter(e)}function _(e,t,r,i,n=!1){const s=e??{indexCount:0,fields:{}};switch(r.type){case"simple":case"dot-density":return G(s,r,i,n);case"class-breaks":return $(s,t,r,i,n);case"unique-value":return K(s,t,r,i,n);case"dictionary":return Y(s,r,i,n);case"heatmap":return Q(s,r,i,n);case"pie-chart":return H(s,r,i,n)}}function G(e,t,r,i=!1){const n=t.getSymbols(),s=n.length?n[0]:null;return{type:"simple",symbol:f(s,r,i),symbologyType:r.symbologyType}}function H(e,t,r,i=!1){const n=t.getSymbols(),s=n[0],l=n.length>1?n[1]:null;return{type:"pie-chart",markerSymbol:f(s,r,i),fillSymbol:f(l,r,i),symbologyType:r.symbologyType}}function $(e,t,r,i,n=!1){const s={mesh:!0,use:"renderer.field"},l=r.backgroundFillSymbol,{field:o,fieldIndex:a}=M(e,{target:t,field:r.field,valueExpression:r.valueExpression,resultType:"numeric",context:s}),u=r.normalizationType,d="log"===u?"esriNormalizeByLog":"percent-of-total"===u?"esriNormalizeByPercentOfTotal":"field"===u?"esriNormalizeByField":null,p=r.classBreakInfos.map((e=>({symbol:f(e.symbol,i,n),min:e.minValue,max:e.maxValue}))).sort(((e,t)=>e.min-t.min));return{type:"interval",attributes:e.fields,field:o,fieldIndex:a,backgroundFillSymbol:f(l,i,n),defaultSymbol:f(r.defaultSymbol,i,n),intervals:p,normalizationField:r.normalizationField,normalizationTotal:r.normalizationTotal,normalizationType:d,isMaxInclusive:r.isMaxInclusive,symbologyType:i.symbologyType}}function K(e,r,i,n,s=!1){const l=[],o=i.backgroundFillSymbol,a={target:r,context:{mesh:!0},resultType:"string"};if(i.field&&"string"!=typeof i.field)throw new t(h,"Expected renderer.field to be a string",i);const{field:u,fieldIndex:d}=M(e,{...a,field:i.field,valueExpression:i.valueExpression});for(const t of i.uniqueValueInfos??[])l.push({value:""+t.value,symbol:f(t.symbol,n,s)});return{type:"map",attributes:e.fields,field:u,fieldIndex:d,field2:M(e,{...a,field:i.field2}).field,field3:M(e,{...a,field:i.field3}).field,fieldDelimiter:i.fieldDelimiter??void 0,backgroundFillSymbol:f(o,n),defaultSymbol:f(i.defaultSymbol,n),map:l,symbologyType:n.symbologyType}}function Y(e,t,r,i=!1){return{type:"dictionary",config:t.config,fieldMap:t.fieldMap,scaleExpression:t.scaleExpression,url:t.url,symbolOptions:r,symbologyType:r.symbologyType}}function Q(e,t,r,i=!1){const n=t.getSymbols(),s=n.length?n[0]:null;return{type:"heatmap",symbol:f(s,r,i),symbologyType:r.symbologyType}}export{k as addAggregateFields,_ as createMatcherSchema,M as createRendererAttributeSchema,w as createSchema,f as createSymbolSchema,T as createSymbolSchemaOptions};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../core/Handles.js";import{clamp as t,lerp as s,smoothstep as
|
|
5
|
+
import e from"../../../core/Handles.js";import{clamp as t,lerp as s,smoothstep as i}from"../../../core/mathUtils.js";import{watch as r}from"../../../core/reactiveUtils.js";import{s as a}from"../../../chunks/vec2.js";import{a as o}from"../../../chunks/vec2f64.js";import{s as n,l as h,p as d}from"../../../chunks/vec3.js";import{s as u}from"../../../chunks/vec4.js";import{earth as m}from"../../../geometry/support/Ellipsoid.js";import{AtmosphereType as p}from"./AtmosphereType.js";import{atmosphereHeight as l,innerAtmosphereDepth as c,computeInnerAltitudeFade as _}from"./atmosphereUtils.js";import{ChapmanAtmospherePassParameters as T,ChapmanAtmosphereTechnique as f}from"./ChapmanAtmosphereTechnique.js";import{ChapmanAtmosphereTechniqueConfiguration as v}from"./ChapmanAtmosphereTechniqueConfiguration.js";import{Pos2Tex as b}from"../webgl-engine/lib/DefaultVertexBufferLayouts.js";import{createQuadVAO as R}from"../webgl-engine/lib/glUtil3D.js";import{PrimitiveType as w}from"../../webgl/enums.js";class q{constructor(t,s){this._view=t,this.type=p.Realistic,this._handles=new e,this._passParameters=new T,this._rootTileElevationMin=NaN,this._lowerBoundEarthRadius=m.radius,this._fadeHaze=0,this._tmpScale=o(),this._updateRadius(m.radius);const i=s.renderContext.rctx;this._updateRootTileElevationBounds(),this._handles.add([r((()=>this._view?.basemapTerrain?.rootTileElevationBounds),(()=>this._view?.basemapTerrain?this._updateRootTileElevationBounds():null)),r((()=>this._view?.basemapTerrain?.visibleElevationBounds),(()=>this._view?.basemapTerrain?this._updateVisibleElevationBounds():null))]);const a=new v;a.haze=!1,this._atmosphereTechnique=s.techniqueRepository.acquire(f,a),a.haze=!0,this._atmosphereHazeTechnique=s.techniqueRepository.acquire(f,a),a.reduced=!0,a.haze=!1,this._atmosphereReducedTechnique=s.techniqueRepository.acquire(f,a),a.haze=!0,this._atmosphereHazeReducedTechnique=s.techniqueRepository.acquire(f,a),this._vao=R(i,b)}destroy(){this._handles.destroy(),this._atmosphereTechnique.release(),this._atmosphereHazeTechnique.release(),this._atmosphereReducedTechnique.release(),this._atmosphereHazeReducedTechnique.release(),this._vao.dispose()}render(e,t){this._render(e,t?this._atmosphereTechnique:this._atmosphereReducedTechnique,e.offscreenRenderingHelper.depthTexture,t,!1)}renderHaze(e,t,s){this._fadeHaze=t,this._render(e,s?this._atmosphereHazeTechnique:this._atmosphereHazeReducedTechnique,e.offscreenRenderingHelper.linearDepthTexture,s,!0)}_render(e,t,i,r,o){if(null==i)return;const d=e.offscreenRenderingHelper;this._update(e.bindParameters.camera),this._passParameters.depthTexture=i;const u=d.background.color;n(this._passParameters.backgroundColor,u[0]*u[3],u[1]*u[3],u[2]*u[3]);const p=e.rctx.bindTechnique(t,this._passParameters,e.bindParameters);if(r)d.renderDepthDetached((()=>this._renderCommon(p,e)));else{const t=e.rctx.getViewport(),r=h(e.bindParameters.camera.eye)-m.radius;let n;if(r<l){const e=Math.min(1,Math.max(0,r/l));n=o?s(.4,.5,e):s(.2,.3,e)}else{const e=Math.min(1,Math.max(0,(r-l)/(15*l)));n=o?s(.5,1,e):s(.3,.6,e)}const u=Math.floor(n*e.bindParameters.camera.fullViewport[2]),c=Math.floor(n*e.bindParameters.camera.fullViewport[3]);e.rctx.setViewport(0,0,u,c),d.renderToTargets((()=>this._renderCommon(p,e)),d.tmpColor,d.tmpDepth,[0,0,0,1],!1,!1),e.rctx.setViewport(t.x,t.y,t.width,t.height),a(this._tmpScale,u/e.bindParameters.camera.fullViewport[2],c/e.bindParameters.camera.fullViewport[3]),d.compositeAtmosphereToMain(e.bindParameters,o,i,this._tmpScale)}}_renderCommon(e,t){null!=this._vao&&(t.rctx.bindVAO(this._vao),e.assertCompatibleVertexAttributeLocations(this._vao),t.rctx.drawArrays(w.TRIANGLE_STRIP,0,4))}_adjustRadiusForTesselation(e){return e*Math.cos(Math.PI/16/16)}_updateRootTileElevationBounds(){const e=this._view.basemapTerrain.rootTileElevationBounds.min;e!==this._rootTileElevationMin&&(this._rootTileElevationMin=e,this._lowerBoundEarthRadius=m.radius,this._updateVisibleElevationBounds())}_updateVisibleElevationBounds(){const e=this._adjustRadiusForTesselation(m.radius+this._view.basemapTerrain.visibleElevationBounds.min);e<this._lowerBoundEarthRadius&&this._updateRadius(e)}_updateRadius(e){this._lowerBoundEarthRadius=e,a(this._passParameters.radii,e,e+l),this._passParameters.innerFadeDistance=2*Math.sqrt((2*e-c)*c)}_update(e){if(!e)return;const r=d(e.eye),a=Math.sqrt(r),o=r-this._passParameters.radii[1]*this._passParameters.radii[1],n=t((a-this._passParameters.radii[0])/l,0,1);u(this._passParameters.heightParameters,a,r,o,n),this._passParameters.altitudeFade=_(a-this._lowerBoundEarthRadius),this._passParameters.hazeStrength=s(s(.6,1,i(9500,10500,a-m.radius)),1,this._fadeHaze)}static isSupported(e){return e.renderContext.rctx.capabilities.depthTexture}}export{q as ChapmanAtmosphere};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../../chunks/tslib.es6.js";import{handlesGroup as t,makeHandle as i}from"../../../../../core/handleUtils.js";import{destroyMaybe as r}from"../../../../../core/maybe.js";import{watch as s,when as n,syncAndInitial as a}from"../../../../../core/reactiveUtils.js";import{property as o}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import{subclass as l}from"../../../../../core/accessorSupport/decorators/subclass.js";import{s as c}from"../../../../../chunks/vec3.js";import{c as p}from"../../../../../chunks/vec3f64.js";import{getEffectiveElevationInfo as
|
|
5
|
+
import{_ as e}from"../../../../../chunks/tslib.es6.js";import{handlesGroup as t,makeHandle as i}from"../../../../../core/handleUtils.js";import{destroyMaybe as r}from"../../../../../core/maybe.js";import{watch as s,when as n,syncAndInitial as a}from"../../../../../core/reactiveUtils.js";import{property as o}from"../../../../../core/accessorSupport/decorators/property.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/has.js";import{subclass as l}from"../../../../../core/accessorSupport/decorators/subclass.js";import{s as c}from"../../../../../chunks/vec3.js";import{c as p}from"../../../../../chunks/vec3f64.js";import{getEffectiveElevationInfo as h,getEffectiveElevationMode as m}from"../../../../../support/elevationInfoUtils.js";import u from"../../../../../symbols/support/ElevationInfo.js";import{SegmentLabels3D as d}from"../../SegmentLabels3D.js";import{SnappingVisualizer3D as v}from"../../SnappingVisualizer3D.js";import{meshTransformFastUpdateHandles as f}from"../meshFastUpdateUtils.js";import{getSettings as V}from"../settings.js";import{ExtendedLineVisualElement as y}from"../../visualElements/ExtendedLineVisualElement.js";import{OutlineVisualElement as E}from"../../visualElements/OutlineVisualElement.js";import{VerticesVisualElement as w}from"../../visualElements/VerticesVisualElement.js";import{evaluateElevationAlignmentAtPoint as g}from"../../../layers/graphics/elevationAlignmentUtils.js";import{ElevationContext as _}from"../../../layers/graphics/ElevationContext.js";import{GraphicState as j}from"../../../layers/graphics/GraphicState.js";import{RenderOccludedFlag as G}from"../../../webgl-engine/lib/Material.js";import{DrawGraphicTool as S,geometryTypeToDrawOperationGeometryType as I}from"../../../../draw/DrawGraphicTool.js";import{DrawOperation as L}from"../../../../draw/DrawOperation.js";import{SceneDrawSurface as O,ElevationDrawSurface as x}from"../../../../draw/drawSurfaces.js";import{unitRGBAFromColor as D}from"../../../../support/colorUtils.js";let T=class extends S{constructor(e){super(e),this._activeVertexVisualElement=null,this._createGraphicState=null,this._outlineVisualElement=null,this._verticesVisualElement=null,this._verticalLineVisualElement=null,this.geometryType=null,this.type="draw-3d"}initialize(){const{mode:e,offset:t}=this.elevationInfo;this.internalGraphicsLayer.elevationInfo=new u({mode:e,offset:t})}normalizeCtorArgs(e){if(!e.elevationInfo){const t=e.hasZ??!0;return{...e,elevationInfo:h(t)}}return e}initializeGraphic(e){const{view:i}=this,r=this._createGraphicState=new j({graphic:e});return t([i.maskOccludee(e),i.trackGraphicState(r),s((()=>({element:this._outlineVisualElement,isDraped:r.isDraped})),(({element:e,isDraped:t})=>{e&&(e.isDraped=t)}),a),this._setupLoadingIndicator(r),...f(r)])}makeDrawOperation(){const{geometryType:e}=this,t="circle"!==e&&"rectangle"!==e;return new L({view:this.view,manipulators:this.manipulators,geometryType:I(e),drawingMode:this.mode,hasZ:this.hasZ,defaultZ:this.defaultZ,snapToSceneEnabled:this.snapToScene,drawSurface:new O(this.view,this.elevationInfo,[this.internalGraphicsLayer]),elevationDrawSurface:new x(this.elevationInfo,this.defaultZ,this.view,this.internalGraphicsLayer),hasM:!1,elevationInfo:this.elevationInfo,snappingManager:this.snappingManager,snappingVisualizer:new v,segmentLabels:t?new d:null,labelOptions:this.labelOptions,tooltipOptions:this.tooltipOptions,isDraped:this._createGraphicState?this._createGraphicState.isDraped:"on-the-ground"===m(this.hasZ,this.elevationInfo)})}onActiveVertexChanged(e){const{view:t}=this,s=V(t);if(this._activeVertexVisualElement)return this._activeVertexVisualElement.vertices=[e],this._updateVerticalLineVisualElement(e),null;const n=s.manipulators,a=n.vertex;this._activeVertexVisualElement=new w({view:t,spatialReference:t.spatialReference,vertices:[e],elevationInfo:this.internalGraphicsLayer.elevationInfo,color:D(a.color),size:a.size,outlineColor:D(a.outlineColor),outlineSize:a.outlineSize,renderOccluded:a.renderOccluded,attached:!1}),this._activeVertexVisualElement.color=D(n.selected.color),this._activeVertexVisualElement.attached=!0;const o=s.visualElements.zVerticalLine;return this._verticalLineVisualElement=new y({view:t,extensionType:o.extensionType,innerWidth:1,attached:!1,writeDepthEnabled:!1,renderOccluded:G.OccludeAndTransparent}),o.apply(this._verticalLineVisualElement),i((()=>{this._activeVertexVisualElement=r(this._activeVertexVisualElement),this._verticalLineVisualElement=r(this._verticalLineVisualElement)}))}_updateVerticalLineVisualElement(e){const t=this._verticalLineVisualElement;if(!t)return;const{renderCoordsHelper:i,elevationProvider:r}=this.view;c(b,e[0],e[1],e[2]),z.setFromElevationInfo(this.elevationInfo),b[2]=g(b,r,z,i);i.toRenderCoords(b,this.view.spatialReference,b)?(t.setStartEndFromWorldDownAtLocation(b),t.attached=!0):t.attached=!1}onOutlineChanged(e){if(this._outlineVisualElement)return this._outlineVisualElement.geometry=e,null;const t=this.internalGraphicsLayer.elevationInfo,{view:s}=this,n=V(s);return this._outlineVisualElement=new E({view:s,geometry:e,elevationInfo:t,isDraped:this._createGraphicState?this._createGraphicState.isDraped:"on-the-ground"===m(this.hasZ,t),attached:!1}),n.visualElements.lineGraphics.outline.apply(this._outlineVisualElement),n.visualElements.lineGraphics.shadowStyle.apply(this._outlineVisualElement),this._outlineVisualElement.attached=!0,this._outlineVisualElement.laserlineEnabled=!0,i((()=>{this._outlineVisualElement=r(this._outlineVisualElement)}))}onRegularVerticesChanged(e){if(this._verticesVisualElement)return this._verticesVisualElement.vertices=e,null;const{view:t}=this,s=V(t).manipulators.vertex;return this._verticesVisualElement=new w({view:t,spatialReference:t.spatialReference,vertices:e,elevationInfo:this.internalGraphicsLayer.elevationInfo,color:D(s.color),size:s.size,outlineColor:D(s.outlineColor),outlineSize:s.outlineSize,renderOccluded:s.renderOccluded,attached:!1}),this._verticesVisualElement.attached=!0,i((()=>{this._verticesVisualElement=r(this._verticesVisualElement)}))}_updateGraphicGeometry(e,t){if("mesh"===this.geometryType&&"point"===t?.type){const i=this.geometryToPlace;return i&&i.centerAt(t),void(i&&e.geometry===i?i.vertexSpace.isGeoreferenced?e.notifyGeometryChanged():e.notifyMeshTransformChanged():e.geometry=i)}super._updateGraphicGeometry(e,t)}_setupLoadingIndicator(e){const{drawOperation:r}=this;if(!this.geometryToPlace)return r.loading=!1,null;r.loading=!0;const s=i((()=>{r.loading=!1}));let o;const l=()=>o&&cancelAnimationFrame(o);return t([n((()=>e.displaying),(()=>{l(),o=requestAnimationFrame((()=>s.remove()))}),{...a,once:!0}),i(l),s])}};e([o({constructOnly:!0})],T.prototype,"elevationInfo",void 0),e([o({constructOnly:!0})],T.prototype,"geometryType",void 0),e([o()],T.prototype,"type",void 0),e([o({constructOnly:!0})],T.prototype,"view",void 0),T=e([l("esri.views.3d.interactive.editingTools.draw.DrawGraphicTool3D")],T);const z=new _,b=p();export{T as DrawGraphicTool3D};
|