astro-viewer 1.3.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 (236) hide show
  1. package/README.md +373 -0
  2. package/dist/astroviewer.cjs +13941 -0
  3. package/dist/astroviewer.cjs.map +1 -0
  4. package/dist/astroviewer.js +2 -0
  5. package/dist/astroviewer.js.map +1 -0
  6. package/dist/astroviewer.min.js +2 -0
  7. package/dist/astroviewer.min.js.map +1 -0
  8. package/lib-esm/AstroSphere.d.ts +114 -0
  9. package/lib-esm/AstroSphere.d.ts.map +1 -0
  10. package/lib-esm/AstroSphere.js +679 -0
  11. package/lib-esm/AstroSphere.js.map +1 -0
  12. package/lib-esm/AstroViewer.d.ts +81 -0
  13. package/lib-esm/AstroViewer.d.ts.map +1 -0
  14. package/lib-esm/AstroViewer.js +348 -0
  15. package/lib-esm/AstroViewer.js.map +1 -0
  16. package/lib-esm/Camera.d.ts +74 -0
  17. package/lib-esm/Camera.d.ts.map +1 -0
  18. package/lib-esm/Camera.js +334 -0
  19. package/lib-esm/Camera.js.map +1 -0
  20. package/lib-esm/Config.d.ts +20 -0
  21. package/lib-esm/Config.d.ts.map +1 -0
  22. package/lib-esm/Config.js +32 -0
  23. package/lib-esm/Config.js.map +1 -0
  24. package/lib-esm/Global.d.ts +27 -0
  25. package/lib-esm/Global.d.ts.map +1 -0
  26. package/lib-esm/Global.js +52 -0
  27. package/lib-esm/Global.js.map +1 -0
  28. package/lib-esm/index.d.ts +17 -0
  29. package/lib-esm/index.d.ts.map +1 -0
  30. package/lib-esm/index.js +16 -0
  31. package/lib-esm/index.js.map +1 -0
  32. package/lib-esm/model/AbstractSkyEntity.d.ts +55 -0
  33. package/lib-esm/model/AbstractSkyEntity.d.ts.map +1 -0
  34. package/lib-esm/model/AbstractSkyEntity.js +153 -0
  35. package/lib-esm/model/AbstractSkyEntity.js.map +1 -0
  36. package/lib-esm/model/AstroGL.d.ts +11 -0
  37. package/lib-esm/model/AstroGL.d.ts.map +1 -0
  38. package/lib-esm/model/AstroGL.js +2 -0
  39. package/lib-esm/model/AstroGL.js.map +1 -0
  40. package/lib-esm/model/ColorMaps.d.ts +17 -0
  41. package/lib-esm/model/ColorMaps.d.ts.map +1 -0
  42. package/lib-esm/model/ColorMaps.js +1288 -0
  43. package/lib-esm/model/ColorMaps.js.map +1 -0
  44. package/lib-esm/model/FoV.d.ts +63 -0
  45. package/lib-esm/model/FoV.d.ts.map +1 -0
  46. package/lib-esm/model/FoV.js +275 -0
  47. package/lib-esm/model/FoV.js.map +1 -0
  48. package/lib-esm/model/MetadataColumn.d.ts +50 -0
  49. package/lib-esm/model/MetadataColumn.d.ts.map +1 -0
  50. package/lib-esm/model/MetadataColumn.js +95 -0
  51. package/lib-esm/model/MetadataColumn.js.map +1 -0
  52. package/lib-esm/model/MetadataManager.d.ts +43 -0
  53. package/lib-esm/model/MetadataManager.d.ts.map +1 -0
  54. package/lib-esm/model/MetadataManager.js +117 -0
  55. package/lib-esm/model/MetadataManager.js.map +1 -0
  56. package/lib-esm/model/Point.d.ts +53 -0
  57. package/lib-esm/model/Point.d.ts.map +1 -0
  58. package/lib-esm/model/Point.js +133 -0
  59. package/lib-esm/model/Point.js.map +1 -0
  60. package/lib-esm/model/Point2D.d.ts +9 -0
  61. package/lib-esm/model/Point2D.d.ts.map +1 -0
  62. package/lib-esm/model/Point2D.js +16 -0
  63. package/lib-esm/model/Point2D.js.map +1 -0
  64. package/lib-esm/model/Source.d.ts +34 -0
  65. package/lib-esm/model/Source.d.ts.map +1 -0
  66. package/lib-esm/model/Source.js +63 -0
  67. package/lib-esm/model/Source.js.map +1 -0
  68. package/lib-esm/model/catalogues/CatalogueGL.d.ts +91 -0
  69. package/lib-esm/model/catalogues/CatalogueGL.d.ts.map +1 -0
  70. package/lib-esm/model/catalogues/CatalogueGL.js +614 -0
  71. package/lib-esm/model/catalogues/CatalogueGL.js.map +1 -0
  72. package/lib-esm/model/catalogues/CatalogueProps.d.ts +2 -0
  73. package/lib-esm/model/catalogues/CatalogueProps.d.ts.map +1 -0
  74. package/lib-esm/model/catalogues/CatalogueProps.js +156 -0
  75. package/lib-esm/model/catalogues/CatalogueProps.js.map +1 -0
  76. package/lib-esm/model/footprints/Footprint.d.ts +44 -0
  77. package/lib-esm/model/footprints/Footprint.d.ts.map +1 -0
  78. package/lib-esm/model/footprints/Footprint.js +104 -0
  79. package/lib-esm/model/footprints/Footprint.js.map +1 -0
  80. package/lib-esm/model/footprints/FootprintProps.d.ts +2 -0
  81. package/lib-esm/model/footprints/FootprintProps.d.ts.map +1 -0
  82. package/lib-esm/model/footprints/FootprintProps.js +87 -0
  83. package/lib-esm/model/footprints/FootprintProps.js.map +1 -0
  84. package/lib-esm/model/footprints/FootprintSetGL.d.ts +106 -0
  85. package/lib-esm/model/footprints/FootprintSetGL.d.ts.map +1 -0
  86. package/lib-esm/model/footprints/FootprintSetGL.js +592 -0
  87. package/lib-esm/model/footprints/FootprintSetGL.js.map +1 -0
  88. package/lib-esm/model/grid/EquatorialGrid.d.ts +49 -0
  89. package/lib-esm/model/grid/EquatorialGrid.d.ts.map +1 -0
  90. package/lib-esm/model/grid/EquatorialGrid.js +302 -0
  91. package/lib-esm/model/grid/EquatorialGrid.js.map +1 -0
  92. package/lib-esm/model/grid/GridTextHelper.d.ts +26 -0
  93. package/lib-esm/model/grid/GridTextHelper.d.ts.map +1 -0
  94. package/lib-esm/model/grid/GridTextHelper.js +92 -0
  95. package/lib-esm/model/grid/GridTextHelper.js.map +1 -0
  96. package/lib-esm/model/grid/HealpixGrid.d.ts +49 -0
  97. package/lib-esm/model/grid/HealpixGrid.d.ts.map +1 -0
  98. package/lib-esm/model/grid/HealpixGrid.js +306 -0
  99. package/lib-esm/model/grid/HealpixGrid.js.map +1 -0
  100. package/lib-esm/model/hips/AllSky.d.ts +40 -0
  101. package/lib-esm/model/hips/AllSky.d.ts.map +1 -0
  102. package/lib-esm/model/hips/AllSky.js +232 -0
  103. package/lib-esm/model/hips/AllSky.js.map +1 -0
  104. package/lib-esm/model/hips/AncestorTile.d.ts +38 -0
  105. package/lib-esm/model/hips/AncestorTile.d.ts.map +1 -0
  106. package/lib-esm/model/hips/AncestorTile.js +248 -0
  107. package/lib-esm/model/hips/AncestorTile.js.map +1 -0
  108. package/lib-esm/model/hips/FoVHelper.d.ts +11 -0
  109. package/lib-esm/model/hips/FoVHelper.d.ts.map +1 -0
  110. package/lib-esm/model/hips/FoVHelper.js +107 -0
  111. package/lib-esm/model/hips/FoVHelper.js.map +1 -0
  112. package/lib-esm/model/hips/HiPS.d.ts +47 -0
  113. package/lib-esm/model/hips/HiPS.d.ts.map +1 -0
  114. package/lib-esm/model/hips/HiPS.js +222 -0
  115. package/lib-esm/model/hips/HiPS.js.map +1 -0
  116. package/lib-esm/model/hips/HiPSDescriptor.d.ts +37 -0
  117. package/lib-esm/model/hips/HiPSDescriptor.d.ts.map +1 -0
  118. package/lib-esm/model/hips/HiPSDescriptor.js +132 -0
  119. package/lib-esm/model/hips/HiPSDescriptor.js.map +1 -0
  120. package/lib-esm/model/hips/Tile.d.ts +51 -0
  121. package/lib-esm/model/hips/Tile.d.ts.map +1 -0
  122. package/lib-esm/model/hips/Tile.js +355 -0
  123. package/lib-esm/model/hips/Tile.js.map +1 -0
  124. package/lib-esm/model/hips/TileBuffer.d.ts +39 -0
  125. package/lib-esm/model/hips/TileBuffer.d.ts.map +1 -0
  126. package/lib-esm/model/hips/TileBuffer.js +148 -0
  127. package/lib-esm/model/hips/TileBuffer.js.map +1 -0
  128. package/lib-esm/model/hips/VisibleTilesManager.d.ts +35 -0
  129. package/lib-esm/model/hips/VisibleTilesManager.d.ts.map +1 -0
  130. package/lib-esm/model/hips/VisibleTilesManager.js +160 -0
  131. package/lib-esm/model/hips/VisibleTilesManager.js.map +1 -0
  132. package/lib-esm/model/tap/TapMetadata.d.ts +31 -0
  133. package/lib-esm/model/tap/TapMetadata.d.ts.map +1 -0
  134. package/lib-esm/model/tap/TapMetadata.js +55 -0
  135. package/lib-esm/model/tap/TapMetadata.js.map +1 -0
  136. package/lib-esm/model/tap/TapMetadataList.d.ts +23 -0
  137. package/lib-esm/model/tap/TapMetadataList.d.ts.map +1 -0
  138. package/lib-esm/model/tap/TapMetadataList.js +58 -0
  139. package/lib-esm/model/tap/TapMetadataList.js.map +1 -0
  140. package/lib-esm/model/tap/TapRepo.d.ts +27 -0
  141. package/lib-esm/model/tap/TapRepo.d.ts.map +1 -0
  142. package/lib-esm/model/tap/TapRepo.js +51 -0
  143. package/lib-esm/model/tap/TapRepo.js.map +1 -0
  144. package/lib-esm/services/SesameService.d.ts +14 -0
  145. package/lib-esm/services/SesameService.d.ts.map +1 -0
  146. package/lib-esm/services/SesameService.js +54 -0
  147. package/lib-esm/services/SesameService.js.map +1 -0
  148. package/lib-esm/services/helpers.d.ts +5 -0
  149. package/lib-esm/services/helpers.d.ts.map +1 -0
  150. package/lib-esm/services/helpers.js +16 -0
  151. package/lib-esm/services/helpers.js.map +1 -0
  152. package/lib-esm/services/hipsNodeService.d.ts +7 -0
  153. package/lib-esm/services/hipsNodeService.d.ts.map +1 -0
  154. package/lib-esm/services/hipsNodeService.js +65 -0
  155. package/lib-esm/services/hipsNodeService.js.map +1 -0
  156. package/lib-esm/services/parse-hipslist.d.ts +3 -0
  157. package/lib-esm/services/parse-hipslist.d.ts.map +1 -0
  158. package/lib-esm/services/parse-hipslist.js +25 -0
  159. package/lib-esm/services/parse-hipslist.js.map +1 -0
  160. package/lib-esm/services/queryCatalogueByFoV.d.ts +2 -0
  161. package/lib-esm/services/queryCatalogueByFoV.d.ts.map +1 -0
  162. package/lib-esm/services/queryCatalogueByFoV.js +56 -0
  163. package/lib-esm/services/queryCatalogueByFoV.js.map +1 -0
  164. package/lib-esm/services/queryFootprintSetByFov.d.ts +2 -0
  165. package/lib-esm/services/queryFootprintSetByFov.d.ts.map +1 -0
  166. package/lib-esm/services/queryFootprintSetByFov.js +128 -0
  167. package/lib-esm/services/queryFootprintSetByFov.js.map +1 -0
  168. package/lib-esm/services/tapRepoService.d.ts +2 -0
  169. package/lib-esm/services/tapRepoService.d.ts.map +1 -0
  170. package/lib-esm/services/tapRepoService.js +190 -0
  171. package/lib-esm/services/tapRepoService.js.map +1 -0
  172. package/lib-esm/services/types.d.ts +13 -0
  173. package/lib-esm/services/types.d.ts.map +1 -0
  174. package/lib-esm/services/types.js +2 -0
  175. package/lib-esm/services/types.js.map +1 -0
  176. package/lib-esm/shader/CatalogueShaderProgram.d.ts +35 -0
  177. package/lib-esm/shader/CatalogueShaderProgram.d.ts.map +1 -0
  178. package/lib-esm/shader/CatalogueShaderProgram.js +94 -0
  179. package/lib-esm/shader/CatalogueShaderProgram.js.map +1 -0
  180. package/lib-esm/shader/FootprintShaderProgram.d.ts +31 -0
  181. package/lib-esm/shader/FootprintShaderProgram.d.ts.map +1 -0
  182. package/lib-esm/shader/FootprintShaderProgram.js +86 -0
  183. package/lib-esm/shader/FootprintShaderProgram.js.map +1 -0
  184. package/lib-esm/shader/GridShaderManager.d.ts +6 -0
  185. package/lib-esm/shader/GridShaderManager.d.ts.map +1 -0
  186. package/lib-esm/shader/GridShaderManager.js +29 -0
  187. package/lib-esm/shader/GridShaderManager.js.map +1 -0
  188. package/lib-esm/shader/HiPSShaderProgram.d.ts +54 -0
  189. package/lib-esm/shader/HiPSShaderProgram.d.ts.map +1 -0
  190. package/lib-esm/shader/HiPSShaderProgram.js +257 -0
  191. package/lib-esm/shader/HiPSShaderProgram.js.map +1 -0
  192. package/lib-esm/shader/ShaderManager.d.ts +12 -0
  193. package/lib-esm/shader/ShaderManager.d.ts.map +1 -0
  194. package/lib-esm/shader/ShaderManager.js +344 -0
  195. package/lib-esm/shader/ShaderManager.js.map +1 -0
  196. package/lib-esm/shader/ShaderManagerMutliHiPS.d.ts +12 -0
  197. package/lib-esm/shader/ShaderManagerMutliHiPS.d.ts.map +1 -0
  198. package/lib-esm/shader/ShaderManagerMutliHiPS.js +750 -0
  199. package/lib-esm/shader/ShaderManagerMutliHiPS.js.map +1 -0
  200. package/lib-esm/utils/CoordsType.d.ts +10 -0
  201. package/lib-esm/utils/CoordsType.d.ts.map +1 -0
  202. package/lib-esm/utils/CoordsType.js +12 -0
  203. package/lib-esm/utils/CoordsType.js.map +1 -0
  204. package/lib-esm/utils/FoVUtils.d.ts +46 -0
  205. package/lib-esm/utils/FoVUtils.d.ts.map +1 -0
  206. package/lib-esm/utils/FoVUtils.js +217 -0
  207. package/lib-esm/utils/FoVUtils.js.map +1 -0
  208. package/lib-esm/utils/GeomUtils.d.ts +36 -0
  209. package/lib-esm/utils/GeomUtils.d.ts.map +1 -0
  210. package/lib-esm/utils/GeomUtils.js +267 -0
  211. package/lib-esm/utils/GeomUtils.js.map +1 -0
  212. package/lib-esm/utils/MouseHelper.d.ts +36 -0
  213. package/lib-esm/utils/MouseHelper.d.ts.map +1 -0
  214. package/lib-esm/utils/MouseHelper.js +94 -0
  215. package/lib-esm/utils/MouseHelper.js.map +1 -0
  216. package/lib-esm/utils/PerspectiveMatrixManager.d.ts +11 -0
  217. package/lib-esm/utils/PerspectiveMatrixManager.d.ts.map +1 -0
  218. package/lib-esm/utils/PerspectiveMatrixManager.js +37 -0
  219. package/lib-esm/utils/PerspectiveMatrixManager.js.map +1 -0
  220. package/lib-esm/utils/RayPickingUtils.d.ts +30 -0
  221. package/lib-esm/utils/RayPickingUtils.d.ts.map +1 -0
  222. package/lib-esm/utils/RayPickingUtils.js +112 -0
  223. package/lib-esm/utils/RayPickingUtils.js.map +1 -0
  224. package/lib-esm/utils/STCSParser.d.ts +16 -0
  225. package/lib-esm/utils/STCSParser.d.ts.map +1 -0
  226. package/lib-esm/utils/STCSParser.js +96 -0
  227. package/lib-esm/utils/STCSParser.js.map +1 -0
  228. package/lib-esm/utils/ShaderUtility.d.ts +2 -0
  229. package/lib-esm/utils/ShaderUtility.d.ts.map +1 -0
  230. package/lib-esm/utils/ShaderUtility.js +23 -0
  231. package/lib-esm/utils/ShaderUtility.js.map +1 -0
  232. package/lib-esm/utils/Utils.d.ts +32 -0
  233. package/lib-esm/utils/Utils.d.ts.map +1 -0
  234. package/lib-esm/utils/Utils.js +77 -0
  235. package/lib-esm/utils/Utils.js.map +1 -0
  236. package/package.json +82 -0
@@ -0,0 +1,49 @@
1
+ import { HealpixGrid } from './HealpixGrid.js';
2
+ import { AbstractSkyEntity, SkyEntityDrawInput } from '../AbstractSkyEntity.js';
3
+ /** Equatorial grid rendered as RA/Dec great-circle line loops */
4
+ export declare class EquatorialGrid extends AbstractSkyEntity {
5
+ static ELEM_SIZE: number;
6
+ static BYTES_X_ELEM: number;
7
+ private showGrid;
8
+ private _shaderProgram;
9
+ private _vertexShader;
10
+ private _fragmentShader;
11
+ private defaultColor;
12
+ private gridText;
13
+ private _attribLocations;
14
+ private _phiVertexPositionBuffer;
15
+ private _thetaVertexPositionBuffer;
16
+ private _fov;
17
+ private _phiStep;
18
+ private _phiStepRad;
19
+ private _thetaStep;
20
+ private _thetaStepRad;
21
+ private _phiArray;
22
+ private _thetaArray;
23
+ private _dec4Labels;
24
+ private _ra4Labels;
25
+ private _healpixGrid;
26
+ /**
27
+ * @param radius Not used by current implementation (sphere is unit-radius)
28
+ * @param fov Field of view in degrees
29
+ */
30
+ constructor(webgl: WebGL2RenderingContext, healpixGrid: HealpixGrid);
31
+ init(fov: number): void;
32
+ /** Compile/link shaders and fetch uniform/attribute locations */
33
+ private initShaders;
34
+ /** Build RA/Dec line vertex arrays based on FoV step helper */
35
+ private initBuffers;
36
+ /** Update buffers when FoV (in degrees) changes */
37
+ refresh(fovDeg: number): void;
38
+ private vectorDistance;
39
+ private enableShader;
40
+ isVisible(): boolean;
41
+ toggleShowGrid(): void;
42
+ /**
43
+ * @param mMatrix model matrix associated with current HiPS (or scene) transform
44
+ * @param fovObj current field-of-view (degrees). If your FoV type differs,
45
+ * pass the numeric value here; this signature matches original usage.
46
+ */
47
+ draw(input: SkyEntityDrawInput): void;
48
+ }
49
+ //# sourceMappingURL=EquatorialGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EquatorialGrid.d.ts","sourceRoot":"","sources":["../../../src/model/grid/EquatorialGrid.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAOhF,iEAAiE;AACjE,qBAAa,cAAe,SAAQ,iBAAiB;IACpD,MAAM,CAAC,SAAS,SAAK;IACrB,MAAM,CAAC,YAAY,SAAwC;IAE3D,OAAO,CAAC,QAAQ,CAAiB;IAGjC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,eAAe,CAAe;IAEtC,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAuC;IAEvD,OAAO,CAAC,gBAAgB,CAKtB;IAGF,OAAO,CAAC,wBAAwB,CAAe;IAC/C,OAAO,CAAC,0BAA0B,CAAe;IAEjD,OAAO,CAAC,IAAI,CAAU;IAGtB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,WAAW,CAAsB;IAKzC,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,YAAY,CAAc;IAElC;;;OAGG;gBACS,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW;IAKnE,IAAI,CAAC,GAAG,EAAE,MAAM;IAgBhB,iEAAiE;IACjE,OAAO,CAAC,WAAW;IAuCnB,+DAA+D;IAC/D,OAAO,CAAC,WAAW;IAiEnB,mDAAmD;IACnD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ7B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,YAAY;IA4BpB,SAAS,IAAI,OAAO;IAIpB,cAAc;IAGd;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;CAuHrC"}
@@ -0,0 +1,302 @@
1
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
+ import { vec4, mat4 } from 'gl-matrix';
3
+ import { fovHelper } from '../hips/FoVHelper.js';
4
+ import { colorHex2RGB, degToRad } from '../../utils/Utils.js';
5
+ import GridShaderManager from '../../shader/GridShaderManager.js';
6
+ import { Point } from '../Point.js';
7
+ import { CoordsType } from '../../utils/CoordsType.js';
8
+ import { FoVUtils } from '../../utils/FoVUtils.js';
9
+ import GridTextHelper from './GridTextHelper.js';
10
+ import { HealpixGrid } from './HealpixGrid.js';
11
+ import { AbstractSkyEntity } from '../AbstractSkyEntity.js';
12
+ /** Equatorial grid rendered as RA/Dec great-circle line loops */
13
+ export class EquatorialGrid extends AbstractSkyEntity {
14
+ static ELEM_SIZE = 3;
15
+ static BYTES_X_ELEM = new Float32Array().BYTES_PER_ELEMENT;
16
+ showGrid = false;
17
+ // private _gl: GL;
18
+ _shaderProgram;
19
+ _vertexShader;
20
+ _fragmentShader;
21
+ defaultColor = '#41d421';
22
+ gridText = new GridTextHelper();
23
+ _attribLocations = {
24
+ position: 0,
25
+ selected: 1,
26
+ pointSize: 2,
27
+ color: 3,
28
+ };
29
+ _phiVertexPositionBuffer;
30
+ _thetaVertexPositionBuffer;
31
+ _fov;
32
+ // Step sizes (degrees + radians) and label caches
33
+ _phiStep = 0;
34
+ _phiStepRad = 0;
35
+ _thetaStep = 0;
36
+ _thetaStepRad = 0;
37
+ _phiArray = [];
38
+ _thetaArray = [];
39
+ // For placing text labels near current view center:
40
+ // - _dec4Labels: key = RA(deg), value = points along that RA ring (for Dec labels)
41
+ // - _ra4Labels : key = Dec(deg), value = points along that Dec ring (for RA labels)
42
+ _dec4Labels = new Map();
43
+ _ra4Labels = new Map();
44
+ _healpixGrid;
45
+ /**
46
+ * @param radius Not used by current implementation (sphere is unit-radius)
47
+ * @param fov Field of view in degrees
48
+ */
49
+ constructor(webgl, healpixGrid) {
50
+ super(HealpixGrid.RADIUS, HealpixGrid.INITIAL_POSITION, HealpixGrid.INITIAL_PhiRad, HealpixGrid.INITIAL_ThetaRad, 'equatorial-grid', webgl);
51
+ this._healpixGrid = healpixGrid;
52
+ }
53
+ init(fov) {
54
+ this._fov = fov;
55
+ this.initGL(super.webgl);
56
+ // Program & buffers
57
+ this._shaderProgram = super.webgl.createProgram();
58
+ this.initShaders();
59
+ this._phiVertexPositionBuffer = super.webgl.createBuffer();
60
+ this._thetaVertexPositionBuffer = super.webgl.createBuffer();
61
+ // Build initial RA/Dec line buffers
62
+ this.initBuffers(this._fov);
63
+ }
64
+ /** Compile/link shaders and fetch uniform/attribute locations */
65
+ initShaders() {
66
+ // Fragment
67
+ const fsSource = GridShaderManager.healpixGridFS();
68
+ this._fragmentShader = super.webgl.createShader(super.webgl.FRAGMENT_SHADER);
69
+ super.webgl.shaderSource(this._fragmentShader, fsSource);
70
+ super.webgl.compileShader(this._fragmentShader);
71
+ if (!super.webgl.getShaderParameter(this._fragmentShader, super.webgl.COMPILE_STATUS)) {
72
+ // Keep identical behavior (alert) but surface errors in console too
73
+ const log = super.webgl.getShaderInfoLog(this._fragmentShader) || 'Unknown fragment shader error';
74
+ console.error(log);
75
+ alert(log);
76
+ return;
77
+ }
78
+ // Vertex
79
+ const vsSource = GridShaderManager.healpixGridVS();
80
+ this._vertexShader = super.webgl.createShader(super.webgl.VERTEX_SHADER);
81
+ super.webgl.shaderSource(this._vertexShader, vsSource);
82
+ super.webgl.compileShader(this._vertexShader);
83
+ if (!super.webgl.getShaderParameter(this._vertexShader, super.webgl.COMPILE_STATUS)) {
84
+ const log = super.webgl.getShaderInfoLog(this._vertexShader) || 'Unknown vertex shader error';
85
+ console.error(log);
86
+ alert(log);
87
+ return;
88
+ }
89
+ // Link
90
+ super.webgl.attachShader(this._shaderProgram, this._vertexShader);
91
+ super.webgl.attachShader(this._shaderProgram, this._fragmentShader);
92
+ super.webgl.linkProgram(this._shaderProgram);
93
+ if (!super.webgl.getProgramParameter(this._shaderProgram, super.webgl.LINK_STATUS)) {
94
+ alert('Could not initialise shaders');
95
+ }
96
+ super.webgl.useProgram(this._shaderProgram);
97
+ }
98
+ /** Build RA/Dec line vertex arrays based on FoV step helper */
99
+ initBuffers(fovDeg) {
100
+ const R = 1.0;
101
+ const steps = fovHelper.getRADegSteps(fovDeg);
102
+ const phiStep = steps.raStep; // RA step (deg)
103
+ const thetaStep = steps.decStep; // Dec step (deg)
104
+ this._phiStep = phiStep;
105
+ this._phiStepRad = degToRad(phiStep);
106
+ this._thetaStep = thetaStep;
107
+ this._thetaStepRad = degToRad(thetaStep);
108
+ this._ra4Labels = new Map();
109
+ this._dec4Labels = new Map();
110
+ this._phiArray = [];
111
+ this._thetaArray = [];
112
+ // Lines of constant Dec (varying RA): for each Dec, a ring with vertices every phiStep°
113
+ for (let theta = thetaStep; theta < 180; theta += thetaStep) {
114
+ const phiVertexPosition = new Float32Array((360 / phiStep) * 3);
115
+ const thetaRad = degToRad(theta);
116
+ for (let phi = 0; phi < 360; phi += phiStep) {
117
+ const phiRad = degToRad(phi);
118
+ const x = R * Math.sin(thetaRad) * Math.cos(phiRad);
119
+ const y = R * Math.sin(thetaRad) * Math.sin(phiRad);
120
+ const z = R * Math.cos(thetaRad);
121
+ const idx = Math.floor(phi / phiStep);
122
+ phiVertexPosition[3 * idx + 0] = x;
123
+ phiVertexPosition[3 * idx + 1] = y;
124
+ phiVertexPosition[3 * idx + 2] = z;
125
+ if (!this._dec4Labels.has(phi))
126
+ this._dec4Labels.set(phi, []);
127
+ this._dec4Labels.get(phi).push([x, y, z]);
128
+ }
129
+ this._phiArray.push(phiVertexPosition);
130
+ }
131
+ // Lines of constant RA (varying Dec): for each RA, a ring with vertices every thetaStep°
132
+ for (let phi = 0; phi < 360; phi += phiStep) {
133
+ const thetaVertexPosition = new Float32Array((360 / thetaStep) * 3);
134
+ const phiRad = degToRad(phi);
135
+ for (let theta = 0; theta < 360; theta += thetaStep) {
136
+ const thetaRad = degToRad(theta);
137
+ const x = R * Math.sin(thetaRad) * Math.cos(phiRad);
138
+ const y = R * Math.sin(thetaRad) * Math.sin(phiRad);
139
+ const z = R * Math.cos(thetaRad);
140
+ const idx = Math.floor(theta / thetaStep);
141
+ thetaVertexPosition[3 * idx + 0] = x;
142
+ thetaVertexPosition[3 * idx + 1] = y;
143
+ thetaVertexPosition[3 * idx + 2] = z;
144
+ const decKey = 90 - theta; // original code’s keying for RA labels
145
+ if (!this._ra4Labels.has(decKey))
146
+ this._ra4Labels.set(decKey, []);
147
+ this._ra4Labels.get(decKey).push([x, y, z]);
148
+ }
149
+ this._thetaArray.push(thetaVertexPosition);
150
+ }
151
+ }
152
+ /** Update buffers when FoV (in degrees) changes */
153
+ refresh(fovDeg) {
154
+ // const fovDeg = healpixGridSingleton.getMinFoV()
155
+ if (this._fov !== fovDeg) {
156
+ this._fov = fovDeg;
157
+ this.initBuffers(this._fov);
158
+ }
159
+ }
160
+ vectorDistance(p1, p2) {
161
+ const dx = p1.x - p2.x;
162
+ const dy = p1.y - p2.y;
163
+ const dz = p1.z - p2.z;
164
+ return Math.sqrt(dx * dx + dy * dy + dz * dz);
165
+ }
166
+ enableShader(mMatrix, pMatrix, vMatrix) {
167
+ const gl = super.webgl;
168
+ gl.useProgram(this._shaderProgram);
169
+ // uMVMatrix = camera * model
170
+ const mvMatrix = mat4.create();
171
+ // mat4.multiply(mvMatrix, (global.camera as any).getCameraMatrix() as mat4, mMatrix);
172
+ mat4.multiply(mvMatrix, vMatrix, mMatrix);
173
+ // TODO move locations retrieval elsewhere
174
+ // Uniform locations
175
+ const uMVMatrixLoc = gl.getUniformLocation(this._shaderProgram, 'uMVMatrix');
176
+ const uPMatrixLoc = gl.getUniformLocation(this._shaderProgram, 'uPMatrix');
177
+ const uColor = gl.getUniformLocation(this._shaderProgram, 'u_fragcolor');
178
+ // Attribute locations
179
+ this._attribLocations.position = gl.getAttribLocation(this._shaderProgram, 'aCatPosition');
180
+ if (uMVMatrixLoc)
181
+ gl.uniformMatrix4fv(uMVMatrixLoc, false, mvMatrix);
182
+ if (uPMatrixLoc)
183
+ gl.uniformMatrix4fv(uPMatrixLoc, false, pMatrix);
184
+ if (uColor) {
185
+ const rgb = colorHex2RGB(this.defaultColor);
186
+ gl.uniform4f(uColor, rgb[0], rgb[1], rgb[2], 1.0);
187
+ }
188
+ }
189
+ isVisible() {
190
+ return this.showGrid;
191
+ }
192
+ toggleShowGrid() {
193
+ this.showGrid = !this.showGrid;
194
+ }
195
+ /**
196
+ * @param mMatrix model matrix associated with current HiPS (or scene) transform
197
+ * @param fovObj current field-of-view (degrees). If your FoV type differs,
198
+ * pass the numeric value here; this signature matches original usage.
199
+ */
200
+ draw(input) {
201
+ const fovDeg = input.fovDeg;
202
+ if (!fovDeg)
203
+ return;
204
+ const gl = super.webgl;
205
+ const mMatrix = this.getModelMatrix();
206
+ const camera = input.camera;
207
+ if (!camera)
208
+ return;
209
+ const vMatrix = camera.getCameraMatrix();
210
+ const pMatrix = input.pMatrix;
211
+ if (!pMatrix)
212
+ return;
213
+ if (!vMatrix)
214
+ return;
215
+ if (this._thetaArray.length === 0)
216
+ return;
217
+ this.refresh(fovDeg);
218
+ if (!this.showGrid) {
219
+ // gridTextHelper.resetDivSets();
220
+ this.gridText.resetDivSets();
221
+ return;
222
+ }
223
+ // const pMatrix = computePerspectiveMatrixSingleton.pMatrix as ReadonlyMat4;
224
+ this.enableShader(mMatrix, pMatrix, vMatrix);
225
+ // Draw Dec rings
226
+ for (let i = 0; i < this._phiArray.length; i++) {
227
+ super.webgl.bindBuffer(super.webgl.ARRAY_BUFFER, this._phiVertexPositionBuffer);
228
+ super.webgl.bufferData(super.webgl.ARRAY_BUFFER, this._phiArray[i], super.webgl.STATIC_DRAW);
229
+ super.webgl.vertexAttribPointer(this._attribLocations.position, 3, super.webgl.FLOAT, false, 0, 0);
230
+ super.webgl.enableVertexAttribArray(this._attribLocations.position);
231
+ super.webgl.drawArrays(super.webgl.LINE_LOOP, 0, 360 / this._phiStep);
232
+ }
233
+ // Draw RA rings
234
+ for (let j = 0; j < this._thetaArray.length; j++) {
235
+ super.webgl.bindBuffer(super.webgl.ARRAY_BUFFER, this._thetaVertexPositionBuffer);
236
+ super.webgl.bufferData(super.webgl.ARRAY_BUFFER, this._thetaArray[j], super.webgl.STATIC_DRAW);
237
+ super.webgl.vertexAttribPointer(this._attribLocations.position, 3, super.webgl.FLOAT, false, 0, 0);
238
+ super.webgl.enableVertexAttribArray(this._attribLocations.position);
239
+ super.webgl.drawArrays(super.webgl.LINE_LOOP, 0, 360 / this._thetaStep);
240
+ }
241
+ // Label layout (HTML overlay)
242
+ const center = FoVUtils.getCenterJ2000(gl.canvas, this._healpixGrid, this._webgl, camera, pMatrix);
243
+ // MVP = P * V * M
244
+ const mvMatrix = mat4.create();
245
+ // mat4.multiply(mvMatrix, (global.camera as any).getCameraMatrix() as unknown as mat4, mMatrix);
246
+ mat4.multiply(mvMatrix, vMatrix, mMatrix);
247
+ const mvpMatrix = mat4.create();
248
+ mat4.multiply(mvpMatrix, pMatrix, mvMatrix);
249
+ // Dec labels (loop over RA keys)
250
+ for (const [raDegKey, points] of this._dec4Labels.entries()) {
251
+ if (Math.abs(raDegKey - center.raDeg) <= this._phiStep) {
252
+ for (let p = 0; p < points.length; p++) {
253
+ const [x, y, z] = points[p];
254
+ const phiPoint = [x, y, z, 1];
255
+ const point = new Point({ x, y, z }, CoordsType.CARTESIAN);
256
+ const decDeg = point.decDeg;
257
+ if (Math.abs(decDeg - center.decDeg) < 60) {
258
+ const clipspace = vec4.create();
259
+ vec4.transformMat4(clipspace, phiPoint, mvpMatrix);
260
+ // perspective divide
261
+ clipspace[0] /= clipspace[3];
262
+ clipspace[1] /= clipspace[3];
263
+ // clip->pixel
264
+ const pixelX = (clipspace[0] * 0.5 + 0.5) * super.webgl.canvas.width;
265
+ const pixelY = (clipspace[1] * -0.5 + 0.5) * super.webgl.canvas.height;
266
+ this.gridText.addEqDivSet(decDeg.toFixed(2), pixelX, pixelY, 'dec');
267
+ // gridTextHelper.addEqDivSet(decDeg.toFixed(2), pixelX, pixelY, 'dec');
268
+ }
269
+ }
270
+ }
271
+ }
272
+ // RA labels (loop over Dec keys)
273
+ for (const [decDegKey, points] of this._ra4Labels.entries()) {
274
+ if (Math.abs(decDegKey - center.decDeg) <= this._thetaStep) {
275
+ for (let p = 0; p < points.length; p++) {
276
+ const [x, y, z] = points[p];
277
+ const phiPoint = [x, y, z, 1];
278
+ const point = new Point({ x, y, z }, CoordsType.CARTESIAN);
279
+ const d = this.vectorDistance(point, center);
280
+ const raDeg = point.raDeg;
281
+ if (d < degToRad(50)) {
282
+ const clipspace = vec4.create();
283
+ vec4.transformMat4(clipspace, phiPoint, mvpMatrix);
284
+ clipspace[0] /= clipspace[3];
285
+ clipspace[1] /= clipspace[3];
286
+ const pixelX = (clipspace[0] * 0.5 + 0.5) * super.webgl.canvas.width;
287
+ const pixelY = (clipspace[1] * -0.5 + 0.5) * super.webgl.canvas.height;
288
+ // gridTextHelper.addEqDivSet(raDeg.toFixed(2), pixelX, pixelY, 'ra');
289
+ this.gridText.addEqDivSet(raDeg.toFixed(2), pixelX, pixelY, 'ra');
290
+ }
291
+ }
292
+ }
293
+ }
294
+ this.gridText.resetDivSets();
295
+ // gridTextHelper.resetDivSets();
296
+ // Cleanup
297
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
298
+ }
299
+ }
300
+ // const equatorialGridSingleton = new EquatorialGrid();
301
+ // export default equatorialGridSingleton;
302
+ //# sourceMappingURL=EquatorialGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EquatorialGrid.js","sourceRoot":"","sources":["../../../src/model/grid/EquatorialGrid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @author Fabrizio Giordano (Fab)
3
+ * @param in_radius - number
4
+ * @param in_gl - GL context
5
+ * @param in_position - array of double e.g. [0.0, 0.0, 0.0]
6
+ */
7
+ declare class GridTextHelper {
8
+ private _divEqContainerElement;
9
+ private _divHPXContainerElement;
10
+ private _divSets;
11
+ private _divSetNdx;
12
+ constructor();
13
+ initHtml(): void;
14
+ resetDivSets(): void;
15
+ /**
16
+ * Add / reuse a floating label for HPX coordinates
17
+ */
18
+ addHPXDivSet(msg: string, x: number, y: number): void;
19
+ /**
20
+ * Add / reuse a floating label for Equatorial coords
21
+ * @param type 'ra' or 'dec'
22
+ */
23
+ addEqDivSet(msg: string, x: number, y: number, type: 'ra' | 'dec'): void;
24
+ }
25
+ export default GridTextHelper;
26
+ //# sourceMappingURL=GridTextHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridTextHelper.d.ts","sourceRoot":"","sources":["../../../src/model/grid/GridTextHelper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,cAAM,cAAc;IAClB,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAS;;IAS3B,QAAQ,IAAI,IAAI;IAIhB,YAAY,IAAI,IAAI;IAQpB;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IA+BrD;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI;CAkCzE;AAGD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @author Fabrizio Giordano (Fab)
3
+ * @param in_radius - number
4
+ * @param in_gl - GL context
5
+ * @param in_position - array of double e.g. [0.0, 0.0, 0.0]
6
+ */
7
+ class GridTextHelper {
8
+ _divEqContainerElement;
9
+ _divHPXContainerElement;
10
+ _divSets;
11
+ _divSetNdx;
12
+ constructor() {
13
+ this._divEqContainerElement = document.querySelector('#gridcoords');
14
+ this._divHPXContainerElement = document.querySelector('#gridhpx');
15
+ this._divSetNdx = 0;
16
+ this._divSets = [];
17
+ }
18
+ initHtml() {
19
+ // Kept for API parity; nothing required here with current logic.
20
+ }
21
+ resetDivSets() {
22
+ // Hide remaining divs and reset index
23
+ for (; this._divSetNdx < this._divSets.length; ++this._divSetNdx) {
24
+ this._divSets[this._divSetNdx].style.display = 'none';
25
+ }
26
+ this._divSetNdx = 0;
27
+ }
28
+ /**
29
+ * Add / reuse a floating label for HPX coordinates
30
+ */
31
+ addHPXDivSet(msg, x, y) {
32
+ let divSet = this._divSets[this._divSetNdx++];
33
+ // Create on demand
34
+ if (!divSet) {
35
+ const div = document.createElement('div');
36
+ const textNode = document.createTextNode('');
37
+ div.className = 'floating-div-ra'; // style like RA tags
38
+ div.appendChild(textNode);
39
+ if (!this._divHPXContainerElement) {
40
+ this._divHPXContainerElement = document.querySelector('#gridhpx');
41
+ }
42
+ if (!this._divHPXContainerElement) {
43
+ // If container is still missing, abort gracefully
44
+ return;
45
+ }
46
+ this._divHPXContainerElement.appendChild(div);
47
+ divSet = { div, textNode, style: div.style };
48
+ this._divSets.push(divSet);
49
+ }
50
+ // Show & position
51
+ divSet.style.display = 'block';
52
+ divSet.style.left = `${Math.floor(x + 25)}px`;
53
+ divSet.style.top = `${Math.floor(y)}px`;
54
+ divSet.textNode.nodeValue = msg;
55
+ }
56
+ /**
57
+ * Add / reuse a floating label for Equatorial coords
58
+ * @param type 'ra' or 'dec'
59
+ */
60
+ addEqDivSet(msg, x, y, type) {
61
+ let divSet = this._divSets[this._divSetNdx++];
62
+ if (!divSet) {
63
+ const div = document.createElement('div');
64
+ const textNode = document.createTextNode('');
65
+ div.className = type === 'ra' ? 'floating-div-ra' : 'floating-div-dec';
66
+ div.appendChild(textNode);
67
+ if (!this._divEqContainerElement) {
68
+ this._divEqContainerElement = document.querySelector('#gridcoords');
69
+ }
70
+ if (!this._divEqContainerElement) {
71
+ // If container is still missing, abort gracefully
72
+ return;
73
+ }
74
+ this._divEqContainerElement.appendChild(div);
75
+ divSet = { div, textNode, style: div.style };
76
+ this._divSets.push(divSet);
77
+ }
78
+ divSet.style.display = 'block';
79
+ if (type === 'ra') {
80
+ divSet.style.left = `${Math.floor(x + 25)}px`;
81
+ divSet.style.top = `${Math.floor(y)}px`;
82
+ }
83
+ else {
84
+ divSet.style.left = `${Math.floor(x)}px`;
85
+ divSet.style.top = `${Math.floor(y + 25)}px`;
86
+ }
87
+ divSet.textNode.nodeValue = msg;
88
+ }
89
+ }
90
+ // export const gridTextHelper = new GridTextHelper();
91
+ export default GridTextHelper;
92
+ //# sourceMappingURL=GridTextHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridTextHelper.js","sourceRoot":"","sources":["../../../src/model/grid/GridTextHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { AbstractSkyEntity, SkyEntityDrawInput } from '../AbstractSkyEntity.js';
2
+ import { ReadonlyMat4 } from 'gl-matrix';
3
+ import { FoV } from '../FoV.js';
4
+ import { VisibleTilesManager } from '../hips/VisibleTilesManager.js';
5
+ import Camera from '../../Camera.js';
6
+ export declare class HealpixGrid extends AbstractSkyEntity {
7
+ static ELEM_SIZE: number;
8
+ static BYTES_X_ELEM: number;
9
+ private _visibleorder;
10
+ private showGrid;
11
+ private _shaderProgram;
12
+ private fragmentShader;
13
+ private vertexShader;
14
+ private defaultColor;
15
+ private gridText;
16
+ private _attribLocations;
17
+ private _nPrimitiveFlags;
18
+ private _vertexCataloguePositionBuffer;
19
+ private _indexBuffer;
20
+ private _vertexCataloguePosition;
21
+ private _indexes;
22
+ private _fovObj;
23
+ static INITIAL_FOV: number;
24
+ static RADIUS: number;
25
+ static INITIAL_POSITION: [number, number, number];
26
+ static INITIAL_PhiRad: number;
27
+ static INITIAL_ThetaRad: number;
28
+ private _visibleTilesManager;
29
+ constructor(webgl: WebGL2RenderingContext);
30
+ init(): void;
31
+ get fovObj(): FoV;
32
+ get RADIUS(): number;
33
+ get INITIAL_POSITION(): [number, number, number];
34
+ get INITIAL_PhiRad(): number;
35
+ get INITIAL_ThetaRad(): number;
36
+ refreshFoV(camera: Camera, pMatrix: ReadonlyMat4): FoV;
37
+ getFoV(): FoV;
38
+ getMinFoV(): number;
39
+ private initShaders;
40
+ initBuffers(pixels: number[], order: number): void;
41
+ private refresh;
42
+ private enableShader;
43
+ isVisible(): boolean;
44
+ toggleShowGrid(): void;
45
+ get visibleTilesManager(): VisibleTilesManager;
46
+ draw(input: SkyEntityDrawInput): void;
47
+ get visibleorder(): number;
48
+ }
49
+ //# sourceMappingURL=HealpixGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HealpixGrid.d.ts","sourceRoot":"","sources":["../../../src/model/grid/HealpixGrid.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG/E,OAAO,EAAc,YAAY,EAAE,MAAM,WAAW,CAAC;AAKrD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAShC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAWrC,qBAAa,WAAY,SAAQ,iBAAiB;IAEhD,MAAM,CAAC,SAAS,SAAK;IACrB,MAAM,CAAC,YAAY,SAAwC;IAE3D,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAuC;IAGvD,OAAO,CAAC,gBAAgB,CAKtB;IAEF,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,8BAA8B,CAAe;IACrD,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,wBAAwB,CAAqC;IACrE,OAAO,CAAC,QAAQ,CAAmC;IAEnD,OAAO,CAAC,OAAO,CAAO;IAEtB,MAAM,CAAC,WAAW,SAAO;IACzB,MAAM,CAAC,MAAM,SAAK;IAClB,MAAM,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAmB;IACpE,MAAM,CAAC,cAAc,SAAK;IAC1B,MAAM,CAAC,gBAAgB,SAAK;IAC5B,OAAO,CAAC,oBAAoB,CAAsB;gBAGtC,KAAK,EAAE,sBAAsB;IAOzC,IAAI,IAAI,IAAI;IAoBZ,IAAI,MAAM,IAAI,GAAG,CAEhB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,gBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAE/C;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAIhD,MAAM,IAAI,GAAG;IAIb,SAAS;IAIT,OAAO,CAAC,WAAW;IA+BnB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IA+GlD,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,YAAY;IA0BpB,SAAS,IAAI,OAAO;IAIpB,cAAc;IAId,IAAI,mBAAmB,wBAEtB;IAED,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IA2GrC,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF"}