zhui-plus 1.0.0 → 1.0.10
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/dist/Heatmap.js +689 -0
- package/dist/WSPlayer/PlaySDKInterface.js +1 -0
- package/dist/WSPlayer/WSPlayer.js +1 -0
- package/dist/WSPlayer/audioTalkWorker.js +1 -0
- package/dist/WSPlayer/commonThread/libH264Enc.js +21 -0
- package/dist/WSPlayer/commonThread/libH264Enc.wasm +0 -0
- package/dist/WSPlayer/commonThread/libIVSDrawer.js +21 -0
- package/dist/WSPlayer/commonThread/libIVSDrawer.wasm +0 -0
- package/dist/WSPlayer/commonThread/libRenderEngine.js +21 -0
- package/dist/WSPlayer/commonThread/libRenderEngine.wasm +0 -0
- package/dist/WSPlayer/commonThread/libmavasp_litepacket.data +50 -0
- package/dist/WSPlayer/commonThread/libmavasp_litepacket.js +21 -0
- package/dist/WSPlayer/commonThread/libmavasp_litepacket.wasm +0 -0
- package/dist/WSPlayer/icon/IotComboBackGround-alarm.png +0 -0
- package/dist/WSPlayer/icon/IotComboBackGround.png +0 -0
- package/dist/WSPlayer/icon/RecordHover.svg +13 -0
- package/dist/WSPlayer/icon/RecordNormal.svg +13 -0
- package/dist/WSPlayer/icon/Recording.svg +15 -0
- package/dist/WSPlayer/icon/arrow-b.svg +9 -0
- package/dist/WSPlayer/icon/arrow-l.svg +9 -0
- package/dist/WSPlayer/icon/arrow-lb.svg +10 -0
- package/dist/WSPlayer/icon/arrow-lt.svg +10 -0
- package/dist/WSPlayer/icon/arrow-r.svg +9 -0
- package/dist/WSPlayer/icon/arrow-rb.svg +10 -0
- package/dist/WSPlayer/icon/arrow-rt.svg +10 -0
- package/dist/WSPlayer/icon/arrow-t.svg +9 -0
- package/dist/WSPlayer/icon/close-all-hover.svg +18 -0
- package/dist/WSPlayer/icon/close-all.svg +18 -0
- package/dist/WSPlayer/icon/close.svg +16 -0
- package/dist/WSPlayer/icon/close_hover.svg +16 -0
- package/dist/WSPlayer/icon/default.png +0 -0
- package/dist/WSPlayer/icon/draw-triangle_off.svg +14 -0
- package/dist/WSPlayer/icon/draw-triangle_off_hover.svg +14 -0
- package/dist/WSPlayer/icon/draw-triangle_on.svg +15 -0
- package/dist/WSPlayer/icon/draw-triangle_on_hover.svg +15 -0
- package/dist/WSPlayer/icon/drops.png +0 -0
- package/dist/WSPlayer/icon/fullscreen-hover.svg +13 -0
- package/dist/WSPlayer/icon/fullscreen.svg +13 -0
- package/dist/WSPlayer/icon/hide-pantilt-on.svg +13 -0
- package/dist/WSPlayer/icon/hide-pantilt.svg +13 -0
- package/dist/WSPlayer/icon/mobile-speed-control-icon.svg +13 -0
- package/dist/WSPlayer/icon/more.svg +13 -0
- package/dist/WSPlayer/icon/play-h.png +0 -0
- package/dist/WSPlayer/icon/play-n.png +0 -0
- package/dist/WSPlayer/icon/play-p.png +0 -0
- package/dist/WSPlayer/icon/ptz-icon1.svg +4 -0
- package/dist/WSPlayer/icon/ptz-icon2.svg +13 -0
- package/dist/WSPlayer/icon/ptz-icon3.svg +10 -0
- package/dist/WSPlayer/icon/ptz-icon4.svg +10 -0
- package/dist/WSPlayer/icon/ptz-icon5.svg +12 -0
- package/dist/WSPlayer/icon/ptz-icon6.svg +14 -0
- package/dist/WSPlayer/icon/ptz-select-hover.svg +3 -0
- package/dist/WSPlayer/icon/ptz-select.svg +3 -0
- package/dist/WSPlayer/icon/record_pause.svg +5 -0
- package/dist/WSPlayer/icon/record_play.svg +5 -0
- package/dist/WSPlayer/icon/refresh-replay.svg +11 -0
- package/dist/WSPlayer/icon/refresh-replay_hover.svg +11 -0
- package/dist/WSPlayer/icon/screen-more-icon.svg +15 -0
- package/dist/WSPlayer/icon/screen_1.svg +11 -0
- package/dist/WSPlayer/icon/screen_16.svg +18 -0
- package/dist/WSPlayer/icon/screen_16_hover.svg +18 -0
- package/dist/WSPlayer/icon/screen_1_hover.svg +11 -0
- package/dist/WSPlayer/icon/screen_2.svg +18 -0
- package/dist/WSPlayer/icon/screen_25.svg +19 -0
- package/dist/WSPlayer/icon/screen_25_hover.svg +19 -0
- package/dist/WSPlayer/icon/screen_2_hover.svg +18 -0
- package/dist/WSPlayer/icon/screen_3.svg +13 -0
- package/dist/WSPlayer/icon/screen_3_hover.svg +13 -0
- package/dist/WSPlayer/icon/screen_4.svg +12 -0
- package/dist/WSPlayer/icon/screen_4_hover.svg +12 -0
- package/dist/WSPlayer/icon/screen_6.svg +16 -0
- package/dist/WSPlayer/icon/screen_6_hover.svg +16 -0
- package/dist/WSPlayer/icon/screen_8.svg +18 -0
- package/dist/WSPlayer/icon/screen_8_hover.svg +18 -0
- package/dist/WSPlayer/icon/screen_9.svg +17 -0
- package/dist/WSPlayer/icon/screen_9_hover.svg +17 -0
- package/dist/WSPlayer/icon/screen_custom_division.svg +9 -0
- package/dist/WSPlayer/icon/screen_custom_division_hover.svg +9 -0
- package/dist/WSPlayer/icon/screen_custom_division_merge.svg +3 -0
- package/dist/WSPlayer/icon/screen_custom_division_split.svg +6 -0
- package/dist/WSPlayer/icon/snapshot.svg +38 -0
- package/dist/WSPlayer/icon/snapshot_hover.svg +38 -0
- package/dist/WSPlayer/icon/speed_left.svg +15 -0
- package/dist/WSPlayer/icon/speed_right.svg +15 -0
- package/dist/WSPlayer/icon/spread.png +0 -0
- package/dist/WSPlayer/icon/tag-left-alarm.png +0 -0
- package/dist/WSPlayer/icon/tag-left-normal.png +0 -0
- package/dist/WSPlayer/icon/tag-middle-alarm.png +0 -0
- package/dist/WSPlayer/icon/tag-middle-normal.png +0 -0
- package/dist/WSPlayer/icon/tag-right-alarm.png +0 -0
- package/dist/WSPlayer/icon/tag-right-normal.png +0 -0
- package/dist/WSPlayer/icon/talk-off-hover.svg +11 -0
- package/dist/WSPlayer/icon/talk-off.svg +11 -0
- package/dist/WSPlayer/icon/talk-on.svg +9 -0
- package/dist/WSPlayer/icon/voice-have.svg +43 -0
- package/dist/WSPlayer/icon/voice-have_hover.svg +43 -0
- package/dist/WSPlayer/icon/voice-null.svg +38 -0
- package/dist/WSPlayer/icon/voice-null_hover.svg +38 -0
- package/dist/WSPlayer/icon/ws-ctrl-ellipsis-hover.svg +14 -0
- package/dist/WSPlayer/icon/ws-ctrl-ellipsis.svg +14 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-b-bg.png +0 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-bg.png +0 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-l-bg.png +0 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-lb-bg.png +0 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-lt-bg.png +0 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-r-bg.png +0 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-rb-bg.png +0 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-rt-bg.png +0 -0
- package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-t-bg.png +0 -0
- package/dist/WSPlayer/jquery-3.6.0.min.js +2 -0
- package/dist/WSPlayer/multiThread/libStreamClient.js +21 -0
- package/dist/WSPlayer/multiThread/libStreamClient.wasm +0 -0
- package/dist/WSPlayer/multiThread/libStreamClient.worker.js +1 -0
- package/dist/WSPlayer/multiThread/libplay.data +0 -0
- package/dist/WSPlayer/multiThread/libplay.js +1 -0
- package/dist/WSPlayer/multiThread/libplay.wasm +0 -0
- package/dist/WSPlayer/multiThread/libplay.worker.js +1 -0
- package/dist/WSPlayer/player.css +1490 -0
- package/dist/WSPlayer/singleThread/VideoDecodeWorker.js +1439 -0
- package/dist/WSPlayer/singleThread/libStreamClient.js +21 -0
- package/dist/WSPlayer/singleThread/libStreamClient.wasm +0 -0
- package/dist/WSPlayer/singleThread/libplay.data +0 -0
- package/dist/WSPlayer/singleThread/libplay.js +1 -0
- package/dist/WSPlayer/singleThread/libplay.wasm +0 -0
- package/dist/WSPlayer/window.division.css +80 -0
- package/dist/index.js +467 -0
- package/dist/locale/af.js +193 -0
- package/dist/locale/af.min.js +3 -0
- package/dist/locale/af.min.js.map +1 -0
- package/dist/locale/af.min.mjs +3 -0
- package/dist/locale/af.min.mjs.map +1 -0
- package/dist/locale/af.mjs +186 -0
- package/dist/locale/ar-eg.js +193 -0
- package/dist/locale/ar-eg.min.js +3 -0
- package/dist/locale/ar-eg.min.js.map +1 -0
- package/dist/locale/ar-eg.min.mjs +3 -0
- package/dist/locale/ar-eg.min.mjs.map +1 -0
- package/dist/locale/ar-eg.mjs +186 -0
- package/dist/locale/ar.js +193 -0
- package/dist/locale/ar.min.js +3 -0
- package/dist/locale/ar.min.js.map +1 -0
- package/dist/locale/ar.min.mjs +3 -0
- package/dist/locale/ar.min.mjs.map +1 -0
- package/dist/locale/ar.mjs +186 -0
- package/dist/locale/az.js +194 -0
- package/dist/locale/az.min.js +3 -0
- package/dist/locale/az.min.js.map +1 -0
- package/dist/locale/az.min.mjs +3 -0
- package/dist/locale/az.min.mjs.map +1 -0
- package/dist/locale/az.mjs +187 -0
- package/dist/locale/bg.js +193 -0
- package/dist/locale/bg.min.js +3 -0
- package/dist/locale/bg.min.js.map +1 -0
- package/dist/locale/bg.min.mjs +3 -0
- package/dist/locale/bg.min.mjs.map +1 -0
- package/dist/locale/bg.mjs +186 -0
- package/dist/locale/bn.js +193 -0
- package/dist/locale/bn.min.js +3 -0
- package/dist/locale/bn.min.js.map +1 -0
- package/dist/locale/bn.min.mjs +3 -0
- package/dist/locale/bn.min.mjs.map +1 -0
- package/dist/locale/bn.mjs +186 -0
- package/dist/locale/ca.js +193 -0
- package/dist/locale/ca.min.js +3 -0
- package/dist/locale/ca.min.js.map +1 -0
- package/dist/locale/ca.min.mjs +3 -0
- package/dist/locale/ca.min.mjs.map +1 -0
- package/dist/locale/ca.mjs +186 -0
- package/dist/locale/ckb.js +193 -0
- package/dist/locale/ckb.min.js +3 -0
- package/dist/locale/ckb.min.js.map +1 -0
- package/dist/locale/ckb.min.mjs +3 -0
- package/dist/locale/ckb.min.mjs.map +1 -0
- package/dist/locale/ckb.mjs +186 -0
- package/dist/locale/cs.js +195 -0
- package/dist/locale/cs.min.js +3 -0
- package/dist/locale/cs.min.js.map +1 -0
- package/dist/locale/cs.min.mjs +3 -0
- package/dist/locale/cs.min.mjs.map +1 -0
- package/dist/locale/cs.mjs +188 -0
- package/dist/locale/da.js +193 -0
- package/dist/locale/da.min.js +3 -0
- package/dist/locale/da.min.js.map +1 -0
- package/dist/locale/da.min.mjs +3 -0
- package/dist/locale/da.min.mjs.map +1 -0
- package/dist/locale/da.mjs +186 -0
- package/dist/locale/de.js +195 -0
- package/dist/locale/de.min.js +3 -0
- package/dist/locale/de.min.js.map +1 -0
- package/dist/locale/de.min.mjs +3 -0
- package/dist/locale/de.min.mjs.map +1 -0
- package/dist/locale/de.mjs +188 -0
- package/dist/locale/el.js +193 -0
- package/dist/locale/el.min.js +3 -0
- package/dist/locale/el.min.js.map +1 -0
- package/dist/locale/el.min.mjs +3 -0
- package/dist/locale/el.min.mjs.map +1 -0
- package/dist/locale/el.mjs +186 -0
- package/dist/locale/en.js +193 -0
- package/dist/locale/en.min.js +3 -0
- package/dist/locale/en.min.js.map +1 -0
- package/dist/locale/en.min.mjs +3 -0
- package/dist/locale/en.min.mjs.map +1 -0
- package/dist/locale/en.mjs +186 -0
- package/dist/locale/eo.js +193 -0
- package/dist/locale/eo.min.js +3 -0
- package/dist/locale/eo.min.js.map +1 -0
- package/dist/locale/eo.min.mjs +3 -0
- package/dist/locale/eo.min.mjs.map +1 -0
- package/dist/locale/eo.mjs +186 -0
- package/dist/locale/es.js +193 -0
- package/dist/locale/es.min.js +3 -0
- package/dist/locale/es.min.js.map +1 -0
- package/dist/locale/es.min.mjs +3 -0
- package/dist/locale/es.min.mjs.map +1 -0
- package/dist/locale/es.mjs +186 -0
- package/dist/locale/et.js +193 -0
- package/dist/locale/et.min.js +3 -0
- package/dist/locale/et.min.js.map +1 -0
- package/dist/locale/et.min.mjs +3 -0
- package/dist/locale/et.min.mjs.map +1 -0
- package/dist/locale/et.mjs +186 -0
- package/dist/locale/eu.js +193 -0
- package/dist/locale/eu.min.js +3 -0
- package/dist/locale/eu.min.js.map +1 -0
- package/dist/locale/eu.min.mjs +3 -0
- package/dist/locale/eu.min.mjs.map +1 -0
- package/dist/locale/eu.mjs +186 -0
- package/dist/locale/fa.js +193 -0
- package/dist/locale/fa.min.js +3 -0
- package/dist/locale/fa.min.js.map +1 -0
- package/dist/locale/fa.min.mjs +3 -0
- package/dist/locale/fa.min.mjs.map +1 -0
- package/dist/locale/fa.mjs +186 -0
- package/dist/locale/fi.js +193 -0
- package/dist/locale/fi.min.js +3 -0
- package/dist/locale/fi.min.js.map +1 -0
- package/dist/locale/fi.min.mjs +3 -0
- package/dist/locale/fi.min.mjs.map +1 -0
- package/dist/locale/fi.mjs +186 -0
- package/dist/locale/fr.js +193 -0
- package/dist/locale/fr.min.js +3 -0
- package/dist/locale/fr.min.js.map +1 -0
- package/dist/locale/fr.min.mjs +3 -0
- package/dist/locale/fr.min.mjs.map +1 -0
- package/dist/locale/fr.mjs +186 -0
- package/dist/locale/he.js +193 -0
- package/dist/locale/he.min.js +3 -0
- package/dist/locale/he.min.js.map +1 -0
- package/dist/locale/he.min.mjs +3 -0
- package/dist/locale/he.min.mjs.map +1 -0
- package/dist/locale/he.mjs +186 -0
- package/dist/locale/hi.js +193 -0
- package/dist/locale/hi.min.js +3 -0
- package/dist/locale/hi.min.js.map +1 -0
- package/dist/locale/hi.min.mjs +3 -0
- package/dist/locale/hi.min.mjs.map +1 -0
- package/dist/locale/hi.mjs +186 -0
- package/dist/locale/hr.js +193 -0
- package/dist/locale/hr.min.js +3 -0
- package/dist/locale/hr.min.js.map +1 -0
- package/dist/locale/hr.min.mjs +3 -0
- package/dist/locale/hr.min.mjs.map +1 -0
- package/dist/locale/hr.mjs +186 -0
- package/dist/locale/hu.js +193 -0
- package/dist/locale/hu.min.js +3 -0
- package/dist/locale/hu.min.js.map +1 -0
- package/dist/locale/hu.min.mjs +3 -0
- package/dist/locale/hu.min.mjs.map +1 -0
- package/dist/locale/hu.mjs +186 -0
- package/dist/locale/hy-am.js +193 -0
- package/dist/locale/hy-am.min.js +3 -0
- package/dist/locale/hy-am.min.js.map +1 -0
- package/dist/locale/hy-am.min.mjs +3 -0
- package/dist/locale/hy-am.min.mjs.map +1 -0
- package/dist/locale/hy-am.mjs +186 -0
- package/dist/locale/id.js +193 -0
- package/dist/locale/id.min.js +3 -0
- package/dist/locale/id.min.js.map +1 -0
- package/dist/locale/id.min.mjs +3 -0
- package/dist/locale/id.min.mjs.map +1 -0
- package/dist/locale/id.mjs +186 -0
- package/dist/locale/it.js +193 -0
- package/dist/locale/it.min.js +3 -0
- package/dist/locale/it.min.js.map +1 -0
- package/dist/locale/it.min.mjs +3 -0
- package/dist/locale/it.min.mjs.map +1 -0
- package/dist/locale/it.mjs +186 -0
- package/dist/locale/ja.js +193 -0
- package/dist/locale/ja.min.js +3 -0
- package/dist/locale/ja.min.js.map +1 -0
- package/dist/locale/ja.min.mjs +3 -0
- package/dist/locale/ja.min.mjs.map +1 -0
- package/dist/locale/ja.mjs +186 -0
- package/dist/locale/kk.js +193 -0
- package/dist/locale/kk.min.js +3 -0
- package/dist/locale/kk.min.js.map +1 -0
- package/dist/locale/kk.min.mjs +3 -0
- package/dist/locale/kk.min.mjs.map +1 -0
- package/dist/locale/kk.mjs +186 -0
- package/dist/locale/km.js +193 -0
- package/dist/locale/km.min.js +3 -0
- package/dist/locale/km.min.js.map +1 -0
- package/dist/locale/km.min.mjs +3 -0
- package/dist/locale/km.min.mjs.map +1 -0
- package/dist/locale/km.mjs +186 -0
- package/dist/locale/ko.js +193 -0
- package/dist/locale/ko.min.js +3 -0
- package/dist/locale/ko.min.js.map +1 -0
- package/dist/locale/ko.min.mjs +3 -0
- package/dist/locale/ko.min.mjs.map +1 -0
- package/dist/locale/ko.mjs +186 -0
- package/dist/locale/ku.js +193 -0
- package/dist/locale/ku.min.js +3 -0
- package/dist/locale/ku.min.js.map +1 -0
- package/dist/locale/ku.min.mjs +3 -0
- package/dist/locale/ku.min.mjs.map +1 -0
- package/dist/locale/ku.mjs +186 -0
- package/dist/locale/ky.js +193 -0
- package/dist/locale/ky.min.js +3 -0
- package/dist/locale/ky.min.js.map +1 -0
- package/dist/locale/ky.min.mjs +3 -0
- package/dist/locale/ky.min.mjs.map +1 -0
- package/dist/locale/ky.mjs +186 -0
- package/dist/locale/lo.js +193 -0
- package/dist/locale/lo.min.js +3 -0
- package/dist/locale/lo.min.js.map +1 -0
- package/dist/locale/lo.min.mjs +3 -0
- package/dist/locale/lo.min.mjs.map +1 -0
- package/dist/locale/lo.mjs +186 -0
- package/dist/locale/lt.js +193 -0
- package/dist/locale/lt.min.js +3 -0
- package/dist/locale/lt.min.js.map +1 -0
- package/dist/locale/lt.min.mjs +3 -0
- package/dist/locale/lt.min.mjs.map +1 -0
- package/dist/locale/lt.mjs +186 -0
- package/dist/locale/lv.js +193 -0
- package/dist/locale/lv.min.js +3 -0
- package/dist/locale/lv.min.js.map +1 -0
- package/dist/locale/lv.min.mjs +3 -0
- package/dist/locale/lv.min.mjs.map +1 -0
- package/dist/locale/lv.mjs +186 -0
- package/dist/locale/mg.js +193 -0
- package/dist/locale/mg.min.js +3 -0
- package/dist/locale/mg.min.js.map +1 -0
- package/dist/locale/mg.min.mjs +3 -0
- package/dist/locale/mg.min.mjs.map +1 -0
- package/dist/locale/mg.mjs +186 -0
- package/dist/locale/mn.js +193 -0
- package/dist/locale/mn.min.js +3 -0
- package/dist/locale/mn.min.js.map +1 -0
- package/dist/locale/mn.min.mjs +3 -0
- package/dist/locale/mn.min.mjs.map +1 -0
- package/dist/locale/mn.mjs +186 -0
- package/dist/locale/ms.js +195 -0
- package/dist/locale/ms.min.js +3 -0
- package/dist/locale/ms.min.js.map +1 -0
- package/dist/locale/ms.min.mjs +3 -0
- package/dist/locale/ms.min.mjs.map +1 -0
- package/dist/locale/ms.mjs +188 -0
- package/dist/locale/my.js +193 -0
- package/dist/locale/my.min.js +3 -0
- package/dist/locale/my.min.js.map +1 -0
- package/dist/locale/my.min.mjs +3 -0
- package/dist/locale/my.min.mjs.map +1 -0
- package/dist/locale/my.mjs +186 -0
- package/dist/locale/nb-no.js +193 -0
- package/dist/locale/nb-no.min.js +3 -0
- package/dist/locale/nb-no.min.js.map +1 -0
- package/dist/locale/nb-no.min.mjs +3 -0
- package/dist/locale/nb-no.min.mjs.map +1 -0
- package/dist/locale/nb-no.mjs +186 -0
- package/dist/locale/nl.js +193 -0
- package/dist/locale/nl.min.js +3 -0
- package/dist/locale/nl.min.js.map +1 -0
- package/dist/locale/nl.min.mjs +3 -0
- package/dist/locale/nl.min.mjs.map +1 -0
- package/dist/locale/nl.mjs +186 -0
- package/dist/locale/no.js +193 -0
- package/dist/locale/no.min.js +3 -0
- package/dist/locale/no.min.js.map +1 -0
- package/dist/locale/no.min.mjs +3 -0
- package/dist/locale/no.min.mjs.map +1 -0
- package/dist/locale/no.mjs +186 -0
- package/dist/locale/pa.js +193 -0
- package/dist/locale/pa.min.js +3 -0
- package/dist/locale/pa.min.js.map +1 -0
- package/dist/locale/pa.min.mjs +3 -0
- package/dist/locale/pa.min.mjs.map +1 -0
- package/dist/locale/pa.mjs +186 -0
- package/dist/locale/pl.js +193 -0
- package/dist/locale/pl.min.js +3 -0
- package/dist/locale/pl.min.js.map +1 -0
- package/dist/locale/pl.min.mjs +3 -0
- package/dist/locale/pl.min.mjs.map +1 -0
- package/dist/locale/pl.mjs +186 -0
- package/dist/locale/pt-br.js +193 -0
- package/dist/locale/pt-br.min.js +3 -0
- package/dist/locale/pt-br.min.js.map +1 -0
- package/dist/locale/pt-br.min.mjs +3 -0
- package/dist/locale/pt-br.min.mjs.map +1 -0
- package/dist/locale/pt-br.mjs +186 -0
- package/dist/locale/pt.js +193 -0
- package/dist/locale/pt.min.js +3 -0
- package/dist/locale/pt.min.js.map +1 -0
- package/dist/locale/pt.min.mjs +3 -0
- package/dist/locale/pt.min.mjs.map +1 -0
- package/dist/locale/pt.mjs +186 -0
- package/dist/locale/ro.js +193 -0
- package/dist/locale/ro.min.js +3 -0
- package/dist/locale/ro.min.js.map +1 -0
- package/dist/locale/ro.min.mjs +3 -0
- package/dist/locale/ro.min.mjs.map +1 -0
- package/dist/locale/ro.mjs +186 -0
- package/dist/locale/ru.js +193 -0
- package/dist/locale/ru.min.js +3 -0
- package/dist/locale/ru.min.js.map +1 -0
- package/dist/locale/ru.min.mjs +3 -0
- package/dist/locale/ru.min.mjs.map +1 -0
- package/dist/locale/ru.mjs +186 -0
- package/dist/locale/sk.js +195 -0
- package/dist/locale/sk.min.js +3 -0
- package/dist/locale/sk.min.js.map +1 -0
- package/dist/locale/sk.min.mjs +3 -0
- package/dist/locale/sk.min.mjs.map +1 -0
- package/dist/locale/sk.mjs +188 -0
- package/dist/locale/sl.js +193 -0
- package/dist/locale/sl.min.js +3 -0
- package/dist/locale/sl.min.js.map +1 -0
- package/dist/locale/sl.min.mjs +3 -0
- package/dist/locale/sl.min.mjs.map +1 -0
- package/dist/locale/sl.mjs +186 -0
- package/dist/locale/sr.js +193 -0
- package/dist/locale/sr.min.js +3 -0
- package/dist/locale/sr.min.js.map +1 -0
- package/dist/locale/sr.min.mjs +3 -0
- package/dist/locale/sr.min.mjs.map +1 -0
- package/dist/locale/sr.mjs +186 -0
- package/dist/locale/sv.js +193 -0
- package/dist/locale/sv.min.js +3 -0
- package/dist/locale/sv.min.js.map +1 -0
- package/dist/locale/sv.min.mjs +3 -0
- package/dist/locale/sv.min.mjs.map +1 -0
- package/dist/locale/sv.mjs +186 -0
- package/dist/locale/sw.js +193 -0
- package/dist/locale/sw.min.js +3 -0
- package/dist/locale/sw.min.js.map +1 -0
- package/dist/locale/sw.min.mjs +3 -0
- package/dist/locale/sw.min.mjs.map +1 -0
- package/dist/locale/sw.mjs +186 -0
- package/dist/locale/ta.js +193 -0
- package/dist/locale/ta.min.js +3 -0
- package/dist/locale/ta.min.js.map +1 -0
- package/dist/locale/ta.min.mjs +3 -0
- package/dist/locale/ta.min.mjs.map +1 -0
- package/dist/locale/ta.mjs +186 -0
- package/dist/locale/te.js +193 -0
- package/dist/locale/te.min.js +3 -0
- package/dist/locale/te.min.js.map +1 -0
- package/dist/locale/te.min.mjs +3 -0
- package/dist/locale/te.min.mjs.map +1 -0
- package/dist/locale/te.mjs +186 -0
- package/dist/locale/th.js +193 -0
- package/dist/locale/th.min.js +3 -0
- package/dist/locale/th.min.js.map +1 -0
- package/dist/locale/th.min.mjs +3 -0
- package/dist/locale/th.min.mjs.map +1 -0
- package/dist/locale/th.mjs +186 -0
- package/dist/locale/tk.js +193 -0
- package/dist/locale/tk.min.js +3 -0
- package/dist/locale/tk.min.js.map +1 -0
- package/dist/locale/tk.min.mjs +3 -0
- package/dist/locale/tk.min.mjs.map +1 -0
- package/dist/locale/tk.mjs +186 -0
- package/dist/locale/tr.js +193 -0
- package/dist/locale/tr.min.js +3 -0
- package/dist/locale/tr.min.js.map +1 -0
- package/dist/locale/tr.min.mjs +3 -0
- package/dist/locale/tr.min.mjs.map +1 -0
- package/dist/locale/tr.mjs +186 -0
- package/dist/locale/ug-cn.js +193 -0
- package/dist/locale/ug-cn.min.js +3 -0
- package/dist/locale/ug-cn.min.js.map +1 -0
- package/dist/locale/ug-cn.min.mjs +3 -0
- package/dist/locale/ug-cn.min.mjs.map +1 -0
- package/dist/locale/ug-cn.mjs +186 -0
- package/dist/locale/uk.js +193 -0
- package/dist/locale/uk.min.js +3 -0
- package/dist/locale/uk.min.js.map +1 -0
- package/dist/locale/uk.min.mjs +3 -0
- package/dist/locale/uk.min.mjs.map +1 -0
- package/dist/locale/uk.mjs +186 -0
- package/dist/locale/uz-uz.js +193 -0
- package/dist/locale/uz-uz.min.js +3 -0
- package/dist/locale/uz-uz.min.js.map +1 -0
- package/dist/locale/uz-uz.min.mjs +3 -0
- package/dist/locale/uz-uz.min.mjs.map +1 -0
- package/dist/locale/uz-uz.mjs +186 -0
- package/dist/locale/vi.js +193 -0
- package/dist/locale/vi.min.js +3 -0
- package/dist/locale/vi.min.js.map +1 -0
- package/dist/locale/vi.min.mjs +3 -0
- package/dist/locale/vi.min.mjs.map +1 -0
- package/dist/locale/vi.mjs +186 -0
- package/dist/locale/zh-cn.js +193 -0
- package/dist/locale/zh-cn.min.js +3 -0
- package/dist/locale/zh-cn.min.js.map +1 -0
- package/dist/locale/zh-cn.min.mjs +3 -0
- package/dist/locale/zh-cn.min.mjs.map +1 -0
- package/dist/locale/zh-cn.mjs +186 -0
- package/dist/locale/zh-hk.js +193 -0
- package/dist/locale/zh-hk.min.js +3 -0
- package/dist/locale/zh-hk.min.js.map +1 -0
- package/dist/locale/zh-hk.min.mjs +3 -0
- package/dist/locale/zh-hk.min.mjs.map +1 -0
- package/dist/locale/zh-hk.mjs +186 -0
- package/dist/locale/zh-mo.js +193 -0
- package/dist/locale/zh-mo.min.js +3 -0
- package/dist/locale/zh-mo.min.js.map +1 -0
- package/dist/locale/zh-mo.min.mjs +3 -0
- package/dist/locale/zh-mo.min.mjs.map +1 -0
- package/dist/locale/zh-mo.mjs +186 -0
- package/dist/locale/zh-tw.js +193 -0
- package/dist/locale/zh-tw.min.js +3 -0
- package/dist/locale/zh-tw.min.js.map +1 -0
- package/dist/locale/zh-tw.min.mjs +3 -0
- package/dist/locale/zh-tw.min.mjs.map +1 -0
- package/dist/locale/zh-tw.mjs +186 -0
- package/dist/style.css +1 -1
- package/dist/test/demo.docx +0 -0
- package/dist/test/demo.et +0 -0
- package/dist/test/demo.ofd +0 -0
- package/dist/test/demo.pdf +0 -0
- package/dist/test/test.ofd +0 -0
- package/dist/test/unzip.ofd +0 -0
- package/dist/test/zip.ofd +0 -0
- package/dist/types/auto-imports.d.ts +9 -0
- package/dist/types/components.d.ts +55 -0
- package/dist/zhui-plus.cjs.js +1 -0
- package/dist/zhui-plus.es.js +2 -0
- package/dist/zhui.svg +1 -0
- package/package.json +90 -4
- package/packages/components/AI/index.ts +10 -0
- package/packages/components/AI/src/zh-aiChat.vue +841 -0
- package/packages/components/badge/__tests__/badge.test.ts +38 -0
- package/packages/components/badge/index.ts +10 -0
- package/packages/components/badge/src/zh-badge.vue +86 -0
- package/packages/components/badge/style.scss +1 -0
- package/packages/components/button/__tests__/button.test.ts +94 -0
- package/packages/components/button/__tests__/buttonGroup.test.ts +46 -0
- package/packages/components/button/index.ts +11 -0
- package/packages/components/button/src/zh-button-group.vue +50 -0
- package/packages/components/button/src/zh-button.vue +152 -0
- package/packages/components/button/style/index.css +140 -0
- package/packages/components/charts/geo.json +11147 -0
- package/packages/components/charts/index.ts +35 -0
- package/packages/components/charts/src/zh-barChart.vue +97 -0
- package/packages/components/charts/src/zh-baseChart.vue +196 -0
- package/packages/components/charts/src/zh-lineBarChart.vue +113 -0
- package/packages/components/charts/src/zh-lineChart.vue +93 -0
- package/packages/components/charts/src/zh-mapChart.vue +214 -0
- package/packages/components/charts/src/zh-pictorialBar.vue +72 -0
- package/packages/components/charts/src/zh-pieChart.vue +67 -0
- package/packages/components/charts/src/zh-radarChart.vue +131 -0
- package/packages/components/charts/src/zh-scatterChart.vue +152 -0
- package/packages/components/chat/index.ts +10 -0
- package/packages/components/chat/src/zh-chat.vue +889 -0
- package/packages/components/container/index.ts +18 -0
- package/packages/components/container/src/zh-aside.vue +34 -0
- package/packages/components/container/src/zh-container.vue +45 -0
- package/packages/components/container/src/zh-footer.vue +33 -0
- package/packages/components/container/src/zh-header.vue +34 -0
- package/packages/components/container/src/zh-main.vue +26 -0
- package/packages/components/directive/focus.ts +14 -0
- package/packages/components/directive/idCard.ts +12 -0
- package/packages/components/directive/index.ts +19 -0
- package/packages/components/directive/number.ts +10 -0
- package/packages/components/directive/permission.ts +57 -0
- package/packages/components/directive/phone.ts +12 -0
- package/packages/components/drawer/index.ts +10 -0
- package/packages/components/drawer/src/zh-drawer.vue +78 -0
- package/packages/components/drawer/style/animation.scss +35 -0
- package/packages/components/drawer/style/index.scss +52 -0
- package/packages/components/drawer/style/media.scss +6 -0
- package/packages/components/fileViewer/index.ts +9 -0
- package/packages/components/fileViewer/src/liteofd/annotLayer.ts +203 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/LICENSE +15 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/README.md +108 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/asn1.js +627 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/base64.js +103 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/defs.js +138 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/dumpASN1.js +79 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/hex.js +69 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/int10.js +106 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/oids.js +2725 -0
- package/packages/components/fileViewer/src/liteofd/asn1js/rfcdef.js +10377 -0
- package/packages/components/fileViewer/src/liteofd/attrType.ts +173 -0
- package/packages/components/fileViewer/src/liteofd/contentLayer.ts +203 -0
- package/packages/components/fileViewer/src/liteofd/elements/AnnotationPathSvg.ts +122 -0
- package/packages/components/fileViewer/src/liteofd/elements/BaseSvg.ts +6 -0
- package/packages/components/fileViewer/src/liteofd/elements/ImageSvg.ts +212 -0
- package/packages/components/fileViewer/src/liteofd/elements/PathSvg.ts +460 -0
- package/packages/components/fileViewer/src/liteofd/elements/SignatureElement.ts +231 -0
- package/packages/components/fileViewer/src/liteofd/elements/TextSvg.ts +235 -0
- package/packages/components/fileViewer/src/liteofd/elements/ofdAnnotationElement.ts +133 -0
- package/packages/components/fileViewer/src/liteofd/elements/ofdPageContainer.ts +183 -0
- package/packages/components/fileViewer/src/liteofd/elements/ofdPageRender.ts +71 -0
- package/packages/components/fileViewer/src/liteofd/elements/signObject.json +10084 -0
- package/packages/components/fileViewer/src/liteofd/elements/signature.json +381 -0
- package/packages/components/fileViewer/src/liteofd/font/arithmetic_decoder.js +182 -0
- package/packages/components/fileViewer/src/liteofd/font/ascii_85_stream.js +98 -0
- package/packages/components/fileViewer/src/liteofd/font/ascii_hex_stream.js +79 -0
- package/packages/components/fileViewer/src/liteofd/font/base_stream.js +110 -0
- package/packages/components/fileViewer/src/liteofd/font/bidi.js +440 -0
- package/packages/components/fileViewer/src/liteofd/font/binary_cmap.js +326 -0
- package/packages/components/fileViewer/src/liteofd/font/calibri_factors.js +309 -0
- package/packages/components/fileViewer/src/liteofd/font/ccitt.js +1059 -0
- package/packages/components/fileViewer/src/liteofd/font/ccitt_stream.js +60 -0
- package/packages/components/fileViewer/src/liteofd/font/cff_font.js +139 -0
- package/packages/components/fileViewer/src/liteofd/font/cff_parser.js +1940 -0
- package/packages/components/fileViewer/src/liteofd/font/charsets.js +119 -0
- package/packages/components/fileViewer/src/liteofd/font/chunked_stream.js +94 -0
- package/packages/components/fileViewer/src/liteofd/font/cmap.js +726 -0
- package/packages/components/fileViewer/src/liteofd/font/colorspace.js +1336 -0
- package/packages/components/fileViewer/src/liteofd/font/core_utils.js +636 -0
- package/packages/components/fileViewer/src/liteofd/font/decode_stream.js +177 -0
- package/packages/components/fileViewer/src/liteofd/font/differences.js +906 -0
- package/packages/components/fileViewer/src/liteofd/font/encodings.js +301 -0
- package/packages/components/fileViewer/src/liteofd/font/flate_stream.js +413 -0
- package/packages/components/fileViewer/src/liteofd/font/font_loader.js +455 -0
- package/packages/components/fileViewer/src/liteofd/font/font_renderer.js +900 -0
- package/packages/components/fileViewer/src/liteofd/font/font_substitutions.js +553 -0
- package/packages/components/fileViewer/src/liteofd/font/fonts copy.js +3391 -0
- package/packages/components/fileViewer/src/liteofd/font/fonts.js +3585 -0
- package/packages/components/fileViewer/src/liteofd/font/fonts_utils.js +178 -0
- package/packages/components/fileViewer/src/liteofd/font/function.js +1241 -0
- package/packages/components/fileViewer/src/liteofd/font/glyf.js +701 -0
- package/packages/components/fileViewer/src/liteofd/font/glyphlist.js +4557 -0
- package/packages/components/fileViewer/src/liteofd/font/helvetica_factors.js +352 -0
- package/packages/components/fileViewer/src/liteofd/font/image.js +986 -0
- package/packages/components/fileViewer/src/liteofd/font/image_resizer.js +398 -0
- package/packages/components/fileViewer/src/liteofd/font/image_utils.js +286 -0
- package/packages/components/fileViewer/src/liteofd/font/jbig2_stream.js +74 -0
- package/packages/components/fileViewer/src/liteofd/font/jpeg_stream.js +106 -0
- package/packages/components/fileViewer/src/liteofd/font/jpg.js +1590 -0
- package/packages/components/fileViewer/src/liteofd/font/jpx.js +2349 -0
- package/packages/components/fileViewer/src/liteofd/font/jpx_stream.js +87 -0
- package/packages/components/fileViewer/src/liteofd/font/liberationsans_widths.js +429 -0
- package/packages/components/fileViewer/src/liteofd/font/lzw_stream.js +150 -0
- package/packages/components/fileViewer/src/liteofd/font/metrics.d.ts +1 -0
- package/packages/components/fileViewer/src/liteofd/font/metrics.js +3057 -0
- package/packages/components/fileViewer/src/liteofd/font/murmurhash3.js +135 -0
- package/packages/components/fileViewer/src/liteofd/font/myriadpro_factors.js +291 -0
- package/packages/components/fileViewer/src/liteofd/font/ofd_stream.js +402 -0
- package/packages/components/fileViewer/src/liteofd/font/opentype_file_builder.js +154 -0
- package/packages/components/fileViewer/src/liteofd/font/parser.js +1409 -0
- package/packages/components/fileViewer/src/liteofd/font/pattern.js +1005 -0
- package/packages/components/fileViewer/src/liteofd/font/predictor_stream.js +234 -0
- package/packages/components/fileViewer/src/liteofd/font/primitives.js +354 -0
- package/packages/components/fileViewer/src/liteofd/font/properties.json +2110 -0
- package/packages/components/fileViewer/src/liteofd/font/ps_parser.js +268 -0
- package/packages/components/fileViewer/src/liteofd/font/run_length_stream.js +61 -0
- package/packages/components/fileViewer/src/liteofd/font/segoeui_factors.js +308 -0
- package/packages/components/fileViewer/src/liteofd/font/standard_fonts.js +915 -0
- package/packages/components/fileViewer/src/liteofd/font/stream.js +99 -0
- package/packages/components/fileViewer/src/liteofd/font/to_unicode_map.js +111 -0
- package/packages/components/fileViewer/src/liteofd/font/translatedFont.js +3125 -0
- package/packages/components/fileViewer/src/liteofd/font/type1_font.js +443 -0
- package/packages/components/fileViewer/src/liteofd/font/type1_parser.js +804 -0
- package/packages/components/fileViewer/src/liteofd/font/unicode.js +274 -0
- package/packages/components/fileViewer/src/liteofd/font/util.js +1159 -0
- package/packages/components/fileViewer/src/liteofd/font/xfa_fonts.js +296 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/arithmetic_decoder.js +183 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/ccitt.js +1070 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/core_utils.js +180 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/is_node.js +27 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/jbig2.js +2589 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/jbig2_stream.js +81 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/primitives.js +371 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/stream.js +1348 -0
- package/packages/components/fileViewer/src/liteofd/jbig2/util.js +970 -0
- package/packages/components/fileViewer/src/liteofd/layer.ts +12 -0
- package/packages/components/fileViewer/src/liteofd/liteOfd.ts +185 -0
- package/packages/components/fileViewer/src/liteofd/ofdActions.ts +29 -0
- package/packages/components/fileViewer/src/liteofd/ofdCanvas.ts +19 -0
- package/packages/components/fileViewer/src/liteofd/ofdData.ts +28 -0
- package/packages/components/fileViewer/src/liteofd/ofdDocument.ts +109 -0
- package/packages/components/fileViewer/src/liteofd/ofdFont.ts +425 -0
- package/packages/components/fileViewer/src/liteofd/ofdRender.ts +259 -0
- package/packages/components/fileViewer/src/liteofd/ofdWriter.ts +142 -0
- package/packages/components/fileViewer/src/liteofd/ofdtools.ts +43 -0
- package/packages/components/fileViewer/src/liteofd/parser.ts +499 -0
- package/packages/components/fileViewer/src/liteofd/promiseCapability.ts +47 -0
- package/packages/components/fileViewer/src/liteofd/utils/commonFont.ts +15 -0
- package/packages/components/fileViewer/src/liteofd/utils/elementUtils.ts +362 -0
- package/packages/components/fileViewer/src/liteofd/utils/jsonToXml.ts +95 -0
- package/packages/components/fileViewer/src/liteofd/utils/ofdUtils.ts +301 -0
- package/packages/components/fileViewer/src/liteofd/utils/signatureUtil.ts +246 -0
- package/packages/components/fileViewer/src/liteofd/utils/sm3.ts +235 -0
- package/packages/components/fileViewer/src/liteofd/utils/utils.ts +489 -0
- package/packages/components/fileViewer/src/liteofd/utils/verify_signature_util.ts +41 -0
- package/packages/components/fileViewer/src/ofd/CircleLoading.vue +64 -0
- package/packages/components/fileViewer/src/ofd/OfdPreview.vue +456 -0
- package/packages/components/fileViewer/src/ofd/OfdViewer.vue +211 -0
- package/packages/components/fileViewer/src/ofd/PageIndicator.vue +88 -0
- package/packages/components/fileViewer/src/ofd/RatioIndicator.vue +271 -0
- package/packages/components/fileViewer/src/ofd/ToolTip.vue +81 -0
- package/packages/components/fileViewer/src/zh-fileViewer.vue +426 -0
- package/packages/components/form/index.ts +11 -0
- package/packages/components/form/src/zh-form-item.vue +299 -0
- package/packages/components/form/src/zh-form.vue +90 -0
- package/packages/components/hideNumber/index.ts +9 -0
- package/packages/components/hideNumber/src/zh-hide-number.vue +37 -0
- package/packages/components/icon/index.ts +10 -0
- package/packages/components/icon/src/zh-icon.vue +32 -0
- package/packages/components/image/index.ts +9 -0
- package/packages/components/image/src/zh-image.vue +245 -0
- package/packages/components/index.ts +112 -0
- package/packages/components/input/index.ts +10 -0
- package/packages/components/input/src/input.com.ts +30 -0
- package/packages/components/input/src/input.type.ts +1 -0
- package/packages/components/input/src/zh-input.vue +92 -0
- package/packages/components/input/style/index.scss +30 -0
- package/packages/components/layout/index.ts +12 -0
- package/packages/components/layout/src/zh-col.tsx +81 -0
- package/packages/components/layout/src/zh-row.tsx +58 -0
- package/packages/components/layout/style/row.scss +6 -0
- package/packages/components/map/index.ts +18 -0
- package/packages/components/map/src/zh-amap.vue +999 -0
- package/packages/components/map/src/zh-bmap.vue +1578 -0
- package/packages/components/map/src/zh-omap.vue +1522 -0
- package/packages/components/map/src/zh-smap.vue +1555 -0
- package/packages/components/map/src/zh-tmap.vue +1058 -0
- package/packages/components/message/index.ts +8 -0
- package/packages/components/message/src/data.com.ts +61 -0
- package/packages/components/message/src/message-icon.vue +60 -0
- package/packages/components/message/src/message.ts +89 -0
- package/packages/components/message/src/message.type.ts +40 -0
- package/packages/components/message/src/zh-message.vue +133 -0
- package/packages/components/message-box/index.ts +12 -0
- package/packages/components/message-box/src/messageBox.help.ts +40 -0
- package/packages/components/message-box/src/messageBox.ts +126 -0
- package/packages/components/message-box/src/zh-message-box.vue +94 -0
- package/packages/components/message-box/style/index.css +29 -0
- package/packages/components/noData/index.ts +9 -0
- package/packages/components/noData/src/zh-no-data.vue +42 -0
- package/packages/components/operationColumn/index.ts +9 -0
- package/packages/components/operationColumn/src/zh-operationColumn.vue +113 -0
- package/packages/components/provider/index.ts +11 -0
- package/packages/components/provider/src/zh-authControl.vue +28 -0
- package/packages/components/provider/src/zh-authProvider.vue +36 -0
- package/packages/components/qrcode/index.ts +9 -0
- package/packages/components/qrcode/src/zh-qrcode.vue +271 -0
- package/packages/components/radio/index.ts +10 -0
- package/packages/components/radio/src/zh-radio.vue +86 -0
- package/packages/components/searchForm/index.ts +9 -0
- package/packages/components/searchForm/src/zh-search-form.vue +340 -0
- package/packages/components/signature/index.ts +10 -0
- package/packages/components/signature/src/zh-signature.vue +355 -0
- package/packages/components/switch/index.ts +10 -0
- package/packages/components/switch/src/zh-switch.vue +162 -0
- package/packages/components/table/index.ts +10 -0
- package/packages/components/table/src/types.ts +62 -0
- package/packages/components/table/src/zh-table.vue +220 -0
- package/packages/components/upload/index.ts +15 -0
- package/packages/components/upload/src/zh-cupload.vue +147 -0
- package/packages/components/upload/src/zh-upload.vue +258 -0
- package/packages/components/upload/src/zh-uploadCard.vue +176 -0
- package/packages/components/upload/src/zh-uploadDialog.vue +165 -0
- package/packages/components/videoPlayer/index.ts +12 -0
- package/packages/components/videoPlayer/src/PlayerManager.js +706 -0
- package/packages/components/videoPlayer/src/api.js +354 -0
- package/packages/components/videoPlayer/src/errorHandler.ts +39 -0
- package/packages/components/videoPlayer/src/resourceLoader.ts +68 -0
- package/packages/components/videoPlayer/src/useDahuaPlayer.ts +242 -0
- package/packages/components/videoPlayer/src/zh-dhPlayer.vue +119 -0
- package/packages/components/videoPlayer/src/zh-hlsPlayer.vue +575 -0
- package/packages/resolver/index.ts +324 -0
- package/packages/styles/_element.scss +324 -0
- package/packages/styles/_variable.scss +136 -0
- package/packages/styles/index.scss +3 -0
- package/packages/tokens/tokens.ts +2 -0
- package/packages/types/form.ts +205 -0
- package/packages/types/index.ts +4 -0
- package/packages/types/player.ts +80 -0
- package/packages/types/provider.ts +4 -0
- package/packages/types/searchForm.ts +24 -0
- package/packages/utils/common/__tests__/common.test.ts +12 -0
- package/packages/utils/common/common.ts +68 -0
- package/packages/utils/constant.ts +12 -0
- package/packages/utils/copy.ts +20 -0
- package/packages/utils/data.ts +62 -0
- package/packages/utils/echarts/echarts.ts +34 -0
- package/packages/utils/event.ts +37 -0
- package/packages/utils/hooks/__tests__/hooks.test.ts +24 -0
- package/packages/utils/hooks/data.ts +100 -0
- package/packages/utils/hooks/hooks.util.ts +39 -0
- package/packages/utils/hooks/index.ts +1 -0
- package/packages/utils/hooks/useBreakpoint.ts +89 -0
- package/packages/utils/hooks/useEcharts.ts +56 -0
- package/packages/utils/hooks/useEventListener.ts +57 -0
- package/packages/utils/hooks/useLegendProcessor.ts +92 -0
- package/packages/utils/hooks/usePermission.ts +22 -0
- package/packages/utils/hooks/useTimeout.ts +45 -0
- package/packages/utils/is.ts +79 -0
- package/packages/utils/utils.ts +136 -0
- package/packages/utils/vue/util-modal.vue +61 -0
- package/types/auto-imports.d.ts +9 -0
- package/types/component.d.ts +6 -0
- package/types/components.d.ts +131 -0
- package/types/defaults.d.ts +5 -0
- package/types/el-components.d.ts +23 -0
- package/types/global.d.ts +130 -0
- package/types/index.d.ts +11 -0
- package/types/zh-components.d.ts +23 -0
- package/types/zhui.d.ts +76 -0
- package/.idea/workspace.xml +0 -72
- package/README.md +0 -1
- package/dist/zh-ui.es.js +0 -56706
- package/dist/zh-ui.umd.js +0 -67
package/dist/Heatmap.js
ADDED
|
@@ -0,0 +1,689 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var a=require("./index.js");require("vue");function xe(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function K(n,e){return n[0]=e[0],n[1]=e[1],n[4]=e[2],n[5]=e[3],n[12]=e[4],n[13]=e[5],n}const U=34962,ee=34963,Fe=35040,$e=35044,N=35048,Le=5121,De=5123,Be=5125,me=5126,ue=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function Ne(n,e){e=Object.assign({preserveDrawingBuffer:!0,antialias:!a.SAFARI_BUG_237906},e);const t=ue.length;for(let r=0;r<t;++r)try{const s=n.getContext(ue[r],e);if(s)return s}catch{}return null}const Oe={STATIC_DRAW:$e,STREAM_DRAW:Fe,DYNAMIC_DRAW:N};class we{constructor(e,t){this.array_=null,this.type_=e,a.assert(e===U||e===ee,"A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`"),this.usage_=t!==void 0?t:Oe.STATIC_DRAW}ofSize(e){return this.array_=new(D(this.type_))(e),this}fromArray(e){return this.array_=D(this.type_).from(e),this}fromArrayBuffer(e){return this.array_=new(D(this.type_))(e),this}getType(){return this.type_}getArray(){return this.array_}setArray(e){const t=D(this.type_);if(!(e instanceof t))throw new Error(`Expected ${t}`);this.array_=e}getUsage(){return this.usage_}getSize(){return this.array_?this.array_.length:0}}function D(n){switch(n){case U:return Float32Array;case ee:return Uint32Array;default:return Float32Array}}var j=we,B={LOST:"webglcontextlost",RESTORED:"webglcontextrestored"};const Ie=`
|
|
2
|
+
precision mediump float;
|
|
3
|
+
|
|
4
|
+
attribute vec2 a_position;
|
|
5
|
+
varying vec2 v_texCoord;
|
|
6
|
+
varying vec2 v_screenCoord;
|
|
7
|
+
|
|
8
|
+
uniform vec2 u_screenSize;
|
|
9
|
+
|
|
10
|
+
void main() {
|
|
11
|
+
v_texCoord = a_position * 0.5 + 0.5;
|
|
12
|
+
v_screenCoord = v_texCoord * u_screenSize;
|
|
13
|
+
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
14
|
+
}
|
|
15
|
+
`,Ue=`
|
|
16
|
+
precision mediump float;
|
|
17
|
+
|
|
18
|
+
uniform sampler2D u_image;
|
|
19
|
+
uniform float u_opacity;
|
|
20
|
+
|
|
21
|
+
varying vec2 v_texCoord;
|
|
22
|
+
|
|
23
|
+
void main() {
|
|
24
|
+
gl_FragColor = texture2D(u_image, v_texCoord) * u_opacity;
|
|
25
|
+
}
|
|
26
|
+
`;class Me{constructor(e){this.gl_=e.webGlContext;const t=this.gl_;this.scaleRatio_=e.scaleRatio||1,this.renderTargetTexture_=t.createTexture(),this.renderTargetTextureSize_=null,this.frameBuffer_=t.createFramebuffer(),this.depthBuffer_=t.createRenderbuffer();const r=t.createShader(t.VERTEX_SHADER);t.shaderSource(r,e.vertexShader||Ie),t.compileShader(r);const s=t.createShader(t.FRAGMENT_SHADER);t.shaderSource(s,e.fragmentShader||Ue),t.compileShader(s),this.renderTargetProgram_=t.createProgram(),t.attachShader(this.renderTargetProgram_,r),t.attachShader(this.renderTargetProgram_,s),t.linkProgram(this.renderTargetProgram_),this.renderTargetVerticesBuffer_=t.createBuffer();const i=[-1,-1,1,-1,-1,1,1,-1,1,1,-1,1];t.bindBuffer(t.ARRAY_BUFFER,this.renderTargetVerticesBuffer_),t.bufferData(t.ARRAY_BUFFER,new Float32Array(i),t.STATIC_DRAW),this.renderTargetAttribLocation_=t.getAttribLocation(this.renderTargetProgram_,"a_position"),this.renderTargetUniformLocation_=t.getUniformLocation(this.renderTargetProgram_,"u_screenSize"),this.renderTargetOpacityLocation_=t.getUniformLocation(this.renderTargetProgram_,"u_opacity"),this.renderTargetTextureLocation_=t.getUniformLocation(this.renderTargetProgram_,"u_image"),this.uniforms_=[],e.uniforms&&Object.keys(e.uniforms).forEach(o=>{this.uniforms_.push({value:e.uniforms[o],location:t.getUniformLocation(this.renderTargetProgram_,o)})})}getRenderTargetTexture(){return this.renderTargetTexture_}getGL(){return this.gl_}init(e){const t=this.getGL(),r=[t.drawingBufferWidth*this.scaleRatio_,t.drawingBufferHeight*this.scaleRatio_];if(t.bindFramebuffer(t.FRAMEBUFFER,this.getFrameBuffer()),t.bindRenderbuffer(t.RENDERBUFFER,this.getDepthBuffer()),t.viewport(0,0,r[0],r[1]),!this.renderTargetTextureSize_||this.renderTargetTextureSize_[0]!==r[0]||this.renderTargetTextureSize_[1]!==r[1]){this.renderTargetTextureSize_=r;const s=0,i=t.RGBA,o=0,c=t.RGBA,l=t.UNSIGNED_BYTE,u=null;t.bindTexture(t.TEXTURE_2D,this.renderTargetTexture_),t.texImage2D(t.TEXTURE_2D,s,i,r[0],r[1],o,c,l,u),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.renderTargetTexture_,0),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,r[0],r[1]),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,this.depthBuffer_)}}apply(e,t,r,s){const i=this.getGL(),o=e.size;if(i.bindFramebuffer(i.FRAMEBUFFER,t?t.getFrameBuffer():null),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.renderTargetTexture_),!t){const l=a.getUid(i.canvas);if(!e.renderTargets[l]){const u=i.getContextAttributes();u&&u.preserveDrawingBuffer&&(i.clearColor(0,0,0,0),i.clearDepth(1),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT)),e.renderTargets[l]=!0}}i.disable(i.DEPTH_TEST),i.enable(i.BLEND),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),i.viewport(0,0,i.drawingBufferWidth,i.drawingBufferHeight),i.bindBuffer(i.ARRAY_BUFFER,this.renderTargetVerticesBuffer_),i.useProgram(this.renderTargetProgram_),i.enableVertexAttribArray(this.renderTargetAttribLocation_),i.vertexAttribPointer(this.renderTargetAttribLocation_,2,i.FLOAT,!1,0,0),i.uniform2f(this.renderTargetUniformLocation_,o[0],o[1]),i.uniform1i(this.renderTargetTextureLocation_,0);const c=e.layerStatesArray[e.layerIndex].opacity;i.uniform1f(this.renderTargetOpacityLocation_,c),this.applyUniforms(e),r&&r(i,e),i.drawArrays(i.TRIANGLES,0,6),s&&s(i,e)}getFrameBuffer(){return this.frameBuffer_}getDepthBuffer(){return this.depthBuffer_}applyUniforms(e){const t=this.getGL();let r,s=1;this.uniforms_.forEach(function(i){if(r=typeof i.value=="function"?i.value(e):i.value,r instanceof HTMLCanvasElement||r instanceof ImageData)i.texture||(i.texture=t.createTexture()),t.activeTexture(t[`TEXTURE${s}`]),t.bindTexture(t.TEXTURE_2D,i.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),r instanceof ImageData?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,r.width,r.height,0,t.UNSIGNED_BYTE,new Uint8Array(r.data)):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r),t.uniform1i(i.location,s++);else if(Array.isArray(r))switch(r.length){case 2:t.uniform2f(i.location,r[0],r[1]);return;case 3:t.uniform3f(i.location,r[0],r[1],r[2]);return;case 4:t.uniform4f(i.location,r[0],r[1],r[2],r[3]);return;default:return}else typeof r=="number"&&t.uniform1f(i.location,r)})}}var fe=Me;const v={PROJECTION_MATRIX:"u_projectionMatrix",INVERT_PROJECTION_MATRIX:"u_invertProjectionMatrix",TIME:"u_time",ZOOM:"u_zoom",RESOLUTION:"u_resolution",ROTATION:"u_rotation",VIEWPORT_SIZE_PX:"u_viewportSizePx",PIXEL_RATIO:"u_pixelRatio",HIT_DETECTION:"u_hitDetection"},m={UNSIGNED_BYTE:Le,UNSIGNED_SHORT:De,UNSIGNED_INT:Be,FLOAT:me},M={};function he(n){return"shared/"+n}let de=0;function ze(){const n="unique/"+de;return de+=1,n}function Ge(n){let e=M[n];if(!e){const t=document.createElement("canvas");t.width=1,t.height=1,t.style.position="absolute",t.style.left="0";const r=Ne(t);e={users:0,context:r},M[n]=e}return e.users+=1,e.context}function ke(n){const e=M[n];if(!e||(e.users-=1,e.users>0))return;const t=e.context,r=t.getExtension("WEBGL_lose_context");r&&r.loseContext();const s=t.canvas;s.width=1,s.height=1,delete M[n]}class je extends a.Disposable{constructor(e){super(),e=e||{},this.boundHandleWebGLContextLost_=this.handleWebGLContextLost.bind(this),this.boundHandleWebGLContextRestored_=this.handleWebGLContextRestored.bind(this),this.canvasCacheKey_=e.canvasCacheKey?he(e.canvasCacheKey):ze(),this.gl_=Ge(this.canvasCacheKey_),this.bufferCache_={},this.extensionCache_={},this.currentProgram_=null,this.needsToBeRecreated_=!1;const t=this.gl_.canvas;t.addEventListener(B.LOST,this.boundHandleWebGLContextLost_),t.addEventListener(B.RESTORED,this.boundHandleWebGLContextRestored_),this.offsetRotateMatrix_=a.create(),this.offsetScaleMatrix_=a.create(),this.tmpMat4_=xe(),this.uniformLocationsByProgram_={},this.attribLocationsByProgram_={},this.uniforms_=[],e.uniforms&&this.setUniforms(e.uniforms),this.postProcessPasses_=e.postProcesses?e.postProcesses.map(r=>new fe({webGlContext:this.gl_,scaleRatio:r.scaleRatio,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,uniforms:r.uniforms})):[new fe({webGlContext:this.gl_})],this.shaderCompileErrors_=null,this.startTime_=Date.now(),this.maxAttributeCount_=this.gl_.getParameter(this.gl_.MAX_VERTEX_ATTRIBS)}setUniforms(e){this.uniforms_=[],this.addUniforms(e)}addUniforms(e){for(const t in e)this.uniforms_.push({name:t,value:e[t]})}canvasCacheKeyMatches(e){return this.canvasCacheKey_===he(e)}getExtension(e){if(e in this.extensionCache_)return this.extensionCache_[e];const t=this.gl_.getExtension(e);return this.extensionCache_[e]=t,t}getInstancedRenderingExtension_(){const e=this.getExtension("ANGLE_instanced_arrays");return a.assert(!!e,"WebGL extension 'ANGLE_instanced_arrays' is required for vector rendering"),e}bindBuffer(e){const t=this.gl_,r=a.getUid(e);let s=this.bufferCache_[r];if(!s){const i=t.createBuffer();s={buffer:e,webGlBuffer:i},this.bufferCache_[r]=s}t.bindBuffer(e.getType(),s.webGlBuffer)}flushBufferData(e){const t=this.gl_;this.bindBuffer(e),t.bufferData(e.getType(),e.getArray(),e.getUsage())}deleteBuffer(e){const t=a.getUid(e);delete this.bufferCache_[t]}disposeInternal(){const e=this.gl_.canvas;e.removeEventListener(B.LOST,this.boundHandleWebGLContextLost_),e.removeEventListener(B.RESTORED,this.boundHandleWebGLContextRestored_),ke(this.canvasCacheKey_),delete this.gl_}prepareDraw(e,t,r){const s=this.gl_,i=this.getCanvas(),o=e.size,c=e.pixelRatio;(i.width!==o[0]*c||i.height!==o[1]*c)&&(i.width=o[0]*c,i.height=o[1]*c,i.style.width=o[0]+"px",i.style.height=o[1]+"px");for(let l=this.postProcessPasses_.length-1;l>=0;l--)this.postProcessPasses_[l].init(e);s.bindTexture(s.TEXTURE_2D,null),s.clearColor(0,0,0,0),s.depthRange(0,1),s.clearDepth(1),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.enable(s.BLEND),s.blendFunc(s.ONE,t?s.ZERO:s.ONE_MINUS_SRC_ALPHA),r?(s.enable(s.DEPTH_TEST),s.depthFunc(s.LEQUAL)):s.disable(s.DEPTH_TEST)}bindFrameBuffer(e,t){const r=this.getGL();r.bindFramebuffer(r.FRAMEBUFFER,e),t&&r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t,0)}bindInitialFrameBuffer(){const e=this.getGL(),t=this.postProcessPasses_[0].getFrameBuffer();e.bindFramebuffer(e.FRAMEBUFFER,t);const r=this.postProcessPasses_[0].getRenderTargetTexture();e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0)}bindTexture(e,t,r){const s=this.gl_;s.activeTexture(s.TEXTURE0+t),s.bindTexture(s.TEXTURE_2D,e),s.uniform1i(this.getUniformLocation(r),t)}bindAttribute(e,t,r){const s=this.getGL();this.bindBuffer(e);const i=this.getAttributeLocation(t);s.enableVertexAttribArray(i),s.vertexAttribPointer(i,r,s.FLOAT,!1,0,0)}prepareDrawToRenderTarget(e,t,r,s){const i=this.gl_,o=t.getSize();i.bindFramebuffer(i.FRAMEBUFFER,t.getFramebuffer()),i.bindRenderbuffer(i.RENDERBUFFER,t.getDepthbuffer()),i.viewport(0,0,o[0],o[1]),i.bindTexture(i.TEXTURE_2D,t.getTexture()),i.clearColor(0,0,0,0),i.depthRange(0,1),i.clearDepth(1),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT),i.enable(i.BLEND),i.blendFunc(i.ONE,r?i.ZERO:i.ONE_MINUS_SRC_ALPHA),s?(i.enable(i.DEPTH_TEST),i.depthFunc(i.LEQUAL)):i.disable(i.DEPTH_TEST)}drawElements(e,t){const r=this.gl_;this.getExtension("OES_element_index_uint");const s=r.UNSIGNED_INT,i=4,o=t-e,c=e*i;r.drawElements(r.TRIANGLES,o,s,c)}drawElementsInstanced(e,t,r){const s=this.gl_;this.getExtension("OES_element_index_uint");const i=this.getInstancedRenderingExtension_(),o=s.UNSIGNED_INT,c=4,l=t-e,u=e*c;i.drawElementsInstancedANGLE(s.TRIANGLES,l,o,u,r);for(let f=0;f<this.maxAttributeCount_;f++)i.vertexAttribDivisorANGLE(f,0)}finalizeDraw(e,t,r){for(let s=0,i=this.postProcessPasses_.length;s<i;s++)s===i-1?this.postProcessPasses_[s].apply(e,null,t,r):this.postProcessPasses_[s].apply(e,this.postProcessPasses_[s+1])}getCanvas(){return this.gl_.canvas}getGL(){return this.gl_}applyFrameState(e){const t=e.size,r=e.viewState.rotation,s=e.pixelRatio;this.setUniformFloatValue(v.TIME,(Date.now()-this.startTime_)*.001),this.setUniformFloatValue(v.ZOOM,e.viewState.zoom),this.setUniformFloatValue(v.RESOLUTION,e.viewState.resolution),this.setUniformFloatValue(v.PIXEL_RATIO,s),this.setUniformFloatVec2(v.VIEWPORT_SIZE_PX,[t[0],t[1]]),this.setUniformFloatValue(v.ROTATION,r)}applyHitDetectionUniform(e){const t=this.getUniformLocation(v.HIT_DETECTION);this.getGL().uniform1i(t,e?1:0),e&&this.setUniformFloatValue(v.PIXEL_RATIO,.5)}applyUniforms(e){const t=this.gl_;let r,s=0;this.uniforms_.forEach(i=>{if(r=typeof i.value=="function"?i.value(e):i.value,r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof ImageData||r instanceof WebGLTexture){r instanceof WebGLTexture&&!i.texture?(i.prevValue=void 0,i.texture=r):i.texture||(i.prevValue=void 0,i.texture=t.createTexture()),this.bindTexture(i.texture,s,i.name),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE);const o=!(r instanceof HTMLImageElement)||r.complete;!(r instanceof WebGLTexture)&&o&&i.prevValue!==r&&(i.prevValue=r,t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)),s++}else if(Array.isArray(r)&&r.length===6)this.setUniformMatrixValue(i.name,K(this.tmpMat4_,r));else if(Array.isArray(r)&&r.length<=4)switch(r.length){case 2:t.uniform2f(this.getUniformLocation(i.name),r[0],r[1]);return;case 3:t.uniform3f(this.getUniformLocation(i.name),r[0],r[1],r[2]);return;case 4:t.uniform4f(this.getUniformLocation(i.name),r[0],r[1],r[2],r[3]);return;default:return}else typeof r=="number"&&t.uniform1f(this.getUniformLocation(i.name),r)})}useProgram(e,t){this.disableAllAttributes_(),this.gl_.useProgram(e),this.currentProgram_=e,t&&(this.applyFrameState(t),this.applyUniforms(t))}compileShader(e,t){const r=this.gl_,s=r.createShader(t);return r.shaderSource(s,e),r.compileShader(s),s}getProgram(e,t){const r=this.gl_,s=this.compileShader(e,r.FRAGMENT_SHADER),i=this.compileShader(t,r.VERTEX_SHADER),o=r.createProgram();if(r.attachShader(o,s),r.attachShader(o,i),r.linkProgram(o),!r.getShaderParameter(s,r.COMPILE_STATUS)){const c=`Fragment shader compilation failed: ${r.getShaderInfoLog(s)}`;throw new Error(c)}if(r.deleteShader(s),!r.getShaderParameter(i,r.COMPILE_STATUS)){const c=`Vertex shader compilation failed: ${r.getShaderInfoLog(i)}`;throw new Error(c)}if(r.deleteShader(i),!r.getProgramParameter(o,r.LINK_STATUS)){const c=`GL program linking failed: ${r.getProgramInfoLog(o)}`;throw new Error(c)}return o}getUniformLocation(e){const t=a.getUid(this.currentProgram_);return this.uniformLocationsByProgram_[t]===void 0&&(this.uniformLocationsByProgram_[t]={}),this.uniformLocationsByProgram_[t][e]===void 0&&(this.uniformLocationsByProgram_[t][e]=this.gl_.getUniformLocation(this.currentProgram_,e)),this.uniformLocationsByProgram_[t][e]}getAttributeLocation(e){const t=a.getUid(this.currentProgram_);return this.attribLocationsByProgram_[t]===void 0&&(this.attribLocationsByProgram_[t]={}),this.attribLocationsByProgram_[t][e]===void 0&&(this.attribLocationsByProgram_[t][e]=this.gl_.getAttribLocation(this.currentProgram_,e)),this.attribLocationsByProgram_[t][e]}makeProjectionTransform(e,t){const r=e.size,s=e.viewState.rotation,i=e.viewState.resolution,o=e.viewState.center;return a.compose(t,0,0,2/(i*r[0]),2/(i*r[1]),-s,-o[0],-o[1]),t}setUniformFloatValue(e,t){this.gl_.uniform1f(this.getUniformLocation(e),t)}setUniformFloatVec2(e,t){this.gl_.uniform2fv(this.getUniformLocation(e),t)}setUniformFloatVec4(e,t){this.gl_.uniform4fv(this.getUniformLocation(e),t)}setUniformMatrixValue(e,t){this.gl_.uniformMatrix4fv(this.getUniformLocation(e),!1,t)}disableAllAttributes_(){for(let e=0;e<this.maxAttributeCount_;e++)this.gl_.disableVertexAttribArray(e)}enableAttributeArray_(e,t,r,s,i,o){const c=this.getAttributeLocation(e);c<0||(this.gl_.enableVertexAttribArray(c),this.gl_.vertexAttribPointer(c,t,r,!1,s,i),o&&this.getInstancedRenderingExtension_().vertexAttribDivisorANGLE(c,1))}enableAttributes_(e,t){const r=We(e);let s=0;for(let i=0;i<e.length;i++){const o=e[i];o.name&&this.enableAttributeArray_(o.name,o.size,o.type||me,r,s,t),s+=o.size*Ee(o.type)}}enableAttributes(e){this.enableAttributes_(e,!1)}enableAttributesInstanced(e){this.enableAttributes_(e,!0)}handleWebGLContextLost(e){a.clear(this.bufferCache_),this.currentProgram_=null,e.preventDefault()}handleWebGLContextRestored(){this.needsToBeRecreated_=!0}needsToBeRecreated(){return this.needsToBeRecreated_}createTexture(e,t,r,s){const i=this.gl_;r=r||i.createTexture();const o=s?i.NEAREST:i.LINEAR;i.bindTexture(i.TEXTURE_2D,r),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,o),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,o),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE);const c=0,l=i.RGBA,u=0,f=i.RGBA,h=i.UNSIGNED_BYTE;return t instanceof Uint8Array?i.texImage2D(i.TEXTURE_2D,c,l,e[0],e[1],u,f,h,t):t?i.texImage2D(i.TEXTURE_2D,c,l,f,h,t):i.texImage2D(i.TEXTURE_2D,c,l,e[0],e[1],u,f,h,null),r}}function We(n){let e=0;for(let t=0;t<n.length;t++){const r=n[t];e+=r.size*Ee(r.type)}return e}function Ee(n){switch(n){case m.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case m.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case m.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case m.FLOAT:default:return Float32Array.BYTES_PER_ELEMENT}}class te extends a.LayerRenderer{constructor(e,t){super(e),t=t||{},this.inversePixelTransform_=a.create(),this.postProcesses_=t.postProcesses,this.uniforms_=t.uniforms,this.helper,this.onMapChanged_=()=>{this.clearCache(),this.removeHelper()},e.addChangeListener(a.LayerProperty.MAP,this.onMapChanged_),this.dispatchPreComposeEvent=this.dispatchPreComposeEvent.bind(this),this.dispatchPostComposeEvent=this.dispatchPostComposeEvent.bind(this)}dispatchPreComposeEvent(e,t){const r=this.getLayer();if(r.hasListener(a.RenderEventType.PRECOMPOSE)){const s=new a.RenderEvent(a.RenderEventType.PRECOMPOSE,void 0,t,e);r.dispatchEvent(s)}}dispatchPostComposeEvent(e,t){const r=this.getLayer();if(r.hasListener(a.RenderEventType.POSTCOMPOSE)){const s=new a.RenderEvent(a.RenderEventType.POSTCOMPOSE,void 0,t,e);r.dispatchEvent(s)}}reset(e){this.uniforms_=e.uniforms,this.helper&&this.helper.setUniforms(this.uniforms_)}removeHelper(){this.helper&&(this.helper.dispose(),delete this.helper)}prepareFrame(e){if(this.getLayer().getRenderSource()){let t=!0,r=-1,s;for(let o=0,c=e.layerStatesArray.length;o<c;o++){const l=e.layerStatesArray[o].layer,u=l.getRenderer();if(!(u instanceof te)){t=!0;continue}const f=l.getClassName();if((t||f!==s)&&(r+=1,t=!1),s=f,u===this)break}const i="map/"+e.mapId+"/group/"+r;(!this.helper||!this.helper.canvasCacheKeyMatches(i)||this.helper.needsToBeRecreated())&&(this.removeHelper(),this.helper=new je({postProcesses:this.postProcesses_,uniforms:this.uniforms_,canvasCacheKey:i}),s&&(this.helper.getCanvas().className=s),this.afterHelperCreated())}return this.prepareFrameInternal(e)}afterHelperCreated(){}prepareFrameInternal(e){return!0}clearCache(){}disposeInternal(){var e;this.clearCache(),this.removeHelper(),(e=this.getLayer())==null||e.removeChangeListener(a.LayerProperty.MAP,this.onMapChanged_),super.disposeInternal()}dispatchRenderEvent_(e,t,r){const s=this.getLayer();if(s.hasListener(e)){a.compose(this.inversePixelTransform_,0,0,r.pixelRatio,-r.pixelRatio,0,0,-r.size[1]);const i=new a.RenderEvent(e,this.inversePixelTransform_,r,t);s.dispatchEvent(i)}}preRender(e,t){this.dispatchRenderEvent_(a.RenderEventType.PRERENDER,e,t)}postRender(e,t){this.dispatchRenderEvent_(a.RenderEventType.POSTRENDER,e,t)}}var Xe=te;const Ve={...v,TILE_TRANSFORM:"u_tileTransform",TRANSITION_ALPHA:"u_transitionAlpha",DEPTH:"u_depth",RENDER_EXTENT:"u_renderExtent",GLOBAL_ALPHA:"u_globalAlpha"},W={...Ve,TILE_TEXTURE_ARRAY:"u_tileTextures",TEXTURE_PIXEL_WIDTH:"u_texturePixelWidth",TEXTURE_PIXEL_HEIGHT:"u_texturePixelHeight",TEXTURE_RESOLUTION:"u_textureResolution"};class He{constructor(e,t){this.name=e,this.data=t,this.texture_=null}getTexture(e){if(!this.texture_){const t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,this.data.length/4,1,0,e.RGBA,e.UNSIGNED_BYTE,this.data),this.texture_=t}return this.texture_}delete(e){this.texture_&&e.deleteTexture(this.texture_),this.texture_=null}}var Ze=He;function qe(n,e){return`operator_${n}_${Object.keys(e.functions).length}`}function A(n){const e=n.toString();return e.includes(".")?e:e+".0"}function re(n){if(n.length<2||n.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return`vec${n.length}(${n.map(A).join(", ")})`}function O(n){const e=a.asArray(n),t=e.length>3?e[3]:1;return re([e[0]/255,e[1]/255,e[2]/255,t])}function Ye(n){const e=a.toSize(n);return re(e)}const X={};let Ke=0;function L(n){return n in X||(X[n]=Ke++),X[n]}function R(n){return A(L(n))}function ne(n){return"u_var_"+n}function ve(){return{variables:{},properties:{},functions:{},bandCount:0,featureId:!1,geometryType:!1}}const V="getBandValue",Je="u_paletteTextures",Te="featureId",ye="geometryType",J=-9999999;function Qe(n,e,t,r){const s=a.parse(n,e,t);return ie(s,e,r)}function _(n){return(e,t,r)=>{const s=t.args.length,i=new Array(s);for(let o=0;o<s;++o)i[o]=ie(t.args[o],r,e);return n(i,e)}}const et={[a.Ops.Get]:(n,e)=>{const r=e.args[0].value;r in n.properties||(n.properties[r]={name:r,type:e.type});let i="a_prop_"+r;return a.isType(e.type,a.BooleanType)&&(i=`(${i} > 0.0)`),i},[a.Ops.Id]:n=>(n.featureId=!0,"a_"+Te),[a.Ops.GeometryType]:n=>(n.geometryType=!0,"a_"+ye),[a.Ops.LineMetric]:()=>"currentLineMetric",[a.Ops.Var]:(n,e)=>{const r=e.args[0].value;r in n.variables||(n.variables[r]={name:r,type:e.type});let i=ne(r);return a.isType(e.type,a.BooleanType)&&(i=`(${i} > 0.0)`),i},[a.Ops.Has]:(n,e)=>{const r=e.args[0].value;return r in n.properties||(n.properties[r]={name:r,type:e.type}),`(a_prop_${r} != ${A(J)})`},[a.Ops.Resolution]:()=>"u_resolution",[a.Ops.Zoom]:()=>"u_zoom",[a.Ops.Time]:()=>"u_time",[a.Ops.Any]:_(n=>`(${n.join(" || ")})`),[a.Ops.All]:_(n=>`(${n.join(" && ")})`),[a.Ops.Not]:_(([n])=>`(!${n})`),[a.Ops.Equal]:_(([n,e])=>`(${n} == ${e})`),[a.Ops.NotEqual]:_(([n,e])=>`(${n} != ${e})`),[a.Ops.GreaterThan]:_(([n,e])=>`(${n} > ${e})`),[a.Ops.GreaterThanOrEqualTo]:_(([n,e])=>`(${n} >= ${e})`),[a.Ops.LessThan]:_(([n,e])=>`(${n} < ${e})`),[a.Ops.LessThanOrEqualTo]:_(([n,e])=>`(${n} <= ${e})`),[a.Ops.Multiply]:_(n=>`(${n.join(" * ")})`),[a.Ops.Divide]:_(([n,e])=>`(${n} / ${e})`),[a.Ops.Add]:_(n=>`(${n.join(" + ")})`),[a.Ops.Subtract]:_(([n,e])=>`(${n} - ${e})`),[a.Ops.Clamp]:_(([n,e,t])=>`clamp(${n}, ${e}, ${t})`),[a.Ops.Mod]:_(([n,e])=>`mod(${n}, ${e})`),[a.Ops.Pow]:_(([n,e])=>`pow(${n}, ${e})`),[a.Ops.Abs]:_(([n])=>`abs(${n})`),[a.Ops.Floor]:_(([n])=>`floor(${n})`),[a.Ops.Ceil]:_(([n])=>`ceil(${n})`),[a.Ops.Round]:_(([n])=>`floor(${n} + 0.5)`),[a.Ops.Sin]:_(([n])=>`sin(${n})`),[a.Ops.Cos]:_(([n])=>`cos(${n})`),[a.Ops.Atan]:_(([n,e])=>e!==void 0?`atan(${n}, ${e})`:`atan(${n})`),[a.Ops.Sqrt]:_(([n])=>`sqrt(${n})`),[a.Ops.Match]:_(n=>{const e=n[0],t=n[n.length-1];let r=null;for(let s=n.length-3;s>=1;s-=2){const i=n[s],o=n[s+1];r=`(${e} == ${i} ? ${o} : ${r||t})`}return r}),[a.Ops.Between]:_(([n,e,t])=>`(${n} >= ${e} && ${n} <= ${t})`),[a.Ops.Interpolate]:_(([n,e,...t])=>{let r="";for(let s=0;s<t.length-2;s+=2){const i=t[s],o=r||t[s+1],c=t[s+2],l=t[s+3];let u;n===A(1)?u=`(${e} - ${i}) / (${c} - ${i})`:u=`(pow(${n}, (${e} - ${i})) - 1.0) / (pow(${n}, (${c} - ${i})) - 1.0)`,r=`mix(${o}, ${l}, clamp(${u}, 0.0, 1.0))`}return r}),[a.Ops.Case]:_(n=>{const e=n[n.length-1];let t=null;for(let r=n.length-3;r>=0;r-=2){const s=n[r],i=n[r+1];t=`(${s} ? ${i} : ${t||e})`}return t}),[a.Ops.In]:_(([n,...e],t)=>{const r=qe("in",t),s=[];for(let i=0;i<e.length;i+=1)s.push(` if (inputValue == ${e[i]}) { return true; }`);return t.functions[r]=`bool ${r}(float inputValue) {
|
|
27
|
+
${s.join(`
|
|
28
|
+
`)}
|
|
29
|
+
return false;
|
|
30
|
+
}`,`${r}(${n})`}),[a.Ops.Array]:_(n=>`vec${n.length}(${n.join(", ")})`),[a.Ops.Color]:_(n=>{if(n.length===1)return`vec4(vec3(${n[0]} / 255.0), 1.0)`;if(n.length===2)return`vec4(vec3(${n[0]} / 255.0), ${n[1]})`;const e=n.slice(0,3).map(r=>`${r} / 255.0`);if(n.length===3)return`vec4(${e.join(", ")}, 1.0)`;const t=n[3];return`vec4(${e.join(", ")}, ${t})`}),[a.Ops.Band]:_(([n,e,t],r)=>{if(!(V in r.functions)){let s="";const i=r.bandCount||1;for(let o=0;o<i;o++){const c=Math.floor(o/4);let l=o%4;o===i-1&&l===1&&(l=3);const u=`${W.TILE_TEXTURE_ARRAY}[${c}]`;s+=` if (band == ${o+1}.0) {
|
|
31
|
+
return texture2D(${u}, v_textureCoord + vec2(dx, dy))[${l}];
|
|
32
|
+
}
|
|
33
|
+
`}r.functions[V]=`float getBandValue(float band, float xOffset, float yOffset) {
|
|
34
|
+
float dx = xOffset / ${W.TEXTURE_PIXEL_WIDTH};
|
|
35
|
+
float dy = yOffset / ${W.TEXTURE_PIXEL_HEIGHT};
|
|
36
|
+
${s}
|
|
37
|
+
}`}return`${V}(${n}, ${e!=null?e:"0.0"}, ${t!=null?t:"0.0"})`}),[a.Ops.Palette]:(n,e)=>{const[t,...r]=e.args,s=r.length,i=new Uint8Array(s*4);for(let u=0;u<r.length;u++){const f=r[u].value,h=a.asArray(f),d=u*4;i[d]=h[0],i[d+1]=h[1],i[d+2]=h[2],i[d+3]=h[3]*255}n.paletteTextures||(n.paletteTextures=[]);const o=`${Je}[${n.paletteTextures.length}]`,c=new Ze(o,i);n.paletteTextures.push(c);const l=ie(t,a.NumberType,n);return`texture2D(${o}, vec2((${l} + 0.5) / ${s}.0, 0.5))`}};function ie(n,e,t){if(n instanceof a.CallExpression){const r=et[n.operator];if(r===void 0)throw new Error(`No compiler defined for this operator: ${JSON.stringify(n.operator)}`);return r(t,n,e)}if((n.type&a.NumberType)>0)return A(n.value);if((n.type&a.BooleanType)>0)return n.value.toString();if((n.type&a.StringType)>0)return R(n.value.toString());if((n.type&a.ColorType)>0)return O(n.value);if((n.type&a.NumberArrayType)>0)return re(n.value);if((n.type&a.SizeType)>0)return Ye(n.value);throw new Error(`Unexpected expression ${n.value} (expected type ${a.typeName(e)})`)}function tt(){return{"fill-color":"rgba(255,255,255,0.4)","stroke-color":"#3399CC","stroke-width":1.25,"circle-radius":5,"circle-fill-color":"rgba(255,255,255,0.4)","circle-stroke-width":1.25,"circle-stroke-color":"#3399CC"}}const pe=.985;function p(n,e,t,r){return Qe(e,t,r!=null?r:a.newParsingContext(),n)}function rt(n){const e=a.asArray(n),t=e[0]*256,r=e[1],s=e[2]*256,i=Math.round(e[3]*255);return[t+r,s+i]}const nt=`vec4 unpackColor(vec2 packedColor) {
|
|
38
|
+
return vec4(
|
|
39
|
+
min(floor(packedColor[0] / 256.0) / 255.0, 1.0),
|
|
40
|
+
min(mod(packedColor[0], 256.0) / 255.0, 1.0),
|
|
41
|
+
min(floor(packedColor[1] / 256.0) / 255.0, 1.0),
|
|
42
|
+
min(mod(packedColor[1], 256.0) / 255.0, 1.0)
|
|
43
|
+
);
|
|
44
|
+
}`;function se(n){return n===a.ColorType||n===a.SizeType?2:n===a.NumberArrayType?4:1}function Q(n){const e=se(n);return e>1?`vec${e}`:"float"}function Pe(n,e){for(const t in e.variables){const r=e.variables[t],s=ne(r.name);let i=Q(r.type);r.type===a.ColorType&&(i="vec4"),n.addUniform(s,i)}for(const t in e.properties){const r=e.properties[t],s=Q(r.type),i=`a_prop_${r.name}`;r.type===a.ColorType?n.addAttribute(i,s,`unpackColor(${i})`,"vec4"):n.addAttribute(i,s)}for(const t in e.functions)n.addVertexShaderFunction(e.functions[t]),n.addFragmentShaderFunction(e.functions[t])}function be(n,e){const t={};for(const r in n.variables){const s=n.variables[r],i=ne(s.name);t[i]=()=>{var c;const o=e[s.name];if(typeof o=="number")return o;if(typeof o=="boolean")return o?1:0;if(s.type===a.ColorType){const l=[...a.asArray(o||"#eee")];return l[0]/=255,l[1]/=255,l[2]/=255,(c=l[3])!=null||(l[3]=1),l}return typeof o=="string"?L(o):o}}return t}function Re(n){const e={};for(const t in n.properties){const r=n.properties[t],s=i=>{const o=i.get(r.name);return r.type===a.ColorType?rt([...a.asArray(o||"#eee")]):typeof o=="string"?L(o):typeof o=="boolean"?o?1:0:o};e[`prop_${r.name}`]={size:se(r.type),callback:s}}return e}function H(n){return n-w(n)}function w(n){return Math.fround(n)}const it=`
|
|
45
|
+
vec2 df_from(float value) {
|
|
46
|
+
return vec2(value, 0.);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
float df_float(vec2 df) {
|
|
50
|
+
return df.x;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
vec2 df_add(vec2 dfa, vec2 dfb) {
|
|
54
|
+
vec2 dfc;
|
|
55
|
+
float t1, t2, e;
|
|
56
|
+
|
|
57
|
+
t1 = dfa.x * u_one + dfb.x * u_one;
|
|
58
|
+
e = t1 * u_one - dfa.x * u_one;
|
|
59
|
+
t2 = ((dfb.x - e) + (dfa.x - (t1 - e))) * u_one + dfa.y + dfb.y * u_one;
|
|
60
|
+
|
|
61
|
+
dfc.x = t1 * u_one + t2 * u_one;
|
|
62
|
+
dfc.y = t2 - (dfc.x - t1) * u_one;
|
|
63
|
+
return dfc;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
vec2 df_sub(vec2 dfa, vec2 dfb) {
|
|
67
|
+
vec2 dfc;
|
|
68
|
+
float e, t1, t2;
|
|
69
|
+
|
|
70
|
+
t1 = dfa.x - dfb.x;
|
|
71
|
+
e = t1 - dfa.x;
|
|
72
|
+
t2 = ((-dfb.x - e) + (dfa.x - (t1 - e))) + dfa.y - dfb.y;
|
|
73
|
+
|
|
74
|
+
dfc.x = t1 + t2;
|
|
75
|
+
dfc.y = t2 - (dfc.x - t1);
|
|
76
|
+
return dfc;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
vec2 df_mul(vec2 dfa, vec2 dfb) {
|
|
80
|
+
vec2 dfc;
|
|
81
|
+
float c11, c21, c2, e, t1, t2;
|
|
82
|
+
float a1, a2, b1, b2, cona, conb, split = 4097.;
|
|
83
|
+
|
|
84
|
+
cona = dfa.x * split * u_one;
|
|
85
|
+
conb = dfb.x * split * u_one;
|
|
86
|
+
a1 = cona * u_one - (cona - dfa.x);
|
|
87
|
+
b1 = conb * u_one - (conb - dfb.x);
|
|
88
|
+
a2 = dfa.x * u_one - a1;
|
|
89
|
+
b2 = dfb.x * u_one - b1 * u_one;
|
|
90
|
+
|
|
91
|
+
c11 = dfa.x * u_one * dfb.x * u_one;
|
|
92
|
+
c21 = a2 * b2 * u_one + (a2 * b1 + (a1 * b2 + (a1 * b1 - c11))) * u_one;
|
|
93
|
+
|
|
94
|
+
c2 = dfa.x * dfb.y * u_one + dfa.y * dfb.x * u_one;
|
|
95
|
+
|
|
96
|
+
t1 = c11 + c2 * u_one;
|
|
97
|
+
e = t1 - c11 * u_one;
|
|
98
|
+
t2 = dfa.y * dfb.y * u_one + ((c2 - e) + (c11 - (t1 - e))) + c21 * u_one;
|
|
99
|
+
|
|
100
|
+
dfc.x = t1 * u_one + t2 * u_one;
|
|
101
|
+
dfc.y = t2 - (dfc.x - t1) * u_one;
|
|
102
|
+
|
|
103
|
+
return dfc;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
vec2 df_div(vec2 dfa, vec2 dfb) {
|
|
107
|
+
vec2 dfc;
|
|
108
|
+
float c11, c21, c2, e, t1, t2, t11, t12, t21, t22;
|
|
109
|
+
float a1, a2, b1, b2, cona, conb, split = 4097.;
|
|
110
|
+
float s1, s2;
|
|
111
|
+
|
|
112
|
+
s1 = dfa.x / dfb.x * u_one;
|
|
113
|
+
cona = s1 * split * u_one;
|
|
114
|
+
conb = dfb.x * split * u_one;
|
|
115
|
+
a1 = cona - (cona - s1) * u_one;
|
|
116
|
+
b1 = conb - (conb - dfb.x) * u_one;
|
|
117
|
+
a2 = s1 - a1 * u_one;
|
|
118
|
+
b2 = dfb.x - b1 * u_one;
|
|
119
|
+
|
|
120
|
+
c11 = s1 * dfb.x * u_one;
|
|
121
|
+
c21 = (((a1 * b1 - c11) + a1 * b2) + a2 * b1) + a2 * b2 * u_one;
|
|
122
|
+
|
|
123
|
+
c2 = s1 * dfb.y * u_one;
|
|
124
|
+
|
|
125
|
+
t1 = c11 + c2 * u_one;
|
|
126
|
+
e = t1 - c11 * u_one;
|
|
127
|
+
t2 = ((c2 - e) + (c11 - (t1 - e))) + c21 * u_one;
|
|
128
|
+
|
|
129
|
+
t12 = t1 + t2 * u_one;
|
|
130
|
+
t22 = t2 - (t12 - t1) * u_one;
|
|
131
|
+
|
|
132
|
+
t11 = dfa.x - t12 * u_one;
|
|
133
|
+
e = t11 - dfa.x * u_one;
|
|
134
|
+
t21 = ((-t12 - e) + (dfa.x - (t11 - e))) + dfa.y - t22 * u_one;
|
|
135
|
+
|
|
136
|
+
s2 = (t11 + t21) / dfb.x * u_one;
|
|
137
|
+
|
|
138
|
+
dfc.x = s1 + s2 * u_one;
|
|
139
|
+
dfc.y = s2 - (dfc.x - s1) * u_one;
|
|
140
|
+
|
|
141
|
+
return dfc;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
float df_mod(vec2 df, vec2 m) {
|
|
145
|
+
vec2 q = df_div(df, m) * u_one;
|
|
146
|
+
float qf = floor(q.x);
|
|
147
|
+
float frac = q.x - qf + q.y * u_one;
|
|
148
|
+
if (frac < 0.0) qf -= 1.0;
|
|
149
|
+
if (frac >= 1.0) qf += 1.0;
|
|
150
|
+
vec2 prod = df_mul(df_from(qf), m);
|
|
151
|
+
vec2 rem = df_add(df_from(df.x), df_from(-prod.x)) * u_one;
|
|
152
|
+
rem.y += df.y - prod.y;
|
|
153
|
+
return rem.x + rem.y * u_one;
|
|
154
|
+
}
|
|
155
|
+
`,C=`#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
156
|
+
precision highp float;
|
|
157
|
+
#else
|
|
158
|
+
precision mediump float;
|
|
159
|
+
#endif
|
|
160
|
+
uniform float u_one;
|
|
161
|
+
uniform mat4 u_projectionMatrix;
|
|
162
|
+
uniform mat4 u_invertProjectionMatrix;
|
|
163
|
+
uniform vec2 u_viewportSizePx;
|
|
164
|
+
uniform float u_pixelRatio;
|
|
165
|
+
uniform float u_globalAlpha;
|
|
166
|
+
uniform float u_time;
|
|
167
|
+
uniform float u_zoom;
|
|
168
|
+
uniform float u_resolution;
|
|
169
|
+
uniform float u_rotation;
|
|
170
|
+
uniform vec4 u_renderExtent;
|
|
171
|
+
uniform float u_depth;
|
|
172
|
+
uniform mediump int u_hitDetection;
|
|
173
|
+
|
|
174
|
+
// these 64-bits floats are split into high/low
|
|
175
|
+
uniform vec2 u_df_patternOriginX;
|
|
176
|
+
uniform vec2 u_df_patternOriginY;
|
|
177
|
+
uniform vec2 u_df_patternScaleRatio;
|
|
178
|
+
|
|
179
|
+
const float PI = 3.141592653589793238;
|
|
180
|
+
const float TWO_PI = 2.0 * PI;
|
|
181
|
+
float currentLineMetric = 0.; // an actual value will be used in the stroke shaders
|
|
182
|
+
|
|
183
|
+
vec2 pxToWorld(vec2 pxPos) {
|
|
184
|
+
vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;
|
|
185
|
+
return (u_invertProjectionMatrix * vec4(screenPos, 0.0, 1.0)).xy;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
vec2 worldToPx(vec2 worldPos) {
|
|
189
|
+
vec4 screenPos = u_projectionMatrix * vec4(worldPos, 0.0, 1.0);
|
|
190
|
+
return (0.5 * screenPos.xy + 0.5) * u_viewportSizePx;
|
|
191
|
+
}
|
|
192
|
+
${nt}
|
|
193
|
+
${it}
|
|
194
|
+
`,F=tt();class Se{constructor(){this.uniforms_=[],this.attributes_=[],this.hasSymbol_=!1,this.symbolSizeExpression_=`vec2(${A(F["circle-radius"])} + ${A(F["circle-stroke-width"]*.5)})`,this.symbolRotationExpression_="0.0",this.symbolOffsetExpression_="vec2(0.0)",this.symbolColorExpression_=O(F["circle-fill-color"]),this.texCoordExpression_="vec4(0.0, 0.0, 1.0, 1.0)",this.fragmentDiscardExpression_=null,this.shapeDiscardExpression_=null,this.symbolRotateWithView_=!1,this.hasStroke_=!1,this.strokeWidthExpression_=A(F["stroke-width"]),this.strokeColorExpression_=O(F["stroke-color"]),this.strokeOffsetExpression_="0.",this.strokeCapExpression_=R("round"),this.strokeJoinExpression_=R("round"),this.strokeMiterLimitExpression_="10.",this.strokeDistanceFieldExpression_="-1000.",this.strokePatternLengthExpression_=null,this.hasFill_=!1,this.fillColorExpression_=O(F["fill-color"]),this.fillPatternSizeExpression_=null,this.vertexShaderFunctions_=[],this.fragmentShaderFunctions_=[]}addUniform(e,t){return this.uniforms_.push({name:e,type:t}),this}addAttribute(e,t,r,s){return this.attributes_.push({name:e,type:t,varyingName:e.replace(/^a_/,"v_"),varyingType:s!=null?s:t,varyingExpression:r!=null?r:e}),this}setSymbolSizeExpression(e){return this.hasSymbol_=!0,this.symbolSizeExpression_=e,this}getSymbolSizeExpression(){return this.symbolSizeExpression_}setSymbolRotationExpression(e){return this.symbolRotationExpression_=e,this}setSymbolOffsetExpression(e){return this.symbolOffsetExpression_=e,this}getSymbolOffsetExpression(){return this.symbolOffsetExpression_}setSymbolColorExpression(e){return this.hasSymbol_=!0,this.symbolColorExpression_=e,this}getSymbolColorExpression(){return this.symbolColorExpression_}setTextureCoordinateExpression(e){return this.texCoordExpression_=e,this}setFragmentDiscardExpression(e){return this.fragmentDiscardExpression_=e,this}getFragmentDiscardExpression(){return this.fragmentDiscardExpression_}setShapeDiscardExpression(e){return this.shapeDiscardExpression_=e,this}getShapeDiscardExpression(){return this.shapeDiscardExpression_}setSymbolRotateWithView(e){return this.symbolRotateWithView_=e,this}setStrokeWidthExpression(e){return this.hasStroke_=!0,this.strokeWidthExpression_=e,this}setStrokeColorExpression(e){return this.hasStroke_=!0,this.strokeColorExpression_=e,this}getStrokeColorExpression(){return this.strokeColorExpression_}setStrokeOffsetExpression(e){return this.strokeOffsetExpression_=e,this}setStrokeCapExpression(e){return this.strokeCapExpression_=e,this}setStrokeJoinExpression(e){return this.strokeJoinExpression_=e,this}setStrokeMiterLimitExpression(e){return this.strokeMiterLimitExpression_=e,this}setStrokeDistanceFieldExpression(e){return this.strokeDistanceFieldExpression_=e,this}setStrokePatternLengthExpression(e){return this.strokePatternLengthExpression_=e,this}getStrokePatternLengthExpression(){return this.strokePatternLengthExpression_}setFillColorExpression(e){return this.hasFill_=!0,this.fillColorExpression_=e,this}getFillColorExpression(){return this.fillColorExpression_}setFillPatternSizeExpression(e){return this.fillPatternSizeExpression_=e,this}getFillPatternSizeExpression(){return this.fillPatternSizeExpression_}addVertexShaderFunction(e){return this.vertexShaderFunctions_.includes(e)?this:(this.vertexShaderFunctions_.push(e),this)}addFragmentShaderFunction(e){return this.fragmentShaderFunctions_.includes(e)?this:(this.fragmentShaderFunctions_.push(e),this)}getSymbolVertexShader(){return this.hasSymbol_?`${C}
|
|
195
|
+
${this.uniforms_.map(e=>`uniform ${e.type} ${e.name};`).join(`
|
|
196
|
+
`)}
|
|
197
|
+
attribute vec2 a_position;
|
|
198
|
+
attribute vec2 a_localPosition;
|
|
199
|
+
attribute vec2 a_hitColor;
|
|
200
|
+
|
|
201
|
+
varying vec2 v_texCoord;
|
|
202
|
+
varying vec2 v_quadCoord;
|
|
203
|
+
varying vec4 v_hitColor;
|
|
204
|
+
varying vec2 v_centerPx;
|
|
205
|
+
varying float v_angle;
|
|
206
|
+
varying vec2 v_quadSizePx;
|
|
207
|
+
|
|
208
|
+
${this.attributes_.map(e=>`attribute ${e.type} ${e.name};
|
|
209
|
+
varying ${e.varyingType} ${e.varyingName};`).join(`
|
|
210
|
+
`)}
|
|
211
|
+
${this.vertexShaderFunctions_.join(`
|
|
212
|
+
`)}
|
|
213
|
+
vec2 pxToScreen(vec2 coordPx) {
|
|
214
|
+
vec2 scaled = coordPx / u_viewportSizePx / 0.5;
|
|
215
|
+
return scaled;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
vec2 screenToPx(vec2 coordScreen) {
|
|
219
|
+
return (coordScreen * 0.5 + 0.5) * u_viewportSizePx;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
void main(void) {
|
|
223
|
+
v_quadSizePx = ${this.symbolSizeExpression_};
|
|
224
|
+
vec2 halfSizePx = v_quadSizePx * 0.5;
|
|
225
|
+
vec2 centerOffsetPx = ${this.symbolOffsetExpression_};
|
|
226
|
+
vec2 offsetPx = centerOffsetPx + a_localPosition * halfSizePx * vec2(1., -1.);
|
|
227
|
+
float angle = ${this.symbolRotationExpression_}${this.symbolRotateWithView_?" + u_rotation":""};
|
|
228
|
+
float c = cos(-angle);
|
|
229
|
+
float s = sin(-angle);
|
|
230
|
+
offsetPx = vec2(c * offsetPx.x - s * offsetPx.y, s * offsetPx.x + c * offsetPx.y);
|
|
231
|
+
vec4 center = u_projectionMatrix * vec4(a_position, 0.0, 1.0);
|
|
232
|
+
gl_Position = center + vec4(pxToScreen(offsetPx), u_depth, 0.);
|
|
233
|
+
vec4 texCoord = ${this.texCoordExpression_};
|
|
234
|
+
float u = mix(texCoord.s, texCoord.p, a_localPosition.x * 0.5 + 0.5);
|
|
235
|
+
float v = mix(texCoord.t, texCoord.q, a_localPosition.y * 0.5 + 0.5);
|
|
236
|
+
v_texCoord = vec2(u, v);
|
|
237
|
+
v_hitColor = unpackColor(a_hitColor);
|
|
238
|
+
v_angle = angle;
|
|
239
|
+
c = cos(-v_angle);
|
|
240
|
+
s = sin(-v_angle);
|
|
241
|
+
centerOffsetPx = vec2(c * centerOffsetPx.x - s * centerOffsetPx.y, s * centerOffsetPx.x + c * centerOffsetPx.y);
|
|
242
|
+
v_centerPx = screenToPx(center.xy) + centerOffsetPx;
|
|
243
|
+
${this.attributes_.map(e=>` ${e.varyingName} = ${e.varyingExpression};`).join(`
|
|
244
|
+
`)}
|
|
245
|
+
${this.shapeDiscardExpression_?` if (${this.shapeDiscardExpression_}) { gl_Position = vec4(2.0, 2.0, 0.0, 0.0); }`:""}
|
|
246
|
+
}`:null}getSymbolFragmentShader(){return this.hasSymbol_?`${C}
|
|
247
|
+
${this.uniforms_.map(e=>`uniform ${e.type} ${e.name};`).join(`
|
|
248
|
+
`)}
|
|
249
|
+
varying vec2 v_texCoord;
|
|
250
|
+
varying vec4 v_hitColor;
|
|
251
|
+
varying vec2 v_centerPx;
|
|
252
|
+
varying float v_angle;
|
|
253
|
+
varying vec2 v_quadSizePx;
|
|
254
|
+
${this.attributes_.map(e=>`varying ${e.varyingType} ${e.varyingName};`).join(`
|
|
255
|
+
`)}
|
|
256
|
+
${this.fragmentShaderFunctions_.join(`
|
|
257
|
+
`)}
|
|
258
|
+
|
|
259
|
+
void main(void) {
|
|
260
|
+
${this.attributes_.map(e=>` ${e.varyingType} ${e.name} = ${e.varyingName}; // assign to original attribute name`).join(`
|
|
261
|
+
`)}
|
|
262
|
+
${this.fragmentDiscardExpression_?` if (${this.fragmentDiscardExpression_}) { discard; }`:""}
|
|
263
|
+
vec2 coordsPx = gl_FragCoord.xy / u_pixelRatio - v_centerPx; // relative to center
|
|
264
|
+
float c = cos(v_angle);
|
|
265
|
+
float s = sin(v_angle);
|
|
266
|
+
coordsPx = vec2(c * coordsPx.x - s * coordsPx.y, s * coordsPx.x + c * coordsPx.y);
|
|
267
|
+
gl_FragColor = ${this.symbolColorExpression_};
|
|
268
|
+
gl_FragColor.rgb *= gl_FragColor.a;
|
|
269
|
+
if (u_hitDetection > 0) {
|
|
270
|
+
if (gl_FragColor.a < 0.05) { discard; };
|
|
271
|
+
gl_FragColor = v_hitColor;
|
|
272
|
+
}
|
|
273
|
+
}`:null}getStrokeVertexShader(){return this.hasStroke_?`${C}
|
|
274
|
+
${this.uniforms_.map(e=>`uniform ${e.type} ${e.name};`).join(`
|
|
275
|
+
`)}
|
|
276
|
+
attribute vec2 a_segmentStart;
|
|
277
|
+
attribute vec2 a_segmentEnd;
|
|
278
|
+
attribute vec2 a_localPosition;
|
|
279
|
+
attribute float a_measureStart;
|
|
280
|
+
attribute float a_measureEnd;
|
|
281
|
+
attribute float a_angleTangentSum;
|
|
282
|
+
attribute float a_distanceLow;
|
|
283
|
+
attribute float a_distanceHigh;
|
|
284
|
+
attribute vec2 a_joinAngles;
|
|
285
|
+
attribute vec2 a_hitColor;
|
|
286
|
+
|
|
287
|
+
varying vec2 v_segmentStartPx;
|
|
288
|
+
varying vec2 v_segmentEndPx;
|
|
289
|
+
varying float v_angleStart;
|
|
290
|
+
varying float v_angleEnd;
|
|
291
|
+
varying float v_width;
|
|
292
|
+
varying vec4 v_hitColor;
|
|
293
|
+
varying float v_distancePx;
|
|
294
|
+
varying float v_measureStart;
|
|
295
|
+
varying float v_measureEnd;
|
|
296
|
+
|
|
297
|
+
${this.attributes_.map(e=>`attribute ${e.type} ${e.name};
|
|
298
|
+
varying ${e.varyingType} ${e.varyingName};`).join(`
|
|
299
|
+
`)}
|
|
300
|
+
${this.vertexShaderFunctions_.join(`
|
|
301
|
+
`)}
|
|
302
|
+
|
|
303
|
+
vec4 pxToScreen(vec2 pxPos) {
|
|
304
|
+
vec2 screenPos = 2.0 * pxPos / u_viewportSizePx - 1.0;
|
|
305
|
+
return vec4(screenPos, u_depth, 1.0);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
bool isCap(float joinAngle) {
|
|
309
|
+
return joinAngle < -0.1;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
vec2 getJoinOffsetDirection(vec2 normalPx, float joinAngle) {
|
|
313
|
+
float halfAngle = joinAngle / 2.0;
|
|
314
|
+
float c = cos(halfAngle);
|
|
315
|
+
float s = sin(halfAngle);
|
|
316
|
+
vec2 angleBisectorNormal = vec2(s * normalPx.x + c * normalPx.y, -c * normalPx.x + s * normalPx.y);
|
|
317
|
+
float length = 1.0 / s;
|
|
318
|
+
return angleBisectorNormal * length;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
vec2 getOffsetPoint(vec2 point, vec2 normal, float joinAngle, float offsetPx) {
|
|
322
|
+
// if on a cap or the join angle is too high, offset the line along the segment normal
|
|
323
|
+
if (cos(joinAngle) > 0.998 || isCap(joinAngle)) {
|
|
324
|
+
return point - normal * offsetPx;
|
|
325
|
+
}
|
|
326
|
+
// offset is applied along the inverted normal (positive offset goes "right" relative to line direction)
|
|
327
|
+
return point - getJoinOffsetDirection(normal, joinAngle) * offsetPx;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
void main(void) {
|
|
331
|
+
v_angleStart = a_joinAngles.x;
|
|
332
|
+
v_angleEnd = a_joinAngles.y;
|
|
333
|
+
float startEndRatio = a_localPosition.x * 0.5 + 0.5;
|
|
334
|
+
currentLineMetric = mix(a_measureStart, a_measureEnd, startEndRatio);
|
|
335
|
+
// we're reading the fractional part while keeping the sign (so -4.12 gives -0.12, 3.45 gives 0.45)
|
|
336
|
+
|
|
337
|
+
float lineWidth = ${this.strokeWidthExpression_};
|
|
338
|
+
float lineOffsetPx = ${this.strokeOffsetExpression_};
|
|
339
|
+
|
|
340
|
+
// compute segment start/end in px with offset
|
|
341
|
+
vec2 segmentStartPx = worldToPx(a_segmentStart);
|
|
342
|
+
vec2 segmentEndPx = worldToPx(a_segmentEnd);
|
|
343
|
+
vec2 tangentPx = normalize(segmentEndPx - segmentStartPx);
|
|
344
|
+
vec2 normalPx = vec2(-tangentPx.y, tangentPx.x);
|
|
345
|
+
segmentStartPx = getOffsetPoint(segmentStartPx, normalPx, v_angleStart, lineOffsetPx),
|
|
346
|
+
segmentEndPx = getOffsetPoint(segmentEndPx, normalPx, v_angleEnd, lineOffsetPx);
|
|
347
|
+
|
|
348
|
+
// compute current vertex position
|
|
349
|
+
float normalDir = -1. * a_localPosition.y;
|
|
350
|
+
float tangentDir = -1. * a_localPosition.x;
|
|
351
|
+
float angle = mix(v_angleStart, v_angleEnd, startEndRatio);
|
|
352
|
+
vec2 joinDirection;
|
|
353
|
+
vec2 positionPx = mix(segmentStartPx, segmentEndPx, startEndRatio);
|
|
354
|
+
// if angle is too high, do not make a proper join
|
|
355
|
+
if (cos(angle) > ${pe} || isCap(angle)) {
|
|
356
|
+
joinDirection = normalPx * normalDir - tangentPx * tangentDir;
|
|
357
|
+
} else {
|
|
358
|
+
joinDirection = getJoinOffsetDirection(normalPx * normalDir, angle);
|
|
359
|
+
}
|
|
360
|
+
positionPx = positionPx + joinDirection * (lineWidth * 0.5 + 1.); // adding 1 pixel for antialiasing
|
|
361
|
+
gl_Position = pxToScreen(positionPx);
|
|
362
|
+
|
|
363
|
+
v_segmentStartPx = segmentStartPx;
|
|
364
|
+
v_segmentEndPx = segmentEndPx;
|
|
365
|
+
v_width = lineWidth;
|
|
366
|
+
v_hitColor = unpackColor(a_hitColor);
|
|
367
|
+
|
|
368
|
+
v_distancePx = a_distanceLow / u_resolution - (lineOffsetPx * a_angleTangentSum);
|
|
369
|
+
float distanceHighPx = a_distanceHigh / u_resolution;
|
|
370
|
+
${this.strokePatternLengthExpression_!==null?`v_distancePx = mod(v_distancePx, ${this.strokePatternLengthExpression_});
|
|
371
|
+
distanceHighPx = mod(distanceHighPx, ${this.strokePatternLengthExpression_});
|
|
372
|
+
`:""}v_distancePx += distanceHighPx;
|
|
373
|
+
|
|
374
|
+
v_measureStart = a_measureStart;
|
|
375
|
+
v_measureEnd = a_measureEnd;
|
|
376
|
+
${this.attributes_.map(e=>` ${e.varyingName} = ${e.varyingExpression};`).join(`
|
|
377
|
+
`)}
|
|
378
|
+
${this.shapeDiscardExpression_?` if (${this.shapeDiscardExpression_}) { gl_Position = vec4(2.0, 2.0, 0.0, 0.0); }`:""}
|
|
379
|
+
}`:null}getStrokeFragmentShader(){return this.hasStroke_?`${C}
|
|
380
|
+
${this.uniforms_.map(e=>`uniform ${e.type} ${e.name};`).join(`
|
|
381
|
+
`)}
|
|
382
|
+
varying vec2 v_segmentStartPx;
|
|
383
|
+
varying vec2 v_segmentEndPx;
|
|
384
|
+
varying float v_angleStart;
|
|
385
|
+
varying float v_angleEnd;
|
|
386
|
+
varying float v_width;
|
|
387
|
+
varying vec4 v_hitColor;
|
|
388
|
+
varying float v_distancePx;
|
|
389
|
+
varying float v_measureStart;
|
|
390
|
+
varying float v_measureEnd;
|
|
391
|
+
${this.attributes_.map(e=>`varying ${e.varyingType} ${e.varyingName};`).join(`
|
|
392
|
+
`)}
|
|
393
|
+
${this.fragmentShaderFunctions_.join(`
|
|
394
|
+
`)}
|
|
395
|
+
|
|
396
|
+
bool isCap(float joinAngle) {
|
|
397
|
+
return joinAngle < -0.1;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
float segmentDistanceField(vec2 point, vec2 start, vec2 end, float width) {
|
|
401
|
+
vec2 tangent = normalize(end - start);
|
|
402
|
+
vec2 normal = vec2(-tangent.y, tangent.x);
|
|
403
|
+
vec2 startToPoint = point - start;
|
|
404
|
+
return abs(dot(startToPoint, normal)) - width * 0.5;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
float buttCapDistanceField(vec2 point, vec2 start, vec2 end) {
|
|
408
|
+
vec2 startToPoint = point - start;
|
|
409
|
+
vec2 tangent = normalize(end - start);
|
|
410
|
+
return dot(startToPoint, -tangent);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
float squareCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {
|
|
414
|
+
return buttCapDistanceField(point, start, end) - width * 0.5;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
float roundCapDistanceField(vec2 point, vec2 start, vec2 end, float width) {
|
|
418
|
+
float onSegment = max(0., 1000. * dot(point - start, end - start)); // this is very high when inside the segment
|
|
419
|
+
return length(point - start) - width * 0.5 - onSegment;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
float roundJoinDistanceField(vec2 point, vec2 start, vec2 end, float width) {
|
|
423
|
+
return roundCapDistanceField(point, start, end, width);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
float bevelJoinField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {
|
|
427
|
+
vec2 startToPoint = point - start;
|
|
428
|
+
vec2 tangent = normalize(end - start);
|
|
429
|
+
float c = cos(joinAngle * 0.5);
|
|
430
|
+
float s = sin(joinAngle * 0.5);
|
|
431
|
+
float direction = -sign(sin(joinAngle));
|
|
432
|
+
vec2 bisector = vec2(c * tangent.x - s * tangent.y, s * tangent.x + c * tangent.y);
|
|
433
|
+
float radius = width * 0.5 * s;
|
|
434
|
+
return dot(startToPoint, bisector * direction) - radius;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
float miterJoinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle) {
|
|
438
|
+
if (cos(joinAngle) > ${pe}) { // avoid risking a division by zero
|
|
439
|
+
return bevelJoinField(point, start, end, width, joinAngle);
|
|
440
|
+
}
|
|
441
|
+
float miterLength = 1. / sin(joinAngle * 0.5);
|
|
442
|
+
float miterLimit = ${this.strokeMiterLimitExpression_};
|
|
443
|
+
if (miterLength > miterLimit) {
|
|
444
|
+
return bevelJoinField(point, start, end, width, joinAngle);
|
|
445
|
+
}
|
|
446
|
+
return -1000.;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
float capDistanceField(vec2 point, vec2 start, vec2 end, float width, float capType) {
|
|
450
|
+
if (capType == ${R("butt")}) {
|
|
451
|
+
return buttCapDistanceField(point, start, end);
|
|
452
|
+
} else if (capType == ${R("square")}) {
|
|
453
|
+
return squareCapDistanceField(point, start, end, width);
|
|
454
|
+
}
|
|
455
|
+
return roundCapDistanceField(point, start, end, width);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
float joinDistanceField(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float joinType) {
|
|
459
|
+
if (joinType == ${R("bevel")}) {
|
|
460
|
+
return bevelJoinField(point, start, end, width, joinAngle);
|
|
461
|
+
} else if (joinType == ${R("miter")}) {
|
|
462
|
+
return miterJoinDistanceField(point, start, end, width, joinAngle);
|
|
463
|
+
}
|
|
464
|
+
return roundJoinDistanceField(point, start, end, width);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
float computeSegmentPointDistance(vec2 point, vec2 start, vec2 end, float width, float joinAngle, float capType, float joinType) {
|
|
468
|
+
if (isCap(joinAngle)) {
|
|
469
|
+
return capDistanceField(point, start, end, width, capType);
|
|
470
|
+
}
|
|
471
|
+
return joinDistanceField(point, start, end, width, joinAngle, joinType);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
float distanceFromSegment(vec2 point, vec2 start, vec2 end) {
|
|
475
|
+
vec2 tangent = end - start;
|
|
476
|
+
vec2 startToPoint = point - start;
|
|
477
|
+
// inspire by capsule fn in https://iquilezles.org/articles/distfunctions/
|
|
478
|
+
float h = clamp(dot(startToPoint, tangent) / dot(tangent, tangent), 0.0, 1.0);
|
|
479
|
+
return length(startToPoint - tangent * h);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
void main(void) {
|
|
483
|
+
${this.attributes_.map(e=>` ${e.varyingType} ${e.name} = ${e.varyingName}; // assign to original attribute name`).join(`
|
|
484
|
+
`)}
|
|
485
|
+
|
|
486
|
+
vec2 currentPointPx = gl_FragCoord.xy / u_pixelRatio;
|
|
487
|
+
vec2 worldPos = pxToWorld(currentPointPx);
|
|
488
|
+
if (
|
|
489
|
+
abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (
|
|
490
|
+
worldPos[0] < u_renderExtent[0] ||
|
|
491
|
+
worldPos[1] < u_renderExtent[1] ||
|
|
492
|
+
worldPos[0] > u_renderExtent[2] ||
|
|
493
|
+
worldPos[1] > u_renderExtent[3]
|
|
494
|
+
)
|
|
495
|
+
) {
|
|
496
|
+
discard;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
float segmentLengthPx = length(v_segmentEndPx - v_segmentStartPx);
|
|
500
|
+
segmentLengthPx = max(segmentLengthPx, 1.17549429e-38); // avoid divide by zero
|
|
501
|
+
vec2 segmentTangent = (v_segmentEndPx - v_segmentStartPx) / segmentLengthPx;
|
|
502
|
+
vec2 segmentNormal = vec2(-segmentTangent.y, segmentTangent.x);
|
|
503
|
+
vec2 startToPointPx = currentPointPx - v_segmentStartPx;
|
|
504
|
+
float lengthToPointPx = max(0., min(dot(segmentTangent, startToPointPx), segmentLengthPx));
|
|
505
|
+
float currentLengthPx = lengthToPointPx + v_distancePx;
|
|
506
|
+
float currentRadiusPx = distanceFromSegment(currentPointPx, v_segmentStartPx, v_segmentEndPx);
|
|
507
|
+
float currentRadiusRatio = dot(segmentNormal, startToPointPx) * 2. / v_width;
|
|
508
|
+
currentLineMetric = mix(v_measureStart, v_measureEnd, lengthToPointPx / segmentLengthPx);
|
|
509
|
+
|
|
510
|
+
${this.fragmentDiscardExpression_?` if (${this.fragmentDiscardExpression_}) { discard; }`:""}
|
|
511
|
+
|
|
512
|
+
float capType = ${this.strokeCapExpression_};
|
|
513
|
+
float joinType = ${this.strokeJoinExpression_};
|
|
514
|
+
float segmentStartDistance = computeSegmentPointDistance(currentPointPx, v_segmentStartPx, v_segmentEndPx, v_width, v_angleStart, capType, joinType);
|
|
515
|
+
float segmentEndDistance = computeSegmentPointDistance(currentPointPx, v_segmentEndPx, v_segmentStartPx, v_width, v_angleEnd, capType, joinType);
|
|
516
|
+
float distanceField = max(
|
|
517
|
+
segmentDistanceField(currentPointPx, v_segmentStartPx, v_segmentEndPx, v_width),
|
|
518
|
+
max(segmentStartDistance, segmentEndDistance)
|
|
519
|
+
);
|
|
520
|
+
distanceField = max(distanceField, ${this.strokeDistanceFieldExpression_});
|
|
521
|
+
|
|
522
|
+
vec4 color = ${this.strokeColorExpression_};
|
|
523
|
+
color.a *= smoothstep(0.5, -0.5, distanceField);
|
|
524
|
+
gl_FragColor = color;
|
|
525
|
+
gl_FragColor.a *= u_globalAlpha;
|
|
526
|
+
gl_FragColor.rgb *= gl_FragColor.a;
|
|
527
|
+
if (u_hitDetection > 0) {
|
|
528
|
+
if (gl_FragColor.a < 0.1) { discard; };
|
|
529
|
+
gl_FragColor = v_hitColor;
|
|
530
|
+
}
|
|
531
|
+
}`:null}getFillVertexShader(){return this.hasFill_?`${C}
|
|
532
|
+
${this.uniforms_.map(e=>`uniform ${e.type} ${e.name};`).join(`
|
|
533
|
+
`)}
|
|
534
|
+
attribute vec2 a_position;
|
|
535
|
+
attribute vec2 a_hitColor;
|
|
536
|
+
|
|
537
|
+
varying vec4 v_hitColor;
|
|
538
|
+
varying vec2 v_patternOriginPx;
|
|
539
|
+
varying vec2 v_patternSizePx;
|
|
540
|
+
|
|
541
|
+
${this.attributes_.map(e=>`attribute ${e.type} ${e.name};
|
|
542
|
+
varying ${e.varyingType} ${e.varyingName};`).join(`
|
|
543
|
+
`)}
|
|
544
|
+
${this.vertexShaderFunctions_.join(`
|
|
545
|
+
`)}
|
|
546
|
+
void main(void) {
|
|
547
|
+
gl_Position = u_projectionMatrix * vec4(a_position, u_depth, 1.0);
|
|
548
|
+
v_hitColor = unpackColor(a_hitColor);
|
|
549
|
+
${this.fillPatternSizeExpression_!==null?`
|
|
550
|
+
// this computes the pattern offset in screenspace using double-float arithmetics
|
|
551
|
+
v_patternSizePx = ${this.fillPatternSizeExpression_};
|
|
552
|
+
vec2 patternSizeScaledX = df_mul(df_from(v_patternSizePx.x), u_df_patternScaleRatio);
|
|
553
|
+
vec2 patternSizeScaledY = df_mul(df_from(v_patternSizePx.y), u_df_patternScaleRatio);
|
|
554
|
+
v_patternOriginPx = vec2(
|
|
555
|
+
df_mod(u_df_patternOriginX, patternSizeScaledX),
|
|
556
|
+
df_mod(u_df_patternOriginY, patternSizeScaledY)
|
|
557
|
+
);
|
|
558
|
+
|
|
559
|
+
// reapply rotation to the pattern origin
|
|
560
|
+
v_patternOriginPx -= u_viewportSizePx / 2.; // translate to viewport center
|
|
561
|
+
v_patternOriginPx = vec2(
|
|
562
|
+
cos(-u_rotation) * v_patternOriginPx.x - sin(-u_rotation) * v_patternOriginPx.y,
|
|
563
|
+
sin(-u_rotation) * v_patternOriginPx.x + cos(-u_rotation) * v_patternOriginPx.y
|
|
564
|
+
);
|
|
565
|
+
v_patternOriginPx += u_viewportSizePx / 2.; // translate back
|
|
566
|
+
`:" v_patternOriginPx = vec2(0.);"}
|
|
567
|
+
${this.attributes_.map(e=>` ${e.varyingName} = ${e.varyingExpression};`).join(`
|
|
568
|
+
`)}
|
|
569
|
+
${this.shapeDiscardExpression_?` if (${this.shapeDiscardExpression_}) { gl_Position = vec4(2.0, 2.0, 0.0, 0.0); }`:""}
|
|
570
|
+
}`:null}getFillFragmentShader(){return this.hasFill_?`${C}
|
|
571
|
+
${this.uniforms_.map(e=>`uniform ${e.type} ${e.name};`).join(`
|
|
572
|
+
`)}
|
|
573
|
+
varying vec4 v_hitColor;
|
|
574
|
+
varying vec2 v_patternOriginPx;
|
|
575
|
+
varying vec2 v_patternSizePx;
|
|
576
|
+
${this.attributes_.map(e=>`varying ${e.varyingType} ${e.varyingName};`).join(`
|
|
577
|
+
`)}
|
|
578
|
+
${this.fragmentShaderFunctions_.join(`
|
|
579
|
+
`)}
|
|
580
|
+
|
|
581
|
+
void main(void) {
|
|
582
|
+
${this.attributes_.map(e=>` ${e.varyingType} ${e.name} = ${e.varyingName}; // assign to original attribute name`).join(`
|
|
583
|
+
`)}
|
|
584
|
+
vec2 pxPos = gl_FragCoord.xy / u_pixelRatio;
|
|
585
|
+
vec2 worldPos = pxToWorld(pxPos);
|
|
586
|
+
if (
|
|
587
|
+
abs(u_renderExtent[0] - u_renderExtent[2]) > 0.0 && (
|
|
588
|
+
worldPos[0] < u_renderExtent[0] ||
|
|
589
|
+
worldPos[1] < u_renderExtent[1] ||
|
|
590
|
+
worldPos[0] > u_renderExtent[2] ||
|
|
591
|
+
worldPos[1] > u_renderExtent[3]
|
|
592
|
+
)
|
|
593
|
+
) {
|
|
594
|
+
discard;
|
|
595
|
+
}
|
|
596
|
+
${this.fragmentDiscardExpression_?` if (${this.fragmentDiscardExpression_}) { discard; }`:""}
|
|
597
|
+
gl_FragColor = ${this.fillColorExpression_};
|
|
598
|
+
gl_FragColor.a *= u_globalAlpha;
|
|
599
|
+
gl_FragColor.rgb *= gl_FragColor.a;
|
|
600
|
+
if (u_hitDetection > 0) {
|
|
601
|
+
if (gl_FragColor.a < 0.1) { discard; };
|
|
602
|
+
gl_FragColor = v_hitColor;
|
|
603
|
+
}
|
|
604
|
+
}`:null}}class z{constructor(){this.globalCounter_=0,this.refToFeature_=new Map,this.uidToRef_=new Map,this.freeGlobalRef_=[],this.polygonBatch={entries:{},geometriesCount:0,verticesCount:0,ringsCount:0},this.pointBatch={entries:{},geometriesCount:0},this.lineStringBatch={entries:{},geometriesCount:0,verticesCount:0}}addFeatures(e,t){for(let r=0;r<e.length;r++)this.addFeature(e[r],t)}addFeature(e,t){let r=e.getGeometry();!r||(t&&(r=r.clone(),r.applyTransform(t)),this.addGeometry_(r,e))}clearFeatureEntryInPointBatch_(e){const t=a.getUid(e),r=this.pointBatch.entries[t];if(!!r)return this.pointBatch.geometriesCount-=r.flatCoordss.length,delete this.pointBatch.entries[t],r}clearFeatureEntryInLineStringBatch_(e){const t=a.getUid(e),r=this.lineStringBatch.entries[t];if(!!r)return this.lineStringBatch.verticesCount-=r.verticesCount,this.lineStringBatch.geometriesCount-=r.flatCoordss.length,delete this.lineStringBatch.entries[t],r}clearFeatureEntryInPolygonBatch_(e){const t=a.getUid(e),r=this.polygonBatch.entries[t];if(!!r)return this.polygonBatch.verticesCount-=r.verticesCount,this.polygonBatch.ringsCount-=r.ringsCount,this.polygonBatch.geometriesCount-=r.flatCoordss.length,delete this.polygonBatch.entries[t],r}addGeometry_(e,t){var s;const r=e.getType();switch(r){case"GeometryCollection":{const i=e.getGeometriesArray();for(const o of i)this.addGeometry_(o,t);break}case"MultiPolygon":{const i=e;this.addCoordinates_(r,i.getFlatCoordinates(),i.getEndss(),t,a.getUid(t),i.getStride());break}case"MultiLineString":{const i=e;this.addCoordinates_(r,i.getFlatCoordinates(),i.getEnds(),t,a.getUid(t),i.getStride());break}case"MultiPoint":{const i=e;this.addCoordinates_(r,i.getFlatCoordinates(),null,t,a.getUid(t),i.getStride());break}case"Polygon":{const i=e;this.addCoordinates_(r,i.getFlatCoordinates(),i.getEnds(),t,a.getUid(t),i.getStride());break}case"Point":{const i=e;this.addCoordinates_(r,i.getFlatCoordinates(),null,t,a.getUid(t),i.getStride());break}case"LineString":case"LinearRing":{const i=e,o=i.getStride();this.addCoordinates_(r,i.getFlatCoordinates(),null,t,a.getUid(t),o,(s=i.getLayout)==null?void 0:s.call(i));break}}}addCoordinates_(e,t,r,s,i,o,c){let l;switch(e){case"MultiPolygon":{const u=r;for(let f=0,h=u.length;f<h;f++){let d=u[f];const x=f>0?u[f-1]:null,g=x?x[x.length-1]:0,P=d[d.length-1];d=g>0?d.map(Ce=>Ce-g):d,this.addCoordinates_("Polygon",t.slice(g,P),d,s,i,o,c)}break}case"MultiLineString":{const u=r;for(let f=0,h=u.length;f<h;f++){const d=f>0?u[f-1]:0;this.addCoordinates_("LineString",t.slice(d,u[f]),null,s,i,o,c)}break}case"MultiPoint":for(let u=0,f=t.length;u<f;u+=o)this.addCoordinates_("Point",t.slice(u,u+2),null,s,i,null,null);break;case"Polygon":{const u=r;if(s instanceof a.RenderFeature){const d=a.inflateEnds(t,u);if(d.length>1){this.addCoordinates_("MultiPolygon",t,d,s,i,o,c);return}}this.polygonBatch.entries[i]||(this.polygonBatch.entries[i]=this.addRefToEntry_(i,{feature:s,flatCoordss:[],verticesCount:0,ringsCount:0,ringsVerticesCounts:[]})),l=t.length/o;const f=r.length,h=r.map((d,x,g)=>x>0?(d-g[x-1])/o:d/o);this.polygonBatch.verticesCount+=l,this.polygonBatch.ringsCount+=f,this.polygonBatch.geometriesCount++,this.polygonBatch.entries[i].flatCoordss.push(st(t,o)),this.polygonBatch.entries[i].ringsVerticesCounts.push(h),this.polygonBatch.entries[i].verticesCount+=l,this.polygonBatch.entries[i].ringsCount+=f;for(let d=0,x=u.length;d<x;d++){const g=d>0?u[d-1]:0;this.addCoordinates_("LinearRing",t.slice(g,u[d]),null,s,i,o,c)}break}case"Point":this.pointBatch.entries[i]||(this.pointBatch.entries[i]=this.addRefToEntry_(i,{feature:s,flatCoordss:[]})),this.pointBatch.geometriesCount++,this.pointBatch.entries[i].flatCoordss.push(t);break;case"LineString":case"LinearRing":this.lineStringBatch.entries[i]||(this.lineStringBatch.entries[i]=this.addRefToEntry_(i,{feature:s,flatCoordss:[],verticesCount:0})),l=t.length/o,this.lineStringBatch.verticesCount+=l,this.lineStringBatch.geometriesCount++,this.lineStringBatch.entries[i].flatCoordss.push(ot(t,o,c)),this.lineStringBatch.entries[i].verticesCount+=l;break}}addRefToEntry_(e,t){const r=this.uidToRef_.get(e),s=r||this.freeGlobalRef_.pop()||++this.globalCounter_;return t.ref=s,r||(this.refToFeature_.set(s,t.feature),this.uidToRef_.set(e,s)),t}removeRef_(e,t){if(!e)throw new Error("This feature has no ref: "+t);this.refToFeature_.delete(e),this.uidToRef_.delete(t),this.freeGlobalRef_.push(e)}changeFeature(e,t){if(!this.uidToRef_.get(a.getUid(e)))return;this.removeFeature(e);let r=e.getGeometry();!r||(t&&(r=r.clone(),r.applyTransform(t)),this.addGeometry_(r,e))}removeFeature(e){let t=this.clearFeatureEntryInPointBatch_(e);t=this.clearFeatureEntryInPolygonBatch_(e)||t,t=this.clearFeatureEntryInLineStringBatch_(e)||t,t&&this.removeRef_(t.ref,a.getUid(t.feature))}clear(){this.polygonBatch.entries={},this.polygonBatch.geometriesCount=0,this.polygonBatch.verticesCount=0,this.polygonBatch.ringsCount=0,this.lineStringBatch.entries={},this.lineStringBatch.geometriesCount=0,this.lineStringBatch.verticesCount=0,this.pointBatch.entries={},this.pointBatch.geometriesCount=0,this.globalCounter_=0,this.freeGlobalRef_=[],this.refToFeature_.clear(),this.uidToRef_.clear()}getFeatureFromRef(e){return this.refToFeature_.get(e)}isEmpty(){return this.globalCounter_===0}filter(e){const t=new z;t.globalCounter_=this.globalCounter_,t.uidToRef_=this.uidToRef_,t.refToFeature_=this.refToFeature_;let r=!0;for(const s of this.refToFeature_.values())e(s)&&(t.addFeature(s),r=!1);return r?new z:t}}function st(n,e){return e===2?n:n.filter((t,r)=>r%e<2)}function ot(n,e,t){return e===3&&t==="XYM"?n:e===4?n.filter((r,s)=>s%e!==2):e===3?n.map((r,s)=>s%e!==2?r:0):new Array(n.length*1.5).fill(0).map((r,s)=>s%3===2?0:n[Math.round(s/1.5)])}var at=z;function lt(){const n='function t(t,n,x=2){const o=n&&n.length,i=o?n[0]*x:t.length;let f=e(t,0,i,x,!0);const l=[];if(!f||f.next===f.prev)return l;let c,y,h;if(o&&(f=function(t,n,r,x){const o=[];for(let r=0,i=n.length;r<i;r++){const f=e(t,n[r]*x,r<i-1?n[r+1]*x:t.length,x,!1);f===f.next&&(f.steiner=!0),o.push(a(f))}o.sort(u);for(let t=0;t<o.length;t++)r=s(o[t],r);return r}(t,n,f,x)),t.length>80*x){c=t[0],y=t[1];let e=c,n=y;for(let r=x;r<i;r+=x){const x=t[r],o=t[r+1];x<c&&(c=x),o<y&&(y=o),x>e&&(e=x),o>n&&(n=o)}h=Math.max(e-c,n-y),h=0!==h?32767/h:0}return r(f,l,x,c,y,h,0),l}function e(t,e,n,r,x){let o;if(x===function(t,e,n,r){let x=0;for(let o=e,i=n-r;o<n;o+=r)x+=(t[i]-t[o])*(t[o+1]+t[i+1]),i=o;return x}(t,e,n,r)>0)for(let x=e;x<n;x+=r)o=d(x/r|0,t[x],t[x+1],o);else for(let x=n-r;x>=e;x-=r)o=d(x/r|0,t[x],t[x+1],o);return o&&b(o,o.next)&&(w(o),o=o.next),o}function n(t,e){if(!t)return t;e||(e=t);let n,r=t;do{if(n=!1,r.steiner||!b(r,r.next)&&0!==v(r.prev,r,r.next))r=r.next;else{if(w(r),r=e=r.prev,r===r.next)break;n=!0}}while(n||r!==e);return e}function r(t,e,u,s,l,a,y){if(!t)return;!y&&a&&function(t,e,n,r){let x=t;do{0===x.z&&(x.z=c(x.x,x.y,e,n,r)),x.prevZ=x.prev,x.nextZ=x.next,x=x.next}while(x!==t);x.prevZ.nextZ=null,x.prevZ=null,function(t){let e,n=1;do{let r,x=t;t=null;let o=null;for(e=0;x;){e++;let i=x,f=0;for(let t=0;t<n&&(f++,i=i.nextZ,i);t++);let u=n;for(;f>0||u>0&&i;)0!==f&&(0===u||!i||x.z<=i.z)?(r=x,x=x.nextZ,f--):(r=i,i=i.nextZ,u--),o?o.nextZ=r:t=r,r.prevZ=o,o=r;x=i}o.nextZ=null,n*=2}while(e>1)}(x)}(t,s,l,a);let h=t;for(;t.prev!==t.next;){const c=t.prev,p=t.next;if(a?o(t,s,l,a):x(t))e.push(c.i,t.i,p.i),w(t),t=p.next,h=p.next;else if((t=p)===h){y?1===y?r(t=i(n(t),e),e,u,s,l,a,2):2===y&&f(t,e,u,s,l,a):r(n(t),e,u,s,l,a,1);break}}}function x(t){const e=t.prev,n=t,r=t.next;if(v(e,n,r)>=0)return!1;const x=e.x,o=n.x,i=r.x,f=e.y,u=n.y,s=r.y,l=Math.min(x,o,i),c=Math.min(f,u,s),a=Math.max(x,o,i),y=Math.max(f,u,s);let p=r.next;for(;p!==e;){if(p.x>=l&&p.x<=a&&p.y>=c&&p.y<=y&&h(x,f,o,u,i,s,p.x,p.y)&&v(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function o(t,e,n,r){const x=t.prev,o=t,i=t.next;if(v(x,o,i)>=0)return!1;const f=x.x,u=o.x,s=i.x,l=x.y,a=o.y,y=i.y,p=Math.min(f,u,s),b=Math.min(l,a,y),M=Math.max(f,u,s),m=Math.max(l,a,y),A=c(p,b,e,n,r),g=c(M,m,e,n,r);let Z=t.prevZ,d=t.nextZ;for(;Z&&Z.z>=A&&d&&d.z<=g;){if(Z.x>=p&&Z.x<=M&&Z.y>=b&&Z.y<=m&&Z!==x&&Z!==i&&h(f,l,u,a,s,y,Z.x,Z.y)&&v(Z.prev,Z,Z.next)>=0)return!1;if(Z=Z.prevZ,d.x>=p&&d.x<=M&&d.y>=b&&d.y<=m&&d!==x&&d!==i&&h(f,l,u,a,s,y,d.x,d.y)&&v(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;Z&&Z.z>=A;){if(Z.x>=p&&Z.x<=M&&Z.y>=b&&Z.y<=m&&Z!==x&&Z!==i&&h(f,l,u,a,s,y,Z.x,Z.y)&&v(Z.prev,Z,Z.next)>=0)return!1;Z=Z.prevZ}for(;d&&d.z<=g;){if(d.x>=p&&d.x<=M&&d.y>=b&&d.y<=m&&d!==x&&d!==i&&h(f,l,u,a,s,y,d.x,d.y)&&v(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function i(t,e){let r=t;do{const n=r.prev,x=r.next.next;!b(n,x)&&M(n,r,r.next,x)&&g(n,x)&&g(x,n)&&(e.push(n.i,r.i,x.i),w(r),w(r.next),r=t=x),r=r.next}while(r!==t);return n(r)}function f(t,e,x,o,i,f){let u=t;do{let t=u.next.next;for(;t!==u.prev;){if(u.i!==t.i&&p(u,t)){let s=Z(u,t);return u=n(u,u.next),s=n(s,s.next),r(u,e,x,o,i,f,0),void r(s,e,x,o,i,f,0)}t=t.next}u=u.next}while(u!==t)}function u(t,e){let n=t.x-e.x;if(0===n&&(n=t.y-e.y,0===n)){n=(t.next.y-t.y)/(t.next.x-t.x)-(e.next.y-e.y)/(e.next.x-e.x)}return n}function s(t,e){const r=function(t,e){let n=e;const r=t.x,x=t.y;let o,i=-1/0;if(b(t,n))return n;do{if(b(t,n.next))return n.next;if(x<=n.y&&x>=n.next.y&&n.next.y!==n.y){const t=n.x+(x-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=r&&t>i&&(i=t,o=n.x<n.next.x?n:n.next,t===r))return o}n=n.next}while(n!==e);if(!o)return null;const f=o,u=o.x,s=o.y;let c=1/0;n=o;do{if(r>=n.x&&n.x>=u&&r!==n.x&&y(x<s?r:i,x,u,s,x<s?i:r,x,n.x,n.y)){const e=Math.abs(x-n.y)/(r-n.x);g(n,t)&&(e<c||e===c&&(n.x>o.x||n.x===o.x&&l(o,n)))&&(o=n,c=e)}n=n.next}while(n!==f);return o}(t,e);if(!r)return e;const x=Z(r,t);return n(x,x.next),n(r,r.next)}function l(t,e){return v(t.prev,t,e.prev)<0&&v(e.next,t,t.next)<0}function c(t,e,n,r,x){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*x|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*x|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function a(t){let e=t,n=t;do{(e.x<n.x||e.x===n.x&&e.y<n.y)&&(n=e),e=e.next}while(e!==t);return n}function y(t,e,n,r,x,o,i,f){return(x-i)*(e-f)>=(t-i)*(o-f)&&(t-i)*(r-f)>=(n-i)*(e-f)&&(n-i)*(o-f)>=(x-i)*(r-f)}function h(t,e,n,r,x,o,i,f){return!(t===i&&e===f)&&y(t,e,n,r,x,o,i,f)}function p(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&M(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&(g(t,e)&&g(e,t)&&function(t,e){let n=t,r=!1;const x=(t.x+e.x)/2,o=(t.y+e.y)/2;do{n.y>o!=n.next.y>o&&n.next.y!==n.y&&x<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==t);return r}(t,e)&&(v(t.prev,t,e.prev)||v(t,e.prev,e))||b(t,e)&&v(t.prev,t,t.next)>0&&v(e.prev,e,e.next)>0)}function v(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function b(t,e){return t.x===e.x&&t.y===e.y}function M(t,e,n,r){const x=A(v(t,e,n)),o=A(v(t,e,r)),i=A(v(n,r,t)),f=A(v(n,r,e));return x!==o&&i!==f||(!(0!==x||!m(t,n,e))||(!(0!==o||!m(t,r,e))||(!(0!==i||!m(n,t,r))||!(0!==f||!m(n,e,r)))))}function m(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function A(t){return t>0?1:t<0?-1:0}function g(t,e){return v(t.prev,t,t.next)<0?v(t,e,t.next)>=0&&v(t,t.prev,e)>=0:v(t,e,t.prev)<0||v(t,t.next,e)<0}function Z(t,e){const n=F(t.i,t.x,t.y),r=F(e.i,e.x,e.y),x=t.next,o=e.prev;return t.next=e,e.prev=t,n.next=x,x.prev=n,r.next=n,n.prev=r,o.next=r,r.prev=o,r}function d(t,e,n,r){const x=F(t,e,n);return r?(x.next=r.next,x.prev=r,r.next.prev=x,r.next=x):(x.prev=x,x.next=x),x}function w(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function F(t,e,n){return{i:t,x:e,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function E(t,e,n){const r=Math.sqrt((e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])),x=[(e[0]-t[0])/r,(e[1]-t[1])/r],o=[-x[1],x[0]],i=Math.sqrt((n[0]-t[0])*(n[0]-t[0])+(n[1]-t[1])*(n[1]-t[1])),f=[(n[0]-t[0])/i,(n[1]-t[1])/i];let u=0===r||0===i?0:Math.acos((s=f[0]*x[0]+f[1]*x[1],l=-1,c=1,Math.min(Math.max(s,l),c)));var s,l,c;u=Math.max(u,1e-5);return f[0]*o[0]+f[1]*o[1]>0?u:2*Math.PI-u}function I(t,e){const n=e[0],r=e[1];return e[0]=t[0]*n+t[2]*r+t[4],e[1]=t[1]*n+t[3]*r+t[5],e}function z(t,e){const n=(r=e)[0]*r[3]-r[1]*r[2];var r;!function(t,e){if(!t)throw new Error(e)}(0!==n,"Transformation matrix cannot be inverted");const x=e[0],o=e[1],i=e[2],f=e[3],u=e[4],s=e[5];return t[0]=f/n,t[1]=-o/n,t[2]=-i/n,t[3]=x/n,t[4]=(i*s-f*u)/n,t[5]=-(x*s-o*u)/n,t}new Array(6);const B=[],P={vertexAttributesPosition:0,instanceAttributesPosition:0,indicesPosition:0};function N(t,e,n,r,x){const o=t[e++],i=t[e++],f=B;f.length=r;for(let n=0;n<f.length;n++)f[n]=t[e+n];let u=x?x.instanceAttributesPosition:0;return n[u++]=o,n[u++]=i,f.length&&(n.set(f,u),u+=f.length),P.instanceAttributesPosition=u,P}function R(t,e,n,r,x,o,i,f,u,s){const l=[t[e],t[e+1]],c=[t[n],t[n+1]],a=t[e+2],y=t[n+2],h=I(f,[...l]),p=I(f,[...c]);let v=-1,b=-1,M=s;const m=null!==x;if(null!==r){v=E(h,p,I(f,[...[t[r],t[r+1]]])),Math.cos(v)<=.985&&(M+=Math.tan((v-Math.PI)/2))}if(m){b=E(p,h,I(f,[...[t[x],t[x+1]]])),Math.cos(b)<=.985&&(M+=Math.tan((Math.PI-b)/2))}const A=Math.pow(2,24),g=u%A,Z=Math.floor(u/A)*A;return o.push(l[0],l[1],a,c[0],c[1],y,v,b,g,Z,s),o.push(...i),{length:u+Math.sqrt((p[0]-h[0])*(p[0]-h[0])+(p[1]-h[1])*(p[1]-h[1])),angle:M}}function S(e,n,r,x,o){const i=2+o;let f=n;const u=e.slice(f,f+o);f+=o;const s=e[f++];let l=0;const c=new Array(s-1);for(let t=0;t<s;t++)l+=e[f++],t<s-1&&(c[t]=l);const a=e.slice(f,f+2*l),y=t(a,c,2);for(let t=0;t<y.length;t++)x.push(y[t]+r.length/i);for(let t=0;t<a.length;t+=2)r.push(a[t],a[t+1],...u);return f+2*l}const T="GENERATE_POLYGON_BUFFERS",_="GENERATE_POINT_BUFFERS",O="GENERATE_LINE_STRING_BUFFERS",U=self;U.onmessage=t=>{const e=t.data;switch(e.type){case _:{const t=2,n=2,r=e.customAttributesSize,x=n+r,o=new Float32Array(e.renderInstructions),i=o.length/x*(t+r),f=Uint32Array.from([0,1,3,1,2,3]),u=Float32Array.from([-1,-1,1,-1,1,1,-1,1]),s=new Float32Array(i);let l;for(let t=0;t<o.length;t+=x)l=N(o,t,s,r,l);const c=Object.assign({indicesBuffer:f.buffer,vertexAttributesBuffer:u.buffer,instanceAttributesBuffer:s.buffer,renderInstructions:o.buffer},e);U.postMessage(c,[u.buffer,s.buffer,f.buffer,o.buffer]);break}case O:{const t=[],n=e.customAttributesSize,r=3,x=new Float32Array(e.renderInstructions);let o=0;const i=[1,0,0,1,0,0];let f,u;for(z(i,e.renderInstructionsTransform);o<x.length;){u=Array.from(x.slice(o,o+n)),o+=n,f=x[o++];const e=o,s=o+(f-1)*r,l=x[e]===x[s]&&x[e+1]===x[s+1];let c=0,a=0;for(let n=0;n<f-1;n++){let y=null;n>0?y=o+(n-1)*r:l&&(y=s-r);let h=null;n<f-2?h=o+(n+2)*r:l&&(h=e+r);const p=R(x,o+n*r,o+(n+1)*r,y,h,t,u,i,c,a);c=p.length,a=p.angle}o+=f*r}const s=Uint32Array.from([0,1,3,1,2,3]),l=Float32Array.from([-1,-1,1,-1,1,1,-1,1]),c=Float32Array.from(t),a=Object.assign({indicesBuffer:s.buffer,vertexAttributesBuffer:l.buffer,instanceAttributesBuffer:c.buffer,renderInstructions:x.buffer},e);U.postMessage(a,[l.buffer,c.buffer,s.buffer,x.buffer]);break}case T:{const t=[],n=[],r=e.customAttributesSize,x=new Float32Array(e.renderInstructions);let o=0;for(;o<x.length;)o=S(x,o,t,n,r);const i=Uint32Array.from(n),f=Float32Array.from(t),u=Float32Array.from([]),s=Object.assign({indicesBuffer:i.buffer,vertexAttributesBuffer:f.buffer,instanceAttributesBuffer:u.buffer,renderInstructions:x.buffer},e);U.postMessage(s,[f.buffer,u.buffer,i.buffer,x.buffer]);break}}};';return new Worker(typeof Blob=="undefined"?"data:application/javascript;base64,"+Buffer.from(n,"binary").toString("base64"):URL.createObjectURL(new Blob([n],{type:"application/javascript"})))}const Z={GENERATE_POLYGON_BUFFERS:"GENERATE_POLYGON_BUFFERS",GENERATE_POINT_BUFFERS:"GENERATE_POINT_BUFFERS",GENERATE_LINE_STRING_BUFFERS:"GENERATE_LINE_STRING_BUFFERS"};function ct(n,e){e=e||[];const t=256,r=t-1,s=Math.floor(n/t/t/t)/r,i=Math.floor(n/t/t)%t/r,o=Math.floor(n/t)%t/r,c=n%t/r;return e[0]=s*256*255+i*255,e[1]=o*256*255+c*255,e}function ut(n){let e=0;const t=256,r=t-1;return e+=Math.round(n[0]*t*t*t*r),e+=Math.round(n[1]*t*t*r),e+=Math.round(n[2]*t*r),e+=Math.round(n[3]*r),e}function oe(n,e,t,r){var i;let s=0;for(const o in e){const c=e[o],l=c.callback.call(t,t.feature);let u=(i=l==null?void 0:l[0])!=null?i:l;u===J&&console.warn('The "has" operator might return false positives.'),u===void 0?u=J:u===null&&(u=0),n[r+s++]=u,!(!c.size||c.size===1)&&(n[r+s++]=l[1],!(c.size<3)&&(n[r+s++]=l[2],!(c.size<4)&&(n[r+s++]=l[3])))}return s}function k(n){return Object.keys(n).reduce((e,t)=>e+(n[t].size||1),0)}function ft(n,e,t,r){const s=(2+k(t))*n.geometriesCount;(!e||e.length!==s)&&(e=new Float32Array(s));const i=[];let o=0;for(const c in n.entries){const l=n.entries[c];for(let u=0,f=l.flatCoordss.length;u<f;u++)i[0]=l.flatCoordss[u][0],i[1]=l.flatCoordss[u][1],a.apply(r,i),e[o++]=i[0],e[o++]=i[1],o+=oe(e,t,l,o)}return e}function ht(n,e,t,r){const s=3*n.verticesCount+(1+k(t))*n.geometriesCount;(!e||e.length!==s)&&(e=new Float32Array(s));const i=[];let o=0;for(const c in n.entries){const l=n.entries[c];for(let u=0,f=l.flatCoordss.length;u<f;u++){i.length=l.flatCoordss[u].length,a.transform2D(l.flatCoordss[u],0,i.length,3,r,i,3),o+=oe(e,t,l,o),e[o++]=i.length/3;for(let h=0,d=i.length;h<d;h+=3)e[o++]=i[h],e[o++]=i[h+1],e[o++]=i[h+2]}}return e}function dt(n,e,t,r){const s=2*n.verticesCount+(1+k(t))*n.geometriesCount+n.ringsCount;(!e||e.length!==s)&&(e=new Float32Array(s));const i=[];let o=0;for(const c in n.entries){const l=n.entries[c];for(let u=0,f=l.flatCoordss.length;u<f;u++){i.length=l.flatCoordss[u].length,a.transform2D(l.flatCoordss[u],0,i.length,2,r,i),o+=oe(e,t,l,o),e[o++]=l.ringsVerticesCounts[u].length;for(let h=0,d=l.ringsVerticesCounts[u].length;h<d;h++)e[o++]=l.ringsVerticesCounts[u][h];for(let h=0,d=i.length;h<d;h+=2)e[o++]=i[h],e[o++]=i[h+1]}}return e}function G(n){return(JSON.stringify(n).split("").reduce((t,r)=>(t<<5)-t+r.charCodeAt(0),0)>>>0).toString()}function ae(n,e,t,r){if(`${r}radius`in n&&r!=="icon-"){let s=p(t,n[`${r}radius`],a.NumberType);if(`${r}radius2`in n){const i=p(t,n[`${r}radius2`],a.NumberType);s=`max(${s}, ${i})`}`${r}stroke-width`in n&&(s=`(${s} + ${p(t,n[`${r}stroke-width`],a.NumberType)} * 0.5)`),e.setSymbolSizeExpression(`vec2(${s} * 2. + 0.5)`)}if(`${r}scale`in n){const s=p(t,n[`${r}scale`],a.SizeType);e.setSymbolSizeExpression(`${e.getSymbolSizeExpression()} * ${s}`)}`${r}displacement`in n&&e.setSymbolOffsetExpression(p(t,n[`${r}displacement`],a.NumberArrayType)),`${r}rotation`in n&&e.setSymbolRotationExpression(p(t,n[`${r}rotation`],a.NumberType)),`${r}rotate-with-view`in n&&e.setSymbolRotateWithView(!!n[`${r}rotate-with-view`])}function Ae(n,e,t,r,s){let i="vec4(0.)";if(e!==null&&(i=e),t!==null&&r!==null){const l=`smoothstep(-${r} + 0.63, -${r} - 0.58, ${n})`;i=`mix(${t}, ${i}, ${l})`}const o=`(1.0 - smoothstep(-0.63, 0.58, ${n}))`;let c=`${i} * vec4(1.0, 1.0, 1.0, ${o})`;return s!==null&&(c=`${c} * vec4(1.0, 1.0, 1.0, ${s})`),c}function le(n,e,t,r,s){const i=new Image;i.crossOrigin=n[`${r}cross-origin`]===void 0?"anonymous":n[`${r}cross-origin`],a.assert(typeof n[`${r}src`]=="string",`WebGL layers do not support expressions for the ${r}src style property`),i.src=n[`${r}src`],t[`u_texture${s}_size`]=()=>i.complete?[i.width,i.height]:[0,0],e.addUniform(`u_texture${s}_size`,"vec2");const o=`u_texture${s}_size`;return t[`u_texture${s}`]=i,e.addUniform(`u_texture${s}`,"sampler2D"),o}function ce(n,e,t,r,s){let i=p(t,n[`${e}offset`],a.SizeType);if(`${e}offset-origin`in n)switch(n[`${e}offset-origin`]){case"top-right":i=`vec2(${r}.x, 0.) + ${s} * vec2(-1., 0.) + ${i} * vec2(-1., 1.)`;break;case"bottom-left":i=`vec2(0., ${r}.y) + ${s} * vec2(0., -1.) + ${i} * vec2(1., -1.)`;break;case"bottom-right":i=`${r} - ${s} - ${i}`;break}return i}function pt(n,e,t,r){r.functions.circleDistanceField=`float circleDistanceField(vec2 point, float radius) {
|
|
605
|
+
return length(point) - radius;
|
|
606
|
+
}`,ae(n,e,r,"circle-");let s=null;"circle-opacity"in n&&(s=p(r,n["circle-opacity"],a.NumberType));let i="coordsPx";"circle-scale"in n&&(i=`coordsPx / ${p(r,n["circle-scale"],a.SizeType)}`);let o=null;"circle-fill-color"in n&&(o=p(r,n["circle-fill-color"],a.ColorType));let c=null;"circle-stroke-color"in n&&(c=p(r,n["circle-stroke-color"],a.ColorType));let l=p(r,n["circle-radius"],a.NumberType),u=null;"circle-stroke-width"in n&&(u=p(r,n["circle-stroke-width"],a.NumberType),l=`(${l} + ${u} * 0.5)`);const f=`circleDistanceField(${i}, ${l})`,h=Ae(f,o,c,u,s);e.setSymbolColorExpression(h)}function _t(n,e,t,r){r.functions.round=`float round(float v) {
|
|
607
|
+
return sign(v) * floor(abs(v) + 0.5);
|
|
608
|
+
}`,r.functions.starDistanceField=`float starDistanceField(vec2 point, float numPoints, float radius, float radius2, float angle) {
|
|
609
|
+
float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle
|
|
610
|
+
float c = cos(startAngle);
|
|
611
|
+
float s = sin(startAngle);
|
|
612
|
+
vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);
|
|
613
|
+
float alpha = TWO_PI / numPoints; // the angle of one sector
|
|
614
|
+
float beta = atan(pointRotated.y, pointRotated.x);
|
|
615
|
+
float gamma = round(beta / alpha) * alpha; // angle in sector
|
|
616
|
+
c = cos(-gamma);
|
|
617
|
+
s = sin(-gamma);
|
|
618
|
+
vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));
|
|
619
|
+
vec2 tipToPoint = inSector + vec2(-radius, 0.);
|
|
620
|
+
vec2 edgeNormal = vec2(radius2 * sin(alpha * 0.5), -radius2 * cos(alpha * 0.5) + radius);
|
|
621
|
+
return dot(normalize(edgeNormal), tipToPoint);
|
|
622
|
+
}`,r.functions.regularDistanceField=`float regularDistanceField(vec2 point, float numPoints, float radius, float angle) {
|
|
623
|
+
float startAngle = -PI * 0.5 + angle; // tip starts upwards and rotates clockwise with angle
|
|
624
|
+
float c = cos(startAngle);
|
|
625
|
+
float s = sin(startAngle);
|
|
626
|
+
vec2 pointRotated = vec2(c * point.x - s * point.y, s * point.x + c * point.y);
|
|
627
|
+
float alpha = TWO_PI / numPoints; // the angle of one sector
|
|
628
|
+
float radiusIn = radius * cos(PI / numPoints);
|
|
629
|
+
float beta = atan(pointRotated.y, pointRotated.x);
|
|
630
|
+
float gamma = round((beta - alpha * 0.5) / alpha) * alpha + alpha * 0.5; // angle in sector from mid
|
|
631
|
+
c = cos(-gamma);
|
|
632
|
+
s = sin(-gamma);
|
|
633
|
+
vec2 inSector = vec2(c * pointRotated.x - s * pointRotated.y, abs(s * pointRotated.x + c * pointRotated.y));
|
|
634
|
+
return inSector.x - radiusIn;
|
|
635
|
+
}`,ae(n,e,r,"shape-");let s=null;"shape-opacity"in n&&(s=p(r,n["shape-opacity"],a.NumberType));let i="coordsPx";"shape-scale"in n&&(i=`coordsPx / ${p(r,n["shape-scale"],a.SizeType)}`);let o=null;"shape-fill-color"in n&&(o=p(r,n["shape-fill-color"],a.ColorType));let c=null;"shape-stroke-color"in n&&(c=p(r,n["shape-stroke-color"],a.ColorType));let l=null;"shape-stroke-width"in n&&(l=p(r,n["shape-stroke-width"],a.NumberType));const u=p(r,n["shape-points"],a.NumberType);let f="0.";"shape-angle"in n&&(f=p(r,n["shape-angle"],a.NumberType));let h,d=p(r,n["shape-radius"],a.NumberType);if(l!==null&&(d=`${d} + ${l} * 0.5`),"shape-radius2"in n){let g=p(r,n["shape-radius2"],a.NumberType);l!==null&&(g=`${g} + ${l} * 0.5`),h=`starDistanceField(${i}, ${u}, ${d}, ${g}, ${f})`}else h=`regularDistanceField(${i}, ${u}, ${d}, ${f})`;const x=Ae(h,o,c,l,s);e.setSymbolColorExpression(x)}function gt(n,e,t,r){let s="vec4(1.0)";"icon-color"in n&&(s=p(r,n["icon-color"],a.ColorType)),"icon-opacity"in n&&(s=`${s} * vec4(1.0, 1.0, 1.0, ${p(r,n["icon-opacity"],a.NumberType)})`);const i=G(n["icon-src"]),o=le(n,e,t,"icon-",i);if(e.setSymbolColorExpression(`${s} * texture2D(u_texture${i}, v_texCoord)`).setSymbolSizeExpression(o),"icon-width"in n&&"icon-height"in n&&e.setSymbolSizeExpression(`vec2(${p(r,n["icon-width"],a.NumberType)}, ${p(r,n["icon-height"],a.NumberType)})`),"icon-offset"in n&&"icon-size"in n){const c=p(r,n["icon-size"],a.NumberArrayType),l=e.getSymbolSizeExpression();e.setSymbolSizeExpression(c);const u=ce(n,"icon-",r,"v_quadSizePx",c);e.setTextureCoordinateExpression(`(vec4((${u}).xyxy) + vec4(0., 0., ${c})) / (${l}).xyxy`)}if(ae(n,e,r,"icon-"),"icon-anchor"in n){const c=p(r,n["icon-anchor"],a.NumberArrayType);let l="1.0";"icon-scale"in n&&(l=p(r,n["icon-scale"],a.SizeType));let u;n["icon-anchor-x-units"]==="pixels"&&n["icon-anchor-y-units"]==="pixels"?u=`${c} * ${l}`:n["icon-anchor-x-units"]==="pixels"?u=`${c} * vec2(vec2(${l}).x, v_quadSizePx.y)`:n["icon-anchor-y-units"]==="pixels"?u=`${c} * vec2(v_quadSizePx.x, vec2(${l}).x)`:u=`${c} * v_quadSizePx`;let f=`v_quadSizePx * vec2(0.5, -0.5) + ${u} * vec2(-1., 1.)`;if("icon-anchor-origin"in n)switch(n["icon-anchor-origin"]){case"top-right":f=`v_quadSizePx * -0.5 + ${u}`;break;case"bottom-left":f=`v_quadSizePx * 0.5 - ${u}`;break;case"bottom-right":f=`v_quadSizePx * vec2(-0.5, 0.5) + ${u} * vec2(1., -1.)`;break}e.setSymbolOffsetExpression(`${e.getSymbolOffsetExpression()} + ${f}`)}}function xt(n,e,t,r){if("stroke-color"in n&&e.setStrokeColorExpression(p(r,n["stroke-color"],a.ColorType)),"stroke-pattern-src"in n){const s=G(n["stroke-pattern-src"]),i=le(n,e,t,"stroke-pattern-",s);let o=i,c="vec2(0.)";"stroke-pattern-offset"in n&&"stroke-pattern-size"in n&&(o=p(r,n["stroke-pattern-size"],a.NumberArrayType),c=ce(n,"stroke-pattern-",r,i,o));let l="0.";"stroke-pattern-spacing"in n&&(l=p(r,n["stroke-pattern-spacing"],a.NumberType));let u="0.";"stroke-pattern-start-offset"in n&&(u=p(r,n["stroke-pattern-start-offset"],a.NumberType)),r.functions.sampleStrokePattern=`vec4 sampleStrokePattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, float spacingPx, float startOffsetPx, float currentLengthPx, float currentRadiusRatio, float lineWidth) {
|
|
636
|
+
float currentLengthScaled = (currentLengthPx - startOffsetPx) * sampleSize.y / lineWidth;
|
|
637
|
+
float spacingScaled = spacingPx * sampleSize.y / lineWidth;
|
|
638
|
+
float uCoordPx = mod(currentLengthScaled, (sampleSize.x + spacingScaled));
|
|
639
|
+
float isInsideOfPattern = step(uCoordPx, sampleSize.x);
|
|
640
|
+
float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;
|
|
641
|
+
// make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels
|
|
642
|
+
uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);
|
|
643
|
+
vCoordPx = clamp(vCoordPx, 0.5, sampleSize.y - 0.5);
|
|
644
|
+
vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;
|
|
645
|
+
return texture2D(texture, texCoord) * vec4(1.0, 1.0, 1.0, isInsideOfPattern);
|
|
646
|
+
}`;const f=`u_texture${s}`;let h="1.";"stroke-color"in n&&(h=e.getStrokeColorExpression()),e.setStrokeColorExpression(`${h} * sampleStrokePattern(${f}, ${i}, ${c}, ${o}, ${l}, ${u}, currentLengthPx, currentRadiusRatio, v_width)`),r.functions.computeStrokePatternLength=`float computeStrokePatternLength(vec2 sampleSize, float spacingPx, float lineWidth) {
|
|
647
|
+
float patternLengthPx = sampleSize.x / sampleSize.y * lineWidth;
|
|
648
|
+
return patternLengthPx + spacingPx;
|
|
649
|
+
}`,e.setStrokePatternLengthExpression(`computeStrokePatternLength(${o}, ${l}, v_width)`)}if("stroke-width"in n&&e.setStrokeWidthExpression(p(r,n["stroke-width"],a.NumberType)),"stroke-offset"in n&&e.setStrokeOffsetExpression(p(r,n["stroke-offset"],a.NumberType)),"stroke-line-cap"in n&&e.setStrokeCapExpression(p(r,n["stroke-line-cap"],a.StringType)),"stroke-line-join"in n&&e.setStrokeJoinExpression(p(r,n["stroke-line-join"],a.StringType)),"stroke-miter-limit"in n&&e.setStrokeMiterLimitExpression(p(r,n["stroke-miter-limit"],a.NumberType)),"stroke-line-dash"in n){r.functions.getSingleDashDistance=`float getSingleDashDistance(float distance, float radius, float dashOffset, float dashLength, float dashLengthTotal, float capType, float lineWidth) {
|
|
650
|
+
float localDistance = mod(distance, dashLengthTotal);
|
|
651
|
+
float distanceSegment = abs(localDistance - dashOffset - dashLength * 0.5) - dashLength * 0.5;
|
|
652
|
+
distanceSegment = min(distanceSegment, dashLengthTotal - localDistance);
|
|
653
|
+
if (capType == ${R("square")}) {
|
|
654
|
+
distanceSegment -= lineWidth * 0.5;
|
|
655
|
+
} else if (capType == ${R("round")}) {
|
|
656
|
+
distanceSegment = min(distanceSegment, sqrt(distanceSegment * distanceSegment + radius * radius) - lineWidth * 0.5);
|
|
657
|
+
}
|
|
658
|
+
return distanceSegment;
|
|
659
|
+
}`;let s=n["stroke-line-dash"].map(g=>p(r,g,a.NumberType));s.length%2===1&&(s=[...s,...s]);let i="0.";"stroke-line-dash-offset"in n&&(i=p(r,n["stroke-line-dash-offset"],a.NumberType));const c=`dashDistanceField_${G(n["stroke-line-dash"])}`,l=s.map((g,P)=>`float dashLength${P}`).join(", "),u=s.map((g,P)=>`dashLength${P}`).join(" + ");let f="0.",h=`getSingleDashDistance(distance, radius, ${f}, dashLength0, totalDashLength, capType, lineWidth)`;for(let g=2;g<s.length;g+=2)f=`${f} + dashLength${g-2} + dashLength${g-1}`,h=`min(${h}, getSingleDashDistance(distance, radius, ${f}, dashLength${g}, totalDashLength, capType, lineWidth))`;r.functions[c]=`float ${c}(float distance, float radius, float capType, float lineWidth, ${l}) {
|
|
660
|
+
float totalDashLength = ${u};
|
|
661
|
+
return ${h};
|
|
662
|
+
}`;const d=s.map((g,P)=>`${g}`).join(", ");e.setStrokeDistanceFieldExpression(`${c}(currentLengthPx + ${i}, currentRadiusPx, capType, v_width, ${d})`);let x=s.join(" + ");e.getStrokePatternLengthExpression()&&(r.functions.combinePatternLengths=`float combinePatternLengths(float patternLength1, float patternLength2) {
|
|
663
|
+
return patternLength1 * patternLength2;
|
|
664
|
+
}`,x=`combinePatternLengths(${e.getStrokePatternLengthExpression()}, ${x})`),e.setStrokePatternLengthExpression(x)}}function mt(n,e,t,r){if("fill-color"in n&&e.setFillColorExpression(p(r,n["fill-color"],a.ColorType)),"fill-pattern-src"in n){const s=G(n["fill-pattern-src"]),i=le(n,e,t,"fill-pattern-",s);e.setFillPatternSizeExpression(i);let o="vec2(0.)";if("fill-pattern-offset"in n&&"fill-pattern-size"in n){const u=p(r,n["fill-pattern-size"],a.NumberArrayType);e.setFillPatternSizeExpression(u),o=ce(n,"fill-pattern-",r,i,"v_patternSizePx")}r.functions.sampleFillPattern=`vec4 sampleFillPattern(sampler2D texture, vec2 textureSize, vec2 textureOffset, vec2 sampleSize, vec2 patternOriginPx, vec2 pxPosition, float sampleScaleRatio) {
|
|
665
|
+
vec2 pxRelativePos = pxPosition - patternOriginPx;
|
|
666
|
+
|
|
667
|
+
// rotate the relative position from origin by the current view rotation
|
|
668
|
+
pxRelativePos = vec2(pxRelativePos.x * cos(u_rotation) - pxRelativePos.y * sin(u_rotation), pxRelativePos.x * sin(u_rotation) + pxRelativePos.y * cos(u_rotation));
|
|
669
|
+
// sample position is computed according to the sample offset & size
|
|
670
|
+
vec2 samplePos = mod(pxRelativePos / sampleScaleRatio, sampleSize);
|
|
671
|
+
// also make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels
|
|
672
|
+
samplePos = clamp(samplePos, vec2(0.5), sampleSize - vec2(0.5));
|
|
673
|
+
samplePos.y = sampleSize.y - samplePos.y; // invert y axis so that images appear upright
|
|
674
|
+
return texture2D(texture, (samplePos + textureOffset) / textureSize);
|
|
675
|
+
}`;const c=`u_texture${s}`;let l="1.";"fill-color"in n&&(l=e.getFillColorExpression()),e.setFillColorExpression(`${l} * sampleFillPattern(${c}, ${i}, ${o}, v_patternSizePx, v_patternOriginPx, pxPos, df_float(u_df_patternScaleRatio))`)}}function _e(n,e,t){const r=ve(),s=new Se,i={};if("icon-src"in n?gt(n,s,i,r):"shape-points"in n?_t(n,s,i,r):"circle-radius"in n&&pt(n,s,i,r),xt(n,s,i,r),mt(n,s,i,r),t){const l=a.newParsingContext(),u=p(r,t,a.BooleanType,l);l.mCoordinate?s.setFragmentDiscardExpression(`!${u}`):s.setShapeDiscardExpression(`!${u}`)}const o={};function c(l,u,f,h){if(!r[l])return;const d=Q(f),x=se(f);s.addAttribute(`a_${u}`,d),o[u]={size:x,callback:h}}return c("geometryType",ye,a.StringType,l=>L(a.computeGeometryType(l.getGeometry()))),c("featureId",Te,a.StringType|a.NumberType,l=>{var f;const u=(f=l.getId())!=null?f:null;return typeof u=="string"?L(u):u}),Pe(s,r),{builder:s,attributes:{...o,...Re(r)},uniforms:{...i,...be(r,e)}}}const Et=[];let q;function vt(){return q||(q=lt()),q}let Tt=0;const E={POSITION:"a_position",LOCAL_POSITION:"a_localPosition",SEGMENT_START:"a_segmentStart",SEGMENT_END:"a_segmentEnd",MEASURE_START:"a_measureStart",MEASURE_END:"a_measureEnd",ANGLE_TANGENT_SUM:"a_angleTangentSum",JOIN_ANGLES:"a_joinAngles",DISTANCE_LOW:"a_distanceLow",DISTANCE_HIGH:"a_distanceHigh"};class yt{constructor(e,t,r,s){this.helper_,this.hitDetectionEnabled_=!!s,this.styleShaders=bt(e,t),this.customAttributes_={},this.uniforms_={},this.hitDetectionEnabled_&&(this.customAttributes_.hitColor={callback(){return ct(this.ref,Et)},size:2});for(const i of this.styleShaders){for(const o in i.attributes)o in this.customAttributes_||(this.customAttributes_[o]=i.attributes[o]);for(const o in i.uniforms)o in this.uniforms_||(this.uniforms_[o]=i.uniforms[o])}this.renderPasses_=this.styleShaders.map(i=>{const o={},c=Object.entries(this.customAttributes_).map(([l,u])=>({name:l in i.attributes||l==="hitColor"?`a_${l}`:null,size:u.size||1,type:m.FLOAT}));return i.builder.getFillVertexShader()&&(o.fillRenderPass={vertexShader:i.builder.getFillVertexShader(),fragmentShader:i.builder.getFillFragmentShader(),attributesDesc:[{name:E.POSITION,size:2,type:m.FLOAT},...c],instancedAttributesDesc:[],instancePrimitiveVertexCount:3}),i.builder.getStrokeVertexShader()&&(o.strokeRenderPass={vertexShader:i.builder.getStrokeVertexShader(),fragmentShader:i.builder.getStrokeFragmentShader(),attributesDesc:[{name:E.LOCAL_POSITION,size:2,type:m.FLOAT}],instancedAttributesDesc:[{name:E.SEGMENT_START,size:2,type:m.FLOAT},{name:E.MEASURE_START,size:1,type:m.FLOAT},{name:E.SEGMENT_END,size:2,type:m.FLOAT},{name:E.MEASURE_END,size:1,type:m.FLOAT},{name:E.JOIN_ANGLES,size:2,type:m.FLOAT},{name:E.DISTANCE_LOW,size:1,type:m.FLOAT},{name:E.DISTANCE_HIGH,size:1,type:m.FLOAT},{name:E.ANGLE_TANGENT_SUM,size:1,type:m.FLOAT},...c],instancePrimitiveVertexCount:6}),i.builder.getSymbolVertexShader()&&(o.symbolRenderPass={vertexShader:i.builder.getSymbolVertexShader(),fragmentShader:i.builder.getSymbolFragmentShader(),attributesDesc:[{name:E.LOCAL_POSITION,size:2,type:m.FLOAT}],instancedAttributesDesc:[{name:E.POSITION,size:2,type:m.FLOAT},...c],instancePrimitiveVertexCount:6}),o}),this.hasFill_=this.renderPasses_.some(i=>i.fillRenderPass),this.hasStroke_=this.renderPasses_.some(i=>i.strokeRenderPass),this.hasSymbol_=this.renderPasses_.some(i=>i.symbolRenderPass),this.setHelper(r)}async generateBuffers(e,t){if(e.isEmpty())return null;const r=this.generateRenderInstructions_(e,t),[s,i,o]=await Promise.all([this.generateBuffersForType_(r.polygonInstructions,"Polygon",t),this.generateBuffersForType_(r.lineStringInstructions,"LineString",t),this.generateBuffersForType_(r.pointInstructions,"Point",t)]),c=a.makeInverse(a.create(),t);return{polygonBuffers:s,lineStringBuffers:i,pointBuffers:o,invertVerticesTransform:c}}generateRenderInstructions_(e,t){const r=this.hasFill_?dt(e.polygonBatch,new Float32Array(0),this.customAttributes_,t):null,s=this.hasStroke_?ht(e.lineStringBatch,new Float32Array(0),this.customAttributes_,t):null,i=this.hasSymbol_?ft(e.pointBatch,new Float32Array(0),this.customAttributes_,t):null;return{polygonInstructions:r,lineStringInstructions:s,pointInstructions:i}}generateBuffersForType_(e,t,r){if(e===null)return null;const s=Tt++;let i;switch(t){case"Polygon":i=Z.GENERATE_POLYGON_BUFFERS;break;case"LineString":i=Z.GENERATE_LINE_STRING_BUFFERS;break;case"Point":i=Z.GENERATE_POINT_BUFFERS;break}const o={id:s,type:i,renderInstructions:e.buffer,renderInstructionsTransform:r,customAttributesSize:k(this.customAttributes_)},c=vt();return c.postMessage(o,[e.buffer]),e=null,new Promise(l=>{const u=f=>{const h=f.data;if(h.id!==s||(c.removeEventListener("message",u),!this.helper_.getGL()))return;const d=new j(ee,N).fromArrayBuffer(h.indicesBuffer),x=new j(U,N).fromArrayBuffer(h.vertexAttributesBuffer),g=new j(U,N).fromArrayBuffer(h.instanceAttributesBuffer);this.helper_.flushBufferData(d),this.helper_.flushBufferData(x),this.helper_.flushBufferData(g),l([d,x,g])};c.addEventListener("message",u)})}render(e,t,r){for(const s of this.renderPasses_)s.fillRenderPass&&this.renderInternal_(e.polygonBuffers[0],e.polygonBuffers[1],e.polygonBuffers[2],s.fillRenderPass,t,r),s.strokeRenderPass&&this.renderInternal_(e.lineStringBuffers[0],e.lineStringBuffers[1],e.lineStringBuffers[2],s.strokeRenderPass,t,r),s.symbolRenderPass&&this.renderInternal_(e.pointBuffers[0],e.pointBuffers[1],e.pointBuffers[2],s.symbolRenderPass,t,r)}renderInternal_(e,t,r,s,i,o){const c=e.getSize();if(c===0)return;const l=s.instancedAttributesDesc.length;if(this.helper_.useProgram(s.program,i),this.helper_.bindBuffer(t),this.helper_.bindBuffer(e),this.helper_.enableAttributes(s.attributesDesc),this.helper_.bindBuffer(r),this.helper_.enableAttributesInstanced(s.instancedAttributesDesc),o(),l){const u=s.instancedAttributesDesc.reduce((h,d)=>h+(d.size||1),0),f=r.getSize()/u;this.helper_.drawElementsInstanced(0,c,f)}else this.helper_.drawElements(0,c)}setHelper(e,t=null){this.helper_=e;for(const r of this.renderPasses_)r.fillRenderPass&&(r.fillRenderPass.program=this.helper_.getProgram(r.fillRenderPass.fragmentShader,r.fillRenderPass.vertexShader)),r.strokeRenderPass&&(r.strokeRenderPass.program=this.helper_.getProgram(r.strokeRenderPass.fragmentShader,r.strokeRenderPass.vertexShader)),r.symbolRenderPass&&(r.symbolRenderPass.program=this.helper_.getProgram(r.symbolRenderPass.fragmentShader,r.symbolRenderPass.vertexShader));this.helper_.addUniforms(this.uniforms_),t&&(t.polygonBuffers&&(this.helper_.flushBufferData(t.polygonBuffers[0]),this.helper_.flushBufferData(t.polygonBuffers[1]),this.helper_.flushBufferData(t.polygonBuffers[2])),t.lineStringBuffers&&(this.helper_.flushBufferData(t.lineStringBuffers[0]),this.helper_.flushBufferData(t.lineStringBuffers[1]),this.helper_.flushBufferData(t.lineStringBuffers[2])),t.pointBuffers&&(this.helper_.flushBufferData(t.pointBuffers[0]),this.helper_.flushBufferData(t.pointBuffers[1]),this.helper_.flushBufferData(t.pointBuffers[2])))}}var Pt=yt;function bt(n,e){const t=Array.isArray(n)?n:[n];if("style"in t[0]){const r=[],s=t,i=[];for(const o of s){const c=Array.isArray(o.style)?o.style:[o.style];let l=o.filter;o.else&&i.length&&(l=["all",...i.map(f=>["!",f])],o.filter&&l.push(o.filter),l.length<3&&(l=l[1])),o.filter&&i.push(o.filter);const u=c.map(f=>_e(f,e,l));r.push(...u)}return r}return"builder"in t[0]?t:t.map(r=>_e(r,e,null))}const T=new Uint8Array(4);class Rt{constructor(e,t){this.helper_=e;const r=e.getGL();this.texture_=r.createTexture(),this.framebuffer_=r.createFramebuffer(),this.depthbuffer_=r.createRenderbuffer(),this.size_=t||[1,1],this.data_=new Uint8Array(0),this.dataCacheDirty_=!0,this.updateSize_()}setSize(e){a.equals(e,this.size_)||(this.size_[0]=e[0],this.size_[1]=e[1],this.updateSize_())}getSize(){return this.size_}clearCachedData(){this.dataCacheDirty_=!0}readAll(){if(this.dataCacheDirty_){const e=this.size_,t=this.helper_.getGL();t.bindFramebuffer(t.FRAMEBUFFER,this.framebuffer_),t.readPixels(0,0,e[0],e[1],t.RGBA,t.UNSIGNED_BYTE,this.data_),this.dataCacheDirty_=!1}return this.data_}readPixel(e,t){if(e<0||t<0||e>this.size_[0]||t>=this.size_[1])return T[0]=0,T[1]=0,T[2]=0,T[3]=0,T;this.readAll();const r=Math.floor(e)+(this.size_[1]-Math.floor(t)-1)*this.size_[0];return T[0]=this.data_[r*4],T[1]=this.data_[r*4+1],T[2]=this.data_[r*4+2],T[3]=this.data_[r*4+3],T}getTexture(){return this.texture_}getFramebuffer(){return this.framebuffer_}getDepthbuffer(){return this.depthbuffer_}updateSize_(){const e=this.size_,t=this.helper_.getGL();this.texture_=this.helper_.createTexture(e,null,this.texture_),t.bindFramebuffer(t.FRAMEBUFFER,this.framebuffer_),t.viewport(0,0,e[0],e[1]),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.texture_,0),t.bindRenderbuffer(t.RENDERBUFFER,this.depthbuffer_),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,e[0],e[1]),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,this.depthbuffer_),this.data_=new Uint8Array(e[0]*e[1]*4)}}var St=Rt;const I={PATTERN_ORIGIN_X_DOUBLE:"u_df_patternOriginX",PATTERN_ORIGIN_Y_DOUBLE:"u_df_patternOriginY",PATTERN_SCALE_RATIO_DOUBLE:"u_df_patternScaleRatio",ONE:"u_one"},y=[0,0],$=[0,0],S=a.create(),ge=xe();function At(n,e,t,r){a.setFromArray(S,e),a.multiply(S,t),n.setUniformMatrixValue(v.PROJECTION_MATRIX,K(ge,S)),a.makeInverse(S,S),n.setUniformMatrixValue(v.INVERT_PROJECTION_MATRIX,K(ge,S)),y[0]=0,y[1]=0;const s=r.size,i=r.viewState.resolution,o=r.viewState.center;a.compose(S,s[0]/2,s[1]/2,1/i,1/i,0,-o[0],-o[1]),a.apply(S,y),$[0]=w(y[0]),$[1]=H(y[0]),n.setUniformFloatVec2(I.PATTERN_ORIGIN_X_DOUBLE,$),$[0]=w(y[1]),$[1]=H(y[1]),n.setUniformFloatVec2(I.PATTERN_ORIGIN_Y_DOUBLE,$);const c=Math.pow(2,(r.viewState.zoom+.5)%1-.5);y[0]=w(c),y[1]=H(c),n.setUniformFloatVec2(I.PATTERN_SCALE_RATIO_DOUBLE,y)}function Ct(n,e){const t=n.viewState.projection,s=e.getSource().getWrapX()&&t.canWrapX(),i=t.getExtent(),o=n.extent,c=s?a.getWidth(i):null,l=s?Math.ceil((o[2]-i[2])/c)+1:1;return[s?Math.floor((o[0]-i[0])/c):0,l,c]}const Y={...v,...I,RENDER_EXTENT:"u_renderExtent",GLOBAL_ALPHA:"u_globalAlpha"};class Ft extends Xe{constructor(e,t){const r={[Y.RENDER_EXTENT]:[0,0,0,0],[Y.GLOBAL_ALPHA]:1,[Y.ONE]:1};super(e,{uniforms:r,postProcesses:t.postProcesses}),this.hitDetectionEnabled_=!t.disableHitDetection,this.hitRenderTarget_,this.sourceRevision_=-1,this.previousExtent_=a.createEmpty(),this.currentTransform_=a.create(),this.currentFrameStateTransform_=a.create(),this.styleVariables_={},this.style_=[],this.styleRenderer_=null,this.buffers_=null,this.applyOptions_(t),this.batch_=new at,this.initialFeaturesAdded_=!1,this.sourceListenKeys_=null}addInitialFeatures_(e){const t=this.getLayer().getSource();let r;this.batch_.addFeatures(t.getFeatures(),r),this.sourceListenKeys_=[a.listen(t,a.VectorEventType.ADDFEATURE,this.handleSourceFeatureAdded_.bind(this,r)),a.listen(t,a.VectorEventType.CHANGEFEATURE,this.handleSourceFeatureChanged_.bind(this,r),this),a.listen(t,a.VectorEventType.REMOVEFEATURE,this.handleSourceFeatureDelete_,this),a.listen(t,a.VectorEventType.CLEAR,this.handleSourceFeatureClear_,this)]}applyOptions_(e){this.styleVariables_=e.variables,this.style_=e.style}createRenderers_(){this.buffers_=null,this.styleRenderer_=new Pt(this.style_,this.styleVariables_,this.helper,this.hitDetectionEnabled_)}reset(e){this.applyOptions_(e),this.helper&&this.createRenderers_(),super.reset(e)}afterHelperCreated(){this.styleRenderer_?this.styleRenderer_.setHelper(this.helper,this.buffers_):this.createRenderers_(),this.hitDetectionEnabled_&&(this.hitRenderTarget_=new St(this.helper))}handleSourceFeatureAdded_(e,t){const r=t.feature;this.batch_.addFeature(r,e)}handleSourceFeatureChanged_(e,t){const r=t.feature;this.batch_.changeFeature(r,e)}handleSourceFeatureDelete_(e){const t=e.feature;this.batch_.removeFeature(t)}handleSourceFeatureClear_(){this.batch_.clear()}applyUniforms_(e,t){At(this.helper,this.currentFrameStateTransform_,e,t)}renderFrame(e){const t=this.helper.getGL();this.preRender(t,e);const[r,s,i]=Ct(e,this.getLayer());this.helper.prepareDraw(e),this.renderWorlds(e,!1,r,s,i),this.helper.finalizeDraw(e,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);const o=this.helper.getCanvas();return this.hitDetectionEnabled_&&(this.renderWorlds(e,!0,r,s,i),this.hitRenderTarget_.clearCachedData()),this.postRender(t,e),o}prepareFrameInternal(e){this.initialFeaturesAdded_||(this.addInitialFeatures_(e),this.initialFeaturesAdded_=!0);const t=this.getLayer(),r=t.getSource(),s=e.viewState,i=!e.viewHints[a.ViewHint.ANIMATING]&&!e.viewHints[a.ViewHint.INTERACTING],o=!a.equals$1(this.previousExtent_,e.extent),c=this.sourceRevision_<r.getRevision();if(c&&(this.sourceRevision_=r.getRevision()),i&&(o||c)){const l=s.projection,u=s.resolution,f=t instanceof a.BaseVector?t.getRenderBuffer():0,h=a.buffer(e.extent,f*u);r.loadFeatures(h,u,l),this.ready=!1;const d=this.helper.makeProjectionTransform(e,a.create());this.styleRenderer_.generateBuffers(this.batch_,d).then(x=>{this.buffers_&&this.disposeBuffers(this.buffers_),this.buffers_=x,this.ready=!0,this.getLayer().changed()}),this.previousExtent_=e.extent.slice()}return!0}renderWorlds(e,t,r,s,i){let o=r;t&&(this.hitRenderTarget_.setSize([Math.floor(e.size[0]/2),Math.floor(e.size[1]/2)]),this.helper.prepareDrawToRenderTarget(e,this.hitRenderTarget_,!0));do this.helper.makeProjectionTransform(e,this.currentFrameStateTransform_),a.translate(this.currentFrameStateTransform_,o*i,0),this.buffers_&&this.styleRenderer_.render(this.buffers_,e,()=>{this.applyUniforms_(this.buffers_.invertVerticesTransform,e),this.helper.applyHitDetectionUniform(t)});while(++o<s)}forEachFeatureAtCoordinate(e,t,r,s,i){if(a.assert(this.hitDetectionEnabled_,"`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has been disabled using the `disableHitDetection: true` option."),!this.styleRenderer_||!this.hitDetectionEnabled_)return;const o=a.apply(t.coordinateToPixelTransform,e.slice()),c=this.hitRenderTarget_.readPixel(o[0]/2,o[1]/2),l=[c[0]/255,c[1]/255,c[2]/255,c[3]/255],u=ut(l),f=this.batch_.getFeatureFromRef(u);if(f)return s(f,this.getLayer(),null)}disposeBuffers(e){const t=r=>{for(const s of r)s&&this.helper.deleteBuffer(s)};e.pointBuffers&&t(e.pointBuffers),e.lineStringBuffers&&t(e.lineStringBuffers),e.polygonBuffers&&t(e.polygonBuffers)}disposeInternal(){this.buffers_&&this.disposeBuffers(this.buffers_),this.sourceListenKeys_&&(this.sourceListenKeys_.forEach(function(e){a.unlistenByKey(e)}),this.sourceListenKeys_=null),super.disposeInternal()}renderDeclutter(){}}var $t=Ft;const b={BLUR:"blur",GRADIENT:"gradient",RADIUS:"radius"},Lt=["#00f","#0ff","#0f0","#ff0","#f00"];class Dt extends a.BaseVector{constructor(e){var s;e=e||{};const t=Object.assign({},e);delete t.gradient,delete t.radius,delete t.blur,delete t.weight,super(t),this.on,this.once,this.un,this.filter_=(s=e.filter)!=null?s:!0,this.styleVariables_=e.variables||{},this.gradient_=null,this.addChangeListener(b.GRADIENT,this.handleGradientChanged_),this.setGradient(e.gradient?e.gradient:Lt),this.setBlur(e.blur!==void 0?e.blur:15),this.setRadius(e.radius!==void 0?e.radius:8);const r=e.weight?e.weight:"weight";this.weight_=r,this.setRenderOrder(null)}getBlur(){return this.get(b.BLUR)}getGradient(){return this.get(b.GRADIENT)}getRadius(){return this.get(b.RADIUS)}handleGradientChanged_(){this.gradient_=Bt(this.getGradient())}setBlur(e){const t=this.get(b.BLUR);if(this.set(b.BLUR,e),typeof e=="number"&&typeof t=="number"){this.changed();return}this.clearRenderer()}setGradient(e){this.set(b.GRADIENT,e)}setRadius(e){const t=this.get(b.RADIUS);if(this.set(b.RADIUS,e),typeof e=="number"&&typeof t=="number"){this.changed();return}this.clearRenderer()}setFilter(e){this.filter_=e,this.changed(),this.clearRenderer()}setWeight(e){this.weight_=e,this.changed(),this.clearRenderer()}createRenderer(){const e=new Se,t=ve(),r=a.newParsingContext(),s=p(t,this.filter_,a.BooleanType,r);let i=p(t,this.getRadius(),a.NumberType),o=p(t,this.getBlur(),a.NumberType);const c={};typeof this.getBlur()=="number"&&(o="a_blur",c.a_blur=()=>this.getBlur(),e.addUniform("a_blur","float")),typeof this.getRadius()=="number"&&(i="a_radius",c.a_radius=()=>this.getRadius(),e.addUniform("a_radius","float"));const l={};let u=null;if(typeof this.weight_=="string"||typeof this.weight_=="function"){const x=typeof this.weight_=="string"?g=>g.get(this.weight_):this.weight_;l.prop_weight={size:1,callback:g=>{const P=x(g);return P!==void 0?a.clamp(P,0,1):1}},u="a_prop_weight",e.addAttribute("a_prop_weight","float")}else{const x=["clamp",this.weight_,0,1];u=p(t,x,a.NumberType)}const f=`(${i} / max(1., ${o}))`;e.setSymbolSizeExpression(`vec2(${i} + ${o}) * 2.`).setSymbolColorExpression(`vec4(smoothstep(0., 1., (1. - length(coordsPx * 2. / v_quadSizePx)) * ${f}) * ${u})`).setStrokeColorExpression(`vec4(smoothstep(0., 1., (1. - length(currentRadiusPx * 2. / v_width)) * ${f}) * ${u})`).setStrokeWidthExpression(`(${i} + ${o}) * 2.`).setFillColorExpression(`vec4(${u})`),r.mCoordinate?e.setFragmentDiscardExpression(`!${s}`):e.setShapeDiscardExpression(`!${s}`),Pe(e,t);const h=Re(t),d=be(t,this.styleVariables_);return new $t(this,{className:this.getClassName(),variables:this.styleVariables_,style:{builder:e,attributes:{...h,...l},uniforms:{...d,...c}},disableHitDetection:!1,postProcesses:[{fragmentShader:`
|
|
676
|
+
precision mediump float;
|
|
677
|
+
|
|
678
|
+
uniform sampler2D u_image;
|
|
679
|
+
uniform sampler2D u_gradientTexture;
|
|
680
|
+
uniform float u_opacity;
|
|
681
|
+
|
|
682
|
+
varying vec2 v_texCoord;
|
|
683
|
+
|
|
684
|
+
void main() {
|
|
685
|
+
vec4 color = texture2D(u_image, v_texCoord);
|
|
686
|
+
gl_FragColor.a = color.a * u_opacity;
|
|
687
|
+
gl_FragColor.rgb = texture2D(u_gradientTexture, vec2(0.5, color.a)).rgb;
|
|
688
|
+
gl_FragColor.rgb *= gl_FragColor.a;
|
|
689
|
+
}`,uniforms:{u_gradientTexture:()=>this.gradient_,u_opacity:()=>this.getOpacity()}}]})}updateStyleVariables(e){Object.assign(this.styleVariables_,e),this.changed()}renderDeclutter(){}}function Bt(n){const r=a.createCanvasContext2D(1,256),s=r.createLinearGradient(0,0,1,256),i=1/(n.length-1);for(let o=0,c=n.length;o<c;++o)s.addColorStop(o*i,n[o]);return r.fillStyle=s,r.fillRect(0,0,1,256),r.canvas}exports.default=Dt;
|