@openglobus/og 0.17.2 → 0.18.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 (490) hide show
  1. package/README.md +75 -46
  2. package/dist/@openglobus/og.esm.js +1 -20
  3. package/dist/@openglobus/og.esm.js.map +1 -1
  4. package/dist/@openglobus/og.umd.js +1 -20
  5. package/dist/@openglobus/og.umd.js.map +1 -1
  6. package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
  7. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
  8. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
  9. package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
  10. package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
  11. package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
  12. package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
  13. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
  14. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
  15. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
  16. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
  17. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
  18. package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
  19. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
  20. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
  21. package/dist/@openglobus/res/fonts/arial.json +4321 -0
  22. package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
  23. package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
  24. package/dist/@openglobus/res/night-4326.png +0 -0
  25. package/dist/@openglobus/res/night.png +0 -0
  26. package/dist/@openglobus/res/spec.png +0 -0
  27. package/package.json +25 -23
  28. package/src/{og/Clock.js → Clock.ts} +100 -78
  29. package/src/Deferred.ts +17 -0
  30. package/src/Events.ts +200 -0
  31. package/src/{og/Extent.js → Extent.ts} +324 -352
  32. package/src/Globe.ts +363 -0
  33. package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
  34. package/src/Lock.ts +41 -0
  35. package/src/{og/LonLat.js → LonLat.ts} +50 -47
  36. package/src/{og/Object3d.js → Object3d.ts} +89 -55
  37. package/src/Popup.ts +228 -0
  38. package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
  39. package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
  40. package/src/Stack.ts +58 -0
  41. package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
  42. package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
  43. package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
  44. package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
  45. package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
  46. package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
  47. package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
  48. package/src/bv/index.ts +4 -0
  49. package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
  50. package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
  51. package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +246 -182
  52. package/src/camera/index.ts +4 -0
  53. package/src/{og/cons.js → cons.ts} +14 -18
  54. package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
  55. package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
  56. package/src/{og/control/Control.js → control/Control.ts} +76 -70
  57. package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
  58. package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
  59. package/src/control/EarthCoordinates.ts +222 -0
  60. package/src/control/EarthNavigation.ts +293 -0
  61. package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
  62. package/src/control/KeyboardNavigation.ts +168 -0
  63. package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
  64. package/src/control/LayerSwitcher.ts +76 -0
  65. package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
  66. package/src/control/MouseNavigation.ts +468 -0
  67. package/src/control/MouseWheelZoomControl.ts +269 -0
  68. package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
  69. package/src/control/ScaleControl.ts +131 -0
  70. package/src/control/SegmentBoundVisualization.ts +50 -0
  71. package/src/control/ShowFps.ts +28 -0
  72. package/src/control/SimpleNavigation.ts +118 -0
  73. package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
  74. package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
  75. package/src/control/ToggleWireframe.ts +35 -0
  76. package/src/control/TouchNavigation.ts +368 -0
  77. package/src/control/ZoomControl.ts +111 -0
  78. package/src/control/drawing/DrawingControl.ts +45 -0
  79. package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
  80. package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
  81. package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
  82. package/src/control/heightRuler/HeightRuler.ts +16 -0
  83. package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
  84. package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
  85. package/src/control/index.ts +45 -0
  86. package/src/control/ruler/Ruler.ts +35 -0
  87. package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
  88. package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
  89. package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
  90. package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
  91. package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
  92. package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
  93. package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
  94. package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
  95. package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
  96. package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
  97. package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
  98. package/src/ellipsoid/index.ts +4 -0
  99. package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
  100. package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
  101. package/src/entity/BaseBillboardHandler.ts +772 -0
  102. package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
  103. package/src/entity/BillboardHandler.ts +135 -0
  104. package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
  105. package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
  106. package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
  107. package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
  108. package/src/entity/Geometry.ts +486 -0
  109. package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
  110. package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
  111. package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
  112. package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
  113. package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
  114. package/src/entity/PointCloudHandler.ts +125 -0
  115. package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
  116. package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
  117. package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
  118. package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
  119. package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
  120. package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
  121. package/src/entity/index.ts +12 -0
  122. package/src/index.ts +173 -0
  123. package/src/input/KeyboardHandler.ts +196 -0
  124. package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
  125. package/src/input/TouchHandler.ts +54 -0
  126. package/src/{og/input/input.js → input/input.ts} +1 -3
  127. package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
  128. package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
  129. package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
  130. package/src/layer/GeoTexture2d.ts +56 -0
  131. package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
  132. package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
  133. package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
  134. package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
  135. package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
  136. package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
  137. package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
  138. package/src/layer/index.ts +12 -0
  139. package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
  140. package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
  141. package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
  142. package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
  143. package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
  144. package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
  145. package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
  146. package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
  147. package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
  148. package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
  149. package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
  150. package/src/{og/math/coder.js → math/coder.ts} +30 -27
  151. package/src/math/index.ts +26 -0
  152. package/src/{og/math.js → math.ts} +46 -49
  153. package/src/{og/mercator.js → mercator.ts} +143 -149
  154. package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
  155. package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
  156. package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
  157. package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
  158. package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
  159. package/src/quadTree/EntityCollectionNode.ts +395 -0
  160. package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
  161. package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
  162. package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
  163. package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
  164. package/src/quadTree/index.ts +14 -0
  165. package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
  166. package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
  167. package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -256
  168. package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
  169. package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
  170. package/src/{og/scene/Planet.js → scene/Planet.ts} +776 -592
  171. package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
  172. package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
  173. package/src/scene/index.ts +6 -0
  174. package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
  175. package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
  176. package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
  177. package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
  178. package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
  179. package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
  180. package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
  181. package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
  182. package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
  183. package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
  184. package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
  185. package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
  186. package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
  187. package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
  188. package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
  189. package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
  190. package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
  191. package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
  192. package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
  193. package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
  194. package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
  195. package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
  196. package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
  197. package/src/terrain/EmptyTerrain.ts +230 -0
  198. package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
  199. package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
  200. package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
  201. package/src/terrain/index.ts +6 -0
  202. package/src/ui/Button.ts +121 -0
  203. package/src/ui/ButtonGroup.ts +63 -0
  204. package/src/ui/Dialog.ts +244 -0
  205. package/src/ui/Slider.ts +188 -0
  206. package/src/ui/ToggleButton.ts +68 -0
  207. package/src/{og/ui/View.js → ui/View.ts} +66 -59
  208. package/src/utils/BaseWorker.ts +60 -0
  209. package/src/utils/FontAtlas.ts +356 -0
  210. package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
  211. package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
  212. package/src/utils/Loader.ts +247 -0
  213. package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
  214. package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
  215. package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
  216. package/src/utils/TextureAtlas.ts +322 -0
  217. package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
  218. package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
  219. package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
  220. package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
  221. package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
  222. package/src/utils/units.ts +78 -0
  223. package/src/webgl/BaseFramebuffer.ts +125 -0
  224. package/src/webgl/Framebuffer.ts +206 -0
  225. package/src/webgl/Handler.ts +1414 -0
  226. package/src/webgl/Multisample.ts +153 -0
  227. package/src/webgl/Program.ts +451 -0
  228. package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
  229. package/src/webgl/index.ts +13 -0
  230. package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
  231. package/src/webgl/variableHandlers.ts +114 -0
  232. package/src/og/Deferred.js +0 -11
  233. package/src/og/Events.js +0 -185
  234. package/src/og/Globe.js +0 -342
  235. package/src/og/Lock.js +0 -44
  236. package/src/og/Popup.js +0 -187
  237. package/src/og/Stack.js +0 -49
  238. package/src/og/bv/index.js +0 -4
  239. package/src/og/camera/index.js +0 -4
  240. package/src/og/control/EarthCoordinates.js +0 -214
  241. package/src/og/control/EarthNavigation.js +0 -258
  242. package/src/og/control/KeyboardNavigation.js +0 -172
  243. package/src/og/control/LayerSwitcher.js +0 -424
  244. package/src/og/control/MouseNavigation.js +0 -436
  245. package/src/og/control/MouseWheelZoomControl.js +0 -253
  246. package/src/og/control/ScaleControl.js +0 -119
  247. package/src/og/control/SegmentBoundVisualization.js +0 -54
  248. package/src/og/control/ShowFps.js +0 -40
  249. package/src/og/control/SimpleNavigation.js +0 -123
  250. package/src/og/control/ToggleWireframe.js +0 -35
  251. package/src/og/control/TouchNavigation.js +0 -350
  252. package/src/og/control/ZoomControl.js +0 -115
  253. package/src/og/control/drawing/DrawingControl.js +0 -51
  254. package/src/og/control/heightRuler/HeightRuler.js +0 -12
  255. package/src/og/control/index.js +0 -56
  256. package/src/og/control/ruler/Ruler.js +0 -39
  257. package/src/og/ellipsoid/index.js +0 -4
  258. package/src/og/entity/BillboardHandler.js +0 -883
  259. package/src/og/entity/Geometry.js +0 -320
  260. package/src/og/entity/PointCloudHandler.js +0 -122
  261. package/src/og/entity/index.js +0 -9
  262. package/src/og/index.js +0 -112
  263. package/src/og/input/KeyboardHandler.js +0 -195
  264. package/src/og/input/TouchHandler.js +0 -59
  265. package/src/og/layer/GeoTexture2d.js +0 -50
  266. package/src/og/layer/index.js +0 -11
  267. package/src/og/math/index.js +0 -23
  268. package/src/og/quadTree/EntityCollectionNode.js +0 -391
  269. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
  270. package/src/og/quadTree/index.js +0 -14
  271. package/src/og/res/images.js +0 -8
  272. package/src/og/scene/index.js +0 -5
  273. package/src/og/terrain/EmptyTerrain.js +0 -174
  274. package/src/og/terrain/index.js +0 -6
  275. package/src/og/ui/Button.js +0 -107
  276. package/src/og/ui/ButtonGroup.js +0 -57
  277. package/src/og/ui/Dialog.js +0 -239
  278. package/src/og/ui/Slider.js +0 -170
  279. package/src/og/ui/ToggleButton.js +0 -51
  280. package/src/og/ui/UIhelpers.js +0 -155
  281. package/src/og/utils/BaseWorker.js +0 -46
  282. package/src/og/utils/FontAtlas.js +0 -218
  283. package/src/og/utils/Loader.js +0 -188
  284. package/src/og/utils/TextureAtlas.js +0 -291
  285. package/src/og/utils/functionComposition.js +0 -13
  286. package/src/og/utils/units.js +0 -78
  287. package/src/og/webgl/Framebuffer.js +0 -311
  288. package/src/og/webgl/Handler.js +0 -1170
  289. package/src/og/webgl/Multisample.js +0 -275
  290. package/src/og/webgl/Program.js +0 -407
  291. package/src/og/webgl/callbacks.js +0 -98
  292. package/src/og/webgl/index.js +0 -13
  293. package/src/og.jsdoc +0 -3
  294. package/types/Clock.d.ts +0 -99
  295. package/types/Deferred.d.ts +0 -6
  296. package/types/Events.d.ts +0 -78
  297. package/types/Extent.d.ts +0 -166
  298. package/types/Globe.d.ts +0 -108
  299. package/types/ImageCanvas.d.ts +0 -128
  300. package/types/Lock.d.ts +0 -12
  301. package/types/LonLat.d.ts +0 -127
  302. package/types/Object3d.d.ts +0 -35
  303. package/types/Popup.d.ts +0 -29
  304. package/types/QueueArray.d.ts +0 -19
  305. package/types/Rectangle.d.ts +0 -80
  306. package/types/Stack.d.ts +0 -19
  307. package/types/arial.d.ts +0 -49
  308. package/types/astro/astro.d.ts +0 -38
  309. package/types/astro/earth.d.ts +0 -7
  310. package/types/astro/jd.d.ts +0 -254
  311. package/types/bv/Box.d.ts +0 -30
  312. package/types/bv/Sphere.d.ts +0 -38
  313. package/types/bv/index.d.ts +0 -3
  314. package/types/camera/Camera.d.ts +0 -314
  315. package/types/camera/Frustum.d.ts +0 -133
  316. package/types/camera/PlanetCamera.d.ts +0 -219
  317. package/types/camera/index.d.ts +0 -3
  318. package/types/cons.d.ts +0 -40
  319. package/types/control/Atmosphere.d.ts +0 -15
  320. package/types/control/CompassButton.d.ts +0 -16
  321. package/types/control/Control.d.ts +0 -104
  322. package/types/control/DebugInfo.d.ts +0 -19
  323. package/types/control/DrawingSwitcher.d.ts +0 -13
  324. package/types/control/EarthCoordinates.d.ts +0 -44
  325. package/types/control/EarthNavigation.d.ts +0 -43
  326. package/types/control/GeoImageDragControl.d.ts +0 -14
  327. package/types/control/KeyboardNavigation.d.ts +0 -24
  328. package/types/control/LayerAnimation.d.ts +0 -73
  329. package/types/control/LayerSwitcher.d.ts +0 -64
  330. package/types/control/Lighting.d.ts +0 -41
  331. package/types/control/MouseNavigation.d.ts +0 -49
  332. package/types/control/MouseWheelZoomControl.d.ts +0 -46
  333. package/types/control/ScaleControl.d.ts +0 -23
  334. package/types/control/ShowFps.d.ts +0 -11
  335. package/types/control/SimpleNavigation.d.ts +0 -26
  336. package/types/control/SimpleSkyBackground.d.ts +0 -15
  337. package/types/control/Sun.d.ts +0 -53
  338. package/types/control/ToggleWireframe.d.ts +0 -12
  339. package/types/control/TouchNavigation.d.ts +0 -54
  340. package/types/control/ZoomControl.d.ts +0 -26
  341. package/types/control/drawing/DrawingControl.d.ts +0 -14
  342. package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
  343. package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
  344. package/types/control/heightRuler/HeightRuler.d.ts +0 -6
  345. package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
  346. package/types/control/index.d.ts +0 -27
  347. package/types/control/ruler/Ruler.d.ts +0 -13
  348. package/types/control/ruler/RulerScene.d.ts +0 -51
  349. package/types/control/selection/Selection.d.ts +0 -49
  350. package/types/control/selection/SelectionScene.d.ts +0 -32
  351. package/types/control/timeline/TimelineControl.d.ts +0 -10
  352. package/types/control/timeline/TimelineModel.d.ts +0 -33
  353. package/types/control/timeline/TimelineView.d.ts +0 -57
  354. package/types/control/timeline/timelineUtils.d.ts +0 -9
  355. package/types/ellipsoid/Ellipsoid.d.ts +0 -170
  356. package/types/ellipsoid/index.d.ts +0 -3
  357. package/types/ellipsoid/wgs84.d.ts +0 -6
  358. package/types/entity/BaseBillboard.d.ts +0 -215
  359. package/types/entity/Billboard.d.ts +0 -94
  360. package/types/entity/BillboardHandler.d.ts +0 -75
  361. package/types/entity/Entity.d.ts +0 -340
  362. package/types/entity/EntityCollection.d.ts +0 -303
  363. package/types/entity/GeoObject.d.ts +0 -117
  364. package/types/entity/GeoObjectHandler.d.ts +0 -41
  365. package/types/entity/Geometry.d.ts +0 -79
  366. package/types/entity/GeometryHandler.d.ts +0 -76
  367. package/types/entity/Label.d.ts +0 -190
  368. package/types/entity/LabelHandler.d.ts +0 -31
  369. package/types/entity/LabelWorker.d.ts +0 -9
  370. package/types/entity/PointCloud.d.ts +0 -174
  371. package/types/entity/PointCloudHandler.d.ts +0 -38
  372. package/types/entity/Polyline.d.ts +0 -307
  373. package/types/entity/PolylineHandler.d.ts +0 -18
  374. package/types/entity/Ray.d.ts +0 -122
  375. package/types/entity/RayHandler.d.ts +0 -63
  376. package/types/entity/Strip.d.ts +0 -119
  377. package/types/entity/StripHandler.d.ts +0 -38
  378. package/types/entity/index.d.ts +0 -8
  379. package/types/index.d.ts +0 -53
  380. package/types/input/KeyboardHandler.d.ts +0 -17
  381. package/types/input/MouseHandler.d.ts +0 -5
  382. package/types/input/TouchHandler.d.ts +0 -5
  383. package/types/input/input.d.ts +0 -42
  384. package/types/layer/BaseGeoImage.d.ts +0 -116
  385. package/types/layer/CanvasTiles.d.ts +0 -73
  386. package/types/layer/GeoImage.d.ts +0 -51
  387. package/types/layer/GeoTexture2d.d.ts +0 -7
  388. package/types/layer/GeoVideo.d.ts +0 -47
  389. package/types/layer/KML.d.ts +0 -93
  390. package/types/layer/Layer.d.ts +0 -320
  391. package/types/layer/Material.d.ts +0 -45
  392. package/types/layer/Vector.d.ts +0 -211
  393. package/types/layer/WMS.d.ts +0 -66
  394. package/types/layer/XYZ.d.ts +0 -122
  395. package/types/layer/index.d.ts +0 -10
  396. package/types/light/LightSource.d.ts +0 -178
  397. package/types/math/Line2.d.ts +0 -11
  398. package/types/math/Line3.d.ts +0 -10
  399. package/types/math/Mat3.d.ts +0 -65
  400. package/types/math/Mat4.d.ts +0 -176
  401. package/types/math/Plane.d.ts +0 -18
  402. package/types/math/Quat.d.ts +0 -379
  403. package/types/math/Ray.d.ts +0 -82
  404. package/types/math/Vec2.d.ts +0 -309
  405. package/types/math/Vec3.d.ts +0 -472
  406. package/types/math/Vec4.d.ts +0 -161
  407. package/types/math/coder.d.ts +0 -43
  408. package/types/math/index.d.ts +0 -11
  409. package/types/math.d.ts +0 -268
  410. package/types/mercator.d.ts +0 -92
  411. package/types/proj/EPSG3857.d.ts +0 -6
  412. package/types/proj/EPSG4326.d.ts +0 -6
  413. package/types/proj/Proj.d.ts +0 -42
  414. package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
  415. package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
  416. package/types/quadTree/EntityCollectionNode.d.ts +0 -41
  417. package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
  418. package/types/quadTree/Node.d.ts +0 -58
  419. package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
  420. package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
  421. package/types/quadTree/index.d.ts +0 -12
  422. package/types/quadTree/quadTree.d.ts +0 -40
  423. package/types/renderer/Renderer.d.ts +0 -291
  424. package/types/renderer/RendererEvents.d.ts +0 -241
  425. package/types/res/images.d.ts +0 -2
  426. package/types/scene/Axes.d.ts +0 -10
  427. package/types/scene/BaseNode.d.ts +0 -60
  428. package/types/scene/Planet.d.ts +0 -594
  429. package/types/scene/RenderNode.d.ts +0 -152
  430. package/types/scene/SkyBox.d.ts +0 -9
  431. package/types/scene/index.d.ts +0 -4
  432. package/types/segment/Segment.d.ts +0 -273
  433. package/types/segment/SegmentLonLat.d.ts +0 -22
  434. package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
  435. package/types/segment/Slice.d.ts +0 -10
  436. package/types/segment/segmentHelper.d.ts +0 -13
  437. package/types/shaders/atmos.d.ts +0 -4
  438. package/types/shaders/billboard.d.ts +0 -3
  439. package/types/shaders/depth.d.ts +0 -2
  440. package/types/shaders/drawnode.d.ts +0 -8
  441. package/types/shaders/geoObject.d.ts +0 -3
  442. package/types/shaders/label.d.ts +0 -4
  443. package/types/shaders/pickingMask.d.ts +0 -2
  444. package/types/shaders/pointCloud.d.ts +0 -2
  445. package/types/shaders/polyline.d.ts +0 -3
  446. package/types/shaders/ray.d.ts +0 -2
  447. package/types/shaders/screenFrame.d.ts +0 -2
  448. package/types/shaders/skybox.d.ts +0 -2
  449. package/types/shaders/toneMapping.d.ts +0 -2
  450. package/types/shaders/utils.d.ts +0 -1
  451. package/types/terrain/BilTerrain.d.ts +0 -14
  452. package/types/terrain/EmptyTerrain.d.ts +0 -87
  453. package/types/terrain/Geoid.d.ts +0 -17
  454. package/types/terrain/GlobusTerrain.d.ts +0 -122
  455. package/types/terrain/MapboxTerrain.d.ts +0 -14
  456. package/types/terrain/index.d.ts +0 -5
  457. package/types/ui/Button.d.ts +0 -21
  458. package/types/ui/ButtonGroup.d.ts +0 -12
  459. package/types/ui/Dialog.d.ts +0 -41
  460. package/types/ui/Slider.d.ts +0 -33
  461. package/types/ui/ToggleButton.d.ts +0 -10
  462. package/types/ui/UIhelpers.d.ts +0 -13
  463. package/types/ui/View.d.ts +0 -33
  464. package/types/ui/icons.d.ts +0 -1
  465. package/types/utils/BaseWorker.d.ts +0 -14
  466. package/types/utils/FontAtlas.d.ts +0 -16
  467. package/types/utils/GeoImageCreator.d.ts +0 -30
  468. package/types/utils/ImagesCacheManager.d.ts +0 -10
  469. package/types/utils/Loader.d.ts +0 -31
  470. package/types/utils/NormalMapCreator.d.ts +0 -39
  471. package/types/utils/PlainSegmentWorker.d.ts +0 -8
  472. package/types/utils/TerrainWorker.d.ts +0 -7
  473. package/types/utils/TextureAtlas.d.ts +0 -113
  474. package/types/utils/VectorTileCreator.d.ts +0 -14
  475. package/types/utils/colorTable.d.ts +0 -143
  476. package/types/utils/earcut.d.ts +0 -6
  477. package/types/utils/functionComposition.d.ts +0 -5
  478. package/types/utils/objParser.d.ts +0 -8
  479. package/types/utils/shared.d.ts +0 -241
  480. package/types/utils/units.d.ts +0 -20
  481. package/types/webgl/Framebuffer.d.ts +0 -134
  482. package/types/webgl/Handler.d.ts +0 -403
  483. package/types/webgl/Multisample.d.ts +0 -91
  484. package/types/webgl/Program.d.ts +0 -163
  485. package/types/webgl/ProgramController.d.ts +0 -89
  486. package/types/webgl/callbacks.d.ts +0 -1
  487. package/types/webgl/index.d.ts +0 -6
  488. package/types/webgl/types.d.ts +0 -2
  489. /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
  490. /package/src/{og/ui/icons.js → ui/icons.ts} +0 -0
@@ -0,0 +1,188 @@
1
+ import {clamp} from '../math';
2
+ import {EventsHandler} from "../Events";
3
+ import {IViewParams, View, ViewEventsList} from './View';
4
+ import {stringTemplate} from '../utils/shared';
5
+
6
+ interface ISliderParams extends IViewParams {
7
+ label?: string;
8
+ value?: number;
9
+ min?: number;
10
+ max?: number;
11
+ }
12
+
13
+ type SliderEventsList = ["change"];
14
+
15
+ const SLIDER_EVENTS: SliderEventsList = ["change"];
16
+
17
+ const TEMPLATE = `<div class="og-slider">
18
+ <div class="og-slider-label">{label}</div>
19
+ <div class="og-slider-panel">
20
+ <div class="og-slider-progress"></div>
21
+ <div class="og-slider-pointer"></div>
22
+ </div>
23
+ <input type="number"/>
24
+ </div>`;
25
+
26
+ class Slider extends View<null> {
27
+
28
+ public override events: EventsHandler<SliderEventsList> & EventsHandler<ViewEventsList>;
29
+
30
+ protected _value: number;
31
+ protected _min: number;
32
+ protected _max: number;
33
+
34
+ protected _startPosX: number;
35
+
36
+ protected _resizeObserver: ResizeObserver;
37
+
38
+ protected $label: HTMLElement | null;
39
+ protected $pointer: HTMLElement | null;
40
+ protected $progress: HTMLElement | null;
41
+ protected $input: HTMLInputElement | null;
42
+ protected $panel: HTMLElement | null;
43
+
44
+ constructor(options: ISliderParams = {}) {
45
+ super({
46
+ template: stringTemplate(TEMPLATE, {
47
+ label: options.label || ""
48
+ })
49
+ });
50
+
51
+ //@ts-ignore
52
+ this.events = this.events.registerNames(SLIDER_EVENTS);
53
+
54
+ this._value = options.value || 0.0;
55
+ this._min = options.min || 0.0;
56
+ this._max = options.max || 1.0;
57
+ //this._step = options.step || ((this._max - this._min) / 10.0);
58
+
59
+ this._resizeObserver = new ResizeObserver(this._onResize);
60
+
61
+ this._startPosX = 0;
62
+
63
+ this.$label = null;
64
+ this.$pointer = null;
65
+ this.$progress = null;
66
+ this.$input = null;
67
+ this.$panel = null;
68
+ }
69
+
70
+ public override render(params: any): this {
71
+
72
+ super.render(params);
73
+
74
+ this.$label = this.select(".og-slider-label")!;
75
+ if (this.$label.innerHTML === "") {
76
+ this.$label.style.display = "none";
77
+ }
78
+ this.$pointer = this.select(".og-slider-pointer");
79
+ this.$progress = this.select(".og-slider-progress");
80
+ this.$panel = this.select(".og-slider-panel");
81
+ this.$input = this.select<HTMLInputElement>("input");
82
+
83
+ this._resizeObserver.observe(this.el!);
84
+
85
+ this._initEvents();
86
+
87
+ return this;
88
+ }
89
+
90
+ protected _onResize = () => {
91
+ this._setOffset(this._value * this.$panel!.clientWidth / (this._max - this._min));
92
+ }
93
+
94
+ public set value(val: number) {
95
+ if (val !== this._value) {
96
+ this._value = clamp(val, this._min, this._max);
97
+ this.$input!.value = this._value.toString();
98
+ this._setOffset(this._value * this.$panel!.clientWidth / (this._max - this._min));
99
+ this.events.dispatch(this.events.change, this._value, this);
100
+ }
101
+ }
102
+
103
+ public get value(): number {
104
+ return this._value;
105
+ }
106
+
107
+ protected _initEvents() {
108
+ this.$panel!.addEventListener("mousedown", this._onMouseDown);
109
+ //@ts-ignore
110
+ this.$panel!.addEventListener("mousewheel", this._onMouseWheel);
111
+ this.$panel!.addEventListener("wheel", this._onMouseWheelFF);
112
+ this.$input!.addEventListener("input", this._onInput);
113
+ }
114
+
115
+ protected _clearEvents() {
116
+ this.$panel!.removeEventListener("mousedown", this._onMouseDown);
117
+ //@ts-ignore
118
+ this.$panel!.removeEventListener("mousewheel", this._onMouseWheel);
119
+ this.$panel!.removeEventListener("wheel", this._onMouseWheelFF);
120
+ this.$input!.removeEventListener("input", this._onInput);
121
+ }
122
+
123
+ protected _onMouseWheel = (e: WheelEvent) => {
124
+ //@ts-ignore
125
+ e = e || window.event;
126
+ e.preventDefault();
127
+ e.stopPropagation();
128
+ //@ts-ignore
129
+ this.value = this._value + Math.sign(e.wheelDelta) * (this._max - this._min) / 100.0;
130
+ }
131
+
132
+ protected _onMouseWheelFF = (e: WheelEvent) => {
133
+ this._onMouseWheel(e);
134
+ }
135
+
136
+ protected _onInput = (e: Event) => {
137
+ //@ts-ignore
138
+ e = e || window.event;
139
+ e.preventDefault();
140
+ e.stopPropagation();
141
+ //@ts-ignore
142
+ this.value = parseFloat(e.target.value);
143
+ }
144
+
145
+ protected _onMouseDown = (e: MouseEvent) => {
146
+ //@ts-ignore
147
+ e = e || window.event;
148
+ e.preventDefault();
149
+
150
+ this._startPosX = e.clientX;
151
+
152
+ this.value = this._min + (this._max - this._min) * (e.offsetX / this.$panel!.clientWidth);
153
+
154
+ document.addEventListener("mousemove", this._onMouseMove);
155
+ document.addEventListener("mouseup", this._onMouseUp);
156
+ }
157
+
158
+ protected _setOffset(x: number) {
159
+ if (x >= 0 && x <= this.$panel!.clientWidth) {
160
+ this.$pointer!.style.left = this.$progress!.style.width = `${x * 100 / this.$panel!.clientWidth}%`;
161
+ }
162
+ }
163
+
164
+ protected _onMouseMove = (e: MouseEvent) => {
165
+ //@ts-ignore
166
+ e = e || window.event;
167
+ e.preventDefault();
168
+ e.stopPropagation();
169
+
170
+ let rect = this.$panel!.getBoundingClientRect();
171
+ let clientX = clamp(e.clientX, rect.left, rect.right);
172
+ let dx = this._startPosX - clientX;
173
+ this._startPosX = clientX;
174
+ this.value = (this.$pointer!.offsetLeft - dx) * (this._max - this._min) / this.$panel!.clientWidth;
175
+ }
176
+
177
+ protected _onMouseUp = () => {
178
+ document.removeEventListener("mouseup", this._onMouseUp);
179
+ document.removeEventListener("mousemove", this._onMouseMove);
180
+ }
181
+
182
+ public override remove() {
183
+ this._clearEvents();
184
+ super.remove();
185
+ }
186
+ }
187
+
188
+ export {Slider}
@@ -0,0 +1,68 @@
1
+ import {Button, IButtonParams, ButtonEventsList} from './Button';
2
+ import {EventsHandler} from "../Events";
3
+ import {ViewEventsList} from "./View";
4
+
5
+ interface IToggleButtonParams extends IButtonParams {
6
+ isActive?: boolean;
7
+ preventClick?: boolean;
8
+ }
9
+
10
+ type ToggleButtonEventsList = ["change"];
11
+
12
+ const TOGGLEBUTTON_EVENTS: ToggleButtonEventsList = ["change"];
13
+
14
+ class ToggleButton extends Button {
15
+
16
+ public override events: EventsHandler<ToggleButtonEventsList> & EventsHandler<ButtonEventsList> & EventsHandler<ViewEventsList>;
17
+
18
+ protected _isActive: boolean;
19
+ public preventClick: boolean;
20
+
21
+ constructor(options: IToggleButtonParams) {
22
+ super({
23
+ ...options
24
+ });
25
+
26
+ //@ts-ignore
27
+ this.events = this.events.registerNames(TOGGLEBUTTON_EVENTS);
28
+
29
+ this._isActive = options.isActive || false;
30
+
31
+ this.preventClick = options.preventClick || false;
32
+ }
33
+
34
+ public setActive(isActive: boolean, stopPropagation: boolean = false) {
35
+ if (isActive !== this._isActive) {
36
+ this._isActive = isActive;
37
+ this._toggle();
38
+ if (!stopPropagation) {
39
+ this.events.dispatch(this.events.change, isActive, this);
40
+ }
41
+ }
42
+ }
43
+
44
+ protected _toggle() {
45
+ this.el && this.el.classList.toggle("og-button__active");
46
+ }
47
+
48
+ public get isActive(): boolean {
49
+ return this._isActive;
50
+ }
51
+
52
+ public override render(params: any): this {
53
+ super.render(params);
54
+ if (this._isActive) {
55
+ this._toggle();
56
+ }
57
+ return this;
58
+ }
59
+
60
+ protected override _onMouseClick = (e: MouseEvent) => {
61
+ if (!this.preventClick) {
62
+ this._mouseClickHandler(e);
63
+ this.setActive(!this.isActive);
64
+ }
65
+ }
66
+ }
67
+
68
+ export {ToggleButton}
@@ -1,39 +1,53 @@
1
- 'use strict';
1
+ import {createEvents, EventsHandler} from '../Events';
2
+ import {parseHTML, stringTemplate} from '../utils/shared';
3
+
4
+ export interface IViewParams {
5
+ model?: any;
6
+ template?: string;
7
+ parent?: View<any> | null;
8
+ classList?: string[];
9
+ }
10
+
11
+ export type ViewEventsList = ["render"];
12
+ const VIEW_EVENTS: ViewEventsList = ["render"];
13
+
14
+ class View<M> {
15
+
16
+ static __counter__: number = 0;
17
+
18
+ protected __id: number;
19
+
20
+ public events: EventsHandler<ViewEventsList>;
2
21
 
22
+ public model: M;
3
23
 
4
- import { Events } from '../Events.js';
5
- import { parseHTML, stringTemplate } from '../utils/shared.js';
24
+ public template: string;
6
25
 
7
- class View {
8
- constructor(options = {}) {
9
- this.__id = View.__staticCounter++;
10
- this._events = new Events(options.eventList || []);
26
+ public parent: View<any> | null;
27
+
28
+ public el: HTMLElement | null;
29
+
30
+ protected _classList: string[];
31
+
32
+ constructor(options: IViewParams = {}) {
33
+ this.__id = View.__counter__++;
34
+ this.events = createEvents<ViewEventsList>(VIEW_EVENTS);
11
35
  this.model = options.model || null;
12
36
  this.template = options.template || "";
13
37
  this.parent = options.parent || null;
14
38
  this._classList = options.classList || [];
39
+ this.el = null;
15
40
  }
16
41
 
17
- static set __staticCounter(n) {
18
- this.__counter__ = n;
19
- }
20
-
21
- static get __staticCounter() {
22
- if (!this.__counter__ && this.__counter__ !== 0) {
23
- this.__counter__ = 0;
24
- }
25
- return this.__counter__;
26
- }
27
-
28
- static getHTML(template, params) {
42
+ static getHTML(template: string, params: any): string {
29
43
  return stringTemplate(template, params);
30
44
  }
31
45
 
32
- static parseHTML(htmlStr) {
46
+ static parseHTML(htmlStr: string): HTMLElement[] {
33
47
  return parseHTML(htmlStr);
34
48
  }
35
49
 
36
- static insertAfter(newNodes, referenceNode) {
50
+ static insertAfter(newNodes: HTMLElement | HTMLElement[], referenceNode: Node): HTMLElement[] {
37
51
  if (!Array.isArray(newNodes)) {
38
52
  newNodes = [newNodes];
39
53
  }
@@ -45,7 +59,7 @@ class View {
45
59
  return newNodes;
46
60
  }
47
61
 
48
- static insertBefore(newNodes, referenceNode) {
62
+ static insertBefore(newNodes: HTMLElement | HTMLElement[], referenceNode: Node): HTMLElement[] {
49
63
  if (!Array.isArray(newNodes)) {
50
64
  newNodes = [newNodes];
51
65
  }
@@ -54,21 +68,10 @@ class View {
54
68
  referenceNode.parentNode.insertBefore(newNodes[i], referenceNode);
55
69
  }
56
70
  }
71
+ return newNodes;
57
72
  }
58
73
 
59
- get events() {
60
- return this._events;
61
- }
62
-
63
- on(eventName, callback, sender) {
64
- return this._events.on(eventName, callback, sender);
65
- }
66
-
67
- off(eventName, callback) {
68
- return this._events.off(eventName, callback);
69
- }
70
-
71
- insertBefore(view) {
74
+ public insertBefore(view: View<any> | HTMLElement) {
72
75
  if (!this.el) {
73
76
  this.render();
74
77
  }
@@ -76,13 +79,13 @@ class View {
76
79
  if (view instanceof HTMLElement && view.parentNode) {
77
80
  View.insertBefore(this.el, view);
78
81
  }
79
- if (view instanceof View && view.el.parentNode) {
82
+ if (view instanceof View && view.el && view.el.parentNode) {
80
83
  View.insertBefore(this.el, view.el);
81
84
  }
82
85
  }
83
86
  }
84
87
 
85
- insertAfter(view) {
88
+ public insertAfter(view: View<any> | HTMLElement) {
86
89
  if (!this.el) {
87
90
  this.render();
88
91
  }
@@ -90,17 +93,17 @@ class View {
90
93
  if (view instanceof HTMLElement && view.parentNode) {
91
94
  View.insertAfter(this.el, view);
92
95
  }
93
- if (view instanceof View && view.el.parentNode) {
96
+ if (view instanceof View && view.el && view.el.parentNode) {
94
97
  View.insertAfter(this.el, view.el);
95
98
  }
96
99
  }
97
100
  }
98
101
 
99
- isEqual(view) {
102
+ public isEqual(view: View<any>): boolean {
100
103
  return view.__id === this.__id;
101
104
  }
102
105
 
103
- appendTo(node, clean, firstPosition) {
106
+ public appendTo(node: HTMLElement, clean: boolean = false, firstPosition: boolean = false) {
104
107
  if (node) {
105
108
  if (!this.el) {
106
109
  this.beforeRender(node);
@@ -115,14 +118,16 @@ class View {
115
118
  node.innerHTML = "";
116
119
  }
117
120
 
118
- if (firstPosition) {
119
- if (node.childNodes[0]) {
120
- View.insertBefore(this.el, node.childNodes[0]);
121
+ if (this.el) {
122
+ if (firstPosition) {
123
+ if (node.childNodes[0]) {
124
+ View.insertBefore(this.el, node.childNodes[0]);
125
+ } else {
126
+ node.appendChild(this.el);
127
+ }
121
128
  } else {
122
129
  node.appendChild(this.el);
123
130
  }
124
- } else {
125
- node.appendChild(this.el);
126
131
  }
127
132
  this.afterRender(node);
128
133
  }
@@ -130,35 +135,37 @@ class View {
130
135
  return this;
131
136
  }
132
137
 
133
- afterRender(parentNode) {
134
- //virtual
138
+ public afterRender(parentNode: HTMLElement) {
135
139
  }
136
140
 
137
- beforeRender(parentNode) {
138
- //virtual
141
+ public beforeRender(parentNode: HTMLElement) {
139
142
  }
140
143
 
141
- stopPropagation() {
142
- this._events.stopPropagation();
144
+ public stopPropagation() {
145
+ this.events.stopPropagation();
143
146
  }
144
147
 
145
- renderTemplate(params) {
148
+ public renderTemplate(params: any): HTMLElement {
146
149
  return View.parseHTML(View.getHTML(this.template, params || {}))[0];
147
150
  }
148
151
 
149
- render(params) {
152
+ public render(params?: any): this {
150
153
  this.el = this.renderTemplate(params);
151
154
  for (let i = 0, len = this._classList.length; i < len; i++) {
152
155
  this.el.classList.add(this._classList[i]);
153
156
  }
157
+ this.events.dispatch(this.events.render, this);
154
158
  return this;
155
159
  }
156
160
 
157
- select(queryStr) {
158
- return this.el.querySelector(queryStr);
161
+ public select<T extends HTMLElement>(queryStr: string): T | null {
162
+ if (this.el) {
163
+ return this.el.querySelector<T>(queryStr);
164
+ }
165
+ return null as T | null;
159
166
  }
160
167
 
161
- selectRemove(queryStr) {
168
+ public selectRemove(queryStr: string): HTMLElement | undefined {
162
169
  if (this.el) {
163
170
  let r = this.select(queryStr);
164
171
  if (r && r.parentNode) {
@@ -168,7 +175,7 @@ class View {
168
175
  }
169
176
  }
170
177
 
171
- selectAll(queryStr, callback) {
178
+ public selectAll(queryStr: string, callback?: Function) {
172
179
  if (this.el) {
173
180
  const res = this.el.querySelectorAll(queryStr);
174
181
  if (callback) {
@@ -180,11 +187,11 @@ class View {
180
187
  }
181
188
  }
182
189
 
183
- remove() {
190
+ public remove() {
184
191
  if (this.el && this.el.parentNode) {
185
192
  this.el.parentNode.removeChild(this.el);
186
193
  }
187
194
  }
188
195
  }
189
196
 
190
- export { View };
197
+ export {View};
@@ -0,0 +1,60 @@
1
+ export class BaseWorker<T> {
2
+ protected _sourceId: number;
3
+ protected _source: Map<number, T>;
4
+ protected _pendingQueue: T[];
5
+ protected _numWorkers: number;
6
+ protected _workerQueue: Worker[];
7
+
8
+ constructor(numWorkers: number = 2, program?: string) {
9
+ this._sourceId = 0;
10
+ this._source = new Map<number, T>();
11
+ this._pendingQueue = [];
12
+ this._numWorkers = numWorkers;
13
+ this._workerQueue = [];
14
+ if (program) {
15
+ this.setProgram(program);
16
+ }
17
+ }
18
+
19
+ public check() {
20
+ if (this._pendingQueue.length) {
21
+ this.make(this._pendingQueue.pop()!);
22
+ }
23
+ }
24
+
25
+ public setProgram(program: string) {
26
+ let p = new Blob([program], {type: "application/javascript"});
27
+ for (let i = 0; i < this._numWorkers; i++) {
28
+ let w = new Worker(URL.createObjectURL(p));
29
+ w.onmessage = (e: MessageEvent) => {
30
+ this._onMessage(e);
31
+ this._workerQueue && this._workerQueue.unshift(e.target as Worker);
32
+ this.check();
33
+ }
34
+ this._workerQueue.push(w);
35
+ }
36
+ }
37
+
38
+ public make(data: T) {
39
+ }
40
+
41
+ protected _onMessage(e: MessageEvent) {
42
+
43
+ }
44
+
45
+ public destroy() {
46
+ for (let i = 0; i < this._workerQueue.length; i++) {
47
+ const w = this._workerQueue[i];
48
+ w.onmessage = null;
49
+ w.terminate();
50
+ }
51
+ //@ts-ignore
52
+ this._pendingQueue = null;
53
+ //@ts-ignore
54
+ this._workerQueue = null;
55
+ }
56
+
57
+ public get pendingQueue(): T[] {
58
+ return this._pendingQueue;
59
+ }
60
+ }