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
package/README.md ADDED
@@ -0,0 +1,373 @@
1
+ # 🌌 AstroViewer
2
+
3
+ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
4
+ [![TypeScript](https://img.shields.io/badge/language-TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
5
+ [![WebGL](https://img.shields.io/badge/3D-WebGL-orange.svg)](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API)
6
+
7
+ **AstroViewer** is a lightweight 3D engine for **HiPS (Hierarchical Progressive Surveys)** visualisation and exploration, written in **TypeScript** and **WebGL**.
8
+ It powers the next generation of **Astrobrowser** and provides a simple API for embedding 3D HiPS viewers, catalogue overlays, and TAP service interactions in any web project.
9
+
10
+ ---
11
+
12
+ ## 📦 Bundles
13
+
14
+ AstroViewer builds the following bundles in the `dist/` directory:
15
+
16
+ | File | Description |
17
+ |------|--------------|
18
+ | `astroviewer.js` | UMD bundle for browser environments |
19
+ | `astroviewer.min.js` | Minified UMD bundle |
20
+ | `astroviewer.cjs` | CommonJS build for Node.js |
21
+ | `*.map` | Source maps for debugging |
22
+
23
+ ---
24
+
25
+ ## 🪐 Quick Start (Browser)
26
+
27
+ Copy the bundle into your project and link it in your HTML page:
28
+
29
+ ```html
30
+ <script src="./javascripts/astroviewer.js"></script>
31
+ ```
32
+
33
+ Then you can use the global `astroviewer` object directly.
34
+ Here is a minimal example that loads the HiPS survey, activates a TAP service, and displays a source catalogue.
35
+
36
+ ```html
37
+ <!DOCTYPE html>
38
+ <html>
39
+ <head>
40
+ <meta charset="utf-8">
41
+ <title>AstroViewer Demo</title>
42
+ <script src="./javascripts/astroviewer.js"></script>
43
+ </head>
44
+ <body onload="run();">
45
+ <canvas id="astrocanvas"></canvas>
46
+ <script>
47
+ let window.AstroAPI = undefined;
48
+
49
+ async function run() {
50
+ const AC = new astroviewer.AstroViewer();
51
+ window.AstroAPI = AC;
52
+
53
+ const hipsUrl = "https://alasky.cds.unistra.fr/DSS/DSSColor/";
54
+ const resp = await fetch(hipsUrl + "properties");
55
+ const propsText = await resp.text();
56
+
57
+ const desc = new astroviewer.HiPSDescriptor(propsText, new URL(hipsUrl));
58
+ const insideSphere = false;
59
+
60
+ window.AstroAPI.activateHiPS(desc, insideSphere);
61
+ window.AstroAPI.run();
62
+
63
+ const tapRepo = await astroviewer.addTAPRepo("https://sky.esa.int/esasky-tap/tap");
64
+ const catalogue = tapRepo.cataloguesList.find(cat => cat.name === "catalogues.integral_ibis");
65
+
66
+ window.AstroAPI.showCatalogue(catalogue);
67
+ }
68
+ </script>
69
+ </body>
70
+ </html>
71
+ ```
72
+
73
+ ---
74
+
75
+ ## 🧩 Node.js / TypeScript Usage
76
+
77
+ You can also use AstroViewer as a Node module:
78
+
79
+ ```bash
80
+ npm install ./path/to/astro-core
81
+ ```
82
+
83
+ Then import from your code:
84
+
85
+ ```ts
86
+ // ESM
87
+ import { AstroViewer, HiPSDescriptor, addTAPRepo } from 'astro-core';
88
+
89
+ // or CommonJS
90
+ const { AstroViewer, HiPSDescriptor, addTAPRepo } = require('astro-core');
91
+ ```
92
+
93
+ ---
94
+
95
+ ## 🧪 Development Web Interface
96
+
97
+ AstroViewer includes a development web UI to explore features such as HiPS loading, FoV control, catalogue management, and footprints.
98
+ You need **Node.js ≥ 22** installed.
99
+
100
+ Clone this repository and run:
101
+
102
+ ```bash
103
+ npm run all
104
+ ```
105
+
106
+ This command will:
107
+ - Compile the TypeScript source
108
+ - Build the bundles
109
+ - Prepare the web testing interface
110
+ - Start a local web server
111
+
112
+ You should see something like:
113
+
114
+ ```
115
+ Starting up http-server, serving public
116
+
117
+ http-server version: 14.1.1
118
+
119
+ http-server settings:
120
+ CORS: disabled
121
+ Cache: 3600 seconds
122
+ Connection Timeout: 120 seconds
123
+ Directory Listings: visible
124
+ AutoIndex: visible
125
+
126
+ Available on:
127
+ http://127.0.0.1:8080
128
+ http://10.0.0.184:8080
129
+ Hit CTRL-C to stop the server
130
+ ```
131
+
132
+ Then open one of the links in your browser (e.g. [http://127.0.0.1:8080](http://127.0.0.1:8080)) to start exploring **AstroViewer**.
133
+
134
+ ---
135
+
136
+ ## 🛠️ Build Scripts
137
+
138
+ | Command | Description |
139
+ |----------|--------------|
140
+ | `npm run clean` | Remove `dist` and `lib-esm` directories |
141
+ | `npm run dev` | Build in development mode and watch for changes |
142
+ | `npm run prod` | Production build (minified and with source maps) |
143
+ | `npm run web` | Copy bundles and assets into the public folder |
144
+ | `npm run all` | Full build + launch development web UI |
145
+
146
+ ---
147
+
148
+ ## 📚 API Overview
149
+
150
+ Main exported classes and utilities:
151
+
152
+ - `AstroViewer` — main application controller
153
+ - `HiPSDescriptor` — handles HiPS metadata and configuration
154
+ - `FootprintSetGL` — renders observation footprints
155
+ - `CatalogueGL` — renders astronomical catalogues
156
+ - `addTAPRepo()` — loads TAP repositories and metadata
157
+ - `FoV`, `AstroSphere`, `HealpixGridSingleton`, etc. — geometry, camera, and rendering utilities
158
+
159
+ ---
160
+
161
+
162
+ ---
163
+
164
+ ## 🔧 API Reference & Usage
165
+
166
+ Below is a practical overview of the **most commonly exposed methods** via the UMD global `astroviewer` (browser) or the module exports (Node/ESM).
167
+ > **Note:** The bundles only include what is exported from `src/index.ts`. If your build exposes additional methods, follow the same patterns shown here.
168
+
169
+ ### Core Lifecycle
170
+
171
+ #### `new AstroViewer(options?)`
172
+ Create the viewer controller.
173
+
174
+ ```js
175
+ // Browser (UMD)
176
+ const AC = new astroviewer.AstroViewer({
177
+ canvas: document.getElementById('astrocanvas'), // optional; defaults to #astrocanvas
178
+ antialias: true // optional
179
+ });
180
+ ```
181
+
182
+ ```ts
183
+ // Node/ESM
184
+ import { AstroViewer } from 'astro-core';
185
+ const AC = new AstroViewer();
186
+ ```
187
+
188
+ #### `run()`
189
+ Start the render loop and event handling.
190
+
191
+ ```js
192
+ AC.run();
193
+ ```
194
+
195
+ #### `stop()`
196
+ Stop/pause the render loop.
197
+
198
+ ```js
199
+ AC.stop();
200
+ ```
201
+
202
+ ---
203
+
204
+ ### HiPS Datasets
205
+
206
+ #### `activateHiPS(descriptor: HiPSDescriptor, insideSphere = false)`
207
+ Activate a HiPS dataset for rendering.
208
+
209
+ ```js
210
+ const hipsUrl = "https://alasky.cds.unistra.fr/DSS/DSSColor/";
211
+ const props = await (await fetch(hipsUrl + "properties")).text();
212
+ const desc = new astroviewer.HiPSDescriptor(props, new URL(hipsUrl));
213
+
214
+ AC.activateHiPS(desc, /* insideSphere */ false);
215
+ ```
216
+
217
+ #### `toggleInsideSphere()`
218
+ Toggle the point-of-view (outside vs inside the HiPS sphere).
219
+
220
+ ```js
221
+ AC.toggleInsideSphere(); // outside <-> inside
222
+ ```
223
+
224
+ ---
225
+
226
+ ### Camera & Navigation
227
+
228
+ #### `goto(raDeg: number, decDeg: number, opts?)`
229
+ Fly the camera to a sky coordinate (ICRS). Optional parameters:
230
+ - `fovDeg?: number` – target field of view (angular diameter)
231
+ - `durationMs?: number` – animation duration (default ~1000–1500 ms)
232
+ - `easing?: (t:number)=>number` – custom easing
233
+
234
+ ```js
235
+ await AC.goto(287.0, 12.5, { fovDeg: 60, durationMs: 1500 });
236
+ ```
237
+
238
+
239
+ ---
240
+
241
+ ### Overlays & Grids
242
+
243
+ #### `toggleHealpixGrid()`
244
+ Show/hide the HEALPix grid overlay.
245
+
246
+ ```js
247
+ AC.toggleHealpixGrid();
248
+ ```
249
+
250
+ ---
251
+
252
+ ### TAP Repositories & Catalogues
253
+
254
+ #### `addTAPRepo(url: string): Promise<TapRepo>`
255
+ Discover capabilities and available datasets (catalogues, footprints, etc.).
256
+
257
+ ```js
258
+ const tapRepo = await astroviewer.addTAPRepo("https://sky.esa.int/esasky-tap/tap");
259
+
260
+ // Explore the lists (names depend on the service)
261
+ console.log(tapRepo.cataloguesList.map(c => c.name));
262
+ console.log(tapRepo.obsList?.map(o => o.name)); // if provided
263
+ ```
264
+
265
+ #### `showCatalogue(catalogue: CatalogueGL)`
266
+ Render a catalogue from a TAP repository.
267
+
268
+ ```js
269
+ const cat = tapRepo.cataloguesList.find(c => c.name === "catalogues.integral_ibis");
270
+ AC.showCatalogue(cat);
271
+ ```
272
+
273
+ #### `hideCatalogue(catalogue: CatalogueGL, isVisible: boolean)`
274
+ Toggle visibility without removing it.
275
+
276
+ ```js
277
+ AC.hideCatalogue(cat, false); // hide
278
+ AC.hideCatalogue(cat, true); // show
279
+ ```
280
+
281
+ #### `deleteCatalogue(catalogue: CatalogueGL)`
282
+ Remove a catalogue layer completely.
283
+
284
+ ```js
285
+ AC.deleteCatalogue(cat);
286
+ ```
287
+
288
+ #### `changeCatalogueColor(catalogue: CatalogueGL, hexColor: string)`
289
+ Change the colour of rendered catalogue points/sources.
290
+
291
+ ```js
292
+ AC.changeCatalogueColor(cat, "#ff8800");
293
+ ```
294
+
295
+ ---
296
+
297
+ ### Footprints (Observations)
298
+
299
+ The following methods mirror the catalogue API, but for **observation footprints**.
300
+
301
+ #### `showFootprintSet(footprintSet: FootprintSetGL)`
302
+ ```js
303
+ const footprints = tapRepo.obsList.find(o => o.name === "observations.some_collection");
304
+ AC.showFootprintSet(footprints);
305
+ ```
306
+
307
+ #### `hideFootprintSet(footprintSet: FootprintSetGL, isVisible: boolean)`
308
+ ```js
309
+ AC.hideFootprintSet(footprints, false); // hide
310
+ AC.hideFootprintSet(footprints, true); // show
311
+ ```
312
+
313
+ #### `deleteFootprintSet(footprintSet: FootprintSetGL)`
314
+ ```js
315
+ AC.deleteFootprintSet(footprints);
316
+ ```
317
+
318
+ #### `changeFootprintSetColor(footprintSet: FootprintSetGL, hexColor: string)`
319
+ ```js
320
+ AC.changeFootprintSetColor(footprints, "#00ffaa");
321
+ ```
322
+
323
+ ---
324
+
325
+ ### Events & Utilities (if exported)
326
+
327
+ Depending on your build, you may also have helpers like:
328
+
329
+ #### `on(eventName: string, handler: Function)` / `off(eventName: string, handler: Function)`
330
+ Listen to viewer events (e.g., click on source, pointer move).
331
+
332
+ ```js
333
+ AC.on?.("pointermove", (info) => {
334
+ // info.ra, info.dec, info.pixelX, info.pixelY, etc.
335
+ console.log("Hover:", info);
336
+ });
337
+ ```
338
+
339
+ #### `getCenterCoords()`
340
+ Return the current ICRS center of the viewport.
341
+
342
+ ```js
343
+ const { ra, dec } = AC.getCenterCoords?.() ?? { ra: 0, dec: 0 };
344
+ ```
345
+
346
+ #### `setBackgroundColor(hex: string)`
347
+ ```js
348
+ AC.setBackgroundColor?.("#000000");
349
+ ```
350
+
351
+ > If a method above is not present in your build, it means it’s not exported by `src/index.ts`.
352
+ > To inspect what’s available in the UMD build, open your page and run:
353
+ >
354
+ > ```js
355
+ > console.log(Object.keys(astroviewer));
356
+ > console.log(Object.getOwnPropertyNames(astroviewer.AstroViewer.prototype));
357
+ > ```
358
+
359
+
360
+
361
+ ## 📜 License
362
+
363
+ This project is released under the **GNU GPL v3** license.
364
+ © 2025 Fabrizio Giordano (fab77)
365
+
366
+ ---
367
+
368
+ ## 🔗 Links
369
+
370
+ - 🏠 [GitHub Repository](https://github.com/fab77/astro-core)
371
+ - 🪐 [HiPS Standard (IVOA)](https://www.ivoa.net/documents/HiPS/)
372
+ - 🛰️ [ESA Sky TAP Service](https://sky.esa.int/esasky-tap/tap)
373
+ - ✉️ [Report Issues](https://github.com/fab77/astro-core/issues)