@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
- package/esm2020/lib/components/loader/loader.component.mjs +23 -23
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
- package/esm2020/lib/config.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +470 -470
- package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
- package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
- package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
- package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
- package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
- package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
- package/esm2020/lib/mattertagData.mjs +165 -165
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
- package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
- package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
- package/esm2020/lib/services/base-tab.service.mjs +24 -24
- package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
- package/esm2020/lib/services/content.service.mjs +135 -135
- package/esm2020/lib/services/filter.service.mjs +599 -599
- package/esm2020/lib/services/intervention.service.mjs +236 -236
- package/esm2020/lib/services/locale.service.mjs +45 -45
- package/esm2020/lib/services/matterport-import.service.mjs +340 -340
- package/esm2020/lib/services/matterport.service.mjs +1587 -1587
- package/esm2020/lib/services/models/affectation.service.mjs +60 -60
- package/esm2020/lib/services/models/base-object.service.mjs +70 -70
- package/esm2020/lib/services/models/capture.service.mjs +34 -34
- package/esm2020/lib/services/models/comment.service.mjs +98 -98
- package/esm2020/lib/services/models/domain.service.mjs +78 -78
- package/esm2020/lib/services/models/equipment.service.mjs +683 -683
- package/esm2020/lib/services/models/event.service.mjs +128 -128
- package/esm2020/lib/services/models/feature.service.mjs +380 -380
- package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
- package/esm2020/lib/services/models/layer.service.mjs +33 -33
- package/esm2020/lib/services/models/measurement.service.mjs +199 -199
- package/esm2020/lib/services/models/mission.service.mjs +206 -206
- package/esm2020/lib/services/models/navigation.service.mjs +92 -92
- package/esm2020/lib/services/models/node.service.mjs +31 -31
- package/esm2020/lib/services/models/object3D.service.mjs +364 -364
- package/esm2020/lib/services/models/operation.service.mjs +59 -59
- package/esm2020/lib/services/models/organisation.service.mjs +73 -73
- package/esm2020/lib/services/models/plan.service.mjs +799 -799
- package/esm2020/lib/services/models/poi.service.mjs +103 -103
- package/esm2020/lib/services/models/profile.service.mjs +58 -58
- package/esm2020/lib/services/models/property.service.mjs +44 -44
- package/esm2020/lib/services/models/space.service.mjs +204 -204
- package/esm2020/lib/services/models/template.service.mjs +41 -41
- package/esm2020/lib/services/models/ticket.service.mjs +526 -526
- package/esm2020/lib/services/models/visit.service.mjs +130 -130
- package/esm2020/lib/services/models/zone.service.mjs +225 -225
- package/esm2020/lib/services/navigator.service.mjs +212 -212
- package/esm2020/lib/services/s3.service.mjs +137 -137
- package/esm2020/lib/services/search.service.mjs +124 -124
- package/esm2020/lib/services/support.service.mjs +42 -42
- package/esm2020/lib/services/tag.service.mjs +111 -111
- package/esm2020/lib/services/user.service.mjs +501 -501
- package/esm2020/lib/services/validators.service.mjs +50 -50
- package/esm2020/lib/services/viewer.service.mjs +389 -389
- package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
- package/esm2020/lib/services/zoneChange.service.mjs +30 -30
- package/esm2020/lib/types.service.mjs +311 -311
- package/esm2020/lib/validators/email.directive.mjs +7 -7
- package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
- package/esm2020/lib/validators/number.directive.mjs +12 -12
- package/esm2020/lib/validators/text.directive.mjs +12 -12
- package/esm2020/public-api.mjs +72 -72
- package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13009 -13009
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12258 -12258
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/csv-export/csv-export.component.d.ts +18 -18
- package/lib/components/loader/loader.component.d.ts +10 -10
- package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
- package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
- package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
- package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
- package/lib/components/search-bar/search-bar.component.d.ts +16 -16
- package/lib/components/support-modal/support-modal.component.d.ts +26 -26
- package/lib/config.d.ts +22 -22
- package/lib/helpers.service.d.ts +79 -79
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
- package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
- package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
- package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
- package/lib/mattertagData.d.ts +70 -70
- package/lib/ngx-smarterplan-core.module.d.ts +29 -29
- package/lib/ngx-smarterplan-core.service.d.ts +6 -6
- package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
- package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
- package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
- package/lib/pipes/safe-url.pipe.d.ts +10 -10
- package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
- package/lib/pipes/username-from-id.pipe.d.ts +11 -11
- package/lib/services/amplify-cache.service.d.ts +37 -37
- package/lib/services/base-tab.service.d.ts +10 -10
- package/lib/services/baseVisibility.service.d.ts +9 -9
- package/lib/services/content.service.d.ts +28 -28
- package/lib/services/filter.service.d.ts +60 -60
- package/lib/services/intervention.service.d.ts +25 -25
- package/lib/services/locale.service.d.ts +23 -23
- package/lib/services/matterport-import.service.d.ts +53 -53
- package/lib/services/matterport.service.d.ts +336 -336
- package/lib/services/models/affectation.service.d.ts +14 -14
- package/lib/services/models/base-object.service.d.ts +20 -20
- package/lib/services/models/capture.service.d.ts +13 -13
- package/lib/services/models/comment.service.d.ts +26 -26
- package/lib/services/models/domain.service.d.ts +19 -19
- package/lib/services/models/equipment.service.d.ts +93 -93
- package/lib/services/models/event.service.d.ts +43 -43
- package/lib/services/models/feature.service.d.ts +75 -75
- package/lib/services/models/hashtag.service.d.ts +13 -13
- package/lib/services/models/layer.service.d.ts +11 -11
- package/lib/services/models/measurement.service.d.ts +51 -51
- package/lib/services/models/mission.service.d.ts +39 -39
- package/lib/services/models/navigation.service.d.ts +29 -29
- package/lib/services/models/node.service.d.ts +12 -12
- package/lib/services/models/object3D.service.d.ts +57 -57
- package/lib/services/models/operation.service.d.ts +15 -15
- package/lib/services/models/organisation.service.d.ts +19 -19
- package/lib/services/models/plan.service.d.ts +133 -133
- package/lib/services/models/poi.service.d.ts +25 -25
- package/lib/services/models/profile.service.d.ts +16 -16
- package/lib/services/models/property.service.d.ts +13 -13
- package/lib/services/models/space.service.d.ts +46 -46
- package/lib/services/models/template.service.d.ts +15 -15
- package/lib/services/models/ticket.service.d.ts +93 -93
- package/lib/services/models/visit.service.d.ts +24 -24
- package/lib/services/models/zone.service.d.ts +50 -50
- package/lib/services/navigator.service.d.ts +61 -61
- package/lib/services/s3.service.d.ts +14 -14
- package/lib/services/search.service.d.ts +20 -20
- package/lib/services/support.service.d.ts +17 -17
- package/lib/services/tag.service.d.ts +29 -29
- package/lib/services/user.service.d.ts +118 -118
- package/lib/services/validators.service.d.ts +18 -18
- package/lib/services/viewer.service.d.ts +110 -110
- package/lib/services/zone-drawer.service.d.ts +7 -7
- package/lib/services/zoneChange.service.d.ts +17 -17
- package/lib/types.service.d.ts +842 -842
- package/lib/validators/email.directive.d.ts +2 -2
- package/lib/validators/no-empty.directive.d.ts +2 -2
- package/lib/validators/number.directive.d.ts +2 -2
- package/lib/validators/text.directive.d.ts +2 -2
- package/package.json +1 -1
- package/public-api.d.ts +64 -64
- package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
import { SceneComponent } from './../scene-component/SceneComponent';
|
|
2
|
-
// @ts-ignore
|
|
3
|
-
import Hls from 'hls.js';
|
|
4
|
-
export class HlsLoader extends SceneComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(...arguments);
|
|
7
|
-
this.video = null;
|
|
8
|
-
this.texture = null;
|
|
9
|
-
this.hls = null;
|
|
10
|
-
this.inputs = {
|
|
11
|
-
src: './../assets/video/121222-04.mp4',
|
|
12
|
-
enabled: true,
|
|
13
|
-
};
|
|
14
|
-
this.outputs = {
|
|
15
|
-
video: null,
|
|
16
|
-
aspect: 1,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
onInit(videoTexture) {
|
|
20
|
-
this.outputs.video = videoTexture;
|
|
21
|
-
this.outputs.aspect = 720 / 480;
|
|
22
|
-
if (this.inputs.enabled) {
|
|
23
|
-
this.setupStream();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
onInputsUpdated() {
|
|
27
|
-
this.setupStream();
|
|
28
|
-
}
|
|
29
|
-
onDestroy() {
|
|
30
|
-
this.releaseResources();
|
|
31
|
-
}
|
|
32
|
-
createVideoElement() {
|
|
33
|
-
const video = document.createElement('video');
|
|
34
|
-
video.crossOrigin = 'anonymous';
|
|
35
|
-
video.setAttribute('height', '480');
|
|
36
|
-
video.setAttribute('width', '720');
|
|
37
|
-
video.setAttribute('muted', 'muted');
|
|
38
|
-
video.volume = 0.1;
|
|
39
|
-
return video;
|
|
40
|
-
}
|
|
41
|
-
setupStream() {
|
|
42
|
-
this.releaseResources();
|
|
43
|
-
if (this.inputs.enabled) {
|
|
44
|
-
this.video = this.createVideoElement();
|
|
45
|
-
this.hls = new Hls();
|
|
46
|
-
this.hls.loadSource(this.inputs.src);
|
|
47
|
-
this.hls.attachMedia(this.video);
|
|
48
|
-
this.hls.on(Hls.Events.MANIFEST_PARSED, () => {
|
|
49
|
-
this.outputs.video = this.video;
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
releaseResources() {
|
|
54
|
-
if (this.hls) {
|
|
55
|
-
this.hls.destroy();
|
|
56
|
-
this.hls = null;
|
|
57
|
-
}
|
|
58
|
-
if (this.texture) {
|
|
59
|
-
this.texture.dispose();
|
|
60
|
-
this.texture = null;
|
|
61
|
-
this.outputs.video = null;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
export const hlsLoaderType = 'mp.hlsLoader';
|
|
66
|
-
export function makeHlsLoader() {
|
|
67
|
-
return new HlsLoader();
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { SceneComponent } from './../scene-component/SceneComponent';
|
|
2
|
+
// @ts-ignore
|
|
3
|
+
import Hls from 'hls.js';
|
|
4
|
+
export class HlsLoader extends SceneComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.video = null;
|
|
8
|
+
this.texture = null;
|
|
9
|
+
this.hls = null;
|
|
10
|
+
this.inputs = {
|
|
11
|
+
src: './../assets/video/121222-04.mp4',
|
|
12
|
+
enabled: true,
|
|
13
|
+
};
|
|
14
|
+
this.outputs = {
|
|
15
|
+
video: null,
|
|
16
|
+
aspect: 1,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
onInit(videoTexture) {
|
|
20
|
+
this.outputs.video = videoTexture;
|
|
21
|
+
this.outputs.aspect = 720 / 480;
|
|
22
|
+
if (this.inputs.enabled) {
|
|
23
|
+
this.setupStream();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
onInputsUpdated() {
|
|
27
|
+
this.setupStream();
|
|
28
|
+
}
|
|
29
|
+
onDestroy() {
|
|
30
|
+
this.releaseResources();
|
|
31
|
+
}
|
|
32
|
+
createVideoElement() {
|
|
33
|
+
const video = document.createElement('video');
|
|
34
|
+
video.crossOrigin = 'anonymous';
|
|
35
|
+
video.setAttribute('height', '480');
|
|
36
|
+
video.setAttribute('width', '720');
|
|
37
|
+
video.setAttribute('muted', 'muted');
|
|
38
|
+
video.volume = 0.1;
|
|
39
|
+
return video;
|
|
40
|
+
}
|
|
41
|
+
setupStream() {
|
|
42
|
+
this.releaseResources();
|
|
43
|
+
if (this.inputs.enabled) {
|
|
44
|
+
this.video = this.createVideoElement();
|
|
45
|
+
this.hls = new Hls();
|
|
46
|
+
this.hls.loadSource(this.inputs.src);
|
|
47
|
+
this.hls.attachMedia(this.video);
|
|
48
|
+
this.hls.on(Hls.Events.MANIFEST_PARSED, () => {
|
|
49
|
+
this.outputs.video = this.video;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
releaseResources() {
|
|
54
|
+
if (this.hls) {
|
|
55
|
+
this.hls.destroy();
|
|
56
|
+
this.hls = null;
|
|
57
|
+
}
|
|
58
|
+
if (this.texture) {
|
|
59
|
+
this.texture.dispose();
|
|
60
|
+
this.texture = null;
|
|
61
|
+
this.outputs.video = null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export const hlsLoaderType = 'mp.hlsLoader';
|
|
66
|
+
export function makeHlsLoader() {
|
|
67
|
+
return new HlsLoader();
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGxzTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvaHNsLWxvYWRlci9IbHNMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RixhQUFhO0FBQ2IsT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDO0FBWXpCLE1BQU0sT0FBTyxTQUFVLFNBQVEsY0FBYztJQUE3Qzs7UUFDVSxVQUFLLEdBQTRCLElBQUksQ0FBQztRQUN0QyxZQUFPLEdBQXdCLElBQUksQ0FBQztRQUNwQyxRQUFHLEdBQWUsSUFBSSxDQUFDO1FBRXRCLFdBQU0sR0FBVztZQUN4QixHQUFHLEVBQUUsaUNBQWlDO1lBQ3RDLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQTtRQUVRLFlBQU8sR0FBRztZQUNqQixLQUFLLEVBQUUsSUFBSTtZQUNYLE1BQU0sRUFBRSxDQUFDO1NBQ0MsQ0FBQztJQXVEZixDQUFDO0lBckRVLE1BQU0sQ0FBQyxZQUEyQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFDLEdBQUcsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFUSxlQUFlO1FBRXRCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRVEsU0FBUztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDaEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUM1QyxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQgfSBmcm9tICcuLy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZGVvVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcclxuLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgSGxzIGZyb20gJ2hscy5qcyc7XHJcblxyXG50eXBlIElucHV0cyA9IHtcclxuICBzcmM6IHN0cmluZztcclxuICBlbmFibGVkOiBib29sZWFuO1xyXG59O1xyXG5cclxudHlwZSBPdXRwdXRzID0ge1xyXG4gIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50IHwgbnVsbDtcclxuICBhc3BlY3Q6IG51bWJlcjtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcbmV4cG9ydCBjbGFzcyBIbHNMb2FkZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgdGV4dHVyZTogVmlkZW9UZXh0dXJlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBobHM6IEhscyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIHNyYzogJy4vLi4vYXNzZXRzL3ZpZGVvLzEyMTIyMi0wNC5tcDQnLFxyXG4gICAgZW5hYmxlZDogdHJ1ZSxcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XHJcbiAgICB2aWRlbzogbnVsbCxcclxuICAgIGFzcGVjdDogMSxcclxuICB9IGFzIE91dHB1dHM7XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5pdCh2aWRlb1RleHR1cmU/OiBWaWRlb1RleHR1cmUpIHtcclxuICAgIHRoaXMub3V0cHV0cy52aWRlbyA9IHZpZGVvVGV4dHVyZTtcclxuICAgIHRoaXMub3V0cHV0cy5hc3BlY3QgPSA3MjAvNDgwO1xyXG4gICAgaWYgKHRoaXMuaW5wdXRzLmVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5zZXR1cFN0cmVhbSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xyXG5cclxuICAgIHRoaXMuc2V0dXBTdHJlYW0oKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcclxuICAgIHRoaXMucmVsZWFzZVJlc291cmNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVWaWRlb0VsZW1lbnQoKSB7XHJcbiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XHJcbiAgICB2aWRlby5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgdmlkZW8uc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAnNDgwJyk7XHJcbiAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzcyMCcpO1xyXG4gICAgdmlkZW8uc2V0QXR0cmlidXRlKCdtdXRlZCcsICdtdXRlZCcpO1xyXG4gICAgdmlkZW8udm9sdW1lID0gMC4xO1xyXG4gICAgcmV0dXJuIHZpZGVvO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFN0cmVhbSgpIHtcclxuICAgIHRoaXMucmVsZWFzZVJlc291cmNlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0cy5lbmFibGVkKSB7XHJcbiAgICAgIHRoaXMudmlkZW8gPSB0aGlzLmNyZWF0ZVZpZGVvRWxlbWVudCgpO1xyXG4gICAgICB0aGlzLmhscyA9IG5ldyBIbHMoKTtcclxuICAgICAgdGhpcy5obHMubG9hZFNvdXJjZSh0aGlzLmlucHV0cy5zcmMpO1xyXG4gICAgICB0aGlzLmhscy5hdHRhY2hNZWRpYSh0aGlzLnZpZGVvKTtcclxuICAgICAgdGhpcy5obHMub24oSGxzLkV2ZW50cy5NQU5JRkVTVF9QQVJTRUQsICgpID0+IHtcclxuICAgICAgICB0aGlzLm91dHB1dHMudmlkZW8gPSB0aGlzLnZpZGVvO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVsZWFzZVJlc291cmNlcygpIHtcclxuICAgIGlmICh0aGlzLmhscykge1xyXG4gICAgICB0aGlzLmhscy5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuaGxzID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50ZXh0dXJlKSB7XHJcbiAgICAgIHRoaXMudGV4dHVyZS5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMudGV4dHVyZSA9IG51bGw7XHJcbiAgICAgIHRoaXMub3V0cHV0cy52aWRlbyA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaGxzTG9hZGVyVHlwZSA9ICdtcC5obHNMb2FkZXInO1xyXG5leHBvcnQgZnVuY3Rpb24gbWFrZUhsc0xvYWRlcigpIHtcclxuICByZXR1cm4gbmV3IEhsc0xvYWRlcigpO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import { SceneComponent } from './../scene-component/SceneComponent';
|
|
2
|
-
export class CanvasImage extends SceneComponent {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(...arguments);
|
|
5
|
-
this.image = null;
|
|
6
|
-
this.inputs = {
|
|
7
|
-
src: null,
|
|
8
|
-
srcPosition: { x: 0, y: 0 },
|
|
9
|
-
srcSize: { w: 64, h: 64 },
|
|
10
|
-
destPosition: { x: 0, y: 0 },
|
|
11
|
-
destSize: { w: 64, h: 64 },
|
|
12
|
-
};
|
|
13
|
-
this.outputs = {
|
|
14
|
-
painter: null,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
onInit() {
|
|
18
|
-
this.outputs.painter = this;
|
|
19
|
-
this.maybeLoadImage();
|
|
20
|
-
}
|
|
21
|
-
onInputsUpdated() {
|
|
22
|
-
this.maybeLoadImage();
|
|
23
|
-
}
|
|
24
|
-
paint(context2d, size) {
|
|
25
|
-
if (!this.image) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
context2d.clearRect(0, 0, this.inputs.destSize.w, this.inputs.destSize.h);
|
|
29
|
-
if (this.image.width > 0) {
|
|
30
|
-
context2d.drawImage(this.image, this.inputs.srcPosition.x, this.inputs.srcPosition.y, this.inputs.srcSize.w, this.inputs.srcSize.h, this.inputs.destPosition.x, this.inputs.destPosition.y, this.inputs.destSize.w, this.inputs.destSize.h);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
maybeLoadImage() {
|
|
34
|
-
this.image = null;
|
|
35
|
-
if (this.inputs.src !== null && this.inputs.src !== '') {
|
|
36
|
-
const that = this;
|
|
37
|
-
this.image = new Image();
|
|
38
|
-
this.image.crossOrigin = 'anonymous';
|
|
39
|
-
this.image.src = this.inputs.src;
|
|
40
|
-
this.image.onload = function (event) {
|
|
41
|
-
// that.notify('paint.ready');
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
// this.notify('paint.ready');
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export const canvasImageType = 'mp.canvasImage';
|
|
48
|
-
export function makeCanvasImage() {
|
|
49
|
-
return new CanvasImage();
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { SceneComponent } from './../scene-component/SceneComponent';
|
|
2
|
+
export class CanvasImage extends SceneComponent {
|
|
3
|
+
constructor() {
|
|
4
|
+
super(...arguments);
|
|
5
|
+
this.image = null;
|
|
6
|
+
this.inputs = {
|
|
7
|
+
src: null,
|
|
8
|
+
srcPosition: { x: 0, y: 0 },
|
|
9
|
+
srcSize: { w: 64, h: 64 },
|
|
10
|
+
destPosition: { x: 0, y: 0 },
|
|
11
|
+
destSize: { w: 64, h: 64 },
|
|
12
|
+
};
|
|
13
|
+
this.outputs = {
|
|
14
|
+
painter: null,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
onInit() {
|
|
18
|
+
this.outputs.painter = this;
|
|
19
|
+
this.maybeLoadImage();
|
|
20
|
+
}
|
|
21
|
+
onInputsUpdated() {
|
|
22
|
+
this.maybeLoadImage();
|
|
23
|
+
}
|
|
24
|
+
paint(context2d, size) {
|
|
25
|
+
if (!this.image) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
context2d.clearRect(0, 0, this.inputs.destSize.w, this.inputs.destSize.h);
|
|
29
|
+
if (this.image.width > 0) {
|
|
30
|
+
context2d.drawImage(this.image, this.inputs.srcPosition.x, this.inputs.srcPosition.y, this.inputs.srcSize.w, this.inputs.srcSize.h, this.inputs.destPosition.x, this.inputs.destPosition.y, this.inputs.destSize.w, this.inputs.destSize.h);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
maybeLoadImage() {
|
|
34
|
+
this.image = null;
|
|
35
|
+
if (this.inputs.src !== null && this.inputs.src !== '') {
|
|
36
|
+
const that = this;
|
|
37
|
+
this.image = new Image();
|
|
38
|
+
this.image.crossOrigin = 'anonymous';
|
|
39
|
+
this.image.src = this.inputs.src;
|
|
40
|
+
this.image.onload = function (event) {
|
|
41
|
+
// that.notify('paint.ready');
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// this.notify('paint.ready');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export const canvasImageType = 'mp.canvasImage';
|
|
48
|
+
export function makeCanvasImage() {
|
|
49
|
+
return new CanvasImage();
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzSW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQWVwRixNQUFNLE9BQU8sV0FBWSxTQUFRLGNBQWM7SUFBL0M7O1FBQ1UsVUFBSyxHQUE0QixJQUFJLENBQUM7UUFFckMsV0FBTSxHQUFXO1lBQ3hCLEdBQUcsRUFBRSxJQUFJO1lBQ1QsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzNCLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN6QixZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDNUIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1NBQzNCLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO0lBeUNmLENBQUM7SUF2Q1UsTUFBTTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVRLGVBQWU7UUFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBbUMsRUFBRSxJQUFVO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTztTQUNSO1FBRUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUN4QixTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRTtZQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFTLEtBQVk7Z0JBQ3ZDLDhCQUE4QjtZQUNoQyxDQUFDLENBQUM7U0FDSDtRQUVELDhCQUE4QjtJQUNoQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFDaEQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudE91dHB1dCwgU2NlbmVDb21wb25lbnR9IGZyb20gJy4vLi4vc2NlbmUtY29tcG9uZW50L1NjZW5lQ29tcG9uZW50JztcclxuaW1wb3J0IHtJUGFpbnRlcjJkfSBmcm9tIFwiLi9DYW52YXNSZW5kZXJlclwiO1xyXG5pbXBvcnQge1NpemV9IGZyb20gXCIuL1BsYW5lUmVuZGVyZXJcIjtcclxudHlwZSBJbnB1dHMgPSB7XHJcbiAgc3JjOiBzdHJpbmcgfCBudWxsO1xyXG4gIHNyY1Bvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH07XHJcbiAgc3JjU2l6ZTogU2l6ZTtcclxuICBkZXN0UG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfTtcclxuICBkZXN0U2l6ZTogU2l6ZTtcclxufTtcclxuXHJcbnR5cGUgT3V0cHV0cyA9IHtcclxuICBwYWludGVyOiBJUGFpbnRlcjJkIHwgbnVsbDtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcbmV4cG9ydCBjbGFzcyBDYW52YXNJbWFnZSBleHRlbmRzIFNjZW5lQ29tcG9uZW50IGltcGxlbWVudHMgSVBhaW50ZXIyZCB7XHJcbiAgcHJpdmF0ZSBpbWFnZTogSFRNTEltYWdlRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIHNyYzogbnVsbCxcclxuICAgIHNyY1Bvc2l0aW9uOiB7IHg6IDAsIHk6IDAgfSxcclxuICAgIHNyY1NpemU6IHsgdzogNjQsIGg6IDY0IH0sXHJcbiAgICBkZXN0UG9zaXRpb246IHsgeDogMCwgeTogMCB9LFxyXG4gICAgZGVzdFNpemU6IHsgdzogNjQsIGg6IDY0IH0sXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBvdXRwdXRzID0ge1xyXG4gICAgcGFpbnRlcjogbnVsbCxcclxuICB9IGFzIE91dHB1dHM7XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5pdCgpIHtcclxuICAgIHRoaXMub3V0cHV0cy5wYWludGVyID0gdGhpcztcclxuICAgIHRoaXMubWF5YmVMb2FkSW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5wdXRzVXBkYXRlZCgpIHtcclxuICAgIHRoaXMubWF5YmVMb2FkSW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHBhaW50KGNvbnRleHQyZDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBzaXplOiBTaXplKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaW1hZ2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRleHQyZC5jbGVhclJlY3QoMCwgMCwgdGhpcy5pbnB1dHMuZGVzdFNpemUudywgdGhpcy5pbnB1dHMuZGVzdFNpemUuaCk7XHJcbiAgICBpZiAodGhpcy5pbWFnZS53aWR0aCA+IDApIHtcclxuICAgICAgY29udGV4dDJkLmRyYXdJbWFnZSh0aGlzLmltYWdlLFxyXG4gICAgICAgIHRoaXMuaW5wdXRzLnNyY1Bvc2l0aW9uLngsIHRoaXMuaW5wdXRzLnNyY1Bvc2l0aW9uLnksXHJcbiAgICAgICAgdGhpcy5pbnB1dHMuc3JjU2l6ZS53LCB0aGlzLmlucHV0cy5zcmNTaXplLmgsXHJcbiAgICAgICAgdGhpcy5pbnB1dHMuZGVzdFBvc2l0aW9uLngsIHRoaXMuaW5wdXRzLmRlc3RQb3NpdGlvbi55LFxyXG4gICAgICAgIHRoaXMuaW5wdXRzLmRlc3RTaXplLncsIHRoaXMuaW5wdXRzLmRlc3RTaXplLmgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXliZUxvYWRJbWFnZSgpIHtcclxuICAgIHRoaXMuaW1hZ2UgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0cy5zcmMgIT09IG51bGwgJiYgdGhpcy5pbnB1dHMuc3JjICE9PSAnJykge1xyXG4gICAgICBjb25zdCB0aGF0ID0gdGhpcztcclxuICAgICAgdGhpcy5pbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICB0aGlzLmltYWdlLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XHJcbiAgICAgIHRoaXMuaW1hZ2Uuc3JjID0gdGhpcy5pbnB1dHMuc3JjO1xyXG4gICAgICB0aGlzLmltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIC8vIHRoYXQubm90aWZ5KCdwYWludC5yZWFkeScpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMubm90aWZ5KCdwYWludC5yZWFkeScpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNhbnZhc0ltYWdlVHlwZSA9ICdtcC5jYW52YXNJbWFnZSc7XHJcbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ2FudmFzSW1hZ2UoKSB7XHJcbiAgcmV0dXJuIG5ldyBDYW52YXNJbWFnZSgpO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { SceneComponent } from '../scene-component/SceneComponent';
|
|
2
|
-
import { CanvasTexture } from 'three';
|
|
3
|
-
export class CanvasRenderer extends SceneComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
super(...arguments);
|
|
6
|
-
this.inputs = {
|
|
7
|
-
painter: null,
|
|
8
|
-
textureRes: { w: 1024, h: 1024 }, // dim for thermostat
|
|
9
|
-
};
|
|
10
|
-
this.outputs = {
|
|
11
|
-
texture: null,
|
|
12
|
-
};
|
|
13
|
-
this.events = {
|
|
14
|
-
repaint: true,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
onInit() {
|
|
18
|
-
// set up canvas 2d context
|
|
19
|
-
this.canvas = document.createElement('canvas');
|
|
20
|
-
this.renderContext2D = this.canvas.getContext('2d');
|
|
21
|
-
this.outputs.texture = new CanvasTexture(this.canvas);
|
|
22
|
-
this.resize(this.inputs.textureRes);
|
|
23
|
-
this.repaint();
|
|
24
|
-
}
|
|
25
|
-
setCanvasNestThermostatPainter(sc) {
|
|
26
|
-
this.inputs.painter = sc;
|
|
27
|
-
}
|
|
28
|
-
onInputsUpdated(oldInputs) {
|
|
29
|
-
if (oldInputs.textureRes.w !== this.inputs.textureRes.w ||
|
|
30
|
-
oldInputs.textureRes.h !== this.inputs.textureRes.h) {
|
|
31
|
-
this.resize(this.inputs.textureRes);
|
|
32
|
-
}
|
|
33
|
-
if (oldInputs.painter !== this.inputs.painter) {
|
|
34
|
-
this.repaint();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
onEvent(eventType, _eventData) {
|
|
38
|
-
if (eventType === 'repaint') {
|
|
39
|
-
this.repaint();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
onDestroy() {
|
|
43
|
-
this.outputs.texture.dispose();
|
|
44
|
-
this.outputs.texture = null;
|
|
45
|
-
}
|
|
46
|
-
resize(size) {
|
|
47
|
-
this.canvas.width = size.w;
|
|
48
|
-
this.canvas.height = size.h;
|
|
49
|
-
}
|
|
50
|
-
repaint() {
|
|
51
|
-
if (this.inputs.painter) {
|
|
52
|
-
this.inputs.painter.paint(this.renderContext2D, this.inputs.textureRes);
|
|
53
|
-
this.outputs.texture.needsUpdate = true;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
export const canvasRendererType = 'mp.canvasRenderer';
|
|
58
|
-
export function makeCanvasRenderer() {
|
|
59
|
-
return new CanvasRenderer();
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { SceneComponent } from '../scene-component/SceneComponent';
|
|
2
|
+
import { CanvasTexture } from 'three';
|
|
3
|
+
export class CanvasRenderer extends SceneComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this.inputs = {
|
|
7
|
+
painter: null,
|
|
8
|
+
textureRes: { w: 1024, h: 1024 }, // dim for thermostat
|
|
9
|
+
};
|
|
10
|
+
this.outputs = {
|
|
11
|
+
texture: null,
|
|
12
|
+
};
|
|
13
|
+
this.events = {
|
|
14
|
+
repaint: true,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
onInit() {
|
|
18
|
+
// set up canvas 2d context
|
|
19
|
+
this.canvas = document.createElement('canvas');
|
|
20
|
+
this.renderContext2D = this.canvas.getContext('2d');
|
|
21
|
+
this.outputs.texture = new CanvasTexture(this.canvas);
|
|
22
|
+
this.resize(this.inputs.textureRes);
|
|
23
|
+
this.repaint();
|
|
24
|
+
}
|
|
25
|
+
setCanvasNestThermostatPainter(sc) {
|
|
26
|
+
this.inputs.painter = sc;
|
|
27
|
+
}
|
|
28
|
+
onInputsUpdated(oldInputs) {
|
|
29
|
+
if (oldInputs.textureRes.w !== this.inputs.textureRes.w ||
|
|
30
|
+
oldInputs.textureRes.h !== this.inputs.textureRes.h) {
|
|
31
|
+
this.resize(this.inputs.textureRes);
|
|
32
|
+
}
|
|
33
|
+
if (oldInputs.painter !== this.inputs.painter) {
|
|
34
|
+
this.repaint();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
onEvent(eventType, _eventData) {
|
|
38
|
+
if (eventType === 'repaint') {
|
|
39
|
+
this.repaint();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
onDestroy() {
|
|
43
|
+
this.outputs.texture.dispose();
|
|
44
|
+
this.outputs.texture = null;
|
|
45
|
+
}
|
|
46
|
+
resize(size) {
|
|
47
|
+
this.canvas.width = size.w;
|
|
48
|
+
this.canvas.height = size.h;
|
|
49
|
+
}
|
|
50
|
+
repaint() {
|
|
51
|
+
if (this.inputs.painter) {
|
|
52
|
+
this.inputs.painter.paint(this.renderContext2D, this.inputs.textureRes);
|
|
53
|
+
this.outputs.texture.needsUpdate = true;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export const canvasRendererType = 'mp.canvasRenderer';
|
|
58
|
+
export function makeCanvasRenderer() {
|
|
59
|
+
return new CanvasRenderer();
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzUmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBcUJ0QyxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBSVcsV0FBTSxHQUFXO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUscUJBQXFCO1NBQ3hELENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO1FBRUosV0FBTSxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1NBQ0osQ0FBQztJQW1EZCxDQUFDO0lBakRVLE1BQU07UUFFYiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELDhCQUE4QixDQUFDLEVBQUU7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUSxlQUFlLENBQUMsU0FBaUI7UUFDeEMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVRLE9BQU8sQ0FBQyxTQUFpQixFQUFFLFVBQW1CO1FBQ3JELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRVEsU0FBUztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFVO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztDQUVGO0FBT0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7QUFDdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQgfSBmcm9tICcuLi9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQnO1xyXG5pbXBvcnQgdHlwZSB7IFRleHR1cmUgfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7IENhbnZhc1RleHR1cmUgfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7IFNpemUgfSBmcm9tICcuL1BsYW5lUmVuZGVyZXInO1xyXG5pbXBvcnQgeyBDYW52YXNJbWFnZSB9IGZyb20gJy4vQ2FudmFzSW1hZ2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFpbnRlcjJkIHtcclxuICBwYWludChjb250ZXh0MmQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgc2l6ZTogU2l6ZSk6IHZvaWQ7XHJcbn1cclxuXHJcbnR5cGUgSW5wdXRzID0ge1xyXG4gIHBhaW50ZXI6IElQYWludGVyMmQgfCBudWxsO1xyXG4gIHRleHR1cmVSZXM6IFNpemU7XHJcbn1cclxuXHJcbnR5cGUgT3V0cHV0cyA9IHtcclxuICB0ZXh0dXJlOiBUZXh0dXJlIHwgbnVsbDtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcbnR5cGUgRXZlbnRzID0ge1xyXG4gIHJlcGFpbnQ6IGJvb2xlYW47XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FudmFzUmVuZGVyZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVuZGVyQ29udGV4dDJEOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcblxyXG4gIG92ZXJyaWRlIGlucHV0czogSW5wdXRzID0ge1xyXG4gICAgcGFpbnRlcjogbnVsbCxcclxuICAgIHRleHR1cmVSZXM6IHsgdzogMTAyNCwgaDogMTAyNCB9LCAvLyBkaW0gZm9yIHRoZXJtb3N0YXRcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XHJcbiAgICB0ZXh0dXJlOiBudWxsLFxyXG4gIH0gYXMgT3V0cHV0cztcclxuXHJcbiAgb3ZlcnJpZGUgZXZlbnRzID0ge1xyXG4gICAgcmVwYWludDogdHJ1ZSxcclxuICB9IGFzIEV2ZW50cztcclxuXHJcbiAgb3ZlcnJpZGUgb25Jbml0KCkge1xyXG5cclxuICAgIC8vIHNldCB1cCBjYW52YXMgMmQgY29udGV4dFxyXG4gICAgdGhpcy5jYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHRoaXMucmVuZGVyQ29udGV4dDJEID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlID0gbmV3IENhbnZhc1RleHR1cmUodGhpcy5jYW52YXMpO1xyXG5cclxuICAgIHRoaXMucmVzaXplKHRoaXMuaW5wdXRzLnRleHR1cmVSZXMpO1xyXG4gICAgdGhpcy5yZXBhaW50KCk7XHJcbiAgfVxyXG5cclxuICBzZXRDYW52YXNOZXN0VGhlcm1vc3RhdFBhaW50ZXIoc2Mpe1xyXG4gICAgdGhpcy5pbnB1dHMucGFpbnRlciA9IHNjO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKG9sZElucHV0czogSW5wdXRzKSB7XHJcbiAgICBpZiAob2xkSW5wdXRzLnRleHR1cmVSZXMudyAhPT0gdGhpcy5pbnB1dHMudGV4dHVyZVJlcy53IHx8XHJcbiAgICAgICAgb2xkSW5wdXRzLnRleHR1cmVSZXMuaCAhPT0gdGhpcy5pbnB1dHMudGV4dHVyZVJlcy5oKSB7XHJcbiAgICAgIHRoaXMucmVzaXplKHRoaXMuaW5wdXRzLnRleHR1cmVSZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvbGRJbnB1dHMucGFpbnRlciAhPT0gdGhpcy5pbnB1dHMucGFpbnRlcikge1xyXG4gICAgICB0aGlzLnJlcGFpbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIF9ldmVudERhdGE6IHVua25vd24pIHtcclxuICAgIGlmIChldmVudFR5cGUgPT09ICdyZXBhaW50Jykge1xyXG4gICAgICB0aGlzLnJlcGFpbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlLmRpc3Bvc2UoKTtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplKHNpemU6IFNpemUpIHtcclxuICAgIHRoaXMuY2FudmFzLndpZHRoID0gc2l6ZS53O1xyXG4gICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gc2l6ZS5oO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlcGFpbnQoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMucGFpbnRlcikge1xyXG4gICAgICB0aGlzLmlucHV0cy5wYWludGVyLnBhaW50KHRoaXMucmVuZGVyQ29udGV4dDJELCB0aGlzLmlucHV0cy50ZXh0dXJlUmVzKTtcclxuICAgICAgdGhpcy5vdXRwdXRzLnRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNhbnZhc1JlbmRlcmVyIGV4dGVuZHMgU2NlbmVDb21wb25lbnR7XHJcbiAgaW5wdXRzOiBJbnB1dHM7XHJcbiAgb3V0cHV0czogT3V0cHV0cztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNhbnZhc1JlbmRlcmVyVHlwZSA9ICdtcC5jYW52YXNSZW5kZXJlcic7XHJcbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ2FudmFzUmVuZGVyZXIoKSB7XHJcbiAgcmV0dXJuIG5ldyBDYW52YXNSZW5kZXJlcigpO1xyXG59XHJcbiJdfQ==
|