ly-utils-lib 1.0.12 → 2.5.0

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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1002 -685
  3. package/dist/array.cjs +237 -0
  4. package/dist/array.cjs.map +1 -0
  5. package/dist/array.d.cts +2 -0
  6. package/dist/array.d.ts +2 -0
  7. package/dist/array.js +150 -0
  8. package/dist/array.js.map +1 -0
  9. package/dist/crypto.cjs +193 -0
  10. package/dist/crypto.cjs.map +1 -0
  11. package/dist/crypto.d.cts +3 -0
  12. package/dist/crypto.d.ts +3 -0
  13. package/dist/crypto.js +144 -0
  14. package/dist/crypto.js.map +1 -0
  15. package/dist/date.cjs +563 -0
  16. package/dist/date.cjs.map +1 -0
  17. package/dist/date.d.cts +2 -0
  18. package/dist/date.d.ts +2 -0
  19. package/dist/date.js +451 -0
  20. package/dist/date.js.map +1 -0
  21. package/dist/excel.cjs +227 -0
  22. package/dist/excel.cjs.map +1 -0
  23. package/dist/excel.d.cts +2 -0
  24. package/dist/excel.d.ts +2 -0
  25. package/dist/excel.js +196 -0
  26. package/dist/excel.js.map +1 -0
  27. package/dist/index-B80SEVzM.d.cts +382 -0
  28. package/dist/index-B80SEVzM.d.ts +382 -0
  29. package/dist/index-Ba1rjTzj.d.cts +299 -0
  30. package/dist/index-Ba1rjTzj.d.ts +299 -0
  31. package/dist/index-Bg1ise7y.d.cts +253 -0
  32. package/dist/index-Bg1ise7y.d.ts +253 -0
  33. package/dist/index-BoqNpwNa.d.cts +203 -0
  34. package/dist/index-BoqNpwNa.d.ts +203 -0
  35. package/dist/index-C0qUnb9Y.d.cts +533 -0
  36. package/dist/index-C0qUnb9Y.d.ts +533 -0
  37. package/dist/index-Cq1GhjpY.d.cts +229 -0
  38. package/dist/index-Cq1GhjpY.d.ts +229 -0
  39. package/dist/index-Cy-mb5v_.d.cts +262 -0
  40. package/dist/index-Cy-mb5v_.d.ts +262 -0
  41. package/dist/index-D1f9Sym2.d.cts +148 -0
  42. package/dist/index-D1f9Sym2.d.ts +148 -0
  43. package/dist/index-Dan5oF-5.d.cts +213 -0
  44. package/dist/index-Dan5oF-5.d.ts +213 -0
  45. package/dist/index-XABfrs7z.d.cts +596 -0
  46. package/dist/index-XABfrs7z.d.ts +596 -0
  47. package/dist/index-YXWfKCK7.d.cts +109 -0
  48. package/dist/index-YXWfKCK7.d.ts +109 -0
  49. package/dist/index.cjs +3691 -0
  50. package/dist/index.cjs.map +1 -0
  51. package/dist/index.d.cts +22 -0
  52. package/dist/index.d.ts +22 -0
  53. package/dist/index.js +3629 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/map.cjs +839 -0
  56. package/dist/map.cjs.map +1 -0
  57. package/dist/map.d.cts +6 -0
  58. package/dist/map.d.ts +6 -0
  59. package/dist/map.js +811 -0
  60. package/dist/map.js.map +1 -0
  61. package/dist/object.cjs +316 -0
  62. package/dist/object.cjs.map +1 -0
  63. package/dist/object.d.cts +2 -0
  64. package/dist/object.d.ts +2 -0
  65. package/dist/object.js +247 -0
  66. package/dist/object.js.map +1 -0
  67. package/dist/pdf.cjs +197 -0
  68. package/dist/pdf.cjs.map +1 -0
  69. package/dist/pdf.d.cts +3 -0
  70. package/dist/pdf.d.ts +3 -0
  71. package/dist/pdf.js +173 -0
  72. package/dist/pdf.js.map +1 -0
  73. package/dist/storage.cjs +255 -0
  74. package/dist/storage.cjs.map +1 -0
  75. package/dist/storage.d.cts +1 -0
  76. package/dist/storage.d.ts +1 -0
  77. package/dist/storage.js +226 -0
  78. package/dist/storage.js.map +1 -0
  79. package/dist/string.cjs +232 -0
  80. package/dist/string.cjs.map +1 -0
  81. package/dist/string.d.cts +2 -0
  82. package/dist/string.d.ts +2 -0
  83. package/dist/string.js +170 -0
  84. package/dist/string.js.map +1 -0
  85. package/dist/utils.cjs +429 -0
  86. package/dist/utils.cjs.map +1 -0
  87. package/dist/utils.d.cts +2 -0
  88. package/dist/utils.d.ts +2 -0
  89. package/dist/utils.js +371 -0
  90. package/dist/utils.js.map +1 -0
  91. package/dist/websocket.cjs +338 -0
  92. package/dist/websocket.cjs.map +1 -0
  93. package/dist/websocket.d.cts +1 -0
  94. package/dist/websocket.d.ts +1 -0
  95. package/dist/websocket.js +330 -0
  96. package/dist/websocket.js.map +1 -0
  97. package/package.json +159 -33
  98. package/dist/ly-utils-lib.cjs.js +0 -115
  99. package/dist/ly-utils-lib.cjs.js.map +0 -1
  100. package/dist/ly-utils-lib.es.js +0 -58589
  101. package/dist/ly-utils-lib.es.js.map +0 -1
  102. package/dist/ly-utils-lib.umd.js +0 -115
  103. package/dist/ly-utils-lib.umd.js.map +0 -1
  104. package/dist/types/index.d.ts +0 -15
  105. package/dist/types/utils/esToolkit.d.ts +0 -2
  106. package/dist/types/utils/ol.d.ts +0 -175
  107. package/dist/types/utils/router.d.ts +0 -10
  108. package/dist/types/utils/storage.d.ts +0 -42
  109. package/dist/types/utils/time.d.ts +0 -66
  110. package/dist/types/utils/tool.d.ts +0 -80
  111. package/dist/vite.svg +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/map/index.ts"],"names":["defaultControls","ScaleLine","FullScreen","OlMap","View","fromLonLat","TileLayer","XYZ","VectorSource","GeoJSON","VectorLayer","Feature","Point","Style","Icon","Circle","Fill","Stroke","transform","style","Overlay","Draw","Snap","Modify","Select","toLonLat","extent","boundingExtent","OSM","LineString","Polygon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4NO,IAAM,cAAN,MAAkB;AAAA,EAevB,YAAY,OAAA,EAAqB;AAbjC,IAAA,IAAA,CAAQ,aAAA,uBAA+C,GAAA,EAAI;AAC3D,IAAA,IAAA,CAAQ,YAAA,uBAA2D,GAAA,EAAI;AACvE,IAAA,IAAA,CAAQ,QAAA,uBAAqC,GAAA,EAAI;AACjD,IAAA,IAAA,CAAQ,WAAA,uBAAiD,GAAA,EAAI;AAC7D,IAAA,IAAA,CAAQ,eAAA,GAA+B,IAAA;AACvC,IAAA,IAAA,CAAQ,iBAAA,GAAmC,IAAA;AAC3C,IAAA,IAAA,CAAQ,eAAA,GAA+B,IAAA;AACvC,IAAA,IAAA,CAAQ,iBAAA,GAAmC,IAAA;AAC3C,IAAA,IAAA,CAAQ,YAAA,GAAyB,OAAA;AACjC,IAAA,IAAA,CAAQ,KAAA,uBAAqC,GAAA,EAAI;AACjD,IAAA,IAAA,CAAQ,kBAAA,GAA8B,KAAA;AACtC,IAAA,IAAA,CAAQ,UAAA,GAAqB,WAAA;AAG3B,IAAA,IAAA,CAAK,kBAAA,GAAqB,QAAQ,kBAAA,IAAsB,KAAA;AACxD,IAAA,IAAA,CAAK,UAAA,GAAa,QAAQ,UAAA,IAAc,WAAA;AACxC,IAAA,IAAA,CAAK,YAAA,GAAe,QAAQ,KAAA,IAAS,OAAA;AAGrC,IAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,MAAA,MAAA,CAAO,OAAA,CAAQ,QAAQ,KAAK,CAAA,CAAE,QAAQ,CAAC,CAAC,IAAA,EAAM,MAAM,CAAA,KAAM;AACxD,QAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,IAAA,EAAM,MAAM,CAAA;AAAA,MAC7B,CAAC,CAAA;AAAA,IACH;AAGA,IAAA,MAAM,WAAWA,gBAAA,CAAgB;AAAA,MAC/B,IAAA,EAAM,KAAA;AAAA,MACN,MAAA,EAAQ,KAAA;AAAA,MACR,WAAA,EAAa;AAAA,KACd,CAAA;AACD,IAAA,IAAI,OAAA,CAAQ,kBAAkB,KAAA,EAAO;AACnC,MAAA,QAAA,CAAS,IAAA,CAAK,IAAIC,iBAAA,EAAW,CAAA;AAAA,IAC/B;AACA,IAAA,IAAI,OAAA,CAAQ,mBAAmB,KAAA,EAAO;AACpC,MAAA,QAAA,CAAS,IAAA,CAAK,IAAIC,kBAAA,EAAY,CAAA;AAAA,IAChC;AAGA,IAAA,IAAA,CAAK,GAAA,GAAM,IAAIC,MAAA,CAAM;AAAA,MACnB,QAAQ,OAAA,CAAQ,SAAA;AAAA,MAChB,QAAQ,EAAC;AAAA,MACT,IAAA,EAAM,IAAIC,OAAA,CAAK;AAAA,QACb,QAAQC,eAAA,CAAW,OAAA,CAAQ,UAAU,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AAAA;AAAA,QACxD,IAAA,EAAM,QAAQ,IAAA,IAAQ,EAAA;AAAA,QACtB,OAAA,EAAS,QAAQ,OAAA,IAAW,CAAA;AAAA,QAC5B,OAAA,EAAS,QAAQ,OAAA,IAAW,EAAA;AAAA,QAC5B,YAAY,IAAA,CAAK,UAAA;AAAA,QACjB,mBAAA,EAAqB,IAAA;AAAA,QACrB,0BAAA,EAA4B;AAAA,OAC7B,CAAA;AAAA,MACD;AAAA,KACD,CAAA;AAGD,IAAA,IAAI,QAAQ,WAAA,EAAa;AACvB,MAAA,IAAA,CAAK,gBAAA,CAAiB,QAAQ,WAAW,CAAA;AAAA,IAC3C;AAGA,IAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,MAAA,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,KAAA,KAAS,IAAA,CAAK,IAAI,QAAA,CAAS,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IAChE;AAGA,IAAA,IAAI,KAAK,kBAAA,EAAoB;AAC3B,MAAA,IAAA,CAAK,IAAI,EAAA,CAAG,SAAA,EAAW,MAAM,IAAA,CAAK,kBAAkB,CAAA;AAAA,IACtD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,iBAAiB,MAAA,EAA2B;AAClD,IAAA,MAAM,QAAA,GAAW,OAAO,QAAA,IAAY,kGAAA;AACpC,IAAA,MAAM,OAAA,GAAU,OAAO,OAAA,IAAW,kGAAA;AAElC,IAAA,MAAM,UAAA,GAAa,IAAIC,0BAAA,CAAU;AAAA,MAC/B,OAAA,EAAS,QAAA;AAAA,MACT,QAAQ,IAAIC,oBAAA,CAAI,EAAE,GAAA,EAAK,UAAU;AAAA,KAClC,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,IAAID,0BAAA,CAAU;AAAA,MAC9B,OAAA,EAAS,QAAA;AAAA,MACT,QAAQ,IAAIC,oBAAA,CAAI,EAAE,GAAA,EAAK,SAAS;AAAA,KACjC,CAAA;AAED,IAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,OAAA,EAAS,UAAU,CAAA;AACxC,IAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,MAAA,EAAQ,SAAS,CAAA;AAEtC,IAAA,IAAA,CAAK,GAAA,CAAI,SAAS,UAAU,CAAA;AAC5B,IAAA,IAAA,CAAK,GAAA,CAAI,SAAS,SAAS,CAAA;AAG3B,IAAA,IAAA,CAAK,QAAA,CAAS,KAAK,YAAY,CAAA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,KAAA,EAAuB;AAC9B,IAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AAEpB,IAAA,IAAA,CAAK,WAAA,CAAY,OAAA,CAAQ,CAAC,KAAA,EAAuB,GAAA,KAAkB;AACjE,MAAA,KAAA,CAAM,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,IAChC,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA,GAAqB;AACnB,IAAA,OAAO,IAAA,CAAK,YAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAAkB,MAAA,EAAiC;AACjD,IAAA,IAAI,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,MAAA,CAAO,IAAI,CAAA,EAAG;AACtC,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,cAAA,EAAO,MAAA,CAAO,IAAI,CAAA,oBAAA,CAAO,CAAA;AACtC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,IAAIC,6BAAA,CAAa;AAAA,MAC9B,MAAA,EAAQ,IAAIC,wBAAA;AAAQ,KACrB,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ,IAAIC,4BAAA,CAAY;AAAA,MAC5B,MAAA;AAAA,MACA,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,OAAA,EAAS,OAAO,OAAA,KAAY;AAAA,KAC7B,CAAA;AAED,IAAA,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,MAAA,CAAO,IAAA,EAAM,MAAM,CAAA;AAC1C,IAAA,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,MAAA,CAAO,IAAA,EAAM,KAAK,CAAA;AACxC,IAAA,IAAA,CAAK,GAAA,CAAI,SAAS,KAAK,CAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,IAAA,EAAqD;AAClE,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,IAAA,EAAwC;AACtD,IAAA,OAAO,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,eAAA,CAAgB,MAAc,OAAA,EAAwB;AACpD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AACxC,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,KAAA,CAAM,WAAW,OAAO,CAAA;AAAA,IAC1B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,CAAc,MAAc,KAAA,EAAoB;AAC9C,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AACxC,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,IAAA,EAAoB;AAC7B,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AAC1C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,IAAA,EAAoB;AAC9B,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AACxC,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,IAAA,CAAK,GAAA,CAAI,YAAY,KAAK,CAAA;AAC1B,MAAA,IAAA,CAAK,YAAA,CAAa,OAAO,IAAI,CAAA;AAC7B,MAAA,IAAA,CAAK,aAAA,CAAc,OAAO,IAAI,CAAA;AAAA,IAChC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA,CAAU,OAAA,EAAwB,SAAA,GAAY,SAAA,EAAoB;AAEhE,IAAA,IAAI,CAAC,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,SAAS,CAAA,EAAG;AACrC,MAAA,IAAA,CAAK,iBAAA,CAAkB,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC5C;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,MAAM,OAAA,GAAU,IAAIC,UAAA,CAAQ;AAAA,MAC1B,UAAU,IAAIC,UAAA,CAAMP,eAAA,CAAW,OAAA,CAAQ,UAAU,CAAC;AAAA,KACnD,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,IAAS,IAAA,CAAK,kBAAkB,OAAO,CAAA;AAC7D,IAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AACtB,IAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AAEzB,IAAA,OAAO,OAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,kBAAkB,OAAA,EAA+B;AAEvD,IAAA,IAAI,QAAQ,IAAA,IAAQ,IAAA,CAAK,MAAM,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA,EAAG;AAChD,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,QAAQ,IAAI,CAAA;AAC9C,MAAA,OAAO,IAAIQ,WAAA,CAAM;AAAA,QACf,KAAA,EAAO,IAAIC,UAAA,CAAK;AAAA,UACd,MAAA,EAAQ,UAAA,CAAW,MAAA,IAAU,CAAC,KAAK,GAAG,CAAA;AAAA,UACtC,KAAK,UAAA,CAAW,GAAA;AAAA,UAChB,KAAA,EAAO,WAAW,KAAA,IAAS;AAAA,SAC5B;AAAA,OACF,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,MAAA,OAAO,IAAID,WAAA,CAAM;AAAA,QACf,KAAA,EAAO,IAAIC,UAAA,CAAK;AAAA,UACd,QAAQ,OAAA,CAAQ,UAAA,CAAW,MAAA,IAAU,CAAC,KAAK,GAAG,CAAA;AAAA,UAC9C,GAAA,EAAK,QAAQ,UAAA,CAAW,GAAA;AAAA,UACxB,KAAA,EAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,IAAS;AAAA,SACpC;AAAA,OACF,CAAA;AAAA,IACH;AAGA,IAAA,OAAO,IAAID,WAAA,CAAM;AAAA,MACf,KAAA,EAAO,IAAIE,YAAA,CAAO;AAAA,QAChB,MAAA,EAAQ,QAAQ,MAAA,IAAU,CAAA;AAAA,QAC1B,IAAA,EAAM,IAAIC,UAAA,CAAK,EAAE,OAAO,OAAA,CAAQ,KAAA,IAAS,WAAW,CAAA;AAAA,QACpD,MAAA,EAAQ,IAAIC,YAAA,CAAO;AAAA,UACjB,KAAA,EAAO,QAAQ,WAAA,IAAe,SAAA;AAAA,UAC9B,KAAA,EAAO,QAAQ,WAAA,IAAe;AAAA,SAC/B;AAAA,OACF;AAAA,KACF,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,YAAA,CAAa,OAAA,EAAkB,SAAA,GAAY,SAAA,EAAiB;AAC1D,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,IAC9B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,sBAAA,CAAuB,OAAA,EAAkC,SAAA,GAAY,SAAA,EAAsB;AAEzF,IAAA,IAAI,CAAC,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,SAAS,CAAA,EAAG;AACrC,MAAA,IAAA,CAAK,iBAAA,CAAkB,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC5C;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,MAAM,MAAA,GAAS,IAAIR,wBAAA,EAAQ;AAC3B,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,OAAO,OAAA,KAAY,WAAW,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AAEpG,IAAA,MAAA,CAAO,YAAY,QAAQ,CAAA;AAE3B,IAAA,OAAO,QAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,CAAW,OAAA,EAAkB,SAAA,GAAY,SAAA,EAAiB;AAExD,IAAA,IAAI,CAAC,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,SAAS,CAAA,EAAG;AACrC,MAAA,IAAA,CAAK,iBAAA,CAAkB,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC5C;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,MAAA,CAAO,WAAW,OAAO,CAAA;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA,CAAY,QAAA,EAAqB,SAAA,GAAY,SAAA,EAAiB;AAE5D,IAAA,IAAI,CAAC,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,SAAS,CAAA,EAAG;AACrC,MAAA,IAAA,CAAK,iBAAA,CAAkB,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC5C;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,MAAA,CAAO,YAAY,QAAQ,CAAA;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,CAAc,OAAA,EAAkB,SAAA,GAAY,SAAA,EAAiB;AAC3D,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,IAC9B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,CAAc,YAAY,SAAA,EAAiB;AACzC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA,CAAY,YAAY,SAAA,EAAsB;AAC5C,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,OAAO,MAAA,GAAS,MAAA,CAAO,WAAA,EAAY,GAAI,EAAC;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,CAAc,MAA0C,IAAA,EAA2B;AACjF,IAAA,MAAM,WAAA,GAAmB,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,IAAI,CAAA;AACvD,IAAA,MAAM,EAAA,GAAK,KAAK,YAAA,EAAa;AAE7B,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,mBAAA;AAAA,MACN,UAAU,CAAC;AAAA,QACT,IAAA,EAAM,SAAA;AAAA,QACN,QAAA,EAAU;AAAA,UACR,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAA,EAAY;AAAA,UACV,EAAA;AAAA,UACA,KAAA,EAAO;AAAA;AACT,OACD;AAAA,KACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAA,CAAe,MAAc,IAAA,EAAgB;AACnD,IAAA,IAAI,SAAS,OAAA,EAAS;AACpB,MAAA,OAAOJ,gBAAWa,cAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,IACpE,CAAA,MAAA,IAAW,SAAS,YAAA,EAAc;AAChC,MAAA,OAAO,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,MAAM,CAAA;AAAA,IACvC,CAAA,MAAA,IAAW,SAAS,SAAA,EAAW;AAC7B,MAAA,OAAO,CAAC,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,IACzC;AACA,IAAA,OAAO,EAAC;AAAA,EACV;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc,MAAA,EAA2B;AAC/C,IAAA,OAAO,MAAA,CAAO,IAAI,CAAA,IAAA,KAAQb,eAAA,CAAWa,eAAU,IAAA,EAAM,WAAA,EAAa,WAAW,CAAC,CAAC,CAAA;AAAA,EACjF;AAAA;AAAA;AAAA;AAAA,EAKQ,YAAA,GAAuB;AAC7B,IAAA,OAAO,sCAAA,CAAuC,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAA,KAAM;AACpE,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,MAAA,EAAO,GAAI,EAAA,GAAK,CAAA;AAC/B,MAAA,MAAM,CAAA,GAAI,CAAA,KAAM,GAAA,GAAM,CAAA,GAAK,IAAI,CAAA,GAAM,CAAA;AACrC,MAAA,OAAO,CAAA,CAAE,SAAS,EAAE,CAAA;AAAA,IACtB,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,eAAA,CAAgB,SAAkB,OAAA,EAAoC;AACpE,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,kBAAA,CAAmB,OAAO,CAAA;AAC7C,IAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKQ,mBAAmB,OAAA,EAAqC;AAE9D,IAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,MAAA,OAAO,OAAA,CAAQ,KAAA;AAAA,IACjB;AAGA,IAAA,IAAI,QAAQ,IAAA,IAAQ,IAAA,CAAK,MAAM,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAA,EAAG;AAChD,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,QAAQ,IAAI,CAAA;AAC9C,MAAA,OAAO,IAAIL,WAAA,CAAM;AAAA,QACf,KAAA,EAAO,IAAIC,UAAA,CAAK;AAAA,UACd,MAAA,EAAQ,UAAA,CAAW,MAAA,IAAU,CAAC,KAAK,GAAG,CAAA;AAAA,UACtC,KAAK,UAAA,CAAW,GAAA;AAAA,UAChB,KAAA,EAAO,WAAW,KAAA,IAAS;AAAA,SAC5B;AAAA,OACF,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,MAAA,OAAO,IAAID,WAAA,CAAM;AAAA,QACf,KAAA,EAAO,IAAIC,UAAA,CAAK;AAAA,UACd,QAAQ,OAAA,CAAQ,UAAA,CAAW,MAAA,IAAU,CAAC,KAAK,GAAG,CAAA;AAAA,UAC9C,GAAA,EAAK,QAAQ,UAAA,CAAW,GAAA;AAAA,UACxB,KAAA,EAAO,OAAA,CAAQ,UAAA,CAAW,KAAA,IAAS;AAAA,SACpC;AAAA,OACF,CAAA;AAAA,IACH;AAGA,IAAA,OAAO,IAAID,WAAA,CAAM;AAAA,MACf,MAAA,EAAQ,IAAII,YAAA,CAAO;AAAA,QACjB,KAAA,EAAO,QAAQ,WAAA,IAAe,SAAA;AAAA,QAC9B,KAAA,EAAO,QAAQ,WAAA,IAAe;AAAA,OAC/B,CAAA;AAAA,MACD,IAAA,EAAM,IAAID,UAAA,CAAK;AAAA,QACb,KAAA,EAAO,QAAQ,SAAA,IAAa;AAAA,OAC7B,CAAA;AAAA,MACD,KAAA,EAAO,IAAID,YAAA,CAAO;AAAA,QAChB,MAAA,EAAQ,CAAA;AAAA,QACR,IAAA,EAAM,IAAIC,UAAA,CAAK,EAAE,OAAO,OAAA,CAAQ,WAAA,IAAe,WAAW,CAAA;AAAA,QAC1D,MAAA,EAAQ,IAAIC,YAAA,CAAO;AAAA,UACjB,KAAA,EAAO,SAAA;AAAA,UACP,KAAA,EAAO;AAAA,SACR;AAAA,OACF;AAAA,KACF,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,gBAAA,GAAyB;AAC/B,IAAA,MAAM,IAAA,GAAO,KAAK,OAAA,EAAQ;AAC1B,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,gBAAgB,IAAA,EAAoB;AAC1C,IAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,IAAA,IAAI,QAAQ,EAAA,EAAI;AACd,MAAA,KAAA,GAAQ,GAAA;AAAA,IACV,CAAA,MAAA,IAAW,IAAA,GAAO,EAAA,IAAM,IAAA,IAAQ,EAAA,EAAI;AAClC,MAAA,KAAA,GAAQ,GAAA;AAAA,IACV,CAAA,MAAA,IAAW,OAAO,EAAA,EAAI;AACpB,MAAA,KAAA,GAAQ,GAAA;AAAA,IACV;AAGA,IAAA,IAAA,CAAK,YAAA,CAAa,OAAA,CAAQ,CAAC,KAAA,KAAqC;AAC9D,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,SAAA,EAAU,EAAG,WAAA,EAAY;AAChD,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,OAAA,KAAqB;AACrC,UAAA,MAAME,OAAA,GAAQ,QAAQ,QAAA,EAAS;AAC/B,UAAA,IAAIA,OAAA,EAAO;AACT,YAAA,MAAM,KAAA,GAAQA,QAAM,QAAA,EAAS;AAC7B,YAAA,IAAI,iBAAiBL,UAAA,EAAM;AACzB,cAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,YACtB;AAAA,UACF;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAc,OAAA,EAA+B;AAC3C,IAAA,MAAM,OAAA,GAAU,IAAIM,wBAAA,CAAQ;AAAA,MAC1B,SAAS,OAAA,CAAQ,OAAA;AAAA,MACjB,OAAA,EAAS,QAAQ,OAAA,KAAY,KAAA;AAAA,MAC7B,QAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,WAAA,EAAa,QAAQ,WAAA,IAAe;AAAA,KACrC,CAAA;AAED,IAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA;AACvC,IAAA,IAAA,CAAK,GAAA,CAAI,WAAW,OAAO,CAAA;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA,CAAY,MAAc,UAAA,EAAoC;AAC5D,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AACtC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,WAAA,CAAYf,eAAA,CAAW,UAAU,CAAC,CAAA;AAAA,IAC5C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,IAAA,EAAoB;AAC9B,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AACtC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,YAAY,MAAS,CAAA;AAAA,IAC/B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,IAAA,EAAoB;AAChC,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AACtC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,IAAA,CAAK,GAAA,CAAI,cAAc,OAAO,CAAA;AAC9B,MAAA,IAAA,CAAK,QAAA,CAAS,OAAO,IAAI,CAAA;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,OAAA,EAA4B;AACpC,IAAA,IAAA,CAAK,QAAA,EAAS;AAEd,IAAA,MAAM,SAAS,OAAA,CAAQ,SAAA,IAAa,IAAA,CAAK,aAAA,CAAc,IAAI,OAAA,CAAQ,SAAS,CAAA,GACxE,IAAA,CAAK,cAAc,GAAA,CAAI,OAAA,CAAQ,SAAS,CAAA,GACxC,IAAIG,6BAAA,EAAa;AAErB,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAIa,gBAAA,CAAK;AAAA,MAC9B,MAAA;AAAA,MACA,MAAM,OAAA,CAAQ,IAAA;AAAA,MACd,OAAO,OAAA,CAAQ;AAAA,KAChB,CAAA;AAED,IAAA,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,IAAA,CAAK,eAAe,CAAA;AAE5C,IAAA,IAAI,QAAQ,SAAA,EAAW;AACrB,MAAA,IAAA,CAAK,eAAA,CAAgB,EAAA,CAAG,SAAA,EAAW,CAAA,GAAA,KAAO;AACxC,QAAA,OAAA,CAAQ,SAAA,GAAY,IAAI,OAAO,CAAA;AAAA,MACjC,CAAC,CAAA;AAAA,IACH;AAGA,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAIC,gBAAA,CAAK,EAAE,QAAQ,CAAA;AAC1C,IAAA,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,IAAA,CAAK,eAAe,CAAA;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA,GAAiB;AACf,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,GAAA,CAAI,iBAAA,CAAkB,IAAA,CAAK,eAAe,CAAA;AAC/C,MAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AAAA,IACzB;AACA,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,GAAA,CAAI,iBAAA,CAAkB,IAAA,CAAK,eAAe,CAAA;AAC/C,MAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AAAA,IACzB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA,CAAY,YAAY,SAAA,EAAiB;AACvC,IAAA,IAAA,CAAK,UAAA,EAAW;AAEhB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,cAAA,EAAO,SAAS,CAAA,oBAAA,CAAO,CAAA;AACpC,MAAA;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAIC,kBAAA,CAAO;AAAA,MAClC;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,IAAA,CAAK,iBAAiB,CAAA;AAG9C,IAAA,IAAA,CAAK,eAAA,GAAkB,IAAID,gBAAA,CAAK,EAAE,QAAQ,CAAA;AAC1C,IAAA,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,IAAA,CAAK,eAAe,CAAA;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAmB;AACjB,IAAA,IAAI,KAAK,iBAAA,EAAmB;AAC1B,MAAA,IAAA,CAAK,GAAA,CAAI,iBAAA,CAAkB,IAAA,CAAK,iBAAiB,CAAA;AACjD,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AAAA,IAC3B;AACA,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,IAAA,CAAK,GAAA,CAAI,iBAAA,CAAkB,IAAA,CAAK,eAAe,CAAA;AAC/C,MAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AAAA,IACzB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA,CAAY,SAAA,GAAY,SAAA,EAAW,QAAA,EAAgD;AACjF,IAAA,IAAA,CAAK,UAAA,EAAW;AAEhB,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAIE,kBAAA,CAAO;AAAA,MAClC,MAAA,EAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,SAAS,CAAA,GAAI,CAAC,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,SAAS,CAAE,CAAA,GAAI;AAAA,KAClF,CAAA;AAED,IAAA,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,IAAA,CAAK,iBAAiB,CAAA;AAE9C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAA,CAAK,iBAAA,CAAkB,EAAA,CAAG,QAAA,EAAU,CAAA,GAAA,KAAO;AACzC,QAAA,QAAA,CAAS,IAAI,QAAQ,CAAA;AAAA,MACvB,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAmB;AACjB,IAAA,IAAI,KAAK,iBAAA,EAAmB;AAC1B,MAAA,IAAA,CAAK,GAAA,CAAI,iBAAA,CAAkB,IAAA,CAAK,iBAAiB,CAAA;AACjD,MAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAA,GAAiC;AAC/B,IAAA,OAAO,KAAK,iBAAA,EAAmB,WAAA,EAAY,CAAE,QAAA,MAAc,EAAC;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAA,GAAkB;AAChB,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA,GAA4B;AAC1B,IAAA,OAAO,IAAA,CAAK,IAAI,OAAA,EAAQ;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,KAAA,EAA+B;AACvC,IAAA,MAAM,IAAA,GAAO,KAAK,OAAA,EAAQ;AAC1B,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,SAAA,CAAUnB,eAAA,CAAW,KAAK,CAAC,CAAA;AAChC,MAAA,IAAA,CAAK,IAAI,MAAA,EAAO;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA,GAA0C;AACxC,IAAA,MAAM,IAAA,GAAO,KAAK,OAAA,EAAQ;AAC1B,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,MAAA,GAAS,KAAK,SAAA,EAAU;AAC9B,MAAA,OAAO,MAAA,GAAUoB,aAAA,CAAS,MAAM,CAAA,GAAyB,MAAA;AAAA,IAC3D;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,IAAA,EAAoB;AAC1B,IAAA,MAAM,IAAA,GAAO,KAAK,OAAA,EAAQ;AAC1B,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,QAAQ,IAAI,CAAA;AACjB,MAAA,IAAA,CAAK,IAAI,MAAA,EAAO;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA,GAA8B;AAC5B,IAAA,OAAO,IAAA,CAAK,OAAA,EAAQ,EAAG,OAAA,EAAQ;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,GAAA,CAAI,QAAyB,OAAA,EAA2D;AACtF,IAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,IAAA,MAAM,IAAA,GAAO,KAAK,OAAA,EAAQ;AAC1B,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAA,CAAK,GAAA,CAAI,QAAQ,OAAO,CAAA;AACxB,MAAA,IAAA,CAAK,IAAI,MAAA,EAAO;AAAA,IAClB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA,CAAS,WAAmB,OAAA,EAA2D;AACrF,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,SAAS,CAAA;AAC/C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAM,MAAA,GAAS,OAAO,SAAA,EAAU;AAChC,MAAA,IAAI,MAAA,IAAU,MAAA,CAAO,CAAC,CAAA,KAAM,QAAA,EAAU;AACpC,QAAA,IAAA,CAAK,GAAA,CAAI,QAAQ,OAAO,CAAA;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAA,CAAe,aAAiC,OAAA,EAA2D;AACzG,IAAA,MAAMC,QAAA,GAASC,sBAAe,WAAW,CAAA;AACzC,IAAA,IAAA,CAAK,GAAA,CAAID,UAAQ,OAAO,CAAA;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,KAAA,EAAoB;AAC3B,IAAA,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,KAAA,EAAoB;AACjC,IAAA,IAAA,CAAK,GAAA,CAAI,WAAA,CAAY,KAAA,CAAM,KAAK,CAAA;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAmB;AACjB,IAAA,IAAA,CAAK,IAAI,UAAA,EAAW;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKA,EAAA,CAAG,OAA0B,QAAA,EAA8C;AACzE,IAAA,IAAA,CAAK,GAAA,CAAI,EAAA,CAAG,KAAA,EAAgB,QAAQ,CAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,GAAA,CAAI,OAA0B,QAAA,EAA8C;AAC1E,IAAA,IAAA,CAAK,GAAA,CAAI,EAAA,CAAG,KAAA,EAAgB,QAAQ,CAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA,GAAgB;AACd,IAAA,IAAA,CAAK,QAAA,EAAS;AACd,IAAA,IAAA,CAAK,UAAA,EAAW;AAChB,IAAA,IAAA,CAAK,UAAA,EAAW;AAEhB,IAAA,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAC,OAAA,KAAqB,KAAK,GAAA,CAAI,aAAA,CAAc,OAAO,CAAC,CAAA;AAC3E,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AAEpB,IAAA,IAAA,CAAK,YAAA,CAAa,QAAQ,CAAC,KAAA,KAAqC,KAAK,GAAA,CAAI,WAAA,CAAY,KAAK,CAAC,CAAA;AAC3F,IAAA,IAAA,CAAK,aAAa,KAAA,EAAM;AACxB,IAAA,IAAA,CAAK,cAAc,KAAA,EAAM;AAEzB,IAAA,IAAA,CAAK,GAAA,CAAI,UAAU,MAAS,CAAA;AAAA,EAC9B;AACF;AAOO,SAAS,cAAA,CAAe,OAAO,KAAA,EAAc;AAClD,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,KAAA,EAAO,IAAIpB,0BAAA,CAAU;AAAA,MACnB,MAAA,EAAQ,IAAIsB,oBAAA;AAAI,KACjB;AAAA,GACH;AACF;AAKO,SAAS,cAAA,CAAe,GAAA,EAAa,IAAA,GAAO,KAAA,EAAc;AAC/D,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,KAAA,EAAO,IAAItB,0BAAA,CAAU;AAAA,MACnB,MAAA,EAAQ,IAAIC,oBAAA,CAAI;AAAA,QACd;AAAA,OACD;AAAA,KACF;AAAA,GACH;AACF;AAKO,SAAS,gBAAA,CAAiB,OAAO,0BAAA,EAAe;AACrD,EAAA,OAAO,cAAA;AAAA,IACL,kGAAA;AAAA,IACA;AAAA,GACF;AACF;AAKO,SAAS,mBAAA,CAAoB,KAAA,EAAe,IAAA,GAAO,KAAA,EAAO,OAAO,oBAAA,EAAc;AACpF,EAAA,MAAM,GAAA,GAAM,CAAA,0CAAA,EAA6C,IAAI,CAAA,wBAAA,EAA2B,KAAK,CAAA,CAAA;AAC7F,EAAA,OAAO,cAAA,CAAe,KAAK,IAAI,CAAA;AACjC;AAOO,SAAS,UAAA,CAAW,KAAa,GAAA,EAAuB;AAC7D,EAAA,OAAOF,eAAA,CAAW,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA;AAC9B;AAKO,SAAS,UAAA,CAAW,GAAW,CAAA,EAA6B;AACjE,EAAA,OAAOoB,aAAA,CAAS,CAAC,CAAA,EAAG,CAAC,CAAC,CAAA;AACxB;AAKO,SAAS,mBAAmB,UAAA,EAAuC;AACxE,EAAA,OAAO,IAAId,UAAA,CAAQ;AAAA,IACjB,QAAA,EAAU,IAAIC,UAAA,CAAMP,eAAA,CAAW,UAAU,CAAC;AAAA,GAC3C,CAAA;AACH;AAKO,SAAS,kBAAkB,WAAA,EAA0C;AAC1E,EAAA,OAAO,IAAIM,UAAA,CAAQ;AAAA,IACjB,QAAA,EAAU,IAAIkB,eAAA,CAAW,WAAA,CAAY,IAAI,CAAA,KAAA,KAASxB,eAAA,CAAW,KAAK,CAAC,CAAC;AAAA,GACrE,CAAA;AACH;AAKO,SAAS,qBAAqB,WAAA,EAA4C;AAC/E,EAAA,OAAO,IAAIM,UAAA,CAAQ;AAAA,IACjB,QAAA,EAAU,IAAImB,YAAA,CAAQ,WAAA,CAAY,GAAA,CAAI,CAAA,IAAA,KAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,KAAA,KAASzB,eAAA,CAAW,KAAK,CAAC,CAAC,CAAC;AAAA,GACpF,CAAA;AACH;AAKO,SAAS,wBAAA,CAAyB,YAA8B,KAAA,EAAuB;AAC5F,EAAA,MAAM,OAAA,GAAU,mBAAmB,UAAU,CAAA;AAC7C,EAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AACtB,EAAA,OAAO,OAAA;AACT;AAKO,SAAS,uBAAA,CAAwB,aAAiC,KAAA,EAAuB;AAC9F,EAAA,MAAM,OAAA,GAAU,kBAAkB,WAAW,CAAA;AAC7C,EAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AACtB,EAAA,OAAO,OAAA;AACT;AAKO,SAAS,0BAAA,CAA2B,aAAmC,KAAA,EAAuB;AACnG,EAAA,MAAM,OAAA,GAAU,qBAAqB,WAAW,CAAA;AAChD,EAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AACtB,EAAA,OAAO,OAAA;AACT;AAKO,SAAS,eAAA,CAAgB,SAAiB,OAAA,EAIvC;AACR,EAAA,OAAO,IAAIQ,WAAA,CAAM;AAAA,IACf,KAAA,EAAO,IAAIC,UAAA,CAAK;AAAA,MACd,MAAA,EAAQ,OAAA,EAAS,MAAA,IAAU,CAAC,KAAK,GAAG,CAAA;AAAA,MACpC,GAAA,EAAK,OAAA;AAAA,MACL,KAAA,EAAO,SAAS,KAAA,IAAS,CAAA;AAAA,MACzB,OAAO,OAAA,EAAS;AAAA,KACjB;AAAA,GACF,CAAA;AACH;AAKO,SAAS,kBAAkB,OAAA,EAKxB;AACR,EAAA,OAAO,IAAID,WAAA,CAAM;AAAA,IACf,KAAA,EAAO,IAAIE,YAAA,CAAO;AAAA,MAChB,MAAA,EAAQ,SAAS,MAAA,IAAU,CAAA;AAAA,MAC3B,IAAA,EAAM,IAAIC,UAAA,CAAK,EAAE,OAAO,OAAA,EAAS,SAAA,IAAa,WAAW,CAAA;AAAA,MACzD,MAAA,EAAQ,IAAIC,YAAA,CAAO;AAAA,QACjB,KAAA,EAAO,SAAS,WAAA,IAAe,SAAA;AAAA,QAC/B,KAAA,EAAO,SAAS,WAAA,IAAe;AAAA,OAChC;AAAA,KACF;AAAA,GACF,CAAA;AACH;AAKO,SAAS,kBAAkB,OAAA,EAIxB;AACR,EAAA,OAAO,IAAIJ,WAAA,CAAM;AAAA,IACf,MAAA,EAAQ,IAAII,YAAA,CAAO;AAAA,MACjB,KAAA,EAAO,SAAS,KAAA,IAAS,SAAA;AAAA,MACzB,KAAA,EAAO,SAAS,KAAA,IAAS,CAAA;AAAA,MACzB,UAAU,OAAA,EAAS;AAAA,KACpB;AAAA,GACF,CAAA;AACH;AAKO,SAAS,gBAAgB,OAAA,EAItB;AACR,EAAA,OAAO,IAAIJ,WAAA,CAAM;AAAA,IACf,MAAA,EAAQ,IAAII,YAAA,CAAO;AAAA,MACjB,KAAA,EAAO,SAAS,WAAA,IAAe,SAAA;AAAA,MAC/B,KAAA,EAAO,SAAS,WAAA,IAAe;AAAA,KAChC,CAAA;AAAA,IACD,IAAA,EAAM,IAAID,UAAA,CAAK;AAAA,MACb,KAAA,EAAO,SAAS,SAAA,IAAa;AAAA,KAC9B;AAAA,GACF,CAAA;AACH","file":"map.cjs","sourcesContent":["/**\n * Map Module - OpenLayers 高级封装\n *\n * 提供简化的地图操作 API,支持:\n * - 自定义图标样式\n * - GeoJSON 支持\n * - 主题切换(亮/暗)\n * - Overlay 管理\n * - 动态缩放\n */\n\nimport { Feature } from 'ol'\nimport { defaults as defaultControls } from 'ol/control'\nimport { FullScreen } from 'ol/control'\nimport { ScaleLine } from 'ol/control'\nimport { Point, LineString, Polygon } from 'ol/geom'\nimport { Draw, Modify, Snap } from 'ol/interaction'\nimport { Select } from 'ol/interaction'\nimport Overlay from 'ol/Overlay'\nimport TileLayer from 'ol/layer/Tile'\nimport VectorLayer from 'ol/layer/Vector'\nimport { Map as OlMap } from 'ol'\nimport { fromLonLat, toLonLat, transform } from 'ol/proj'\nimport OSM from 'ol/source/OSM'\nimport VectorSource from 'ol/source/Vector'\nimport XYZ from 'ol/source/XYZ'\nimport GeoJSON from 'ol/format/GeoJSON'\nimport { Style, Circle, Fill, Stroke, Icon } from 'ol/style'\nimport { View } from 'ol'\nimport { boundingExtent } from 'ol/extent'\n\n// ==================== 类型定义 ====================\n\n/**\n * 主题类型\n */\nexport type MapTheme = 'light' | 'dark'\n\n/**\n * 地图配置选项\n */\nexport interface MapOptions {\n /** 地图容器 ID */\n container: string\n /** 中心点 [经度, 纬度] */\n center?: [number, number]\n /** 缩放级别 */\n zoom?: number\n /** 最小缩放级别 */\n minZoom?: number\n /** 最大缩放级别 */\n maxZoom?: number\n /** 是否显示比例尺 */\n showScaleLine?: boolean\n /** 是否显示全屏按钮 */\n showFullScreen?: boolean\n /** 默认图层 */\n layers?: Layer[]\n /** 主题 */\n theme?: MapTheme\n /** 主题配置 */\n themeConfig?: ThemeConfig\n /** 自定义图标配置 */\n icons?: Record<string, IconConfig>\n /** 是否启用动态缩放 */\n enableDynamicScale?: boolean\n /** 投影坐标系,默认 EPSG:4326 */\n projection?: string\n}\n\n/**\n * 图层类型\n */\nexport interface Layer {\n /** 图层名称 */\n name: string\n /** 图层实例 */\n layer: import('ol/layer/Base').default\n}\n\n/**\n * 主题配置\n */\nexport interface ThemeConfig {\n /** 亮色地图 URL */\n lightUrl?: string\n /** 暗色地图 URL */\n darkUrl?: string\n}\n\n/**\n * 图标配置\n */\nexport interface IconConfig {\n /** 图标 URL 或 base64 */\n src: string\n /** 锚点位置 [x, y],默认 [0.5, 0.5] */\n anchor?: [number, number]\n /** 缩放比例,默认 1 */\n scale?: number\n}\n\n/**\n * 标记选项\n */\nexport interface MarkerOptions {\n /** 坐标 [经度, 纬度] */\n coordinate: [number, number]\n /** 颜色 */\n color?: string\n /** 半径 */\n radius?: number\n /** 边框颜色 */\n strokeColor?: string\n /** 边框宽度 */\n strokeWidth?: number\n /** 自定义图标名称 */\n icon?: string\n /** 自定义图标配置 */\n iconConfig?: IconConfig\n /** 自定义样式 */\n style?: Style\n}\n\n/**\n * 要素样式选项\n */\nexport interface FeatureStyleOptions {\n /** 图标名称(来自 icons 配置) */\n icon?: string\n /** 自定义图标配置 */\n iconConfig?: IconConfig\n /** 填充颜色(Polygon) */\n fillColor?: string\n /** 边框颜色 */\n strokeColor?: string\n /** 边框宽度 */\n strokeWidth?: number\n /** 自定义样式 */\n style?: Style\n}\n\n/**\n * 绘制类型\n */\nexport type DrawType = 'Point' | 'LineString' | 'Polygon' | 'Circle'\n\n/**\n * 绘制选项\n */\nexport interface DrawOptions {\n /** 绘制类型 */\n type: DrawType\n /** 绘制完成回调 */\n onDrawEnd?: (feature: Feature) => void\n /** 绘制样式 */\n style?: Style\n /** 绘制图层名称 */\n layerName?: string\n}\n\n/**\n * GeoJSON 要素选项\n */\nexport interface GeoJSONFeature {\n type: 'FeatureCollection'\n features: GeoJSONFeatureItem[]\n}\n\n/**\n * GeoJSON 要素项\n */\nexport interface GeoJSONFeatureItem {\n type: 'Feature'\n geometry: {\n type: 'Point' | 'LineString' | 'Polygon'\n coordinates: number[] | number[][] | number[][][]\n }\n properties?: Record<string, any>\n}\n\n/**\n * Overlay 配置\n */\nexport interface OverlayOptions {\n /** Overlay 名称 */\n name: string\n /** DOM 元素 */\n element: HTMLElement\n /** 是否自动平移 */\n autoPan?: boolean\n /** 偏移量 */\n offset?: number[]\n /** 定位方式 */\n positioning?: 'bottom-center' | 'bottom-left' | 'bottom-right' | 'center-center' | 'center-left' | 'center-right' | 'top-center' | 'top-left' | 'top-right'\n}\n\n/**\n * 矢量图层配置\n */\nexport interface VectorLayerConfig {\n /** 图层名称 */\n name: string\n /** 最小缩放级别 */\n minZoom?: number\n /** 最大缩放级别 */\n maxZoom?: number\n /** 图层层级 */\n zIndex?: number\n /** 默认样式 */\n style?: Style\n /** 是否可见 */\n visible?: boolean\n}\n\n// ==================== Map 类 ====================\n\n/**\n * 地图类 - 封装 OpenLayers Map\n */\nexport class MapInstance {\n private map: OlMap\n private vectorSources: Map<string, VectorSource> = new Map()\n private vectorLayers: Map<string, VectorLayer<VectorSource>> = new Map()\n private overlays: Map<string, Overlay> = new Map()\n private themeLayers: Map<MapTheme, TileLayer<XYZ>> = new Map()\n private drawInteraction: Draw | null = null\n private modifyInteraction: Modify | null = null\n private snapInteraction: Snap | null = null\n private selectInteraction: Select | null = null\n private currentTheme: MapTheme = 'light'\n private icons: Map<string, IconConfig> = new Map()\n private enableDynamicScale: boolean = false\n private projection: string = 'EPSG:4326'\n\n constructor(options: MapOptions) {\n this.enableDynamicScale = options.enableDynamicScale || false\n this.projection = options.projection || 'EPSG:4326'\n this.currentTheme = options.theme || 'light'\n\n // 初始化图标\n if (options.icons) {\n Object.entries(options.icons).forEach(([name, config]) => {\n this.icons.set(name, config)\n })\n }\n\n // 创建控件\n const controls = defaultControls({\n zoom: false,\n rotate: false,\n attribution: false\n })\n if (options.showScaleLine !== false) {\n controls.push(new ScaleLine())\n }\n if (options.showFullScreen !== false) {\n controls.push(new FullScreen())\n }\n\n // 创建地图\n this.map = new OlMap({\n target: options.container,\n layers: [],\n view: new View({\n center: fromLonLat(options.center || [116.3974, 39.9093]), // 默认北京\n zoom: options.zoom || 10,\n minZoom: options.minZoom || 1,\n maxZoom: options.maxZoom || 20,\n projection: this.projection,\n constrainResolution: true,\n smoothResolutionConstraint: false\n }),\n controls,\n })\n\n // 添加主题图层\n if (options.themeConfig) {\n this.setupThemeLayers(options.themeConfig)\n }\n\n // 添加默认图层\n if (options.layers) {\n options.layers.forEach(layer => this.map.addLayer(layer.layer))\n }\n\n // 监听缩放事件(用于动态缩放)\n if (this.enableDynamicScale) {\n this.map.on('moveend', () => this.handleZoomChange())\n }\n }\n\n // ==================== 主题管理 ====================\n\n /**\n * 设置主题图层\n */\n private setupThemeLayers(config: ThemeConfig): void {\n const lightUrl = config.lightUrl || 'https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}'\n const darkUrl = config.darkUrl || 'https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=9&x={x}&y={y}&z={z}'\n\n const lightLayer = new TileLayer({\n preload: Infinity,\n source: new XYZ({ url: lightUrl }),\n })\n\n const darkLayer = new TileLayer({\n preload: Infinity,\n source: new XYZ({ url: darkUrl }),\n })\n\n this.themeLayers.set('light', lightLayer)\n this.themeLayers.set('dark', darkLayer)\n\n this.map.addLayer(lightLayer)\n this.map.addLayer(darkLayer)\n\n // 设置当前主题\n this.setTheme(this.currentTheme)\n }\n\n /**\n * 切换主题\n */\n setTheme(theme: MapTheme): void {\n this.currentTheme = theme\n\n this.themeLayers.forEach((layer: TileLayer<XYZ>, key: MapTheme) => {\n layer.setVisible(key === theme)\n })\n }\n\n /**\n * 获取当前主题\n */\n getTheme(): MapTheme {\n return this.currentTheme\n }\n\n // ==================== 图层管理 ====================\n\n /**\n * 创建矢量图层\n */\n createVectorLayer(config: VectorLayerConfig): void {\n if (this.vectorLayers.has(config.name)) {\n console.warn(`图层 \"${config.name}\" 已存在`)\n return\n }\n\n const source = new VectorSource({\n format: new GeoJSON()\n })\n\n const layer = new VectorLayer({\n source,\n style: config.style,\n minZoom: config.minZoom,\n maxZoom: config.maxZoom,\n zIndex: config.zIndex,\n visible: config.visible !== false\n })\n\n this.vectorSources.set(config.name, source)\n this.vectorLayers.set(config.name, layer)\n this.map.addLayer(layer)\n }\n\n /**\n * 获取矢量图层\n */\n getVectorLayer(name: string): VectorLayer<VectorSource> | undefined {\n return this.vectorLayers.get(name)\n }\n\n /**\n * 获取矢量数据源\n */\n getVectorSource(name: string): VectorSource | undefined {\n return this.vectorSources.get(name)\n }\n\n /**\n * 显示/隐藏矢量图层\n */\n setLayerVisible(name: string, visible: boolean): void {\n const layer = this.vectorLayers.get(name)\n if (layer) {\n layer.setVisible(visible)\n }\n }\n\n /**\n * 设置矢量图层样式\n */\n setLayerStyle(name: string, style: Style): void {\n const layer = this.vectorLayers.get(name)\n if (layer) {\n layer.setStyle(style)\n }\n }\n\n /**\n * 清除矢量图层\n */\n clearLayer(name: string): void {\n const source = this.vectorSources.get(name)\n if (source) {\n source.clear()\n }\n }\n\n /**\n * 删除矢量图层\n */\n removeLayer(name: string): void {\n const layer = this.vectorLayers.get(name)\n if (layer) {\n this.map.removeLayer(layer)\n this.vectorLayers.delete(name)\n this.vectorSources.delete(name)\n }\n }\n\n // ==================== 要素管理 ====================\n\n /**\n * 添加标记\n */\n addMarker(options: MarkerOptions, layerName = 'default'): Feature {\n // 如果图层不存在,创建默认图层\n if (!this.vectorLayers.has(layerName)) {\n this.createVectorLayer({ name: layerName })\n }\n\n const source = this.vectorSources.get(layerName)!\n const feature = new Feature({\n geometry: new Point(fromLonLat(options.coordinate)),\n })\n\n const style = options.style || this.createMarkerStyle(options)\n feature.setStyle(style)\n source.addFeature(feature)\n\n return feature\n }\n\n /**\n * 创建标记样式\n */\n private createMarkerStyle(options: MarkerOptions): Style {\n // 如果指定了图标\n if (options.icon && this.icons.has(options.icon)) {\n const iconConfig = this.icons.get(options.icon)!\n return new Style({\n image: new Icon({\n anchor: iconConfig.anchor || [0.5, 0.5],\n src: iconConfig.src,\n scale: iconConfig.scale || 1\n })\n })\n }\n\n // 如果指定了自定义图标配置\n if (options.iconConfig) {\n return new Style({\n image: new Icon({\n anchor: options.iconConfig.anchor || [0.5, 0.5],\n src: options.iconConfig.src,\n scale: options.iconConfig.scale || 1\n })\n })\n }\n\n // 默认圆形样式\n return new Style({\n image: new Circle({\n radius: options.radius || 7,\n fill: new Fill({ color: options.color || '#ff3333' }),\n stroke: new Stroke({\n color: options.strokeColor || '#ffffff',\n width: options.strokeWidth || 2,\n }),\n }),\n })\n }\n\n /**\n * 移除标记\n */\n removeMarker(feature: Feature, layerName = 'default'): void {\n const source = this.vectorSources.get(layerName)\n if (source) {\n source.removeFeature(feature)\n }\n }\n\n /**\n * 从 GeoJSON 添加要素\n */\n addFeaturesFromGeoJSON(geoJson: GeoJSONFeature | string, layerName = 'default'): Feature[] {\n // 如果图层不存在,创建默认图层\n if (!this.vectorLayers.has(layerName)) {\n this.createVectorLayer({ name: layerName })\n }\n\n const source = this.vectorSources.get(layerName)!\n const format = new GeoJSON()\n const features = format.readFeatures(typeof geoJson === 'string' ? geoJson : JSON.stringify(geoJson))\n\n source.addFeatures(features)\n\n return features\n }\n\n /**\n * 添加要素\n */\n addFeature(feature: Feature, layerName = 'default'): void {\n // 如果图层不存在,创建默认图层\n if (!this.vectorLayers.has(layerName)) {\n this.createVectorLayer({ name: layerName })\n }\n\n const source = this.vectorSources.get(layerName)!\n source.addFeature(feature)\n }\n\n /**\n * 批量添加要素\n */\n addFeatures(features: Feature[], layerName = 'default'): void {\n // 如果图层不存在,创建默认图层\n if (!this.vectorLayers.has(layerName)) {\n this.createVectorLayer({ name: layerName })\n }\n\n const source = this.vectorSources.get(layerName)!\n source.addFeatures(features)\n }\n\n /**\n * 移除要素\n */\n removeFeature(feature: Feature, layerName = 'default'): void {\n const source = this.vectorSources.get(layerName)\n if (source) {\n source.removeFeature(feature)\n }\n }\n\n /**\n * 清除所有矢量要素\n */\n clearFeatures(layerName = 'default'): void {\n const source = this.vectorSources.get(layerName)\n if (source) {\n source.clear()\n }\n }\n\n /**\n * 获取图层中的所有要素\n */\n getFeatures(layerName = 'default'): Feature[] {\n const source = this.vectorSources.get(layerName)\n return source ? source.getFeatures() : []\n }\n\n /**\n * 创建 GeoJSON\n */\n createGeoJSON(type: 'Point' | 'LineString' | 'Polygon', data: any): GeoJSONFeature {\n const coordinates: any = this.getCoordinates(type, data)\n const id = this.generateUUID()\n\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n geometry: {\n type,\n coordinates\n },\n properties: {\n id,\n value: data\n }\n }]\n }\n }\n\n /**\n * 获取坐标\n */\n private getCoordinates(type: string, data: any): any {\n if (type === 'Point') {\n return fromLonLat(transform(data.points, 'EPSG:3857', 'EPSG:4326'))\n } else if (type === 'LineString') {\n return this.setPointArray(data.points)\n } else if (type === 'Polygon') {\n return [this.setPointArray(data.points)]\n }\n return []\n }\n\n /**\n * 设置点数组\n */\n private setPointArray(points: any[]): number[][] {\n return points.map(item => fromLonLat(transform(item, 'EPSG:3857', 'EPSG:4326')))\n }\n\n /**\n * 生成 UUID\n */\n private generateUUID(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0\n const v = c === 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n }\n\n /**\n * 设置要素样式\n */\n setFeatureStyle(feature: Feature, options: FeatureStyleOptions): void {\n const style = this.createFeatureStyle(options)\n feature.setStyle(style)\n }\n\n /**\n * 创建要素样式\n */\n private createFeatureStyle(options: FeatureStyleOptions): Style {\n // 自定义样式\n if (options.style) {\n return options.style\n }\n\n // 自定义图标\n if (options.icon && this.icons.has(options.icon)) {\n const iconConfig = this.icons.get(options.icon)!\n return new Style({\n image: new Icon({\n anchor: iconConfig.anchor || [0.5, 0.5],\n src: iconConfig.src,\n scale: iconConfig.scale || 1\n })\n })\n }\n\n // 自定义图标配置\n if (options.iconConfig) {\n return new Style({\n image: new Icon({\n anchor: options.iconConfig.anchor || [0.5, 0.5],\n src: options.iconConfig.src,\n scale: options.iconConfig.scale || 1\n })\n })\n }\n\n // 默认样式\n return new Style({\n stroke: new Stroke({\n color: options.strokeColor || '#3388ff',\n width: options.strokeWidth || 2,\n }),\n fill: new Fill({\n color: options.fillColor || 'rgba(51, 136, 255, 0.2)',\n }),\n image: new Circle({\n radius: 7,\n fill: new Fill({ color: options.strokeColor || '#3388ff' }),\n stroke: new Stroke({\n color: '#ffffff',\n width: 2,\n }),\n }),\n })\n }\n\n // ==================== 动态缩放 ====================\n\n /**\n * 处理缩放变化\n */\n private handleZoomChange(): void {\n const zoom = this.getZoom()\n if (zoom !== undefined) {\n this.updateIconScale(zoom)\n }\n }\n\n /**\n * 更新图标缩放比例\n */\n private updateIconScale(zoom: number): void {\n let scale = 1\n\n if (zoom >= 14) {\n scale = 0.5\n } else if (zoom < 14 && zoom >= 12) {\n scale = 0.4\n } else if (zoom < 12) {\n scale = 0.3\n }\n\n // 更新所有图层的图标样式\n this.vectorLayers.forEach((layer: VectorLayer<VectorSource>) => {\n const features = layer.getSource()?.getFeatures()\n if (features) {\n features.forEach((feature: Feature) => {\n const style = feature.getStyle() as Style\n if (style) {\n const image = style.getImage()\n if (image instanceof Icon) {\n image.setScale(scale)\n }\n }\n })\n }\n })\n }\n\n // ==================== Overlay 管理 ====================\n\n /**\n * 创建 Overlay\n */\n createOverlay(options: OverlayOptions): void {\n const overlay = new Overlay({\n element: options.element,\n autoPan: options.autoPan !== false,\n offset: options.offset,\n positioning: options.positioning || 'bottom-center'\n })\n\n this.overlays.set(options.name, overlay)\n this.map.addOverlay(overlay)\n }\n\n /**\n * 显示 Overlay\n */\n showOverlay(name: string, coordinate: [number, number]): void {\n const overlay = this.overlays.get(name)\n if (overlay) {\n overlay.setPosition(fromLonLat(coordinate))\n }\n }\n\n /**\n * 隐藏 Overlay\n */\n hideOverlay(name: string): void {\n const overlay = this.overlays.get(name)\n if (overlay) {\n overlay.setPosition(undefined)\n }\n }\n\n /**\n * 移除 Overlay\n */\n removeOverlay(name: string): void {\n const overlay = this.overlays.get(name)\n if (overlay) {\n this.map.removeOverlay(overlay)\n this.overlays.delete(name)\n }\n }\n\n // ==================== 交互管理 ====================\n\n /**\n * 开始绘制\n */\n startDraw(options: DrawOptions): void {\n this.stopDraw()\n\n const source = options.layerName && this.vectorSources.has(options.layerName)\n ? this.vectorSources.get(options.layerName)!\n : new VectorSource()\n\n this.drawInteraction = new Draw({\n source,\n type: options.type,\n style: options.style,\n })\n\n this.map.addInteraction(this.drawInteraction)\n\n if (options.onDrawEnd) {\n this.drawInteraction.on('drawend', evt => {\n options.onDrawEnd?.(evt.feature)\n })\n }\n\n // 添加吸附交互\n this.snapInteraction = new Snap({ source })\n this.map.addInteraction(this.snapInteraction)\n }\n\n /**\n * 停止绘制\n */\n stopDraw(): void {\n if (this.drawInteraction) {\n this.map.removeInteraction(this.drawInteraction)\n this.drawInteraction = null\n }\n if (this.snapInteraction) {\n this.map.removeInteraction(this.snapInteraction)\n this.snapInteraction = null\n }\n }\n\n /**\n * 开始编辑\n */\n startModify(layerName = 'default'): void {\n this.stopModify()\n\n const source = this.vectorSources.get(layerName)\n if (!source) {\n console.warn(`图层 \"${layerName}\" 不存在`)\n return\n }\n\n this.modifyInteraction = new Modify({\n source,\n })\n\n this.map.addInteraction(this.modifyInteraction)\n\n // 添加吸附交互\n this.snapInteraction = new Snap({ source })\n this.map.addInteraction(this.snapInteraction)\n }\n\n /**\n * 停止编辑\n */\n stopModify(): void {\n if (this.modifyInteraction) {\n this.map.removeInteraction(this.modifyInteraction)\n this.modifyInteraction = null\n }\n if (this.snapInteraction) {\n this.map.removeInteraction(this.snapInteraction)\n this.snapInteraction = null\n }\n }\n\n /**\n * 开始选择\n */\n startSelect(layerName = 'default', onSelect?: (features: Feature[]) => void): void {\n this.stopSelect()\n\n this.selectInteraction = new Select({\n layers: this.vectorLayers.get(layerName) ? [this.vectorLayers.get(layerName)!] : undefined\n })\n\n this.map.addInteraction(this.selectInteraction)\n\n if (onSelect) {\n this.selectInteraction.on('select', evt => {\n onSelect(evt.selected)\n })\n }\n }\n\n /**\n * 停止选择\n */\n stopSelect(): void {\n if (this.selectInteraction) {\n this.map.removeInteraction(this.selectInteraction)\n this.selectInteraction = null\n }\n }\n\n /**\n * 获取选中的要素\n */\n getSelectedFeatures(): Feature[] {\n return this.selectInteraction?.getFeatures().getArray() || []\n }\n\n // ==================== 地图控制 ====================\n\n /**\n * 获取原始地图实例\n */\n getOlMap(): OlMap {\n return this.map\n }\n\n /**\n * 获取视图\n */\n getView(): View | undefined {\n return this.map.getView()\n }\n\n /**\n * 设置中心点\n */\n setCenter(coord: [number, number]): void {\n const view = this.getView()\n if (view) {\n view.setCenter(fromLonLat(coord))\n this.map.render()\n }\n }\n\n /**\n * 获取中心点\n */\n getCenter(): [number, number] | undefined {\n const view = this.getView()\n if (view) {\n const center = view.getCenter()\n return center ? (toLonLat(center) as [number, number]) : undefined\n }\n return undefined\n }\n\n /**\n * 设置缩放级别\n */\n setZoom(zoom: number): void {\n const view = this.getView()\n if (view) {\n view.setZoom(zoom)\n this.map.render()\n }\n }\n\n /**\n * 获取缩放级别\n */\n getZoom(): number | undefined {\n return this.getView()?.getZoom()\n }\n\n /**\n * 缩放到指定范围\n */\n fit(extent: number[] | null, options?: { padding?: number[]; duration?: number }): void {\n if (!extent) return\n\n const view = this.getView()\n if (view) {\n view.fit(extent, options)\n this.map.render()\n }\n }\n\n /**\n * 缩放到图层\n */\n fitLayer(layerName: string, options?: { padding?: number[]; duration?: number }): void {\n const source = this.vectorSources.get(layerName)\n if (source) {\n const extent = source.getExtent()\n if (extent && extent[0] !== Infinity) {\n this.fit(extent, options)\n }\n }\n }\n\n /**\n * 缩放到坐标数组\n */\n fitCoordinates(coordinates: [number, number][], options?: { padding?: number[]; duration?: number }): void {\n const extent = boundingExtent(coordinates)\n this.fit(extent, options)\n }\n\n /**\n * 添加图层\n */\n addLayer(layer: Layer): void {\n this.map.addLayer(layer.layer)\n }\n\n /**\n * 移除图层\n */\n removeMapLayer(layer: Layer): void {\n this.map.removeLayer(layer.layer)\n }\n\n /**\n * 更新地图大小\n */\n updateSize(): void {\n this.map.updateSize()\n }\n\n /**\n * 地图事件监听\n */\n on(event: string | string[], callback: (...args: unknown[]) => void): void {\n this.map.on(event as never, callback)\n }\n\n /**\n * 移除事件监听\n */\n off(event: string | string[], callback: (...args: unknown[]) => void): void {\n this.map.un(event as never, callback)\n }\n\n /**\n * 销毁地图\n */\n destroy(): void {\n this.stopDraw()\n this.stopModify()\n this.stopSelect()\n\n this.overlays.forEach((overlay: Overlay) => this.map.removeOverlay(overlay))\n this.overlays.clear()\n\n this.vectorLayers.forEach((layer: VectorLayer<VectorSource>) => this.map.removeLayer(layer))\n this.vectorLayers.clear()\n this.vectorSources.clear()\n\n this.map.setTarget(undefined)\n }\n}\n\n// ==================== 图层工厂函数 ====================\n\n/**\n * 创建 OSM 图层\n */\nexport function createOSMLayer(name = 'OSM'): Layer {\n return {\n name,\n layer: new TileLayer({\n source: new OSM(),\n }),\n }\n}\n\n/**\n * 创建 XYZ 图层(适用于高德、百度等)\n */\nexport function createXYZLayer(url: string, name = 'XYZ'): Layer {\n return {\n name,\n layer: new TileLayer({\n source: new XYZ({\n url,\n }),\n }),\n }\n}\n\n/**\n * 创建高德地图图层\n */\nexport function createGaodeLayer(name = '高德地图'): Layer {\n return createXYZLayer(\n 'https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',\n name\n )\n}\n\n/**\n * 创建天地图图层\n */\nexport function createTiandituLayer(token: string, type = 'vec', name = '天地图'): Layer {\n const url = `https://t{s}.tianditu.gov.cn/DataServer?T=${type}_w&x={x}&y={y}&l={z}&tk=${token}`\n return createXYZLayer(url, name)\n}\n\n// ==================== 工具函数 ====================\n\n/**\n * 经纬度转投影坐标\n */\nexport function lonLatToXY(lon: number, lat: number): number[] {\n return fromLonLat([lon, lat])\n}\n\n/**\n * 投影坐标转经纬度\n */\nexport function xyToLonLat(x: number, y: number): [number, number] {\n return toLonLat([x, y]) as [number, number]\n}\n\n/**\n * 创建点要素\n */\nexport function createPointFeature(coordinate: [number, number]): Feature {\n return new Feature({\n geometry: new Point(fromLonLat(coordinate)),\n })\n}\n\n/**\n * 创建线要素\n */\nexport function createLineFeature(coordinates: [number, number][]): Feature {\n return new Feature({\n geometry: new LineString(coordinates.map(coord => fromLonLat(coord))),\n })\n}\n\n/**\n * 创建面要素\n */\nexport function createPolygonFeature(coordinates: [number, number][][]): Feature {\n return new Feature({\n geometry: new Polygon(coordinates.map(ring => ring.map(coord => fromLonLat(coord)))),\n })\n}\n\n/**\n * 创建带样式的点要素\n */\nexport function createStyledPointFeature(coordinate: [number, number], style: Style): Feature {\n const feature = createPointFeature(coordinate)\n feature.setStyle(style)\n return feature\n}\n\n/**\n * 创建带样式的线要素\n */\nexport function createStyledLineFeature(coordinates: [number, number][], style: Style): Feature {\n const feature = createLineFeature(coordinates)\n feature.setStyle(style)\n return feature\n}\n\n/**\n * 创建带样式的面要素\n */\nexport function createStyledPolygonFeature(coordinates: [number, number][][], style: Style): Feature {\n const feature = createPolygonFeature(coordinates)\n feature.setStyle(style)\n return feature\n}\n\n/**\n * 创建图标样式\n */\nexport function createIconStyle(iconUrl: string, options?: {\n anchor?: [number, number]\n scale?: number\n color?: string\n}): Style {\n return new Style({\n image: new Icon({\n anchor: options?.anchor || [0.5, 0.5],\n src: iconUrl,\n scale: options?.scale || 1,\n color: options?.color\n })\n })\n}\n\n/**\n * 创建圆形样式\n */\nexport function createCircleStyle(options?: {\n radius?: number\n fillColor?: string\n strokeColor?: string\n strokeWidth?: number\n}): Style {\n return new Style({\n image: new Circle({\n radius: options?.radius || 7,\n fill: new Fill({ color: options?.fillColor || '#3388ff' }),\n stroke: new Stroke({\n color: options?.strokeColor || '#ffffff',\n width: options?.strokeWidth || 2,\n }),\n }),\n })\n}\n\n/**\n * 创建线样式\n */\nexport function createStrokeStyle(options?: {\n color?: string\n width?: number\n lineDash?: number[]\n}): Style {\n return new Style({\n stroke: new Stroke({\n color: options?.color || '#3388ff',\n width: options?.width || 2,\n lineDash: options?.lineDash\n }),\n })\n}\n\n/**\n * 创建面样式\n */\nexport function createFillStyle(options?: {\n fillColor?: string\n strokeColor?: string\n strokeWidth?: number\n}): Style {\n return new Style({\n stroke: new Stroke({\n color: options?.strokeColor || '#3388ff',\n width: options?.strokeWidth || 2,\n }),\n fill: new Fill({\n color: options?.fillColor || 'rgba(51, 136, 255, 0.2)',\n }),\n })\n}\n"]}
package/dist/map.d.cts ADDED
@@ -0,0 +1,6 @@
1
+ import 'ol/layer/Base';
2
+ import 'ol';
3
+ import 'ol/layer/Vector';
4
+ import 'ol/source/Vector';
5
+ import 'ol/style';
6
+ export { D as DrawOptions, a as DrawType, F as FeatureStyleOptions, G as GeoJSONFeature, b as GeoJSONFeatureItem, I as IconConfig, L as Layer, M as MapInstance, c as MapOptions, d as MapTheme, e as MarkerOptions, O as OverlayOptions, T as ThemeConfig, V as VectorLayerConfig, f as createCircleStyle, g as createFillStyle, h as createGaodeLayer, j as createIconStyle, k as createLineFeature, l as createOSMLayer, m as createPointFeature, n as createPolygonFeature, o as createStrokeStyle, p as createStyledLineFeature, q as createStyledPointFeature, r as createStyledPolygonFeature, s as createTiandituLayer, t as createXYZLayer, u as lonLatToXY, x as xyToLonLat } from './index-C0qUnb9Y.cjs';
package/dist/map.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import 'ol/layer/Base';
2
+ import 'ol';
3
+ import 'ol/layer/Vector';
4
+ import 'ol/source/Vector';
5
+ import 'ol/style';
6
+ export { D as DrawOptions, a as DrawType, F as FeatureStyleOptions, G as GeoJSONFeature, b as GeoJSONFeatureItem, I as IconConfig, L as Layer, M as MapInstance, c as MapOptions, d as MapTheme, e as MarkerOptions, O as OverlayOptions, T as ThemeConfig, V as VectorLayerConfig, f as createCircleStyle, g as createFillStyle, h as createGaodeLayer, j as createIconStyle, k as createLineFeature, l as createOSMLayer, m as createPointFeature, n as createPolygonFeature, o as createStrokeStyle, p as createStyledLineFeature, q as createStyledPointFeature, r as createStyledPolygonFeature, s as createTiandituLayer, t as createXYZLayer, u as lonLatToXY, x as xyToLonLat } from './index-C0qUnb9Y.js';