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.
Files changed (820) hide show
  1. package/dist/Heatmap.js +689 -0
  2. package/dist/WSPlayer/PlaySDKInterface.js +1 -0
  3. package/dist/WSPlayer/WSPlayer.js +1 -0
  4. package/dist/WSPlayer/audioTalkWorker.js +1 -0
  5. package/dist/WSPlayer/commonThread/libH264Enc.js +21 -0
  6. package/dist/WSPlayer/commonThread/libH264Enc.wasm +0 -0
  7. package/dist/WSPlayer/commonThread/libIVSDrawer.js +21 -0
  8. package/dist/WSPlayer/commonThread/libIVSDrawer.wasm +0 -0
  9. package/dist/WSPlayer/commonThread/libRenderEngine.js +21 -0
  10. package/dist/WSPlayer/commonThread/libRenderEngine.wasm +0 -0
  11. package/dist/WSPlayer/commonThread/libmavasp_litepacket.data +50 -0
  12. package/dist/WSPlayer/commonThread/libmavasp_litepacket.js +21 -0
  13. package/dist/WSPlayer/commonThread/libmavasp_litepacket.wasm +0 -0
  14. package/dist/WSPlayer/icon/IotComboBackGround-alarm.png +0 -0
  15. package/dist/WSPlayer/icon/IotComboBackGround.png +0 -0
  16. package/dist/WSPlayer/icon/RecordHover.svg +13 -0
  17. package/dist/WSPlayer/icon/RecordNormal.svg +13 -0
  18. package/dist/WSPlayer/icon/Recording.svg +15 -0
  19. package/dist/WSPlayer/icon/arrow-b.svg +9 -0
  20. package/dist/WSPlayer/icon/arrow-l.svg +9 -0
  21. package/dist/WSPlayer/icon/arrow-lb.svg +10 -0
  22. package/dist/WSPlayer/icon/arrow-lt.svg +10 -0
  23. package/dist/WSPlayer/icon/arrow-r.svg +9 -0
  24. package/dist/WSPlayer/icon/arrow-rb.svg +10 -0
  25. package/dist/WSPlayer/icon/arrow-rt.svg +10 -0
  26. package/dist/WSPlayer/icon/arrow-t.svg +9 -0
  27. package/dist/WSPlayer/icon/close-all-hover.svg +18 -0
  28. package/dist/WSPlayer/icon/close-all.svg +18 -0
  29. package/dist/WSPlayer/icon/close.svg +16 -0
  30. package/dist/WSPlayer/icon/close_hover.svg +16 -0
  31. package/dist/WSPlayer/icon/default.png +0 -0
  32. package/dist/WSPlayer/icon/draw-triangle_off.svg +14 -0
  33. package/dist/WSPlayer/icon/draw-triangle_off_hover.svg +14 -0
  34. package/dist/WSPlayer/icon/draw-triangle_on.svg +15 -0
  35. package/dist/WSPlayer/icon/draw-triangle_on_hover.svg +15 -0
  36. package/dist/WSPlayer/icon/drops.png +0 -0
  37. package/dist/WSPlayer/icon/fullscreen-hover.svg +13 -0
  38. package/dist/WSPlayer/icon/fullscreen.svg +13 -0
  39. package/dist/WSPlayer/icon/hide-pantilt-on.svg +13 -0
  40. package/dist/WSPlayer/icon/hide-pantilt.svg +13 -0
  41. package/dist/WSPlayer/icon/mobile-speed-control-icon.svg +13 -0
  42. package/dist/WSPlayer/icon/more.svg +13 -0
  43. package/dist/WSPlayer/icon/play-h.png +0 -0
  44. package/dist/WSPlayer/icon/play-n.png +0 -0
  45. package/dist/WSPlayer/icon/play-p.png +0 -0
  46. package/dist/WSPlayer/icon/ptz-icon1.svg +4 -0
  47. package/dist/WSPlayer/icon/ptz-icon2.svg +13 -0
  48. package/dist/WSPlayer/icon/ptz-icon3.svg +10 -0
  49. package/dist/WSPlayer/icon/ptz-icon4.svg +10 -0
  50. package/dist/WSPlayer/icon/ptz-icon5.svg +12 -0
  51. package/dist/WSPlayer/icon/ptz-icon6.svg +14 -0
  52. package/dist/WSPlayer/icon/ptz-select-hover.svg +3 -0
  53. package/dist/WSPlayer/icon/ptz-select.svg +3 -0
  54. package/dist/WSPlayer/icon/record_pause.svg +5 -0
  55. package/dist/WSPlayer/icon/record_play.svg +5 -0
  56. package/dist/WSPlayer/icon/refresh-replay.svg +11 -0
  57. package/dist/WSPlayer/icon/refresh-replay_hover.svg +11 -0
  58. package/dist/WSPlayer/icon/screen-more-icon.svg +15 -0
  59. package/dist/WSPlayer/icon/screen_1.svg +11 -0
  60. package/dist/WSPlayer/icon/screen_16.svg +18 -0
  61. package/dist/WSPlayer/icon/screen_16_hover.svg +18 -0
  62. package/dist/WSPlayer/icon/screen_1_hover.svg +11 -0
  63. package/dist/WSPlayer/icon/screen_2.svg +18 -0
  64. package/dist/WSPlayer/icon/screen_25.svg +19 -0
  65. package/dist/WSPlayer/icon/screen_25_hover.svg +19 -0
  66. package/dist/WSPlayer/icon/screen_2_hover.svg +18 -0
  67. package/dist/WSPlayer/icon/screen_3.svg +13 -0
  68. package/dist/WSPlayer/icon/screen_3_hover.svg +13 -0
  69. package/dist/WSPlayer/icon/screen_4.svg +12 -0
  70. package/dist/WSPlayer/icon/screen_4_hover.svg +12 -0
  71. package/dist/WSPlayer/icon/screen_6.svg +16 -0
  72. package/dist/WSPlayer/icon/screen_6_hover.svg +16 -0
  73. package/dist/WSPlayer/icon/screen_8.svg +18 -0
  74. package/dist/WSPlayer/icon/screen_8_hover.svg +18 -0
  75. package/dist/WSPlayer/icon/screen_9.svg +17 -0
  76. package/dist/WSPlayer/icon/screen_9_hover.svg +17 -0
  77. package/dist/WSPlayer/icon/screen_custom_division.svg +9 -0
  78. package/dist/WSPlayer/icon/screen_custom_division_hover.svg +9 -0
  79. package/dist/WSPlayer/icon/screen_custom_division_merge.svg +3 -0
  80. package/dist/WSPlayer/icon/screen_custom_division_split.svg +6 -0
  81. package/dist/WSPlayer/icon/snapshot.svg +38 -0
  82. package/dist/WSPlayer/icon/snapshot_hover.svg +38 -0
  83. package/dist/WSPlayer/icon/speed_left.svg +15 -0
  84. package/dist/WSPlayer/icon/speed_right.svg +15 -0
  85. package/dist/WSPlayer/icon/spread.png +0 -0
  86. package/dist/WSPlayer/icon/tag-left-alarm.png +0 -0
  87. package/dist/WSPlayer/icon/tag-left-normal.png +0 -0
  88. package/dist/WSPlayer/icon/tag-middle-alarm.png +0 -0
  89. package/dist/WSPlayer/icon/tag-middle-normal.png +0 -0
  90. package/dist/WSPlayer/icon/tag-right-alarm.png +0 -0
  91. package/dist/WSPlayer/icon/tag-right-normal.png +0 -0
  92. package/dist/WSPlayer/icon/talk-off-hover.svg +11 -0
  93. package/dist/WSPlayer/icon/talk-off.svg +11 -0
  94. package/dist/WSPlayer/icon/talk-on.svg +9 -0
  95. package/dist/WSPlayer/icon/voice-have.svg +43 -0
  96. package/dist/WSPlayer/icon/voice-have_hover.svg +43 -0
  97. package/dist/WSPlayer/icon/voice-null.svg +38 -0
  98. package/dist/WSPlayer/icon/voice-null_hover.svg +38 -0
  99. package/dist/WSPlayer/icon/ws-ctrl-ellipsis-hover.svg +14 -0
  100. package/dist/WSPlayer/icon/ws-ctrl-ellipsis.svg +14 -0
  101. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-b-bg.png +0 -0
  102. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-bg.png +0 -0
  103. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-l-bg.png +0 -0
  104. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-lb-bg.png +0 -0
  105. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-lt-bg.png +0 -0
  106. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-r-bg.png +0 -0
  107. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-rb-bg.png +0 -0
  108. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-rt-bg.png +0 -0
  109. package/dist/WSPlayer/icon/wsplayer-mobile-pantilt-t-bg.png +0 -0
  110. package/dist/WSPlayer/jquery-3.6.0.min.js +2 -0
  111. package/dist/WSPlayer/multiThread/libStreamClient.js +21 -0
  112. package/dist/WSPlayer/multiThread/libStreamClient.wasm +0 -0
  113. package/dist/WSPlayer/multiThread/libStreamClient.worker.js +1 -0
  114. package/dist/WSPlayer/multiThread/libplay.data +0 -0
  115. package/dist/WSPlayer/multiThread/libplay.js +1 -0
  116. package/dist/WSPlayer/multiThread/libplay.wasm +0 -0
  117. package/dist/WSPlayer/multiThread/libplay.worker.js +1 -0
  118. package/dist/WSPlayer/player.css +1490 -0
  119. package/dist/WSPlayer/singleThread/VideoDecodeWorker.js +1439 -0
  120. package/dist/WSPlayer/singleThread/libStreamClient.js +21 -0
  121. package/dist/WSPlayer/singleThread/libStreamClient.wasm +0 -0
  122. package/dist/WSPlayer/singleThread/libplay.data +0 -0
  123. package/dist/WSPlayer/singleThread/libplay.js +1 -0
  124. package/dist/WSPlayer/singleThread/libplay.wasm +0 -0
  125. package/dist/WSPlayer/window.division.css +80 -0
  126. package/dist/index.js +467 -0
  127. package/dist/locale/af.js +193 -0
  128. package/dist/locale/af.min.js +3 -0
  129. package/dist/locale/af.min.js.map +1 -0
  130. package/dist/locale/af.min.mjs +3 -0
  131. package/dist/locale/af.min.mjs.map +1 -0
  132. package/dist/locale/af.mjs +186 -0
  133. package/dist/locale/ar-eg.js +193 -0
  134. package/dist/locale/ar-eg.min.js +3 -0
  135. package/dist/locale/ar-eg.min.js.map +1 -0
  136. package/dist/locale/ar-eg.min.mjs +3 -0
  137. package/dist/locale/ar-eg.min.mjs.map +1 -0
  138. package/dist/locale/ar-eg.mjs +186 -0
  139. package/dist/locale/ar.js +193 -0
  140. package/dist/locale/ar.min.js +3 -0
  141. package/dist/locale/ar.min.js.map +1 -0
  142. package/dist/locale/ar.min.mjs +3 -0
  143. package/dist/locale/ar.min.mjs.map +1 -0
  144. package/dist/locale/ar.mjs +186 -0
  145. package/dist/locale/az.js +194 -0
  146. package/dist/locale/az.min.js +3 -0
  147. package/dist/locale/az.min.js.map +1 -0
  148. package/dist/locale/az.min.mjs +3 -0
  149. package/dist/locale/az.min.mjs.map +1 -0
  150. package/dist/locale/az.mjs +187 -0
  151. package/dist/locale/bg.js +193 -0
  152. package/dist/locale/bg.min.js +3 -0
  153. package/dist/locale/bg.min.js.map +1 -0
  154. package/dist/locale/bg.min.mjs +3 -0
  155. package/dist/locale/bg.min.mjs.map +1 -0
  156. package/dist/locale/bg.mjs +186 -0
  157. package/dist/locale/bn.js +193 -0
  158. package/dist/locale/bn.min.js +3 -0
  159. package/dist/locale/bn.min.js.map +1 -0
  160. package/dist/locale/bn.min.mjs +3 -0
  161. package/dist/locale/bn.min.mjs.map +1 -0
  162. package/dist/locale/bn.mjs +186 -0
  163. package/dist/locale/ca.js +193 -0
  164. package/dist/locale/ca.min.js +3 -0
  165. package/dist/locale/ca.min.js.map +1 -0
  166. package/dist/locale/ca.min.mjs +3 -0
  167. package/dist/locale/ca.min.mjs.map +1 -0
  168. package/dist/locale/ca.mjs +186 -0
  169. package/dist/locale/ckb.js +193 -0
  170. package/dist/locale/ckb.min.js +3 -0
  171. package/dist/locale/ckb.min.js.map +1 -0
  172. package/dist/locale/ckb.min.mjs +3 -0
  173. package/dist/locale/ckb.min.mjs.map +1 -0
  174. package/dist/locale/ckb.mjs +186 -0
  175. package/dist/locale/cs.js +195 -0
  176. package/dist/locale/cs.min.js +3 -0
  177. package/dist/locale/cs.min.js.map +1 -0
  178. package/dist/locale/cs.min.mjs +3 -0
  179. package/dist/locale/cs.min.mjs.map +1 -0
  180. package/dist/locale/cs.mjs +188 -0
  181. package/dist/locale/da.js +193 -0
  182. package/dist/locale/da.min.js +3 -0
  183. package/dist/locale/da.min.js.map +1 -0
  184. package/dist/locale/da.min.mjs +3 -0
  185. package/dist/locale/da.min.mjs.map +1 -0
  186. package/dist/locale/da.mjs +186 -0
  187. package/dist/locale/de.js +195 -0
  188. package/dist/locale/de.min.js +3 -0
  189. package/dist/locale/de.min.js.map +1 -0
  190. package/dist/locale/de.min.mjs +3 -0
  191. package/dist/locale/de.min.mjs.map +1 -0
  192. package/dist/locale/de.mjs +188 -0
  193. package/dist/locale/el.js +193 -0
  194. package/dist/locale/el.min.js +3 -0
  195. package/dist/locale/el.min.js.map +1 -0
  196. package/dist/locale/el.min.mjs +3 -0
  197. package/dist/locale/el.min.mjs.map +1 -0
  198. package/dist/locale/el.mjs +186 -0
  199. package/dist/locale/en.js +193 -0
  200. package/dist/locale/en.min.js +3 -0
  201. package/dist/locale/en.min.js.map +1 -0
  202. package/dist/locale/en.min.mjs +3 -0
  203. package/dist/locale/en.min.mjs.map +1 -0
  204. package/dist/locale/en.mjs +186 -0
  205. package/dist/locale/eo.js +193 -0
  206. package/dist/locale/eo.min.js +3 -0
  207. package/dist/locale/eo.min.js.map +1 -0
  208. package/dist/locale/eo.min.mjs +3 -0
  209. package/dist/locale/eo.min.mjs.map +1 -0
  210. package/dist/locale/eo.mjs +186 -0
  211. package/dist/locale/es.js +193 -0
  212. package/dist/locale/es.min.js +3 -0
  213. package/dist/locale/es.min.js.map +1 -0
  214. package/dist/locale/es.min.mjs +3 -0
  215. package/dist/locale/es.min.mjs.map +1 -0
  216. package/dist/locale/es.mjs +186 -0
  217. package/dist/locale/et.js +193 -0
  218. package/dist/locale/et.min.js +3 -0
  219. package/dist/locale/et.min.js.map +1 -0
  220. package/dist/locale/et.min.mjs +3 -0
  221. package/dist/locale/et.min.mjs.map +1 -0
  222. package/dist/locale/et.mjs +186 -0
  223. package/dist/locale/eu.js +193 -0
  224. package/dist/locale/eu.min.js +3 -0
  225. package/dist/locale/eu.min.js.map +1 -0
  226. package/dist/locale/eu.min.mjs +3 -0
  227. package/dist/locale/eu.min.mjs.map +1 -0
  228. package/dist/locale/eu.mjs +186 -0
  229. package/dist/locale/fa.js +193 -0
  230. package/dist/locale/fa.min.js +3 -0
  231. package/dist/locale/fa.min.js.map +1 -0
  232. package/dist/locale/fa.min.mjs +3 -0
  233. package/dist/locale/fa.min.mjs.map +1 -0
  234. package/dist/locale/fa.mjs +186 -0
  235. package/dist/locale/fi.js +193 -0
  236. package/dist/locale/fi.min.js +3 -0
  237. package/dist/locale/fi.min.js.map +1 -0
  238. package/dist/locale/fi.min.mjs +3 -0
  239. package/dist/locale/fi.min.mjs.map +1 -0
  240. package/dist/locale/fi.mjs +186 -0
  241. package/dist/locale/fr.js +193 -0
  242. package/dist/locale/fr.min.js +3 -0
  243. package/dist/locale/fr.min.js.map +1 -0
  244. package/dist/locale/fr.min.mjs +3 -0
  245. package/dist/locale/fr.min.mjs.map +1 -0
  246. package/dist/locale/fr.mjs +186 -0
  247. package/dist/locale/he.js +193 -0
  248. package/dist/locale/he.min.js +3 -0
  249. package/dist/locale/he.min.js.map +1 -0
  250. package/dist/locale/he.min.mjs +3 -0
  251. package/dist/locale/he.min.mjs.map +1 -0
  252. package/dist/locale/he.mjs +186 -0
  253. package/dist/locale/hi.js +193 -0
  254. package/dist/locale/hi.min.js +3 -0
  255. package/dist/locale/hi.min.js.map +1 -0
  256. package/dist/locale/hi.min.mjs +3 -0
  257. package/dist/locale/hi.min.mjs.map +1 -0
  258. package/dist/locale/hi.mjs +186 -0
  259. package/dist/locale/hr.js +193 -0
  260. package/dist/locale/hr.min.js +3 -0
  261. package/dist/locale/hr.min.js.map +1 -0
  262. package/dist/locale/hr.min.mjs +3 -0
  263. package/dist/locale/hr.min.mjs.map +1 -0
  264. package/dist/locale/hr.mjs +186 -0
  265. package/dist/locale/hu.js +193 -0
  266. package/dist/locale/hu.min.js +3 -0
  267. package/dist/locale/hu.min.js.map +1 -0
  268. package/dist/locale/hu.min.mjs +3 -0
  269. package/dist/locale/hu.min.mjs.map +1 -0
  270. package/dist/locale/hu.mjs +186 -0
  271. package/dist/locale/hy-am.js +193 -0
  272. package/dist/locale/hy-am.min.js +3 -0
  273. package/dist/locale/hy-am.min.js.map +1 -0
  274. package/dist/locale/hy-am.min.mjs +3 -0
  275. package/dist/locale/hy-am.min.mjs.map +1 -0
  276. package/dist/locale/hy-am.mjs +186 -0
  277. package/dist/locale/id.js +193 -0
  278. package/dist/locale/id.min.js +3 -0
  279. package/dist/locale/id.min.js.map +1 -0
  280. package/dist/locale/id.min.mjs +3 -0
  281. package/dist/locale/id.min.mjs.map +1 -0
  282. package/dist/locale/id.mjs +186 -0
  283. package/dist/locale/it.js +193 -0
  284. package/dist/locale/it.min.js +3 -0
  285. package/dist/locale/it.min.js.map +1 -0
  286. package/dist/locale/it.min.mjs +3 -0
  287. package/dist/locale/it.min.mjs.map +1 -0
  288. package/dist/locale/it.mjs +186 -0
  289. package/dist/locale/ja.js +193 -0
  290. package/dist/locale/ja.min.js +3 -0
  291. package/dist/locale/ja.min.js.map +1 -0
  292. package/dist/locale/ja.min.mjs +3 -0
  293. package/dist/locale/ja.min.mjs.map +1 -0
  294. package/dist/locale/ja.mjs +186 -0
  295. package/dist/locale/kk.js +193 -0
  296. package/dist/locale/kk.min.js +3 -0
  297. package/dist/locale/kk.min.js.map +1 -0
  298. package/dist/locale/kk.min.mjs +3 -0
  299. package/dist/locale/kk.min.mjs.map +1 -0
  300. package/dist/locale/kk.mjs +186 -0
  301. package/dist/locale/km.js +193 -0
  302. package/dist/locale/km.min.js +3 -0
  303. package/dist/locale/km.min.js.map +1 -0
  304. package/dist/locale/km.min.mjs +3 -0
  305. package/dist/locale/km.min.mjs.map +1 -0
  306. package/dist/locale/km.mjs +186 -0
  307. package/dist/locale/ko.js +193 -0
  308. package/dist/locale/ko.min.js +3 -0
  309. package/dist/locale/ko.min.js.map +1 -0
  310. package/dist/locale/ko.min.mjs +3 -0
  311. package/dist/locale/ko.min.mjs.map +1 -0
  312. package/dist/locale/ko.mjs +186 -0
  313. package/dist/locale/ku.js +193 -0
  314. package/dist/locale/ku.min.js +3 -0
  315. package/dist/locale/ku.min.js.map +1 -0
  316. package/dist/locale/ku.min.mjs +3 -0
  317. package/dist/locale/ku.min.mjs.map +1 -0
  318. package/dist/locale/ku.mjs +186 -0
  319. package/dist/locale/ky.js +193 -0
  320. package/dist/locale/ky.min.js +3 -0
  321. package/dist/locale/ky.min.js.map +1 -0
  322. package/dist/locale/ky.min.mjs +3 -0
  323. package/dist/locale/ky.min.mjs.map +1 -0
  324. package/dist/locale/ky.mjs +186 -0
  325. package/dist/locale/lo.js +193 -0
  326. package/dist/locale/lo.min.js +3 -0
  327. package/dist/locale/lo.min.js.map +1 -0
  328. package/dist/locale/lo.min.mjs +3 -0
  329. package/dist/locale/lo.min.mjs.map +1 -0
  330. package/dist/locale/lo.mjs +186 -0
  331. package/dist/locale/lt.js +193 -0
  332. package/dist/locale/lt.min.js +3 -0
  333. package/dist/locale/lt.min.js.map +1 -0
  334. package/dist/locale/lt.min.mjs +3 -0
  335. package/dist/locale/lt.min.mjs.map +1 -0
  336. package/dist/locale/lt.mjs +186 -0
  337. package/dist/locale/lv.js +193 -0
  338. package/dist/locale/lv.min.js +3 -0
  339. package/dist/locale/lv.min.js.map +1 -0
  340. package/dist/locale/lv.min.mjs +3 -0
  341. package/dist/locale/lv.min.mjs.map +1 -0
  342. package/dist/locale/lv.mjs +186 -0
  343. package/dist/locale/mg.js +193 -0
  344. package/dist/locale/mg.min.js +3 -0
  345. package/dist/locale/mg.min.js.map +1 -0
  346. package/dist/locale/mg.min.mjs +3 -0
  347. package/dist/locale/mg.min.mjs.map +1 -0
  348. package/dist/locale/mg.mjs +186 -0
  349. package/dist/locale/mn.js +193 -0
  350. package/dist/locale/mn.min.js +3 -0
  351. package/dist/locale/mn.min.js.map +1 -0
  352. package/dist/locale/mn.min.mjs +3 -0
  353. package/dist/locale/mn.min.mjs.map +1 -0
  354. package/dist/locale/mn.mjs +186 -0
  355. package/dist/locale/ms.js +195 -0
  356. package/dist/locale/ms.min.js +3 -0
  357. package/dist/locale/ms.min.js.map +1 -0
  358. package/dist/locale/ms.min.mjs +3 -0
  359. package/dist/locale/ms.min.mjs.map +1 -0
  360. package/dist/locale/ms.mjs +188 -0
  361. package/dist/locale/my.js +193 -0
  362. package/dist/locale/my.min.js +3 -0
  363. package/dist/locale/my.min.js.map +1 -0
  364. package/dist/locale/my.min.mjs +3 -0
  365. package/dist/locale/my.min.mjs.map +1 -0
  366. package/dist/locale/my.mjs +186 -0
  367. package/dist/locale/nb-no.js +193 -0
  368. package/dist/locale/nb-no.min.js +3 -0
  369. package/dist/locale/nb-no.min.js.map +1 -0
  370. package/dist/locale/nb-no.min.mjs +3 -0
  371. package/dist/locale/nb-no.min.mjs.map +1 -0
  372. package/dist/locale/nb-no.mjs +186 -0
  373. package/dist/locale/nl.js +193 -0
  374. package/dist/locale/nl.min.js +3 -0
  375. package/dist/locale/nl.min.js.map +1 -0
  376. package/dist/locale/nl.min.mjs +3 -0
  377. package/dist/locale/nl.min.mjs.map +1 -0
  378. package/dist/locale/nl.mjs +186 -0
  379. package/dist/locale/no.js +193 -0
  380. package/dist/locale/no.min.js +3 -0
  381. package/dist/locale/no.min.js.map +1 -0
  382. package/dist/locale/no.min.mjs +3 -0
  383. package/dist/locale/no.min.mjs.map +1 -0
  384. package/dist/locale/no.mjs +186 -0
  385. package/dist/locale/pa.js +193 -0
  386. package/dist/locale/pa.min.js +3 -0
  387. package/dist/locale/pa.min.js.map +1 -0
  388. package/dist/locale/pa.min.mjs +3 -0
  389. package/dist/locale/pa.min.mjs.map +1 -0
  390. package/dist/locale/pa.mjs +186 -0
  391. package/dist/locale/pl.js +193 -0
  392. package/dist/locale/pl.min.js +3 -0
  393. package/dist/locale/pl.min.js.map +1 -0
  394. package/dist/locale/pl.min.mjs +3 -0
  395. package/dist/locale/pl.min.mjs.map +1 -0
  396. package/dist/locale/pl.mjs +186 -0
  397. package/dist/locale/pt-br.js +193 -0
  398. package/dist/locale/pt-br.min.js +3 -0
  399. package/dist/locale/pt-br.min.js.map +1 -0
  400. package/dist/locale/pt-br.min.mjs +3 -0
  401. package/dist/locale/pt-br.min.mjs.map +1 -0
  402. package/dist/locale/pt-br.mjs +186 -0
  403. package/dist/locale/pt.js +193 -0
  404. package/dist/locale/pt.min.js +3 -0
  405. package/dist/locale/pt.min.js.map +1 -0
  406. package/dist/locale/pt.min.mjs +3 -0
  407. package/dist/locale/pt.min.mjs.map +1 -0
  408. package/dist/locale/pt.mjs +186 -0
  409. package/dist/locale/ro.js +193 -0
  410. package/dist/locale/ro.min.js +3 -0
  411. package/dist/locale/ro.min.js.map +1 -0
  412. package/dist/locale/ro.min.mjs +3 -0
  413. package/dist/locale/ro.min.mjs.map +1 -0
  414. package/dist/locale/ro.mjs +186 -0
  415. package/dist/locale/ru.js +193 -0
  416. package/dist/locale/ru.min.js +3 -0
  417. package/dist/locale/ru.min.js.map +1 -0
  418. package/dist/locale/ru.min.mjs +3 -0
  419. package/dist/locale/ru.min.mjs.map +1 -0
  420. package/dist/locale/ru.mjs +186 -0
  421. package/dist/locale/sk.js +195 -0
  422. package/dist/locale/sk.min.js +3 -0
  423. package/dist/locale/sk.min.js.map +1 -0
  424. package/dist/locale/sk.min.mjs +3 -0
  425. package/dist/locale/sk.min.mjs.map +1 -0
  426. package/dist/locale/sk.mjs +188 -0
  427. package/dist/locale/sl.js +193 -0
  428. package/dist/locale/sl.min.js +3 -0
  429. package/dist/locale/sl.min.js.map +1 -0
  430. package/dist/locale/sl.min.mjs +3 -0
  431. package/dist/locale/sl.min.mjs.map +1 -0
  432. package/dist/locale/sl.mjs +186 -0
  433. package/dist/locale/sr.js +193 -0
  434. package/dist/locale/sr.min.js +3 -0
  435. package/dist/locale/sr.min.js.map +1 -0
  436. package/dist/locale/sr.min.mjs +3 -0
  437. package/dist/locale/sr.min.mjs.map +1 -0
  438. package/dist/locale/sr.mjs +186 -0
  439. package/dist/locale/sv.js +193 -0
  440. package/dist/locale/sv.min.js +3 -0
  441. package/dist/locale/sv.min.js.map +1 -0
  442. package/dist/locale/sv.min.mjs +3 -0
  443. package/dist/locale/sv.min.mjs.map +1 -0
  444. package/dist/locale/sv.mjs +186 -0
  445. package/dist/locale/sw.js +193 -0
  446. package/dist/locale/sw.min.js +3 -0
  447. package/dist/locale/sw.min.js.map +1 -0
  448. package/dist/locale/sw.min.mjs +3 -0
  449. package/dist/locale/sw.min.mjs.map +1 -0
  450. package/dist/locale/sw.mjs +186 -0
  451. package/dist/locale/ta.js +193 -0
  452. package/dist/locale/ta.min.js +3 -0
  453. package/dist/locale/ta.min.js.map +1 -0
  454. package/dist/locale/ta.min.mjs +3 -0
  455. package/dist/locale/ta.min.mjs.map +1 -0
  456. package/dist/locale/ta.mjs +186 -0
  457. package/dist/locale/te.js +193 -0
  458. package/dist/locale/te.min.js +3 -0
  459. package/dist/locale/te.min.js.map +1 -0
  460. package/dist/locale/te.min.mjs +3 -0
  461. package/dist/locale/te.min.mjs.map +1 -0
  462. package/dist/locale/te.mjs +186 -0
  463. package/dist/locale/th.js +193 -0
  464. package/dist/locale/th.min.js +3 -0
  465. package/dist/locale/th.min.js.map +1 -0
  466. package/dist/locale/th.min.mjs +3 -0
  467. package/dist/locale/th.min.mjs.map +1 -0
  468. package/dist/locale/th.mjs +186 -0
  469. package/dist/locale/tk.js +193 -0
  470. package/dist/locale/tk.min.js +3 -0
  471. package/dist/locale/tk.min.js.map +1 -0
  472. package/dist/locale/tk.min.mjs +3 -0
  473. package/dist/locale/tk.min.mjs.map +1 -0
  474. package/dist/locale/tk.mjs +186 -0
  475. package/dist/locale/tr.js +193 -0
  476. package/dist/locale/tr.min.js +3 -0
  477. package/dist/locale/tr.min.js.map +1 -0
  478. package/dist/locale/tr.min.mjs +3 -0
  479. package/dist/locale/tr.min.mjs.map +1 -0
  480. package/dist/locale/tr.mjs +186 -0
  481. package/dist/locale/ug-cn.js +193 -0
  482. package/dist/locale/ug-cn.min.js +3 -0
  483. package/dist/locale/ug-cn.min.js.map +1 -0
  484. package/dist/locale/ug-cn.min.mjs +3 -0
  485. package/dist/locale/ug-cn.min.mjs.map +1 -0
  486. package/dist/locale/ug-cn.mjs +186 -0
  487. package/dist/locale/uk.js +193 -0
  488. package/dist/locale/uk.min.js +3 -0
  489. package/dist/locale/uk.min.js.map +1 -0
  490. package/dist/locale/uk.min.mjs +3 -0
  491. package/dist/locale/uk.min.mjs.map +1 -0
  492. package/dist/locale/uk.mjs +186 -0
  493. package/dist/locale/uz-uz.js +193 -0
  494. package/dist/locale/uz-uz.min.js +3 -0
  495. package/dist/locale/uz-uz.min.js.map +1 -0
  496. package/dist/locale/uz-uz.min.mjs +3 -0
  497. package/dist/locale/uz-uz.min.mjs.map +1 -0
  498. package/dist/locale/uz-uz.mjs +186 -0
  499. package/dist/locale/vi.js +193 -0
  500. package/dist/locale/vi.min.js +3 -0
  501. package/dist/locale/vi.min.js.map +1 -0
  502. package/dist/locale/vi.min.mjs +3 -0
  503. package/dist/locale/vi.min.mjs.map +1 -0
  504. package/dist/locale/vi.mjs +186 -0
  505. package/dist/locale/zh-cn.js +193 -0
  506. package/dist/locale/zh-cn.min.js +3 -0
  507. package/dist/locale/zh-cn.min.js.map +1 -0
  508. package/dist/locale/zh-cn.min.mjs +3 -0
  509. package/dist/locale/zh-cn.min.mjs.map +1 -0
  510. package/dist/locale/zh-cn.mjs +186 -0
  511. package/dist/locale/zh-hk.js +193 -0
  512. package/dist/locale/zh-hk.min.js +3 -0
  513. package/dist/locale/zh-hk.min.js.map +1 -0
  514. package/dist/locale/zh-hk.min.mjs +3 -0
  515. package/dist/locale/zh-hk.min.mjs.map +1 -0
  516. package/dist/locale/zh-hk.mjs +186 -0
  517. package/dist/locale/zh-mo.js +193 -0
  518. package/dist/locale/zh-mo.min.js +3 -0
  519. package/dist/locale/zh-mo.min.js.map +1 -0
  520. package/dist/locale/zh-mo.min.mjs +3 -0
  521. package/dist/locale/zh-mo.min.mjs.map +1 -0
  522. package/dist/locale/zh-mo.mjs +186 -0
  523. package/dist/locale/zh-tw.js +193 -0
  524. package/dist/locale/zh-tw.min.js +3 -0
  525. package/dist/locale/zh-tw.min.js.map +1 -0
  526. package/dist/locale/zh-tw.min.mjs +3 -0
  527. package/dist/locale/zh-tw.min.mjs.map +1 -0
  528. package/dist/locale/zh-tw.mjs +186 -0
  529. package/dist/style.css +1 -1
  530. package/dist/test/demo.docx +0 -0
  531. package/dist/test/demo.et +0 -0
  532. package/dist/test/demo.ofd +0 -0
  533. package/dist/test/demo.pdf +0 -0
  534. package/dist/test/test.ofd +0 -0
  535. package/dist/test/unzip.ofd +0 -0
  536. package/dist/test/zip.ofd +0 -0
  537. package/dist/types/auto-imports.d.ts +9 -0
  538. package/dist/types/components.d.ts +55 -0
  539. package/dist/zhui-plus.cjs.js +1 -0
  540. package/dist/zhui-plus.es.js +2 -0
  541. package/dist/zhui.svg +1 -0
  542. package/package.json +90 -4
  543. package/packages/components/AI/index.ts +10 -0
  544. package/packages/components/AI/src/zh-aiChat.vue +841 -0
  545. package/packages/components/badge/__tests__/badge.test.ts +38 -0
  546. package/packages/components/badge/index.ts +10 -0
  547. package/packages/components/badge/src/zh-badge.vue +86 -0
  548. package/packages/components/badge/style.scss +1 -0
  549. package/packages/components/button/__tests__/button.test.ts +94 -0
  550. package/packages/components/button/__tests__/buttonGroup.test.ts +46 -0
  551. package/packages/components/button/index.ts +11 -0
  552. package/packages/components/button/src/zh-button-group.vue +50 -0
  553. package/packages/components/button/src/zh-button.vue +152 -0
  554. package/packages/components/button/style/index.css +140 -0
  555. package/packages/components/charts/geo.json +11147 -0
  556. package/packages/components/charts/index.ts +35 -0
  557. package/packages/components/charts/src/zh-barChart.vue +97 -0
  558. package/packages/components/charts/src/zh-baseChart.vue +196 -0
  559. package/packages/components/charts/src/zh-lineBarChart.vue +113 -0
  560. package/packages/components/charts/src/zh-lineChart.vue +93 -0
  561. package/packages/components/charts/src/zh-mapChart.vue +214 -0
  562. package/packages/components/charts/src/zh-pictorialBar.vue +72 -0
  563. package/packages/components/charts/src/zh-pieChart.vue +67 -0
  564. package/packages/components/charts/src/zh-radarChart.vue +131 -0
  565. package/packages/components/charts/src/zh-scatterChart.vue +152 -0
  566. package/packages/components/chat/index.ts +10 -0
  567. package/packages/components/chat/src/zh-chat.vue +889 -0
  568. package/packages/components/container/index.ts +18 -0
  569. package/packages/components/container/src/zh-aside.vue +34 -0
  570. package/packages/components/container/src/zh-container.vue +45 -0
  571. package/packages/components/container/src/zh-footer.vue +33 -0
  572. package/packages/components/container/src/zh-header.vue +34 -0
  573. package/packages/components/container/src/zh-main.vue +26 -0
  574. package/packages/components/directive/focus.ts +14 -0
  575. package/packages/components/directive/idCard.ts +12 -0
  576. package/packages/components/directive/index.ts +19 -0
  577. package/packages/components/directive/number.ts +10 -0
  578. package/packages/components/directive/permission.ts +57 -0
  579. package/packages/components/directive/phone.ts +12 -0
  580. package/packages/components/drawer/index.ts +10 -0
  581. package/packages/components/drawer/src/zh-drawer.vue +78 -0
  582. package/packages/components/drawer/style/animation.scss +35 -0
  583. package/packages/components/drawer/style/index.scss +52 -0
  584. package/packages/components/drawer/style/media.scss +6 -0
  585. package/packages/components/fileViewer/index.ts +9 -0
  586. package/packages/components/fileViewer/src/liteofd/annotLayer.ts +203 -0
  587. package/packages/components/fileViewer/src/liteofd/asn1js/LICENSE +15 -0
  588. package/packages/components/fileViewer/src/liteofd/asn1js/README.md +108 -0
  589. package/packages/components/fileViewer/src/liteofd/asn1js/asn1.js +627 -0
  590. package/packages/components/fileViewer/src/liteofd/asn1js/base64.js +103 -0
  591. package/packages/components/fileViewer/src/liteofd/asn1js/defs.js +138 -0
  592. package/packages/components/fileViewer/src/liteofd/asn1js/dumpASN1.js +79 -0
  593. package/packages/components/fileViewer/src/liteofd/asn1js/hex.js +69 -0
  594. package/packages/components/fileViewer/src/liteofd/asn1js/int10.js +106 -0
  595. package/packages/components/fileViewer/src/liteofd/asn1js/oids.js +2725 -0
  596. package/packages/components/fileViewer/src/liteofd/asn1js/rfcdef.js +10377 -0
  597. package/packages/components/fileViewer/src/liteofd/attrType.ts +173 -0
  598. package/packages/components/fileViewer/src/liteofd/contentLayer.ts +203 -0
  599. package/packages/components/fileViewer/src/liteofd/elements/AnnotationPathSvg.ts +122 -0
  600. package/packages/components/fileViewer/src/liteofd/elements/BaseSvg.ts +6 -0
  601. package/packages/components/fileViewer/src/liteofd/elements/ImageSvg.ts +212 -0
  602. package/packages/components/fileViewer/src/liteofd/elements/PathSvg.ts +460 -0
  603. package/packages/components/fileViewer/src/liteofd/elements/SignatureElement.ts +231 -0
  604. package/packages/components/fileViewer/src/liteofd/elements/TextSvg.ts +235 -0
  605. package/packages/components/fileViewer/src/liteofd/elements/ofdAnnotationElement.ts +133 -0
  606. package/packages/components/fileViewer/src/liteofd/elements/ofdPageContainer.ts +183 -0
  607. package/packages/components/fileViewer/src/liteofd/elements/ofdPageRender.ts +71 -0
  608. package/packages/components/fileViewer/src/liteofd/elements/signObject.json +10084 -0
  609. package/packages/components/fileViewer/src/liteofd/elements/signature.json +381 -0
  610. package/packages/components/fileViewer/src/liteofd/font/arithmetic_decoder.js +182 -0
  611. package/packages/components/fileViewer/src/liteofd/font/ascii_85_stream.js +98 -0
  612. package/packages/components/fileViewer/src/liteofd/font/ascii_hex_stream.js +79 -0
  613. package/packages/components/fileViewer/src/liteofd/font/base_stream.js +110 -0
  614. package/packages/components/fileViewer/src/liteofd/font/bidi.js +440 -0
  615. package/packages/components/fileViewer/src/liteofd/font/binary_cmap.js +326 -0
  616. package/packages/components/fileViewer/src/liteofd/font/calibri_factors.js +309 -0
  617. package/packages/components/fileViewer/src/liteofd/font/ccitt.js +1059 -0
  618. package/packages/components/fileViewer/src/liteofd/font/ccitt_stream.js +60 -0
  619. package/packages/components/fileViewer/src/liteofd/font/cff_font.js +139 -0
  620. package/packages/components/fileViewer/src/liteofd/font/cff_parser.js +1940 -0
  621. package/packages/components/fileViewer/src/liteofd/font/charsets.js +119 -0
  622. package/packages/components/fileViewer/src/liteofd/font/chunked_stream.js +94 -0
  623. package/packages/components/fileViewer/src/liteofd/font/cmap.js +726 -0
  624. package/packages/components/fileViewer/src/liteofd/font/colorspace.js +1336 -0
  625. package/packages/components/fileViewer/src/liteofd/font/core_utils.js +636 -0
  626. package/packages/components/fileViewer/src/liteofd/font/decode_stream.js +177 -0
  627. package/packages/components/fileViewer/src/liteofd/font/differences.js +906 -0
  628. package/packages/components/fileViewer/src/liteofd/font/encodings.js +301 -0
  629. package/packages/components/fileViewer/src/liteofd/font/flate_stream.js +413 -0
  630. package/packages/components/fileViewer/src/liteofd/font/font_loader.js +455 -0
  631. package/packages/components/fileViewer/src/liteofd/font/font_renderer.js +900 -0
  632. package/packages/components/fileViewer/src/liteofd/font/font_substitutions.js +553 -0
  633. package/packages/components/fileViewer/src/liteofd/font/fonts copy.js +3391 -0
  634. package/packages/components/fileViewer/src/liteofd/font/fonts.js +3585 -0
  635. package/packages/components/fileViewer/src/liteofd/font/fonts_utils.js +178 -0
  636. package/packages/components/fileViewer/src/liteofd/font/function.js +1241 -0
  637. package/packages/components/fileViewer/src/liteofd/font/glyf.js +701 -0
  638. package/packages/components/fileViewer/src/liteofd/font/glyphlist.js +4557 -0
  639. package/packages/components/fileViewer/src/liteofd/font/helvetica_factors.js +352 -0
  640. package/packages/components/fileViewer/src/liteofd/font/image.js +986 -0
  641. package/packages/components/fileViewer/src/liteofd/font/image_resizer.js +398 -0
  642. package/packages/components/fileViewer/src/liteofd/font/image_utils.js +286 -0
  643. package/packages/components/fileViewer/src/liteofd/font/jbig2_stream.js +74 -0
  644. package/packages/components/fileViewer/src/liteofd/font/jpeg_stream.js +106 -0
  645. package/packages/components/fileViewer/src/liteofd/font/jpg.js +1590 -0
  646. package/packages/components/fileViewer/src/liteofd/font/jpx.js +2349 -0
  647. package/packages/components/fileViewer/src/liteofd/font/jpx_stream.js +87 -0
  648. package/packages/components/fileViewer/src/liteofd/font/liberationsans_widths.js +429 -0
  649. package/packages/components/fileViewer/src/liteofd/font/lzw_stream.js +150 -0
  650. package/packages/components/fileViewer/src/liteofd/font/metrics.d.ts +1 -0
  651. package/packages/components/fileViewer/src/liteofd/font/metrics.js +3057 -0
  652. package/packages/components/fileViewer/src/liteofd/font/murmurhash3.js +135 -0
  653. package/packages/components/fileViewer/src/liteofd/font/myriadpro_factors.js +291 -0
  654. package/packages/components/fileViewer/src/liteofd/font/ofd_stream.js +402 -0
  655. package/packages/components/fileViewer/src/liteofd/font/opentype_file_builder.js +154 -0
  656. package/packages/components/fileViewer/src/liteofd/font/parser.js +1409 -0
  657. package/packages/components/fileViewer/src/liteofd/font/pattern.js +1005 -0
  658. package/packages/components/fileViewer/src/liteofd/font/predictor_stream.js +234 -0
  659. package/packages/components/fileViewer/src/liteofd/font/primitives.js +354 -0
  660. package/packages/components/fileViewer/src/liteofd/font/properties.json +2110 -0
  661. package/packages/components/fileViewer/src/liteofd/font/ps_parser.js +268 -0
  662. package/packages/components/fileViewer/src/liteofd/font/run_length_stream.js +61 -0
  663. package/packages/components/fileViewer/src/liteofd/font/segoeui_factors.js +308 -0
  664. package/packages/components/fileViewer/src/liteofd/font/standard_fonts.js +915 -0
  665. package/packages/components/fileViewer/src/liteofd/font/stream.js +99 -0
  666. package/packages/components/fileViewer/src/liteofd/font/to_unicode_map.js +111 -0
  667. package/packages/components/fileViewer/src/liteofd/font/translatedFont.js +3125 -0
  668. package/packages/components/fileViewer/src/liteofd/font/type1_font.js +443 -0
  669. package/packages/components/fileViewer/src/liteofd/font/type1_parser.js +804 -0
  670. package/packages/components/fileViewer/src/liteofd/font/unicode.js +274 -0
  671. package/packages/components/fileViewer/src/liteofd/font/util.js +1159 -0
  672. package/packages/components/fileViewer/src/liteofd/font/xfa_fonts.js +296 -0
  673. package/packages/components/fileViewer/src/liteofd/jbig2/arithmetic_decoder.js +183 -0
  674. package/packages/components/fileViewer/src/liteofd/jbig2/ccitt.js +1070 -0
  675. package/packages/components/fileViewer/src/liteofd/jbig2/core_utils.js +180 -0
  676. package/packages/components/fileViewer/src/liteofd/jbig2/is_node.js +27 -0
  677. package/packages/components/fileViewer/src/liteofd/jbig2/jbig2.js +2589 -0
  678. package/packages/components/fileViewer/src/liteofd/jbig2/jbig2_stream.js +81 -0
  679. package/packages/components/fileViewer/src/liteofd/jbig2/primitives.js +371 -0
  680. package/packages/components/fileViewer/src/liteofd/jbig2/stream.js +1348 -0
  681. package/packages/components/fileViewer/src/liteofd/jbig2/util.js +970 -0
  682. package/packages/components/fileViewer/src/liteofd/layer.ts +12 -0
  683. package/packages/components/fileViewer/src/liteofd/liteOfd.ts +185 -0
  684. package/packages/components/fileViewer/src/liteofd/ofdActions.ts +29 -0
  685. package/packages/components/fileViewer/src/liteofd/ofdCanvas.ts +19 -0
  686. package/packages/components/fileViewer/src/liteofd/ofdData.ts +28 -0
  687. package/packages/components/fileViewer/src/liteofd/ofdDocument.ts +109 -0
  688. package/packages/components/fileViewer/src/liteofd/ofdFont.ts +425 -0
  689. package/packages/components/fileViewer/src/liteofd/ofdRender.ts +259 -0
  690. package/packages/components/fileViewer/src/liteofd/ofdWriter.ts +142 -0
  691. package/packages/components/fileViewer/src/liteofd/ofdtools.ts +43 -0
  692. package/packages/components/fileViewer/src/liteofd/parser.ts +499 -0
  693. package/packages/components/fileViewer/src/liteofd/promiseCapability.ts +47 -0
  694. package/packages/components/fileViewer/src/liteofd/utils/commonFont.ts +15 -0
  695. package/packages/components/fileViewer/src/liteofd/utils/elementUtils.ts +362 -0
  696. package/packages/components/fileViewer/src/liteofd/utils/jsonToXml.ts +95 -0
  697. package/packages/components/fileViewer/src/liteofd/utils/ofdUtils.ts +301 -0
  698. package/packages/components/fileViewer/src/liteofd/utils/signatureUtil.ts +246 -0
  699. package/packages/components/fileViewer/src/liteofd/utils/sm3.ts +235 -0
  700. package/packages/components/fileViewer/src/liteofd/utils/utils.ts +489 -0
  701. package/packages/components/fileViewer/src/liteofd/utils/verify_signature_util.ts +41 -0
  702. package/packages/components/fileViewer/src/ofd/CircleLoading.vue +64 -0
  703. package/packages/components/fileViewer/src/ofd/OfdPreview.vue +456 -0
  704. package/packages/components/fileViewer/src/ofd/OfdViewer.vue +211 -0
  705. package/packages/components/fileViewer/src/ofd/PageIndicator.vue +88 -0
  706. package/packages/components/fileViewer/src/ofd/RatioIndicator.vue +271 -0
  707. package/packages/components/fileViewer/src/ofd/ToolTip.vue +81 -0
  708. package/packages/components/fileViewer/src/zh-fileViewer.vue +426 -0
  709. package/packages/components/form/index.ts +11 -0
  710. package/packages/components/form/src/zh-form-item.vue +299 -0
  711. package/packages/components/form/src/zh-form.vue +90 -0
  712. package/packages/components/hideNumber/index.ts +9 -0
  713. package/packages/components/hideNumber/src/zh-hide-number.vue +37 -0
  714. package/packages/components/icon/index.ts +10 -0
  715. package/packages/components/icon/src/zh-icon.vue +32 -0
  716. package/packages/components/image/index.ts +9 -0
  717. package/packages/components/image/src/zh-image.vue +245 -0
  718. package/packages/components/index.ts +112 -0
  719. package/packages/components/input/index.ts +10 -0
  720. package/packages/components/input/src/input.com.ts +30 -0
  721. package/packages/components/input/src/input.type.ts +1 -0
  722. package/packages/components/input/src/zh-input.vue +92 -0
  723. package/packages/components/input/style/index.scss +30 -0
  724. package/packages/components/layout/index.ts +12 -0
  725. package/packages/components/layout/src/zh-col.tsx +81 -0
  726. package/packages/components/layout/src/zh-row.tsx +58 -0
  727. package/packages/components/layout/style/row.scss +6 -0
  728. package/packages/components/map/index.ts +18 -0
  729. package/packages/components/map/src/zh-amap.vue +999 -0
  730. package/packages/components/map/src/zh-bmap.vue +1578 -0
  731. package/packages/components/map/src/zh-omap.vue +1522 -0
  732. package/packages/components/map/src/zh-smap.vue +1555 -0
  733. package/packages/components/map/src/zh-tmap.vue +1058 -0
  734. package/packages/components/message/index.ts +8 -0
  735. package/packages/components/message/src/data.com.ts +61 -0
  736. package/packages/components/message/src/message-icon.vue +60 -0
  737. package/packages/components/message/src/message.ts +89 -0
  738. package/packages/components/message/src/message.type.ts +40 -0
  739. package/packages/components/message/src/zh-message.vue +133 -0
  740. package/packages/components/message-box/index.ts +12 -0
  741. package/packages/components/message-box/src/messageBox.help.ts +40 -0
  742. package/packages/components/message-box/src/messageBox.ts +126 -0
  743. package/packages/components/message-box/src/zh-message-box.vue +94 -0
  744. package/packages/components/message-box/style/index.css +29 -0
  745. package/packages/components/noData/index.ts +9 -0
  746. package/packages/components/noData/src/zh-no-data.vue +42 -0
  747. package/packages/components/operationColumn/index.ts +9 -0
  748. package/packages/components/operationColumn/src/zh-operationColumn.vue +113 -0
  749. package/packages/components/provider/index.ts +11 -0
  750. package/packages/components/provider/src/zh-authControl.vue +28 -0
  751. package/packages/components/provider/src/zh-authProvider.vue +36 -0
  752. package/packages/components/qrcode/index.ts +9 -0
  753. package/packages/components/qrcode/src/zh-qrcode.vue +271 -0
  754. package/packages/components/radio/index.ts +10 -0
  755. package/packages/components/radio/src/zh-radio.vue +86 -0
  756. package/packages/components/searchForm/index.ts +9 -0
  757. package/packages/components/searchForm/src/zh-search-form.vue +340 -0
  758. package/packages/components/signature/index.ts +10 -0
  759. package/packages/components/signature/src/zh-signature.vue +355 -0
  760. package/packages/components/switch/index.ts +10 -0
  761. package/packages/components/switch/src/zh-switch.vue +162 -0
  762. package/packages/components/table/index.ts +10 -0
  763. package/packages/components/table/src/types.ts +62 -0
  764. package/packages/components/table/src/zh-table.vue +220 -0
  765. package/packages/components/upload/index.ts +15 -0
  766. package/packages/components/upload/src/zh-cupload.vue +147 -0
  767. package/packages/components/upload/src/zh-upload.vue +258 -0
  768. package/packages/components/upload/src/zh-uploadCard.vue +176 -0
  769. package/packages/components/upload/src/zh-uploadDialog.vue +165 -0
  770. package/packages/components/videoPlayer/index.ts +12 -0
  771. package/packages/components/videoPlayer/src/PlayerManager.js +706 -0
  772. package/packages/components/videoPlayer/src/api.js +354 -0
  773. package/packages/components/videoPlayer/src/errorHandler.ts +39 -0
  774. package/packages/components/videoPlayer/src/resourceLoader.ts +68 -0
  775. package/packages/components/videoPlayer/src/useDahuaPlayer.ts +242 -0
  776. package/packages/components/videoPlayer/src/zh-dhPlayer.vue +119 -0
  777. package/packages/components/videoPlayer/src/zh-hlsPlayer.vue +575 -0
  778. package/packages/resolver/index.ts +324 -0
  779. package/packages/styles/_element.scss +324 -0
  780. package/packages/styles/_variable.scss +136 -0
  781. package/packages/styles/index.scss +3 -0
  782. package/packages/tokens/tokens.ts +2 -0
  783. package/packages/types/form.ts +205 -0
  784. package/packages/types/index.ts +4 -0
  785. package/packages/types/player.ts +80 -0
  786. package/packages/types/provider.ts +4 -0
  787. package/packages/types/searchForm.ts +24 -0
  788. package/packages/utils/common/__tests__/common.test.ts +12 -0
  789. package/packages/utils/common/common.ts +68 -0
  790. package/packages/utils/constant.ts +12 -0
  791. package/packages/utils/copy.ts +20 -0
  792. package/packages/utils/data.ts +62 -0
  793. package/packages/utils/echarts/echarts.ts +34 -0
  794. package/packages/utils/event.ts +37 -0
  795. package/packages/utils/hooks/__tests__/hooks.test.ts +24 -0
  796. package/packages/utils/hooks/data.ts +100 -0
  797. package/packages/utils/hooks/hooks.util.ts +39 -0
  798. package/packages/utils/hooks/index.ts +1 -0
  799. package/packages/utils/hooks/useBreakpoint.ts +89 -0
  800. package/packages/utils/hooks/useEcharts.ts +56 -0
  801. package/packages/utils/hooks/useEventListener.ts +57 -0
  802. package/packages/utils/hooks/useLegendProcessor.ts +92 -0
  803. package/packages/utils/hooks/usePermission.ts +22 -0
  804. package/packages/utils/hooks/useTimeout.ts +45 -0
  805. package/packages/utils/is.ts +79 -0
  806. package/packages/utils/utils.ts +136 -0
  807. package/packages/utils/vue/util-modal.vue +61 -0
  808. package/types/auto-imports.d.ts +9 -0
  809. package/types/component.d.ts +6 -0
  810. package/types/components.d.ts +131 -0
  811. package/types/defaults.d.ts +5 -0
  812. package/types/el-components.d.ts +23 -0
  813. package/types/global.d.ts +130 -0
  814. package/types/index.d.ts +11 -0
  815. package/types/zh-components.d.ts +23 -0
  816. package/types/zhui.d.ts +76 -0
  817. package/.idea/workspace.xml +0 -72
  818. package/README.md +0 -1
  819. package/dist/zh-ui.es.js +0 -56706
  820. package/dist/zh-ui.umd.js +0 -67
@@ -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;