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.
- package/README.md +373 -0
- package/dist/astroviewer.cjs +13941 -0
- package/dist/astroviewer.cjs.map +1 -0
- package/dist/astroviewer.js +2 -0
- package/dist/astroviewer.js.map +1 -0
- package/dist/astroviewer.min.js +2 -0
- package/dist/astroviewer.min.js.map +1 -0
- package/lib-esm/AstroSphere.d.ts +114 -0
- package/lib-esm/AstroSphere.d.ts.map +1 -0
- package/lib-esm/AstroSphere.js +679 -0
- package/lib-esm/AstroSphere.js.map +1 -0
- package/lib-esm/AstroViewer.d.ts +81 -0
- package/lib-esm/AstroViewer.d.ts.map +1 -0
- package/lib-esm/AstroViewer.js +348 -0
- package/lib-esm/AstroViewer.js.map +1 -0
- package/lib-esm/Camera.d.ts +74 -0
- package/lib-esm/Camera.d.ts.map +1 -0
- package/lib-esm/Camera.js +334 -0
- package/lib-esm/Camera.js.map +1 -0
- package/lib-esm/Config.d.ts +20 -0
- package/lib-esm/Config.d.ts.map +1 -0
- package/lib-esm/Config.js +32 -0
- package/lib-esm/Config.js.map +1 -0
- package/lib-esm/Global.d.ts +27 -0
- package/lib-esm/Global.d.ts.map +1 -0
- package/lib-esm/Global.js +52 -0
- package/lib-esm/Global.js.map +1 -0
- package/lib-esm/index.d.ts +17 -0
- package/lib-esm/index.d.ts.map +1 -0
- package/lib-esm/index.js +16 -0
- package/lib-esm/index.js.map +1 -0
- package/lib-esm/model/AbstractSkyEntity.d.ts +55 -0
- package/lib-esm/model/AbstractSkyEntity.d.ts.map +1 -0
- package/lib-esm/model/AbstractSkyEntity.js +153 -0
- package/lib-esm/model/AbstractSkyEntity.js.map +1 -0
- package/lib-esm/model/AstroGL.d.ts +11 -0
- package/lib-esm/model/AstroGL.d.ts.map +1 -0
- package/lib-esm/model/AstroGL.js +2 -0
- package/lib-esm/model/AstroGL.js.map +1 -0
- package/lib-esm/model/ColorMaps.d.ts +17 -0
- package/lib-esm/model/ColorMaps.d.ts.map +1 -0
- package/lib-esm/model/ColorMaps.js +1288 -0
- package/lib-esm/model/ColorMaps.js.map +1 -0
- package/lib-esm/model/FoV.d.ts +63 -0
- package/lib-esm/model/FoV.d.ts.map +1 -0
- package/lib-esm/model/FoV.js +275 -0
- package/lib-esm/model/FoV.js.map +1 -0
- package/lib-esm/model/MetadataColumn.d.ts +50 -0
- package/lib-esm/model/MetadataColumn.d.ts.map +1 -0
- package/lib-esm/model/MetadataColumn.js +95 -0
- package/lib-esm/model/MetadataColumn.js.map +1 -0
- package/lib-esm/model/MetadataManager.d.ts +43 -0
- package/lib-esm/model/MetadataManager.d.ts.map +1 -0
- package/lib-esm/model/MetadataManager.js +117 -0
- package/lib-esm/model/MetadataManager.js.map +1 -0
- package/lib-esm/model/Point.d.ts +53 -0
- package/lib-esm/model/Point.d.ts.map +1 -0
- package/lib-esm/model/Point.js +133 -0
- package/lib-esm/model/Point.js.map +1 -0
- package/lib-esm/model/Point2D.d.ts +9 -0
- package/lib-esm/model/Point2D.d.ts.map +1 -0
- package/lib-esm/model/Point2D.js +16 -0
- package/lib-esm/model/Point2D.js.map +1 -0
- package/lib-esm/model/Source.d.ts +34 -0
- package/lib-esm/model/Source.d.ts.map +1 -0
- package/lib-esm/model/Source.js +63 -0
- package/lib-esm/model/Source.js.map +1 -0
- package/lib-esm/model/catalogues/CatalogueGL.d.ts +91 -0
- package/lib-esm/model/catalogues/CatalogueGL.d.ts.map +1 -0
- package/lib-esm/model/catalogues/CatalogueGL.js +614 -0
- package/lib-esm/model/catalogues/CatalogueGL.js.map +1 -0
- package/lib-esm/model/catalogues/CatalogueProps.d.ts +2 -0
- package/lib-esm/model/catalogues/CatalogueProps.d.ts.map +1 -0
- package/lib-esm/model/catalogues/CatalogueProps.js +156 -0
- package/lib-esm/model/catalogues/CatalogueProps.js.map +1 -0
- package/lib-esm/model/footprints/Footprint.d.ts +44 -0
- package/lib-esm/model/footprints/Footprint.d.ts.map +1 -0
- package/lib-esm/model/footprints/Footprint.js +104 -0
- package/lib-esm/model/footprints/Footprint.js.map +1 -0
- package/lib-esm/model/footprints/FootprintProps.d.ts +2 -0
- package/lib-esm/model/footprints/FootprintProps.d.ts.map +1 -0
- package/lib-esm/model/footprints/FootprintProps.js +87 -0
- package/lib-esm/model/footprints/FootprintProps.js.map +1 -0
- package/lib-esm/model/footprints/FootprintSetGL.d.ts +106 -0
- package/lib-esm/model/footprints/FootprintSetGL.d.ts.map +1 -0
- package/lib-esm/model/footprints/FootprintSetGL.js +592 -0
- package/lib-esm/model/footprints/FootprintSetGL.js.map +1 -0
- package/lib-esm/model/grid/EquatorialGrid.d.ts +49 -0
- package/lib-esm/model/grid/EquatorialGrid.d.ts.map +1 -0
- package/lib-esm/model/grid/EquatorialGrid.js +302 -0
- package/lib-esm/model/grid/EquatorialGrid.js.map +1 -0
- package/lib-esm/model/grid/GridTextHelper.d.ts +26 -0
- package/lib-esm/model/grid/GridTextHelper.d.ts.map +1 -0
- package/lib-esm/model/grid/GridTextHelper.js +92 -0
- package/lib-esm/model/grid/GridTextHelper.js.map +1 -0
- package/lib-esm/model/grid/HealpixGrid.d.ts +49 -0
- package/lib-esm/model/grid/HealpixGrid.d.ts.map +1 -0
- package/lib-esm/model/grid/HealpixGrid.js +306 -0
- package/lib-esm/model/grid/HealpixGrid.js.map +1 -0
- package/lib-esm/model/hips/AllSky.d.ts +40 -0
- package/lib-esm/model/hips/AllSky.d.ts.map +1 -0
- package/lib-esm/model/hips/AllSky.js +232 -0
- package/lib-esm/model/hips/AllSky.js.map +1 -0
- package/lib-esm/model/hips/AncestorTile.d.ts +38 -0
- package/lib-esm/model/hips/AncestorTile.d.ts.map +1 -0
- package/lib-esm/model/hips/AncestorTile.js +248 -0
- package/lib-esm/model/hips/AncestorTile.js.map +1 -0
- package/lib-esm/model/hips/FoVHelper.d.ts +11 -0
- package/lib-esm/model/hips/FoVHelper.d.ts.map +1 -0
- package/lib-esm/model/hips/FoVHelper.js +107 -0
- package/lib-esm/model/hips/FoVHelper.js.map +1 -0
- package/lib-esm/model/hips/HiPS.d.ts +47 -0
- package/lib-esm/model/hips/HiPS.d.ts.map +1 -0
- package/lib-esm/model/hips/HiPS.js +222 -0
- package/lib-esm/model/hips/HiPS.js.map +1 -0
- package/lib-esm/model/hips/HiPSDescriptor.d.ts +37 -0
- package/lib-esm/model/hips/HiPSDescriptor.d.ts.map +1 -0
- package/lib-esm/model/hips/HiPSDescriptor.js +132 -0
- package/lib-esm/model/hips/HiPSDescriptor.js.map +1 -0
- package/lib-esm/model/hips/Tile.d.ts +51 -0
- package/lib-esm/model/hips/Tile.d.ts.map +1 -0
- package/lib-esm/model/hips/Tile.js +355 -0
- package/lib-esm/model/hips/Tile.js.map +1 -0
- package/lib-esm/model/hips/TileBuffer.d.ts +39 -0
- package/lib-esm/model/hips/TileBuffer.d.ts.map +1 -0
- package/lib-esm/model/hips/TileBuffer.js +148 -0
- package/lib-esm/model/hips/TileBuffer.js.map +1 -0
- package/lib-esm/model/hips/VisibleTilesManager.d.ts +35 -0
- package/lib-esm/model/hips/VisibleTilesManager.d.ts.map +1 -0
- package/lib-esm/model/hips/VisibleTilesManager.js +160 -0
- package/lib-esm/model/hips/VisibleTilesManager.js.map +1 -0
- package/lib-esm/model/tap/TapMetadata.d.ts +31 -0
- package/lib-esm/model/tap/TapMetadata.d.ts.map +1 -0
- package/lib-esm/model/tap/TapMetadata.js +55 -0
- package/lib-esm/model/tap/TapMetadata.js.map +1 -0
- package/lib-esm/model/tap/TapMetadataList.d.ts +23 -0
- package/lib-esm/model/tap/TapMetadataList.d.ts.map +1 -0
- package/lib-esm/model/tap/TapMetadataList.js +58 -0
- package/lib-esm/model/tap/TapMetadataList.js.map +1 -0
- package/lib-esm/model/tap/TapRepo.d.ts +27 -0
- package/lib-esm/model/tap/TapRepo.d.ts.map +1 -0
- package/lib-esm/model/tap/TapRepo.js +51 -0
- package/lib-esm/model/tap/TapRepo.js.map +1 -0
- package/lib-esm/services/SesameService.d.ts +14 -0
- package/lib-esm/services/SesameService.d.ts.map +1 -0
- package/lib-esm/services/SesameService.js +54 -0
- package/lib-esm/services/SesameService.js.map +1 -0
- package/lib-esm/services/helpers.d.ts +5 -0
- package/lib-esm/services/helpers.d.ts.map +1 -0
- package/lib-esm/services/helpers.js +16 -0
- package/lib-esm/services/helpers.js.map +1 -0
- package/lib-esm/services/hipsNodeService.d.ts +7 -0
- package/lib-esm/services/hipsNodeService.d.ts.map +1 -0
- package/lib-esm/services/hipsNodeService.js +65 -0
- package/lib-esm/services/hipsNodeService.js.map +1 -0
- package/lib-esm/services/parse-hipslist.d.ts +3 -0
- package/lib-esm/services/parse-hipslist.d.ts.map +1 -0
- package/lib-esm/services/parse-hipslist.js +25 -0
- package/lib-esm/services/parse-hipslist.js.map +1 -0
- package/lib-esm/services/queryCatalogueByFoV.d.ts +2 -0
- package/lib-esm/services/queryCatalogueByFoV.d.ts.map +1 -0
- package/lib-esm/services/queryCatalogueByFoV.js +56 -0
- package/lib-esm/services/queryCatalogueByFoV.js.map +1 -0
- package/lib-esm/services/queryFootprintSetByFov.d.ts +2 -0
- package/lib-esm/services/queryFootprintSetByFov.d.ts.map +1 -0
- package/lib-esm/services/queryFootprintSetByFov.js +128 -0
- package/lib-esm/services/queryFootprintSetByFov.js.map +1 -0
- package/lib-esm/services/tapRepoService.d.ts +2 -0
- package/lib-esm/services/tapRepoService.d.ts.map +1 -0
- package/lib-esm/services/tapRepoService.js +190 -0
- package/lib-esm/services/tapRepoService.js.map +1 -0
- package/lib-esm/services/types.d.ts +13 -0
- package/lib-esm/services/types.d.ts.map +1 -0
- package/lib-esm/services/types.js +2 -0
- package/lib-esm/services/types.js.map +1 -0
- package/lib-esm/shader/CatalogueShaderProgram.d.ts +35 -0
- package/lib-esm/shader/CatalogueShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/CatalogueShaderProgram.js +94 -0
- package/lib-esm/shader/CatalogueShaderProgram.js.map +1 -0
- package/lib-esm/shader/FootprintShaderProgram.d.ts +31 -0
- package/lib-esm/shader/FootprintShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/FootprintShaderProgram.js +86 -0
- package/lib-esm/shader/FootprintShaderProgram.js.map +1 -0
- package/lib-esm/shader/GridShaderManager.d.ts +6 -0
- package/lib-esm/shader/GridShaderManager.d.ts.map +1 -0
- package/lib-esm/shader/GridShaderManager.js +29 -0
- package/lib-esm/shader/GridShaderManager.js.map +1 -0
- package/lib-esm/shader/HiPSShaderProgram.d.ts +54 -0
- package/lib-esm/shader/HiPSShaderProgram.d.ts.map +1 -0
- package/lib-esm/shader/HiPSShaderProgram.js +257 -0
- package/lib-esm/shader/HiPSShaderProgram.js.map +1 -0
- package/lib-esm/shader/ShaderManager.d.ts +12 -0
- package/lib-esm/shader/ShaderManager.d.ts.map +1 -0
- package/lib-esm/shader/ShaderManager.js +344 -0
- package/lib-esm/shader/ShaderManager.js.map +1 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.d.ts +12 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.d.ts.map +1 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.js +750 -0
- package/lib-esm/shader/ShaderManagerMutliHiPS.js.map +1 -0
- package/lib-esm/utils/CoordsType.d.ts +10 -0
- package/lib-esm/utils/CoordsType.d.ts.map +1 -0
- package/lib-esm/utils/CoordsType.js +12 -0
- package/lib-esm/utils/CoordsType.js.map +1 -0
- package/lib-esm/utils/FoVUtils.d.ts +46 -0
- package/lib-esm/utils/FoVUtils.d.ts.map +1 -0
- package/lib-esm/utils/FoVUtils.js +217 -0
- package/lib-esm/utils/FoVUtils.js.map +1 -0
- package/lib-esm/utils/GeomUtils.d.ts +36 -0
- package/lib-esm/utils/GeomUtils.d.ts.map +1 -0
- package/lib-esm/utils/GeomUtils.js +267 -0
- package/lib-esm/utils/GeomUtils.js.map +1 -0
- package/lib-esm/utils/MouseHelper.d.ts +36 -0
- package/lib-esm/utils/MouseHelper.d.ts.map +1 -0
- package/lib-esm/utils/MouseHelper.js +94 -0
- package/lib-esm/utils/MouseHelper.js.map +1 -0
- package/lib-esm/utils/PerspectiveMatrixManager.d.ts +11 -0
- package/lib-esm/utils/PerspectiveMatrixManager.d.ts.map +1 -0
- package/lib-esm/utils/PerspectiveMatrixManager.js +37 -0
- package/lib-esm/utils/PerspectiveMatrixManager.js.map +1 -0
- package/lib-esm/utils/RayPickingUtils.d.ts +30 -0
- package/lib-esm/utils/RayPickingUtils.d.ts.map +1 -0
- package/lib-esm/utils/RayPickingUtils.js +112 -0
- package/lib-esm/utils/RayPickingUtils.js.map +1 -0
- package/lib-esm/utils/STCSParser.d.ts +16 -0
- package/lib-esm/utils/STCSParser.d.ts.map +1 -0
- package/lib-esm/utils/STCSParser.js +96 -0
- package/lib-esm/utils/STCSParser.js.map +1 -0
- package/lib-esm/utils/ShaderUtility.d.ts +2 -0
- package/lib-esm/utils/ShaderUtility.d.ts.map +1 -0
- package/lib-esm/utils/ShaderUtility.js +23 -0
- package/lib-esm/utils/ShaderUtility.js.map +1 -0
- package/lib-esm/utils/Utils.d.ts +32 -0
- package/lib-esm/utils/Utils.d.ts.map +1 -0
- package/lib-esm/utils/Utils.js +77 -0
- package/lib-esm/utils/Utils.js.map +1 -0
- package/package.json +82 -0
package/README.md
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
# 🌌 AstroViewer
|
|
2
|
+
|
|
3
|
+
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
4
|
+
[](https://www.typescriptlang.org/)
|
|
5
|
+
[](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)
|