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,3 @@
1
+ import type { HiPSNodeEntry } from './types.js';
2
+ export declare function parseHipsList(text: string): HiPSNodeEntry[];
3
+ //# sourceMappingURL=parse-hipslist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-hipslist.d.ts","sourceRoot":"","sources":["../../src/services/parse-hipslist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAqB3D"}
@@ -0,0 +1,25 @@
1
+ export function parseHipsList(text) {
2
+ const out = [];
3
+ let current = null;
4
+ for (const raw of text.split(/\r?\n/)) {
5
+ const line = raw.trim();
6
+ if (!line || line.startsWith('#'))
7
+ continue;
8
+ const [k, ...rest] = line.split('=');
9
+ const key = k?.trim();
10
+ const val = rest.join('=').trim();
11
+ if (key === 'hips_service_url') {
12
+ // start a new block
13
+ if (current)
14
+ out.push(current);
15
+ current = { hips_service_url: val };
16
+ }
17
+ else if (current && (key === 'hips_release_date' || key === 'creator_did')) {
18
+ current[key] = val;
19
+ }
20
+ }
21
+ if (current)
22
+ out.push(current);
23
+ return out;
24
+ }
25
+ //# sourceMappingURL=parse-hipslist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-hipslist.js","sourceRoot":"","sources":["../../src/services/parse-hipslist.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,IAAI,OAAO,GAAyB,IAAI,CAAA;IAExC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC3C,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,CAAA;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QAEjC,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YAC/B,oBAAoB;YACpB,IAAI,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC9B,OAAO,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAA;QACrC,CAAC;aAAM,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,mBAAmB,IAAI,GAAG,KAAK,aAAa,CAAC,EAAE,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;QACpB,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=queryCatalogueByFoV.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryCatalogueByFoV.d.ts","sourceRoot":"","sources":["../../src/services/queryCatalogueByFoV.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ // import {CatalogueGL} from '../model/catalogues/CatalogueGL.js'
2
+ // import {TapMetadata} from '../model/tap/TapMetadata.js'
3
+ // import {TapMetadataList} from '../model/tap/TapMetadataList.js'
4
+ // import { queryAsync } from './tapRepoService.js'
5
+ export {};
6
+ // // Optional timeout; adjust or remove if you don’t use timeouts.
7
+ // const TAP_QUERY_TIMEOUT_MS = 60_000
8
+ // // Small helpers to be robust with slightly different metadata shapes
9
+ // function getColName(col: TapMetadata | undefined): string {
10
+ // if (!col) return ''
11
+ // return (col.name ?? col.name ?? '').toString()
12
+ // }
13
+ // export default async function queryCatalogueByFoV(
14
+ // catalogue: CatalogueGL,
15
+ // polygonAdql: String
16
+ // ): Promise<CatalogueGL | undefined> {
17
+ // try {
18
+ // // Resolve RA/Dec column names (CatalogueProps already picked them from metadata)
19
+ // const raCol = getColName(catalogue.catalogueProps.raColumn)
20
+ // const decCol = getColName(catalogue.catalogueProps.decColumn)
21
+ // const tapTable = catalogue._name
22
+ // if (!raCol || !decCol) {
23
+ // console.warn('[queryCatalogueByFoV] RA/Dec columns were not resolved from metadata.')
24
+ // return
25
+ // }
26
+ // const adql = `SELECT * FROM ${tapTable} WHERE 1 = CONTAINS(POINT('ICRS', ${raCol}, ${decCol}), POLYGON('ICRS',${polygonAdql}))`
27
+ // // Fire the TAP query
28
+ // const rows = await queryAsync(catalogue.tapRepo, adql, TAP_QUERY_TIMEOUT_MS)
29
+ // console.log(rows)
30
+ // if (rows && rows.data.length > 0) {
31
+ // const metadata = rows.metadata
32
+ // const data = rows.data
33
+ // console.log(`Found ${data.length} results for ${catalogue._name}`)
34
+ // let tapMetadataList = new TapMetadataList()
35
+ // for (const element of metadata) {
36
+ // const name = element.name
37
+ // const description = element.description !== undefined ? element.description : undefined
38
+ // const unit = element.unit !== undefined ? element.unit : undefined
39
+ // const datatype = element.datatype !== undefined ? element.datatype : undefined
40
+ // const ucd = element.ucd !== undefined ? element.ucd : undefined
41
+ // const utype = element.utype !== undefined ? element.utype : undefined
42
+ // const tapMeta = new TapMetadata(name, description, unit, datatype, ucd, utype)
43
+ // tapMetadataList.addMetadata(tapMeta)
44
+ // }
45
+ // catalogue.addSources(data, tapMetadataList.metadataList)
46
+ // return catalogue
47
+ // } else {
48
+ // console.log('[queryCatalogueByFoV] No results found.')
49
+ // return
50
+ // }
51
+ // } catch (err: any) {
52
+ // console.error('[queryCatalogueByFoV] Error:', err?.message ?? err)
53
+ // return
54
+ // }
55
+ // }
56
+ //# sourceMappingURL=queryCatalogueByFoV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryCatalogueByFoV.js","sourceRoot":"","sources":["../../src/services/queryCatalogueByFoV.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,0DAA0D;AAC1D,kEAAkE;AAClE,mDAAmD;;AAEnD,mEAAmE;AACnE,sCAAsC;AAEtC,wEAAwE;AACxE,8DAA8D;AAC9D,0BAA0B;AAC1B,qDAAqD;AACrD,IAAI;AAEJ,qDAAqD;AACrD,8BAA8B;AAC9B,0BAA0B;AAC1B,wCAAwC;AACxC,YAAY;AAEZ,4FAA4F;AAC5F,sEAAsE;AACtE,wEAAwE;AACxE,2CAA2C;AAE3C,mCAAmC;AACnC,oGAAoG;AACpG,qBAAqB;AACrB,YAAY;AAEZ,0IAA0I;AAE1I,gCAAgC;AAChC,uFAAuF;AACvF,4BAA4B;AAE5B,+CAA+C;AAC/C,6CAA6C;AAC7C,qCAAqC;AAErC,iFAAiF;AACjF,0DAA0D;AAC1D,gDAAgD;AAChD,4CAA4C;AAC5C,0GAA0G;AAC1G,qFAAqF;AACrF,iGAAiG;AACjG,kFAAkF;AAClF,wFAAwF;AACxF,iGAAiG;AACjG,uDAAuD;AACvD,gBAAgB;AAChB,uEAAuE;AACvE,+BAA+B;AAC/B,mBAAmB;AACnB,qEAAqE;AACrE,qBAAqB;AACrB,YAAY;AACZ,2BAA2B;AAC3B,6EAA6E;AAC7E,iBAAiB;AACjB,QAAQ;AACR,IAAI"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=queryFootprintSetByFov.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryFootprintSetByFov.d.ts","sourceRoot":"","sources":["../../src/services/queryFootprintSetByFov.ts"],"names":[],"mappings":""}
@@ -0,0 +1,128 @@
1
+ // import {FootprintSetGL} from '../model/footprints/FootprintSetGL.js'
2
+ // import healpixGridSingleton from '../model/grid/HealpixGridSingleton.js';
3
+ // import Point from '../model/Point.js';
4
+ // import {Metadata} from '../model/tap/TapMetadata.js'
5
+ // import {TapMetadataList} from '../model/tap/TapMetadataList.js'
6
+ // import { TapRepo } from '../model/tap/TapRepo.js';
7
+ // import { queryAsync } from './tapRepoService.js'
8
+ export {};
9
+ // interface ColumnLike {
10
+ // _name: string;
11
+ // }
12
+ // // If your FoVUtils already has TS types, feel free to delete these:
13
+ // type FoVPolygonString = string; // "ra1,dec1, ra2,dec2, ..."
14
+ // interface J2000Center { _raDeg: number; _decDeg: number; }
15
+ // // Optional timeout; adjust or remove if you don’t use timeouts.
16
+ // const TAP_QUERY_TIMEOUT_MS = 60_000
17
+ // // --- Function ---
18
+ // // Small helpers to be robust with slightly different metadata shapes
19
+ // function getColName(col: Metadata | undefined): string {
20
+ // if (!col) return ''
21
+ // return (col.name ?? col.name ?? '').toString()
22
+ // }
23
+ // function prepareADQL(
24
+ // tapTable: string,
25
+ // tapRa: string | undefined,
26
+ // tapDec: string | undefined,
27
+ // polygonAdql: String, tapRepo: TapRepo,
28
+ // centralPoint: Point): string {
29
+ // let adql = ""
30
+ // if (tapRepo.adqlFunctionList.includes('POLYGON')) {
31
+ // adql =
32
+ // 'select * from ' +
33
+ // tapTable +
34
+ // ' where 1=CONTAINS(POINT(\'ICRS\',' +
35
+ // tapRa +
36
+ // ',' +
37
+ // tapDec +
38
+ // '), POLYGON(\'ICRS\', ' +
39
+ // polygonAdql +
40
+ // '))';
41
+ // } else {
42
+ // const radius = healpixGridSingleton.getMinFoV() / 2;
43
+ // adql =
44
+ // 'select * from ' +
45
+ // tapTable +
46
+ // ' where 1=CONTAINS(POINT(\'ICRS\',' +
47
+ // tapRa +
48
+ // ',' +
49
+ // tapDec +
50
+ // '), CIRCLE(\'ICRS\', ' +
51
+ // centralPoint.raDeg +
52
+ // ', ' +
53
+ // centralPoint.decDeg +
54
+ // ', ' +
55
+ // radius +
56
+ // '))';
57
+ // }
58
+ // return adql
59
+ // }
60
+ // /**
61
+ // * Builds an ADQL query from current FoV and fetches footprints.
62
+ // * Returns the enriched FootprintSet (if any rows were found), otherwise undefined.
63
+ // */
64
+ // export default async function queryFootprintSetByFov(
65
+ // footprintSet: FootprintSetGL,
66
+ // polygonAdql: String,
67
+ // centralPoint: Point): Promise<FootprintSetGL | undefined> {
68
+ // try {
69
+ // // Resolve RA/Dec column names (CatalogueProps already picked them from metadata)
70
+ // const raCol = getColName(footprintSet.footprintsetProps.raColumn)
71
+ // const decCol = getColName(footprintSet.footprintsetProps.decColumn)
72
+ // const tapTable = footprintSet._name
73
+ // if (!raCol || !decCol) {
74
+ // console.warn('[queryCatalogueByFoV] RA/Dec columns were not resolved from metadata.')
75
+ // return
76
+ // }
77
+ // const adql = prepareADQL(tapTable, raCol, decCol, polygonAdql, footprintSet.tapRepo, centralPoint)
78
+ // const rows = await queryAsync(footprintSet.tapRepo, adql, TAP_QUERY_TIMEOUT_MS)
79
+ // console.log(rows)
80
+ // // if (rows && rows.data.length > 0) {
81
+ // // const metadata = rows.metadata
82
+ // // const data = rows.data
83
+ // if (
84
+ // typeof rows === 'object' &&
85
+ // rows !== null &&
86
+ // Array.isArray((rows as any).metadata) &&
87
+ // Array.isArray((rows as any).data)
88
+ // ) {
89
+ // const { metadata, data } = rows as {
90
+ // metadata: Array<{
91
+ // name: string;
92
+ // description: string;
93
+ // unit: string;
94
+ // datatype: string;
95
+ // ucd: string;
96
+ // utype: string;
97
+ // }>;
98
+ // data: unknown[];
99
+ // };
100
+ // const tapMetadataList = new TapMetadataList();
101
+ // for (const m of metadata) {
102
+ // const tapMeta = new Metadata(
103
+ // m.name,
104
+ // m.description ?? undefined,
105
+ // m.unit ?? undefined,
106
+ // m.datatype ?? undefined,
107
+ // m.ucd ?? undefined,
108
+ // m.utype ?? undefined
109
+ // );
110
+ // tapMetadataList.addMetadata(tapMeta);
111
+ // }
112
+ // if (data.length > 0) {
113
+ // footprintSet.addFootprints(data, tapMetadataList.metadataList);
114
+ // return footprintSet;
115
+ // } else {
116
+ // console.log('No results found');
117
+ // }
118
+ // // }
119
+ // } else {
120
+ // console.log('[queryFootprintSetByFov] No results found.')
121
+ // return
122
+ // }
123
+ // } catch (err: any) {
124
+ // console.error('[queryFootprintSetByFov] Error:', err?.message ?? err)
125
+ // return
126
+ // }
127
+ // }
128
+ //# sourceMappingURL=queryFootprintSetByFov.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryFootprintSetByFov.js","sourceRoot":"","sources":["../../src/services/queryFootprintSetByFov.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4EAA4E;AAC5E,yCAAyC;AACzC,uDAAuD;AACvD,kEAAkE;AAClE,qDAAqD;AACrD,mDAAmD;;AAGnD,yBAAyB;AACzB,mBAAmB;AACnB,IAAI;AAEJ,uEAAuE;AACvE,+DAA+D;AAC/D,6DAA6D;AAE7D,mEAAmE;AACnE,sCAAsC;AAGtC,sBAAsB;AACtB,wEAAwE;AACxE,2DAA2D;AAC3D,wBAAwB;AACxB,mDAAmD;AACnD,IAAI;AAEJ,wBAAwB;AACxB,sBAAsB;AACtB,+BAA+B;AAC/B,gCAAgC;AAChC,2CAA2C;AAC3C,mCAAmC;AACnC,kBAAkB;AAClB,wDAAwD;AACxD,aAAa;AACb,2BAA2B;AAC3B,mBAAmB;AACnB,8CAA8C;AAC9C,gBAAgB;AAChB,cAAc;AACd,iBAAiB;AACjB,kCAAkC;AAClC,sBAAsB;AACtB,cAAc;AACd,aAAa;AACb,2DAA2D;AAC3D,aAAa;AACb,2BAA2B;AAC3B,mBAAmB;AACnB,8CAA8C;AAC9C,gBAAgB;AAChB,cAAc;AACd,iBAAiB;AACjB,iCAAiC;AACjC,6BAA6B;AAC7B,eAAe;AACf,8BAA8B;AAC9B,eAAe;AACf,iBAAiB;AACjB,cAAc;AACd,MAAM;AACN,gBAAgB;AAChB,IAAI;AAEJ,MAAM;AACN,mEAAmE;AACnE,sFAAsF;AACtF,MAAM;AACN,wDAAwD;AACxD,kCAAkC;AAClC,yBAAyB;AACzB,gEAAgE;AAEhE,UAAU;AAEV,wFAAwF;AACxF,wEAAwE;AACxE,0EAA0E;AAC1E,0CAA0C;AAE1C,+BAA+B;AAC/B,8FAA8F;AAC9F,eAAe;AACf,QAAQ;AACR,yGAAyG;AAEzG,sFAAsF;AACtF,wBAAwB;AACxB,6CAA6C;AAC7C,wCAAwC;AACxC,gCAAgC;AAEhC,WAAW;AACX,oCAAoC;AACpC,yBAAyB;AACzB,iDAAiD;AACjD,0CAA0C;AAC1C,UAAU;AACV,6CAA6C;AAC7C,4BAA4B;AAC5B,0BAA0B;AAC1B,iCAAiC;AACjC,0BAA0B;AAC1B,8BAA8B;AAC9B,yBAAyB;AACzB,2BAA2B;AAC3B,cAAc;AACd,2BAA2B;AAC3B,WAAW;AACX,uDAAuD;AACvD,oCAAoC;AACpC,wCAAwC;AACxC,oBAAoB;AACpB,wCAAwC;AACxC,iCAAiC;AACjC,qCAAqC;AACrC,gCAAgC;AAChC,iCAAiC;AACjC,aAAa;AACb,gDAAgD;AAChD,UAAU;AAEV,+BAA+B;AAC/B,0EAA0E;AAC1E,+BAA+B;AAC/B,iBAAiB;AACjB,2CAA2C;AAC3C,UAAU;AACV,aAAa;AAEb,eAAe;AACf,kEAAkE;AAClE,eAAe;AACf,QAAQ;AACR,yBAAyB;AACzB,4EAA4E;AAC5E,aAAa;AACb,MAAM;AACN,IAAI"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tapRepoService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapRepoService.d.ts","sourceRoot":"","sources":["../../src/services/tapRepoService.ts"],"names":[],"mappings":""}
@@ -0,0 +1,190 @@
1
+ // // addTAPRepo.ts
2
+ // import { TapRepo } from '../model/tap/TapRepo.js'
3
+ // import {TapMetadata} from '../model/tap/TapMetadata.js'
4
+ // import {TapMetadataList} from '../model/tap/TapMetadataList.js'
5
+ // import global from '../Global.js'
6
+ export {};
7
+ // import {CatalogueGL} from '../model/catalogues/CatalogueGL.js'
8
+ // import {FootprintSetGL} from '../model/footprints/FootprintSetGL.js'
9
+ // let catId = 1
10
+ // let obsId = 1
11
+ // export interface TapDatasets {
12
+ // obsList: FootprintSetGL[]
13
+ // catalogueList: CatalogueGL[]
14
+ // notClassifiedList: string[]
15
+ // }
16
+ // /**
17
+ // * Initialize a TapRepo and populate capabilities + datasets.
18
+ // */
19
+ // export async function addTAPRepo(repoUrl: string): Promise<TapRepo> {
20
+ // const tapRepo = new TapRepo(repoUrl)
21
+ // tapRepo.adqlFunctionList = await loadCapabilities(repoUrl)
22
+ // const datasets = await loadTables(repoUrl, tapRepo)
23
+ // tapRepo.setCataloguesList(datasets.catalogueList)
24
+ // tapRepo.setObservationsList(datasets.obsList)
25
+ // tapRepo.setNotClassifiedList(datasets.notClassifiedList)
26
+ // return tapRepo
27
+ // }
28
+ // export async function queryAsync(
29
+ // tapRepo: TapRepo,
30
+ // adql: string,
31
+ // TAP_QUERY_TIMEOUT_MS: number
32
+ // ): Promise<any | null> {
33
+ // const base = global.corsProxyUrl.replace(/\/?$/, '/'); // ensure trailing /
34
+ // const url = new URL('adql', base);
35
+ // url.searchParams.set('tapurl', tapRepo.tapBaseUrl);
36
+ // url.searchParams.set('query', adql);
37
+ // const ac = new AbortController();
38
+ // const t = setTimeout(() => ac.abort(), TAP_QUERY_TIMEOUT_MS || 30000);
39
+ // try {
40
+ // const response = await fetch(url.toString(), {
41
+ // method: 'GET',
42
+ // mode: 'cors',
43
+ // signal: ac.signal,
44
+ // headers: { Accept: 'application/json' }
45
+ // });
46
+ // if (!response.ok) {
47
+ // const text = await response.text().catch(() => '');
48
+ // throw new Error(`HTTP ${response.status} ${response.statusText} – ${text}`);
49
+ // }
50
+ // return await response.json(); // return type is 'any'
51
+ // } catch (err: any) {
52
+ // console.error('queryAsync error:', err?.message || err);
53
+ // return null;
54
+ // } finally {
55
+ // clearTimeout(t);
56
+ // }
57
+ // }
58
+ // /**
59
+ // * Fetch and parse tables from a TAP service.
60
+ // */
61
+ // const loadTables = async (tapUrl: string, tapRepo: TapRepo): Promise<TapDatasets> => {
62
+ // const tablesUrl = `${tapUrl}/tables`
63
+ // const requestUrl = `${global.corsProxyUrl}exturl?url=${encodeURIComponent(tablesUrl)}`
64
+ // const result: TapDatasets = { obsList: [], catalogueList: [], notClassifiedList: [] }
65
+ // try {
66
+ // const response = await fetch(requestUrl, { method: 'GET', mode: 'cors' })
67
+ // const raw = await response.text()
68
+ // const data = raw.replace(/\n\t|\t|\n/g, '')
69
+ // const parser = new DOMParser()
70
+ // const doc = parser.parseFromString(data, 'application/xml')
71
+ // const root = doc.firstElementChild
72
+ // if (!root) throw new Error('Error parsing TAP XML. Missing root element.')
73
+ // if (!/tableset$/i.test(root.nodeName)) {
74
+ // throw new Error(`Error parsing TAP XML. ${root.nodeName} not recognised`)
75
+ // }
76
+ // const catalogueList: CatalogueGL[] = []
77
+ // const obsList: FootprintSetGL[] = []
78
+ // const notClassifiedList: string[] = []
79
+ // // schemas
80
+ // for (const schema of Array.from(root.children)) {
81
+ // if (schema.nodeName !== 'schema') continue
82
+ // for (const table of Array.from(schema.children)) {
83
+ // if (table.nodeName !== 'table') continue
84
+ // const dataset = parseTable(table as Element, tablesUrl, tapRepo)
85
+ // if (!dataset) continue
86
+ // if (dataset.catalogue) {
87
+ // ; (dataset.catalogue as any).id = catId++ // keep parity with existing code
88
+ // catalogueList.push(dataset.catalogue)
89
+ // }
90
+ // if (dataset.footprint) {
91
+ // ; (dataset.footprint as any).id = obsId++
92
+ // obsList.push(dataset.footprint)
93
+ // }
94
+ // if (dataset.notClassified) {
95
+ // notClassifiedList.push(dataset.notClassified)
96
+ // }
97
+ // }
98
+ // }
99
+ // return { catalogueList, obsList, notClassifiedList }
100
+ // } catch (err: any) {
101
+ // console.error(err?.message ?? err)
102
+ // return result
103
+ // }
104
+ // }
105
+ // /**
106
+ // * Fetch and parse TAP capabilities to extract ADQL functions.
107
+ // */
108
+ // const loadCapabilities = async (repoUrl: string): Promise<string[]> => {
109
+ // const capabilitiesUrl = `${repoUrl}/capabilities`
110
+ // const requestUrl = `${global.corsProxyUrl}exturl?url=${encodeURIComponent(capabilitiesUrl)}`
111
+ // let capabilities: string[] = []
112
+ // try {
113
+ // const response = await fetch(requestUrl, { method: 'GET', mode: 'cors' })
114
+ // const raw = await response.text()
115
+ // const data = raw.replace(/\n\t|\t|\n/g, '')
116
+ // const parser = new DOMParser()
117
+ // const doc = parser.parseFromString(data, 'application/xml')
118
+ // const root = doc.firstElementChild
119
+ // if (!root) throw new Error('Error parsing TAP XML. Missing root element.')
120
+ // if (!/capabilities$/i.test(root.nodeName)) {
121
+ // throw new Error(`Error parsing TAP XML. ${root.nodeName} not recognised`)
122
+ // }
123
+ // for (const capability of Array.from(root.children)) {
124
+ // if (capability.nodeName !== 'capability') continue
125
+ // for (const child of Array.from(capability.children)) {
126
+ // if (child.nodeName === 'language') {
127
+ // capabilities = parseCapabilities(child as Element)
128
+ // }
129
+ // }
130
+ // }
131
+ // return capabilities
132
+ // } catch (err: any) {
133
+ // console.error(err?.message ?? err)
134
+ // return capabilities
135
+ // }
136
+ // }
137
+ // /**
138
+ // * Parse the <language> node to extract ADQL functions.
139
+ // */
140
+ // const parseCapabilities = (languageNode: Element): string[] => {
141
+ // const out: string[] = []
142
+ // const featuresContainers = languageNode.getElementsByTagName('languageFeatures')
143
+ // if (!featuresContainers.length) return out
144
+ // const featureNodeList = featuresContainers[0].getElementsByTagName('feature')
145
+ // for (const feature of Array.from(featureNodeList)) {
146
+ // const formNode = feature.getElementsByTagName('form')[0]
147
+ // if (formNode?.textContent) out.push(formNode.textContent)
148
+ // }
149
+ // return out
150
+ // }
151
+ // type TableParseResult = {
152
+ // catalogue: CatalogueGL | null
153
+ // footprint: FootprintSetGL | null
154
+ // notClassified: string | null
155
+ // }
156
+ // /**
157
+ // * Parse a <table> node and build dataset wrappers.
158
+ // */
159
+ // const parseTable = (tableNode: Element, tablesUrl: string, tapRepo: TapRepo): TableParseResult => {
160
+ // const nameNode = tableNode.getElementsByTagName('name')[0]
161
+ // if (!nameNode?.textContent) {
162
+ // return { catalogue: null, footprint: null, notClassified: 'Missing table name' }
163
+ // }
164
+ // const tableName = nameNode.textContent
165
+ // const tableDesc = tableNode.getElementsByTagName('description')[0]?.textContent ?? null
166
+ // const metaColumns = tableNode.getElementsByTagName('column')
167
+ // const tapMetas = new TapMetadataList()
168
+ // for (const col of Array.from(metaColumns)) {
169
+ // const name = col.getElementsByTagName('name')[0]?.textContent ?? ''
170
+ // const description = col.getElementsByTagName('description')[0]?.textContent ?? undefined
171
+ // const unit = col.getElementsByTagName('unit')[0]?.textContent ?? undefined
172
+ // const dataType = col.getElementsByTagName('dataType')[0]?.textContent ?? undefined
173
+ // const ucd = col.getElementsByTagName('ucd')[0]?.textContent ?? undefined
174
+ // const utype = col.getElementsByTagName('utype')[0]?.textContent ?? undefined
175
+ // const tapMeta = new TapMetadata(name, description, unit, dataType, ucd, utype)
176
+ // tapMetas.addMetadata(tapMeta)
177
+ // }
178
+ // let catalogue: CatalogueGL | null = null
179
+ // let footprint: FootprintSetGL | null = null
180
+ // let notClassified: string | null = null
181
+ // if (tapMetas.pgSphereMetaColumns.length > 0 || tapMetas.sRegionMetaColumns.length > 0) {
182
+ // footprint = new FootprintSetGL(tableName, tableDesc, tapRepo, tapMetas)
183
+ // } else if (tapMetas.posEqRAMetaColumns.length > 0 && tapMetas.posEqDecMetaColumns.length > 0) {
184
+ // catalogue = new CatalogueGL(tableName, tableDesc, tapRepo, tapMetas)
185
+ // } else {
186
+ // notClassified = `TODO: create NC entity for ${tablesUrl}#${tableName}`
187
+ // }
188
+ // return { catalogue, footprint, notClassified }
189
+ // }
190
+ //# sourceMappingURL=tapRepoService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapRepoService.js","sourceRoot":"","sources":["../../src/services/tapRepoService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { HiPSDescriptor } from '../model/hips/HiPSDescriptor.js';
2
+ export interface HiPSItem {
3
+ id: number;
4
+ hipsDescriptor: HiPSDescriptor | null;
5
+ provider: string;
6
+ hips: Record<string, unknown>;
7
+ }
8
+ export interface HiPSNodeEntry {
9
+ hips_service_url: string;
10
+ hips_release_date?: string;
11
+ creator_did?: string;
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAEhE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,cAAc,GAAG,IAAI,CAAA;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ type UniformNames = {
2
+ vertex_color: string;
3
+ m_perspective: string;
4
+ m_model_view: string;
5
+ };
6
+ type AttributeNames = {
7
+ vertex_pos: string;
8
+ vertex_selected: string;
9
+ point_size: string;
10
+ point_hue: string;
11
+ };
12
+ type Locations = {
13
+ pMatrix: WebGLUniformLocation | null;
14
+ mvMatrix: WebGLUniformLocation | null;
15
+ color: WebGLUniformLocation | null;
16
+ position: number;
17
+ hovered: number;
18
+ pointSize: number;
19
+ brightness: number;
20
+ };
21
+ export declare class CatalogueShaderProgram {
22
+ private _shaderProgram;
23
+ private _vertexShader;
24
+ private _fragmentShader;
25
+ readonly gl_uniforms: UniformNames;
26
+ readonly gl_attributes: AttributeNames;
27
+ readonly locations: Locations;
28
+ private _webgl;
29
+ constructor(webgl: WebGL2RenderingContext);
30
+ get shaderProgram(): WebGLProgram;
31
+ private initShaders;
32
+ enableShaders(pMatrix: Float32Array, modelMatrix: Float32Array, viewMatrix: Float32Array): void;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=CatalogueShaderProgram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CatalogueShaderProgram.d.ts","sourceRoot":"","sources":["../../src/shader/CatalogueShaderProgram.ts"],"names":[],"mappings":"AAMA,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACpC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACrC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAGD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,eAAe,CAAc;IAErC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAA;IAClC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,OAAO,CAAC,MAAM,CAAyB;gBAG3B,KAAK,EAAE,sBAAsB;IA0BzC,IAAI,aAAa,IAAI,YAAY,CAQhC;IAED,OAAO,CAAC,WAAW;IA2DnB,aAAa,CACX,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,YAAY,GACvB,IAAI;CAuBR"}
@@ -0,0 +1,94 @@
1
+ // HiPSShaderProgram.ts
2
+ import { mat4 } from 'gl-matrix';
3
+ import ShaderManager from './ShaderManager.js';
4
+ // export default class CatalogueShaderProgram {
5
+ export class CatalogueShaderProgram {
6
+ _shaderProgram;
7
+ _vertexShader;
8
+ _fragmentShader;
9
+ gl_uniforms;
10
+ gl_attributes;
11
+ locations;
12
+ _webgl;
13
+ constructor(webgl) {
14
+ this._webgl = webgl;
15
+ this.gl_uniforms = {
16
+ vertex_color: 'u_fragcolor',
17
+ m_perspective: 'uPMatrix',
18
+ m_model_view: 'uMVMatrix'
19
+ };
20
+ this.gl_attributes = {
21
+ vertex_pos: 'aCatPosition',
22
+ vertex_selected: 'a_selected',
23
+ point_size: 'a_pointsize',
24
+ point_hue: 'a_brightness'
25
+ };
26
+ this.locations = {
27
+ pMatrix: null,
28
+ mvMatrix: null,
29
+ color: null,
30
+ position: -1,
31
+ hovered: -1,
32
+ pointSize: -1,
33
+ brightness: -1
34
+ };
35
+ }
36
+ get shaderProgram() {
37
+ if (!this._shaderProgram) {
38
+ // const gl = global.gl as GL
39
+ const gl = this._webgl;
40
+ this._shaderProgram = gl.createProgram();
41
+ this.initShaders();
42
+ }
43
+ return this._shaderProgram;
44
+ }
45
+ initShaders() {
46
+ // const gl = global.gl as GL
47
+ const gl = this._webgl;
48
+ const fragmentShaderStr = ShaderManager.catalogueFS();
49
+ this._fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
50
+ gl.shaderSource(this._fragmentShader, fragmentShaderStr);
51
+ gl.compileShader(this._fragmentShader);
52
+ console.log('FS log:', gl.getShaderInfoLog(this._fragmentShader) || 'ok');
53
+ if (!gl.getShaderParameter(this._fragmentShader, gl.COMPILE_STATUS)) {
54
+ alert(gl.getShaderInfoLog(this._fragmentShader) || 'Fragment shader compile error');
55
+ return;
56
+ }
57
+ const vertexShaderStr = ShaderManager.catalogueVS();
58
+ this._vertexShader = gl.createShader(gl.VERTEX_SHADER);
59
+ gl.shaderSource(this._vertexShader, vertexShaderStr);
60
+ gl.compileShader(this._vertexShader);
61
+ console.log('VS log:', gl.getShaderInfoLog(this._vertexShader) || 'ok');
62
+ if (!gl.getShaderParameter(this._vertexShader, gl.COMPILE_STATUS)) {
63
+ alert(gl.getShaderInfoLog(this._vertexShader) || 'Vertex shader compile error');
64
+ return;
65
+ }
66
+ gl.attachShader(this.shaderProgram, this._vertexShader);
67
+ gl.attachShader(this.shaderProgram, this._fragmentShader);
68
+ gl.linkProgram(this.shaderProgram);
69
+ if (!gl.getProgramParameter(this.shaderProgram, gl.LINK_STATUS)) {
70
+ alert('Could not initialise shaders');
71
+ }
72
+ // shaderUtility.useProgram(this.shaderProgram)
73
+ gl.useProgram(this.shaderProgram);
74
+ this.locations.position = gl.getAttribLocation(this.shaderProgram, this.gl_attributes.vertex_pos);
75
+ this.locations.hovered = gl.getAttribLocation(this.shaderProgram, this.gl_attributes.vertex_selected);
76
+ this.locations.pointSize = gl.getAttribLocation(this.shaderProgram, this.gl_attributes.point_size);
77
+ this.locations.brightness = gl.getAttribLocation(this.shaderProgram, this.gl_attributes.point_hue);
78
+ this.locations.color = gl.getUniformLocation(this.shaderProgram, this.gl_uniforms.vertex_color);
79
+ }
80
+ enableShaders(pMatrix, modelMatrix, viewMatrix) {
81
+ // const gl = global.gl as GL
82
+ const gl = this._webgl;
83
+ // shaderUtility.useProgram(this.shaderProgram)
84
+ gl.useProgram(this.shaderProgram);
85
+ this.locations.pMatrix = gl.getUniformLocation(this.shaderProgram, this.gl_uniforms.m_perspective);
86
+ this.locations.mvMatrix = gl.getUniformLocation(this.shaderProgram, this.gl_uniforms.m_model_view);
87
+ let mvMatrix = mat4.create();
88
+ mvMatrix = mat4.multiply(mvMatrix, viewMatrix, modelMatrix);
89
+ gl.uniformMatrix4fv(this.locations.pMatrix, false, pMatrix);
90
+ gl.uniformMatrix4fv(this.locations.mvMatrix, false, mvMatrix);
91
+ }
92
+ }
93
+ // export const catalogueShaderProgram = new CatalogueShaderProgram()
94
+ //# sourceMappingURL=CatalogueShaderProgram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CatalogueShaderProgram.js","sourceRoot":"","sources":["../../src/shader/CatalogueShaderProgram.ts"],"names":[],"mappings":"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"}