@antv/l7-map 2.9.20 → 2.9.22

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 (223) hide show
  1. package/es/camera.js +115 -85
  2. package/es/css/l7.css +98 -0
  3. package/es/earthmap.js +27 -43
  4. package/es/geo/edge_insets.js +44 -14
  5. package/es/geo/lng_lat.js +15 -11
  6. package/es/geo/lng_lat_bounds.js +6 -10
  7. package/es/geo/mercator.js +24 -12
  8. package/es/geo/point.js +2 -8
  9. package/es/geo/simple.js +24 -12
  10. package/es/geo/transform.js +421 -120
  11. package/es/handler/IHandler.js +1 -2
  12. package/es/handler/blockable_map_event.js +13 -14
  13. package/es/handler/box_zoom.js +43 -27
  14. package/es/handler/click_zoom.js +3 -8
  15. package/es/handler/events/event.js +3 -6
  16. package/es/handler/events/index.js +4 -5
  17. package/es/handler/events/map_mouse_event.js +30 -20
  18. package/es/handler/events/map_touch_event.js +55 -25
  19. package/es/handler/events/map_wheel_event.js +24 -15
  20. package/es/handler/events/render_event.js +3 -6
  21. package/es/handler/handler_inertia.js +10 -12
  22. package/es/handler/handler_manager.js +75 -72
  23. package/es/handler/handler_util.js +2 -2
  24. package/es/handler/keyboard.js +20 -15
  25. package/es/handler/map_event.js +23 -12
  26. package/es/handler/mouse/index.js +4 -5
  27. package/es/handler/mouse/mouse_handler.js +17 -21
  28. package/es/handler/mouse/mousepan_handler.js +5 -5
  29. package/es/handler/mouse/mousepitch_hander.js +7 -5
  30. package/es/handler/mouse/mouserotate_hander.js +7 -5
  31. package/es/handler/mouse/util.js +3 -3
  32. package/es/handler/scroll_zoom.js +103 -67
  33. package/es/handler/shim/dblclick_zoom.js +35 -8
  34. package/es/handler/shim/drag_pan.js +48 -12
  35. package/es/handler/shim/drag_rotate.js +39 -10
  36. package/es/handler/shim/touch_zoom_rotate.js +59 -16
  37. package/es/handler/tap/single_tap_recognizer.js +7 -17
  38. package/es/handler/tap/tap_drag_zoom.js +5 -18
  39. package/es/handler/tap/tap_recognizer.js +4 -15
  40. package/es/handler/tap/tap_zoom.js +4 -13
  41. package/es/handler/touch/index.js +5 -6
  42. package/es/handler/touch/touch_pan.js +9 -20
  43. package/es/handler/touch/touch_pitch.js +11 -23
  44. package/es/handler/touch/touch_rotate.js +15 -18
  45. package/es/handler/touch/touch_zoom.js +5 -19
  46. package/es/handler/touch/two_touch.js +14 -21
  47. package/es/hash.js +28 -16
  48. package/es/index.js +2 -3
  49. package/es/interface.js +1 -2
  50. package/es/map.js +26 -47
  51. package/es/util.js +15 -6
  52. package/es/utils/Aabb.js +11 -12
  53. package/es/utils/dom.js +30 -11
  54. package/es/utils/performance.js +10 -6
  55. package/es/utils/primitives.js +11 -10
  56. package/es/utils/task_queue.js +6 -13
  57. package/lib/camera.js +508 -721
  58. package/lib/css/l7.css +98 -0
  59. package/lib/earthmap.js +222 -392
  60. package/lib/geo/edge_insets.js +64 -83
  61. package/lib/geo/lng_lat.js +65 -81
  62. package/lib/geo/lng_lat_bounds.js +124 -165
  63. package/lib/geo/mercator.js +62 -78
  64. package/lib/geo/point.js +171 -239
  65. package/lib/geo/simple.js +61 -80
  66. package/lib/geo/transform.js +470 -653
  67. package/lib/handler/IHandler.js +17 -2
  68. package/lib/handler/blockable_map_event.js +63 -83
  69. package/lib/handler/box_zoom.js +123 -176
  70. package/lib/handler/click_zoom.js +56 -68
  71. package/lib/handler/events/event.js +35 -23
  72. package/lib/handler/events/index.js +35 -29
  73. package/lib/handler/events/map_mouse_event.js +42 -72
  74. package/lib/handler/events/map_touch_event.js +45 -80
  75. package/lib/handler/events/map_wheel_event.js +34 -58
  76. package/lib/handler/events/render_event.js +31 -52
  77. package/lib/handler/handler_inertia.js +113 -160
  78. package/lib/handler/handler_manager.js +379 -620
  79. package/lib/handler/handler_util.js +28 -10
  80. package/lib/handler/keyboard.js +114 -146
  81. package/lib/handler/map_event.js +84 -120
  82. package/lib/handler/mouse/index.js +35 -29
  83. package/lib/handler/mouse/mouse_handler.js +90 -123
  84. package/lib/handler/mouse/mousepan_handler.js +46 -65
  85. package/lib/handler/mouse/mousepitch_hander.js +44 -63
  86. package/lib/handler/mouse/mouserotate_hander.js +44 -63
  87. package/lib/handler/mouse/util.js +38 -20
  88. package/lib/handler/scroll_zoom.js +175 -258
  89. package/lib/handler/shim/dblclick_zoom.js +42 -48
  90. package/lib/handler/shim/drag_pan.js +48 -59
  91. package/lib/handler/shim/drag_rotate.js +43 -51
  92. package/lib/handler/shim/touch_zoom_rotate.js +58 -78
  93. package/lib/handler/tap/single_tap_recognizer.js +84 -117
  94. package/lib/handler/tap/tap_drag_zoom.js +92 -115
  95. package/lib/handler/tap/tap_recognizer.js +60 -78
  96. package/lib/handler/tap/tap_zoom.js +88 -119
  97. package/lib/handler/touch/index.js +38 -37
  98. package/lib/handler/touch/touch_pan.js +98 -132
  99. package/lib/handler/touch/touch_pitch.js +73 -117
  100. package/lib/handler/touch/touch_rotate.js +58 -94
  101. package/lib/handler/touch/touch_zoom.js +49 -84
  102. package/lib/handler/touch/two_touch.js +88 -128
  103. package/lib/hash.js +100 -133
  104. package/lib/index.js +19 -31
  105. package/lib/interface.js +17 -2
  106. package/lib/map.js +238 -420
  107. package/lib/util.js +67 -78
  108. package/lib/utils/Aabb.js +80 -132
  109. package/lib/utils/dom.js +84 -141
  110. package/lib/utils/performance.js +54 -42
  111. package/lib/utils/primitives.js +59 -51
  112. package/lib/utils/task_queue.js +61 -108
  113. package/package.json +11 -8
  114. package/es/camera.js.map +0 -1
  115. package/es/earthmap.js.map +0 -1
  116. package/es/geo/edge_insets.js.map +0 -1
  117. package/es/geo/lng_lat.js.map +0 -1
  118. package/es/geo/lng_lat_bounds.js.map +0 -1
  119. package/es/geo/mercator.js.map +0 -1
  120. package/es/geo/point.js.map +0 -1
  121. package/es/geo/simple.js.map +0 -1
  122. package/es/geo/transform.js.map +0 -1
  123. package/es/handler/IHandler.js.map +0 -1
  124. package/es/handler/blockable_map_event.js.map +0 -1
  125. package/es/handler/box_zoom.js.map +0 -1
  126. package/es/handler/click_zoom.js.map +0 -1
  127. package/es/handler/events/event.js.map +0 -1
  128. package/es/handler/events/index.js.map +0 -1
  129. package/es/handler/events/map_mouse_event.js.map +0 -1
  130. package/es/handler/events/map_touch_event.js.map +0 -1
  131. package/es/handler/events/map_wheel_event.js.map +0 -1
  132. package/es/handler/events/render_event.js.map +0 -1
  133. package/es/handler/handler_inertia.js.map +0 -1
  134. package/es/handler/handler_manager.js.map +0 -1
  135. package/es/handler/handler_util.js.map +0 -1
  136. package/es/handler/keyboard.js.map +0 -1
  137. package/es/handler/map_event.js.map +0 -1
  138. package/es/handler/mouse/index.js.map +0 -1
  139. package/es/handler/mouse/mouse_handler.js.map +0 -1
  140. package/es/handler/mouse/mousepan_handler.js.map +0 -1
  141. package/es/handler/mouse/mousepitch_hander.js.map +0 -1
  142. package/es/handler/mouse/mouserotate_hander.js.map +0 -1
  143. package/es/handler/mouse/util.js.map +0 -1
  144. package/es/handler/scroll_zoom.js.map +0 -1
  145. package/es/handler/shim/dblclick_zoom.js.map +0 -1
  146. package/es/handler/shim/drag_pan.js.map +0 -1
  147. package/es/handler/shim/drag_rotate.js.map +0 -1
  148. package/es/handler/shim/touch_zoom_rotate.js.map +0 -1
  149. package/es/handler/tap/single_tap_recognizer.js.map +0 -1
  150. package/es/handler/tap/tap_drag_zoom.js.map +0 -1
  151. package/es/handler/tap/tap_recognizer.js.map +0 -1
  152. package/es/handler/tap/tap_zoom.js.map +0 -1
  153. package/es/handler/touch/index.js.map +0 -1
  154. package/es/handler/touch/touch_pan.js.map +0 -1
  155. package/es/handler/touch/touch_pitch.js.map +0 -1
  156. package/es/handler/touch/touch_rotate.js.map +0 -1
  157. package/es/handler/touch/touch_zoom.js.map +0 -1
  158. package/es/handler/touch/two_touch.js.map +0 -1
  159. package/es/hash.js.map +0 -1
  160. package/es/index.js.map +0 -1
  161. package/es/interface.js.map +0 -1
  162. package/es/map.js.map +0 -1
  163. package/es/util.js.map +0 -1
  164. package/es/utils/Aabb.js.map +0 -1
  165. package/es/utils/dom.js.map +0 -1
  166. package/es/utils/performance.js.map +0 -1
  167. package/es/utils/primitives.js.map +0 -1
  168. package/es/utils/task_queue.js.map +0 -1
  169. package/lib/camera.js.map +0 -1
  170. package/lib/earthmap.js.map +0 -1
  171. package/lib/geo/edge_insets.js.map +0 -1
  172. package/lib/geo/lng_lat.js.map +0 -1
  173. package/lib/geo/lng_lat_bounds.js.map +0 -1
  174. package/lib/geo/mercator.js.map +0 -1
  175. package/lib/geo/point.js.map +0 -1
  176. package/lib/geo/simple.js.map +0 -1
  177. package/lib/geo/transform.js.map +0 -1
  178. package/lib/handler/IHandler.js.map +0 -1
  179. package/lib/handler/blockable_map_event.js.map +0 -1
  180. package/lib/handler/box_zoom.js.map +0 -1
  181. package/lib/handler/click_zoom.js.map +0 -1
  182. package/lib/handler/events/event.js.map +0 -1
  183. package/lib/handler/events/index.js.map +0 -1
  184. package/lib/handler/events/map_mouse_event.js.map +0 -1
  185. package/lib/handler/events/map_touch_event.js.map +0 -1
  186. package/lib/handler/events/map_wheel_event.js.map +0 -1
  187. package/lib/handler/events/render_event.js.map +0 -1
  188. package/lib/handler/handler_inertia.js.map +0 -1
  189. package/lib/handler/handler_manager.js.map +0 -1
  190. package/lib/handler/handler_util.js.map +0 -1
  191. package/lib/handler/keyboard.js.map +0 -1
  192. package/lib/handler/map_event.js.map +0 -1
  193. package/lib/handler/mouse/index.js.map +0 -1
  194. package/lib/handler/mouse/mouse_handler.js.map +0 -1
  195. package/lib/handler/mouse/mousepan_handler.js.map +0 -1
  196. package/lib/handler/mouse/mousepitch_hander.js.map +0 -1
  197. package/lib/handler/mouse/mouserotate_hander.js.map +0 -1
  198. package/lib/handler/mouse/util.js.map +0 -1
  199. package/lib/handler/scroll_zoom.js.map +0 -1
  200. package/lib/handler/shim/dblclick_zoom.js.map +0 -1
  201. package/lib/handler/shim/drag_pan.js.map +0 -1
  202. package/lib/handler/shim/drag_rotate.js.map +0 -1
  203. package/lib/handler/shim/touch_zoom_rotate.js.map +0 -1
  204. package/lib/handler/tap/single_tap_recognizer.js.map +0 -1
  205. package/lib/handler/tap/tap_drag_zoom.js.map +0 -1
  206. package/lib/handler/tap/tap_recognizer.js.map +0 -1
  207. package/lib/handler/tap/tap_zoom.js.map +0 -1
  208. package/lib/handler/touch/index.js.map +0 -1
  209. package/lib/handler/touch/touch_pan.js.map +0 -1
  210. package/lib/handler/touch/touch_pitch.js.map +0 -1
  211. package/lib/handler/touch/touch_rotate.js.map +0 -1
  212. package/lib/handler/touch/touch_zoom.js.map +0 -1
  213. package/lib/handler/touch/two_touch.js.map +0 -1
  214. package/lib/hash.js.map +0 -1
  215. package/lib/index.js.map +0 -1
  216. package/lib/interface.js.map +0 -1
  217. package/lib/map.js.map +0 -1
  218. package/lib/util.js.map +0 -1
  219. package/lib/utils/Aabb.js.map +0 -1
  220. package/lib/utils/dom.js.map +0 -1
  221. package/lib/utils/performance.js.map +0 -1
  222. package/lib/utils/primitives.js.map +0 -1
  223. package/lib/utils/task_queue.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handler/tap/tap_zoom.ts"],"names":["TapZoomHandler","zoomIn","TapRecognizer","numTouches","numTaps","zoomOut","reset","active","e","points","mapTouches","touchstart","touchmove","zoomInPoint","touchend","zoomOutPoint","preventDefault","setTimeout","cameraAnimation","map","easeTo","duration","zoom","getZoom","around","unproject","originalEvent","enabled"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport { EarthMap } from '../../earthmap';\nimport Point from '../../geo/point';\nimport { Map } from '../../map';\nimport TapRecognizer from './tap_recognizer';\n\nexport default class TapZoomHandler {\n public enabled: boolean;\n public active: boolean;\n public zoomIn: TapRecognizer;\n public zoomOut: TapRecognizer;\n\n constructor() {\n this.zoomIn = new TapRecognizer({\n numTouches: 1,\n numTaps: 2,\n });\n\n this.zoomOut = new TapRecognizer({\n numTouches: 2,\n numTaps: 1,\n });\n\n this.reset();\n }\n\n public reset() {\n this.active = false;\n this.zoomIn.reset();\n this.zoomOut.reset();\n }\n\n public touchstart(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n this.zoomIn.touchstart(e, points, mapTouches);\n this.zoomOut.touchstart(e, points, mapTouches);\n }\n\n public touchmove(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n this.zoomIn.touchmove(e, points, mapTouches);\n this.zoomOut.touchmove(e, points, mapTouches);\n }\n\n public touchend(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n const zoomInPoint = this.zoomIn.touchend(e, points, mapTouches);\n const zoomOutPoint = this.zoomOut.touchend(e, points, mapTouches);\n\n if (zoomInPoint) {\n this.active = true;\n e.preventDefault();\n setTimeout(() => this.reset(), 0);\n return {\n cameraAnimation: (map: Map | EarthMap) =>\n map.easeTo(\n {\n duration: 300,\n zoom: map.getZoom() + 1,\n around: map.unproject(zoomInPoint),\n },\n { originalEvent: e },\n ),\n };\n } else if (zoomOutPoint) {\n this.active = true;\n e.preventDefault();\n setTimeout(() => this.reset(), 0);\n return {\n cameraAnimation: (map: Map | EarthMap) =>\n map.easeTo(\n {\n duration: 300,\n zoom: map.getZoom() - 1,\n around: map.unproject(zoomOutPoint),\n },\n { originalEvent: e },\n ),\n };\n }\n }\n\n public touchcancel() {\n this.reset();\n }\n\n public enable() {\n this.enabled = true;\n }\n\n public disable() {\n this.enabled = false;\n this.reset();\n }\n\n public isEnabled() {\n return this.enabled;\n }\n\n public isActive() {\n return this.active;\n }\n}\n"],"file":"tap_zoom.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handler/touch/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA","sourcesContent":["import TouchPanHandler from './touch_pan';\nimport TouchPitchHandler from './touch_pitch';\nimport TouchRotateHandler from './touch_rotate';\nimport TouchZoomHandler from './touch_zoom';\n\nexport {\n TouchPanHandler,\n TouchPitchHandler,\n TouchRotateHandler,\n TouchZoomHandler,\n};\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handler/touch/touch_pan.ts"],"names":["TouchPanHandler","options","minTouches","clickTolerance","reset","active","touches","sum","Point","e","points","mapTouches","calculateTransform","preventDefault","length","enabled","touchPointSum","touchDeltaSum","touchDeltaCount","identifier","point","prevPoint","_add","sub","mag","panDelta","div","around"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;IAEqBA,e;AAQnB,2BAAYC,OAAZ,EAAiD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC/C,SAAKC,UAAL,GAAkB,CAAlB;AACA,SAAKC,cAAL,GAAsBF,OAAO,CAACE,cAAR,IAA0B,CAAhD;AACA,SAAKC,KAAL;AACD;;;;WAED,iBAAe;AACb,WAAKC,MAAL,GAAc,KAAd;AACA,WAAKC,OAAL,GAAe,EAAf;AACA,WAAKC,GAAL,GAAW,IAAIC,cAAJ,CAAU,CAAV,EAAa,CAAb,CAAX;AACD;;;WAED,oBAAkBC,CAAlB,EAAiCC,MAAjC,EAAkDC,UAAlD,EAAuE;AACrE,aAAO,KAAKC,kBAAL,CAAwBH,CAAxB,EAA2BC,MAA3B,EAAmCC,UAAnC,CAAP;AACD;;;WAED,mBAAiBF,CAAjB,EAAgCC,MAAhC,EAAiDC,UAAjD,EAAsE;AACpE,UAAI,CAAC,KAAKN,MAAV,EAAkB;AAChB;AACD;;AACDI,MAAAA,CAAC,CAACI,cAAF;AACA,aAAO,KAAKD,kBAAL,CAAwBH,CAAxB,EAA2BC,MAA3B,EAAmCC,UAAnC,CAAP;AACD;;;WAED,kBAAgBF,CAAhB,EAA+BC,MAA/B,EAAgDC,UAAhD,EAAqE;AACnE,WAAKC,kBAAL,CAAwBH,CAAxB,EAA2BC,MAA3B,EAAmCC,UAAnC;;AAEA,UAAI,KAAKN,MAAL,IAAeM,UAAU,CAACG,MAAX,GAAoB,KAAKZ,UAA5C,EAAwD;AACtD,aAAKE,KAAL;AACD;AACF;;;WAED,uBAAqB;AACnB,WAAKA,KAAL;AACD;;;WACD,kBAAgB;AACd,WAAKW,OAAL,GAAe,IAAf;AACD;;;WAED,mBAAiB;AACf,WAAKA,OAAL,GAAe,KAAf;AACA,WAAKX,KAAL;AACD;;;WAED,qBAAmB;AACjB,aAAO,KAAKW,OAAZ;AACD;;;WAED,oBAAkB;AAChB,aAAO,KAAKV,MAAZ;AACD;;;WAED,4BACEI,CADF,EAEEC,MAFF,EAGEC,UAHF,EAIE;AACA,UAAIA,UAAU,CAACG,MAAX,GAAoB,CAAxB,EAA2B;AACzB,aAAKT,MAAL,GAAc,IAAd;AACD;;AAED,UAAMC,OAAO,GAAG,gCAAaK,UAAb,EAAyBD,MAAzB,CAAhB;AAEA,UAAMM,aAAa,GAAG,IAAIR,cAAJ,CAAU,CAAV,EAAa,CAAb,CAAtB;AACA,UAAMS,aAAa,GAAG,IAAIT,cAAJ,CAAU,CAAV,EAAa,CAAb,CAAtB;AACA,UAAIU,eAAe,GAAG,CAAtB;;AAEA,WAAK,IAAMC,UAAX,IAAyBb,OAAzB,EAAkC;AAChC,YAAIA,OAAO,CAACa,UAAD,CAAX,EAAyB;AACvB,cAAMC,KAAK,GAAGd,OAAO,CAACa,UAAD,CAArB;AACA,cAAME,SAAS,GAAG,KAAKf,OAAL,CAAaa,UAAb,CAAlB;;AACA,cAAIE,SAAJ,EAAe;AACbL,YAAAA,aAAa,CAACM,IAAd,CAAmBF,KAAnB;;AACAH,YAAAA,aAAa,CAACK,IAAd,CAAmBF,KAAK,CAACG,GAAN,CAAUF,SAAV,CAAnB;;AACAH,YAAAA,eAAe;AACfZ,YAAAA,OAAO,CAACa,UAAD,CAAP,GAAsBC,KAAtB;AACD;AACF;AACF;;AAED,WAAKd,OAAL,GAAeA,OAAf;;AAEA,UAAIY,eAAe,GAAG,KAAKhB,UAAvB,IAAqC,CAACe,aAAa,CAACO,GAAd,EAA1C,EAA+D;AAC7D;AACD;;AAED,UAAMC,QAAQ,GAAGR,aAAa,CAACS,GAAd,CAAkBR,eAAlB,CAAjB;;AACA,WAAKX,GAAL,CAASe,IAAT,CAAcG,QAAd;;AACA,UAAI,KAAKlB,GAAL,CAASiB,GAAT,KAAiB,KAAKrB,cAA1B,EAA0C;AACxC;AACD;;AAED,UAAMwB,MAAM,GAAGX,aAAa,CAACU,GAAd,CAAkBR,eAAlB,CAAf;AAEA,aAAO;AACLS,QAAAA,MAAM,EAANA,MADK;AAELF,QAAAA,QAAQ,EAARA;AAFK,OAAP;AAID","sourcesContent":["// @ts-ignore\nimport Point from '../../geo/point';\nimport { indexTouches } from '../handler_util';\n\nexport default class TouchPanHandler {\n public enabled: boolean;\n public active: boolean;\n public touches: { [key: string]: Point };\n public minTouches: number;\n public clickTolerance: number;\n public sum: Point;\n\n constructor(options: { clickTolerance: number }) {\n this.minTouches = 1;\n this.clickTolerance = options.clickTolerance || 1;\n this.reset();\n }\n\n public reset() {\n this.active = false;\n this.touches = {};\n this.sum = new Point(0, 0);\n }\n\n public touchstart(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n return this.calculateTransform(e, points, mapTouches);\n }\n\n public touchmove(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n if (!this.active) {\n return;\n }\n e.preventDefault();\n return this.calculateTransform(e, points, mapTouches);\n }\n\n public touchend(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n this.calculateTransform(e, points, mapTouches);\n\n if (this.active && mapTouches.length < this.minTouches) {\n this.reset();\n }\n }\n\n public touchcancel() {\n this.reset();\n }\n public enable() {\n this.enabled = true;\n }\n\n public disable() {\n this.enabled = false;\n this.reset();\n }\n\n public isEnabled() {\n return this.enabled;\n }\n\n public isActive() {\n return this.active;\n }\n\n private calculateTransform(\n e: TouchEvent,\n points: Point[],\n mapTouches: Touch[],\n ) {\n if (mapTouches.length > 0) {\n this.active = true;\n }\n\n const touches = indexTouches(mapTouches, points);\n\n const touchPointSum = new Point(0, 0);\n const touchDeltaSum = new Point(0, 0);\n let touchDeltaCount = 0;\n\n for (const identifier in touches) {\n if (touches[identifier]) {\n const point = touches[identifier];\n const prevPoint = this.touches[identifier];\n if (prevPoint) {\n touchPointSum._add(point);\n touchDeltaSum._add(point.sub(prevPoint));\n touchDeltaCount++;\n touches[identifier] = point;\n }\n }\n }\n\n this.touches = touches;\n\n if (touchDeltaCount < this.minTouches || !touchDeltaSum.mag()) {\n return;\n }\n // @ts-ignore\n const panDelta = touchDeltaSum.div(touchDeltaCount);\n this.sum._add(panDelta);\n if (this.sum.mag() < this.clickTolerance) {\n return;\n }\n // @ts-ignore\n const around = touchPointSum.div(touchDeltaCount);\n\n return {\n around,\n panDelta,\n };\n }\n}\n"],"file":"touch_pan.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handler/touch/touch_pitch.ts"],"names":["isVertical","vector","Math","abs","y","x","ALLOWED_SINGLE_TOUCH_TIME","TouchPitchHandler","valid","undefined","firstMove","lastPoints","points","sub","center","e","vectorA","vectorB","gestureBeginsVertically","timeStamp","active","yDeltaAverage","degreesPerPixelMoved","pitchDelta","threshold","movedA","mag","movedB","isSameDirection","TwoTouchHandler"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;AAEA,SAASA,UAAT,CAAoBC,MAApB,EAAsD;AACpD,SAAOC,IAAI,CAACC,GAAL,CAASF,MAAM,CAACG,CAAhB,IAAqBF,IAAI,CAACC,GAAL,CAASF,MAAM,CAACI,CAAhB,CAA5B;AACD;;AAED,IAAMC,yBAAyB,GAAG,GAAlC;;IAEqBC,iB;;;;;;;;;;;;;;;;;;;;;;;WAKnB,iBAAe;AACb;AACA,WAAKC,KAAL,GAAaC,SAAb;AACA,aAAO,KAAKC,SAAZ;AACA,aAAO,KAAKC,UAAZ;AACD;;;WAED,eAAaC,MAAb,EAAqC;AACnC,WAAKD,UAAL,GAAkBC,MAAlB;;AACA,UAAIZ,UAAU,CAACY,MAAM,CAAC,CAAD,CAAN,CAAUC,GAAV,CAAcD,MAAM,CAAC,CAAD,CAApB,CAAD,CAAd,EAA0C;AAExC,aAAKJ,KAAL,GAAa,KAAb;AACD;AACF;;;WAED,cAAYI,MAAZ,EAAoCE,MAApC,EAAmDC,CAAnD,EAAkE;AAChE,UAAMC,OAAO,GAAGJ,MAAM,CAAC,CAAD,CAAN,CAAUC,GAAV,CAAc,KAAKF,UAAL,CAAgB,CAAhB,CAAd,CAAhB;AACA,UAAMM,OAAO,GAAGL,MAAM,CAAC,CAAD,CAAN,CAAUC,GAAV,CAAc,KAAKF,UAAL,CAAgB,CAAhB,CAAd,CAAhB;AAEA,WAAKH,KAAL,GAAa,KAAKU,uBAAL,CAA6BF,OAA7B,EAAsCC,OAAtC,EAA+CF,CAAC,CAACI,SAAjD,CAAb;;AACA,UAAI,CAAC,KAAKX,KAAV,EAAiB;AACf;AACD;;AAED,WAAKG,UAAL,GAAkBC,MAAlB;AACA,WAAKQ,MAAL,GAAc,IAAd;AACA,UAAMC,aAAa,GAAG,CAACL,OAAO,CAACZ,CAAR,GAAYa,OAAO,CAACb,CAArB,IAA0B,CAAhD;AACA,UAAMkB,oBAAoB,GAAG,CAAC,GAA9B;AACA,aAAO;AACLC,QAAAA,UAAU,EAAEF,aAAa,GAAGC;AADvB,OAAP;AAGD;;;WAED,iCACEN,OADF,EAEEC,OAFF,EAGEE,SAHF,EAIE;AACA,UAAI,KAAKX,KAAL,KAAeC,SAAnB,EAA8B;AAC5B,eAAO,KAAKD,KAAZ;AACD;;AAED,UAAMgB,SAAS,GAAG,CAAlB;AACA,UAAMC,MAAM,GAAGT,OAAO,CAACU,GAAR,MAAiBF,SAAhC;AACA,UAAMG,MAAM,GAAGV,OAAO,CAACS,GAAR,MAAiBF,SAAhC;;AAGA,UAAI,CAACC,MAAD,IAAW,CAACE,MAAhB,EAAwB;AACtB;AACD;;AAID,UAAI,CAACF,MAAD,IAAW,CAACE,MAAhB,EAAwB;AACtB,YAAI,KAAKjB,SAAL,KAAmBD,SAAvB,EAAkC;AAChC,eAAKC,SAAL,GAAiBS,SAAjB;AACD;;AAED,YAAIA,SAAS,GAAG,KAAKT,SAAjB,GAA6BJ,yBAAjC,EAA4D;AAE1D,iBAAOG,SAAP;AACD,SAHD,MAGO;AACL,iBAAO,KAAP;AACD;AACF;;AAED,UAAMmB,eAAe,GAAGZ,OAAO,CAACZ,CAAR,GAAY,CAAZ,KAAkBa,OAAO,CAACb,CAAR,GAAY,CAAtD;AACA,aAAOJ,UAAU,CAACgB,OAAD,CAAV,IAAuBhB,UAAU,CAACiB,OAAD,CAAjC,IAA8CW,eAArD;AACD;;;EAzE4CC,kB","sourcesContent":["// @ts-ignore\nimport Point from '../../geo/point';\nimport TwoTouchHandler from './two_touch';\n\nfunction isVertical(vector: { x: number; y: number }) {\n return Math.abs(vector.y) > Math.abs(vector.x);\n}\n\nconst ALLOWED_SINGLE_TOUCH_TIME = 100;\n\nexport default class TouchPitchHandler extends TwoTouchHandler {\n public valid: boolean | void;\n public firstMove: number;\n public lastPoints: [Point, Point];\n\n public reset() {\n super.reset();\n this.valid = undefined;\n delete this.firstMove;\n delete this.lastPoints;\n }\n\n public start(points: [Point, Point]) {\n this.lastPoints = points;\n if (isVertical(points[0].sub(points[1]))) {\n // fingers are more horizontal than vertical\n this.valid = false;\n }\n }\n\n public move(points: [Point, Point], center: Point, e: TouchEvent) {\n const vectorA = points[0].sub(this.lastPoints[0]);\n const vectorB = points[1].sub(this.lastPoints[1]);\n\n this.valid = this.gestureBeginsVertically(vectorA, vectorB, e.timeStamp);\n if (!this.valid) {\n return;\n }\n\n this.lastPoints = points;\n this.active = true;\n const yDeltaAverage = (vectorA.y + vectorB.y) / 2;\n const degreesPerPixelMoved = -0.5;\n return {\n pitchDelta: yDeltaAverage * degreesPerPixelMoved,\n };\n }\n\n public gestureBeginsVertically(\n vectorA: Point,\n vectorB: Point,\n timeStamp: number,\n ) {\n if (this.valid !== undefined) {\n return this.valid;\n }\n\n const threshold = 2;\n const movedA = vectorA.mag() >= threshold;\n const movedB = vectorB.mag() >= threshold;\n\n // neither finger has moved a meaningful amount, wait\n if (!movedA && !movedB) {\n return;\n }\n\n // One finger has moved and the other has not.\n // If enough time has passed, decide it is not a pitch.\n if (!movedA || !movedB) {\n if (this.firstMove === undefined) {\n this.firstMove = timeStamp;\n }\n\n if (timeStamp - this.firstMove < ALLOWED_SINGLE_TOUCH_TIME) {\n // still waiting for a movement from the second finger\n return undefined;\n } else {\n return false;\n }\n }\n\n const isSameDirection = vectorA.y > 0 === vectorB.y > 0;\n return isVertical(vectorA) && isVertical(vectorB) && isSameDirection;\n }\n}\n"],"file":"touch_pitch.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handler/touch/touch_rotate.ts"],"names":["ROTATION_THRESHOLD","getBearingDelta","a","b","angleWith","Math","PI","TouchRotateHandler","minDiameter","startVector","vector","points","sub","dist","pinchAround","lastVector","active","isBelowThreshold","bearingDelta","min","mag","circumference","threshold","bearingDeltaSinceStart","abs","TwoTouchHandler"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;;;;;AAEA,IAAMA,kBAAkB,GAAG,EAA3B;;AAEA,SAASC,eAAT,CAAyBC,CAAzB,EAAmCC,CAAnC,EAA6C;AAC3C,SAAQD,CAAC,CAACE,SAAF,CAAYD,CAAZ,IAAiB,GAAlB,GAAyBE,IAAI,CAACC,EAArC;AACD;;IAEoBC,kB;;;;;;;;;;;;;;;;;;;;;WAGnB,iBAAe;AACb;AACA,aAAO,KAAKC,WAAZ;AACA,aAAO,KAAKC,WAAZ;AACA,aAAO,KAAKC,MAAZ;AACD;;;WAED,eAAaC,MAAb,EAAqC;AACnC,WAAKF,WAAL,GAAmB,KAAKC,MAAL,GAAcC,MAAM,CAAC,CAAD,CAAN,CAAUC,GAAV,CAAcD,MAAM,CAAC,CAAD,CAApB,CAAjC;AACA,WAAKH,WAAL,GAAmBG,MAAM,CAAC,CAAD,CAAN,CAAUE,IAAV,CAAeF,MAAM,CAAC,CAAD,CAArB,CAAnB;AACD;;;WAED,cAAYA,MAAZ,EAAoCG,WAApC,EAAwD;AACtD,UAAMC,UAAU,GAAG,KAAKL,MAAxB;AACA,WAAKA,MAAL,GAAcC,MAAM,CAAC,CAAD,CAAN,CAAUC,GAAV,CAAcD,MAAM,CAAC,CAAD,CAApB,CAAd;;AAEA,UAAI,CAAC,KAAKK,MAAN,IAAgB,KAAKC,gBAAL,CAAsB,KAAKP,MAA3B,CAApB,EAAwD;AACtD;AACD;;AACD,WAAKM,MAAL,GAAc,IAAd;AAEA,aAAO;AACLE,QAAAA,YAAY,EAAEjB,eAAe,CAAC,KAAKS,MAAN,EAAcK,UAAd,CADxB;AAELD,QAAAA,WAAW,EAAXA;AAFK,OAAP;AAID;;;WAED,0BAAyBJ,MAAzB,EAAwC;AAWtC,WAAKF,WAAL,GAAmBH,IAAI,CAACc,GAAL,CAAS,KAAKX,WAAd,EAA2BE,MAAM,CAACU,GAAP,EAA3B,CAAnB;AACA,UAAMC,aAAa,GAAGhB,IAAI,CAACC,EAAL,GAAU,KAAKE,WAArC;AACA,UAAMc,SAAS,GAAItB,kBAAkB,GAAGqB,aAAtB,GAAuC,GAAzD;AAEA,UAAME,sBAAsB,GAAGtB,eAAe,CAACS,MAAD,EAAS,KAAKD,WAAd,CAA9C;AACA,aAAOJ,IAAI,CAACmB,GAAL,CAASD,sBAAT,IAAmCD,SAA1C;AACD;;;EA/C6CG,kB","sourcesContent":["// @ts-ignore\nimport Point from '../../geo/point';\nimport DOM from '../../utils/dom';\nimport TwoTouchHandler from './two_touch';\n\nconst ROTATION_THRESHOLD = 25; // pixels along circumference of touch circle\n\nfunction getBearingDelta(a: Point, b: Point) {\n return (a.angleWith(b) * 180) / Math.PI;\n}\n\nexport default class TouchRotateHandler extends TwoTouchHandler {\n private minDiameter: number;\n\n public reset() {\n super.reset();\n delete this.minDiameter;\n delete this.startVector;\n delete this.vector;\n }\n\n public start(points: [Point, Point]) {\n this.startVector = this.vector = points[0].sub(points[1]);\n this.minDiameter = points[0].dist(points[1]);\n }\n\n public move(points: [Point, Point], pinchAround: Point) {\n const lastVector = this.vector;\n this.vector = points[0].sub(points[1]);\n\n if (!this.active && this.isBelowThreshold(this.vector)) {\n return;\n }\n this.active = true;\n\n return {\n bearingDelta: getBearingDelta(this.vector, lastVector),\n pinchAround,\n };\n }\n\n private isBelowThreshold(vector: Point) {\n /*\n * The threshold before a rotation actually happens is configured in\n * pixels alongth circumference of the circle formed by the two fingers.\n * This makes the threshold in degrees larger when the fingers are close\n * together and smaller when the fingers are far apart.\n *\n * Use the smallest diameter from the whole gesture to reduce sensitivity\n * when pinching in and out.\n */\n\n this.minDiameter = Math.min(this.minDiameter, vector.mag());\n const circumference = Math.PI * this.minDiameter;\n const threshold = (ROTATION_THRESHOLD / circumference) * 360;\n\n const bearingDeltaSinceStart = getBearingDelta(vector, this.startVector);\n return Math.abs(bearingDeltaSinceStart) < threshold;\n }\n}\n"],"file":"touch_rotate.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handler/touch/touch_zoom.ts"],"names":["ZOOM_THRESHOLD","getZoomDelta","distance","lastDistance","Math","log","LN2","TouchZoomHandler","startDistance","points","dist","pinchAround","active","abs","zoomDelta","TwoTouchHandler"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;;;;;AAEA,IAAMA,cAAc,GAAG,GAAvB;;AACA,SAASC,YAAT,CAAsBC,QAAtB,EAAwCC,YAAxC,EAA8D;AAC5D,SAAOC,IAAI,CAACC,GAAL,CAASH,QAAQ,GAAGC,YAApB,IAAoCC,IAAI,CAACE,GAAhD;AACD;;IACoBC,gB;;;;;;;;;;;;;;;;;;;;;;WAInB,iBAAe;AACb;AACA,aAAO,KAAKL,QAAZ;AACA,aAAO,KAAKM,aAAZ;AACD;;;WAED,eAAaC,MAAb,EAAqC;AACnC,WAAKD,aAAL,GAAqB,KAAKN,QAAL,GAAgBO,MAAM,CAAC,CAAD,CAAN,CAAUC,IAAV,CAAeD,MAAM,CAAC,CAAD,CAArB,CAArC;AACD;;;WAED,cAAYA,MAAZ,EAAoCE,WAApC,EAAwD;AACtD,UAAMR,YAAY,GAAG,KAAKD,QAA1B;AACA,WAAKA,QAAL,GAAgBO,MAAM,CAAC,CAAD,CAAN,CAAUC,IAAV,CAAeD,MAAM,CAAC,CAAD,CAArB,CAAhB;;AACA,UACE,CAAC,KAAKG,MAAN,IACAR,IAAI,CAACS,GAAL,CAASZ,YAAY,CAAC,KAAKC,QAAN,EAAgB,KAAKM,aAArB,CAArB,IAA4DR,cAF9D,EAGE;AACA;AACD;;AACD,WAAKY,MAAL,GAAc,IAAd;AACA,aAAO;AACLE,QAAAA,SAAS,EAAEb,YAAY,CAAC,KAAKC,QAAN,EAAgBC,YAAhB,CADlB;AAELQ,QAAAA,WAAW,EAAXA;AAFK,OAAP;AAID;;;EA5B2CI,kB","sourcesContent":["// @ts-ignore\nimport Point from '../../geo/point';\nimport DOM from '../../utils/dom';\nimport TwoTouchHandler from './two_touch';\n\nconst ZOOM_THRESHOLD = 0.1;\nfunction getZoomDelta(distance: number, lastDistance: number) {\n return Math.log(distance / lastDistance) / Math.LN2;\n}\nexport default class TouchZoomHandler extends TwoTouchHandler {\n private distance: number;\n private startDistance: number;\n\n public reset() {\n super.reset();\n delete this.distance;\n delete this.startDistance;\n }\n\n public start(points: [Point, Point]) {\n this.startDistance = this.distance = points[0].dist(points[1]);\n }\n\n public move(points: [Point, Point], pinchAround: Point) {\n const lastDistance = this.distance;\n this.distance = points[0].dist(points[1]);\n if (\n !this.active &&\n Math.abs(getZoomDelta(this.distance, this.startDistance)) < ZOOM_THRESHOLD\n ) {\n return;\n }\n this.active = true;\n return {\n zoomDelta: getZoomDelta(this.distance, lastDistance),\n pinchAround,\n };\n }\n}\n"],"file":"touch_zoom.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/handler/touch/two_touch.ts"],"names":["TwoTouchHandler","reset","active","firstTwoTouches","points","pinchAround","e","mapTouches","length","identifier","start","preventDefault","idA","idB","a","getTouchById","b","aroundCenter","add","div","move","DOM","suppressClick","options","enabled","around","i"],"mappings":"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","sourcesContent":["// @ts-ignore\nimport Point from '../../geo/point';\nimport DOM from '../../utils/dom';\n\nexport default class TwoTouchHandler {\n protected enabled: boolean;\n protected active: boolean;\n protected firstTwoTouches: [number, number];\n protected vector: Point;\n protected startVector: Point;\n protected aroundCenter: boolean;\n\n constructor() {\n this.reset();\n }\n\n public reset() {\n this.active = false;\n delete this.firstTwoTouches;\n }\n public start(points: [Point, Point]) {\n return;\n } // eslint-disable-line\n public move(\n points: [Point, Point],\n pinchAround: Point | null,\n e: TouchEvent,\n ) {\n return;\n } // eslint-disable-line\n\n public touchstart(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n // console.log(e.target, e.targetTouches.length ? e.targetTouches[0].target : null);\n // log('touchstart', points, e.target.innerHTML, e.targetTouches.length ? e.targetTouches[0].target.innerHTML: undefined);\n if (this.firstTwoTouches || mapTouches.length < 2) {\n return;\n }\n\n this.firstTwoTouches = [mapTouches[0].identifier, mapTouches[1].identifier];\n\n // implemented by child classes\n this.start([points[0], points[1]]);\n }\n\n public touchmove(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n if (!this.firstTwoTouches) {\n return;\n }\n\n e.preventDefault();\n\n const [idA, idB] = this.firstTwoTouches;\n const a = getTouchById(mapTouches, points, idA);\n const b = getTouchById(mapTouches, points, idB);\n if (!a || !b) {\n return;\n }\n const pinchAround = this.aroundCenter ? null : a.add(b).div(2);\n\n // implemented by child classes\n return this.move([a, b], pinchAround, e);\n }\n\n public touchend(e: TouchEvent, points: Point[], mapTouches: Touch[]) {\n if (!this.firstTwoTouches) {\n return;\n }\n\n const [idA, idB] = this.firstTwoTouches;\n const a = getTouchById(mapTouches, points, idA);\n const b = getTouchById(mapTouches, points, idB);\n if (a && b) {\n return;\n }\n\n if (this.active) {\n DOM.suppressClick();\n }\n\n this.reset();\n }\n\n public touchcancel() {\n this.reset();\n }\n\n public enable(options?: { around?: 'center' }) {\n this.enabled = true;\n this.aroundCenter = !!options && options.around === 'center';\n }\n\n public disable() {\n this.enabled = false;\n this.reset();\n }\n\n public isEnabled() {\n return this.enabled;\n }\n\n public isActive() {\n return this.active;\n }\n}\n\nfunction getTouchById(\n mapTouches: Touch[],\n points: Point[],\n identifier: number,\n) {\n for (let i = 0; i < mapTouches.length; i++) {\n if (mapTouches[i].identifier === identifier) {\n return points[i];\n }\n }\n}\n"],"file":"two_touch.js"}
package/lib/hash.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hash.ts"],"names":["Hash","hashName","loc","getCurrentHash","length","some","v","isNaN","bearing","map","dragRotate","isEnabled","touchZoomRotate","getBearing","jumpTo","center","zoom","pitch","hash","window","location","replace","keyval","split","part","forEach","getHashString","history","replaceState","state","SecurityError","encodeURIComponent","updateHash","updateHashUnthrottled","$window","addEventListener","onHashChange","on","removeEventListener","off","mapFeedback","getCenter","Math","round","getZoom","precision","ceil","LN2","log","LN10","m","pow","lng","lat","getPitch","found","parts","slice","key","filter","a","push","join"],"mappings":"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","sourcesContent":["// @ts-ignore\n// tslint:disable-next-line:no-submodule-imports\nimport { $window } from '@antv/l7-utils';\nimport { throttle } from 'lodash';\nimport { Map } from './map';\n\n/*\n * Adds the map's position to its page's location hash.\n * Passed as an option to the map object.\n *\n * @returns {Hash} `this`\n */\nclass Hash {\n private map: Map;\n private updateHash: () => number | void;\n private hashName?: string;\n\n constructor(hashName?: string) {\n this.hashName = hashName && encodeURIComponent(hashName);\n\n // Mobile Safari doesn't allow updating the hash more than 100 times per 30 seconds.\n this.updateHash = throttle(this.updateHashUnthrottled, (30 * 1000) / 100);\n }\n public addTo(map: Map) {\n this.map = map;\n $window.addEventListener('hashchange', this.onHashChange, false);\n this.map.on('moveend', this.updateHash);\n return this;\n }\n public remove() {\n $window.removeEventListener('hashchange', this.onHashChange, false);\n this.map.off('moveend', this.updateHash);\n // clearTimeout(this.updateHash());\n\n // @ts-ignore\n delete this.map;\n return this;\n }\n\n public onHashChange = () => {\n const loc = this.getCurrentHash();\n if (loc.length >= 3 && !loc.some((v: string) => isNaN(+v))) {\n const bearing =\n this.map.dragRotate.isEnabled() && this.map.touchZoomRotate.isEnabled()\n ? +(loc[3] || 0)\n : this.map.getBearing();\n this.map.jumpTo({\n center: [+loc[2], +loc[1]],\n zoom: +loc[0],\n bearing,\n pitch: +(loc[4] || 0),\n });\n return true;\n }\n return false;\n };\n\n private getCurrentHash = () => {\n // Get the current hash from location, stripped from its number sign\n const hash = window.location.hash.replace('#', '');\n if (this.hashName) {\n // Split the parameter-styled hash into parts and find the value we need\n let keyval;\n hash\n .split('&')\n .map((part) => part.split('='))\n .forEach((part) => {\n if (part[0] === this.hashName) {\n keyval = part;\n }\n });\n return (keyval ? keyval[1] || '' : '').split('/');\n }\n return hash.split('/');\n };\n\n private getHashString(mapFeedback?: boolean) {\n const center = this.map.getCenter();\n const zoom = Math.round(this.map.getZoom() * 100) / 100;\n // derived from equation: 512px * 2^z / 360 / 10^d < 0.5px\n const precision = Math.ceil(\n (zoom * Math.LN2 + Math.log(512 / 360 / 0.5)) / Math.LN10,\n );\n const m = Math.pow(10, precision);\n const lng = Math.round(center.lng * m) / m;\n const lat = Math.round(center.lat * m) / m;\n const bearing = this.map.getBearing();\n const pitch = this.map.getPitch();\n let hash = '';\n if (mapFeedback) {\n // new map feedback site has some constraints that don't allow\n // us to use the same hash format as we do for the Map hash option.\n hash += `/${lng}/${lat}/${zoom}`;\n } else {\n hash += `${zoom}/${lat}/${lng}`;\n }\n\n if (bearing || pitch) {\n hash += `/${Math.round(bearing * 10) / 10}`;\n }\n if (pitch) {\n hash += `/${Math.round(pitch)}`;\n }\n\n if (this.hashName) {\n const hashName = this.hashName;\n let found = false;\n const parts = window.location.hash\n .slice(1)\n .split('&')\n .map((part) => {\n const key = part.split('=')[0];\n if (key === hashName) {\n found = true;\n return `${key}=${hash}`;\n }\n return part;\n })\n .filter((a) => a);\n if (!found) {\n parts.push(`${hashName}=${hash}`);\n }\n return `#${parts.join('&')}`;\n }\n\n return `#${hash}`;\n }\n\n private updateHashUnthrottled = () => {\n const hash = this.getHashString();\n try {\n window.history.replaceState(window.history.state, '', hash);\n } catch (SecurityError) {\n // IE11 does not allow this if the page is within an iframe created\n // with iframe.contentWindow.document.write(...).\n // https://github.com/mapbox/mapbox-gl-js/issues/7410\n }\n };\n}\n\nexport default Hash;\n"],"file":"hash.js"}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './map';\nexport * from './earthmap';\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"interface.js"}
package/lib/map.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/map.ts"],"names":["defaultMinZoom","defaultMaxZoom","defaultMinPitch","defaultMaxPitch","DefaultOptions","hash","zoom","center","pitch","bearing","interactive","minZoom","maxZoom","minPitch","maxPitch","scrollZoom","boxZoom","dragRotate","dragPan","keyboard","doubleClickZoom","touchZoomRotate","touchPitch","bearingSnap","clickTolerance","pitchWithRotate","trackResize","renderWorldCopies","pitchEnabled","rotateEnabled","Map","options","TaskQueue","update","event","resize","originalEvent","isMini","initMiniContainer","initContainer","handlers","HandlerManager","window","addEventListener","onWindowOnline","onWindowResize","hashName","undefined","Hash","addTo","onHashChange","jumpTo","bounds","fitBounds","fitBoundsOptions","duration","eventData","dimensions","containerDimensions","width","height","transform","fireMoving","moving","stop","emit","$window","Event","container","canvas","canvasContainer","lngLat","locationPoint","LngLat","convert","point","pointLocation","Point","getBounds","getMaxBounds","setMaxBounds","LngLatBounds","style","getZoom","setZoom","Error","getPitch","setPitch","removeChild","frame","cancel","renderTaskQueue","clear","cb","add","id","remove","paintStartTimeStamp","PerformanceUtils","time","run","document","getElementById","HTMLElement","classList","DOM","create","devicePixelRatio","clientWidth","clientHeight","Camera"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AACA;;AAEA;;AAEA;;AASA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,cAAc,GAAG,CAAC,CAAxB;AACA,IAAMC,cAAc,GAAG,EAAvB;AAGA,IAAMC,eAAe,GAAG,CAAxB;AACA,IAAMC,eAAe,GAAG,EAAxB;AAEA,IAAMC,cAA2B,GAAG;AAClCC,EAAAA,IAAI,EAAE,KAD4B;AAElCC,EAAAA,IAAI,EAAE,CAAC,CAF2B;AAGlCC,EAAAA,MAAM,EAAE,CAAC,GAAD,EAAM,EAAN,CAH0B;AAIlCC,EAAAA,KAAK,EAAE,CAJ2B;AAKlCC,EAAAA,OAAO,EAAE,CALyB;AAMlCC,EAAAA,WAAW,EAAE,IANqB;AAOlCC,EAAAA,OAAO,EAAEX,cAPyB;AAQlCY,EAAAA,OAAO,EAAEX,cARyB;AASlCY,EAAAA,QAAQ,EAAEX,eATwB;AAUlCY,EAAAA,QAAQ,EAAEX,eAVwB;AAWlCY,EAAAA,UAAU,EAAE,IAXsB;AAYlCC,EAAAA,OAAO,EAAE,IAZyB;AAalCC,EAAAA,UAAU,EAAE,IAbsB;AAclCC,EAAAA,OAAO,EAAE,IAdyB;AAelCC,EAAAA,QAAQ,EAAE,IAfwB;AAgBlCC,EAAAA,eAAe,EAAE,IAhBiB;AAiBlCC,EAAAA,eAAe,EAAE,IAjBiB;AAkBlCC,EAAAA,UAAU,EAAE,IAlBsB;AAmBlCC,EAAAA,WAAW,EAAE,CAnBqB;AAoBlCC,EAAAA,cAAc,EAAE,CApBkB;AAqBlCC,EAAAA,eAAe,EAAE,IArBiB;AAsBlCC,EAAAA,WAAW,EAAE,IAtBqB;AAuBlCC,EAAAA,iBAAiB,EAAE,IAvBe;AAwBlCC,EAAAA,YAAY,EAAE,IAxBoB;AAyBlCC,EAAAA,aAAa,EAAE;AAzBmB,CAApC;;IA2BaC,G;;;;;AAkBX,eAAYC,OAAZ,EAA2C;AAAA;;AAAA;AACzC,8BAAM,qBAAM,EAAN,EAAU3B,cAAV,EAA0B2B,OAA1B,CAAN;AADyC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kGAJN,IAAIC,mBAAJ,EAIM;AAAA;AAAA,8FAFZ,IAEY;AAAA;AAAA,iGA+SlB,YAAM;AAC7B,YAAKC,MAAL;AACD,KAjT0C;AAAA,iGAmTlB,UAACC,KAAD,EAAkB;AACzC,UAAI,MAAKR,WAAT,EAAsB;AACpB,cAAKS,MAAL,CAAY;AAAEC,UAAAA,aAAa,EAAEF;AAAjB,SAAZ,EAAsCD,MAAtC;AACD;AACF,KAvT0C;;AAEzC,QAAII,eAAJ,EAAY;AACV,YAAKC,iBAAL;AACD,KAFD,MAEO;AACL,YAAKC,aAAL;AACD;;AAED,UAAKJ,MAAL;;AACA,UAAKK,QAAL,GAAgB,IAAIC,wBAAJ,8CAAyB,MAAKV,OAA9B,CAAhB;;AAEA,QAAI,OAAOW,MAAP,KAAkB,WAAtB,EAAmC;AACjCA,MAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC,MAAKC,cAAvC,EAAuD,KAAvD;AACAF,MAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC,MAAKE,cAAvC,EAAuD,KAAvD;AACAH,MAAAA,MAAM,CAACC,gBAAP,CAAwB,mBAAxB,EAA6C,MAAKE,cAAlD,EAAkE,KAAlE;AACD;;AAED,QAAI,CAACR,eAAL,EAAa;AACX,UAAMS,QAAQ,GACX,OAAOf,OAAO,CAAC1B,IAAf,KAAwB,QAAxB,IAAoC0B,OAAO,CAAC1B,IAA7C,IAAsD0C,SADxD;;AAEA,UAAIhB,OAAO,CAAC1B,IAAZ,EAAkB;AAChB,cAAKA,IAAL,GAAY,IAAI2C,aAAJ,CAASF,QAAT,EAAmBG,KAAnB,6CAAZ;AACD;AACF;;AAGD,QAAI,CAAC,MAAK5C,IAAN,IAAc,CAAC,MAAKA,IAAL,CAAU6C,YAAV,EAAnB,EAA6C;AAC3C,YAAKC,MAAL,CAAY;AACV5C,QAAAA,MAAM,EAAEwB,OAAO,CAACxB,MADN;AAEVD,QAAAA,IAAI,EAAEyB,OAAO,CAACzB,IAFJ;AAGVG,QAAAA,OAAO,EAAEsB,OAAO,CAACtB,OAHP;AAIVD,QAAAA,KAAK,EAAEuB,OAAO,CAACvB;AAJL,OAAZ;;AAOA,UAAIuB,OAAO,CAACqB,MAAZ,EAAoB;AAClB,cAAKjB,MAAL;;AACA,cAAKkB,SAAL,CACEtB,OAAO,CAACqB,MADV,EAEE,qBAAM,EAAN,EAAUrB,OAAO,CAACuB,gBAAlB,EAAoC;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SAApC,CAFF;AAID;AACF;;AAzCwC;AA0C1C;;;;WAED,gBAAcC,SAAd,EAA+B;AAC7B,UAAMC,UAAU,GAAG,KAAKC,mBAAL,EAAnB;AACA,UAAMC,KAAK,GAAGF,UAAU,CAAC,CAAD,CAAxB;AACA,UAAMG,MAAM,GAAGH,UAAU,CAAC,CAAD,CAAzB;AAEA,WAAKI,SAAL,CAAe1B,MAAf,CAAsBwB,KAAtB,EAA6BC,MAA7B;;AAEA,UAAIvB,eAAJ,EAAY;AACV,eAAO,IAAP;AACD;;AACD,UAAMyB,UAAU,GAAG,CAAC,KAAKC,MAAzB;;AACA,UAAID,UAAJ,EAAgB;AACd,aAAKE,IAAL;AACA,aAAKC,IAAL,CAAU,WAAV,EAAuB,IAAIC,iBAAQC,KAAZ,CAAkB,WAAlB,EAA+BX,SAA/B,CAAvB;AACA,aAAKS,IAAL,CAAU,MAAV,EAAkB,IAAIC,iBAAQC,KAAZ,CAAkB,MAAlB,EAA0BX,SAA1B,CAAlB;AACD;;AAED,WAAKS,IAAL,CAAU,QAAV,EAAoB,IAAIC,iBAAQC,KAAZ,CAAkB,QAAlB,EAA4BX,SAA5B,CAApB;;AAEA,UAAIM,UAAJ,EAAgB;AACd,aAAKG,IAAL,CAAU,SAAV,EAAqB,IAAIC,iBAAQC,KAAZ,CAAkB,SAAlB,EAA6BX,SAA7B,CAArB;AACD;;AAED,aAAO,IAAP;AACD;;;WAED,wBAAsB;AACpB,aAAO,KAAKY,SAAZ;AACD;;;WAED,qBAAmB;AACjB,aAAO,KAAKC,MAAZ;AACD;;;WAED,8BAA4B;AAC1B,aAAO,KAAKC,eAAZ;AACD;;;WAED,iBAAeC,MAAf,EAAmC;AACjC,aAAO,KAAKV,SAAL,CAAeW,aAAf,CAA6BC,iBAAOC,OAAP,CAAeH,MAAf,CAA7B,CAAP;AACD;;;WAED,mBAAiBI,KAAjB,EAAmC;AACjC,aAAO,KAAKd,SAAL,CAAee,aAAf,CAA6BC,eAAMH,OAAN,CAAcC,KAAd,CAA7B,CAAP;AACD;;;WAED,qBAAiC;AAC/B,aAAO,KAAKd,SAAL,CAAeiB,SAAf,EAAP;AACD;;;WAED,wBAA2C;AACzC,aAAO,KAAKjB,SAAL,CAAekB,YAAf,EAAP;AACD;;;WAED,sBAAoB3B,MAApB,EAA8C;AAC5C,WAAKS,SAAL,CAAemB,YAAf,CAA4BC,wBAAaP,OAAb,CAAqBtB,MAArB,CAA5B;AACD;;;WAED,kBAAgB8B,KAAhB,EAA4B;AAC1B;AACD;;;WACD,oBAAkBvE,OAAlB,EAAoC;AAClCA,MAAAA,OAAO,GACLA,OAAO,KAAK,IAAZ,IAAoBA,OAAO,KAAKoC,SAAhC,GAA4C/C,cAA5C,GAA6DW,OAD/D;;AAEA,UAAIA,OAAO,IAAIX,cAAX,IAA6BW,OAAO,IAAI,KAAKkD,SAAL,CAAejD,OAA3D,EAAoE;AAClE,aAAKiD,SAAL,CAAelD,OAAf,GAAyBA,OAAzB;;AACA,YAAI,KAAKwE,OAAL,KAAiBxE,OAArB,EAA8B;AAC5B,eAAKyE,OAAL,CAAazE,OAAb;AACD;;AAED,eAAO,IAAP;AACD,OAPD,MAOO;AACL,cAAM,IAAI0E,KAAJ,mCACuBrF,cADvB,yCAAN;AAGD;AACF;;;WAED,sBAAoB;AAClB,aAAO,KAAK6D,SAAL,CAAelD,OAAtB;AACD;;;WAED,oBAAkBC,OAAlB,EAAoC;AAClCA,MAAAA,OAAO,GACLA,OAAO,KAAK,IAAZ,IAAoBA,OAAO,KAAKmC,SAAhC,GAA4C9C,cAA5C,GAA6DW,OAD/D;;AAGA,UAAIA,OAAO,IAAI,KAAKiD,SAAL,CAAelD,OAA9B,EAAuC;AACrC,aAAKkD,SAAL,CAAejD,OAAf,GAAyBA,OAAzB;;AACA,YAAI,KAAKuE,OAAL,KAAiBvE,OAArB,EAA8B;AAC5B,eAAKwE,OAAL,CAAaxE,OAAb;AACD;;AAED,eAAO,IAAP;AACD,OAPD,MAOO;AACL,cAAM,IAAIyE,KAAJ,CAAU,kDAAV,CAAN;AACD;AACF;;;WACD,sBAAoB;AAClB,aAAO,KAAKxB,SAAL,CAAejD,OAAtB;AACD;;;WAED,qBAAmBC,QAAnB,EAAsC;AACpCA,MAAAA,QAAQ,GACNA,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,KAAKkC,SAAlC,GAA8C7C,eAA9C,GAAgEW,QADlE;;AAGA,UAAIA,QAAQ,GAAGX,eAAf,EAAgC;AAC9B,cAAM,IAAImF,KAAJ,qDACyCnF,eADzC,EAAN;AAGD;;AAED,UAAIW,QAAQ,IAAIX,eAAZ,IAA+BW,QAAQ,IAAI,KAAKgD,SAAL,CAAe/C,QAA9D,EAAwE;AACtE,aAAK+C,SAAL,CAAehD,QAAf,GAA0BA,QAA1B;;AACA,YAAI,KAAKyE,QAAL,KAAkBzE,QAAtB,EAAgC;AAC9B,eAAK0E,QAAL,CAAc1E,QAAd;AACD;;AAED,eAAO,IAAP;AACD,OAPD,MAOO;AACL,cAAM,IAAIwE,KAAJ,oCACwBnF,eADxB,0CAAN;AAGD;AACF;;;WAED,uBAAqB;AACnB,aAAO,KAAK2D,SAAL,CAAehD,QAAtB;AACD;;;WAED,qBAAmBC,QAAnB,EAAsC;AACpCA,MAAAA,QAAQ,GACNA,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,KAAKiC,SAAlC,GAA8C5C,eAA9C,GAAgEW,QADlE;;AAGA,UAAIA,QAAQ,GAAGX,eAAf,EAAgC;AAC9B,cAAM,IAAIkF,KAAJ,kDACsClF,eADtC,EAAN;AAGD;;AAED,UAAIW,QAAQ,IAAI,KAAK+C,SAAL,CAAehD,QAA/B,EAAyC;AACvC,aAAKgD,SAAL,CAAe/C,QAAf,GAA0BA,QAA1B;;AACA,YAAI,KAAKwE,QAAL,KAAkBxE,QAAtB,EAAgC;AAC9B,eAAKyE,QAAL,CAAczE,QAAd;AACD;;AAED,eAAO,IAAP;AACD,OAPD,MAOO;AACL,cAAM,IAAIuE,KAAJ,CAAU,oDAAV,CAAN;AACD;AACF;;;WAED,uBAAqB;AACnB,aAAO,KAAKxB,SAAL,CAAe/C,QAAtB;AACD;;;WAED,gCAA8B;AAC5B,aAAO,KAAK+C,SAAL,CAAelC,iBAAtB;AACD;;;WAED,8BAA4BA,iBAA5B,EAAyD;AACvD,WAAKkC,SAAL,CAAelC,iBAAf,GAAmC,CAAC,CAACA,iBAArC;AACD;;;WAED,kBAAgB;AACd,WAAKyC,SAAL,CAAeoB,WAAf,CAA2B,KAAKlB,eAAhC;AAEA,WAAKA,eAAL,GAAuB,IAAvB;;AACA,UAAI,KAAKmB,KAAT,EAAgB;AACd,aAAKA,KAAL,CAAWC,MAAX;AACA,aAAKD,KAAL,GAAa,IAAb;AACD;;AACD,WAAKE,eAAL,CAAqBC,KAArB;AACD;;;WAED,4BAA0BC,EAA1B,EAAgD;AAC9C,WAAK5D,MAAL;AACA,aAAO,KAAK0D,eAAL,CAAqBG,GAArB,CAAyBD,EAAzB,CAAP;AACD;;;WAED,2BAAyBE,EAAzB,EAAqC;AACnC,aAAO,KAAKJ,eAAL,CAAqBK,MAArB,CAA4BD,EAA5B,CAAP;AACD;;;WAED,0BAAwB;AAAA;;AACtB,UAAI,CAAC,KAAKN,KAAV,EAAiB;AACf,aAAKA,KAAL,GAAa,uBAAY,UAACQ,mBAAD,EAAiC;AACxDC,wCAAiBT,KAAjB,CAAuBQ,mBAAvB;;AACA,UAAA,MAAI,CAACR,KAAL,GAAa,IAAb;;AACA,UAAA,MAAI,CAACxD,MAAL,CAAYgE,mBAAZ;AACD,SAJY,CAAb;AAKD;AACF;;;WAED,gBAAcE,IAAd,EAA6B;AAAA;;AAC3B,UAAI,CAAC,KAAKV,KAAV,EAAiB;AACf,aAAKA,KAAL,GAAa,uBAAY,UAACQ,mBAAD,EAAiC;AACxDC,wCAAiBT,KAAjB,CAAuBQ,mBAAvB;;AACA,UAAA,MAAI,CAACR,KAAL,GAAa,IAAb;;AACA,UAAA,MAAI,CAACE,eAAL,CAAqBS,GAArB,CAAyBD,IAAzB;AACD,SAJY,CAAb;AAKD;AACF;;;WAED,yBAAwB;AACtB,UAAI,OAAO,KAAKpE,OAAL,CAAaqC,SAApB,KAAkC,QAAtC,EAAgD;AAC9C,aAAKA,SAAL,GAAiB1B,MAAM,CAAC2D,QAAP,CAAgBC,cAAhB,CACf,KAAKvE,OAAL,CAAaqC,SADE,CAAjB;;AAGA,YAAI,CAAC,KAAKA,SAAV,EAAqB;AACnB,gBAAM,IAAIiB,KAAJ,sBAAwB,KAAKtD,OAAL,CAAaqC,SAArC,kBAAN;AACD;AACF,OAPD,MAOO,IAAI,KAAKrC,OAAL,CAAaqC,SAAb,YAAkCmC,WAAtC,EAAmD;AACxD,aAAKnC,SAAL,GAAiB,KAAKrC,OAAL,CAAaqC,SAA9B;AACD,OAFM,MAEA;AACL,cAAM,IAAIiB,KAAJ,CACJ,4DADI,CAAN;AAGD;;AAED,UAAMjB,SAAS,GAAG,KAAKA,SAAvB;AACAA,MAAAA,SAAS,CAACoC,SAAV,CAAoBV,GAApB,CAAwB,QAAxB;;AAEA,UAAMxB,eAAe,GAAI,KAAKA,eAAL,GAAuBmC,aAAIC,MAAJ,CAC9C,KAD8C,EAE9C,qBAF8C,EAG9CtC,SAH8C,CAAhD;;AAKA,UAAI,KAAKrC,OAAL,CAAarB,WAAjB,EAA8B;AAC5B4D,QAAAA,eAAe,CAACkC,SAAhB,CAA0BV,GAA1B,CAA8B,gBAA9B;AACD;AACF;;;WAKD,6BAA4B;AAC1B,WAAK1B,SAAL,GAAiB,KAAKrC,OAAL,CAAasC,MAA9B;AACA,WAAKC,eAAL,GAAuB,KAAKF,SAA5B;AACD;;;WAED,+BAAgD;AAC9C,UAAIT,KAAK,GAAG,CAAZ;AACA,UAAIC,MAAM,GAAG,CAAb;;AACA,UAAI,KAAKQ,SAAT,EAAoB;AAClB,YAAI/B,eAAJ,EAAY;AACVsB,UAAAA,KAAK,GACF,KAAKS,SAAN,CAAsCT,KAAtC,GACAO,iBAAQyC,gBAFV;AAGA/C,UAAAA,MAAM,GACH,KAAKQ,SAAN,CAAsCR,MAAtC,GACAM,iBAAQyC,gBAFV;AAGD,SAPD,MAOO;AACLhD,UAAAA,KAAK,GAAG,KAAKS,SAAL,CAAewC,WAAvB;AACAhD,UAAAA,MAAM,GAAG,KAAKQ,SAAL,CAAeyC,YAAxB;AACD;AACF;;AACD,aAAO,CAAClD,KAAD,EAAQC,MAAR,CAAP;AACD;;;EA/TsBkD,e","sourcesContent":["import { $window, DOM, isMini } from '@antv/l7-utils';\nimport { merge } from 'lodash';\nimport Camera from './camera';\nimport './css/l7.css';\nimport LngLat, { LngLatLike } from './geo/lng_lat';\nimport LngLatBounds, { LngLatBoundsLike } from './geo/lng_lat_bounds';\n// @ts-ignore\nimport Point, { PointLike } from './geo/point';\nimport BoxZoomHandler from './handler/box_zoom';\nimport HandlerManager from './handler/handler_manager';\nimport KeyboardHandler from './handler/keyboard';\n\nimport ScrollZoomHandler from './handler/scroll_zoom';\nimport DoubleClickZoomHandler from './handler/shim/dblclick_zoom';\nimport DragPanHandler from './handler/shim/drag_pan';\nimport DragRotateHandler from './handler/shim/drag_rotate';\nimport TouchZoomRotateHandler from './handler/shim/touch_zoom_rotate';\nimport { TouchPitchHandler } from './handler/touch';\nimport Hash from './hash';\nimport { IMapOptions } from './interface';\nimport { renderframe } from './util';\nimport { PerformanceUtils } from './utils/performance';\nimport TaskQueue, { TaskID } from './utils/task_queue';\ntype CallBack = (_: number) => void;\nconst defaultMinZoom = -2;\nconst defaultMaxZoom = 22;\n\n// the default values, but also the valid range\nconst defaultMinPitch = 0;\nconst defaultMaxPitch = 60;\n\nconst DefaultOptions: IMapOptions = {\n hash: false,\n zoom: -1,\n center: [112, 32],\n pitch: 0,\n bearing: 0,\n interactive: true,\n minZoom: defaultMinZoom,\n maxZoom: defaultMaxZoom,\n minPitch: defaultMinPitch,\n maxPitch: defaultMaxPitch,\n scrollZoom: true,\n boxZoom: true,\n dragRotate: true,\n dragPan: true,\n keyboard: true,\n doubleClickZoom: true,\n touchZoomRotate: true,\n touchPitch: true,\n bearingSnap: 7,\n clickTolerance: 3,\n pitchWithRotate: true,\n trackResize: true,\n renderWorldCopies: true,\n pitchEnabled: true,\n rotateEnabled: true,\n};\nexport class Map extends Camera {\n public doubleClickZoom: DoubleClickZoomHandler;\n public dragRotate: DragRotateHandler;\n public dragPan: DragPanHandler;\n public touchZoomRotate: TouchZoomRotateHandler;\n public scrollZoom: ScrollZoomHandler;\n public keyboard: KeyboardHandler;\n public touchPitch: TouchPitchHandler;\n public boxZoom: BoxZoomHandler;\n public handlers: HandlerManager;\n\n private container: HTMLElement;\n private canvas: HTMLCanvasElement;\n private canvasContainer: HTMLElement;\n private renderTaskQueue: TaskQueue = new TaskQueue();\n private frame: { cancel: () => void } | null;\n private trackResize: boolean = true;\n private hash: Hash | undefined;\n constructor(options: Partial<IMapOptions>) {\n super(merge({}, DefaultOptions, options));\n if (isMini) {\n this.initMiniContainer();\n } else {\n this.initContainer();\n }\n\n this.resize();\n this.handlers = new HandlerManager(this, this.options);\n\n if (typeof window !== 'undefined') {\n window.addEventListener('online', this.onWindowOnline, false);\n window.addEventListener('resize', this.onWindowResize, false);\n window.addEventListener('orientationchange', this.onWindowResize, false);\n }\n\n if (!isMini) {\n const hashName =\n (typeof options.hash === 'string' && options.hash) || undefined;\n if (options.hash) {\n this.hash = new Hash(hashName).addTo(this) as Hash;\n }\n }\n\n // don't set position from options if set through hash\n if (!this.hash || !this.hash.onHashChange()) {\n this.jumpTo({\n center: options.center,\n zoom: options.zoom,\n bearing: options.bearing,\n pitch: options.pitch,\n });\n\n if (options.bounds) {\n this.resize();\n this.fitBounds(\n options.bounds,\n merge({}, options.fitBoundsOptions, { duration: 0 }),\n );\n }\n }\n }\n\n public resize(eventData?: any) {\n const dimensions = this.containerDimensions();\n const width = dimensions[0];\n const height = dimensions[1];\n\n this.transform.resize(width, height);\n // TODO: 小程序环境不需要执行后续动作\n if (isMini) {\n return this;\n }\n const fireMoving = !this.moving;\n if (fireMoving) {\n this.stop();\n this.emit('movestart', new $window.Event('movestart', eventData));\n this.emit('move', new $window.Event('move', eventData));\n }\n\n this.emit('resize', new $window.Event('resize', eventData));\n\n if (fireMoving) {\n this.emit('moveend', new $window.Event('moveend', eventData));\n }\n\n return this;\n }\n\n public getContainer() {\n return this.container;\n }\n\n public getCanvas() {\n return this.canvas;\n }\n\n public getCanvasContainer() {\n return this.canvasContainer;\n }\n\n public project(lngLat: LngLatLike) {\n return this.transform.locationPoint(LngLat.convert(lngLat));\n }\n\n public unproject(point: PointLike) {\n return this.transform.pointLocation(Point.convert(point));\n }\n\n public getBounds(): LngLatBounds {\n return this.transform.getBounds();\n }\n\n public getMaxBounds(): LngLatBounds | null {\n return this.transform.getMaxBounds();\n }\n\n public setMaxBounds(bounds: LngLatBoundsLike) {\n this.transform.setMaxBounds(LngLatBounds.convert(bounds));\n }\n\n public setStyle(style: any) {\n return;\n }\n public setMinZoom(minZoom?: number) {\n minZoom =\n minZoom === null || minZoom === undefined ? defaultMinZoom : minZoom;\n if (minZoom >= defaultMinZoom && minZoom <= this.transform.maxZoom) {\n this.transform.minZoom = minZoom;\n if (this.getZoom() < minZoom) {\n this.setZoom(minZoom);\n }\n\n return this;\n } else {\n throw new Error(\n `minZoom must be between ${defaultMinZoom} and the current maxZoom, inclusive`,\n );\n }\n }\n\n public getMinZoom() {\n return this.transform.minZoom;\n }\n\n public setMaxZoom(maxZoom?: number) {\n maxZoom =\n maxZoom === null || maxZoom === undefined ? defaultMaxZoom : maxZoom;\n\n if (maxZoom >= this.transform.minZoom) {\n this.transform.maxZoom = maxZoom;\n if (this.getZoom() > maxZoom) {\n this.setZoom(maxZoom);\n }\n\n return this;\n } else {\n throw new Error('maxZoom must be greater than the current minZoom');\n }\n }\n public getMaxZoom() {\n return this.transform.maxZoom;\n }\n\n public setMinPitch(minPitch?: number) {\n minPitch =\n minPitch === null || minPitch === undefined ? defaultMinPitch : minPitch;\n\n if (minPitch < defaultMinPitch) {\n throw new Error(\n `minPitch must be greater than or equal to ${defaultMinPitch}`,\n );\n }\n\n if (minPitch >= defaultMinPitch && minPitch <= this.transform.maxPitch) {\n this.transform.minPitch = minPitch;\n if (this.getPitch() < minPitch) {\n this.setPitch(minPitch);\n }\n\n return this;\n } else {\n throw new Error(\n `minPitch must be between ${defaultMinPitch} and the current maxPitch, inclusive`,\n );\n }\n }\n\n public getMinPitch() {\n return this.transform.minPitch;\n }\n\n public setMaxPitch(maxPitch?: number) {\n maxPitch =\n maxPitch === null || maxPitch === undefined ? defaultMaxPitch : maxPitch;\n\n if (maxPitch > defaultMaxPitch) {\n throw new Error(\n `maxPitch must be less than or equal to ${defaultMaxPitch}`,\n );\n }\n\n if (maxPitch >= this.transform.minPitch) {\n this.transform.maxPitch = maxPitch;\n if (this.getPitch() > maxPitch) {\n this.setPitch(maxPitch);\n }\n\n return this;\n } else {\n throw new Error('maxPitch must be greater than the current minPitch');\n }\n }\n\n public getMaxPitch() {\n return this.transform.maxPitch;\n }\n\n public getRenderWorldCopies() {\n return this.transform.renderWorldCopies;\n }\n\n public setRenderWorldCopies(renderWorldCopies?: boolean) {\n this.transform.renderWorldCopies = !!renderWorldCopies;\n }\n\n public remove() {\n this.container.removeChild(this.canvasContainer);\n // @ts-ignore\n this.canvasContainer = null;\n if (this.frame) {\n this.frame.cancel();\n this.frame = null;\n }\n this.renderTaskQueue.clear();\n }\n\n public requestRenderFrame(cb: CallBack): TaskID {\n this.update();\n return this.renderTaskQueue.add(cb);\n }\n\n public cancelRenderFrame(id: TaskID) {\n return this.renderTaskQueue.remove(id);\n }\n\n public triggerRepaint() {\n if (!this.frame) {\n this.frame = renderframe((paintStartTimeStamp: number) => {\n PerformanceUtils.frame(paintStartTimeStamp);\n this.frame = null;\n this.update(paintStartTimeStamp);\n });\n }\n }\n\n public update(time?: number) {\n if (!this.frame) {\n this.frame = renderframe((paintStartTimeStamp: number) => {\n PerformanceUtils.frame(paintStartTimeStamp);\n this.frame = null;\n this.renderTaskQueue.run(time);\n });\n }\n }\n\n private initContainer() {\n if (typeof this.options.container === 'string') {\n this.container = window.document.getElementById(\n this.options.container,\n ) as HTMLElement;\n if (!this.container) {\n throw new Error(`Container '${this.options.container}' not found.`);\n }\n } else if (this.options.container instanceof HTMLElement) {\n this.container = this.options.container;\n } else {\n throw new Error(\n \"Invalid type: 'container' must be a String or HTMLElement.\",\n );\n }\n\n const container = this.container;\n container.classList.add('l7-map');\n\n const canvasContainer = (this.canvasContainer = DOM.create(\n 'div',\n 'l7-canvas-container',\n container,\n ));\n if (this.options.interactive) {\n canvasContainer.classList.add('l7-interactive');\n }\n }\n\n /**\n * 小程序环境构建容器\n */\n private initMiniContainer() {\n this.container = this.options.canvas as HTMLCanvasElement;\n this.canvasContainer = this.container;\n }\n\n private containerDimensions(): [number, number] {\n let width = 0;\n let height = 0;\n if (this.container) {\n if (isMini) {\n width =\n (this.container as HTMLCanvasElement).width /\n $window.devicePixelRatio;\n height =\n (this.container as HTMLCanvasElement).height /\n $window.devicePixelRatio;\n } else {\n width = this.container.clientWidth;\n height = this.container.clientHeight;\n }\n }\n return [width, height];\n }\n\n private onWindowOnline = () => {\n this.update();\n };\n\n private onWindowResize = (event: Event) => {\n if (this.trackResize) {\n this.resize({ originalEvent: event }).update();\n }\n };\n}\n"],"file":"map.js"}
package/lib/util.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/util.ts"],"names":["reducedMotionQuery","wrap","n","min","max","d","w","clamp","Math","interpolate","a","b","t","bezier","p1x","p1y","p2x","p2y","bez","UnitBezier","solve","ease","prefersReducedMotion","isMini","$window","matchMedia","matches","pick","src","properties","result","name","now","Date","bind","performance","raf","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","cancel","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","msCancelAnimationFrame","renderframe","fn","frame"],"mappings":"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","sourcesContent":["import { $window, isMini } from '@antv/l7-utils';\n// @ts-ignore\nimport UnitBezier from '@mapbox/unitbezier';\nlet reducedMotionQuery: MediaQueryList;\nexport interface ICancelable {\n cancel: () => void;\n}\nexport function wrap(n: number, min: number, max: number): number {\n const d = max - min;\n const w = ((((n - min) % d) + d) % d) + min;\n return w === min ? max : w;\n}\n\nexport function clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\nexport function interpolate(a: number, b: number, t: number) {\n return a * (1 - t) + b * t;\n}\nexport function bezier(\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n): (t: number) => number {\n const bez = new UnitBezier(p1x, p1y, p2x, p2y);\n return (t: number) => {\n return bez.solve(t);\n };\n}\n\nexport const ease = bezier(0.25, 0.1, 0.25, 1);\n\nexport function prefersReducedMotion(): boolean {\n // @ts-ignore\n if (isMini || !$window.matchMedia) {\n return false;\n }\n // Lazily initialize media query\n if (reducedMotionQuery == null) {\n // @ts-ignore\n reducedMotionQuery = $window.matchMedia('(prefers-reduced-motion: reduce)');\n }\n return reducedMotionQuery.matches;\n}\n\nexport function pick(\n src: { [key: string]: any },\n properties: string[],\n): { [key: string]: any } {\n const result: { [key: string]: any } = {};\n for (const name of properties) {\n if (name in src) {\n result[name] = src[name];\n }\n }\n return result;\n}\n\nexport const now = isMini\n ? Date.now.bind(Date)\n : $window.performance && $window.performance.now\n ? $window.performance.now.bind($window.performance)\n : Date.now.bind(Date);\n\nexport const raf =\n $window.requestAnimationFrame ||\n // @ts-ignore\n $window.mozRequestAnimationFrame ||\n // @ts-ignore\n $window.webkitRequestAnimationFrame ||\n // @ts-ignore\n $window.msRequestAnimationFrame;\n\nexport const cancel =\n $window.cancelAnimationFrame ||\n // @ts-ignore\n $window.mozCancelAnimationFrame ||\n // @ts-ignore\n $window.webkitCancelAnimationFrame ||\n // @ts-ignore\n $window.msCancelAnimationFrame;\n\nexport function renderframe(\n fn: (paintStartTimestamp: number) => void,\n): ICancelable {\n const frame = raf(fn);\n return { cancel: () => cancel(frame) };\n}\n"],"file":"util.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/Aabb.ts"],"names":["Aabb","min","max","center","vec3","scale","Float32Array","add","index","split","qMin","clone","qMax","axis","length","point","pointOnAabb","Math","frustum","aabbPoints","fullyInside","planes","plane","pointsInside","i","vec4","dot","projMin","Number","MAX_VALUE","projMax","points","p","projectedPoint"],"mappings":"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","sourcesContent":["import { vec3, vec4 } from 'gl-matrix';\nimport Frustum from './primitives';\nexport default class Aabb {\n public min: vec3;\n public max: vec3;\n public center: vec3;\n\n constructor(min: vec3, max: vec3) {\n this.min = min;\n this.max = max;\n this.center = vec3.scale(\n new Float32Array(3),\n vec3.add(new Float32Array(3), this.min, this.max),\n 0.5,\n );\n }\n\n public quadrant(index: number): Aabb {\n const split = [index % 2 === 0, index < 2];\n const qMin = vec3.clone(this.min);\n const qMax = vec3.clone(this.max);\n for (let axis = 0; axis < split.length; axis++) {\n qMin[axis] = split[axis] ? this.min[axis] : this.center[axis];\n qMax[axis] = split[axis] ? this.center[axis] : this.max[axis];\n }\n // Elevation is always constant, hence quadrant.max.z = this.max.z\n qMax[2] = this.max[2];\n return new Aabb(qMin, qMax);\n }\n\n public distanceX(point: number[]): number {\n const pointOnAabb = Math.max(Math.min(this.max[0], point[0]), this.min[0]);\n return pointOnAabb - point[0];\n }\n\n public distanceY(point: number[]): number {\n const pointOnAabb = Math.max(Math.min(this.max[1], point[1]), this.min[1]);\n return pointOnAabb - point[1];\n }\n\n // Performs a frustum-aabb intersection test. Returns 0 if there's no intersection,\n // 1 if shapes are intersecting and 2 if the aabb if fully inside the frustum.\n public intersects(frustum: Frustum): number {\n // Execute separating axis test between two convex objects to find intersections\n // Each frustum plane together with 3 major axes define the separating axes\n // Note: test only 4 points as both min and max points have equal elevation\n\n const aabbPoints = [\n [this.min[0], this.min[1], 0.0, 1],\n [this.max[0], this.min[1], 0.0, 1],\n [this.max[0], this.max[1], 0.0, 1],\n [this.min[0], this.max[1], 0.0, 1],\n ];\n\n let fullyInside = true;\n\n for (const plane of frustum.planes) {\n let pointsInside = 0;\n\n for (const i of aabbPoints) {\n // @ts-ignore\n pointsInside += vec4.dot(plane, i) >= 0;\n }\n\n if (pointsInside === 0) {\n return 0;\n }\n\n if (pointsInside !== aabbPoints.length) {\n fullyInside = false;\n }\n }\n\n if (fullyInside) {\n return 2;\n }\n\n for (let axis = 0; axis < 3; axis++) {\n let projMin = Number.MAX_VALUE;\n let projMax = -Number.MAX_VALUE;\n\n for (const p of frustum.points) {\n const projectedPoint = p[axis] - this.min[axis];\n\n projMin = Math.min(projMin, projectedPoint);\n projMax = Math.max(projMax, projectedPoint);\n }\n\n if (projMax < 0 || projMin > this.max[axis] - this.min[axis]) {\n return 0;\n }\n }\n\n return 1;\n }\n}\n"],"file":"Aabb.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/dom.ts"],"names":["DOM","create","tagName","className","container","el","$window","document","createElement","undefined","appendChild","createNS","namespaceURI","createElementNS","docStyle","documentElement","style","testProp","props","i","selectProp","userSelect","disableDrag","enableDrag","transformProp","setTransform","value","passiveSupported","options","Object","defineProperty","get","addEventListener","removeEventListener","err","target","type","callback","capture","suppressClick","e","preventDefault","stopPropagation","isMini","setTimeout","mousePos","rect","getBoundingClientRect","Point","clientX","left","clientLeft","clientY","top","clientTop","touchPos","touches","points","touche","push","mouseButton","button","InstallTrigger","ctrlKey","navigator","platform","toUpperCase","indexOf","remove","node","parentNode","removeChild"],"mappings":"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","sourcesContent":["import { $window, isMini } from '@antv/l7-utils';\n// @ts-ignore\nimport Point from '../geo/point';\n\nconst DOM: {\n [key: string]: (...arg: any[]) => any;\n} = {};\nexport default DOM;\n\nDOM.create = (tagName: string, className?: string, container?: HTMLElement) => {\n const el = $window.document.createElement(tagName) as HTMLElement;\n if (className !== undefined) {\n el.className = className;\n }\n if (container) {\n container.appendChild(el);\n }\n return el;\n};\n\nDOM.createNS = (namespaceURI: string, tagName: string) => {\n const el = $window.document.createElementNS(\n namespaceURI,\n tagName,\n ) as HTMLElement;\n return el;\n};\n\nconst docStyle = $window.document && $window.document.documentElement.style;\n\nfunction testProp(props: any) {\n if (!docStyle) {\n return props[0];\n }\n for (const i of props) {\n if (i in docStyle) {\n return i;\n }\n }\n return props[0];\n}\n\nconst selectProp = testProp([\n 'userSelect',\n 'MozUserSelect',\n 'WebkitUserSelect',\n 'msUserSelect',\n]);\nlet userSelect: any;\n\nDOM.disableDrag = () => {\n if (docStyle && selectProp) {\n userSelect = docStyle[selectProp];\n docStyle[selectProp] = 'none';\n }\n};\n\nDOM.enableDrag = () => {\n if (docStyle && selectProp) {\n docStyle[selectProp] = userSelect;\n }\n};\n\nconst transformProp = testProp(['transform', 'WebkitTransform']);\n\nDOM.setTransform = (el: HTMLElement, value: string) => {\n // https://github.com/facebook/flow/issues/7754\n // $FlowFixMe\n el.style[transformProp] = value;\n};\n\n// Feature detection for {passive: false} support in add/removeEventListener.\nlet passiveSupported = false;\n\ntry {\n // https://github.com/facebook/flow/issues/285\n // $FlowFixMe\n const options = Object.defineProperty({}, 'passive', {\n get() {\n // eslint-disable-line\n passiveSupported = true;\n },\n });\n // @ts-ignore\n $window.addEventListener('test', options, options);\n // @ts-ignore\n $window.removeEventListener('test', options, options);\n} catch (err) {\n passiveSupported = false;\n}\n\nDOM.addEventListener = (\n target: any,\n type: any,\n callback: any,\n options: { passive?: boolean; capture?: boolean } = {},\n) => {\n if ('passive' in options && passiveSupported) {\n target.addEventListener(type, callback, options);\n } else {\n target.addEventListener(type, callback, options.capture);\n }\n};\n\nDOM.removeEventListener = (\n target: any,\n type: any,\n callback: any,\n options: { passive?: boolean; capture?: boolean } = {},\n) => {\n if ('passive' in options && passiveSupported) {\n target.removeEventListener(type, callback, options);\n } else {\n target.removeEventListener(type, callback, options.capture);\n }\n};\n\n// Suppress the next click, but only if it's immediate.\nconst suppressClick = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n $window.removeEventListener('click', suppressClick, true);\n};\n\nDOM.suppressClick = () => {\n if (isMini) {\n return;\n }\n $window.addEventListener('click', suppressClick, true);\n setTimeout(() => {\n $window.removeEventListener('click', suppressClick, true);\n }, 0);\n};\n\nDOM.mousePos = (el: HTMLElement, e: MouseEvent | Touch) => {\n // 暂时从 el 上获取 top/left, 后面需要动态获取\n if (!isMini) {\n const rect = el.getBoundingClientRect();\n return new Point(\n e.clientX - rect.left - el.clientLeft,\n e.clientY - rect.top - el.clientTop,\n );\n } else {\n return new Point(\n // @ts-ignore\n e.clientX - el.left - 0,\n // @ts-ignore\n e.clientY - el.top - 0,\n );\n }\n};\n\nDOM.touchPos = (el: HTMLElement, touches: Touch[]) => {\n // 暂时从 el 上获取 top/left, 后面需要动态获取\n if (!isMini) {\n const rect = el.getBoundingClientRect();\n const points = [];\n for (const touche of touches) {\n points.push(\n new Point(\n touche.clientX - rect.left - el.clientLeft,\n touche.clientY - rect.top - el.clientTop,\n ),\n );\n }\n return points;\n } else {\n const points = [];\n for (const touche of touches) {\n points.push(\n new Point(\n // @ts-ignore\n touche.clientX - el.left,\n // @ts-ignore\n touche.clientY - el.top,\n ),\n );\n }\n return points;\n }\n};\n\nDOM.mouseButton = (e: MouseEvent) => {\n if (!isMini) {\n return e.button;\n }\n if (\n // @ts-ignore\n typeof $window.InstallTrigger !== 'undefined' &&\n e.button === 2 &&\n e.ctrlKey &&\n $window.navigator.platform.toUpperCase().indexOf('MAC') >= 0\n ) {\n // Fix for https://github.com/mapbox/mapbox-gl-js/issues/3131:\n // Firefox (detected by InstallTrigger) on Mac determines e.button = 2 when\n // using Control + left click\n return 0;\n }\n return e.button;\n};\n\nDOM.remove = (node: HTMLElement) => {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n};\n"],"file":"dom.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/performance.ts"],"names":["lastFrameTime","frameTimes","minFramerateTarget","frameTimeTarget","performance","$window","PerformanceMarkers","create","load","fullLoad","PerformanceUtils","mark","marker","frame","timestamp","currTimestamp","frameTime","push","clearMetrics","clearMeasures","clearMarks","getPerformanceMetrics","loadTime","measure","duration","fullLoadTime","totalFrames","length","avgFrameTime","reduce","prev","curr","fps","droppedFrames","filter","acc","percentDroppedFrames"],"mappings":";;;;;;;AAAA;;AACA,IAAIA,aAA4B,GAAG,IAAnC;AACA,IAAIC,UAAoB,GAAG,EAA3B;AAEA,IAAMC,kBAAkB,GAAG,EAA3B;AACA,IAAMC,eAAe,GAAG,OAAOD,kBAA/B;AACA,IAAME,WAAW,GAAGC,iBAAQD,WAA5B;AASO,IAAME,kBAAkB,GAAG;AAChCC,EAAAA,MAAM,EAAE,QADwB;AAEhCC,EAAAA,IAAI,EAAE,MAF0B;AAGhCC,EAAAA,QAAQ,EAAE;AAHsB,CAA3B;;AAMA,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,IAD8B,gBACzBC,MADyB,EACT;AACnBR,IAAAA,WAAW,CAACO,IAAZ,CAAiBC,MAAjB;AACD,GAH6B;AAI9BC,EAAAA,KAJ8B,iBAIxBC,SAJwB,EAIL;AACvB,QAAMC,aAAa,GAAGD,SAAtB;;AACA,QAAId,aAAa,IAAI,IAArB,EAA2B;AACzB,UAAMgB,SAAS,GAAGD,aAAa,GAAGf,aAAlC;AACAC,MAAAA,UAAU,CAACgB,IAAX,CAAgBD,SAAhB;AACD;;AACDhB,IAAAA,aAAa,GAAGe,aAAhB;AACD,GAX6B;AAY9BG,EAAAA,YAZ8B,0BAYf;AACblB,IAAAA,aAAa,GAAG,IAAhB;AACAC,IAAAA,UAAU,GAAG,EAAb;AACAG,IAAAA,WAAW,CAACe,aAAZ,CAA0B,UAA1B;AACAf,IAAAA,WAAW,CAACe,aAAZ,CAA0B,cAA1B;;AAGA,SAAK,IAAMP,MAAX,IAAqBN,kBAArB,EAAyC;AAEvCF,MAAAA,WAAW,CAACgB,UAAZ,CAAuBd,kBAAkB,CAACM,MAAD,CAAzC;AACD;AACF,GAvB6B;AAwB9BS,EAAAA,qBAxB8B,mCAwBe;AAC3C,QAAMC,QAAQ,GAAGlB,WAAW,CAACmB,OAAZ,CACf,UADe,EAEfjB,kBAAkB,CAACC,MAFJ,EAGfD,kBAAkB,CAACE,IAHJ,EAKfgB,QALF;AAOA,QAAMC,YAAY,GAAGrB,WAAW,CAACmB,OAAZ,CACnB,cADmB,EAEnBjB,kBAAkB,CAACC,MAFA,EAGnBD,kBAAkB,CAACG,QAHA,EAKnBe,QALF;AAMA,QAAME,WAAW,GAAGzB,UAAU,CAAC0B,MAA/B;AAEA,QAAMC,YAAY,GAChB3B,UAAU,CAAC4B,MAAX,CAAkB,UAACC,IAAD,EAAOC,IAAP;AAAA,aAAgBD,IAAI,GAAGC,IAAvB;AAAA,KAAlB,EAA+C,CAA/C,IAAoDL,WAApD,GAAkE,IADpE;AAEA,QAAMM,GAAG,GAAG,IAAIJ,YAAhB;AAGA,QAAMK,aAAa,GAAGhC,UAAU,CAC7BiC,MADmB,CACZ,UAAClB,SAAD;AAAA,aAAeA,SAAS,GAAGb,eAA3B;AAAA,KADY,EAEnB0B,MAFmB,CAEZ,UAACM,GAAD,EAAMJ,IAAN,EAAe;AACrB,aAAOI,GAAG,GAAG,CAACJ,IAAI,GAAG5B,eAAR,IAA2BA,eAAxC;AACD,KAJmB,EAIjB,CAJiB,CAAtB;AAKA,QAAMiC,oBAAoB,GACvBH,aAAa,IAAIP,WAAW,GAAGO,aAAlB,CAAd,GAAkD,GADpD;AAGA,WAAO;AACLX,MAAAA,QAAQ,EAARA,QADK;AAELG,MAAAA,YAAY,EAAZA,YAFK;AAGLO,MAAAA,GAAG,EAAHA,GAHK;AAILI,MAAAA,oBAAoB,EAApBA;AAJK,KAAP;AAMD;AA3D6B,CAAzB","sourcesContent":["import { $window } from '@antv/l7-utils';\nlet lastFrameTime: number | null = null;\nlet frameTimes: number[] = [];\n\nconst minFramerateTarget = 30;\nconst frameTimeTarget = 1000 / minFramerateTarget;\nconst performance = $window.performance;\n\nexport interface IPerformanceMetrics {\n loadTime: number;\n fullLoadTime: number;\n fps: number;\n percentDroppedFrames: number;\n}\n\nexport const PerformanceMarkers = {\n create: 'create',\n load: 'load',\n fullLoad: 'fullLoad',\n};\n\nexport const PerformanceUtils = {\n mark(marker: string) {\n performance.mark(marker);\n },\n frame(timestamp: number) {\n const currTimestamp = timestamp;\n if (lastFrameTime != null) {\n const frameTime = currTimestamp - lastFrameTime;\n frameTimes.push(frameTime);\n }\n lastFrameTime = currTimestamp;\n },\n clearMetrics() {\n lastFrameTime = null;\n frameTimes = [];\n performance.clearMeasures('loadTime');\n performance.clearMeasures('fullLoadTime');\n // @ts-ignore\n // tslint:disable-next-line:forin\n for (const marker in PerformanceMarkers) {\n // @ts-ignore\n performance.clearMarks(PerformanceMarkers[marker]);\n }\n },\n getPerformanceMetrics(): IPerformanceMetrics {\n const loadTime = performance.measure(\n 'loadTime',\n PerformanceMarkers.create,\n PerformanceMarkers.load,\n // @ts-ignore\n ).duration;\n\n const fullLoadTime = performance.measure(\n 'fullLoadTime',\n PerformanceMarkers.create,\n PerformanceMarkers.fullLoad,\n // @ts-ignore\n ).duration;\n const totalFrames = frameTimes.length;\n\n const avgFrameTime =\n frameTimes.reduce((prev, curr) => prev + curr, 0) / totalFrames / 1000;\n const fps = 1 / avgFrameTime;\n\n // count frames that missed our framerate target\n const droppedFrames = frameTimes\n .filter((frameTime) => frameTime > frameTimeTarget)\n .reduce((acc, curr) => {\n return acc + (curr - frameTimeTarget) / frameTimeTarget;\n }, 0);\n const percentDroppedFrames =\n (droppedFrames / (totalFrames + droppedFrames)) * 100;\n\n return {\n loadTime,\n fullLoadTime,\n fps,\n percentDroppedFrames,\n };\n },\n};\n"],"file":"performance.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/primitives.ts"],"names":["Frustum","points","planes","invProj","worldSize","zoom","clipSpaceCorners","scale","Math","pow","frustumCoords","map","v","vec4","transformMat4","Float32Array","frustumPlanePointIndices","frustumPlanes","p","a","vec3","sub","b","n","normalize","cross","d","dot","concat"],"mappings":"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","sourcesContent":["import { vec3, vec4 } from 'gl-matrix';\nexport default class Frustum {\n public static fromInvProjectionMatrix(\n invProj: Float32Array,\n worldSize: number,\n zoom: number,\n ): Frustum {\n const clipSpaceCorners: Array<[number, number, number, number]> = [\n [-1, 1, -1, 1],\n [1, 1, -1, 1],\n [1, -1, -1, 1],\n [-1, -1, -1, 1],\n [-1, 1, 1, 1],\n [1, 1, 1, 1],\n [1, -1, 1, 1],\n [-1, -1, 1, 1],\n ];\n\n const scale = Math.pow(2, zoom);\n\n // Transform frustum corner points from clip space to tile space\n const frustumCoords = clipSpaceCorners\n .map((v) => vec4.transformMat4(new Float32Array([]), v, invProj))\n .map((v) =>\n vec4.scale(new Float32Array([]), v, (1.0 / v[3] / worldSize) * scale),\n );\n\n const frustumPlanePointIndices: Array<[number, number, number]> = [\n [0, 1, 2], // near\n [6, 5, 4], // far\n [0, 3, 7], // left\n [2, 1, 5], // right\n [3, 2, 6], // bottom\n [0, 4, 5], // top\n ];\n\n const frustumPlanes = frustumPlanePointIndices.map(\n (p: [number, number, number]) => {\n const a = vec3.sub(\n new Float32Array(3),\n new Float32Array(frustumCoords[p[0]]),\n new Float32Array(frustumCoords[p[1]]),\n );\n const b = vec3.sub(\n new Float32Array(3),\n new Float32Array(frustumCoords[p[2]]),\n new Float32Array(frustumCoords[p[1]]),\n );\n const n = vec3.normalize(\n new Float32Array(3),\n vec3.cross(new Float32Array(3), a, b),\n );\n const d = -vec3.dot(n, new Float32Array(frustumCoords[p[1]]));\n return (n as number[]).concat(d);\n },\n );\n\n return new Frustum(frustumCoords as number[][], frustumPlanes);\n }\n public points: number[][];\n public planes: number[][];\n\n constructor(points: number[][], planes: number[][]) {\n this.points = points;\n this.planes = planes;\n }\n}\n"],"file":"primitives.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utils/task_queue.ts"],"names":["TaskQueue","queue","id","cleared","currentlyRunning","callback","push","cancelled","running","concat","task","timeStamp"],"mappings":";;;;;;;;;;;;;;;;;;;;;IAOMA,S;AAMJ,uBAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AACZ,SAAKC,KAAL,GAAa,EAAb;AACA,SAAKC,EAAL,GAAU,CAAV;AACA,SAAKC,OAAL,GAAe,KAAf;AACA,SAAKC,gBAAL,GAAwB,KAAxB;AACD;;;;WAED,aAAWC,QAAX,EAA0D;AACxD,UAAMH,EAAE,GAAG,EAAE,KAAKA,EAAlB;AACA,UAAMD,KAAK,GAAG,KAAKA,KAAnB;AACAA,MAAAA,KAAK,CAACK,IAAN,CAAW;AAAED,QAAAA,QAAQ,EAARA,QAAF;AAAYH,QAAAA,EAAE,EAAFA,EAAZ;AAAgBK,QAAAA,SAAS,EAAE;AAA3B,OAAX;AACA,aAAOL,EAAP;AACD;;;WAED,gBAAcA,EAAd,EAA0B;AACxB,UAAMM,OAAO,GAAG,KAAKJ,gBAArB;AACA,UAAMH,KAAK,GAAGO,OAAO,GAAG,KAAKP,KAAL,CAAWQ,MAAX,CAAkBD,OAAlB,CAAH,GAAgC,KAAKP,KAA1D;;AAFwB,iDAGLA,KAHK;AAAA;;AAAA;AAGxB,4DAA0B;AAAA,cAAfS,IAAe;;AACxB,cAAIA,IAAI,CAACR,EAAL,KAAYA,EAAhB,EAAoB;AAClBQ,YAAAA,IAAI,CAACH,SAAL,GAAiB,IAAjB;AACA;AACD;AACF;AARuB;AAAA;AAAA;AAAA;AAAA;AASzB;;;WAED,eAAkC;AAAA,UAAvBI,SAAuB,uEAAH,CAAG;AAChC,UAAMV,KAAK,GAAI,KAAKG,gBAAL,GAAwB,KAAKH,KAA5C;AAIA,WAAKA,KAAL,GAAa,EAAb;;AALgC,kDAObA,KAPa;AAAA;;AAAA;AAOhC,+DAA0B;AAAA,cAAfS,IAAe;;AACxB,cAAIA,IAAI,CAACH,SAAT,EAAoB;AAClB;AACD;;AACDG,UAAAA,IAAI,CAACL,QAAL,CAAcM,SAAd;;AACA,cAAI,KAAKR,OAAT,EAAkB;AAChB;AACD;AACF;AAf+B;AAAA;AAAA;AAAA;AAAA;;AAiBhC,WAAKA,OAAL,GAAe,KAAf;AACA,WAAKC,gBAAL,GAAwB,KAAxB;AACD;;;WAED,iBAAe;AACb,UAAI,KAAKA,gBAAT,EAA2B;AACzB,aAAKD,OAAL,GAAe,IAAf;AACD;;AACD,WAAKF,KAAL,GAAa,EAAb;AACD;;;;;eAGYD,S","sourcesContent":["export type TaskID = number; // can't mark opaque due to https://github.com/flowtype/flow-remove-types/pull/61\ninterface ITask {\n callback: (timeStamp: number) => void;\n id: TaskID;\n cancelled: boolean;\n}\n\nclass TaskQueue {\n private queue: ITask[];\n private id: TaskID;\n private cleared: boolean;\n private currentlyRunning: ITask[] | false;\n\n constructor() {\n this.queue = [];\n this.id = 0;\n this.cleared = false;\n this.currentlyRunning = false;\n }\n\n public add(callback: (timeStamp: number) => void): TaskID {\n const id = ++this.id;\n const queue = this.queue;\n queue.push({ callback, id, cancelled: false });\n return id;\n }\n\n public remove(id: TaskID) {\n const running = this.currentlyRunning;\n const queue = running ? this.queue.concat(running) : this.queue;\n for (const task of queue) {\n if (task.id === id) {\n task.cancelled = true;\n return;\n }\n }\n }\n\n public run(timeStamp: number = 0) {\n const queue = (this.currentlyRunning = this.queue);\n\n // Tasks queued by callbacks in the current queue should be executed\n // on the next run, not the current run.\n this.queue = [];\n\n for (const task of queue) {\n if (task.cancelled) {\n continue;\n }\n task.callback(timeStamp);\n if (this.cleared) {\n break;\n }\n }\n\n this.cleared = false;\n this.currentlyRunning = false;\n }\n\n public clear() {\n if (this.currentlyRunning) {\n this.cleared = true;\n }\n this.queue = [];\n }\n}\n\nexport default TaskQueue;\n"],"file":"task_queue.js"}