@smarterplan/ngx-smarterplan-core 1.2.38 → 1.2.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
  3. package/esm2020/lib/components/loader/loader.component.mjs +23 -23
  4. package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
  5. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
  6. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
  7. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
  8. package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
  9. package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
  10. package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
  11. package/esm2020/lib/config.mjs +4 -4
  12. package/esm2020/lib/helpers.service.mjs +470 -470
  13. package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
  14. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
  15. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
  16. package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
  17. package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
  18. package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
  19. package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
  20. package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
  21. package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
  22. package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
  23. package/esm2020/lib/mattertagData.mjs +165 -165
  24. package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
  25. package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
  26. package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
  27. package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
  28. package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
  29. package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
  30. package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
  31. package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
  32. package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
  33. package/esm2020/lib/services/base-tab.service.mjs +24 -24
  34. package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
  35. package/esm2020/lib/services/content.service.mjs +135 -135
  36. package/esm2020/lib/services/filter.service.mjs +599 -599
  37. package/esm2020/lib/services/intervention.service.mjs +236 -236
  38. package/esm2020/lib/services/locale.service.mjs +45 -45
  39. package/esm2020/lib/services/matterport-import.service.mjs +340 -340
  40. package/esm2020/lib/services/matterport.service.mjs +1587 -1578
  41. package/esm2020/lib/services/models/affectation.service.mjs +60 -60
  42. package/esm2020/lib/services/models/base-object.service.mjs +70 -70
  43. package/esm2020/lib/services/models/capture.service.mjs +34 -34
  44. package/esm2020/lib/services/models/comment.service.mjs +98 -98
  45. package/esm2020/lib/services/models/domain.service.mjs +78 -78
  46. package/esm2020/lib/services/models/equipment.service.mjs +683 -683
  47. package/esm2020/lib/services/models/event.service.mjs +128 -128
  48. package/esm2020/lib/services/models/feature.service.mjs +380 -364
  49. package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
  50. package/esm2020/lib/services/models/layer.service.mjs +33 -33
  51. package/esm2020/lib/services/models/measurement.service.mjs +199 -199
  52. package/esm2020/lib/services/models/mission.service.mjs +206 -206
  53. package/esm2020/lib/services/models/navigation.service.mjs +92 -92
  54. package/esm2020/lib/services/models/node.service.mjs +31 -31
  55. package/esm2020/lib/services/models/object3D.service.mjs +364 -364
  56. package/esm2020/lib/services/models/operation.service.mjs +59 -59
  57. package/esm2020/lib/services/models/organisation.service.mjs +73 -73
  58. package/esm2020/lib/services/models/plan.service.mjs +799 -799
  59. package/esm2020/lib/services/models/poi.service.mjs +103 -103
  60. package/esm2020/lib/services/models/profile.service.mjs +58 -58
  61. package/esm2020/lib/services/models/property.service.mjs +44 -44
  62. package/esm2020/lib/services/models/space.service.mjs +204 -204
  63. package/esm2020/lib/services/models/template.service.mjs +41 -41
  64. package/esm2020/lib/services/models/ticket.service.mjs +526 -526
  65. package/esm2020/lib/services/models/visit.service.mjs +130 -130
  66. package/esm2020/lib/services/models/zone.service.mjs +225 -225
  67. package/esm2020/lib/services/navigator.service.mjs +212 -212
  68. package/esm2020/lib/services/s3.service.mjs +137 -137
  69. package/esm2020/lib/services/search.service.mjs +124 -124
  70. package/esm2020/lib/services/support.service.mjs +42 -42
  71. package/esm2020/lib/services/tag.service.mjs +111 -111
  72. package/esm2020/lib/services/user.service.mjs +501 -501
  73. package/esm2020/lib/services/validators.service.mjs +50 -50
  74. package/esm2020/lib/services/viewer.service.mjs +389 -389
  75. package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
  76. package/esm2020/lib/services/zoneChange.service.mjs +30 -30
  77. package/esm2020/lib/types.service.mjs +311 -310
  78. package/esm2020/lib/validators/email.directive.mjs +7 -7
  79. package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
  80. package/esm2020/lib/validators/number.directive.mjs +12 -12
  81. package/esm2020/lib/validators/text.directive.mjs +12 -12
  82. package/esm2020/public-api.mjs +72 -72
  83. package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
  84. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13009 -12983
  85. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  86. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12258 -12232
  87. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  88. package/lib/components/csv-export/csv-export.component.d.ts +18 -18
  89. package/lib/components/loader/loader.component.d.ts +10 -10
  90. package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
  91. package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
  92. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
  93. package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
  94. package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
  95. package/lib/components/search-bar/search-bar.component.d.ts +16 -16
  96. package/lib/components/support-modal/support-modal.component.d.ts +26 -26
  97. package/lib/config.d.ts +22 -22
  98. package/lib/helpers.service.d.ts +79 -79
  99. package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
  100. package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
  101. package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
  102. package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
  103. package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
  104. package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
  105. package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
  106. package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
  107. package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
  108. package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
  109. package/lib/mattertagData.d.ts +70 -70
  110. package/lib/ngx-smarterplan-core.module.d.ts +29 -29
  111. package/lib/ngx-smarterplan-core.service.d.ts +6 -6
  112. package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
  113. package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
  114. package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
  115. package/lib/pipes/safe-url.pipe.d.ts +10 -10
  116. package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
  117. package/lib/pipes/username-from-id.pipe.d.ts +11 -11
  118. package/lib/services/amplify-cache.service.d.ts +37 -37
  119. package/lib/services/base-tab.service.d.ts +10 -10
  120. package/lib/services/baseVisibility.service.d.ts +9 -9
  121. package/lib/services/content.service.d.ts +28 -28
  122. package/lib/services/filter.service.d.ts +60 -60
  123. package/lib/services/intervention.service.d.ts +25 -25
  124. package/lib/services/locale.service.d.ts +23 -23
  125. package/lib/services/matterport-import.service.d.ts +53 -53
  126. package/lib/services/matterport.service.d.ts +336 -336
  127. package/lib/services/models/affectation.service.d.ts +14 -14
  128. package/lib/services/models/base-object.service.d.ts +20 -20
  129. package/lib/services/models/capture.service.d.ts +13 -13
  130. package/lib/services/models/comment.service.d.ts +26 -26
  131. package/lib/services/models/domain.service.d.ts +19 -19
  132. package/lib/services/models/equipment.service.d.ts +93 -93
  133. package/lib/services/models/event.service.d.ts +43 -43
  134. package/lib/services/models/feature.service.d.ts +75 -74
  135. package/lib/services/models/hashtag.service.d.ts +13 -13
  136. package/lib/services/models/layer.service.d.ts +11 -11
  137. package/lib/services/models/measurement.service.d.ts +51 -51
  138. package/lib/services/models/mission.service.d.ts +39 -39
  139. package/lib/services/models/navigation.service.d.ts +29 -29
  140. package/lib/services/models/node.service.d.ts +12 -12
  141. package/lib/services/models/object3D.service.d.ts +57 -57
  142. package/lib/services/models/operation.service.d.ts +15 -15
  143. package/lib/services/models/organisation.service.d.ts +19 -19
  144. package/lib/services/models/plan.service.d.ts +133 -133
  145. package/lib/services/models/poi.service.d.ts +25 -25
  146. package/lib/services/models/profile.service.d.ts +16 -16
  147. package/lib/services/models/property.service.d.ts +13 -13
  148. package/lib/services/models/space.service.d.ts +46 -46
  149. package/lib/services/models/template.service.d.ts +15 -15
  150. package/lib/services/models/ticket.service.d.ts +93 -93
  151. package/lib/services/models/visit.service.d.ts +24 -24
  152. package/lib/services/models/zone.service.d.ts +50 -50
  153. package/lib/services/navigator.service.d.ts +61 -61
  154. package/lib/services/s3.service.d.ts +14 -14
  155. package/lib/services/search.service.d.ts +20 -20
  156. package/lib/services/support.service.d.ts +17 -17
  157. package/lib/services/tag.service.d.ts +29 -29
  158. package/lib/services/user.service.d.ts +118 -118
  159. package/lib/services/validators.service.d.ts +18 -18
  160. package/lib/services/viewer.service.d.ts +110 -110
  161. package/lib/services/zone-drawer.service.d.ts +7 -7
  162. package/lib/services/zoneChange.service.d.ts +17 -17
  163. package/lib/types.service.d.ts +842 -840
  164. package/lib/validators/email.directive.d.ts +2 -2
  165. package/lib/validators/no-empty.directive.d.ts +2 -2
  166. package/lib/validators/number.directive.d.ts +2 -2
  167. package/lib/validators/text.directive.d.ts +2 -2
  168. package/package.json +1 -1
  169. package/public-api.d.ts +64 -64
  170. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGxzTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvaHNsLWxvYWRlci9IbHNMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RixhQUFhO0FBQ2IsT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDO0FBWXpCLE1BQU0sT0FBTyxTQUFVLFNBQVEsY0FBYztJQUE3Qzs7UUFDVSxVQUFLLEdBQTRCLElBQUksQ0FBQztRQUN0QyxZQUFPLEdBQXdCLElBQUksQ0FBQztRQUNwQyxRQUFHLEdBQWUsSUFBSSxDQUFDO1FBRXRCLFdBQU0sR0FBVztZQUN4QixHQUFHLEVBQUUsaUNBQWlDO1lBQ3RDLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQTtRQUVRLFlBQU8sR0FBRztZQUNqQixLQUFLLEVBQUUsSUFBSTtZQUNYLE1BQU0sRUFBRSxDQUFDO1NBQ0MsQ0FBQztJQXVEZixDQUFDO0lBckRVLE1BQU0sQ0FBQyxZQUEyQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFDLEdBQUcsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFUSxlQUFlO1FBRXRCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRVEsU0FBUztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDaEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUM1QyxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQgfSBmcm9tICcuLy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZGVvVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcclxuLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgSGxzIGZyb20gJ2hscy5qcyc7XHJcblxyXG50eXBlIElucHV0cyA9IHtcclxuICBzcmM6IHN0cmluZztcclxuICBlbmFibGVkOiBib29sZWFuO1xyXG59O1xyXG5cclxudHlwZSBPdXRwdXRzID0ge1xyXG4gIHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50IHwgbnVsbDtcclxuICBhc3BlY3Q6IG51bWJlcjtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcbmV4cG9ydCBjbGFzcyBIbHNMb2FkZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSB2aWRlbzogSFRNTFZpZGVvRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgdGV4dHVyZTogVmlkZW9UZXh0dXJlIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBobHM6IEhscyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIHNyYzogJy4vLi4vYXNzZXRzL3ZpZGVvLzEyMTIyMi0wNC5tcDQnLFxyXG4gICAgZW5hYmxlZDogdHJ1ZSxcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XHJcbiAgICB2aWRlbzogbnVsbCxcclxuICAgIGFzcGVjdDogMSxcclxuICB9IGFzIE91dHB1dHM7XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5pdCh2aWRlb1RleHR1cmU/OiBWaWRlb1RleHR1cmUpIHtcclxuICAgIHRoaXMub3V0cHV0cy52aWRlbyA9IHZpZGVvVGV4dHVyZTtcclxuICAgIHRoaXMub3V0cHV0cy5hc3BlY3QgPSA3MjAvNDgwO1xyXG4gICAgaWYgKHRoaXMuaW5wdXRzLmVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5zZXR1cFN0cmVhbSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xyXG5cclxuICAgIHRoaXMuc2V0dXBTdHJlYW0oKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcclxuICAgIHRoaXMucmVsZWFzZVJlc291cmNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVWaWRlb0VsZW1lbnQoKSB7XHJcbiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XHJcbiAgICB2aWRlby5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgdmlkZW8uc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAnNDgwJyk7XHJcbiAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzcyMCcpO1xyXG4gICAgdmlkZW8uc2V0QXR0cmlidXRlKCdtdXRlZCcsICdtdXRlZCcpO1xyXG4gICAgdmlkZW8udm9sdW1lID0gMC4xO1xyXG4gICAgcmV0dXJuIHZpZGVvO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFN0cmVhbSgpIHtcclxuICAgIHRoaXMucmVsZWFzZVJlc291cmNlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0cy5lbmFibGVkKSB7XHJcbiAgICAgIHRoaXMudmlkZW8gPSB0aGlzLmNyZWF0ZVZpZGVvRWxlbWVudCgpO1xyXG4gICAgICB0aGlzLmhscyA9IG5ldyBIbHMoKTtcclxuICAgICAgdGhpcy5obHMubG9hZFNvdXJjZSh0aGlzLmlucHV0cy5zcmMpO1xyXG4gICAgICB0aGlzLmhscy5hdHRhY2hNZWRpYSh0aGlzLnZpZGVvKTtcclxuICAgICAgdGhpcy5obHMub24oSGxzLkV2ZW50cy5NQU5JRkVTVF9QQVJTRUQsICgpID0+IHtcclxuICAgICAgICB0aGlzLm91dHB1dHMudmlkZW8gPSB0aGlzLnZpZGVvO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVsZWFzZVJlc291cmNlcygpIHtcclxuICAgIGlmICh0aGlzLmhscykge1xyXG4gICAgICB0aGlzLmhscy5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuaGxzID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50ZXh0dXJlKSB7XHJcbiAgICAgIHRoaXMudGV4dHVyZS5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMudGV4dHVyZSA9IG51bGw7XHJcbiAgICAgIHRoaXMub3V0cHV0cy52aWRlbyA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaGxzTG9hZGVyVHlwZSA9ICdtcC5obHNMb2FkZXInO1xyXG5leHBvcnQgZnVuY3Rpb24gbWFrZUhsc0xvYWRlcigpIHtcclxuICByZXR1cm4gbmV3IEhsc0xvYWRlcigpO1xyXG59XHJcbiJdfQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGxzTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9tYXR0ZXJwb3J0LWV4dGVuc2lvbnMvaHNsLWxvYWRlci9IbHNMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RixhQUFhO0FBQ2IsT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDO0FBWXpCLE1BQU0sT0FBTyxTQUFVLFNBQVEsY0FBYztJQUE3Qzs7UUFDVSxVQUFLLEdBQTRCLElBQUksQ0FBQztRQUN0QyxZQUFPLEdBQXdCLElBQUksQ0FBQztRQUNwQyxRQUFHLEdBQWUsSUFBSSxDQUFDO1FBRXRCLFdBQU0sR0FBVztZQUN4QixHQUFHLEVBQUUsaUNBQWlDO1lBQ3RDLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQTtRQUVRLFlBQU8sR0FBRztZQUNqQixLQUFLLEVBQUUsSUFBSTtZQUNYLE1BQU0sRUFBRSxDQUFDO1NBQ0MsQ0FBQztJQXVEZixDQUFDO0lBckRVLE1BQU0sQ0FBQyxZQUEyQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFDLEdBQUcsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFUSxlQUFlO1FBRXRCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRVEsU0FBUztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDaEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNsQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUM1QyxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQgfSBmcm9tICcuLy4uL3NjZW5lLWNvbXBvbmVudC9TY2VuZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWRlb1RleHR1cmUgfSBmcm9tICd0aHJlZSc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgSGxzIGZyb20gJ2hscy5qcyc7XG5cbnR5cGUgSW5wdXRzID0ge1xuICBzcmM6IHN0cmluZztcbiAgZW5hYmxlZDogYm9vbGVhbjtcbn07XG5cbnR5cGUgT3V0cHV0cyA9IHtcbiAgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsO1xuICBhc3BlY3Q6IG51bWJlcjtcbn0gJiBDb21wb25lbnRPdXRwdXQ7XG5cbmV4cG9ydCBjbGFzcyBIbHNMb2FkZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0ZXh0dXJlOiBWaWRlb1RleHR1cmUgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBobHM6IEhscyB8IG51bGwgPSBudWxsO1xuXG4gIG92ZXJyaWRlIGlucHV0czogSW5wdXRzID0ge1xuICAgIHNyYzogJy4vLi4vYXNzZXRzL3ZpZGVvLzEyMTIyMi0wNC5tcDQnLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gIH1cblxuICBvdmVycmlkZSBvdXRwdXRzID0ge1xuICAgIHZpZGVvOiBudWxsLFxuICAgIGFzcGVjdDogMSxcbiAgfSBhcyBPdXRwdXRzO1xuXG4gIG92ZXJyaWRlIG9uSW5pdCh2aWRlb1RleHR1cmU/OiBWaWRlb1RleHR1cmUpIHtcbiAgICB0aGlzLm91dHB1dHMudmlkZW8gPSB2aWRlb1RleHR1cmU7XG4gICAgdGhpcy5vdXRwdXRzLmFzcGVjdCA9IDcyMC80ODA7XG4gICAgaWYgKHRoaXMuaW5wdXRzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuc2V0dXBTdHJlYW0oKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBvbklucHV0c1VwZGF0ZWQoKSB7XG5cbiAgICB0aGlzLnNldHVwU3RyZWFtKCk7XG4gIH1cblxuICBvdmVycmlkZSBvbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZWxlYXNlUmVzb3VyY2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVZpZGVvRWxlbWVudCgpIHtcbiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XG4gICAgdmlkZW8uY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcbiAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsICc0ODAnKTtcbiAgICB2aWRlby5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzcyMCcpO1xuICAgIHZpZGVvLnNldEF0dHJpYnV0ZSgnbXV0ZWQnLCAnbXV0ZWQnKTtcbiAgICB2aWRlby52b2x1bWUgPSAwLjE7XG4gICAgcmV0dXJuIHZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFN0cmVhbSgpIHtcbiAgICB0aGlzLnJlbGVhc2VSZXNvdXJjZXMoKTtcblxuICAgIGlmICh0aGlzLmlucHV0cy5lbmFibGVkKSB7XG4gICAgICB0aGlzLnZpZGVvID0gdGhpcy5jcmVhdGVWaWRlb0VsZW1lbnQoKTtcbiAgICAgIHRoaXMuaGxzID0gbmV3IEhscygpO1xuICAgICAgdGhpcy5obHMubG9hZFNvdXJjZSh0aGlzLmlucHV0cy5zcmMpO1xuICAgICAgdGhpcy5obHMuYXR0YWNoTWVkaWEodGhpcy52aWRlbyk7XG4gICAgICB0aGlzLmhscy5vbihIbHMuRXZlbnRzLk1BTklGRVNUX1BBUlNFRCwgKCkgPT4ge1xuICAgICAgICB0aGlzLm91dHB1dHMudmlkZW8gPSB0aGlzLnZpZGVvO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZWxlYXNlUmVzb3VyY2VzKCkge1xuICAgIGlmICh0aGlzLmhscykge1xuICAgICAgdGhpcy5obHMuZGVzdHJveSgpO1xuICAgICAgdGhpcy5obHMgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRleHR1cmUpIHtcbiAgICAgIHRoaXMudGV4dHVyZS5kaXNwb3NlKCk7XG4gICAgICB0aGlzLnRleHR1cmUgPSBudWxsO1xuICAgICAgdGhpcy5vdXRwdXRzLnZpZGVvID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGhsc0xvYWRlclR5cGUgPSAnbXAuaGxzTG9hZGVyJztcbmV4cG9ydCBmdW5jdGlvbiBtYWtlSGxzTG9hZGVyKCkge1xuICByZXR1cm4gbmV3IEhsc0xvYWRlcigpO1xufVxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzSW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQWVwRixNQUFNLE9BQU8sV0FBWSxTQUFRLGNBQWM7SUFBL0M7O1FBQ1UsVUFBSyxHQUE0QixJQUFJLENBQUM7UUFFckMsV0FBTSxHQUFXO1lBQ3hCLEdBQUcsRUFBRSxJQUFJO1lBQ1QsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzNCLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN6QixZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDNUIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1NBQzNCLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO0lBeUNmLENBQUM7SUF2Q1UsTUFBTTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVRLGVBQWU7UUFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBbUMsRUFBRSxJQUFVO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTztTQUNSO1FBRUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUN4QixTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRTtZQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFTLEtBQVk7Z0JBQ3ZDLDhCQUE4QjtZQUNoQyxDQUFDLENBQUM7U0FDSDtRQUVELDhCQUE4QjtJQUNoQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFDaEQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudE91dHB1dCwgU2NlbmVDb21wb25lbnR9IGZyb20gJy4vLi4vc2NlbmUtY29tcG9uZW50L1NjZW5lQ29tcG9uZW50JztcclxuaW1wb3J0IHtJUGFpbnRlcjJkfSBmcm9tIFwiLi9DYW52YXNSZW5kZXJlclwiO1xyXG5pbXBvcnQge1NpemV9IGZyb20gXCIuL1BsYW5lUmVuZGVyZXJcIjtcclxudHlwZSBJbnB1dHMgPSB7XHJcbiAgc3JjOiBzdHJpbmcgfCBudWxsO1xyXG4gIHNyY1Bvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH07XHJcbiAgc3JjU2l6ZTogU2l6ZTtcclxuICBkZXN0UG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfTtcclxuICBkZXN0U2l6ZTogU2l6ZTtcclxufTtcclxuXHJcbnR5cGUgT3V0cHV0cyA9IHtcclxuICBwYWludGVyOiBJUGFpbnRlcjJkIHwgbnVsbDtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcbmV4cG9ydCBjbGFzcyBDYW52YXNJbWFnZSBleHRlbmRzIFNjZW5lQ29tcG9uZW50IGltcGxlbWVudHMgSVBhaW50ZXIyZCB7XHJcbiAgcHJpdmF0ZSBpbWFnZTogSFRNTEltYWdlRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcclxuICAgIHNyYzogbnVsbCxcclxuICAgIHNyY1Bvc2l0aW9uOiB7IHg6IDAsIHk6IDAgfSxcclxuICAgIHNyY1NpemU6IHsgdzogNjQsIGg6IDY0IH0sXHJcbiAgICBkZXN0UG9zaXRpb246IHsgeDogMCwgeTogMCB9LFxyXG4gICAgZGVzdFNpemU6IHsgdzogNjQsIGg6IDY0IH0sXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBvdXRwdXRzID0ge1xyXG4gICAgcGFpbnRlcjogbnVsbCxcclxuICB9IGFzIE91dHB1dHM7XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5pdCgpIHtcclxuICAgIHRoaXMub3V0cHV0cy5wYWludGVyID0gdGhpcztcclxuICAgIHRoaXMubWF5YmVMb2FkSW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5wdXRzVXBkYXRlZCgpIHtcclxuICAgIHRoaXMubWF5YmVMb2FkSW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIHBhaW50KGNvbnRleHQyZDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBzaXplOiBTaXplKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaW1hZ2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRleHQyZC5jbGVhclJlY3QoMCwgMCwgdGhpcy5pbnB1dHMuZGVzdFNpemUudywgdGhpcy5pbnB1dHMuZGVzdFNpemUuaCk7XHJcbiAgICBpZiAodGhpcy5pbWFnZS53aWR0aCA+IDApIHtcclxuICAgICAgY29udGV4dDJkLmRyYXdJbWFnZSh0aGlzLmltYWdlLFxyXG4gICAgICAgIHRoaXMuaW5wdXRzLnNyY1Bvc2l0aW9uLngsIHRoaXMuaW5wdXRzLnNyY1Bvc2l0aW9uLnksXHJcbiAgICAgICAgdGhpcy5pbnB1dHMuc3JjU2l6ZS53LCB0aGlzLmlucHV0cy5zcmNTaXplLmgsXHJcbiAgICAgICAgdGhpcy5pbnB1dHMuZGVzdFBvc2l0aW9uLngsIHRoaXMuaW5wdXRzLmRlc3RQb3NpdGlvbi55LFxyXG4gICAgICAgIHRoaXMuaW5wdXRzLmRlc3RTaXplLncsIHRoaXMuaW5wdXRzLmRlc3RTaXplLmgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXliZUxvYWRJbWFnZSgpIHtcclxuICAgIHRoaXMuaW1hZ2UgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0cy5zcmMgIT09IG51bGwgJiYgdGhpcy5pbnB1dHMuc3JjICE9PSAnJykge1xyXG4gICAgICBjb25zdCB0aGF0ID0gdGhpcztcclxuICAgICAgdGhpcy5pbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICB0aGlzLmltYWdlLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XHJcbiAgICAgIHRoaXMuaW1hZ2Uuc3JjID0gdGhpcy5pbnB1dHMuc3JjO1xyXG4gICAgICB0aGlzLmltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIC8vIHRoYXQubm90aWZ5KCdwYWludC5yZWFkeScpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMubm90aWZ5KCdwYWludC5yZWFkeScpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNhbnZhc0ltYWdlVHlwZSA9ICdtcC5jYW52YXNJbWFnZSc7XHJcbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ2FudmFzSW1hZ2UoKSB7XHJcbiAgcmV0dXJuIG5ldyBDYW52YXNJbWFnZSgpO1xyXG59XHJcbiJdfQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzSW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQWVwRixNQUFNLE9BQU8sV0FBWSxTQUFRLGNBQWM7SUFBL0M7O1FBQ1UsVUFBSyxHQUE0QixJQUFJLENBQUM7UUFFckMsV0FBTSxHQUFXO1lBQ3hCLEdBQUcsRUFBRSxJQUFJO1lBQ1QsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzNCLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN6QixZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDNUIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1NBQzNCLENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO0lBeUNmLENBQUM7SUF2Q1UsTUFBTTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVRLGVBQWU7UUFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBbUMsRUFBRSxJQUFVO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTztTQUNSO1FBRUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUN4QixTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRTtZQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFTLEtBQVk7Z0JBQ3ZDLDhCQUE4QjtZQUNoQyxDQUFDLENBQUM7U0FDSDtRQUVELDhCQUE4QjtJQUNoQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFDaEQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudE91dHB1dCwgU2NlbmVDb21wb25lbnR9IGZyb20gJy4vLi4vc2NlbmUtY29tcG9uZW50L1NjZW5lQ29tcG9uZW50JztcbmltcG9ydCB7SVBhaW50ZXIyZH0gZnJvbSBcIi4vQ2FudmFzUmVuZGVyZXJcIjtcbmltcG9ydCB7U2l6ZX0gZnJvbSBcIi4vUGxhbmVSZW5kZXJlclwiO1xudHlwZSBJbnB1dHMgPSB7XG4gIHNyYzogc3RyaW5nIHwgbnVsbDtcbiAgc3JjUG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfTtcbiAgc3JjU2l6ZTogU2l6ZTtcbiAgZGVzdFBvc2l0aW9uOiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH07XG4gIGRlc3RTaXplOiBTaXplO1xufTtcblxudHlwZSBPdXRwdXRzID0ge1xuICBwYWludGVyOiBJUGFpbnRlcjJkIHwgbnVsbDtcbn0gJiBDb21wb25lbnRPdXRwdXQ7XG5cbmV4cG9ydCBjbGFzcyBDYW52YXNJbWFnZSBleHRlbmRzIFNjZW5lQ29tcG9uZW50IGltcGxlbWVudHMgSVBhaW50ZXIyZCB7XG4gIHByaXZhdGUgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBvdmVycmlkZSBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBzcmM6IG51bGwsXG4gICAgc3JjUG9zaXRpb246IHsgeDogMCwgeTogMCB9LFxuICAgIHNyY1NpemU6IHsgdzogNjQsIGg6IDY0IH0sXG4gICAgZGVzdFBvc2l0aW9uOiB7IHg6IDAsIHk6IDAgfSxcbiAgICBkZXN0U2l6ZTogeyB3OiA2NCwgaDogNjQgfSxcbiAgfVxuXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XG4gICAgcGFpbnRlcjogbnVsbCxcbiAgfSBhcyBPdXRwdXRzO1xuXG4gIG92ZXJyaWRlIG9uSW5pdCgpIHtcbiAgICB0aGlzLm91dHB1dHMucGFpbnRlciA9IHRoaXM7XG4gICAgdGhpcy5tYXliZUxvYWRJbWFnZSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKCkge1xuICAgIHRoaXMubWF5YmVMb2FkSW1hZ2UoKTtcbiAgfVxuXG4gIHBhaW50KGNvbnRleHQyZDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCBzaXplOiBTaXplKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmltYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29udGV4dDJkLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmlucHV0cy5kZXN0U2l6ZS53LCB0aGlzLmlucHV0cy5kZXN0U2l6ZS5oKTtcbiAgICBpZiAodGhpcy5pbWFnZS53aWR0aCA+IDApIHtcbiAgICAgIGNvbnRleHQyZC5kcmF3SW1hZ2UodGhpcy5pbWFnZSxcbiAgICAgICAgdGhpcy5pbnB1dHMuc3JjUG9zaXRpb24ueCwgdGhpcy5pbnB1dHMuc3JjUG9zaXRpb24ueSxcbiAgICAgICAgdGhpcy5pbnB1dHMuc3JjU2l6ZS53LCB0aGlzLmlucHV0cy5zcmNTaXplLmgsXG4gICAgICAgIHRoaXMuaW5wdXRzLmRlc3RQb3NpdGlvbi54LCB0aGlzLmlucHV0cy5kZXN0UG9zaXRpb24ueSxcbiAgICAgICAgdGhpcy5pbnB1dHMuZGVzdFNpemUudywgdGhpcy5pbnB1dHMuZGVzdFNpemUuaCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXliZUxvYWRJbWFnZSgpIHtcbiAgICB0aGlzLmltYWdlID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmlucHV0cy5zcmMgIT09IG51bGwgJiYgdGhpcy5pbnB1dHMuc3JjICE9PSAnJykge1xuICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICB0aGlzLmltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICB0aGlzLmltYWdlLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG4gICAgICB0aGlzLmltYWdlLnNyYyA9IHRoaXMuaW5wdXRzLnNyYztcbiAgICAgIHRoaXMuaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIHRoYXQubm90aWZ5KCdwYWludC5yZWFkeScpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyB0aGlzLm5vdGlmeSgncGFpbnQucmVhZHknKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY2FudmFzSW1hZ2VUeXBlID0gJ21wLmNhbnZhc0ltYWdlJztcbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ2FudmFzSW1hZ2UoKSB7XG4gIHJldHVybiBuZXcgQ2FudmFzSW1hZ2UoKTtcbn1cbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzUmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBcUJ0QyxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBSVcsV0FBTSxHQUFXO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUscUJBQXFCO1NBQ3hELENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO1FBRUosV0FBTSxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1NBQ0osQ0FBQztJQW1EZCxDQUFDO0lBakRVLE1BQU07UUFFYiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELDhCQUE4QixDQUFDLEVBQUU7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUSxlQUFlLENBQUMsU0FBaUI7UUFDeEMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVRLE9BQU8sQ0FBQyxTQUFpQixFQUFFLFVBQW1CO1FBQ3JELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRVEsU0FBUztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFVO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztDQUVGO0FBT0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7QUFDdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQgfSBmcm9tICcuLi9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQnO1xyXG5pbXBvcnQgdHlwZSB7IFRleHR1cmUgfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7IENhbnZhc1RleHR1cmUgfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7IFNpemUgfSBmcm9tICcuL1BsYW5lUmVuZGVyZXInO1xyXG5pbXBvcnQgeyBDYW52YXNJbWFnZSB9IGZyb20gJy4vQ2FudmFzSW1hZ2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFpbnRlcjJkIHtcclxuICBwYWludChjb250ZXh0MmQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgc2l6ZTogU2l6ZSk6IHZvaWQ7XHJcbn1cclxuXHJcbnR5cGUgSW5wdXRzID0ge1xyXG4gIHBhaW50ZXI6IElQYWludGVyMmQgfCBudWxsO1xyXG4gIHRleHR1cmVSZXM6IFNpemU7XHJcbn1cclxuXHJcbnR5cGUgT3V0cHV0cyA9IHtcclxuICB0ZXh0dXJlOiBUZXh0dXJlIHwgbnVsbDtcclxufSAmIENvbXBvbmVudE91dHB1dDtcclxuXHJcbnR5cGUgRXZlbnRzID0ge1xyXG4gIHJlcGFpbnQ6IGJvb2xlYW47XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FudmFzUmVuZGVyZXIgZXh0ZW5kcyBTY2VuZUNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gIHByaXZhdGUgcmVuZGVyQ29udGV4dDJEOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcblxyXG4gIG92ZXJyaWRlIGlucHV0czogSW5wdXRzID0ge1xyXG4gICAgcGFpbnRlcjogbnVsbCxcclxuICAgIHRleHR1cmVSZXM6IHsgdzogMTAyNCwgaDogMTAyNCB9LCAvLyBkaW0gZm9yIHRoZXJtb3N0YXRcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG91dHB1dHMgPSB7XHJcbiAgICB0ZXh0dXJlOiBudWxsLFxyXG4gIH0gYXMgT3V0cHV0cztcclxuXHJcbiAgb3ZlcnJpZGUgZXZlbnRzID0ge1xyXG4gICAgcmVwYWludDogdHJ1ZSxcclxuICB9IGFzIEV2ZW50cztcclxuXHJcbiAgb3ZlcnJpZGUgb25Jbml0KCkge1xyXG5cclxuICAgIC8vIHNldCB1cCBjYW52YXMgMmQgY29udGV4dFxyXG4gICAgdGhpcy5jYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIHRoaXMucmVuZGVyQ29udGV4dDJEID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlID0gbmV3IENhbnZhc1RleHR1cmUodGhpcy5jYW52YXMpO1xyXG5cclxuICAgIHRoaXMucmVzaXplKHRoaXMuaW5wdXRzLnRleHR1cmVSZXMpO1xyXG4gICAgdGhpcy5yZXBhaW50KCk7XHJcbiAgfVxyXG5cclxuICBzZXRDYW52YXNOZXN0VGhlcm1vc3RhdFBhaW50ZXIoc2Mpe1xyXG4gICAgdGhpcy5pbnB1dHMucGFpbnRlciA9IHNjO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgb25JbnB1dHNVcGRhdGVkKG9sZElucHV0czogSW5wdXRzKSB7XHJcbiAgICBpZiAob2xkSW5wdXRzLnRleHR1cmVSZXMudyAhPT0gdGhpcy5pbnB1dHMudGV4dHVyZVJlcy53IHx8XHJcbiAgICAgICAgb2xkSW5wdXRzLnRleHR1cmVSZXMuaCAhPT0gdGhpcy5pbnB1dHMudGV4dHVyZVJlcy5oKSB7XHJcbiAgICAgIHRoaXMucmVzaXplKHRoaXMuaW5wdXRzLnRleHR1cmVSZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvbGRJbnB1dHMucGFpbnRlciAhPT0gdGhpcy5pbnB1dHMucGFpbnRlcikge1xyXG4gICAgICB0aGlzLnJlcGFpbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIF9ldmVudERhdGE6IHVua25vd24pIHtcclxuICAgIGlmIChldmVudFR5cGUgPT09ICdyZXBhaW50Jykge1xyXG4gICAgICB0aGlzLnJlcGFpbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlLmRpc3Bvc2UoKTtcclxuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplKHNpemU6IFNpemUpIHtcclxuICAgIHRoaXMuY2FudmFzLndpZHRoID0gc2l6ZS53O1xyXG4gICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gc2l6ZS5oO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlcGFpbnQoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dHMucGFpbnRlcikge1xyXG4gICAgICB0aGlzLmlucHV0cy5wYWludGVyLnBhaW50KHRoaXMucmVuZGVyQ29udGV4dDJELCB0aGlzLmlucHV0cy50ZXh0dXJlUmVzKTtcclxuICAgICAgdGhpcy5vdXRwdXRzLnRleHR1cmUubmVlZHNVcGRhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNhbnZhc1JlbmRlcmVyIGV4dGVuZHMgU2NlbmVDb21wb25lbnR7XHJcbiAgaW5wdXRzOiBJbnB1dHM7XHJcbiAgb3V0cHV0czogT3V0cHV0cztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNhbnZhc1JlbmRlcmVyVHlwZSA9ICdtcC5jYW52YXNSZW5kZXJlcic7XHJcbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ2FudmFzUmVuZGVyZXIoKSB7XHJcbiAgcmV0dXJuIG5ldyBDYW52YXNSZW5kZXJlcigpO1xyXG59XHJcbiJdfQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL21hdHRlcnBvcnQtZXh0ZW5zaW9ucy9uZXN0LXRoZXJtb3N0YXQvQ2FudmFzUmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBcUJ0QyxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFBbEQ7O1FBSVcsV0FBTSxHQUFXO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUscUJBQXFCO1NBQ3hELENBQUE7UUFFUSxZQUFPLEdBQUc7WUFDakIsT0FBTyxFQUFFLElBQUk7U0FDSCxDQUFDO1FBRUosV0FBTSxHQUFHO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1NBQ0osQ0FBQztJQW1EZCxDQUFDO0lBakRVLE1BQU07UUFFYiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELDhCQUE4QixDQUFDLEVBQUU7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFUSxlQUFlLENBQUMsU0FBaUI7UUFDeEMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25ELFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVRLE9BQU8sQ0FBQyxTQUFpQixFQUFFLFVBQW1CO1FBQ3JELElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRVEsU0FBUztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFVO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztDQUVGO0FBT0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7QUFDdEQsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lQ29tcG9uZW50LCBDb21wb25lbnRPdXRwdXQgfSBmcm9tICcuLi9zY2VuZS1jb21wb25lbnQvU2NlbmVDb21wb25lbnQnO1xuaW1wb3J0IHR5cGUgeyBUZXh0dXJlIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgQ2FudmFzVGV4dHVyZSB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFNpemUgfSBmcm9tICcuL1BsYW5lUmVuZGVyZXInO1xuaW1wb3J0IHsgQ2FudmFzSW1hZ2UgfSBmcm9tICcuL0NhbnZhc0ltYWdlJztcblxuZXhwb3J0IGludGVyZmFjZSBJUGFpbnRlcjJkIHtcbiAgcGFpbnQoY29udGV4dDJkOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHNpemU6IFNpemUpOiB2b2lkO1xufVxuXG50eXBlIElucHV0cyA9IHtcbiAgcGFpbnRlcjogSVBhaW50ZXIyZCB8IG51bGw7XG4gIHRleHR1cmVSZXM6IFNpemU7XG59XG5cbnR5cGUgT3V0cHV0cyA9IHtcbiAgdGV4dHVyZTogVGV4dHVyZSB8IG51bGw7XG59ICYgQ29tcG9uZW50T3V0cHV0O1xuXG50eXBlIEV2ZW50cyA9IHtcbiAgcmVwYWludDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBDYW52YXNSZW5kZXJlciBleHRlbmRzIFNjZW5lQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuICBwcml2YXRlIHJlbmRlckNvbnRleHQyRDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuXG4gIG92ZXJyaWRlIGlucHV0czogSW5wdXRzID0ge1xuICAgIHBhaW50ZXI6IG51bGwsXG4gICAgdGV4dHVyZVJlczogeyB3OiAxMDI0LCBoOiAxMDI0IH0sIC8vIGRpbSBmb3IgdGhlcm1vc3RhdFxuICB9XG5cbiAgb3ZlcnJpZGUgb3V0cHV0cyA9IHtcbiAgICB0ZXh0dXJlOiBudWxsLFxuICB9IGFzIE91dHB1dHM7XG5cbiAgb3ZlcnJpZGUgZXZlbnRzID0ge1xuICAgIHJlcGFpbnQ6IHRydWUsXG4gIH0gYXMgRXZlbnRzO1xuXG4gIG92ZXJyaWRlIG9uSW5pdCgpIHtcblxuICAgIC8vIHNldCB1cCBjYW52YXMgMmQgY29udGV4dFxuICAgIHRoaXMuY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgdGhpcy5yZW5kZXJDb250ZXh0MkQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlID0gbmV3IENhbnZhc1RleHR1cmUodGhpcy5jYW52YXMpO1xuXG4gICAgdGhpcy5yZXNpemUodGhpcy5pbnB1dHMudGV4dHVyZVJlcyk7XG4gICAgdGhpcy5yZXBhaW50KCk7XG4gIH1cblxuICBzZXRDYW52YXNOZXN0VGhlcm1vc3RhdFBhaW50ZXIoc2Mpe1xuICAgIHRoaXMuaW5wdXRzLnBhaW50ZXIgPSBzYztcbiAgfVxuXG4gIG92ZXJyaWRlIG9uSW5wdXRzVXBkYXRlZChvbGRJbnB1dHM6IElucHV0cykge1xuICAgIGlmIChvbGRJbnB1dHMudGV4dHVyZVJlcy53ICE9PSB0aGlzLmlucHV0cy50ZXh0dXJlUmVzLncgfHxcbiAgICAgICAgb2xkSW5wdXRzLnRleHR1cmVSZXMuaCAhPT0gdGhpcy5pbnB1dHMudGV4dHVyZVJlcy5oKSB7XG4gICAgICB0aGlzLnJlc2l6ZSh0aGlzLmlucHV0cy50ZXh0dXJlUmVzKTtcbiAgICB9XG5cbiAgICBpZiAob2xkSW5wdXRzLnBhaW50ZXIgIT09IHRoaXMuaW5wdXRzLnBhaW50ZXIpIHtcbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG9uRXZlbnQoZXZlbnRUeXBlOiBzdHJpbmcsIF9ldmVudERhdGE6IHVua25vd24pIHtcbiAgICBpZiAoZXZlbnRUeXBlID09PSAncmVwYWludCcpIHtcbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG9uRGVzdHJveSgpIHtcbiAgICB0aGlzLm91dHB1dHMudGV4dHVyZS5kaXNwb3NlKCk7XG4gICAgdGhpcy5vdXRwdXRzLnRleHR1cmUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNpemUoc2l6ZTogU2l6ZSkge1xuICAgIHRoaXMuY2FudmFzLndpZHRoID0gc2l6ZS53O1xuICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IHNpemUuaDtcbiAgfVxuXG4gIHB1YmxpYyByZXBhaW50KCkge1xuICAgIGlmICh0aGlzLmlucHV0cy5wYWludGVyKSB7XG4gICAgICB0aGlzLmlucHV0cy5wYWludGVyLnBhaW50KHRoaXMucmVuZGVyQ29udGV4dDJELCB0aGlzLmlucHV0cy50ZXh0dXJlUmVzKTtcbiAgICAgIHRoaXMub3V0cHV0cy50ZXh0dXJlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYW52YXNSZW5kZXJlciBleHRlbmRzIFNjZW5lQ29tcG9uZW50e1xuICBpbnB1dHM6IElucHV0cztcbiAgb3V0cHV0czogT3V0cHV0cztcbn1cblxuZXhwb3J0IGNvbnN0IGNhbnZhc1JlbmRlcmVyVHlwZSA9ICdtcC5jYW52YXNSZW5kZXJlcic7XG5leHBvcnQgZnVuY3Rpb24gbWFrZUNhbnZhc1JlbmRlcmVyKCkge1xuICByZXR1cm4gbmV3IENhbnZhc1JlbmRlcmVyKCk7XG59XG4iXX0=