@rocketshow/designer 1.40.0 → 1.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/rocketshow-designer.mjs +1389 -1148
- package/fesm2022/rocketshow-designer.mjs.map +1 -1
- package/index.d.ts +1676 -5
- package/package.json +2 -4
- package/rocketshow-designer-1.44.0.tgz +0 -0
- package/esm2022/lib/array-sort-pipe.mjs +0 -30
- package/esm2022/lib/designer.component.mjs +0 -672
- package/esm2022/lib/designer.module.mjs +0 -186
- package/esm2022/lib/designer.service.mjs +0 -14
- package/esm2022/lib/dropzone/dropzone.component.mjs +0 -93
- package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +0 -577
- package/esm2022/lib/effect/effect-pan-tilt/effect-pan-tilt.component.mjs +0 -36
- package/esm2022/lib/effect/effect.component.mjs +0 -174
- package/esm2022/lib/error-dialog/error-dialog.component.mjs +0 -75
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.mjs +0 -370
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.mjs +0 -147
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.mjs +0 -213
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.mjs +0 -78
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.mjs +0 -119
- package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +0 -191
- package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +0 -162
- package/esm2022/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.mjs +0 -365
- package/esm2022/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.mjs +0 -151
- package/esm2022/lib/fixture/fixture-settings/fixture-settings.component.mjs +0 -46
- package/esm2022/lib/fixture/fixture.component.mjs +0 -148
- package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +0 -145
- package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +0 -641
- package/esm2022/lib/intro/intro.component.mjs +0 -95
- package/esm2022/lib/master-dimmer/master-dimmer.component.mjs +0 -66
- package/esm2022/lib/models/cached-fixture-capability.mjs +0 -9
- package/esm2022/lib/models/cached-fixture-channel.mjs +0 -7
- package/esm2022/lib/models/cached-fixture.mjs +0 -6
- package/esm2022/lib/models/color.mjs +0 -8
- package/esm2022/lib/models/composition.mjs +0 -46
- package/esm2022/lib/models/effect-curve-profile-channel.mjs +0 -15
- package/esm2022/lib/models/effect-curve.mjs +0 -69
- package/esm2022/lib/models/effect-pan-tilt.mjs +0 -19
- package/esm2022/lib/models/effect.mjs +0 -12
- package/esm2022/lib/models/fixture-capability-value.mjs +0 -15
- package/esm2022/lib/models/fixture-capability.mjs +0 -127
- package/esm2022/lib/models/fixture-channel-value.mjs +0 -11
- package/esm2022/lib/models/fixture-channel.mjs +0 -24
- package/esm2022/lib/models/fixture-matrix-pixel-group-constraints.mjs +0 -27
- package/esm2022/lib/models/fixture-matrix-pixel-group.mjs +0 -12
- package/esm2022/lib/models/fixture-matrix.mjs +0 -25
- package/esm2022/lib/models/fixture-mode-channel.mjs +0 -26
- package/esm2022/lib/models/fixture-mode.mjs +0 -17
- package/esm2022/lib/models/fixture-physical.mjs +0 -14
- package/esm2022/lib/models/fixture-profile.mjs +0 -85
- package/esm2022/lib/models/fixture-wheel-slot.mjs +0 -26
- package/esm2022/lib/models/fixture-wheel.mjs +0 -15
- package/esm2022/lib/models/fixture.mjs +0 -40
- package/esm2022/lib/models/preset-fixture.mjs +0 -10
- package/esm2022/lib/models/preset-region-scene.mjs +0 -8
- package/esm2022/lib/models/preset.mjs +0 -65
- package/esm2022/lib/models/project.mjs +0 -78
- package/esm2022/lib/models/scene-playback-region.mjs +0 -11
- package/esm2022/lib/models/scene.mjs +0 -27
- package/esm2022/lib/preset/preset-settings/preset-settings.component.mjs +0 -194
- package/esm2022/lib/preset/preset.component.mjs +0 -131
- package/esm2022/lib/preview/models/color-changer-3d.mjs +0 -52
- package/esm2022/lib/preview/models/fixture-3d.mjs +0 -260
- package/esm2022/lib/preview/models/moving-head-3d.mjs +0 -115
- package/esm2022/lib/preview/preview.component.mjs +0 -216
- package/esm2022/lib/project/project-browser/project-browser.component.mjs +0 -143
- package/esm2022/lib/project/project-import/project-import.component.mjs +0 -107
- package/esm2022/lib/project/project-save/project-save.component.mjs +0 -178
- package/esm2022/lib/project/project-share/project-share.component.mjs +0 -71
- package/esm2022/lib/scene/scene-settings/scene-settings.component.mjs +0 -146
- package/esm2022/lib/scene/scene.component.mjs +0 -110
- package/esm2022/lib/services/animation.service.mjs +0 -16
- package/esm2022/lib/services/config.service.mjs +0 -28
- package/esm2022/lib/services/effect.service.mjs +0 -14
- package/esm2022/lib/services/error-dialog.service.mjs +0 -39
- package/esm2022/lib/services/fixture-pool.service.mjs +0 -30
- package/esm2022/lib/services/fixture.service.mjs +0 -699
- package/esm2022/lib/services/hotkey-target-exclude.service.mjs +0 -24
- package/esm2022/lib/services/intro.service.mjs +0 -140
- package/esm2022/lib/services/preset.service.mjs +0 -450
- package/esm2022/lib/services/preview-mesh.service.mjs +0 -57
- package/esm2022/lib/services/preview.service.mjs +0 -481
- package/esm2022/lib/services/project-load.service.mjs +0 -206
- package/esm2022/lib/services/project.service.mjs +0 -93
- package/esm2022/lib/services/scene.service.mjs +0 -164
- package/esm2022/lib/services/timeline.service.mjs +0 -726
- package/esm2022/lib/services/user-ensure-login.service.mjs +0 -38
- package/esm2022/lib/services/user.service.mjs +0 -89
- package/esm2022/lib/services/uuid.service.mjs +0 -23
- package/esm2022/lib/services/warning-dialog.service.mjs +0 -38
- package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +0 -304
- package/esm2022/lib/timeline/timeline-grid/timeline-grid.component.mjs +0 -216
- package/esm2022/lib/timeline/timeline.component.mjs +0 -418
- package/esm2022/lib/user/user-login/user-login.component.mjs +0 -144
- package/esm2022/lib/user/user-register/user-register.component.mjs +0 -220
- package/esm2022/lib/wait-dialog/wait-dialog.component.mjs +0 -26
- package/esm2022/lib/warning-dialog/warning-dialog.component.mjs +0 -68
- package/esm2022/public_api.mjs +0 -7
- package/esm2022/rocketshow-designer.mjs +0 -5
- package/lib/array-sort-pipe.d.ts +0 -7
- package/lib/designer.component.d.ts +0 -73
- package/lib/designer.module.d.ts +0 -57
- package/lib/designer.service.d.ts +0 -6
- package/lib/dropzone/dropzone.component.d.ts +0 -24
- package/lib/effect/effect-curve/effect-curve.component.d.ts +0 -59
- package/lib/effect/effect-pan-tilt/effect-pan-tilt.component.d.ts +0 -15
- package/lib/effect/effect.component.d.ts +0 -22
- package/lib/error-dialog/error-dialog.component.d.ts +0 -17
- package/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.d.ts +0 -41
- package/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.d.ts +0 -26
- package/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.d.ts +0 -34
- package/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.d.ts +0 -15
- package/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.d.ts +0 -18
- package/lib/fixture/fixture-capability/fixture-capability.component.d.ts +0 -31
- package/lib/fixture/fixture-channel/fixture-channel.component.d.ts +0 -25
- package/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.d.ts +0 -32
- package/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.d.ts +0 -14
- package/lib/fixture/fixture-settings/fixture-settings.component.d.ts +0 -14
- package/lib/fixture/fixture.component.d.ts +0 -25
- package/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.d.ts +0 -28
- package/lib/fixture-pool/fixture-pool.component.d.ts +0 -62
- package/lib/intro/intro.component.d.ts +0 -11
- package/lib/master-dimmer/master-dimmer.component.d.ts +0 -15
- package/lib/models/cached-fixture-capability.d.ts +0 -11
- package/lib/models/cached-fixture-channel.d.ts +0 -11
- package/lib/models/cached-fixture.d.ts +0 -11
- package/lib/models/color.d.ts +0 -6
- package/lib/models/composition.d.ts +0 -19
- package/lib/models/effect-curve-profile-channel.d.ts +0 -5
- package/lib/models/effect-curve.d.ts +0 -15
- package/lib/models/effect-pan-tilt.d.ts +0 -6
- package/lib/models/effect.d.ts +0 -6
- package/lib/models/fixture-capability-value.d.ts +0 -10
- package/lib/models/fixture-capability.d.ts +0 -117
- package/lib/models/fixture-channel-value.d.ts +0 -6
- package/lib/models/fixture-channel.d.ts +0 -9
- package/lib/models/fixture-matrix-pixel-group-constraints.d.ts +0 -8
- package/lib/models/fixture-matrix-pixel-group.d.ts +0 -6
- package/lib/models/fixture-matrix.d.ts +0 -6
- package/lib/models/fixture-mode-channel.d.ts +0 -8
- package/lib/models/fixture-mode.d.ts +0 -8
- package/lib/models/fixture-physical.d.ts +0 -4
- package/lib/models/fixture-profile.d.ts +0 -39
- package/lib/models/fixture-wheel-slot.d.ts +0 -17
- package/lib/models/fixture-wheel.d.ts +0 -5
- package/lib/models/fixture.d.ts +0 -23
- package/lib/models/preset-fixture.d.ts +0 -5
- package/lib/models/preset-region-scene.d.ts +0 -9
- package/lib/models/preset.d.ts +0 -20
- package/lib/models/project.d.ts +0 -31
- package/lib/models/scene-playback-region.d.ts +0 -6
- package/lib/models/scene.d.ts +0 -11
- package/lib/preset/preset-settings/preset-settings.component.d.ts +0 -22
- package/lib/preset/preset.component.d.ts +0 -25
- package/lib/preview/models/color-changer-3d.d.ts +0 -16
- package/lib/preview/models/fixture-3d.d.ts +0 -38
- package/lib/preview/models/moving-head-3d.d.ts +0 -23
- package/lib/preview/preview.component.d.ts +0 -38
- package/lib/project/project-browser/project-browser.component.d.ts +0 -27
- package/lib/project/project-import/project-import.component.d.ts +0 -23
- package/lib/project/project-save/project-save.component.d.ts +0 -28
- package/lib/project/project-share/project-share.component.d.ts +0 -16
- package/lib/scene/scene-settings/scene-settings.component.d.ts +0 -20
- package/lib/scene/scene.component.d.ts +0 -22
- package/lib/services/animation.service.d.ts +0 -7
- package/lib/services/config.service.d.ts +0 -20
- package/lib/services/effect.service.d.ts +0 -8
- package/lib/services/error-dialog.service.d.ts +0 -12
- package/lib/services/fixture-pool.service.d.ts +0 -10
- package/lib/services/fixture.service.d.ts +0 -70
- package/lib/services/hotkey-target-exclude.service.d.ts +0 -7
- package/lib/services/intro.service.d.ts +0 -21
- package/lib/services/preset.service.d.ts +0 -64
- package/lib/services/preview-mesh.service.d.ts +0 -14
- package/lib/services/preview.service.d.ts +0 -42
- package/lib/services/project-load.service.d.ts +0 -36
- package/lib/services/project.service.d.ts +0 -26
- package/lib/services/scene.service.d.ts +0 -30
- package/lib/services/timeline.service.d.ts +0 -70
- package/lib/services/user-ensure-login.service.d.ts +0 -14
- package/lib/services/user.service.d.ts +0 -22
- package/lib/services/uuid.service.d.ts +0 -7
- package/lib/services/warning-dialog.service.d.ts +0 -12
- package/lib/timeline/composition-settings/composition-settings.component.d.ts +0 -48
- package/lib/timeline/timeline-grid/timeline-grid.component.d.ts +0 -22
- package/lib/timeline/timeline.component.d.ts +0 -50
- package/lib/user/user-login/user-login.component.d.ts +0 -21
- package/lib/user/user-register/user-register.component.d.ts +0 -26
- package/lib/wait-dialog/wait-dialog.component.d.ts +0 -8
- package/lib/warning-dialog/warning-dialog.component.d.ts +0 -16
- package/public_api.d.ts +0 -3
- package/rocketshow-designer-1.40.0.tgz +0 -0
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
|
-
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
4
|
-
import { finalize, map } from 'rxjs/operators';
|
|
5
|
-
import { Preset } from '../models/preset';
|
|
6
|
-
import { Project } from '../models/project';
|
|
7
|
-
import { WaitDialogComponent } from '../wait-dialog/wait-dialog.component';
|
|
8
|
-
import { FixtureService } from './fixture.service';
|
|
9
|
-
import { PresetService } from './preset.service';
|
|
10
|
-
import { PreviewService } from './preview.service';
|
|
11
|
-
import { ProjectService } from './project.service';
|
|
12
|
-
import { SceneService } from './scene.service';
|
|
13
|
-
import { TimelineService } from './timeline.service';
|
|
14
|
-
import { UuidService } from './uuid.service';
|
|
15
|
-
import { PresetFixture } from '../models/preset-fixture';
|
|
16
|
-
import { WarningDialogService } from './warning-dialog.service';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "./project.service";
|
|
19
|
-
import * as i2 from "./preview.service";
|
|
20
|
-
import * as i3 from "./fixture.service";
|
|
21
|
-
import * as i4 from "./preset.service";
|
|
22
|
-
import * as i5 from "./scene.service";
|
|
23
|
-
import * as i6 from "ngx-bootstrap/modal";
|
|
24
|
-
import * as i7 from "./uuid.service";
|
|
25
|
-
import * as i8 from "./timeline.service";
|
|
26
|
-
import * as i9 from "@angular/router";
|
|
27
|
-
import * as i10 from "./warning-dialog.service";
|
|
28
|
-
export class ProjectLoadService {
|
|
29
|
-
constructor(projectService, previewService, fixtureService, presetService, sceneService, modalService, uuidService, timelineService, router, activatedRoute, warningDialogService) {
|
|
30
|
-
this.projectService = projectService;
|
|
31
|
-
this.previewService = previewService;
|
|
32
|
-
this.fixtureService = fixtureService;
|
|
33
|
-
this.presetService = presetService;
|
|
34
|
-
this.sceneService = sceneService;
|
|
35
|
-
this.modalService = modalService;
|
|
36
|
-
this.uuidService = uuidService;
|
|
37
|
-
this.timelineService = timelineService;
|
|
38
|
-
this.router = router;
|
|
39
|
-
this.activatedRoute = activatedRoute;
|
|
40
|
-
this.warningDialogService = warningDialogService;
|
|
41
|
-
}
|
|
42
|
-
migrateToVersion2() {
|
|
43
|
-
for (let fixture of this.projectService.project.fixtures) {
|
|
44
|
-
if (this.fixtureService.fixtureHasGeneralChannel(fixture)) {
|
|
45
|
-
const projectFixture = new PresetFixture();
|
|
46
|
-
projectFixture.fixtureUuid = fixture.uuid;
|
|
47
|
-
this.projectService.project.presetFixtures.push(projectFixture);
|
|
48
|
-
}
|
|
49
|
-
const pixelKeys = this.fixtureService.fixtureGetUniquePixelKeys(fixture);
|
|
50
|
-
for (let pixelKey of pixelKeys) {
|
|
51
|
-
const projectFixture = new PresetFixture();
|
|
52
|
-
projectFixture.fixtureUuid = fixture.uuid;
|
|
53
|
-
projectFixture.pixelKey = pixelKey;
|
|
54
|
-
this.projectService.project.presetFixtures.push(projectFixture);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
for (let preset of this.projectService.project.presets) {
|
|
58
|
-
for (let fixtureUuid of preset.fixtureUuids) {
|
|
59
|
-
const fixture = this.fixtureService.getFixtureByUuid(fixtureUuid);
|
|
60
|
-
if (this.fixtureService.fixtureHasGeneralChannel(fixture)) {
|
|
61
|
-
const presetFixture = new PresetFixture();
|
|
62
|
-
presetFixture.fixtureUuid = fixtureUuid;
|
|
63
|
-
preset.fixtures.push(presetFixture);
|
|
64
|
-
}
|
|
65
|
-
const pixelKeys = this.fixtureService.fixtureGetUniquePixelKeys(fixture);
|
|
66
|
-
for (let pixelKey of pixelKeys) {
|
|
67
|
-
const presetFixture = new PresetFixture();
|
|
68
|
-
presetFixture.fixtureUuid = fixtureUuid;
|
|
69
|
-
presetFixture.pixelKey = pixelKey;
|
|
70
|
-
preset.fixtures.push(presetFixture);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
preset.fixtureUuids = undefined;
|
|
74
|
-
}
|
|
75
|
-
this.projectService.project.version = 2;
|
|
76
|
-
}
|
|
77
|
-
migrateFromOldProject() {
|
|
78
|
-
let migrated = false;
|
|
79
|
-
if (!this.projectService.project.version) {
|
|
80
|
-
// Migrate from version 1
|
|
81
|
-
this.migrateToVersion2();
|
|
82
|
-
migrated = true;
|
|
83
|
-
}
|
|
84
|
-
if (migrated) {
|
|
85
|
-
this.warningDialogService.show('designer.project.migrated').subscribe();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
afterLoad() {
|
|
89
|
-
this.migrateFromOldProject();
|
|
90
|
-
this.fixtureService.updateCachedFixtures();
|
|
91
|
-
this.presetService.removeDeletedFixtures();
|
|
92
|
-
this.previewService.updateFixtureSetup();
|
|
93
|
-
this.presetService.fixtureSelectionChanged.next();
|
|
94
|
-
this.presetService.autoOpenFirstEffect();
|
|
95
|
-
this.previewService.updateStage();
|
|
96
|
-
this.presetService.previewLive();
|
|
97
|
-
this.sceneService.selectPresetFromSelectedScene();
|
|
98
|
-
}
|
|
99
|
-
selectScenesPresetComposition() {
|
|
100
|
-
this.presetService.selectedPreset = this.presetService.getPresetByUuid(this.projectService.project.selectedPresetUuid);
|
|
101
|
-
this.sceneService.selectedScenes = [];
|
|
102
|
-
if (this.projectService.project.selectedSceneUuids) {
|
|
103
|
-
for (const uuid of this.projectService.project.selectedSceneUuids) {
|
|
104
|
-
this.sceneService.selectedScenes.push(this.sceneService.getSceneByUuid(uuid));
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
this.timelineService.selectedComposition = undefined;
|
|
108
|
-
this.timelineService.selectedCompositionIndex = undefined;
|
|
109
|
-
this.timelineService.destroyWaveSurfer();
|
|
110
|
-
for (let i = 0; i < this.projectService.project.compositions.length; i++) {
|
|
111
|
-
if (this.projectService.project.compositions[i].uuid === this.projectService.project.selectedCompositionUuid) {
|
|
112
|
-
this.timelineService.selectCompositionIndex(i);
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
load(id, name, shareToken) {
|
|
118
|
-
const ref = this.modalService.show(WaitDialogComponent, { keyboard: false, ignoreBackdropClick: true });
|
|
119
|
-
return this.projectService.getProject(id, name, shareToken).pipe(map((project) => {
|
|
120
|
-
if (project.version > this.projectService.currentProjectVersion) {
|
|
121
|
-
throw new Error('The project version ' +
|
|
122
|
-
project.version +
|
|
123
|
-
' is created with a newer version of the designer. Please update your Rocket Show version to open this project.');
|
|
124
|
-
}
|
|
125
|
-
this.projectService.project = project;
|
|
126
|
-
this.selectScenesPresetComposition();
|
|
127
|
-
this.afterLoad();
|
|
128
|
-
const queryParams = {
|
|
129
|
-
id,
|
|
130
|
-
token: project.shareToken,
|
|
131
|
-
};
|
|
132
|
-
this.router.navigate([], {
|
|
133
|
-
relativeTo: this.activatedRoute,
|
|
134
|
-
queryParams,
|
|
135
|
-
queryParamsHandling: 'merge', // remove to replace all query params by provided
|
|
136
|
-
});
|
|
137
|
-
}), finalize(() => {
|
|
138
|
-
// hide the modal again because of:
|
|
139
|
-
// https://github.com/valor-software/ngx-bootstrap/issues/3711
|
|
140
|
-
setTimeout(() => {
|
|
141
|
-
ref.hide();
|
|
142
|
-
}, 250);
|
|
143
|
-
setTimeout(() => {
|
|
144
|
-
ref.hide();
|
|
145
|
-
}, 500);
|
|
146
|
-
setTimeout(() => {
|
|
147
|
-
ref.hide();
|
|
148
|
-
}, 1500);
|
|
149
|
-
}));
|
|
150
|
-
}
|
|
151
|
-
new() {
|
|
152
|
-
// create an empty new project
|
|
153
|
-
const project = new Project();
|
|
154
|
-
project.uuid = this.uuidService.getUuid();
|
|
155
|
-
project.version = this.projectService.currentProjectVersion;
|
|
156
|
-
this.projectService.project = project;
|
|
157
|
-
this.projectService.project.shareToken = this.uuidService.getUuid();
|
|
158
|
-
// Add a default scene and preset
|
|
159
|
-
const preset = new Preset();
|
|
160
|
-
preset.uuid = this.uuidService.getUuid();
|
|
161
|
-
preset.name = 'New Preset';
|
|
162
|
-
this.projectService.project.presets.push(preset);
|
|
163
|
-
this.presetService.selectPreset(0);
|
|
164
|
-
this.sceneService.addScene();
|
|
165
|
-
this.projectService.project.scenes[0].presetUuids.push(preset.uuid);
|
|
166
|
-
this.projectService.project.previewPreset = true;
|
|
167
|
-
this.sceneService.selectedScenes = [this.projectService.project.scenes[0]];
|
|
168
|
-
this.presetService.selectedPreset = this.projectService.project.presets[0];
|
|
169
|
-
this.timelineService.selectedComposition = undefined;
|
|
170
|
-
this.timelineService.selectedCompositionIndex = undefined;
|
|
171
|
-
this.timelineService.destroyWaveSurfer();
|
|
172
|
-
this.afterLoad();
|
|
173
|
-
const queryParams = {
|
|
174
|
-
id: '',
|
|
175
|
-
token: '',
|
|
176
|
-
};
|
|
177
|
-
this.router.navigate([], {
|
|
178
|
-
relativeTo: this.activatedRoute,
|
|
179
|
-
queryParams,
|
|
180
|
-
queryParamsHandling: 'merge', // remove to replace all query params by provided
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
template() {
|
|
184
|
-
// load the template project with id 1
|
|
185
|
-
this.load(1, null).subscribe(() => {
|
|
186
|
-
this.projectService.project.id = undefined;
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
import(data) {
|
|
190
|
-
// import a project from a string
|
|
191
|
-
const project = new Project(JSON.parse(data));
|
|
192
|
-
project.id = undefined;
|
|
193
|
-
this.projectService.project = project;
|
|
194
|
-
this.selectScenesPresetComposition();
|
|
195
|
-
this.afterLoad();
|
|
196
|
-
}
|
|
197
|
-
static { this.ɵfac = function ProjectLoadService_Factory(t) { return new (t || ProjectLoadService)(i0.ɵɵinject(i1.ProjectService), i0.ɵɵinject(i2.PreviewService), i0.ɵɵinject(i3.FixtureService), i0.ɵɵinject(i4.PresetService), i0.ɵɵinject(i5.SceneService), i0.ɵɵinject(i6.BsModalService), i0.ɵɵinject(i7.UuidService), i0.ɵɵinject(i8.TimelineService), i0.ɵɵinject(i9.Router), i0.ɵɵinject(i9.ActivatedRoute), i0.ɵɵinject(i10.WarningDialogService)); }; }
|
|
198
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ProjectLoadService, factory: ProjectLoadService.ɵfac, providedIn: 'root' }); }
|
|
199
|
-
}
|
|
200
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectLoadService, [{
|
|
201
|
-
type: Injectable,
|
|
202
|
-
args: [{
|
|
203
|
-
providedIn: 'root',
|
|
204
|
-
}]
|
|
205
|
-
}], () => [{ type: i1.ProjectService }, { type: i2.PreviewService }, { type: i3.FixtureService }, { type: i4.PresetService }, { type: i5.SceneService }, { type: i6.BsModalService }, { type: i7.UuidService }, { type: i8.TimelineService }, { type: i9.Router }, { type: i9.ActivatedRoute }, { type: i10.WarningDialogService }], null); })();
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1sb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3NlcnZpY2VzL3Byb2plY3QtbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQUtoRSxN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T0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXRDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO21GQXRNVSxrQkFBa0I7dUVBQWxCLGtCQUFrQixXQUFsQixrQkFBa0IsbUJBRmpCLE1BQU07O2lGQUVQLGtCQUFrQjtjQUg5QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcmVzZXQgfSBmcm9tICcuLi9tb2RlbHMvcHJlc2V0JztcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi9tb2RlbHMvcHJvamVjdCc7XG5pbXBvcnQgeyBXYWl0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vd2FpdC1kaWFsb2cvd2FpdC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEZpeHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi9maXh0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4vcHJlc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJldmlld1NlcnZpY2UgfSBmcm9tICcuL3ByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9qZWN0U2VydmljZSB9IGZyb20gJy4vcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNjZW5lU2VydmljZSB9IGZyb20gJy4vc2NlbmUuc2VydmljZSc7XG5pbXBvcnQgeyBUaW1lbGluZVNlcnZpY2UgfSBmcm9tICcuL3RpbWVsaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXVpZFNlcnZpY2UgfSBmcm9tICcuL3V1aWQuc2VydmljZSc7XG5pbXBvcnQgeyBQcmVzZXRGaXh0dXJlIH0gZnJvbSAnLi4vbW9kZWxzL3ByZXNldC1maXh0dXJlJztcbmltcG9ydCB7IFdhcm5pbmdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi93YXJuaW5nLWRpYWxvZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2plY3RMb2FkU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJldmlld1NlcnZpY2U6IFByZXZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZml4dHVyZVNlcnZpY2U6IEZpeHR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJlc2V0U2VydmljZTogUHJlc2V0U2VydmljZSxcbiAgICBwcml2YXRlIHNjZW5lU2VydmljZTogU2NlbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHV1aWRTZXJ2aWNlOiBVdWlkU2VydmljZSxcbiAgICBwcml2YXRlIHRpbWVsaW5lU2VydmljZTogVGltZWxpbmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSB3YXJuaW5nRGlhbG9nU2VydmljZTogV2FybmluZ0RpYWxvZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIHByaXZhdGUgbWlncmF0ZVRvVmVyc2lvbjIoKSB7XG4gICAgZm9yIChsZXQgZml4dHVyZSBvZiB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZXMpIHtcbiAgICAgIGlmICh0aGlzLmZpeHR1cmVTZXJ2aWNlLmZpeHR1cmVIYXNHZW5lcmFsQ2hhbm5lbChmaXh0dXJlKSkge1xuICAgICAgICBjb25zdCBwcm9qZWN0Rml4dHVyZSA9IG5ldyBQcmVzZXRGaXh0dXJlKCk7XG4gICAgICAgIHByb2plY3RGaXh0dXJlLmZpeHR1cmVVdWlkID0gZml4dHVyZS51dWlkO1xuICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QucHJlc2V0Rml4dHVyZXMucHVzaChwcm9qZWN0Rml4dHVyZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBpeGVsS2V5cyA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZml4dHVyZUdldFVuaXF1ZVBpeGVsS2V5cyhmaXh0dXJlKTtcblxuICAgICAgZm9yIChsZXQgcGl4ZWxLZXkgb2YgcGl4ZWxLZXlzKSB7XG4gICAgICAgIGNvbnN0IHByb2plY3RGaXh0dXJlID0gbmV3IFByZXNldEZpeHR1cmUoKTtcbiAgICAgICAgcHJvamVjdEZpeHR1cmUuZml4dHVyZVV1aWQgPSBmaXh0dXJlLnV1aWQ7XG4gICAgICAgIHByb2plY3RGaXh0dXJlLnBpeGVsS2V5ID0gcGl4ZWxLZXk7XG4gICAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRGaXh0dXJlcy5wdXNoKHByb2plY3RGaXh0dXJlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgcHJlc2V0IG9mIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRzKSB7XG4gICAgICBmb3IgKGxldCBmaXh0dXJlVXVpZCBvZiBwcmVzZXQuZml4dHVyZVV1aWRzKSB7XG4gICAgICAgIGNvbnN0IGZpeHR1cmUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldEZpeHR1cmVCeVV1aWQoZml4dHVyZVV1aWQpO1xuXG4gICAgICAgIGlmICh0aGlzLmZpeHR1cmVTZXJ2aWNlLmZpeHR1cmVIYXNHZW5lcmFsQ2hhbm5lbChmaXh0dXJlKSkge1xuICAgICAgICAgIGNvbnN0IHByZXNldEZpeHR1cmUgPSBuZXcgUHJlc2V0Rml4dHVyZSgpO1xuICAgICAgICAgIHByZXNldEZpeHR1cmUuZml4dHVyZVV1aWQgPSBmaXh0dXJlVXVpZDtcbiAgICAgICAgICBwcmVzZXQuZml4dHVyZXMucHVzaChwcmVzZXRGaXh0dXJlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBpeGVsS2V5cyA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZml4dHVyZUdldFVuaXF1ZVBpeGVsS2V5cyhmaXh0dXJlKTtcblxuICAgICAgICBmb3IgKGxldCBwaXhlbEtleSBvZiBwaXhlbEtleXMpIHtcbiAgICAgICAgICBjb25zdCBwcmVzZXRGaXh0dXJlID0gbmV3IFByZXNldEZpeHR1cmUoKTtcbiAgICAgICAgICBwcmVzZXRGaXh0dXJlLmZpeHR1cmVVdWlkID0gZml4dHVyZVV1aWQ7XG4gICAgICAgICAgcHJlc2V0Rml4dHVyZS5waXhlbEtleSA9IHBpeGVsS2V5O1xuICAgICAgICAgIHByZXNldC5maXh0dXJlcy5wdXNoKHByZXNldEZpeHR1cmUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwcmVzZXQuZml4dHVyZVV1aWRzID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QudmVyc2lvbiA9IDI7XG4gIH1cblxuICBwcml2YXRlIG1pZ3JhdGVGcm9tT2xkUHJvamVjdCgpIHtcbiAgICBsZXQgbWlncmF0ZWQgPSBmYWxzZTtcblxuICAgIGlmICghdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnZlcnNpb24pIHtcbiAgICAgIC8vIE1pZ3JhdGUgZnJvbSB2ZXJzaW9uIDFcbiAgICAgIHRoaXMubWlncmF0ZVRvVmVyc2lvbjIoKTtcbiAgICAgIG1pZ3JhdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobWlncmF0ZWQpIHtcbiAgICAgIHRoaXMud2FybmluZ0RpYWxvZ1NlcnZpY2Uuc2hvdygnZGVzaWduZXIucHJvamVjdC5taWdyYXRlZCcpLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWZ0ZXJMb2FkKCkge1xuICAgIHRoaXMubWlncmF0ZUZyb21PbGRQcm9qZWN0KCk7XG4gICAgdGhpcy5maXh0dXJlU2VydmljZS51cGRhdGVDYWNoZWRGaXh0dXJlcygpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5yZW1vdmVEZWxldGVkRml4dHVyZXMoKTtcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnVwZGF0ZUZpeHR1cmVTZXR1cCgpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5maXh0dXJlU2VsZWN0aW9uQ2hhbmdlZC5uZXh0KCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLmF1dG9PcGVuRmlyc3RFZmZlY3QoKTtcbiAgICB0aGlzLnByZXZpZXdTZXJ2aWNlLnVwZGF0ZVN0YWdlKCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnByZXZpZXdMaXZlKCk7XG4gICAgdGhpcy5zY2VuZVNlcnZpY2Uuc2VsZWN0UHJlc2V0RnJvbVNlbGVjdGVkU2NlbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0U2NlbmVzUHJlc2V0Q29tcG9zaXRpb24oKSB7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0ID0gdGhpcy5wcmVzZXRTZXJ2aWNlLmdldFByZXNldEJ5VXVpZCh0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc2VsZWN0ZWRQcmVzZXRVdWlkKTtcbiAgICB0aGlzLnNjZW5lU2VydmljZS5zZWxlY3RlZFNjZW5lcyA9IFtdO1xuICAgIGlmICh0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc2VsZWN0ZWRTY2VuZVV1aWRzKSB7XG4gICAgICBmb3IgKGNvbnN0IHV1aWQgb2YgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnNlbGVjdGVkU2NlbmVVdWlkcykge1xuICAgICAgICB0aGlzLnNjZW5lU2VydmljZS5zZWxlY3RlZFNjZW5lcy5wdXNoKHRoaXMuc2NlbmVTZXJ2aWNlLmdldFNjZW5lQnlVdWlkKHV1aWQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50aW1lbGluZVNlcnZpY2Uuc2VsZWN0ZWRDb21wb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRpbWVsaW5lU2VydmljZS5zZWxlY3RlZENvbXBvc2l0aW9uSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50aW1lbGluZVNlcnZpY2UuZGVzdHJveVdhdmVTdXJmZXIoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5jb21wb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuY29tcG9zaXRpb25zW2ldLnV1aWQgPT09IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zZWxlY3RlZENvbXBvc2l0aW9uVXVpZCkge1xuICAgICAgICB0aGlzLnRpbWVsaW5lU2VydmljZS5zZWxlY3RDb21wb3NpdGlvbkluZGV4KGkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsb2FkKGlkOiBudW1iZXIsIG5hbWU6IHN0cmluZywgc2hhcmVUb2tlbj86IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coV2FpdERpYWxvZ0NvbXBvbmVudCwgeyBrZXlib2FyZDogZmFsc2UsIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0U2VydmljZS5nZXRQcm9qZWN0KGlkLCBuYW1lLCBzaGFyZVRva2VuKS5waXBlKFxuICAgICAgbWFwKChwcm9qZWN0KSA9PiB7XG4gICAgICAgIGlmIChwcm9qZWN0LnZlcnNpb24gPiB0aGlzLnByb2plY3RTZXJ2aWNlLmN1cnJlbnRQcm9qZWN0VmVyc2lvbikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdUaGUgcHJvamVjdCB2ZXJzaW9uICcgK1xuICAgICAgICAgICAgICBwcm9qZWN0LnZlcnNpb24gK1xuICAgICAgICAgICAgICAnIGlzIGNyZWF0ZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgdGhlIGRlc2lnbmVyLiBQbGVhc2UgdXBkYXRlIHlvdXIgUm9ja2V0IFNob3cgdmVyc2lvbiB0byBvcGVuIHRoaXMgcHJvamVjdC4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QgPSBwcm9qZWN0O1xuICAgICAgICB0aGlzLnNlbGVjdFNjZW5lc1ByZXNldENvbXBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMuYWZ0ZXJMb2FkKCk7XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXM6IFBhcmFtcyA9IHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB0b2tlbjogcHJvamVjdC5zaGFyZVRva2VuLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJywgLy8gcmVtb3ZlIHRvIHJlcGxhY2UgYWxsIHF1ZXJ5IHBhcmFtcyBieSBwcm92aWRlZFxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAvLyBoaWRlIHRoZSBtb2RhbCBhZ2FpbiBiZWNhdXNlIG9mOlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdmFsb3Itc29mdHdhcmUvbmd4LWJvb3RzdHJhcC9pc3N1ZXMvMzcxMVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICByZWYuaGlkZSgpO1xuICAgICAgICB9LCAyNTApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICByZWYuaGlkZSgpO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICByZWYuaGlkZSgpO1xuICAgICAgICB9LCAxNTAwKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5ldygpIHtcbiAgICAvLyBjcmVhdGUgYW4gZW1wdHkgbmV3IHByb2plY3RcbiAgICBjb25zdCBwcm9qZWN0ID0gbmV3IFByb2plY3QoKTtcbiAgICBwcm9qZWN0LnV1aWQgPSB0aGlzLnV1aWRTZXJ2aWNlLmdldFV1aWQoKTtcbiAgICBwcm9qZWN0LnZlcnNpb24gPSB0aGlzLnByb2plY3RTZXJ2aWNlLmN1cnJlbnRQcm9qZWN0VmVyc2lvbjtcbiAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QgPSBwcm9qZWN0O1xuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zaGFyZVRva2VuID0gdGhpcy51dWlkU2VydmljZS5nZXRVdWlkKCk7XG5cbiAgICAvLyBBZGQgYSBkZWZhdWx0IHNjZW5lIGFuZCBwcmVzZXRcbiAgICBjb25zdCBwcmVzZXQgPSBuZXcgUHJlc2V0KCk7XG4gICAgcHJlc2V0LnV1aWQgPSB0aGlzLnV1aWRTZXJ2aWNlLmdldFV1aWQoKTtcbiAgICBwcmVzZXQubmFtZSA9ICdOZXcgUHJlc2V0JztcbiAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QucHJlc2V0cy5wdXNoKHByZXNldCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdFByZXNldCgwKTtcblxuICAgIHRoaXMuc2NlbmVTZXJ2aWNlLmFkZFNjZW5lKCk7XG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnNjZW5lc1swXS5wcmVzZXRVdWlkcy5wdXNoKHByZXNldC51dWlkKTtcblxuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmV2aWV3UHJlc2V0ID0gdHJ1ZTtcblxuICAgIHRoaXMuc2NlbmVTZXJ2aWNlLnNlbGVjdGVkU2NlbmVzID0gW3RoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zY2VuZXNbMF1dO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCA9IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRzWzBdO1xuXG4gICAgdGhpcy50aW1lbGluZVNlcnZpY2Uuc2VsZWN0ZWRDb21wb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRpbWVsaW5lU2VydmljZS5zZWxlY3RlZENvbXBvc2l0aW9uSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50aW1lbGluZVNlcnZpY2UuZGVzdHJveVdhdmVTdXJmZXIoKTtcblxuICAgIHRoaXMuYWZ0ZXJMb2FkKCk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtczogUGFyYW1zID0ge1xuICAgICAgaWQ6ICcnLFxuICAgICAgdG9rZW46ICcnLFxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsIC8vIHJlbW92ZSB0byByZXBsYWNlIGFsbCBxdWVyeSBwYXJhbXMgYnkgcHJvdmlkZWRcbiAgICB9KTtcbiAgfVxuXG4gIHRlbXBsYXRlKCkge1xuICAgIC8vIGxvYWQgdGhlIHRlbXBsYXRlIHByb2plY3Qgd2l0aCBpZCAxXG4gICAgdGhpcy5sb2FkKDEsIG51bGwpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuaWQgPSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBpbXBvcnQoZGF0YTogc3RyaW5nKSB7XG4gICAgLy8gaW1wb3J0IGEgcHJvamVjdCBmcm9tIGEgc3RyaW5nXG4gICAgY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KEpTT04ucGFyc2UoZGF0YSkpO1xuICAgIHByb2plY3QuaWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0ID0gcHJvamVjdDtcblxuICAgIHRoaXMuc2VsZWN0U2NlbmVzUHJlc2V0Q29tcG9zaXRpb24oKTtcbiAgICB0aGlzLmFmdGVyTG9hZCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
-
import { ToastrService } from 'ngx-toastr';
|
|
6
|
-
import { map } from 'rxjs/operators';
|
|
7
|
-
import { Project } from '../models/project';
|
|
8
|
-
import { UserService } from './user.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/common/http";
|
|
11
|
-
import * as i2 from "./user.service";
|
|
12
|
-
import * as i3 from "@angular/router";
|
|
13
|
-
import * as i4 from "@ngx-translate/core";
|
|
14
|
-
import * as i5 from "ngx-toastr";
|
|
15
|
-
export class ProjectService {
|
|
16
|
-
constructor(http, userService, router, activatedRoute, translateService, toastrService) {
|
|
17
|
-
this.http = http;
|
|
18
|
-
this.userService = userService;
|
|
19
|
-
this.router = router;
|
|
20
|
-
this.activatedRoute = activatedRoute;
|
|
21
|
-
this.translateService = translateService;
|
|
22
|
-
this.toastrService = toastrService;
|
|
23
|
-
// the project-file versions used in this version of the designer (older ones will be migrated, newer ones are not supported)
|
|
24
|
-
this.currentProjectVersion = 2;
|
|
25
|
-
}
|
|
26
|
-
saveApi(project) {
|
|
27
|
-
return this.http.post('project', JSON.stringify(project), { headers: this.userService.getHeaders() }).pipe(map((response) => {
|
|
28
|
-
if (response) {
|
|
29
|
-
project.id = response.id;
|
|
30
|
-
if (response.shareToken) {
|
|
31
|
-
project.shareToken = response.shareToken;
|
|
32
|
-
}
|
|
33
|
-
const queryParams = {
|
|
34
|
-
id: project.id,
|
|
35
|
-
token: project.shareToken,
|
|
36
|
-
};
|
|
37
|
-
this.router.navigate([], {
|
|
38
|
-
relativeTo: this.activatedRoute,
|
|
39
|
-
queryParams,
|
|
40
|
-
queryParamsHandling: 'merge', // remove to replace all query params by provided
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
return null;
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
save(project) {
|
|
47
|
-
// tries to save the project and returns, whether it has been saved or not
|
|
48
|
-
this.saveApi(project).subscribe(() => {
|
|
49
|
-
const msg = 'designer.project.save-success';
|
|
50
|
-
const title = 'designer.project.save-success-title';
|
|
51
|
-
this.translateService.get([msg, title]).subscribe((result) => {
|
|
52
|
-
this.toastrService.success(result[msg], result[title]);
|
|
53
|
-
});
|
|
54
|
-
this.userService.setAutoLoadProject(project);
|
|
55
|
-
}, (response) => {
|
|
56
|
-
const msg = 'designer.project.save-error';
|
|
57
|
-
const title = 'designer.project.save-error-title';
|
|
58
|
-
const error = response && response.error ? response.error.error : 'unknown';
|
|
59
|
-
this.translateService.get([msg, title]).subscribe((result) => {
|
|
60
|
-
this.toastrService.error(result[msg] + ' (' + error + ')', result[title]);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
getAllProjects() {
|
|
65
|
-
return this.http.get('projects', { headers: this.userService.getHeaders() }).pipe(map((response) => {
|
|
66
|
-
const projects = [];
|
|
67
|
-
for (const project of response) {
|
|
68
|
-
const projectObject = new Project(project);
|
|
69
|
-
projects.push(projectObject);
|
|
70
|
-
}
|
|
71
|
-
return projects;
|
|
72
|
-
}));
|
|
73
|
-
}
|
|
74
|
-
deleteProject(project) {
|
|
75
|
-
return this.http.delete('project?id=' + project.id + '&name=' + project.name, { headers: this.userService.getHeaders() });
|
|
76
|
-
}
|
|
77
|
-
getProject(id, name, shareToken) {
|
|
78
|
-
return this.http.get('project?id=' + id + '&name=' + name + '&token=' + shareToken, { headers: this.userService.getHeaders() }).pipe(map((response) => {
|
|
79
|
-
const project = new Project(response);
|
|
80
|
-
project.id = id;
|
|
81
|
-
return project;
|
|
82
|
-
}));
|
|
83
|
-
}
|
|
84
|
-
static { this.ɵfac = function ProjectService_Factory(t) { return new (t || ProjectService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.UserService), i0.ɵɵinject(i3.Router), i0.ɵɵinject(i3.ActivatedRoute), i0.ɵɵinject(i4.TranslateService), i0.ɵɵinject(i5.ToastrService)); }; }
|
|
85
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ProjectService, factory: ProjectService.ɵfac, providedIn: 'root' }); }
|
|
86
|
-
}
|
|
87
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectService, [{
|
|
88
|
-
type: Injectable,
|
|
89
|
-
args: [{
|
|
90
|
-
providedIn: 'root',
|
|
91
|
-
}]
|
|
92
|
-
}], () => [{ type: i1.HttpClient }, { type: i2.UserService }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.TranslateService }, { type: i5.ToastrService }], null); })();
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduZXIvc3JjL2xpYi9zZXJ2aWNlcy9wcm9qZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBSzdDLE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDeEIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxhQUE0QjtRQUw1QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVR0Qyw2SEFBNkg7UUFDdEgsMEJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBUzlCLENBQUM7SUFFSSxPQUFPLENBQUMsT0FBZ0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFT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T0FBTyxDQUFDLENBQUM7Z0JBQzNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0IsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFVLEVBQUUsSUFBWSxFQUFFLFVBQW1CO1FBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNsSSxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUVoQixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrRUExRlUsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNOztpRkFFUCxjQUFjO2NBSDFCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL21vZGVscy9wcm9qZWN0JztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvamVjdFNlcnZpY2Uge1xuICAvLyB0aGUgY3VycmVudCBwcm9qZWN0XG4gIHB1YmxpYyBwcm9qZWN0OiBQcm9qZWN0O1xuXG4gIC8vIHRoZSBwcm9qZWN0LWZpbGUgdmVyc2lvbnMgdXNlZCBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIGRlc2lnbmVyIChvbGRlciBvbmVzIHdpbGwgYmUgbWlncmF0ZWQsIG5ld2VyIG9uZXMgYXJlIG5vdCBzdXBwb3J0ZWQpXG4gIHB1YmxpYyBjdXJyZW50UHJvamVjdFZlcnNpb24gPSAyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2VcbiAgKSB7fVxuXG4gIHByaXZhdGUgc2F2ZUFwaShwcm9qZWN0OiBQcm9qZWN0KTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Byb2plY3QnLCBKU09OLnN0cmluZ2lmeShwcm9qZWN0KSwgeyBoZWFkZXJzOiB0aGlzLnVzZXJTZXJ2aWNlLmdldEhlYWRlcnMoKSB9KS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIHByb2plY3QuaWQgPSByZXNwb25zZS5pZDtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc2hhcmVUb2tlbikge1xuICAgICAgICAgICAgcHJvamVjdC5zaGFyZVRva2VuID0gcmVzcG9uc2Uuc2hhcmVUb2tlbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcXVlcnlQYXJhbXM6IFBhcmFtcyA9IHtcbiAgICAgICAgICAgIGlkOiBwcm9qZWN0LmlkLFxuICAgICAgICAgICAgdG9rZW46IHByb2plY3Quc2hhcmVUb2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLCAvLyByZW1vdmUgdG8gcmVwbGFjZSBhbGwgcXVlcnkgcGFyYW1zIGJ5IHByb3ZpZGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlKHByb2plY3Q6IFByb2plY3QpIHtcbiAgICAvLyB0cmllcyB0byBzYXZlIHRoZSBwcm9qZWN0IGFuZCByZXR1cm5zLCB3aGV0aGVyIGl0IGhhcyBiZWVuIHNhdmVkIG9yIG5vdFxuICAgIHRoaXMuc2F2ZUFwaShwcm9qZWN0KS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1zZyA9ICdkZXNpZ25lci5wcm9qZWN0LnNhdmUtc3VjY2Vzcyc7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gJ2Rlc2lnbmVyLnByb2plY3Quc2F2ZS1zdWNjZXNzLXRpdGxlJztcblxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KFttc2csIHRpdGxlXSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc3VjY2VzcyhyZXN1bHRbbXNnXSwgcmVzdWx0W3RpdGxlXSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0QXV0b0xvYWRQcm9qZWN0KHByb2plY3QpO1xuICAgICAgfSxcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCBtc2cgPSAnZGVzaWduZXIucHJvamVjdC5zYXZlLWVycm9yJztcbiAgICAgICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIucHJvamVjdC5zYXZlLWVycm9yLXRpdGxlJztcbiAgICAgICAgY29uc3QgZXJyb3IgPSByZXNwb25zZSAmJiByZXNwb25zZS5lcnJvciA/IHJlc3BvbnNlLmVycm9yLmVycm9yIDogJ3Vua25vd24nO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihyZXN1bHRbbXNnXSArICcgKCcgKyBlcnJvciArICcpJywgcmVzdWx0W3RpdGxlXSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRBbGxQcm9qZWN0cygpOiBPYnNlcnZhYmxlPFByb2plY3RbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KCdwcm9qZWN0cycsIHsgaGVhZGVyczogdGhpcy51c2VyU2VydmljZS5nZXRIZWFkZXJzKCkgfSkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwcm9qZWN0czogUHJvamVjdFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcHJvamVjdCBvZiByZXNwb25zZSkge1xuICAgICAgICAgIGNvbnN0IHByb2plY3RPYmplY3QgPSBuZXcgUHJvamVjdChwcm9qZWN0KTtcbiAgICAgICAgICBwcm9qZWN0cy5wdXNoKHByb2plY3RPYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9qZWN0cztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVByb2plY3QocHJvamVjdDogUHJvamVjdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoJ3Byb2plY3Q/aWQ9JyArIHByb2plY3QuaWQgKyAnJm5hbWU9JyArIHByb2plY3QubmFtZSwgeyBoZWFkZXJzOiB0aGlzLnVzZXJTZXJ2aWNlLmdldEhlYWRlcnMoKSB9KTtcbiAgfVxuXG4gIGdldFByb2plY3QoaWQ6IG51bWJlciwgbmFtZTogc3RyaW5nLCBzaGFyZVRva2VuPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9qZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoJ3Byb2plY3Q/aWQ9JyArIGlkICsgJyZuYW1lPScgKyBuYW1lICsgJyZ0b2tlbj0nICsgc2hhcmVUb2tlbiwgeyBoZWFkZXJzOiB0aGlzLnVzZXJTZXJ2aWNlLmdldEhlYWRlcnMoKSB9KS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2plY3QgPSBuZXcgUHJvamVjdChyZXNwb25zZSk7XG4gICAgICAgIHByb2plY3QuaWQgPSBpZDtcblxuICAgICAgICByZXR1cm4gcHJvamVjdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { Scene } from '../models/scene';
|
|
4
|
-
import { EffectService } from './effect.service';
|
|
5
|
-
import { PresetService } from './preset.service';
|
|
6
|
-
import { ProjectService } from './project.service';
|
|
7
|
-
import { UuidService } from './uuid.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "./uuid.service";
|
|
10
|
-
import * as i2 from "./effect.service";
|
|
11
|
-
import * as i3 from "./preset.service";
|
|
12
|
-
import * as i4 from "./project.service";
|
|
13
|
-
export class SceneService {
|
|
14
|
-
constructor(uuidService, effectService, presetService, projectService) {
|
|
15
|
-
this.uuidService = uuidService;
|
|
16
|
-
this.effectService = effectService;
|
|
17
|
-
this.presetService = presetService;
|
|
18
|
-
this.projectService = projectService;
|
|
19
|
-
this.selectedScenes = [];
|
|
20
|
-
this.sceneColors = ['#945fda', '#61da5f', '#5fc3da', '#dad65f', '#da5f5f', '#246db7'];
|
|
21
|
-
this.multipleSelection = false;
|
|
22
|
-
this.sceneDeleted = new Subject();
|
|
23
|
-
this.sceneSelected = new Subject();
|
|
24
|
-
}
|
|
25
|
-
sceneIsSelected(scene) {
|
|
26
|
-
for (const selectedScene of this.selectedScenes) {
|
|
27
|
-
if (selectedScene.uuid === scene.uuid) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
presetIsSelected(preset) {
|
|
34
|
-
if (!this.selectedScenes || this.selectedScenes.length !== 1) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
for (const uuid of this.selectedScenes[0].presetUuids) {
|
|
38
|
-
if (preset.uuid === uuid) {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
switchSceneSelection(scene) {
|
|
45
|
-
// Select a scene if not yet selected or unselect it otherwise
|
|
46
|
-
if (this.sceneIsSelected(scene)) {
|
|
47
|
-
for (let i = 0; i < this.selectedScenes.length; i++) {
|
|
48
|
-
if (this.selectedScenes[i].uuid === scene.uuid) {
|
|
49
|
-
this.selectedScenes.splice(i, 1);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.selectedScenes.push(scene);
|
|
56
|
-
}
|
|
57
|
-
this.sceneSelected.next();
|
|
58
|
-
}
|
|
59
|
-
selectPresetFromSelectedScene() {
|
|
60
|
-
// select the first preset of the scene, if no preset of the current scene is already
|
|
61
|
-
// selected to make sure, the user does not edit a preset which is not even
|
|
62
|
-
// active in the current scene (and sees no change).
|
|
63
|
-
let firstPresetUuid;
|
|
64
|
-
// check, whether a preset of the current scene is already selected and do nothing
|
|
65
|
-
// in this case
|
|
66
|
-
for (const scene of this.selectedScenes) {
|
|
67
|
-
for (const presetUuid of scene.presetUuids) {
|
|
68
|
-
firstPresetUuid = presetUuid;
|
|
69
|
-
if (presetUuid === this.presetService.selectedPreset.uuid) {
|
|
70
|
-
// a preset of a currently selected scene is already selected -> do nothing
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (!firstPresetUuid) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
for (let i = 0; i < this.projectService.project.presets.length; i++) {
|
|
79
|
-
if (this.projectService.project.presets[i].uuid === firstPresetUuid) {
|
|
80
|
-
this.presetService.selectPreset(i);
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
selectScene(index) {
|
|
86
|
-
this.effectService.selectedEffect = undefined;
|
|
87
|
-
if (index >= this.projectService.project.scenes.length) {
|
|
88
|
-
this.selectedScenes = [];
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
if (this.multipleSelection) {
|
|
92
|
-
this.switchSceneSelection(this.projectService.project.scenes[index]);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
this.selectedScenes = [];
|
|
96
|
-
this.selectedScenes.push(this.projectService.project.scenes[index]);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
this.selectPresetFromSelectedScene();
|
|
100
|
-
// preview the complete scene
|
|
101
|
-
this.projectService.project.previewPreset = false;
|
|
102
|
-
this.projectService.project.selectedSceneUuids = [];
|
|
103
|
-
for (const scene of this.selectedScenes) {
|
|
104
|
-
this.projectService.project.selectedSceneUuids.push(scene.uuid);
|
|
105
|
-
}
|
|
106
|
-
this.presetService.previewSelectionChanged.next();
|
|
107
|
-
this.presetService.previewLive();
|
|
108
|
-
this.sceneSelected.next();
|
|
109
|
-
}
|
|
110
|
-
addScene(name) {
|
|
111
|
-
const scene = new Scene();
|
|
112
|
-
scene.uuid = this.uuidService.getUuid();
|
|
113
|
-
scene.name = name || 'New Scene';
|
|
114
|
-
if (this.projectService.project.scenes.length < this.sceneColors.length) {
|
|
115
|
-
scene.color = this.sceneColors[this.projectService.project.scenes.length];
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
scene.color = '#' + Math.random().toString(16).slice(2, 8).toUpperCase();
|
|
119
|
-
}
|
|
120
|
-
// Insert the new scene before the highest currently selected scene
|
|
121
|
-
let highestSelectedSceneIndex = 0;
|
|
122
|
-
for (let i = 0; i < this.projectService.project.scenes.length; i++) {
|
|
123
|
-
if (this.sceneIsSelected(this.projectService.project.scenes[i])) {
|
|
124
|
-
highestSelectedSceneIndex = i;
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
this.projectService.project.scenes.splice(highestSelectedSceneIndex, 0, scene);
|
|
129
|
-
this.selectScene(highestSelectedSceneIndex);
|
|
130
|
-
}
|
|
131
|
-
removeScene(scene) {
|
|
132
|
-
// remove all playback regions
|
|
133
|
-
for (const composition of this.projectService.project.compositions) {
|
|
134
|
-
for (let i = composition.scenePlaybackRegions.length - 1; i >= 0; i--) {
|
|
135
|
-
const compositionPlaybackRegion = composition.scenePlaybackRegions[i];
|
|
136
|
-
if (compositionPlaybackRegion.sceneUuid === scene.uuid) {
|
|
137
|
-
composition.scenePlaybackRegions.splice(i, 1);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// remove the scene
|
|
142
|
-
this.projectService.project.scenes.splice(this.projectService.project.scenes.indexOf(scene), 1);
|
|
143
|
-
if (this.projectService.project.scenes.length > 0) {
|
|
144
|
-
this.selectScene(0);
|
|
145
|
-
}
|
|
146
|
-
this.sceneDeleted.next();
|
|
147
|
-
}
|
|
148
|
-
getSceneByUuid(uuid) {
|
|
149
|
-
for (const scene of this.projectService.project.scenes) {
|
|
150
|
-
if (scene.uuid === uuid) {
|
|
151
|
-
return scene;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
static { this.ɵfac = function SceneService_Factory(t) { return new (t || SceneService)(i0.ɵɵinject(i1.UuidService), i0.ɵɵinject(i2.EffectService), i0.ɵɵinject(i3.PresetService), i0.ɵɵinject(i4.ProjectService)); }; }
|
|
156
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SceneService, factory: SceneService.ɵfac, providedIn: 'root' }); }
|
|
157
|
-
}
|
|
158
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SceneService, [{
|
|
159
|
-
type: Injectable,
|
|
160
|
-
args: [{
|
|
161
|
-
providedIn: 'root',
|
|
162
|
-
}]
|
|
163
|
-
}], () => [{ type: i1.UuidService }, { type: i2.EffectService }, { type: i3.PresetService }, { type: i4.ProjectService }], null); })();
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvc2VydmljZXMvc2NlbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBSzdDLE1BQU0sT0FBTyxZQUFZO0lBU3ZCLFlBQ1UsV0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsYUFBNEIsRUFDNUIsY0FBOEI7UUFIOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBWnhDLG1CQUFjLEdBQVksRUFBRSxDQUFDO1FBQzdCLGdCQUFXLEdBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTNGLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQixpQkFBWSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2xELGtCQUFhLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7SUFPaEQsQ0FBQztJQUVKLGVBQWUsQ0FBQyxLQUFZO1FBQzFCLEtB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LElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7NkVBeEtVLFlBQVk7dUVBQVosWUFBWSxXQUFaLFlBQVksbUJBRlgsTUFBTTs7aUZBRVAsWUFBWTtjQUh4QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcmVzZXQgfSBmcm9tICcuLi9tb2RlbHMvcHJlc2V0JztcbmltcG9ydCB7IFNjZW5lIH0gZnJvbSAnLi4vbW9kZWxzL3NjZW5lJztcbmltcG9ydCB7IEVmZmVjdFNlcnZpY2UgfSBmcm9tICcuL2VmZmVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuL3ByZXNldC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXVpZFNlcnZpY2UgfSBmcm9tICcuL3V1aWQuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY2VuZVNlcnZpY2Uge1xuICBzZWxlY3RlZFNjZW5lczogU2NlbmVbXSA9IFtdO1xuICBzY2VuZUNvbG9yczogc3RyaW5nW10gPSBbJyM5NDVmZGEnLCAnIzYxZGE1ZicsICcjNWZjM2RhJywgJyNkYWQ2NWYnLCAnI2RhNWY1ZicsICcjMjQ2ZGI3J107XG5cbiAgbXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZTtcblxuICBzY2VuZURlbGV0ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBzY2VuZVNlbGVjdGVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHV1aWRTZXJ2aWNlOiBVdWlkU2VydmljZSxcbiAgICBwcml2YXRlIGVmZmVjdFNlcnZpY2U6IEVmZmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVzZXRTZXJ2aWNlOiBQcmVzZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlXG4gICkge31cblxuICBzY2VuZUlzU2VsZWN0ZWQoc2NlbmU6IFNjZW5lKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBzZWxlY3RlZFNjZW5lIG9mIHRoaXMuc2VsZWN0ZWRTY2VuZXMpIHtcbiAgICAgIGlmIChzZWxlY3RlZFNjZW5lLnV1aWQgPT09IHNjZW5lLnV1aWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJlc2V0SXNTZWxlY3RlZChwcmVzZXQ6IFByZXNldCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFNjZW5lcyB8fCB0aGlzLnNlbGVjdGVkU2NlbmVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdXVpZCBvZiB0aGlzLnNlbGVjdGVkU2NlbmVzWzBdLnByZXNldFV1aWRzKSB7XG4gICAgICBpZiAocHJlc2V0LnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoU2NlbmVTZWxlY3Rpb24oc2NlbmU6IFNjZW5lKSB7XG4gICAgLy8gU2VsZWN0IGEgc2NlbmUgaWYgbm90IHlldCBzZWxlY3RlZCBvciB1bnNlbGVjdCBpdCBvdGhlcndpc2VcbiAgICBpZiAodGhpcy5zY2VuZUlzU2VsZWN0ZWQoc2NlbmUpKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRTY2VuZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTY2VuZXNbaV0udXVpZCA9PT0gc2NlbmUudXVpZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTY2VuZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkU2NlbmVzLnB1c2goc2NlbmUpO1xuICAgIH1cblxuICAgIHRoaXMuc2NlbmVTZWxlY3RlZC5uZXh0KCk7XG4gIH1cblxuICBzZWxlY3RQcmVzZXRGcm9tU2VsZWN0ZWRTY2VuZSgpIHtcbiAgICAvLyBzZWxlY3QgdGhlIGZpcnN0IHByZXNldCBvZiB0aGUgc2NlbmUsIGlmIG5vIHByZXNldCBvZiB0aGUgY3VycmVudCBzY2VuZSBpcyBhbHJlYWR5XG4gICAgLy8gc2VsZWN0ZWQgdG8gbWFrZSBzdXJlLCB0aGUgdXNlciBkb2VzIG5vdCBlZGl0IGEgcHJlc2V0IHdoaWNoIGlzIG5vdCBldmVuXG4gICAgLy8gYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjZW5lIChhbmQgc2VlcyBubyBjaGFuZ2UpLlxuXG4gICAgbGV0IGZpcnN0UHJlc2V0VXVpZDtcblxuICAgIC8vIGNoZWNrLCB3aGV0aGVyIGEgcHJlc2V0IG9mIHRoZSBjdXJyZW50IHNjZW5lIGlzIGFscmVhZHkgc2VsZWN0ZWQgYW5kIGRvIG5vdGhpbmdcbiAgICAvLyBpbiB0aGlzIGNhc2VcbiAgICBmb3IgKGNvbnN0IHNjZW5lIG9mIHRoaXMuc2VsZWN0ZWRTY2VuZXMpIHtcbiAgICAgIGZvciAoY29uc3QgcHJlc2V0VXVpZCBvZiBzY2VuZS5wcmVzZXRVdWlkcykge1xuICAgICAgICBmaXJzdFByZXNldFV1aWQgPSBwcmVzZXRVdWlkO1xuXG4gICAgICAgIGlmIChwcmVzZXRVdWlkID09PSB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQudXVpZCkge1xuICAgICAgICAgIC8vIGEgcHJlc2V0IG9mIGEgY3VycmVudGx5IHNlbGVjdGVkIHNjZW5lIGlzIGFscmVhZHkgc2VsZWN0ZWQgLT4gZG8gbm90aGluZ1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZmlyc3RQcmVzZXRVdWlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QucHJlc2V0cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRzW2ldLnV1aWQgPT09IGZpcnN0UHJlc2V0VXVpZCkge1xuICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0UHJlc2V0KGkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZWxlY3RTY2VuZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5lZmZlY3RTZXJ2aWNlLnNlbGVjdGVkRWZmZWN0ID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGluZGV4ID49IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zY2VuZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkU2NlbmVzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlU2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuc3dpdGNoU2NlbmVTZWxlY3Rpb24odGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnNjZW5lc1tpbmRleF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNjZW5lcyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2NlbmVzLnB1c2godGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnNjZW5lc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0UHJlc2V0RnJvbVNlbGVjdGVkU2NlbmUoKTtcblxuICAgIC8vIHByZXZpZXcgdGhlIGNvbXBsZXRlIHNjZW5lXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXZpZXdQcmVzZXQgPSBmYWxzZTtcblxuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zZWxlY3RlZFNjZW5lVXVpZHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHNjZW5lIG9mIHRoaXMuc2VsZWN0ZWRTY2VuZXMpIHtcbiAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zZWxlY3RlZFNjZW5lVXVpZHMucHVzaChzY2VuZS51dWlkKTtcbiAgICB9XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnByZXZpZXdTZWxlY3Rpb25DaGFuZ2VkLm5leHQoKTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcblxuICAgIHRoaXMuc2NlbmVTZWxlY3RlZC5uZXh0KCk7XG4gIH1cblxuICBhZGRTY2VuZShuYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2NlbmU6IFNjZW5lID0gbmV3IFNjZW5lKCk7XG4gICAgc2NlbmUudXVpZCA9IHRoaXMudXVpZFNlcnZpY2UuZ2V0VXVpZCgpO1xuICAgIHNjZW5lLm5hbWUgPSBuYW1lIHx8ICdOZXcgU2NlbmUnO1xuXG4gICAgaWYgKHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zY2VuZXMubGVuZ3RoIDwgdGhpcy5zY2VuZUNvbG9ycy5sZW5ndGgpIHtcbiAgICAgIHNjZW5lLmNvbG9yID0gdGhpcy5zY2VuZUNvbG9yc1t0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc2NlbmVzLmxlbmd0aF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjZW5lLmNvbG9yID0gJyMnICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc2xpY2UoMiwgOCkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvLyBJbnNlcnQgdGhlIG5ldyBzY2VuZSBiZWZvcmUgdGhlIGhpZ2hlc3QgY3VycmVudGx5IHNlbGVjdGVkIHNjZW5lXG4gICAgbGV0IGhpZ2hlc3RTZWxlY3RlZFNjZW5lSW5kZXggPSAwO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc2NlbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5zY2VuZUlzU2VsZWN0ZWQodGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnNjZW5lc1tpXSkpIHtcbiAgICAgICAgaGlnaGVzdFNlbGVjdGVkU2NlbmVJbmRleCA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zY2VuZXMuc3BsaWNlKGhpZ2hlc3RTZWxlY3RlZFNjZW5lSW5kZXgsIDAsIHNjZW5lKTtcbiAgICB0aGlzLnNlbGVjdFNjZW5lKGhpZ2hlc3RTZWxlY3RlZFNjZW5lSW5kZXgpO1xuICB9XG5cbiAgcmVtb3ZlU2NlbmUoc2NlbmU6IFNjZW5lKTogdm9pZCB7XG4gICAgLy8gcmVtb3ZlIGFsbCBwbGF5YmFjayByZWdpb25zXG4gICAgZm9yIChjb25zdCBjb21wb3NpdGlvbiBvZiB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuY29tcG9zaXRpb25zKSB7XG4gICAgICBmb3IgKGxldCBpID0gY29tcG9zaXRpb24uc2NlbmVQbGF5YmFja1JlZ2lvbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgY29tcG9zaXRpb25QbGF5YmFja1JlZ2lvbiA9IGNvbXBvc2l0aW9uLnNjZW5lUGxheWJhY2tSZWdpb25zW2ldO1xuICAgICAgICBpZiAoY29tcG9zaXRpb25QbGF5YmFja1JlZ2lvbi5zY2VuZVV1aWQgPT09IHNjZW5lLnV1aWQpIHtcbiAgICAgICAgICBjb21wb3NpdGlvbi5zY2VuZVBsYXliYWNrUmVnaW9ucy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgdGhlIHNjZW5lXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnNjZW5lcy5zcGxpY2UodGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnNjZW5lcy5pbmRleE9mKHNjZW5lKSwgMSk7XG4gICAgaWYgKHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5zY2VuZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RTY2VuZSgwKTtcbiAgICB9XG5cbiAgICB0aGlzLnNjZW5lRGVsZXRlZC5uZXh0KCk7XG4gIH1cblxuICBnZXRTY2VuZUJ5VXVpZCh1dWlkOiBzdHJpbmcpOiBTY2VuZSB7XG4gICAgZm9yIChjb25zdCBzY2VuZSBvZiB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3Quc2NlbmVzKSB7XG4gICAgICBpZiAoc2NlbmUudXVpZCA9PT0gdXVpZCkge1xuICAgICAgICByZXR1cm4gc2NlbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|