@globiojs/angular 0.1.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/LICENSE +21 -0
- package/README.md +80 -0
- package/esm2022/globe.component.mjs +166 -0
- package/esm2022/globiojs-angular.mjs +5 -0
- package/esm2022/public-api.mjs +2 -0
- package/fesm2022/globiojs-angular.mjs +173 -0
- package/fesm2022/globiojs-angular.mjs.map +1 -0
- package/globe.component.d.ts +66 -0
- package/globe.component.d.ts.map +1 -0
- package/globiojs-angular.d.ts.map +1 -0
- package/index.d.ts +6 -0
- package/package.json +50 -0
- package/public-api.d.ts +3 -0
- package/public-api.d.ts.map +1 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Wiktor Wróbel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# @globiojs/angular
|
|
2
|
+
|
|
3
|
+
Angular standalone component for the [GlobioJS](https://github.com/SparrowVic/globiojs) interactive 3D globe engine.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @globiojs/angular @globiojs/core three
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
GlobioJS supports Angular 17 through 22. The package uses Angular's partial compilation format so applications can process it with their own Angular compiler.
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
Import the standalone component and give its host an explicit size:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { Component } from '@angular/core';
|
|
19
|
+
import {
|
|
20
|
+
GlobeComponent,
|
|
21
|
+
type MarkerConfig,
|
|
22
|
+
type MarkerEvent,
|
|
23
|
+
} from '@globiojs/angular';
|
|
24
|
+
|
|
25
|
+
@Component({
|
|
26
|
+
selector: 'app-home',
|
|
27
|
+
standalone: true,
|
|
28
|
+
imports: [GlobeComponent],
|
|
29
|
+
template: `
|
|
30
|
+
<ng-globe
|
|
31
|
+
class="globe"
|
|
32
|
+
kind="outline"
|
|
33
|
+
theme="outline-cyber"
|
|
34
|
+
[markers]="markers"
|
|
35
|
+
(markerClick)="openMarker($event)"
|
|
36
|
+
/>
|
|
37
|
+
`,
|
|
38
|
+
styles: `.globe { display: block; width: 100%; height: 32rem; }`,
|
|
39
|
+
})
|
|
40
|
+
export class HomeComponent {
|
|
41
|
+
readonly markers = [
|
|
42
|
+
{ id: 'warsaw', position: [52.2297, 21.0122], label: 'Warsaw' },
|
|
43
|
+
] satisfies ReadonlyArray<MarkerConfig>;
|
|
44
|
+
|
|
45
|
+
openMarker(event: MarkerEvent): void {
|
|
46
|
+
console.log(event.marker);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Every public `GlobeConfig` option is available as an input. Engine events are Angular outputs; the engine's `error` event is exposed as `globeError` to avoid colliding with the native DOM event.
|
|
52
|
+
|
|
53
|
+
## Imperative API
|
|
54
|
+
|
|
55
|
+
Use `getInstance()` when an operation is easier to express imperatively:
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
import { Component, ViewChild } from '@angular/core';
|
|
59
|
+
import { GlobeComponent } from '@globiojs/angular';
|
|
60
|
+
|
|
61
|
+
@Component({
|
|
62
|
+
standalone: true,
|
|
63
|
+
imports: [GlobeComponent],
|
|
64
|
+
template: `<ng-globe #globe class="globe" />`,
|
|
65
|
+
styles: `.globe { display: block; width: 100%; height: 32rem; }`,
|
|
66
|
+
})
|
|
67
|
+
export class GlobePageComponent {
|
|
68
|
+
@ViewChild('globe') private globe?: GlobeComponent;
|
|
69
|
+
|
|
70
|
+
focusWarsaw(): void {
|
|
71
|
+
this.globe?.setRotation([52.2297, 21.0122], true);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The component initializes the WebGL engine outside Angular's zone, re-enters the zone for outputs, skips initialization during server-side rendering, and destroys the engine with the component.
|
|
77
|
+
|
|
78
|
+
## License
|
|
79
|
+
|
|
80
|
+
[MIT](./LICENSE) © Wiktor Wróbel.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, NgZone, Output, PLATFORM_ID, ViewChild, inject, } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
3
|
+
import { createGlobe, pickGlobeConfig, } from '@globiojs/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* `<ng-globe>` — every `GlobeConfig` key is an input, every globe event an
|
|
7
|
+
* output (`error` is exposed as `globeError` so it does not shadow the DOM
|
|
8
|
+
* event), and `getInstance()` returns the engine instance for imperative
|
|
9
|
+
* calls. The globe runs outside Angular's zone; outputs re-enter it.
|
|
10
|
+
*/
|
|
11
|
+
export class GlobeComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.countryClick = new EventEmitter();
|
|
14
|
+
this.countryHover = new EventEmitter();
|
|
15
|
+
this.markerClick = new EventEmitter();
|
|
16
|
+
this.markerHover = new EventEmitter();
|
|
17
|
+
this.surfaceClick = new EventEmitter();
|
|
18
|
+
this.sceneEnter = new EventEmitter();
|
|
19
|
+
this.sceneExit = new EventEmitter();
|
|
20
|
+
this.storyComplete = new EventEmitter();
|
|
21
|
+
this.ready = new EventEmitter();
|
|
22
|
+
this.globeError = new EventEmitter();
|
|
23
|
+
this.platformId = inject(PLATFORM_ID);
|
|
24
|
+
this.ngZone = inject(NgZone);
|
|
25
|
+
this.instance = null;
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
if (!isPlatformBrowser(this.platformId))
|
|
29
|
+
return;
|
|
30
|
+
this.ngZone.runOutsideAngular(() => {
|
|
31
|
+
const instance = createGlobe({
|
|
32
|
+
container: this.host.nativeElement,
|
|
33
|
+
...this.buildConfig(),
|
|
34
|
+
});
|
|
35
|
+
instance.on('countryClick', (e) => this.ngZone.run(() => this.countryClick.emit(e)));
|
|
36
|
+
instance.on('countryHover', (e) => this.ngZone.run(() => this.countryHover.emit(e)));
|
|
37
|
+
instance.on('markerClick', (e) => this.ngZone.run(() => this.markerClick.emit(e)));
|
|
38
|
+
instance.on('markerHover', (e) => this.ngZone.run(() => this.markerHover.emit(e)));
|
|
39
|
+
instance.on('surfaceClick', (e) => this.ngZone.run(() => this.surfaceClick.emit(e)));
|
|
40
|
+
instance.on('sceneEnter', (e) => this.ngZone.run(() => this.sceneEnter.emit(e)));
|
|
41
|
+
instance.on('sceneExit', (e) => this.ngZone.run(() => this.sceneExit.emit(e)));
|
|
42
|
+
instance.on('storyComplete', (e) => this.ngZone.run(() => this.storyComplete.emit(e)));
|
|
43
|
+
instance.on('ready', () => this.ngZone.run(() => this.ready.emit()));
|
|
44
|
+
instance.on('error', (err) => this.ngZone.run(() => this.globeError.emit(err)));
|
|
45
|
+
instance.mount();
|
|
46
|
+
this.instance = instance;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
ngOnChanges(changes) {
|
|
50
|
+
if (!this.instance)
|
|
51
|
+
return;
|
|
52
|
+
const hasRelevantChange = Object.keys(changes).some((key) => !changes[key]?.firstChange);
|
|
53
|
+
if (hasRelevantChange) {
|
|
54
|
+
this.ngZone.runOutsideAngular(() => this.instance?.update(this.buildConfig()));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
ngOnDestroy() {
|
|
58
|
+
this.instance?.destroy();
|
|
59
|
+
this.instance = null;
|
|
60
|
+
}
|
|
61
|
+
/** The underlying engine instance, or null before the view is initialised / after destroy. */
|
|
62
|
+
getInstance() {
|
|
63
|
+
return this.instance;
|
|
64
|
+
}
|
|
65
|
+
setRotation(position, animate) {
|
|
66
|
+
this.instance?.setRotation(position, animate);
|
|
67
|
+
}
|
|
68
|
+
addMarker(marker) {
|
|
69
|
+
this.instance?.addMarker(marker);
|
|
70
|
+
}
|
|
71
|
+
removeMarker(id) {
|
|
72
|
+
this.instance?.removeMarker(id);
|
|
73
|
+
}
|
|
74
|
+
resize() {
|
|
75
|
+
this.instance?.resize();
|
|
76
|
+
}
|
|
77
|
+
buildConfig() {
|
|
78
|
+
return pickGlobeConfig(this);
|
|
79
|
+
}
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GlobeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GlobeComponent, isStandalone: true, selector: "ng-globe", inputs: { mode: "mode", kind: "kind", theme: "theme", countries: "countries", countryLabels: "countryLabels", countryData: "countryData", markers: "markers", htmlMarkers: "htmlMarkers", arcs: "arcs", atmosphere: "atmosphere", focusPulse: "focusPulse", outline: "outline", cinematic: "cinematic", dotted: "dotted", wireframe: "wireframe", paper: "paper", hologram: "hologram", starfield: "starfield", postprocessing: "postprocessing", axisTilt: "axisTilt", autoRotate: "autoRotate", performance: "performance", initialPosition: "initialPosition", minZoom: "minZoom", maxZoom: "maxZoom", zoom: "zoom", transparent: "transparent", framing: "framing" }, outputs: { countryClick: "countryClick", countryHover: "countryHover", markerClick: "markerClick", markerHover: "markerHover", surfaceClick: "surfaceClick", sceneEnter: "sceneEnter", sceneExit: "sceneExit", storyComplete: "storyComplete", ready: "ready", globeError: "globeError" }, viewQueries: [{ propertyName: "host", first: true, predicate: ["host"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #host class="globe-host"></div>', isInline: true, styles: [":host{display:block;width:100%;height:100%}.globe-host{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GlobeComponent, decorators: [{
|
|
84
|
+
type: Component,
|
|
85
|
+
args: [{ selector: 'ng-globe', standalone: true, template: '<div #host class="globe-host"></div>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%}.globe-host{width:100%;height:100%}\n"] }]
|
|
86
|
+
}], propDecorators: { host: [{
|
|
87
|
+
type: ViewChild,
|
|
88
|
+
args: ['host', { static: true }]
|
|
89
|
+
}], mode: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], kind: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], theme: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], countries: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], countryLabels: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], countryData: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], markers: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], htmlMarkers: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], arcs: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], atmosphere: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], focusPulse: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], outline: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], cinematic: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], dotted: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}], wireframe: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], paper: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], hologram: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], starfield: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], postprocessing: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], axisTilt: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], autoRotate: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], performance: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], initialPosition: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], minZoom: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], maxZoom: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], zoom: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], transparent: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], framing: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], countryClick: [{
|
|
146
|
+
type: Output
|
|
147
|
+
}], countryHover: [{
|
|
148
|
+
type: Output
|
|
149
|
+
}], markerClick: [{
|
|
150
|
+
type: Output
|
|
151
|
+
}], markerHover: [{
|
|
152
|
+
type: Output
|
|
153
|
+
}], surfaceClick: [{
|
|
154
|
+
type: Output
|
|
155
|
+
}], sceneEnter: [{
|
|
156
|
+
type: Output
|
|
157
|
+
}], sceneExit: [{
|
|
158
|
+
type: Output
|
|
159
|
+
}], storyComplete: [{
|
|
160
|
+
type: Output
|
|
161
|
+
}], ready: [{
|
|
162
|
+
type: Output
|
|
163
|
+
}], globeError: [{
|
|
164
|
+
type: Output
|
|
165
|
+
}] } });
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dsb2JlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsRUFDVCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLFdBQVcsRUFDWCxlQUFlLEdBZ0NoQixNQUFNLGdCQUFnQixDQUFDOztBQUV4Qjs7Ozs7R0FLRztBQVFILE1BQU0sT0FBTyxjQUFjO0lBUDNCO1FBdUM0QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBQ2hELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdkQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBQzlDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDckQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUNyRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDakQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQ2hELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDdkQsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDakMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFaEQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLGFBQVEsR0FBeUIsSUFBSSxDQUFDO0tBZ0UvQztJQTlEUSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTztRQUVoRCxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNqQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUM7Z0JBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7Z0JBQ2xDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTthQUN0QixDQUFDLENBQUM7WUFFSCxRQUFRLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLFFBQVEsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckYsUUFBUSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRixRQUFRLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLFFBQVEsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckYsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRixRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9FLFFBQVEsQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoRixRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDM0IsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRixDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsOEZBQThGO0lBQ3ZGLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxPQUFpQjtRQUNwRCxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFvQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sWUFBWSxDQUFDLEVBQVU7UUFDNUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE9BQU8sZUFBZSxDQUFDLElBQTBDLENBQUMsQ0FBQztJQUNyRSxDQUFDOytHQTVHVSxjQUFjO21HQUFkLGNBQWMsMG1DQUpmLHNDQUFzQzs7NEZBSXJDLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksWUFDTixzQ0FBc0MsbUJBRS9CLHVCQUF1QixDQUFDLE1BQU07OEJBR08sSUFBSTtzQkFBekQsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVuQixJQUFJO3NCQUFuQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUVvQixZQUFZO3NCQUFyQyxNQUFNO2dCQUNtQixZQUFZO3NCQUFyQyxNQUFNO2dCQUNtQixXQUFXO3NCQUFwQyxNQUFNO2dCQUNtQixXQUFXO3NCQUFwQyxNQUFNO2dCQUNtQixZQUFZO3NCQUFyQyxNQUFNO2dCQUNtQixVQUFVO3NCQUFuQyxNQUFNO2dCQUNtQixTQUFTO3NCQUFsQyxNQUFNO2dCQUNtQixhQUFhO3NCQUF0QyxNQUFNO2dCQUNtQixLQUFLO3NCQUE5QixNQUFNO2dCQUNtQixVQUFVO3NCQUFuQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBQTEFURk9STV9JRCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlR2xvYmUsXG4gIHBpY2tHbG9iZUNvbmZpZyxcbiAgdHlwZSBBcmNDb25maWcsXG4gIHR5cGUgQXRtb3NwaGVyZUNvbmZpZyxcbiAgdHlwZSBBdXRvUm90YXRlQ29uZmlnLFxuICB0eXBlIENpbmVtYXRpY0NvbmZpZyxcbiAgdHlwZSBDb3VudHJpZXNDb25maWcsXG4gIHR5cGUgQ291bnRyeURhdGFNYXAsXG4gIHR5cGUgQ291bnRyeUV2ZW50LFxuICB0eXBlIENvdW50cnlMYWJlbHNDb25maWcsXG4gIHR5cGUgRG90dGVkQ29uZmlnLFxuICB0eXBlIEZyYW1pbmdDb25maWcsXG4gIHR5cGUgR2xvYmVDb25maWcsXG4gIHR5cGUgR2xvYmVDb25maWdJbnB1dCxcbiAgdHlwZSBHbG9iZUluc3RhbmNlLFxuICB0eXBlIEdsb2JlS2luZCxcbiAgdHlwZSBHbG9iZU1vZGUsXG4gIHR5cGUgSG9sb2dyYW1Db25maWcsXG4gIHR5cGUgSHRtbE1hcmtlckNvbmZpZyxcbiAgdHlwZSBMYXRMbmcsXG4gIHR5cGUgTWFya2VyQ29uZmlnLFxuICB0eXBlIE1hcmtlckV2ZW50LFxuICB0eXBlIE91dGxpbmVDb25maWcsXG4gIHR5cGUgUGFwZXJDb25maWcsXG4gIHR5cGUgUGVyZm9ybWFuY2VDb25maWcsXG4gIHR5cGUgUG9zdFByb2Nlc3NpbmdDb25maWcsXG4gIHR5cGUgU3RhcmZpZWxkQ29uZmlnLFxuICB0eXBlIFN0b3J5Q29tcGxldGVFdmVudCxcbiAgdHlwZSBTdG9yeVNjZW5lRXZlbnQsXG4gIHR5cGUgU3VyZmFjZUNsaWNrRXZlbnQsXG4gIHR5cGUgVGhlbWVJbnB1dCxcbiAgdHlwZSBXaXJlZnJhbWVDb25maWcsXG4gIHR5cGUgWm9vbUNvbmZpZyxcbn0gZnJvbSAnQGdsb2Jpb2pzL2NvcmUnO1xuXG4vKipcbiAqIGA8bmctZ2xvYmU+YCDigJQgZXZlcnkgYEdsb2JlQ29uZmlnYCBrZXkgaXMgYW4gaW5wdXQsIGV2ZXJ5IGdsb2JlIGV2ZW50IGFuXG4gKiBvdXRwdXQgKGBlcnJvcmAgaXMgZXhwb3NlZCBhcyBgZ2xvYmVFcnJvcmAgc28gaXQgZG9lcyBub3Qgc2hhZG93IHRoZSBET01cbiAqIGV2ZW50KSwgYW5kIGBnZXRJbnN0YW5jZSgpYCByZXR1cm5zIHRoZSBlbmdpbmUgaW5zdGFuY2UgZm9yIGltcGVyYXRpdmVcbiAqIGNhbGxzLiBUaGUgZ2xvYmUgcnVucyBvdXRzaWRlIEFuZ3VsYXIncyB6b25lOyBvdXRwdXRzIHJlLWVudGVyIGl0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1nbG9iZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPGRpdiAjaG9zdCBjbGFzcz1cImdsb2JlLWhvc3RcIj48L2Rpdj4nLFxuICBzdHlsZXM6IFsnOmhvc3R7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5nbG9iZS1ob3N0e3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9J10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHbG9iZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnaG9zdCcsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcmVhZG9ubHkgaG9zdCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlPzogR2xvYmVNb2RlO1xuICBASW5wdXQoKSBwdWJsaWMga2luZD86IEdsb2JlS2luZDtcbiAgQElucHV0KCkgcHVibGljIHRoZW1lPzogVGhlbWVJbnB1dDtcbiAgQElucHV0KCkgcHVibGljIGNvdW50cmllcz86IENvdW50cmllc0NvbmZpZztcbiAgQElucHV0KCkgcHVibGljIGNvdW50cnlMYWJlbHM/OiBDb3VudHJ5TGFiZWxzQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgY291bnRyeURhdGE/OiBDb3VudHJ5RGF0YU1hcDtcbiAgQElucHV0KCkgcHVibGljIG1hcmtlcnM/OiBSZWFkb25seUFycmF5PE1hcmtlckNvbmZpZz47XG4gIEBJbnB1dCgpIHB1YmxpYyBodG1sTWFya2Vycz86IFJlYWRvbmx5QXJyYXk8SHRtbE1hcmtlckNvbmZpZz47XG4gIEBJbnB1dCgpIHB1YmxpYyBhcmNzPzogUmVhZG9ubHlBcnJheTxBcmNDb25maWc+O1xuICBASW5wdXQoKSBwdWJsaWMgYXRtb3NwaGVyZT86IEF0bW9zcGhlcmVDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb2N1c1B1bHNlPzogR2xvYmVDb25maWdbJ2ZvY3VzUHVsc2UnXTtcbiAgQElucHV0KCkgcHVibGljIG91dGxpbmU/OiBPdXRsaW5lQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgY2luZW1hdGljPzogQ2luZW1hdGljQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgZG90dGVkPzogRG90dGVkQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgd2lyZWZyYW1lPzogV2lyZWZyYW1lQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgcGFwZXI/OiBQYXBlckNvbmZpZztcbiAgQElucHV0KCkgcHVibGljIGhvbG9ncmFtPzogSG9sb2dyYW1Db25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdGFyZmllbGQ/OiBTdGFyZmllbGRDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwb3N0cHJvY2Vzc2luZz86IFBvc3RQcm9jZXNzaW5nQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgYXhpc1RpbHQ/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvUm90YXRlPzogQXV0b1JvdGF0ZUNvbmZpZztcbiAgQElucHV0KCkgcHVibGljIHBlcmZvcm1hbmNlPzogUGVyZm9ybWFuY2VDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0aWFsUG9zaXRpb24/OiBMYXRMbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5ab29tPzogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgbWF4Wm9vbT86IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIHpvb20/OiBab29tQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgdHJhbnNwYXJlbnQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgZnJhbWluZz86IEZyYW1pbmdDb25maWc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjb3VudHJ5Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvdW50cnlFdmVudD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjb3VudHJ5SG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPENvdW50cnlFdmVudCB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgbWFya2VyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1hcmtlckV2ZW50PigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IG1hcmtlckhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxNYXJrZXJFdmVudCB8IG51bGw+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc3VyZmFjZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxTdXJmYWNlQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzY2VuZUVudGVyID0gbmV3IEV2ZW50RW1pdHRlcjxTdG9yeVNjZW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2NlbmVFeGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxTdG9yeVNjZW5lRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc3RvcnlDb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RvcnlDb21wbGV0ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGdsb2JlRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPEVycm9yPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgaW5zdGFuY2U6IEdsb2JlSW5zdGFuY2UgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBjcmVhdGVHbG9iZSh7XG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIC4uLnRoaXMuYnVpbGRDb25maWcoKSxcbiAgICAgIH0pO1xuXG4gICAgICBpbnN0YW5jZS5vbignY291bnRyeUNsaWNrJywgKGUpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNvdW50cnlDbGljay5lbWl0KGUpKSk7XG4gICAgICBpbnN0YW5jZS5vbignY291bnRyeUhvdmVyJywgKGUpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmNvdW50cnlIb3Zlci5lbWl0KGUpKSk7XG4gICAgICBpbnN0YW5jZS5vbignbWFya2VyQ2xpY2snLCAoZSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMubWFya2VyQ2xpY2suZW1pdChlKSkpO1xuICAgICAgaW5zdGFuY2Uub24oJ21hcmtlckhvdmVyJywgKGUpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLm1hcmtlckhvdmVyLmVtaXQoZSkpKTtcbiAgICAgIGluc3RhbmNlLm9uKCdzdXJmYWNlQ2xpY2snLCAoZSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuc3VyZmFjZUNsaWNrLmVtaXQoZSkpKTtcbiAgICAgIGluc3RhbmNlLm9uKCdzY2VuZUVudGVyJywgKGUpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLnNjZW5lRW50ZXIuZW1pdChlKSkpO1xuICAgICAgaW5zdGFuY2Uub24oJ3NjZW5lRXhpdCcsIChlKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5zY2VuZUV4aXQuZW1pdChlKSkpO1xuICAgICAgaW5zdGFuY2Uub24oJ3N0b3J5Q29tcGxldGUnLCAoZSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuc3RvcnlDb21wbGV0ZS5lbWl0KGUpKSk7XG4gICAgICBpbnN0YW5jZS5vbigncmVhZHknLCAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5yZWFkeS5lbWl0KCkpKTtcbiAgICAgIGluc3RhbmNlLm9uKCdlcnJvcicsIChlcnIpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmdsb2JlRXJyb3IuZW1pdChlcnIpKSk7XG5cbiAgICAgIGluc3RhbmNlLm1vdW50KCk7XG4gICAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkgcmV0dXJuO1xuICAgIGNvbnN0IGhhc1JlbGV2YW50Q2hhbmdlID0gT2JqZWN0LmtleXMoY2hhbmdlcykuc29tZSgoa2V5KSA9PiAhY2hhbmdlc1trZXldPy5maXJzdENoYW5nZSk7XG4gICAgaWYgKGhhc1JlbGV2YW50Q2hhbmdlKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLmluc3RhbmNlPy51cGRhdGUodGhpcy5idWlsZENvbmZpZygpKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaW5zdGFuY2U/LmRlc3Ryb3koKTtcbiAgICB0aGlzLmluc3RhbmNlID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBlbmdpbmUgaW5zdGFuY2UsIG9yIG51bGwgYmVmb3JlIHRoZSB2aWV3IGlzIGluaXRpYWxpc2VkIC8gYWZ0ZXIgZGVzdHJveS4gKi9cbiAgcHVibGljIGdldEluc3RhbmNlKCk6IEdsb2JlSW5zdGFuY2UgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3RhdGlvbihwb3NpdGlvbjogTGF0TG5nLCBhbmltYXRlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaW5zdGFuY2U/LnNldFJvdGF0aW9uKHBvc2l0aW9uLCBhbmltYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNYXJrZXIobWFya2VyOiBNYXJrZXJDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmluc3RhbmNlPy5hZGRNYXJrZXIobWFya2VyKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVNYXJrZXIoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5zdGFuY2U/LnJlbW92ZU1hcmtlcihpZCk7XG4gIH1cblxuICBwdWJsaWMgcmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zdGFuY2U/LnJlc2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbmZpZygpOiBHbG9iZUNvbmZpZ0lucHV0IHtcbiAgICByZXR1cm4gcGlja0dsb2JlQ29uZmlnKHRoaXMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmlvanMtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iaW9qcy1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { GlobeComponent } from './globe.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEdsb2JlQ29tcG9uZW50IH0gZnJvbSAnLi9nbG9iZS5jb21wb25lbnQnO1xuZXhwb3J0IHR5cGUge1xuICBBcmNDb25maWcsXG4gIEF0bW9zcGhlcmVDb25maWcsXG4gIEF1dG9Sb3RhdGVDb25maWcsXG4gIENpbmVtYXRpY0NvbmZpZyxcbiAgQ291bnRyaWVzQ29uZmlnLFxuICBDb3VudHJ5RGF0YSxcbiAgQ291bnRyeURhdGFNYXAsXG4gIENvdW50cnlFdmVudCxcbiAgQ291bnRyeUxhYmVsc0NvbmZpZyxcbiAgRG90dGVkQ29uZmlnLFxuICBGcmFtaW5nQ29uZmlnLFxuICBHbG9iZUNvbmZpZyxcbiAgR2xvYmVDb25maWdJbnB1dCxcbiAgR2xvYmVJbnN0YW5jZSxcbiAgR2xvYmVLaW5kLFxuICBHbG9iZU1vZGUsXG4gIEhvbG9ncmFtQ29uZmlnLFxuICBIdG1sTWFya2VyQ29uZmlnLFxuICBMYXRMbmcsXG4gIE1hcmtlckNvbmZpZyxcbiAgTWFya2VyRXZlbnQsXG4gIE91dGxpbmVDb25maWcsXG4gIFBhcGVyQ29uZmlnLFxuICBQZXJmb3JtYW5jZUNvbmZpZyxcbiAgUG9zdFByb2Nlc3NpbmdDb25maWcsXG4gIFJlc29sdXRpb25MZXZlbCxcbiAgU3RhcmZpZWxkQ29uZmlnLFxuICBTdG9yeUNvbXBsZXRlRXZlbnQsXG4gIFN0b3J5U2NlbmVFdmVudCxcbiAgU3VyZmFjZUNsaWNrRXZlbnQsXG4gIFRoZW1lSW5wdXQsXG4gIFdpcmVmcmFtZUNvbmZpZyxcbiAgWm9vbUNvbmZpZyxcbn0gZnJvbSAnQGdsb2Jpb2pzL2NvcmUnO1xuIl19
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, inject, PLATFORM_ID, NgZone, Output, Input, ViewChild, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
4
|
+
import { createGlobe, pickGlobeConfig } from '@globiojs/core';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* `<ng-globe>` — every `GlobeConfig` key is an input, every globe event an
|
|
8
|
+
* output (`error` is exposed as `globeError` so it does not shadow the DOM
|
|
9
|
+
* event), and `getInstance()` returns the engine instance for imperative
|
|
10
|
+
* calls. The globe runs outside Angular's zone; outputs re-enter it.
|
|
11
|
+
*/
|
|
12
|
+
class GlobeComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.countryClick = new EventEmitter();
|
|
15
|
+
this.countryHover = new EventEmitter();
|
|
16
|
+
this.markerClick = new EventEmitter();
|
|
17
|
+
this.markerHover = new EventEmitter();
|
|
18
|
+
this.surfaceClick = new EventEmitter();
|
|
19
|
+
this.sceneEnter = new EventEmitter();
|
|
20
|
+
this.sceneExit = new EventEmitter();
|
|
21
|
+
this.storyComplete = new EventEmitter();
|
|
22
|
+
this.ready = new EventEmitter();
|
|
23
|
+
this.globeError = new EventEmitter();
|
|
24
|
+
this.platformId = inject(PLATFORM_ID);
|
|
25
|
+
this.ngZone = inject(NgZone);
|
|
26
|
+
this.instance = null;
|
|
27
|
+
}
|
|
28
|
+
ngAfterViewInit() {
|
|
29
|
+
if (!isPlatformBrowser(this.platformId))
|
|
30
|
+
return;
|
|
31
|
+
this.ngZone.runOutsideAngular(() => {
|
|
32
|
+
const instance = createGlobe({
|
|
33
|
+
container: this.host.nativeElement,
|
|
34
|
+
...this.buildConfig(),
|
|
35
|
+
});
|
|
36
|
+
instance.on('countryClick', (e) => this.ngZone.run(() => this.countryClick.emit(e)));
|
|
37
|
+
instance.on('countryHover', (e) => this.ngZone.run(() => this.countryHover.emit(e)));
|
|
38
|
+
instance.on('markerClick', (e) => this.ngZone.run(() => this.markerClick.emit(e)));
|
|
39
|
+
instance.on('markerHover', (e) => this.ngZone.run(() => this.markerHover.emit(e)));
|
|
40
|
+
instance.on('surfaceClick', (e) => this.ngZone.run(() => this.surfaceClick.emit(e)));
|
|
41
|
+
instance.on('sceneEnter', (e) => this.ngZone.run(() => this.sceneEnter.emit(e)));
|
|
42
|
+
instance.on('sceneExit', (e) => this.ngZone.run(() => this.sceneExit.emit(e)));
|
|
43
|
+
instance.on('storyComplete', (e) => this.ngZone.run(() => this.storyComplete.emit(e)));
|
|
44
|
+
instance.on('ready', () => this.ngZone.run(() => this.ready.emit()));
|
|
45
|
+
instance.on('error', (err) => this.ngZone.run(() => this.globeError.emit(err)));
|
|
46
|
+
instance.mount();
|
|
47
|
+
this.instance = instance;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
ngOnChanges(changes) {
|
|
51
|
+
if (!this.instance)
|
|
52
|
+
return;
|
|
53
|
+
const hasRelevantChange = Object.keys(changes).some((key) => !changes[key]?.firstChange);
|
|
54
|
+
if (hasRelevantChange) {
|
|
55
|
+
this.ngZone.runOutsideAngular(() => this.instance?.update(this.buildConfig()));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
ngOnDestroy() {
|
|
59
|
+
this.instance?.destroy();
|
|
60
|
+
this.instance = null;
|
|
61
|
+
}
|
|
62
|
+
/** The underlying engine instance, or null before the view is initialised / after destroy. */
|
|
63
|
+
getInstance() {
|
|
64
|
+
return this.instance;
|
|
65
|
+
}
|
|
66
|
+
setRotation(position, animate) {
|
|
67
|
+
this.instance?.setRotation(position, animate);
|
|
68
|
+
}
|
|
69
|
+
addMarker(marker) {
|
|
70
|
+
this.instance?.addMarker(marker);
|
|
71
|
+
}
|
|
72
|
+
removeMarker(id) {
|
|
73
|
+
this.instance?.removeMarker(id);
|
|
74
|
+
}
|
|
75
|
+
resize() {
|
|
76
|
+
this.instance?.resize();
|
|
77
|
+
}
|
|
78
|
+
buildConfig() {
|
|
79
|
+
return pickGlobeConfig(this);
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GlobeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GlobeComponent, isStandalone: true, selector: "ng-globe", inputs: { mode: "mode", kind: "kind", theme: "theme", countries: "countries", countryLabels: "countryLabels", countryData: "countryData", markers: "markers", htmlMarkers: "htmlMarkers", arcs: "arcs", atmosphere: "atmosphere", focusPulse: "focusPulse", outline: "outline", cinematic: "cinematic", dotted: "dotted", wireframe: "wireframe", paper: "paper", hologram: "hologram", starfield: "starfield", postprocessing: "postprocessing", axisTilt: "axisTilt", autoRotate: "autoRotate", performance: "performance", initialPosition: "initialPosition", minZoom: "minZoom", maxZoom: "maxZoom", zoom: "zoom", transparent: "transparent", framing: "framing" }, outputs: { countryClick: "countryClick", countryHover: "countryHover", markerClick: "markerClick", markerHover: "markerHover", surfaceClick: "surfaceClick", sceneEnter: "sceneEnter", sceneExit: "sceneExit", storyComplete: "storyComplete", ready: "ready", globeError: "globeError" }, viewQueries: [{ propertyName: "host", first: true, predicate: ["host"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #host class="globe-host"></div>', isInline: true, styles: [":host{display:block;width:100%;height:100%}.globe-host{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
83
|
+
}
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GlobeComponent, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{ selector: 'ng-globe', standalone: true, template: '<div #host class="globe-host"></div>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;height:100%}.globe-host{width:100%;height:100%}\n"] }]
|
|
87
|
+
}], propDecorators: { host: [{
|
|
88
|
+
type: ViewChild,
|
|
89
|
+
args: ['host', { static: true }]
|
|
90
|
+
}], mode: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], kind: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], theme: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], countries: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], countryLabels: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], countryData: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], markers: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], htmlMarkers: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], arcs: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], atmosphere: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], focusPulse: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], outline: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], cinematic: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], dotted: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], wireframe: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], paper: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], hologram: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], starfield: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], postprocessing: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], axisTilt: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], autoRotate: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], performance: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], initialPosition: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], minZoom: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}], maxZoom: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], zoom: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], transparent: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], framing: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], countryClick: [{
|
|
147
|
+
type: Output
|
|
148
|
+
}], countryHover: [{
|
|
149
|
+
type: Output
|
|
150
|
+
}], markerClick: [{
|
|
151
|
+
type: Output
|
|
152
|
+
}], markerHover: [{
|
|
153
|
+
type: Output
|
|
154
|
+
}], surfaceClick: [{
|
|
155
|
+
type: Output
|
|
156
|
+
}], sceneEnter: [{
|
|
157
|
+
type: Output
|
|
158
|
+
}], sceneExit: [{
|
|
159
|
+
type: Output
|
|
160
|
+
}], storyComplete: [{
|
|
161
|
+
type: Output
|
|
162
|
+
}], ready: [{
|
|
163
|
+
type: Output
|
|
164
|
+
}], globeError: [{
|
|
165
|
+
type: Output
|
|
166
|
+
}] } });
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Generated bundle index. Do not edit.
|
|
170
|
+
*/
|
|
171
|
+
|
|
172
|
+
export { GlobeComponent };
|
|
173
|
+
//# sourceMappingURL=globiojs-angular.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globiojs-angular.mjs","sources":["../../src/globe.component.ts","../../src/globiojs-angular.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n PLATFORM_ID,\n SimpleChanges,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n createGlobe,\n pickGlobeConfig,\n type ArcConfig,\n type AtmosphereConfig,\n type AutoRotateConfig,\n type CinematicConfig,\n type CountriesConfig,\n type CountryDataMap,\n type CountryEvent,\n type CountryLabelsConfig,\n type DottedConfig,\n type FramingConfig,\n type GlobeConfig,\n type GlobeConfigInput,\n type GlobeInstance,\n type GlobeKind,\n type GlobeMode,\n type HologramConfig,\n type HtmlMarkerConfig,\n type LatLng,\n type MarkerConfig,\n type MarkerEvent,\n type OutlineConfig,\n type PaperConfig,\n type PerformanceConfig,\n type PostProcessingConfig,\n type StarfieldConfig,\n type StoryCompleteEvent,\n type StorySceneEvent,\n type SurfaceClickEvent,\n type ThemeInput,\n type WireframeConfig,\n type ZoomConfig,\n} from '@globiojs/core';\n\n/**\n * `<ng-globe>` — every `GlobeConfig` key is an input, every globe event an\n * output (`error` is exposed as `globeError` so it does not shadow the DOM\n * event), and `getInstance()` returns the engine instance for imperative\n * calls. The globe runs outside Angular's zone; outputs re-enter it.\n */\n@Component({\n selector: 'ng-globe',\n standalone: true,\n template: '<div #host class=\"globe-host\"></div>',\n styles: [':host{display:block;width:100%;height:100%}.globe-host{width:100%;height:100%}'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GlobeComponent implements AfterViewInit, OnChanges, OnDestroy {\n @ViewChild('host', { static: true }) private readonly host!: ElementRef<HTMLDivElement>;\n\n @Input() public mode?: GlobeMode;\n @Input() public kind?: GlobeKind;\n @Input() public theme?: ThemeInput;\n @Input() public countries?: CountriesConfig;\n @Input() public countryLabels?: CountryLabelsConfig;\n @Input() public countryData?: CountryDataMap;\n @Input() public markers?: ReadonlyArray<MarkerConfig>;\n @Input() public htmlMarkers?: ReadonlyArray<HtmlMarkerConfig>;\n @Input() public arcs?: ReadonlyArray<ArcConfig>;\n @Input() public atmosphere?: AtmosphereConfig;\n @Input() public focusPulse?: GlobeConfig['focusPulse'];\n @Input() public outline?: OutlineConfig;\n @Input() public cinematic?: CinematicConfig;\n @Input() public dotted?: DottedConfig;\n @Input() public wireframe?: WireframeConfig;\n @Input() public paper?: PaperConfig;\n @Input() public hologram?: HologramConfig;\n @Input() public starfield?: StarfieldConfig;\n @Input() public postprocessing?: PostProcessingConfig;\n @Input() public axisTilt?: number;\n @Input() public autoRotate?: AutoRotateConfig;\n @Input() public performance?: PerformanceConfig;\n @Input() public initialPosition?: LatLng;\n @Input() public minZoom?: number;\n @Input() public maxZoom?: number;\n @Input() public zoom?: ZoomConfig;\n @Input() public transparent?: boolean;\n @Input() public framing?: FramingConfig;\n\n @Output() public readonly countryClick = new EventEmitter<CountryEvent>();\n @Output() public readonly countryHover = new EventEmitter<CountryEvent | null>();\n @Output() public readonly markerClick = new EventEmitter<MarkerEvent>();\n @Output() public readonly markerHover = new EventEmitter<MarkerEvent | null>();\n @Output() public readonly surfaceClick = new EventEmitter<SurfaceClickEvent>();\n @Output() public readonly sceneEnter = new EventEmitter<StorySceneEvent>();\n @Output() public readonly sceneExit = new EventEmitter<StorySceneEvent>();\n @Output() public readonly storyComplete = new EventEmitter<StoryCompleteEvent>();\n @Output() public readonly ready = new EventEmitter<void>();\n @Output() public readonly globeError = new EventEmitter<Error>();\n\n private readonly platformId = inject(PLATFORM_ID);\n private readonly ngZone = inject(NgZone);\n private instance: GlobeInstance | null = null;\n\n public ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.ngZone.runOutsideAngular(() => {\n const instance = createGlobe({\n container: this.host.nativeElement,\n ...this.buildConfig(),\n });\n\n instance.on('countryClick', (e) => this.ngZone.run(() => this.countryClick.emit(e)));\n instance.on('countryHover', (e) => this.ngZone.run(() => this.countryHover.emit(e)));\n instance.on('markerClick', (e) => this.ngZone.run(() => this.markerClick.emit(e)));\n instance.on('markerHover', (e) => this.ngZone.run(() => this.markerHover.emit(e)));\n instance.on('surfaceClick', (e) => this.ngZone.run(() => this.surfaceClick.emit(e)));\n instance.on('sceneEnter', (e) => this.ngZone.run(() => this.sceneEnter.emit(e)));\n instance.on('sceneExit', (e) => this.ngZone.run(() => this.sceneExit.emit(e)));\n instance.on('storyComplete', (e) => this.ngZone.run(() => this.storyComplete.emit(e)));\n instance.on('ready', () => this.ngZone.run(() => this.ready.emit()));\n instance.on('error', (err) => this.ngZone.run(() => this.globeError.emit(err)));\n\n instance.mount();\n this.instance = instance;\n });\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (!this.instance) return;\n const hasRelevantChange = Object.keys(changes).some((key) => !changes[key]?.firstChange);\n if (hasRelevantChange) {\n this.ngZone.runOutsideAngular(() => this.instance?.update(this.buildConfig()));\n }\n }\n\n public ngOnDestroy(): void {\n this.instance?.destroy();\n this.instance = null;\n }\n\n /** The underlying engine instance, or null before the view is initialised / after destroy. */\n public getInstance(): GlobeInstance | null {\n return this.instance;\n }\n\n public setRotation(position: LatLng, animate?: boolean): void {\n this.instance?.setRotation(position, animate);\n }\n\n public addMarker(marker: MarkerConfig): void {\n this.instance?.addMarker(marker);\n }\n\n public removeMarker(id: string): void {\n this.instance?.removeMarker(id);\n }\n\n public resize(): void {\n this.instance?.resize();\n }\n\n private buildConfig(): GlobeConfigInput {\n return pickGlobeConfig(this as unknown as Record<string, unknown>);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAqDA;;;;;AAKG;MAQU,cAAc,CAAA;AAP3B,IAAA,WAAA,GAAA;AAuC4B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAgB;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAuB;AACtD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAe;AAC7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAsB;AACpD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAqB;AACpD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAmB;AAChD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAmB;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAsB;AACtD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAS;AAE/C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,IAAA,CAAA,QAAQ,GAAyB,IAAI;AAgE9C,IAAA;IA9DQ,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AAEzC,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,MAAM,QAAQ,GAAG,WAAW,CAAC;AAC3B,gBAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;gBAClC,GAAG,IAAI,CAAC,WAAW,EAAE;AACtB,aAAA,CAAC;AAEF,YAAA,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,YAAA,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,YAAA,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,YAAA,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,YAAA,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,YAAA,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,YAAA,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,YAAA,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACpE,YAAA,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAE/E,QAAQ,CAAC,KAAK,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC1B,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QACpB,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;QACxF,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAChF;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;;IAGO,WAAW,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEO,WAAW,CAAC,QAAgB,EAAE,OAAiB,EAAA;QACpD,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC/C;AAEO,IAAA,SAAS,CAAC,MAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC;IAClC;AAEO,IAAA,YAAY,CAAC,EAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;IACjC;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;IACzB;IAEQ,WAAW,GAAA;AACjB,QAAA,OAAO,eAAe,CAAC,IAA0C,CAAC;IACpE;+GA5GW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,0mCAJf,sCAAsC,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIrC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,QAAA,EACN,sCAAsC,EAAA,eAAA,EAE/B,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA;8BAGO,IAAI,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAEnB,IAAI,EAAA,CAAA;sBAAnB;gBACe,IAAI,EAAA,CAAA;sBAAnB;gBACe,KAAK,EAAA,CAAA;sBAApB;gBACe,SAAS,EAAA,CAAA;sBAAxB;gBACe,aAAa,EAAA,CAAA;sBAA5B;gBACe,WAAW,EAAA,CAAA;sBAA1B;gBACe,OAAO,EAAA,CAAA;sBAAtB;gBACe,WAAW,EAAA,CAAA;sBAA1B;gBACe,IAAI,EAAA,CAAA;sBAAnB;gBACe,UAAU,EAAA,CAAA;sBAAzB;gBACe,UAAU,EAAA,CAAA;sBAAzB;gBACe,OAAO,EAAA,CAAA;sBAAtB;gBACe,SAAS,EAAA,CAAA;sBAAxB;gBACe,MAAM,EAAA,CAAA;sBAArB;gBACe,SAAS,EAAA,CAAA;sBAAxB;gBACe,KAAK,EAAA,CAAA;sBAApB;gBACe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,SAAS,EAAA,CAAA;sBAAxB;gBACe,cAAc,EAAA,CAAA;sBAA7B;gBACe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,UAAU,EAAA,CAAA;sBAAzB;gBACe,WAAW,EAAA,CAAA;sBAA1B;gBACe,eAAe,EAAA,CAAA;sBAA9B;gBACe,OAAO,EAAA,CAAA;sBAAtB;gBACe,OAAO,EAAA,CAAA;sBAAtB;gBACe,IAAI,EAAA,CAAA;sBAAnB;gBACe,WAAW,EAAA,CAAA;sBAA1B;gBACe,OAAO,EAAA,CAAA;sBAAtB;gBAEyB,YAAY,EAAA,CAAA;sBAArC;gBACyB,YAAY,EAAA,CAAA;sBAArC;gBACyB,WAAW,EAAA,CAAA;sBAApC;gBACyB,WAAW,EAAA,CAAA;sBAApC;gBACyB,YAAY,EAAA,CAAA;sBAArC;gBACyB,UAAU,EAAA,CAAA;sBAAnC;gBACyB,SAAS,EAAA,CAAA;sBAAlC;gBACyB,aAAa,EAAA,CAAA;sBAAtC;gBACyB,KAAK,EAAA,CAAA;sBAA9B;gBACyB,UAAU,EAAA,CAAA;sBAAnC;;;AC3GH;;AAEG;;"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { AfterViewInit, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { type ArcConfig, type AtmosphereConfig, type AutoRotateConfig, type CinematicConfig, type CountriesConfig, type CountryDataMap, type CountryEvent, type CountryLabelsConfig, type DottedConfig, type FramingConfig, type GlobeConfig, type GlobeInstance, type GlobeKind, type GlobeMode, type HologramConfig, type HtmlMarkerConfig, type LatLng, type MarkerConfig, type MarkerEvent, type OutlineConfig, type PaperConfig, type PerformanceConfig, type PostProcessingConfig, type StarfieldConfig, type StoryCompleteEvent, type StorySceneEvent, type SurfaceClickEvent, type ThemeInput, type WireframeConfig, type ZoomConfig } from '@globiojs/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* `<ng-globe>` — every `GlobeConfig` key is an input, every globe event an
|
|
6
|
+
* output (`error` is exposed as `globeError` so it does not shadow the DOM
|
|
7
|
+
* event), and `getInstance()` returns the engine instance for imperative
|
|
8
|
+
* calls. The globe runs outside Angular's zone; outputs re-enter it.
|
|
9
|
+
*/
|
|
10
|
+
export declare class GlobeComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
11
|
+
private readonly host;
|
|
12
|
+
mode?: GlobeMode;
|
|
13
|
+
kind?: GlobeKind;
|
|
14
|
+
theme?: ThemeInput;
|
|
15
|
+
countries?: CountriesConfig;
|
|
16
|
+
countryLabels?: CountryLabelsConfig;
|
|
17
|
+
countryData?: CountryDataMap;
|
|
18
|
+
markers?: ReadonlyArray<MarkerConfig>;
|
|
19
|
+
htmlMarkers?: ReadonlyArray<HtmlMarkerConfig>;
|
|
20
|
+
arcs?: ReadonlyArray<ArcConfig>;
|
|
21
|
+
atmosphere?: AtmosphereConfig;
|
|
22
|
+
focusPulse?: GlobeConfig['focusPulse'];
|
|
23
|
+
outline?: OutlineConfig;
|
|
24
|
+
cinematic?: CinematicConfig;
|
|
25
|
+
dotted?: DottedConfig;
|
|
26
|
+
wireframe?: WireframeConfig;
|
|
27
|
+
paper?: PaperConfig;
|
|
28
|
+
hologram?: HologramConfig;
|
|
29
|
+
starfield?: StarfieldConfig;
|
|
30
|
+
postprocessing?: PostProcessingConfig;
|
|
31
|
+
axisTilt?: number;
|
|
32
|
+
autoRotate?: AutoRotateConfig;
|
|
33
|
+
performance?: PerformanceConfig;
|
|
34
|
+
initialPosition?: LatLng;
|
|
35
|
+
minZoom?: number;
|
|
36
|
+
maxZoom?: number;
|
|
37
|
+
zoom?: ZoomConfig;
|
|
38
|
+
transparent?: boolean;
|
|
39
|
+
framing?: FramingConfig;
|
|
40
|
+
readonly countryClick: EventEmitter<CountryEvent>;
|
|
41
|
+
readonly countryHover: EventEmitter<CountryEvent | null>;
|
|
42
|
+
readonly markerClick: EventEmitter<MarkerEvent>;
|
|
43
|
+
readonly markerHover: EventEmitter<MarkerEvent | null>;
|
|
44
|
+
readonly surfaceClick: EventEmitter<SurfaceClickEvent>;
|
|
45
|
+
readonly sceneEnter: EventEmitter<StorySceneEvent>;
|
|
46
|
+
readonly sceneExit: EventEmitter<StorySceneEvent>;
|
|
47
|
+
readonly storyComplete: EventEmitter<StoryCompleteEvent>;
|
|
48
|
+
readonly ready: EventEmitter<void>;
|
|
49
|
+
readonly globeError: EventEmitter<Error>;
|
|
50
|
+
private readonly platformId;
|
|
51
|
+
private readonly ngZone;
|
|
52
|
+
private instance;
|
|
53
|
+
ngAfterViewInit(): void;
|
|
54
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
55
|
+
ngOnDestroy(): void;
|
|
56
|
+
/** The underlying engine instance, or null before the view is initialised / after destroy. */
|
|
57
|
+
getInstance(): GlobeInstance | null;
|
|
58
|
+
setRotation(position: LatLng, animate?: boolean): void;
|
|
59
|
+
addMarker(marker: MarkerConfig): void;
|
|
60
|
+
removeMarker(id: string): void;
|
|
61
|
+
resize(): void;
|
|
62
|
+
private buildConfig;
|
|
63
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GlobeComponent, never>;
|
|
64
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<GlobeComponent, "ng-globe", never, { "mode": { "alias": "mode"; "required": false; }; "kind": { "alias": "kind"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "countries": { "alias": "countries"; "required": false; }; "countryLabels": { "alias": "countryLabels"; "required": false; }; "countryData": { "alias": "countryData"; "required": false; }; "markers": { "alias": "markers"; "required": false; }; "htmlMarkers": { "alias": "htmlMarkers"; "required": false; }; "arcs": { "alias": "arcs"; "required": false; }; "atmosphere": { "alias": "atmosphere"; "required": false; }; "focusPulse": { "alias": "focusPulse"; "required": false; }; "outline": { "alias": "outline"; "required": false; }; "cinematic": { "alias": "cinematic"; "required": false; }; "dotted": { "alias": "dotted"; "required": false; }; "wireframe": { "alias": "wireframe"; "required": false; }; "paper": { "alias": "paper"; "required": false; }; "hologram": { "alias": "hologram"; "required": false; }; "starfield": { "alias": "starfield"; "required": false; }; "postprocessing": { "alias": "postprocessing"; "required": false; }; "axisTilt": { "alias": "axisTilt"; "required": false; }; "autoRotate": { "alias": "autoRotate"; "required": false; }; "performance": { "alias": "performance"; "required": false; }; "initialPosition": { "alias": "initialPosition"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; "framing": { "alias": "framing"; "required": false; }; }, { "countryClick": "countryClick"; "countryHover": "countryHover"; "markerClick": "markerClick"; "markerHover": "markerHover"; "surfaceClick": "surfaceClick"; "sceneEnter": "sceneEnter"; "sceneExit": "sceneExit"; "storyComplete": "storyComplete"; "ready": "ready"; "globeError": "globeError"; }, never, never, true, never>;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=globe.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globe.component.d.ts","sourceRoot":"","sources":["../src/globe.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAIb,YAAY,EAGZ,SAAS,EACT,SAAS,EAGT,aAAa,EAGd,MAAM,eAAe,CAAC;AAEvB,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;;AAExB;;;;;GAKG;AACH,qBAOa,cAAe,YAAW,aAAa,EAAE,SAAS,EAAE,SAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;IAExE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IAExC,SAA0B,YAAY,6BAAoC;IAC1E,SAA0B,YAAY,oCAA2C;IACjF,SAA0B,WAAW,4BAAmC;IACxE,SAA0B,WAAW,mCAA0C;IAC/E,SAA0B,YAAY,kCAAyC;IAC/E,SAA0B,UAAU,gCAAuC;IAC3E,SAA0B,SAAS,gCAAuC;IAC1E,SAA0B,aAAa,mCAA0C;IACjF,SAA0B,KAAK,qBAA4B;IAC3D,SAA0B,UAAU,sBAA6B;IAEjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAA8B;IAEvC,eAAe,IAAI,IAAI;IAyBvB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQzC,WAAW,IAAI,IAAI;IAK1B,8FAA8F;IACvF,WAAW,IAAI,aAAa,GAAG,IAAI;IAInC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAItD,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIrC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,MAAM,IAAI,IAAI;IAIrB,OAAO,CAAC,WAAW;yCA1GR,cAAc;2CAAd,cAAc;CA6G1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globiojs-angular.d.ts","sourceRoot":"","sources":["../src/globiojs-angular.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,cAAc,CAAC"}
|
package/index.d.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@globiojs/angular",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Angular standalone component for the GlobioJS 3D globe engine",
|
|
5
|
+
"author": "Wiktor Wróbel",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"3d",
|
|
9
|
+
"angular",
|
|
10
|
+
"data-visualization",
|
|
11
|
+
"globe",
|
|
12
|
+
"three.js",
|
|
13
|
+
"webgl"
|
|
14
|
+
],
|
|
15
|
+
"homepage": "https://github.com/SparrowVic/globiojs#readme",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/SparrowVic/globiojs/issues"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/SparrowVic/globiojs.git",
|
|
22
|
+
"directory": "packages/angular"
|
|
23
|
+
},
|
|
24
|
+
"type": "module",
|
|
25
|
+
"sideEffects": false,
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"@angular/common": ">=17.0.0 <23.0.0",
|
|
28
|
+
"@angular/core": ">=17.0.0 <23.0.0",
|
|
29
|
+
"@globiojs/core": "^0.1.0"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"tslib": "^2.6.2"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"module": "fesm2022/globiojs-angular.mjs",
|
|
38
|
+
"typings": "index.d.ts",
|
|
39
|
+
"exports": {
|
|
40
|
+
"./package.json": {
|
|
41
|
+
"default": "./package.json"
|
|
42
|
+
},
|
|
43
|
+
".": {
|
|
44
|
+
"types": "./index.d.ts",
|
|
45
|
+
"esm2022": "./esm2022/globiojs-angular.mjs",
|
|
46
|
+
"esm": "./esm2022/globiojs-angular.mjs",
|
|
47
|
+
"default": "./fesm2022/globiojs-angular.mjs"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { GlobeComponent } from './globe.component';
|
|
2
|
+
export type { ArcConfig, AtmosphereConfig, AutoRotateConfig, CinematicConfig, CountriesConfig, CountryData, CountryDataMap, CountryEvent, CountryLabelsConfig, DottedConfig, FramingConfig, GlobeConfig, GlobeConfigInput, GlobeInstance, GlobeKind, GlobeMode, HologramConfig, HtmlMarkerConfig, LatLng, MarkerConfig, MarkerEvent, OutlineConfig, PaperConfig, PerformanceConfig, PostProcessingConfig, ResolutionLevel, StarfieldConfig, StoryCompleteEvent, StorySceneEvent, SurfaceClickEvent, ThemeInput, WireframeConfig, ZoomConfig, } from '@globiojs/core';
|
|
3
|
+
//# sourceMappingURL=public-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,gBAAgB,CAAC"}
|