@rocketshow/designer 1.68.0 → 1.69.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/index.d.ts CHANGED
@@ -1,27 +1,27 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { NgZone, OnDestroy, AfterViewInit, OnInit, ElementRef, ChangeDetectorRef, OnChanges, EventEmitter, TemplateRef, SimpleChanges, PipeTransform } from '@angular/core';
3
- import * as i47 from '@ngx-translate/core';
3
+ import * as i56 from '@ngx-translate/core';
4
4
  import { TranslateService } from '@ngx-translate/core';
5
5
  import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';
6
6
  import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
7
7
  import { HttpClient, HttpHeaders } from '@angular/common/http';
8
- import * as i52 from 'ngx-toastr';
8
+ import * as i61 from 'ngx-toastr';
9
9
  import { ToastrService } from 'ngx-toastr';
10
10
  import { Observable, Subject } from 'rxjs';
11
- import * as i42 from '@angular/router';
11
+ import * as i51 from '@angular/router';
12
12
  import { Router, ActivatedRoute } from '@angular/router';
13
13
  import * as THREE from 'three';
14
14
  import WaveSurfer from 'wavesurfer.js';
15
- import { Options } from 'sortablejs';
16
- import * as i51 from 'ngx-dropzone-wrapper';
15
+ import * as i60 from 'ngx-dropzone-wrapper';
17
16
  import { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';
18
- import * as i43 from '@angular/platform-browser';
19
- import * as i44 from '@angular/platform-browser/animations';
20
- import * as i45 from '@angular/forms';
21
- import * as i46 from 'ngx-bootstrap-slider';
22
- import * as i48 from 'ngx-bootstrap/accordion';
23
- import * as i49 from 'ngx-bootstrap/popover';
24
- import * as i50 from 'ngx-bootstrap/typeahead';
17
+ import { Options } from 'sortablejs';
18
+ import * as i52 from '@angular/platform-browser';
19
+ import * as i53 from '@angular/platform-browser/animations';
20
+ import * as i54 from '@angular/forms';
21
+ import * as i55 from 'ngx-bootstrap-slider';
22
+ import * as i57 from 'ngx-bootstrap/accordion';
23
+ import * as i58 from 'ngx-bootstrap/popover';
24
+ import * as i59 from 'ngx-bootstrap/typeahead';
25
25
 
26
26
  declare class DesignerService {
27
27
  constructor();
@@ -338,6 +338,23 @@ declare class Composition {
338
338
  constructor(data?: any);
339
339
  }
340
340
 
341
+ /**
342
+ * A folder inside one of the trees (presets, scenes, fixtures). Folders only group
343
+ * what is already there: the items keep living in their flat list of the project and
344
+ * carry the uuid of the folder they are in.
345
+ *
346
+ * Folders and items are ordered together by their sortIndex, which counts through the
347
+ * children of one folder, so an item can sit above a folder and the other way round.
348
+ */
349
+ declare class Folder {
350
+ uuid: string;
351
+ name: string;
352
+ parentUuid: string;
353
+ sortIndex: number;
354
+ expanded: boolean;
355
+ constructor(data?: any);
356
+ }
357
+
341
358
  declare abstract class Effect {
342
359
  type: string;
343
360
  uuid: string;
@@ -362,36 +379,99 @@ declare class FixtureChannelValue {
362
379
  constructor(data?: any);
363
380
  }
364
381
 
382
+ /**
383
+ * Where a preset which brings its own fixture order puts one of the project's fixture
384
+ * folders. The folders themselves stay the project's — their name, what is inside them
385
+ * and how they are nested is the rig, shared by every preset. Only the position among
386
+ * their siblings can differ, so one preset can chase from the front truss to the back
387
+ * one while another does it the other way round.
388
+ */
389
+ declare class FolderPosition {
390
+ folderUuid: string;
391
+ sortIndex: number;
392
+ constructor(data?: any);
393
+ }
394
+
365
395
  declare class PresetFixture {
366
396
  fixtureUuid: string;
367
397
  pixelKey: string;
398
+ folderUuid: string;
399
+ sortIndex: number;
400
+ constructor(data?: any);
401
+ }
402
+
403
+ declare class PresetStepEffectAmount {
404
+ effectUuid: string;
405
+ amount: number;
406
+ constructor(data?: any);
407
+ }
408
+
409
+ type TransitionCurveType = 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'snap';
410
+
411
+ declare class PresetStep {
412
+ uuid: string;
413
+ startMillis: number;
414
+ transitionMillis: number;
415
+ transitionCurve: TransitionCurveType;
416
+ fixtureChannelValues: FixtureChannelValue[];
417
+ fixtureCapabilityValues: FixtureCapabilityValue[];
418
+ effectAmounts: PresetStepEffectAmount[];
368
419
  constructor(data?: any);
420
+ getEffectAmount(effectUuid: string): number;
369
421
  }
370
422
 
371
423
  declare class Preset {
372
424
  uuid: string;
373
425
  name: string;
426
+ folderUuid: string;
427
+ sortIndex: number;
428
+ color: string;
429
+ colorAuto: boolean;
430
+ icon: string;
374
431
  fixtureUuids: string[];
375
432
  fixtures: PresetFixture[];
433
+ fixtureFolders: FolderPosition[];
434
+ useGlobalFixtureOrder: boolean;
376
435
  fixtureChannelValues: FixtureChannelValue[];
377
436
  fixtureCapabilityValues: FixtureCapabilityValue[];
437
+ steps: PresetStep[];
438
+ stepsLoop: boolean;
439
+ stepsLoopMillis: number;
440
+ stepsPhasingMode: string;
441
+ stepsPhasingMillis: number;
442
+ stepsPhasingCycles: number;
443
+ stepsPhasingGroupSize: number;
378
444
  effects: Effect[];
445
+ mirrorPan: boolean;
446
+ mirrorTilt: boolean;
379
447
  startMillis: number;
380
448
  endMillis: number;
381
449
  fadeInMillis: number;
382
450
  fadeOutMillis: number;
451
+ fadeInCurve: TransitionCurveType;
452
+ fadeOutCurve: TransitionCurveType;
383
453
  fadeInPre: boolean;
384
454
  fadeOutPost: boolean;
385
455
  constructor(data?: any);
456
+ mirrorsCapability(type: FixtureCapabilityType): boolean;
457
+ getMirroredValuePercentage(type: FixtureCapabilityType, valuePercentage: number): number;
386
458
  }
387
459
 
388
460
  declare class Scene {
389
461
  uuid: string;
390
462
  name: string;
463
+ folderUuid: string;
464
+ sortIndex: number;
391
465
  color: string;
466
+ colorAuto: boolean;
467
+ icon: string;
468
+ expanded: boolean;
392
469
  presetUuids: string[];
470
+ dimmer: number;
393
471
  fadeInMillis: number;
394
472
  fadeOutMillis: number;
473
+ fadeInCurve: TransitionCurveType;
474
+ fadeOutCurve: TransitionCurveType;
395
475
  fadeInPre: boolean;
396
476
  fadeOutPost: boolean;
397
477
  constructor(data?: any);
@@ -423,6 +503,9 @@ declare class Project {
423
503
  masterDimmerValue: number;
424
504
  selectedPresetUuid: string;
425
505
  selectedSceneUuids: string[];
506
+ selectedStepUuid: string;
507
+ stepPreviewRunning: boolean;
508
+ stepPreviewStartMillis: number;
426
509
  previewPreset: boolean;
427
510
  selectedCompositionUuid: string;
428
511
  compositions: Composition[];
@@ -432,6 +515,9 @@ declare class Project {
432
515
  universes: UniverseConfig[];
433
516
  scenes: Scene[];
434
517
  presets: Preset[];
518
+ sceneFolders: Folder[];
519
+ presetFolders: Folder[];
520
+ fixtureFolders: Folder[];
435
521
  constructor(data?: any);
436
522
  }
437
523
 
@@ -442,7 +528,7 @@ declare class UserService {
442
528
  username: string;
443
529
  constructor(http: HttpClient);
444
530
  private loadFromLocalStorage;
445
- register(email: string, username: string, password: string): Observable<any>;
531
+ register(email: string, username: string, password: string, newsletter: boolean): Observable<any>;
446
532
  login(email: string, password: string): Observable<any>;
447
533
  logout(): void;
448
534
  isLoggedIn(): boolean;
@@ -468,6 +554,7 @@ declare class ConfigService {
468
554
  dropzoneChunking: boolean;
469
555
  universes: UniverseConfig[];
470
556
  freeUniverseEdit: boolean;
557
+ hardwarePromo: boolean;
471
558
  menuHeightChanged: Subject<void>;
472
559
  constructor();
473
560
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfigService, never>;
@@ -484,8 +571,10 @@ declare class ProjectService {
484
571
  private configService;
485
572
  project: Project;
486
573
  currentProjectVersion: number;
574
+ projectChanged: Subject<void>;
487
575
  constructor(http: HttpClient, userService: UserService, router: Router, activatedRoute: ActivatedRoute, translateService: TranslateService, toastrService: ToastrService, configService: ConfigService);
488
576
  private saveApi;
577
+ writeCompatibilityValues(project: Project): void;
489
578
  save(project: Project): void;
490
579
  getAllProjects(): Observable<Project[]>;
491
580
  deleteProject(project: Project): Observable<any>;
@@ -522,12 +611,16 @@ declare class FixtureService {
522
611
  private uuidService;
523
612
  private fixturePixelGroupResolveService;
524
613
  cachedFixtures: CachedFixture[];
614
+ private fixtureIndex;
615
+ private profileIndex;
616
+ private cachedFixtureIndex;
525
617
  settingsSelection: boolean;
526
618
  selectedSettingsFixtures: Fixture[];
527
619
  constructor(http: HttpClient, projectService: ProjectService, translateService: TranslateService, toastrService: ToastrService, uuidService: UuidService, fixturePixelGroupResolveService: FixturePixelGroupResolveService);
528
620
  getFixtureByUuid(uuid: string): Fixture;
529
621
  private fixtureUuidAndPixelKeyEquals;
530
622
  getCachedFixtureByUuid(uuid: string, pixelKey: string): CachedFixture;
623
+ private getCachedFixturesByUuid;
531
624
  getSearchProfiles(): Observable<FixtureProfile[]>;
532
625
  getProfileByUuid(uuid: string): FixtureProfile;
533
626
  loadProfileByUuid(uuid: string): Observable<void>;
@@ -584,22 +677,95 @@ declare class PreviewMeshService {
584
677
  static ɵprov: i0.ɵɵInjectableDeclaration<PreviewMeshService>;
585
678
  }
586
679
 
587
- declare class PresetRegionScene {
588
- preset: Preset;
589
- region: ScenePlaybackRegion;
590
- scene: Scene;
591
- constructor(preset: Preset, region: ScenePlaybackRegion, scene: Scene);
680
+ declare class HardwarePromoService {
681
+ private configService;
682
+ private barDismissed;
683
+ private sessionCount;
684
+ constructor(configService: ConfigService);
685
+ get enabled(): boolean;
686
+ countSession(): void;
687
+ get showBar(): boolean;
688
+ dismissBar(): void;
689
+ link(placement: string): string;
690
+ static ɵfac: i0.ɵɵFactoryDeclaration<HardwarePromoService, never>;
691
+ static ɵprov: i0.ɵɵInjectableDeclaration<HardwarePromoService>;
592
692
  }
593
693
 
594
694
  declare class EffectService {
695
+ private uuidService;
595
696
  selectedEffect: Effect;
596
697
  effectsOpen: boolean;
597
698
  effectsOpenChanged: Subject<void>;
598
- constructor();
699
+ effectsChanged: Subject<void>;
700
+ constructor(uuidService: UuidService);
701
+ duplicateEffect(preset: Preset, effect: Effect): Effect;
702
+ private copyOf;
599
703
  static ɵfac: i0.ɵɵFactoryDeclaration<EffectService, never>;
600
704
  static ɵprov: i0.ɵɵInjectableDeclaration<EffectService>;
601
705
  }
602
706
 
707
+ declare class PresetStepState {
708
+ currentStep: PresetStep;
709
+ currentStepProgress: number;
710
+ fixtureChannelValues: FixtureChannelValue[];
711
+ fixtureCapabilityValues: FixtureCapabilityValue[];
712
+ effectAmounts: Map<string, number>;
713
+ getEffectAmount(effectUuid: string): number;
714
+ }
715
+
716
+ declare class PresetStepService {
717
+ private uuidService;
718
+ constructor(uuidService: UuidService);
719
+ ensureStep(preset: Preset): PresetStep;
720
+ sortSteps(preset: Preset): void;
721
+ addStep(preset: Preset, copyOf?: PresetStep): PresetStep;
722
+ deleteStep(preset: Preset, step: PresetStep): void;
723
+ getStepsLoopMillis(preset: Preset): number;
724
+ getStepEndMillis(preset: Preset, index: number): number;
725
+ getStepTransitionMillis(preset: Preset, step: PresetStep): number;
726
+ stepsArePhased(preset: Preset): boolean;
727
+ getStepsPhasingMillis(preset: Preset, fixtureIndex?: number, fixtureCount?: number): number;
728
+ getStepState(step: PresetStep): PresetStepState;
729
+ getStateAtMillis(preset: Preset, presetTimeMillis: number): PresetStepState;
730
+ private capabilityValuesMatch;
731
+ private getMatchingCapabilityValue;
732
+ private getMatchingChannelValue;
733
+ private interpolate;
734
+ static ɵfac: i0.ɵɵFactoryDeclaration<PresetStepService, never>;
735
+ static ɵprov: i0.ɵɵInjectableDeclaration<PresetStepService>;
736
+ }
737
+
738
+ interface FolderItem {
739
+ folderUuid?: string;
740
+ sortIndex?: number;
741
+ }
742
+ interface FolderChild {
743
+ folder?: Folder;
744
+ item?: FolderItem;
745
+ sortIndex: number;
746
+ }
747
+ /**
748
+ * The order inside a tree with folders: folders and items of the same parent are
749
+ * ordered together by their sortIndex, so they can be interleaved freely.
750
+ *
751
+ * The flat item list of the project is kept in the order the tree shows it, so
752
+ * everything reading that list plainly still sees the same order as the user.
753
+ */
754
+ declare class FolderService {
755
+ private uuidService;
756
+ constructor(uuidService: UuidService);
757
+ createFolder(folders: Folder[], items: FolderItem[], name: string, parentUuid?: string): Folder;
758
+ placeLast(folders: Folder[], items: FolderItem[], item: FolderItem, parentUuid?: string): void;
759
+ getChildren(folders: Folder[], items: FolderItem[], parentUuid?: string): FolderChild[];
760
+ getFolderWithDescendants(folders: Folder[], folder: Folder): Folder[];
761
+ removeFolder(folders: Folder[], items: FolderItem[], folder: Folder): void;
762
+ renumber(folders: Folder[], items: FolderItem[], parentUuid?: string): void;
763
+ sortItems(folders: Folder[], items: FolderItem[]): void;
764
+ private sameFolder;
765
+ static ɵfac: i0.ɵɵFactoryDeclaration<FolderService, never>;
766
+ static ɵprov: i0.ɵɵInjectableDeclaration<FolderService>;
767
+ }
768
+
603
769
  declare class AnimationService {
604
770
  timeMillis: number;
605
771
  constructor();
@@ -622,11 +788,13 @@ declare class LivePreviewService {
622
788
  private projectService;
623
789
  private animationService;
624
790
  private timelineStateService;
791
+ private static readonly throttleMillis;
625
792
  private livePreviewTimer;
626
- private liveChangePending;
627
- private livePreviewPendingPositionMillis;
793
+ private pendingPositionMillis;
628
794
  constructor(configService: ConfigService, http: HttpClient, projectService: ProjectService, animationService: AnimationService, timelineStateService: TimelineStateService);
629
795
  previewLive(compositionName?: string, positionMillis?: number): void;
796
+ private startThrottleTimer;
797
+ private postPreview;
630
798
  stopPreviewPlay(): void;
631
799
  static ɵfac: i0.ɵɵFactoryDeclaration<LivePreviewService, never>;
632
800
  static ɵprov: i0.ɵɵInjectableDeclaration<LivePreviewService>;
@@ -634,19 +802,33 @@ declare class LivePreviewService {
634
802
 
635
803
  declare class PresetService {
636
804
  private effectService;
805
+ private presetStepService;
637
806
  private uuidService;
638
807
  private projectService;
639
808
  private fixtureService;
640
809
  private livePreviewService;
810
+ private animationService;
811
+ private folderService;
641
812
  selectedPreset: Preset;
813
+ static readonly defaultIcon = "fa-lightbulb-o";
814
+ selectedStep: PresetStep;
815
+ private presetFixtureIndex;
642
816
  previewSelectionChanged: Subject<void>;
817
+ presetsChanged: Subject<void>;
818
+ stepsChanged: Subject<void>;
643
819
  fixtureSelectionChanged: Subject<void>;
644
820
  fixtureSelectionSettingsChanged: Subject<void>;
645
821
  fixtureColorChanged: Subject<void>;
646
- constructor(effectService: EffectService, uuidService: UuidService, projectService: ProjectService, fixtureService: FixtureService, livePreviewService: LivePreviewService);
822
+ capabilityValuesChanged: Subject<void>;
823
+ constructor(effectService: EffectService, presetStepService: PresetStepService, uuidService: UuidService, projectService: ProjectService, fixtureService: FixtureService, livePreviewService: LivePreviewService, animationService: AnimationService, folderService: FolderService);
824
+ getPresetIcon(preset: Preset): string;
647
825
  getPresetByUuid(uuid: string): Preset;
648
826
  fixtureUuidAndPixelKeyEquals(fixtureUuid1: string, fixtureUuid2: string, pixelKey1: string, pixelKey2: string): boolean;
649
827
  getPresetFixture(preset: Preset, fixtureUuid: string, pixelKey?: string): PresetFixture;
828
+ private getPresetFixturesByUuid;
829
+ getOrderedPresetFixtures(preset: Preset): PresetFixture[];
830
+ getPresetFixtureCount(preset: Preset): number;
831
+ setUseGlobalFixtureOrder(preset: Preset, useGlobalFixtureOrder: boolean): void;
650
832
  fixtureIsSelected(fixture: Fixture, pixelKey: string, preset?: Preset): boolean;
651
833
  switchFixtureSelection(fixture: Fixture, pixelKey: string): void;
652
834
  selectAllFixtures(): void;
@@ -654,45 +836,114 @@ declare class PresetService {
654
836
  private presetFixtueEquals;
655
837
  removeDeletedFixtures(): void;
656
838
  updateFixtureSelection(): void;
657
- deleteCapabilityValue(preset: Preset, capabilityType: FixtureCapabilityType, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): void;
658
- setCapabilityValue(preset: Preset, capabilityType: FixtureCapabilityType, valuePercentage: number, slotNumber?: number, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): void;
659
- getCapabilityValue(preset: Preset, capabilityType: FixtureCapabilityType, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): FixtureCapabilityValue;
839
+ deleteCapabilityValue(step: PresetStep, capabilityType: FixtureCapabilityType, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): void;
840
+ private removeCapabilityValue;
841
+ setCapabilityValue(step: PresetStep, capabilityType: FixtureCapabilityType, valuePercentage: number, slotNumber?: number, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): void;
842
+ getCapabilityValue(step: PresetStep, capabilityType: FixtureCapabilityType, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): FixtureCapabilityValue;
843
+ getCapabilityValueOf(capabilityValues: FixtureCapabilityValue[], capabilityType: FixtureCapabilityType, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): FixtureCapabilityValue;
660
844
  deleteChannelValue(channelName: string, profileUuid: string): void;
661
845
  setChannelValue(channelName: string, profileUuid: string, value: number): void;
662
846
  getChannelValue(channelName: string, profileUuid: string): number;
663
- getApproximatedColorWheelCapability(preset: Preset, cachedChannel: CachedFixtureChannel): CachedFixtureCapability;
847
+ getApproximatedColorWheelCapability(capabilityValues: FixtureCapabilityValue[], cachedChannel: CachedFixtureChannel): CachedFixtureCapability;
848
+ getCapabilityChannelValue(capabilityValue: FixtureCapabilityValue, channel: CachedFixtureChannel, channelCapability: CachedFixtureCapability, preset?: Preset): number;
849
+ getChannelValueFromCapabilities(capabilityValues: FixtureCapabilityValue[], channel: CachedFixtureChannel, profileUuid: string, preset?: Preset): number;
850
+ channelIsDrivenByEffect(preset: Preset, channel: CachedFixtureChannel, profileUuid: string): boolean;
664
851
  private hasCapabilityType;
665
852
  hasCapabilityDimmer(): boolean;
666
853
  hasCapabilityColor(): boolean;
667
854
  hasCapabilityColorOrColorWheel(): boolean;
668
855
  hasCapabilityPanTilt(): boolean;
856
+ setPreviewPreset(previewPreset: boolean): void;
669
857
  selectPreset(index: number): void;
858
+ getEditStep(preset: Preset): PresetStep;
859
+ selectStep(step: PresetStep): void;
860
+ selectStepFromProject(): void;
861
+ addStep(): PresetStep;
862
+ deleteStep(step: PresetStep): void;
863
+ stepChanged(): void;
864
+ activeStep: PresetStep;
865
+ activeStepProgress: number;
866
+ private stepsVisibleOverride;
867
+ get stepsVisible(): boolean;
868
+ switchStepsVisible(): void;
869
+ get stepPreviewRunning(): boolean;
870
+ setStepPreviewRunning(running: boolean): void;
871
+ stepPreviewFinished(): boolean;
872
+ get stepPreviewStartMillis(): number;
670
873
  autoOpenFirstEffect(): void;
671
874
  addPreset(name?: string): void;
875
+ duplicatePreset(preset: Preset, name?: string): Preset;
876
+ removePreset(preset: Preset): void;
672
877
  getSelectedProfiles(): FixtureProfile[];
673
878
  getSelectedProfileChannels(selectedProfiles: FixtureProfile[]): Map<FixtureProfile, CachedFixtureChannel[]>;
674
879
  static ɵfac: i0.ɵɵFactoryDeclaration<PresetService, never>;
675
880
  static ɵprov: i0.ɵɵInjectableDeclaration<PresetService>;
676
881
  }
677
882
 
883
+ declare class PresetRegionScene {
884
+ preset: Preset;
885
+ region: ScenePlaybackRegion;
886
+ scene: Scene;
887
+ constructor(preset: Preset, region: ScenePlaybackRegion, scene: Scene);
888
+ }
889
+
890
+ /**
891
+ * The colors the scenes and the presets are marked with in the lists and on the
892
+ * timeline.
893
+ *
894
+ * A color is either picked by hand or derived from what the item does: a preset takes
895
+ * the color it puts on its fixtures, a scene the mixed color of the presets it plays.
896
+ * An item which sets no color at all falls back to the color stored with it (the one
897
+ * picked last, or the palette color a new scene starts with).
898
+ */
899
+ declare class ColorService {
900
+ private fixtureService;
901
+ private presetService;
902
+ readonly palette: string[];
903
+ readonly pickerColors: string[];
904
+ private static readonly MIN_BRIGHTNESS;
905
+ constructor(fixtureService: FixtureService, presetService: PresetService);
906
+ getPresetColor(preset: Preset): string;
907
+ getDerivedPresetColor(preset: Preset): string;
908
+ getSceneColor(scene: Scene): string;
909
+ getDerivedSceneColor(scene: Scene): string;
910
+ getNewSceneColor(sceneCount: number): string;
911
+ toRgba(hex: string, alpha: number): string;
912
+ private getPresetCapabilityValues;
913
+ private getColorIntensityColor;
914
+ private getColorIntensity;
915
+ private getWheelSlotColor;
916
+ private toDisplayColor;
917
+ static ɵfac: i0.ɵɵFactoryDeclaration<ColorService, never>;
918
+ static ɵprov: i0.ɵɵInjectableDeclaration<ColorService>;
919
+ }
920
+
678
921
  declare class SceneService {
679
922
  private uuidService;
923
+ private colorService;
680
924
  private effectService;
925
+ private folderService;
681
926
  private presetService;
682
927
  private projectService;
683
928
  private livePreviewService;
684
929
  selectedScenes: Scene[];
685
- sceneColors: string[];
686
- multipleSelection: boolean;
930
+ static readonly defaultIcon = "fa-picture-o";
687
931
  sceneDeleted: Subject<void>;
688
932
  sceneSelected: Subject<void>;
689
- constructor(uuidService: UuidService, effectService: EffectService, presetService: PresetService, projectService: ProjectService, livePreviewService: LivePreviewService);
933
+ scenesChanged: Subject<void>;
934
+ constructor(uuidService: UuidService, colorService: ColorService, effectService: EffectService, folderService: FolderService, presetService: PresetService, projectService: ProjectService, livePreviewService: LivePreviewService);
935
+ getSceneIcon(scene: Scene): string;
690
936
  sceneIsSelected(scene: Scene): boolean;
937
+ getScenePresets(scene: Scene): Preset[];
938
+ addPresetToScene(scene: Scene, preset: Preset, index?: number): void;
939
+ removePresetFromScene(scene: Scene, preset: Preset): void;
940
+ removePresetFromAllScenes(preset: Preset): void;
691
941
  presetIsSelected(preset: Preset): boolean;
692
- switchSceneSelection(scene: Scene): void;
693
942
  selectPresetFromSelectedScene(): void;
694
943
  selectScene(index: number): void;
695
- addScene(name?: string): void;
944
+ selectScenes(scenes: Scene[], preset?: Preset): void;
945
+ addScene(name?: string, folderUuid?: string, above?: Scene): Scene;
946
+ duplicateScene(scene: Scene, name?: string): Scene;
696
947
  removeScene(scene: Scene): void;
697
948
  getSceneByUuid(uuid: string): Scene;
698
949
  static ɵfac: i0.ɵɵFactoryDeclaration<SceneService, never>;
@@ -702,6 +953,7 @@ declare class SceneService {
702
953
  declare class TimelineService {
703
954
  private sceneService;
704
955
  private presetService;
956
+ private colorService;
705
957
  private projectService;
706
958
  private http;
707
959
  private configService;
@@ -722,14 +974,14 @@ declare class TimelineService {
722
974
  detectChanges: Subject<void>;
723
975
  externalCompositionsAvailable: boolean;
724
976
  loadingAudioFile: boolean;
725
- constructor(sceneService: SceneService, presetService: PresetService, projectService: ProjectService, http: HttpClient, configService: ConfigService, ngZone: NgZone, timelineStateService: TimelineStateService, livePreviewService: LivePreviewService);
977
+ constructor(sceneService: SceneService, presetService: PresetService, colorService: ColorService, projectService: ProjectService, http: HttpClient, configService: ConfigService, ngZone: NgZone, timelineStateService: TimelineStateService, livePreviewService: LivePreviewService);
726
978
  get playState(): string;
727
979
  set playState(playState: string);
728
980
  get selectedComposition(): Composition;
729
981
  set selectedComposition(selectedComposition: Composition);
730
982
  get selectedCompositionIndex(): number;
731
983
  set selectedCompositionIndex(selectedCompositionIndex: number);
732
- private redrawAllRegions;
984
+ redrawAllRegions(): void;
733
985
  private pad;
734
986
  private msToTime;
735
987
  private updateCurrentTime;
@@ -738,7 +990,7 @@ declare class TimelineService {
738
990
  formatTimeCallback(seconds: number, pxPerSec: number): string | number;
739
991
  timeInterval(pxPerSec: number): number;
740
992
  primaryLabelInterval(pxPerSec: number): number;
741
- secondaryLabelInterval(pxPerSec: number): 5 | 0 | 2;
993
+ secondaryLabelInterval(pxPerSec: number): 0 | 2 | 5;
742
994
  private seekWithTimeline;
743
995
  applyZoom(zoom: any): void;
744
996
  private isWaveSurferReady;
@@ -748,12 +1000,15 @@ declare class TimelineService {
748
1000
  deleteSelectedComposition(): void;
749
1001
  destroyWaveSurfer(): void;
750
1002
  createWaveSurfer(): void;
751
- private hexToRgb;
1003
+ private regionColor;
752
1004
  private updateRegionSelection;
753
1005
  updateSelectedRegion(): void;
754
1006
  private setSelectedRegion;
755
1007
  private getRegionSnapToGridValue;
756
1008
  private connectRegion;
1009
+ updateStepMarkers(): void;
1010
+ private drawStepMarkers;
1011
+ private createStepMarker;
757
1012
  private drawRegion;
758
1013
  removeRegion(): void;
759
1014
  getPresetsInTime(timeMillis: number): PresetRegionScene[];
@@ -767,6 +1022,7 @@ declare class TimelineService {
767
1022
 
768
1023
  declare class PreviewService implements OnDestroy {
769
1024
  private presetService;
1025
+ private presetStepService;
770
1026
  private fixtureService;
771
1027
  private sceneService;
772
1028
  private timelineService;
@@ -780,14 +1036,18 @@ declare class PreviewService implements OnDestroy {
780
1036
  private stageMaterial;
781
1037
  fixtureMaterial: THREE.MeshStandardMaterial;
782
1038
  fixtureSelectedMaterial: THREE.MeshLambertMaterial;
783
- constructor(presetService: PresetService, fixtureService: FixtureService, sceneService: SceneService, timelineService: TimelineService, projectService: ProjectService);
1039
+ constructor(presetService: PresetService, presetStepService: PresetStepService, fixtureService: FixtureService, sceneService: SceneService, timelineService: TimelineService, projectService: ProjectService);
784
1040
  private getAlreadyCalculatedFixture;
785
1041
  getPresets(timeMillis: number): PresetRegionScene[];
786
1042
  private mixChannelValue;
787
1043
  private getFixtureIndex;
1044
+ private getPresetStartMillis;
1045
+ private getPresetStepState;
788
1046
  private getPresetIntensity;
789
1047
  private mixCapabilityValues;
790
1048
  private mixChannelValues;
1049
+ private getBeatsPerMinute;
1050
+ private getCurveTimeMillis;
791
1051
  private mixEffects;
792
1052
  getChannelValues(timeMillis: number, presets: PresetRegionScene[]): Map<CachedFixture, FixtureChannelValue[]>;
793
1053
  fixtureIsSelected(uuid: string, pixelKey: string, presets: PresetRegionScene[]): boolean;
@@ -805,8 +1065,11 @@ declare class PreviewComponent implements AfterViewInit {
805
1065
  private animationService;
806
1066
  private previewService;
807
1067
  private timelineService;
808
- private projectService;
1068
+ projectService: ProjectService;
1069
+ private presetService;
1070
+ private sceneService;
809
1071
  private ngZone;
1072
+ hardwarePromoService: HardwarePromoService;
810
1073
  private renderer;
811
1074
  private scene;
812
1075
  private camera;
@@ -814,11 +1077,14 @@ declare class PreviewComponent implements AfterViewInit {
814
1077
  private fixtures3d;
815
1078
  private fixtureGroups;
816
1079
  private canvasRef;
817
- constructor(fixtureService: FixtureService, previewMeshService: PreviewMeshService, animationService: AnimationService, previewService: PreviewService, timelineService: TimelineService, projectService: ProjectService, ngZone: NgZone);
1080
+ previewHidden: boolean;
1081
+ promoLink: string;
1082
+ constructor(fixtureService: FixtureService, previewMeshService: PreviewMeshService, animationService: AnimationService, previewService: PreviewService, timelineService: TimelineService, projectService: ProjectService, presetService: PresetService, sceneService: SceneService, ngZone: NgZone, hardwarePromoService: HardwarePromoService);
818
1083
  private syncFixtures;
819
1084
  private get canvas();
820
1085
  private render;
821
1086
  private updateStagePosition;
1087
+ private updateFixtures;
822
1088
  private animate;
823
1089
  private getAspectRatio;
824
1090
  onResize(): void;
@@ -826,6 +1092,9 @@ declare class PreviewComponent implements AfterViewInit {
826
1092
  private setupCamera;
827
1093
  private setupControls;
828
1094
  private setupScene;
1095
+ soloPreset(): boolean;
1096
+ switchPreviewHidden(): void;
1097
+ previewName(): string;
829
1098
  ngAfterViewInit(): void;
830
1099
  static ɵfac: i0.ɵɵFactoryDeclaration<PreviewComponent, never>;
831
1100
  static ɵcmp: i0.ɵɵComponentDeclaration<PreviewComponent, "lib-app-preview", never, {}, {}, never, never, false, never>;
@@ -850,8 +1119,10 @@ declare class FixturePoolService {
850
1119
  }
851
1120
 
852
1121
  declare class HotkeyTargetExcludeService {
1122
+ private static readonly textInputTypes;
853
1123
  constructor();
854
1124
  exclude(event: any): boolean;
1125
+ excludeTyping(event: any): boolean;
855
1126
  static ɵfac: i0.ɵɵFactoryDeclaration<HotkeyTargetExcludeService, never>;
856
1127
  static ɵprov: i0.ɵɵInjectableDeclaration<HotkeyTargetExcludeService>;
857
1128
  }
@@ -889,6 +1160,7 @@ declare class ProjectLoadService {
889
1160
  private previewService;
890
1161
  private fixtureService;
891
1162
  private presetService;
1163
+ private presetStepService;
892
1164
  private sceneService;
893
1165
  private modalService;
894
1166
  private uuidService;
@@ -898,16 +1170,26 @@ declare class ProjectLoadService {
898
1170
  private warningDialogService;
899
1171
  private livePreviewService;
900
1172
  private configService;
901
- constructor(projectService: ProjectService, previewService: PreviewService, fixtureService: FixtureService, presetService: PresetService, sceneService: SceneService, modalService: BsModalService, uuidService: UuidService, timelineService: TimelineService, router: Router, activatedRoute: ActivatedRoute, warningDialogService: WarningDialogService, livePreviewService: LivePreviewService, configService: ConfigService);
1173
+ private effectService;
1174
+ constructor(projectService: ProjectService, previewService: PreviewService, fixtureService: FixtureService, presetService: PresetService, presetStepService: PresetStepService, sceneService: SceneService, modalService: BsModalService, uuidService: UuidService, timelineService: TimelineService, router: Router, activatedRoute: ActivatedRoute, warningDialogService: WarningDialogService, livePreviewService: LivePreviewService, configService: ConfigService, effectService: EffectService);
902
1175
  private migrateToVersion2;
1176
+ private migrateToVersion3;
1177
+ private migrateToVersion4;
1178
+ private migrateToVersion5;
1179
+ private migrateToVersion6;
1180
+ private migrateToVersion7;
1181
+ private globalFixtureIndex;
903
1182
  private migrateFromOldProject;
904
1183
  private setupUniverses;
905
1184
  private afterLoad;
1185
+ private announceChanges;
906
1186
  private selectScenesPresetComposition;
907
1187
  load(id: number, name: string, shareToken?: string): Observable<void>;
908
1188
  new(): void;
909
1189
  template(): void;
910
1190
  import(data: string): void;
1191
+ private restoreSelectedComposition;
1192
+ restoreProject(project: Project): void;
911
1193
  static ɵfac: i0.ɵɵFactoryDeclaration<ProjectLoadService, never>;
912
1194
  static ɵprov: i0.ɵɵInjectableDeclaration<ProjectLoadService>;
913
1195
  }
@@ -961,6 +1243,46 @@ declare class TimelineComponent implements OnInit, AfterViewInit {
961
1243
  static ɵcmp: i0.ɵɵComponentDeclaration<TimelineComponent, "lib-app-timeline", never, {}, {}, never, never, false, never>;
962
1244
  }
963
1245
 
1246
+ declare class UndoService implements OnDestroy {
1247
+ private projectService;
1248
+ private projectLoadService;
1249
+ private ngZone;
1250
+ private static readonly maxSteps;
1251
+ private static readonly maxCharacters;
1252
+ private static readonly settleMillis;
1253
+ private static readonly typingMillis;
1254
+ private static readonly untrackedKeys;
1255
+ private static readonly gestureStartEvents;
1256
+ private static readonly gestureEndEvents;
1257
+ private static readonly typingEvents;
1258
+ private undoSteps;
1259
+ private redoSteps;
1260
+ private currentState;
1261
+ private restoring;
1262
+ private pointerDown;
1263
+ private captureTimer;
1264
+ private gestureStartListener;
1265
+ private gestureEndListener;
1266
+ private typingListener;
1267
+ constructor(projectService: ProjectService, projectLoadService: ProjectLoadService, ngZone: NgZone);
1268
+ ngOnDestroy(): void;
1269
+ private eachInteractionEvent;
1270
+ get canUndo(): boolean;
1271
+ get canRedo(): boolean;
1272
+ private serialize;
1273
+ private trimHistory;
1274
+ private scheduleCapture;
1275
+ private capturePending;
1276
+ captureChanges(): void;
1277
+ private capture;
1278
+ reset(): void;
1279
+ private apply;
1280
+ undo(): void;
1281
+ redo(): void;
1282
+ static ɵfac: i0.ɵɵFactoryDeclaration<UndoService, never>;
1283
+ static ɵprov: i0.ɵɵInjectableDeclaration<UndoService>;
1284
+ }
1285
+
964
1286
  declare class DesignerComponent implements OnInit, AfterViewInit {
965
1287
  private translateService;
966
1288
  projectService: ProjectService;
@@ -976,7 +1298,11 @@ declare class DesignerComponent implements OnInit, AfterViewInit {
976
1298
  private fixtureService;
977
1299
  private timelineService;
978
1300
  introService: IntroService;
1301
+ presetService: PresetService;
1302
+ colorService: ColorService;
979
1303
  private effectService;
1304
+ private hardwarePromoService;
1305
+ undoService: UndoService;
980
1306
  set menuHeightPx(value: number);
981
1307
  set externalCompositionsAvailable(value: boolean);
982
1308
  set restUrl(value: string);
@@ -991,13 +1317,14 @@ declare class DesignerComponent implements OnInit, AfterViewInit {
991
1317
  set dropzoneChunking(value: boolean);
992
1318
  set universes(value: UniverseConfig[]);
993
1319
  set freeUniverseEdit(value: boolean);
1320
+ set hardwarePromo(value: boolean);
994
1321
  private designerMenuSizePx;
995
1322
  private splitGutterSizePx;
996
1323
  totalMenuHeightPx: number;
997
1324
  currentTab: string;
998
1325
  previewComponent: PreviewComponent;
999
1326
  timelineComponent: TimelineComponent;
1000
- constructor(translateService: TranslateService, projectService: ProjectService, configService: ConfigService, fixturePoolService: FixturePoolService, hotkeyTargetExcludeService: HotkeyTargetExcludeService, modalService: BsModalService, userService: UserService, userEnsureLoginService: UserEnsureLoginService, projectLoadService: ProjectLoadService, warningDialogService: WarningDialogService, errorDialogService: ErrorDialogService, fixtureService: FixtureService, timelineService: TimelineService, introService: IntroService, effectService: EffectService);
1327
+ constructor(translateService: TranslateService, projectService: ProjectService, configService: ConfigService, fixturePoolService: FixturePoolService, hotkeyTargetExcludeService: HotkeyTargetExcludeService, modalService: BsModalService, userService: UserService, userEnsureLoginService: UserEnsureLoginService, projectLoadService: ProjectLoadService, warningDialogService: WarningDialogService, errorDialogService: ErrorDialogService, fixtureService: FixtureService, timelineService: TimelineService, introService: IntroService, presetService: PresetService, colorService: ColorService, effectService: EffectService, hardwarePromoService: HardwarePromoService, undoService: UndoService);
1001
1328
  private loadError;
1002
1329
  ngOnInit(): void;
1003
1330
  private calcTotalMenuHeight;
@@ -1005,6 +1332,9 @@ declare class DesignerComponent implements OnInit, AfterViewInit {
1005
1332
  ngAfterViewInit(): void;
1006
1333
  openTab(tab: string): void;
1007
1334
  openFixturePool(): void;
1335
+ undo(): void;
1336
+ redo(): void;
1337
+ setProjectName(name: string): void;
1008
1338
  projectNew(): void;
1009
1339
  projectOpen(): void;
1010
1340
  projectSave(): void;
@@ -1014,9 +1344,10 @@ declare class DesignerComponent implements OnInit, AfterViewInit {
1014
1344
  projectExport(): void;
1015
1345
  projectShare(): void;
1016
1346
  handleKeyboardEvent(event: any): void;
1347
+ private handleUndoRedo;
1017
1348
  switchLanguage(language: string): void;
1018
1349
  static ɵfac: i0.ɵɵFactoryDeclaration<DesignerComponent, never>;
1019
- static ɵcmp: i0.ɵɵComponentDeclaration<DesignerComponent, "lib-designer", never, { "menuHeightPx": { "alias": "menuHeightPx"; "required": false; }; "externalCompositionsAvailable": { "alias": "externalCompositionsAvailable"; "required": false; }; "restUrl": { "alias": "restUrl"; "required": false; }; "enableMediaLibrary": { "alias": "enableMediaLibrary"; "required": false; }; "loginAvailable": { "alias": "loginAvailable"; "required": false; }; "shareAvailable": { "alias": "shareAvailable"; "required": false; }; "languageSwitch": { "alias": "languageSwitch"; "required": false; }; "livePreview": { "alias": "livePreview"; "required": false; }; "localProfiles": { "alias": "localProfiles"; "required": false; }; "intro": { "alias": "intro"; "required": false; }; "uniqueProjectNames": { "alias": "uniqueProjectNames"; "required": false; }; "dropzoneChunking": { "alias": "dropzoneChunking"; "required": false; }; "universes": { "alias": "universes"; "required": false; }; "freeUniverseEdit": { "alias": "freeUniverseEdit"; "required": false; }; }, {}, never, never, false, never>;
1350
+ static ɵcmp: i0.ɵɵComponentDeclaration<DesignerComponent, "lib-designer", never, { "menuHeightPx": { "alias": "menuHeightPx"; "required": false; }; "externalCompositionsAvailable": { "alias": "externalCompositionsAvailable"; "required": false; }; "restUrl": { "alias": "restUrl"; "required": false; }; "enableMediaLibrary": { "alias": "enableMediaLibrary"; "required": false; }; "loginAvailable": { "alias": "loginAvailable"; "required": false; }; "shareAvailable": { "alias": "shareAvailable"; "required": false; }; "languageSwitch": { "alias": "languageSwitch"; "required": false; }; "livePreview": { "alias": "livePreview"; "required": false; }; "localProfiles": { "alias": "localProfiles"; "required": false; }; "intro": { "alias": "intro"; "required": false; }; "uniqueProjectNames": { "alias": "uniqueProjectNames"; "required": false; }; "dropzoneChunking": { "alias": "dropzoneChunking"; "required": false; }; "universes": { "alias": "universes"; "required": false; }; "freeUniverseEdit": { "alias": "freeUniverseEdit"; "required": false; }; "hardwarePromo": { "alias": "hardwarePromo"; "required": false; }; }, {}, never, never, false, never>;
1020
1351
  }
1021
1352
 
1022
1353
  declare class WarningDialogComponent implements OnInit {
@@ -1039,18 +1370,61 @@ declare class EffectCurveProfileChannels {
1039
1370
  }
1040
1371
 
1041
1372
  declare class EffectCurve extends Effect {
1373
+ private static readonly dutyCycleTypes;
1374
+ private static readonly cycleEpsilon;
1375
+ static readonly defaultBeatsPerMinute = 120;
1042
1376
  curveType: string;
1043
1377
  capabilities: FixtureCapability[];
1044
1378
  channels: EffectCurveProfileChannels[];
1379
+ lengthMode: string;
1045
1380
  lengthMillis: number;
1381
+ lengthBeats: number;
1046
1382
  phaseMillis: number;
1383
+ phaseBeats: number;
1047
1384
  amplitude: number;
1048
1385
  position: number;
1386
+ dutyCycle: number;
1387
+ runMode: string;
1388
+ runCycles: number;
1389
+ runDurationMillis: number;
1390
+ endMode: string;
1391
+ phasingMode: string;
1049
1392
  phasingMillis: number;
1393
+ phasingBeats: number;
1394
+ phasingCycles: number;
1395
+ phasingGroupSize: number;
1050
1396
  constructor(data?: any);
1051
- getValueAtMillis(timeMillis: number, fixtureIndex?: number): number;
1397
+ static getBeatMillis(beatsPerMinute?: number): number;
1398
+ isBeatSynced(): boolean;
1399
+ getLengthMillis(beatsPerMinute?: number): number;
1400
+ getPhaseMillis(beatsPerMinute?: number): number;
1401
+ hasDutyCycle(): boolean;
1402
+ private getPhasingGroupSize;
1403
+ getPhasingStepCount(fixtureCount?: number): number;
1404
+ getPhasingStepMillis(step: number, fixtureCount?: number, beatsPerMinute?: number): number;
1405
+ getPhasingMillis(fixtureIndex?: number, fixtureCount?: number, beatsPerMinute?: number): number;
1406
+ getRunEndMillis(beatsPerMinute?: number): number | undefined;
1407
+ getRunLoopMillis(fixtureCount?: number, beatsPerMinute?: number): number | undefined;
1408
+ getValueAtMillis(timeMillis: number, fixtureIndex?: number, fixtureCount?: number, beatsPerMinute?: number): number | undefined;
1409
+ private getCyclePosition;
1410
+ private getClampedDutyCycle;
1411
+ private warpCyclePosition;
1412
+ private getCurveValue;
1413
+ }
1414
+
1415
+ interface CurveCapabilityOption {
1416
+ id: string;
1417
+ name: string;
1418
+ checked: boolean;
1419
+ capability: FixtureCapability;
1420
+ }
1421
+ interface CurveChannelOption {
1422
+ id: string;
1423
+ name: string;
1424
+ checked: boolean;
1425
+ profile: FixtureProfile;
1426
+ channel: CachedFixtureChannel;
1052
1427
  }
1053
-
1054
1428
  declare class EffectCurveComponent implements OnInit, OnDestroy {
1055
1429
  presetService: PresetService;
1056
1430
  private animationService;
@@ -1059,54 +1433,113 @@ declare class EffectCurveComponent implements OnInit, OnDestroy {
1059
1433
  private effectService;
1060
1434
  private ngZone;
1061
1435
  livePreviewService: LivePreviewService;
1062
- private gridUpdateSubscription;
1436
+ private modalService;
1437
+ private timelineService;
1438
+ private animationFrameId;
1063
1439
  private ctx;
1064
1440
  private maxWidth;
1065
1441
  private maxHeight;
1066
1442
  lengthMillisMin: number;
1067
1443
  lengthMillisMax: number;
1444
+ lengthBeatsMin: number;
1445
+ lengthBeatsMax: number;
1068
1446
  amplitudeMin: number;
1069
1447
  amplitudeMax: number;
1070
1448
  percentageMin: number;
1071
1449
  percentageMax: number;
1072
- phaseMillisMin: number;
1073
- phaseMillisMax: number;
1074
1450
  phasingMillisMin: number;
1075
1451
  phasingMillisMax: number;
1076
- availableCapabilities: FixtureCapability[];
1077
- availableChannels: Map<FixtureProfile, CachedFixtureChannel[]>;
1452
+ phasingCyclesMin: number;
1453
+ phasingCyclesMax: number;
1454
+ phasingBeatsMin: number;
1455
+ phasingBeatsMax: number;
1456
+ phaseCyclesMin: number;
1457
+ phaseCyclesMax: number;
1458
+ capabilityOptions: CurveCapabilityOption[];
1459
+ channelOptions: CurveChannelOption[];
1460
+ private availableChannels;
1078
1461
  availableProfiles: FixtureProfile[];
1079
1462
  selectedProfiles: FixtureProfile[];
1080
1463
  private effectsOpenChangedSubscription;
1464
+ private fixtureSelectionChangedSubscription;
1465
+ private langChangeSubscription;
1466
+ private effectSelected;
1467
+ private phasingCount;
1468
+ private phasingCountMillis;
1081
1469
  curve: EffectCurve;
1082
1470
  set isSelected(value: boolean);
1083
1471
  curveGrid: ElementRef;
1084
- constructor(presetService: PresetService, animationService: AnimationService, fixtureService: FixtureService, translate: TranslateService, effectService: EffectService, ngZone: NgZone, livePreviewService: LivePreviewService);
1472
+ constructor(presetService: PresetService, animationService: AnimationService, fixtureService: FixtureService, translate: TranslateService, effectService: EffectService, ngZone: NgZone, livePreviewService: LivePreviewService, modalService: BsModalService, timelineService: TimelineService);
1085
1473
  ngOnInit(): void;
1086
1474
  ngOnDestroy(): void;
1087
- private startUpdateTimer;
1088
- private stopUpdateTimer;
1475
+ private startAnimation;
1476
+ private stopAnimation;
1477
+ get beatsPerMinute(): number;
1089
1478
  private drawCurrentValue;
1090
1479
  private getPhasingCount;
1480
+ private getGridDurationMillis;
1091
1481
  redraw(): void;
1092
1482
  private calculateChannelCapabilities;
1093
1483
  changeProfileSelection($event: any, profile: FixtureProfile): void;
1484
+ profileChecked(profile: FixtureProfile): boolean;
1094
1485
  private updateCapabilitiesAndChannels;
1095
- getCapabilityName(capability: FixtureCapability): Observable<string>;
1096
- capabilityChecked(capability: FixtureCapability): boolean;
1097
- toggleCapability(event: any, capability: FixtureCapability): void;
1098
- getChannelName(profileName: string, channelName: string): string;
1099
- channelChecked(profile: FixtureProfile, channel: CachedFixtureChannel): boolean;
1100
- toggleChannel(event: any, profile: FixtureProfile, channel: CachedFixtureChannel): void;
1486
+ private updateChannelOptions;
1487
+ private updateOptionNames;
1488
+ private updateCapabilityNames;
1489
+ private capabilityChecked;
1490
+ toggleCapability(event: any, option: CurveCapabilityOption): void;
1491
+ private getChannelName;
1492
+ private channelChecked;
1493
+ toggleChannel(event: any, option: CurveChannelOption): void;
1101
1494
  setLengthMillis(value: any): void;
1495
+ setLengthMillisFromSlider(value: any): void;
1496
+ setLengthBeats(value: any): void;
1497
+ setLengthBeatsFromSlider(value: any): void;
1498
+ setLengthMode(lengthMode: string): void;
1499
+ private clamp;
1500
+ private lengthChanged;
1501
+ private wrapPhase;
1502
+ get phaseCycles(): number;
1503
+ setPhaseCycles(value: any): void;
1102
1504
  setAmplitude(value: any): void;
1103
1505
  setPosition(value: any): void;
1104
1506
  setPhaseMillis(value: any): void;
1507
+ setPhaseBeats(value: any): void;
1105
1508
  setPhasingMillis(value: any): void;
1509
+ setPhasingBeats(value: any): void;
1510
+ setPhasingCycles(value: any): void;
1511
+ setPhasingMode(phasingMode: string): void;
1512
+ advancedActive(): boolean;
1513
+ openAdvanced(): void;
1106
1514
  static ɵfac: i0.ɵɵFactoryDeclaration<EffectCurveComponent, never>;
1107
1515
  static ɵcmp: i0.ɵɵComponentDeclaration<EffectCurveComponent, "lib-app-effect-curve", never, { "curve": { "alias": "curve"; "required": false; }; "isSelected": { "alias": "isSelected"; "required": false; }; }, {}, never, never, false, never>;
1108
1516
  }
1109
1517
 
1518
+ declare class EffectCurveAdvancedComponent {
1519
+ bsModalRef: BsModalRef;
1520
+ livePreviewService: LivePreviewService;
1521
+ curve: EffectCurve;
1522
+ runCyclesMin: number;
1523
+ runCyclesMax: number;
1524
+ runDurationMillisMin: number;
1525
+ runDurationMillisMax: number;
1526
+ dutyCyclePercentMin: number;
1527
+ dutyCyclePercentMax: number;
1528
+ phasingGroupSizeMin: number;
1529
+ phasingGroupSizeMax: number;
1530
+ constructor(bsModalRef: BsModalRef, livePreviewService: LivePreviewService);
1531
+ get dutyCyclePercent(): number;
1532
+ setDutyCyclePercent(value: any): void;
1533
+ setRunMode(runMode: string): void;
1534
+ setRunCycles(value: any): void;
1535
+ setRunDurationMillis(value: any): void;
1536
+ setEndMode(endMode: string): void;
1537
+ setPhasingGroupSize(value: any): void;
1538
+ close(): void;
1539
+ static ɵfac: i0.ɵɵFactoryDeclaration<EffectCurveAdvancedComponent, never>;
1540
+ static ɵcmp: i0.ɵɵComponentDeclaration<EffectCurveAdvancedComponent, "lib-app-effect-curve-advanced", never, {}, {}, never, never, false, never>;
1541
+ }
1542
+
1110
1543
  declare class EffectPanTiltComponent implements OnInit {
1111
1544
  panTiltGrid: ElementRef;
1112
1545
  private svg;
@@ -1121,16 +1554,171 @@ declare class EffectPanTiltComponent implements OnInit {
1121
1554
  static ɵcmp: i0.ɵɵComponentDeclaration<EffectPanTiltComponent, "lib-app-effect-pan-tilt", never, {}, {}, never, never, false, never>;
1122
1555
  }
1123
1556
 
1124
- declare class SceneComponent implements OnInit {
1557
+ /**
1558
+ * Carries nodes which are dragged into a tree from the outside (e.g. from a list
1559
+ * next to it). The payload cannot be read from the DragEvent itself, because the
1560
+ * browser only hands out the transferred data on drop, not while dragging over.
1561
+ *
1562
+ * External nodes are inserted as they are, the source list keeps its own items.
1563
+ */
1564
+ declare class TreeDragService {
1565
+ nodes: TreeNode[];
1566
+ ended: Subject<void>;
1567
+ start(nodes: TreeNode[]): void;
1568
+ end(): void;
1569
+ static ɵfac: i0.ɵɵFactoryDeclaration<TreeDragService, never>;
1570
+ static ɵprov: i0.ɵɵInjectableDeclaration<TreeDragService>;
1571
+ }
1572
+
1573
+ interface TreeNode {
1574
+ id?: string | number;
1575
+ name?: string;
1576
+ isFolder?: boolean;
1577
+ expanded?: boolean;
1578
+ icon?: string;
1579
+ iconOpen?: string;
1580
+ iconClass?: string;
1581
+ iconColor?: string;
1582
+ toggleOnClick?: boolean;
1583
+ children?: TreeNode[];
1584
+ [key: string]: any;
1585
+ }
1586
+ type TreeDropZone = 'before' | 'after' | 'inside';
1587
+ interface FlatNode {
1588
+ node: TreeNode;
1589
+ key: any;
1590
+ level: number;
1591
+ parent: TreeNode | null;
1592
+ }
1593
+ interface DropTarget {
1594
+ row: TreeNode;
1595
+ zone: TreeDropZone;
1596
+ indent: number;
1597
+ ref: TreeNode;
1598
+ }
1599
+ /**
1600
+ * A lightweight, dependency-free tree:
1601
+ * - collapsible folders (click the folder icon to open/close them)
1602
+ * - multi selection (ctrl/cmd to toggle, shift to select a range)
1603
+ * - native HTML5 drag & drop, dropping before/after a node or into a folder,
1604
+ * moving the whole current selection at once
1605
+ * - accepting nodes dragged in from the outside (see TreeDragService), which are
1606
+ * inserted instead of moved
1607
+ */
1608
+ declare class TreeComponent implements OnChanges, OnInit, OnDestroy {
1609
+ private treeDragService;
1610
+ nodes: TreeNode[];
1611
+ selectedNodes: TreeNode[];
1612
+ focusedNode: TreeNode | undefined;
1613
+ publishDrag: boolean;
1614
+ plainClickSelects: boolean;
1615
+ nodeClass: (node: TreeNode) => string;
1616
+ allowDrag: (node: TreeNode) => boolean;
1617
+ allowDrop: (dragged: TreeNode[], target: TreeNode, zone: TreeDropZone) => boolean;
1618
+ selectedNodesChange: EventEmitter<TreeNode[]>;
1619
+ activate: EventEmitter<TreeNode>;
1620
+ nodeDoubleClick: EventEmitter<TreeNode>;
1621
+ nodesChange: EventEmitter<TreeNode[]>;
1622
+ nodeExpandedChange: EventEmitter<TreeNode>;
1623
+ nodeTemplate?: TemplateRef<any>;
1624
+ flatNodes: FlatNode[];
1625
+ draggingNodes: TreeNode[];
1626
+ drop: DropTarget | null;
1627
+ dropTail: boolean;
1628
+ private static readonly INDENT_STEP;
1629
+ private static readonly INDENT_BASE;
1630
+ private selection;
1631
+ private lastClickedIndex;
1632
+ private flatByNode;
1633
+ private externalDragEnded;
1634
+ constructor(treeDragService: TreeDragService);
1635
+ ngOnInit(): void;
1636
+ ngOnDestroy(): void;
1637
+ private get activeNodes();
1638
+ private get externalDrag();
1639
+ indentPx(level: number): string;
1640
+ private indent;
1641
+ ngOnChanges(changes: SimpleChanges): void;
1642
+ nodeIcon(node: TreeNode): string;
1643
+ showCaret(node: TreeNode): boolean;
1644
+ isSelected(node: TreeNode): boolean;
1645
+ isDragging(node: TreeNode): boolean;
1646
+ toggleExpand(node: TreeNode, event?: MouseEvent): void;
1647
+ onRowClick(flat: FlatNode, event: MouseEvent): void;
1648
+ onRowDoubleClick(node: TreeNode, event: MouseEvent): void;
1649
+ private selectRange;
1650
+ onDragStart(flat: FlatNode, event: DragEvent): void;
1651
+ onDragOver(flat: FlatNode, event: DragEvent): void;
1652
+ onDrop(flat: FlatNode, event: DragEvent): void;
1653
+ onTailDragOver(event: DragEvent): void;
1654
+ onTailDrop(event: DragEvent): void;
1655
+ onDragEnd(): void;
1656
+ private endDrag;
1657
+ private clearIndicator;
1658
+ private resolveDrop;
1659
+ private insideOf;
1660
+ private afterRow;
1661
+ private canDrop;
1662
+ private canDropAtRoot;
1663
+ private moveNodes;
1664
+ private detachAll;
1665
+ private rebuild;
1666
+ private flatten;
1667
+ private key;
1668
+ private remapSelection;
1669
+ private eachNode;
1670
+ private removeNested;
1671
+ private contains;
1672
+ private locate;
1673
+ static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent, never>;
1674
+ static ɵcmp: i0.ɵɵComponentDeclaration<TreeComponent, "lib-tree", never, { "nodes": { "alias": "nodes"; "required": false; }; "selectedNodes": { "alias": "selectedNodes"; "required": false; }; "focusedNode": { "alias": "focusedNode"; "required": false; }; "publishDrag": { "alias": "publishDrag"; "required": false; }; "plainClickSelects": { "alias": "plainClickSelects"; "required": false; }; "nodeClass": { "alias": "nodeClass"; "required": false; }; "allowDrag": { "alias": "allowDrag"; "required": false; }; "allowDrop": { "alias": "allowDrop"; "required": false; }; }, { "selectedNodesChange": "selectedNodesChange"; "activate": "activate"; "nodeDoubleClick": "nodeDoubleClick"; "nodesChange": "nodesChange"; "nodeExpandedChange": "nodeExpandedChange"; }, ["nodeTemplate"], never, false, never>;
1675
+ }
1676
+
1677
+ declare class SceneComponent implements OnInit, OnDestroy {
1125
1678
  sceneService: SceneService;
1126
1679
  presetService: PresetService;
1127
1680
  projectService: ProjectService;
1681
+ private colorService;
1682
+ private folderService;
1683
+ private translateService;
1128
1684
  private modalService;
1685
+ private livePreviewService;
1129
1686
  introService: IntroService;
1130
- constructor(sceneService: SceneService, presetService: PresetService, projectService: ProjectService, modalService: BsModalService, introService: IntroService);
1687
+ treeNodes: TreeNode[];
1688
+ selectedNodes: TreeNode[];
1689
+ focusedNode: TreeNode;
1690
+ private subscriptions;
1691
+ private targetFolder;
1692
+ private targetScene;
1693
+ private targetPreset;
1694
+ constructor(sceneService: SceneService, presetService: PresetService, projectService: ProjectService, colorService: ColorService, folderService: FolderService, translateService: TranslateService, modalService: BsModalService, livePreviewService: LivePreviewService, introService: IntroService);
1131
1695
  ngOnInit(): void;
1132
- selectScene(event: any, index: number): void;
1133
- removeScene(): void;
1696
+ ngOnDestroy(): void;
1697
+ private buildTree;
1698
+ private buildNodes;
1699
+ private updateSelection;
1700
+ private updateColors;
1701
+ private eachNode;
1702
+ private findNode;
1703
+ private draggedPresets;
1704
+ allowDrop: (dragged: TreeNode[], target: TreeNode, zone: TreeDropZone) => boolean;
1705
+ onNodesChange(nodes: TreeNode[]): void;
1706
+ private applyNodes;
1707
+ onActivate(node: TreeNode): void;
1708
+ private updateFocusedNode;
1709
+ onSelectedNodesChange(nodes: TreeNode[]): void;
1710
+ onNodeExpandedChange(node: TreeNode): void;
1711
+ allScenesCollapsed(): boolean;
1712
+ switchAllScenesCollapsed(): void;
1713
+ addScene(): void;
1714
+ duplicateLabel(): string;
1715
+ duplicate(): void;
1716
+ private copyName;
1717
+ addFolder(): void;
1718
+ removeLabel(): string;
1719
+ remove(): void;
1720
+ onNodeDoubleClick(node: TreeNode): void;
1721
+ dimmerPercentage(scene: Scene): number;
1134
1722
  openSettings(scene: Scene): void;
1135
1723
  static ɵfac: i0.ɵɵFactoryDeclaration<SceneComponent, never>;
1136
1724
  static ɵcmp: i0.ɵɵComponentDeclaration<SceneComponent, "lib-app-scene", never, {}, {}, never, never, false, never>;
@@ -1160,19 +1748,75 @@ declare class FixtureCapabilityColorComponent implements OnInit, OnDestroy {
1160
1748
  static ɵcmp: i0.ɵɵComponentDeclaration<FixtureCapabilityColorComponent, "lib-app-fixture-capability-color", never, {}, {}, never, never, false, never>;
1161
1749
  }
1162
1750
 
1163
- declare class FixtureComponent implements OnInit {
1751
+ /**
1752
+ * The fixture order of the project: its fixtures grouped in folders, plus the presets
1753
+ * which bring an order of their own inside those same folders.
1754
+ *
1755
+ * The fixture panel and the fixture pool both show and edit these folders, so both keep
1756
+ * everything which follows from them in step from here.
1757
+ */
1758
+ declare class FixtureOrderService {
1759
+ private projectService;
1760
+ private folderService;
1761
+ constructor(projectService: ProjectService, folderService: FolderService);
1762
+ fixtureKey(presetFixture: PresetFixture): string;
1763
+ getProjectFixtures(): Map<string, PresetFixture>;
1764
+ getFolders(preset?: Preset): Folder[];
1765
+ sortProjectFixtures(): void;
1766
+ syncPresetOrders(): void;
1767
+ syncPresetOrder(preset: Preset, projectFixtures?: Map<string, PresetFixture>): void;
1768
+ static ɵfac: i0.ɵɵFactoryDeclaration<FixtureOrderService, never>;
1769
+ static ɵprov: i0.ɵɵInjectableDeclaration<FixtureOrderService>;
1770
+ }
1771
+
1772
+ declare class FixtureComponent implements OnInit, OnDestroy {
1164
1773
  projectService: ProjectService;
1165
1774
  presetService: PresetService;
1166
1775
  private fixturePoolService;
1167
1776
  fixtureService: FixtureService;
1168
1777
  introService: IntroService;
1778
+ private folderService;
1779
+ private fixtureOrderService;
1780
+ private translateService;
1169
1781
  private livePreviewService;
1170
- fixtureSortableOptions: Options;
1171
- constructor(projectService: ProjectService, presetService: PresetService, fixturePoolService: FixturePoolService, fixtureService: FixtureService, introService: IntroService, livePreviewService: LivePreviewService);
1782
+ otherFixtures: PresetFixture[];
1783
+ treeNodes: TreeNode[];
1784
+ selectedNodes: TreeNode[];
1785
+ focusedNode: TreeNode;
1786
+ private subscriptions;
1787
+ private targetFolder;
1788
+ private targetFixture;
1789
+ private parentOf;
1790
+ constructor(projectService: ProjectService, presetService: PresetService, fixturePoolService: FixturePoolService, fixtureService: FixtureService, introService: IntroService, folderService: FolderService, fixtureOrderService: FixtureOrderService, translateService: TranslateService, livePreviewService: LivePreviewService);
1172
1791
  ngOnInit(): void;
1792
+ ngOnDestroy(): void;
1793
+ usePresetOrder(): boolean;
1794
+ switchCustomFixtureOrder(customFixtureOrder: boolean): void;
1795
+ private orderedPreset;
1796
+ private buildTree;
1797
+ private updateOtherFixtures;
1798
+ private orderItems;
1799
+ private buildNodes;
1800
+ private updateFocusedNode;
1801
+ private findNode;
1802
+ nodeClass: (node: TreeNode) => string;
1803
+ allowDrag: (node: TreeNode) => boolean;
1804
+ allowDrop: (dragged: TreeNode[], target: TreeNode, zone: TreeDropZone) => boolean;
1805
+ private containsFolder;
1806
+ onNodesChange(nodes: TreeNode[]): void;
1807
+ private applyNodes;
1808
+ private setFolderPosition;
1809
+ onNodeExpandedChange(node: TreeNode): void;
1810
+ onActivate(node: TreeNode): void;
1811
+ onSelectedNodesChange(nodes: TreeNode[]): void;
1812
+ allFoldersCollapsed(): boolean;
1813
+ switchAllFoldersCollapsed(): void;
1814
+ addFolder(): void;
1815
+ removeFolder(): void;
1816
+ fixtureIconClass(presetFixture: PresetFixture): string;
1173
1817
  fixtureName(presetFixture: PresetFixture): string;
1174
1818
  fixtureIsSelected(presetFixture: PresetFixture): boolean;
1175
- selectFixture(event: any, presetFixture: PresetFixture): void;
1819
+ selectFixture(presetFixture: PresetFixture): void;
1176
1820
  selectAll(): void;
1177
1821
  selectNone(): void;
1178
1822
  fixtureListReordered(): void;
@@ -1220,6 +1864,7 @@ declare class FixtureCapabilityComponent implements OnInit, OnDestroy {
1220
1864
  introService: IntroService;
1221
1865
  private fixtureSelectionChangedSubscription;
1222
1866
  private previewSelectionChangedSubscription;
1867
+ private stepsChangedSubscription;
1223
1868
  colorWheelChannels: Map<FixtureProfile, CachedFixtureChannel>;
1224
1869
  hasCapabilityDimmer: boolean;
1225
1870
  hasCapabilityColorOrColorWheel: boolean;
@@ -1256,15 +1901,24 @@ declare class EffectComponent implements OnInit {
1256
1901
  constructor(uuidService: UuidService, presetService: PresetService, effectService: EffectService, warningDialogService: WarningDialogService, livePreviewService: LivePreviewService);
1257
1902
  ngOnInit(): void;
1258
1903
  private addEffect;
1904
+ toggleVisible(effect: Effect): void;
1259
1905
  addCurveEffect(): void;
1260
1906
  addPanTiltEffect(): void;
1261
1907
  openEffect(effect: Effect, event: any): void;
1908
+ duplicateEffect(effect: Effect): void;
1262
1909
  deleteEffect(effect: Effect): void;
1263
1910
  static ɵfac: i0.ɵɵFactoryDeclaration<EffectComponent, never>;
1264
1911
  static ɵcmp: i0.ɵɵComponentDeclaration<EffectComponent, "lib-app-effect", never, {}, {}, never, never, false, never>;
1265
1912
  }
1266
1913
 
1267
- declare class FixturePoolComponent implements OnInit {
1914
+ interface DmxChannel {
1915
+ occupied: boolean;
1916
+ start: boolean;
1917
+ end: boolean;
1918
+ selected: boolean;
1919
+ overlapped: boolean;
1920
+ }
1921
+ declare class FixturePoolComponent implements OnInit, AfterViewInit, OnDestroy {
1268
1922
  bsModalRef: BsModalRef;
1269
1923
  fixtureService: FixtureService;
1270
1924
  private uuidService;
@@ -1275,15 +1929,26 @@ declare class FixturePoolComponent implements OnInit {
1275
1929
  private presetService;
1276
1930
  configService: ConfigService;
1277
1931
  private modalService;
1932
+ private folderService;
1933
+ private fixtureOrderService;
1934
+ private ngZone;
1935
+ private hotkeyTargetExcludeService;
1278
1936
  private livePreviewService;
1279
- private profiles;
1937
+ hardwarePromoService: HardwarePromoService;
1280
1938
  filteredProfiles: FixtureProfile[];
1939
+ hiddenProfileCount: number;
1281
1940
  loadingProfiles: boolean;
1282
1941
  fixturePool: Fixture[];
1283
- dmxChannels: number[];
1942
+ fixtureFolders: Folder[];
1943
+ treeNodes: TreeNode[];
1944
+ selectedNodes: TreeNode[];
1945
+ focusedNode: TreeNode;
1946
+ dmxChannels: DmxChannel[];
1947
+ dmxMap: ElementRef<HTMLElement>;
1948
+ dmxCanvas: ElementRef<HTMLCanvasElement>;
1949
+ channelLabel: ElementRef<HTMLElement>;
1284
1950
  selectedFixture: Fixture;
1285
1951
  selectedFixtureProfile: FixtureProfile;
1286
- showChannelNumbers: boolean;
1287
1952
  channelDragFixture: Fixture;
1288
1953
  channelDragOffset: number;
1289
1954
  onClose: Subject<number>;
@@ -1291,7 +1956,18 @@ declare class FixturePoolComponent implements OnInit {
1291
1956
  updatingProfiles: boolean;
1292
1957
  universes: UniverseConfig[];
1293
1958
  selectedUniverse: UniverseConfig;
1294
- constructor(bsModalRef: BsModalRef, fixtureService: FixtureService, uuidService: UuidService, projectService: ProjectService, previewService: PreviewService, translateService: TranslateService, toastrService: ToastrService, presetService: PresetService, configService: ConfigService, modalService: BsModalService, livePreviewService: LivePreviewService);
1959
+ promoLink: string;
1960
+ private static readonly maxShownProfiles;
1961
+ private static readonly channelWidth;
1962
+ private static readonly channelHeight;
1963
+ private channelsPerRow;
1964
+ private labelledChannel;
1965
+ private mapResized;
1966
+ private fixtureItems;
1967
+ private searchIndex;
1968
+ private targetFolder;
1969
+ private fixtureOrderChanged;
1970
+ constructor(bsModalRef: BsModalRef, fixtureService: FixtureService, uuidService: UuidService, projectService: ProjectService, previewService: PreviewService, translateService: TranslateService, toastrService: ToastrService, presetService: PresetService, configService: ConfigService, modalService: BsModalService, folderService: FolderService, fixtureOrderService: FixtureOrderService, ngZone: NgZone, hotkeyTargetExcludeService: HotkeyTargetExcludeService, livePreviewService: LivePreviewService, hardwarePromoService: HardwarePromoService);
1295
1971
  get freeUniverseEdit(): boolean;
1296
1972
  /** Fixtures belonging to the currently selected universe. */
1297
1973
  get currentUniverseFixtures(): Fixture[];
@@ -1299,22 +1975,54 @@ declare class FixturePoolComponent implements OnInit {
1299
1975
  private get channelFixtures();
1300
1976
  selectUniverse(universe: UniverseConfig): void;
1301
1977
  ngOnInit(): void;
1978
+ ngAfterViewInit(): void;
1979
+ ngOnDestroy(): void;
1980
+ private channelHovered;
1981
+ private channelLeft;
1982
+ private channelAt;
1983
+ private labelChannel;
1984
+ private drawChannelMap;
1985
+ private channelRuns;
1986
+ private channelBar;
1302
1987
  private loadProfiles;
1303
1988
  selectFixture(fixture: Fixture): void;
1989
+ private buildFixtureItems;
1990
+ private buildTree;
1991
+ private buildNodes;
1992
+ private updateSelection;
1993
+ private updateFocusedNode;
1994
+ private findNode;
1995
+ nodeClass: (node: TreeNode) => string;
1996
+ allowDrop: (dragged: TreeNode[], target: TreeNode, zone: TreeDropZone) => boolean;
1997
+ private containsFolder;
1998
+ onNodesChange(nodes: TreeNode[]): void;
1999
+ private applyNodes;
2000
+ onNodeExpandedChange(node: TreeNode): void;
2001
+ onActivate(node: TreeNode): void;
2002
+ onSelectedNodesChange(nodes: TreeNode[]): void;
2003
+ allFoldersCollapsed(): boolean;
2004
+ switchAllFoldersCollapsed(): void;
2005
+ addFolder(): void;
2006
+ removeFolder(): void;
2007
+ private targetFolderUuid;
2008
+ private selectedItem;
2009
+ private nextSortIndex;
2010
+ private addFixtureItem;
1304
2011
  filterProfiles(): void;
1305
2012
  addFixture(searchProfile: FixtureProfile): void;
1306
2013
  addCopy(originalFixture: Fixture): void;
1307
2014
  removeFixture(fixture: Fixture): void;
1308
- channelOccupied(index: number): boolean;
1309
- channelOccupiedStart(index: number): boolean;
1310
- channelOccupiedEnd(index: number): boolean;
1311
- channelOverlapped(index: number): boolean;
1312
- private channelOverlappedInFixtures;
1313
- channelMouseDown(event: any): void;
1314
- channelSelected(index: number): boolean;
2015
+ updateChannelMap(): void;
2016
+ private lampKey;
2017
+ private fixtureChannelCount;
2018
+ private fixturesOverlap;
2019
+ channelMouseDown(event: MouseEvent): void;
1315
2020
  mouseUp(event: any): void;
1316
- channelMouseOver(event: any): void;
2021
+ private dragChannelTo;
2022
+ setFirstChannel(channel: number): void;
1317
2023
  ok(): void;
2024
+ private addPresetFixture;
2025
+ private applyFixtureOrder;
1318
2026
  cancel(): void;
1319
2027
  updateProfiles(): void;
1320
2028
  openEditUniverses(): void;
@@ -1324,97 +2032,53 @@ declare class FixturePoolComponent implements OnInit {
1324
2032
  static ɵcmp: i0.ɵɵComponentDeclaration<FixturePoolComponent, "lib-app-fixture-pool", never, {}, {}, never, never, false, never>;
1325
2033
  }
1326
2034
 
1327
- interface TreeNode {
1328
- id?: string | number;
1329
- name?: string;
1330
- isFolder?: boolean;
1331
- expanded?: boolean;
1332
- children?: TreeNode[];
1333
- [key: string]: any;
1334
- }
1335
- type TreeDropZone = 'before' | 'after' | 'inside';
1336
- interface FlatNode {
1337
- node: TreeNode;
1338
- level: number;
1339
- parent: TreeNode | null;
1340
- }
1341
- interface DropTarget {
1342
- row: TreeNode;
1343
- zone: TreeDropZone;
1344
- indent: number;
1345
- ref: TreeNode;
1346
- }
1347
- /**
1348
- * A lightweight, dependency-free tree:
1349
- * - collapsible folders (closed/open folder icon)
1350
- * - multi selection (ctrl/cmd to toggle, shift to select a range)
1351
- * - native HTML5 drag & drop, dropping before/after a node or into a folder,
1352
- * moving the whole current selection at once
1353
- */
1354
- declare class TreeComponent implements OnChanges {
1355
- nodes: TreeNode[];
1356
- selectedNodes: TreeNode[];
1357
- allowDrag: (node: TreeNode) => boolean;
1358
- allowDrop: (dragged: TreeNode[], target: TreeNode, zone: TreeDropZone) => boolean;
1359
- selectedNodesChange: EventEmitter<TreeNode[]>;
1360
- activate: EventEmitter<TreeNode>;
1361
- nodesChange: EventEmitter<TreeNode[]>;
1362
- nodeTemplate?: TemplateRef<any>;
1363
- flatNodes: FlatNode[];
1364
- draggingNodes: TreeNode[];
1365
- drop: DropTarget | null;
1366
- dropTail: boolean;
1367
- private static readonly INDENT_STEP;
1368
- private static readonly INDENT_BASE;
1369
- private selection;
1370
- private lastClickedIndex;
1371
- private flatByNode;
1372
- indentPx(level: number): string;
1373
- private indent;
1374
- ngOnChanges(changes: SimpleChanges): void;
1375
- isSelected(node: TreeNode): boolean;
1376
- isDragging(node: TreeNode): boolean;
1377
- toggleExpand(node: TreeNode): void;
1378
- onRowClick(flat: FlatNode, event: MouseEvent): void;
1379
- private selectRange;
1380
- onDragStart(flat: FlatNode, event: DragEvent): void;
1381
- onDragOver(flat: FlatNode, event: DragEvent): void;
1382
- onDrop(flat: FlatNode, event: DragEvent): void;
1383
- onTailDragOver(event: DragEvent): void;
1384
- onTailDrop(event: DragEvent): void;
1385
- onDragEnd(): void;
1386
- private endDrag;
1387
- private clearIndicator;
1388
- private resolveDrop;
1389
- private afterRow;
1390
- private canDrop;
1391
- private moveNodes;
1392
- private detachAll;
1393
- private rebuild;
1394
- private flatten;
1395
- private removeNested;
1396
- private contains;
1397
- private locate;
1398
- static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent, never>;
1399
- static ɵcmp: i0.ɵɵComponentDeclaration<TreeComponent, "lib-tree", never, { "nodes": { "alias": "nodes"; "required": false; }; "selectedNodes": { "alias": "selectedNodes"; "required": false; }; "allowDrag": { "alias": "allowDrag"; "required": false; }; "allowDrop": { "alias": "allowDrop"; "required": false; }; }, { "selectedNodesChange": "selectedNodesChange"; "activate": "activate"; "nodesChange": "nodesChange"; }, ["nodeTemplate"], never, false, never>;
1400
- }
1401
-
1402
- declare class PresetComponent implements OnInit {
2035
+ declare class PresetComponent implements OnInit, OnDestroy {
1403
2036
  presetService: PresetService;
1404
2037
  sceneService: SceneService;
1405
2038
  projectService: ProjectService;
1406
2039
  introService: IntroService;
2040
+ private colorService;
2041
+ private folderService;
2042
+ private translateService;
1407
2043
  private modalService;
1408
2044
  treeNodes: TreeNode[];
1409
- constructor(presetService: PresetService, sceneService: SceneService, projectService: ProjectService, introService: IntroService, modalService: BsModalService);
2045
+ selectedNodes: TreeNode[];
2046
+ focusedNode: TreeNode;
2047
+ private subscriptions;
2048
+ private targetFolder;
2049
+ constructor(presetService: PresetService, sceneService: SceneService, projectService: ProjectService, introService: IntroService, colorService: ColorService, folderService: FolderService, translateService: TranslateService, modalService: BsModalService);
1410
2050
  ngOnInit(): void;
2051
+ ngOnDestroy(): void;
2052
+ private buildTree;
2053
+ private buildNodes;
2054
+ private updateSelection;
2055
+ private updateColors;
2056
+ private eachNode;
2057
+ private updateFocusedNode;
2058
+ private findPresetNode;
2059
+ private findFolderNode;
2060
+ allowDrop: (dragged: TreeNode[], target: TreeNode, zone: TreeDropZone) => boolean;
2061
+ private containsFolder;
2062
+ onNodesChange(nodes: TreeNode[]): void;
2063
+ private applyNodes;
2064
+ onNodeExpandedChange(node: TreeNode): void;
1411
2065
  onActivate(node: TreeNode): void;
1412
- selectPreset(index: number): void;
2066
+ onSelectedNodesChange(nodes: TreeNode[]): void;
2067
+ allFoldersCollapsed(): boolean;
2068
+ switchAllFoldersCollapsed(): void;
2069
+ private singleSelectedScene;
1413
2070
  enableCheckbox(): boolean;
1414
- activatePreset(active: boolean, index: number): void;
2071
+ activatePreset(active: boolean, preset: Preset): void;
2072
+ soloPreset(): boolean;
2073
+ switchSoloPreset(): void;
1415
2074
  addPreset(): void;
1416
- removePreset(): void;
1417
- openSettings(preset: Preset): void;
2075
+ duplicatePreset(): void;
2076
+ private copyName;
2077
+ addFolder(): void;
2078
+ removeLabel(): string;
2079
+ remove(): void;
2080
+ onNodeDoubleClick(node: TreeNode): void;
2081
+ openSettings(node: TreeNode): void;
1418
2082
  static ɵfac: i0.ɵɵFactoryDeclaration<PresetComponent, never>;
1419
2083
  static ɵcmp: i0.ɵɵComponentDeclaration<PresetComponent, "lib-app-preset", never, {}, {}, never, never, false, never>;
1420
2084
  }
@@ -1473,6 +2137,7 @@ declare class CompositionSettingsComponent implements OnInit {
1473
2137
  private warningDialogService;
1474
2138
  private toastrService;
1475
2139
  projectService: ProjectService;
2140
+ hardwarePromoService: HardwarePromoService;
1476
2141
  composition: Composition;
1477
2142
  existingCompositionNames: string[];
1478
2143
  onClose: Subject<number>;
@@ -1481,7 +2146,8 @@ declare class CompositionSettingsComponent implements OnInit {
1481
2146
  existingFiles: string[];
1482
2147
  filteredExistingFiles: string[];
1483
2148
  uploading: boolean;
1484
- constructor(bsModalRef: BsModalRef, timelineService: TimelineService, configService: ConfigService, translateService: TranslateService, http: HttpClient, warningDialogService: WarningDialogService, toastrService: ToastrService, projectService: ProjectService);
2149
+ promoLink: string;
2150
+ constructor(bsModalRef: BsModalRef, timelineService: TimelineService, configService: ConfigService, translateService: TranslateService, http: HttpClient, warningDialogService: WarningDialogService, toastrService: ToastrService, projectService: ProjectService, hardwarePromoService: HardwarePromoService);
1485
2151
  ngOnInit(): void;
1486
2152
  getDropzoneUrl(): string;
1487
2153
  ok(): void;
@@ -1512,6 +2178,11 @@ declare class FixtureCapabilityPanTiltComponent implements OnInit {
1512
2178
  private livePreviewService;
1513
2179
  constructor(presetService: PresetService, changeDetectorRef: ChangeDetectorRef, livePreviewService: LivePreviewService);
1514
2180
  ngOnInit(): void;
2181
+ getMirrorPan(): boolean;
2182
+ setMirrorPan(mirror: boolean): void;
2183
+ getMirrorTilt(): boolean;
2184
+ setMirrorTilt(mirror: boolean): void;
2185
+ private mirrorChanged;
1515
2186
  getValuePan(): number;
1516
2187
  getValueTextPan(): number;
1517
2188
  setValuePan(value: any): void;
@@ -1523,14 +2194,18 @@ declare class FixtureCapabilityPanTiltComponent implements OnInit {
1523
2194
  static ɵcmp: i0.ɵɵComponentDeclaration<FixtureCapabilityPanTiltComponent, "lib-app-fixture-capability-pan-tilt", never, {}, {}, never, never, false, never>;
1524
2195
  }
1525
2196
 
1526
- declare class FixtureCapabilityChannelComponent implements OnInit {
2197
+ declare class FixtureCapabilityChannelComponent implements OnInit, OnDestroy {
1527
2198
  private presetService;
2199
+ private effectService;
1528
2200
  private livePreviewService;
2201
+ private changeDetectorRef;
1529
2202
  sliderValue: ElementRef;
1530
2203
  selectedCapability: CachedFixtureCapability;
1531
2204
  _channel: CachedFixtureChannel;
1532
2205
  defaultValue: number;
1533
2206
  value: number;
2207
+ capabilityValue: number;
2208
+ drivenByEffect: boolean;
1534
2209
  templateValue: number;
1535
2210
  description: string;
1536
2211
  hasRange: boolean;
@@ -1539,10 +2214,15 @@ declare class FixtureCapabilityChannelComponent implements OnInit {
1539
2214
  descriptionStart: string;
1540
2215
  descriptionEnd: string;
1541
2216
  valueSetTimer: any;
2217
+ private updateTimer;
2218
+ private capabilityValuesChangedSubscription;
2219
+ private effectsChangedSubscription;
2220
+ private stepsChangedSubscription;
1542
2221
  profile: FixtureProfile;
1543
2222
  set channel(value: CachedFixtureChannel);
1544
2223
  capabilityIndex: number;
1545
- constructor(presetService: PresetService, livePreviewService: LivePreviewService);
2224
+ constructor(presetService: PresetService, effectService: EffectService, livePreviewService: LivePreviewService, changeDetectorRef: ChangeDetectorRef);
2225
+ private scheduleUpdate;
1546
2226
  private updateChannel;
1547
2227
  capabilityHasRange(): boolean;
1548
2228
  getDescriptionStart(capability: CachedFixtureCapability): string;
@@ -1551,6 +2231,7 @@ declare class FixtureCapabilityChannelComponent implements OnInit {
1551
2231
  private getRangeMin;
1552
2232
  private getRangeMax;
1553
2233
  ngOnInit(): void;
2234
+ ngOnDestroy(): void;
1554
2235
  setValue(value: any, ignoreCapabilityRange?: boolean): void;
1555
2236
  private calculateTemplateValue;
1556
2237
  private getDefaultValue;
@@ -1635,6 +2316,7 @@ declare class UserRegisterComponent implements OnInit {
1635
2316
  email: string;
1636
2317
  password: string;
1637
2318
  passwordRepeat: string;
2319
+ newsletter: boolean;
1638
2320
  subject: Subject<void>;
1639
2321
  constructor(bsModalRef: BsModalRef, modalService: BsModalService, userService: UserService);
1640
2322
  ngOnInit(): void;
@@ -1693,8 +2375,10 @@ declare class ProjectImportComponent implements OnInit {
1693
2375
  declare class ProjectShareComponent implements OnInit {
1694
2376
  bsModalRef: BsModalRef;
1695
2377
  private projectService;
2378
+ hardwarePromoService: HardwarePromoService;
1696
2379
  shareLink: string;
1697
- constructor(bsModalRef: BsModalRef, projectService: ProjectService);
2380
+ promoLink: string;
2381
+ constructor(bsModalRef: BsModalRef, projectService: ProjectService, hardwarePromoService: HardwarePromoService);
1698
2382
  ngOnInit(): void;
1699
2383
  ok(): void;
1700
2384
  cancel(): void;
@@ -1730,7 +2414,9 @@ declare class FixtureSettingsStageComponent implements OnInit {
1730
2414
 
1731
2415
  declare class IntroComponent implements OnInit {
1732
2416
  introService: IntroService;
1733
- constructor(introService: IntroService);
2417
+ hardwarePromoService: HardwarePromoService;
2418
+ promoLink: string;
2419
+ constructor(introService: IntroService, hardwarePromoService: HardwarePromoService);
1734
2420
  ngOnInit(): void;
1735
2421
  close(): void;
1736
2422
  static ɵfac: i0.ɵɵFactoryDeclaration<IntroComponent, never>;
@@ -1739,16 +2425,28 @@ declare class IntroComponent implements OnInit {
1739
2425
 
1740
2426
  declare class PresetSettingsComponent implements OnInit {
1741
2427
  bsModalRef: BsModalRef;
2428
+ private colorService;
2429
+ private presetService;
1742
2430
  preset: Preset;
1743
2431
  name: string;
2432
+ color: string;
2433
+ colorAuto: boolean;
2434
+ icon: string;
1744
2435
  startMillis: number;
1745
2436
  endMillis: number;
1746
2437
  fadeInMillis: number;
1747
2438
  fadeOutMillis: number;
1748
2439
  fadeInPre: boolean;
1749
2440
  fadeOutPost: boolean;
1750
- constructor(bsModalRef: BsModalRef);
2441
+ fadeInCurve: TransitionCurveType;
2442
+ fadeOutCurve: TransitionCurveType;
2443
+ transitionCurveTypes: TransitionCurveType[];
2444
+ derivedColor: string;
2445
+ readonly defaultIcon = "fa-lightbulb-o";
2446
+ palette: string[];
2447
+ constructor(bsModalRef: BsModalRef, colorService: ColorService, presetService: PresetService);
1751
2448
  ngOnInit(): void;
2449
+ shownColor(): string;
1752
2450
  ok(): void;
1753
2451
  cancel(): void;
1754
2452
  handleKeyboardEvent(event: any): void;
@@ -1756,16 +2454,100 @@ declare class PresetSettingsComponent implements OnInit {
1756
2454
  static ɵcmp: i0.ɵɵComponentDeclaration<PresetSettingsComponent, "lib-preset-settings", never, {}, {}, never, never, false, never>;
1757
2455
  }
1758
2456
 
2457
+ declare class PresetStepComponent implements OnInit, OnDestroy {
2458
+ presetService: PresetService;
2459
+ private presetStepService;
2460
+ private modalService;
2461
+ private translateService;
2462
+ private changeDetectorRef;
2463
+ private ngZone;
2464
+ activeStep: PresetStep;
2465
+ activeStepPercentage: number;
2466
+ private activeStepTimer;
2467
+ constructor(presetService: PresetService, presetStepService: PresetStepService, modalService: BsModalService, translateService: TranslateService, changeDetectorRef: ChangeDetectorRef, ngZone: NgZone);
2468
+ ngOnInit(): void;
2469
+ ngOnDestroy(): void;
2470
+ stepDescription(step: PresetStep, index: number): string;
2471
+ selectStep(step: PresetStep): void;
2472
+ addStep(): void;
2473
+ deleteStep(): void;
2474
+ switchStepPreview(): void;
2475
+ openStepsSettings(): void;
2476
+ openSettings(step: PresetStep): void;
2477
+ static ɵfac: i0.ɵɵFactoryDeclaration<PresetStepComponent, never>;
2478
+ static ɵcmp: i0.ɵɵComponentDeclaration<PresetStepComponent, "lib-app-preset-step", never, {}, {}, never, never, false, never>;
2479
+ }
2480
+
2481
+ declare class PresetStepSettingsComponent implements OnInit {
2482
+ bsModalRef: BsModalRef;
2483
+ private presetService;
2484
+ private presetStepService;
2485
+ preset: Preset;
2486
+ step: PresetStep;
2487
+ startMillis: number;
2488
+ transitionMillis: number;
2489
+ transitionCurve: TransitionCurveType;
2490
+ stepNumber: number;
2491
+ wholeStepMillis: number;
2492
+ effectAmounts: number[];
2493
+ transitionCurveTypes: TransitionCurveType[];
2494
+ constructor(bsModalRef: BsModalRef, presetService: PresetService, presetStepService: PresetStepService);
2495
+ ngOnInit(): void;
2496
+ ok(): void;
2497
+ cancel(): void;
2498
+ handleKeyboardEvent(event: any): void;
2499
+ static ɵfac: i0.ɵɵFactoryDeclaration<PresetStepSettingsComponent, never>;
2500
+ static ɵcmp: i0.ɵɵComponentDeclaration<PresetStepSettingsComponent, "lib-preset-step-settings", never, {}, {}, never, never, false, never>;
2501
+ }
2502
+
2503
+ declare class PresetStepsSettingsComponent implements OnInit {
2504
+ bsModalRef: BsModalRef;
2505
+ private presetStepService;
2506
+ private livePreviewService;
2507
+ preset: Preset;
2508
+ stepsLoop: boolean;
2509
+ stepsLoopMillis: number;
2510
+ stepsPhasingMode: string;
2511
+ stepsPhasingMillis: number;
2512
+ stepsPhasingCycles: number;
2513
+ stepsPhasingGroupSize: number;
2514
+ automaticLoopMillis: number;
2515
+ constructor(bsModalRef: BsModalRef, presetStepService: PresetStepService, livePreviewService: LivePreviewService);
2516
+ ngOnInit(): void;
2517
+ setPhasingAmount(amount: number): void;
2518
+ ok(): void;
2519
+ cancel(): void;
2520
+ handleKeyboardEvent(event: any): void;
2521
+ static ɵfac: i0.ɵɵFactoryDeclaration<PresetStepsSettingsComponent, never>;
2522
+ static ɵcmp: i0.ɵɵComponentDeclaration<PresetStepsSettingsComponent, "lib-preset-steps-settings", never, {}, {}, never, never, false, never>;
2523
+ }
2524
+
1759
2525
  declare class SceneSettingsComponent implements OnInit {
1760
2526
  bsModalRef: BsModalRef;
2527
+ private colorService;
2528
+ private sceneService;
2529
+ private livePreviewService;
1761
2530
  scene: Scene;
1762
2531
  name: string;
2532
+ color: string;
2533
+ colorAuto: boolean;
2534
+ icon: string;
2535
+ dimmer: number;
1763
2536
  fadeInMillis: number;
1764
2537
  fadeOutMillis: number;
1765
2538
  fadeInPre: boolean;
1766
2539
  fadeOutPost: boolean;
1767
- constructor(bsModalRef: BsModalRef);
2540
+ fadeInCurve: TransitionCurveType;
2541
+ fadeOutCurve: TransitionCurveType;
2542
+ transitionCurveTypes: TransitionCurveType[];
2543
+ derivedColor: string;
2544
+ readonly defaultIcon = "fa-picture-o";
2545
+ palette: string[];
2546
+ constructor(bsModalRef: BsModalRef, colorService: ColorService, sceneService: SceneService, livePreviewService: LivePreviewService);
1768
2547
  ngOnInit(): void;
2548
+ dimmerPercentage(): number;
2549
+ setDimmer(value: any): void;
2550
+ shownColor(): string;
1769
2551
  ok(): void;
1770
2552
  cancel(): void;
1771
2553
  handleKeyboardEvent(event: any): void;
@@ -1817,10 +2599,12 @@ declare class FixturePoolCreateFromFileComponent implements OnInit {
1817
2599
  declare class FixturePoolEditUniversesComponent {
1818
2600
  bsModalRef: BsModalRef;
1819
2601
  private uuidService;
2602
+ hardwarePromoService: HardwarePromoService;
1820
2603
  universes: UniverseConfig[];
1821
2604
  newUniverseName: string;
1822
2605
  onClose: Subject<UniverseConfig[] | undefined>;
1823
- constructor(bsModalRef: BsModalRef, uuidService: UuidService);
2606
+ promoLink: string;
2607
+ constructor(bsModalRef: BsModalRef, uuidService: UuidService, hardwarePromoService: HardwarePromoService);
1824
2608
  addUniverse(): void;
1825
2609
  removeUniverse(universe: UniverseConfig): void;
1826
2610
  ok(): void;
@@ -1869,9 +2653,106 @@ declare class SortablejsDirective implements AfterViewInit, OnDestroy {
1869
2653
  static ɵdir: i0.ɵɵDirectiveDeclaration<SortablejsDirective, "[sortablejs]", never, { "sortablejs": { "alias": "sortablejs"; "required": false; }; "sortablejsContainer": { "alias": "sortablejsContainer"; "required": false; }; "sortablejsOptions": { "alias": "sortablejsOptions"; "required": false; }; }, { "sortablejsInit": "sortablejsInit"; }, never, never, false, never>;
1870
2654
  }
1871
2655
 
2656
+ declare class InlineEditComponent {
2657
+ value: string;
2658
+ valueChange: EventEmitter<string>;
2659
+ placeholder: string;
2660
+ editing: boolean;
2661
+ editValue: string;
2662
+ editInput: ElementRef<HTMLInputElement>;
2663
+ get inputSize(): number;
2664
+ startEdit(): void;
2665
+ save(): void;
2666
+ cancel(): void;
2667
+ static ɵfac: i0.ɵɵFactoryDeclaration<InlineEditComponent, never>;
2668
+ static ɵcmp: i0.ɵɵComponentDeclaration<InlineEditComponent, "lib-app-inline-edit", never, { "value": { "alias": "value"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
2669
+ }
2670
+
2671
+ /**
2672
+ * Picks the color an item (a scene, a preset) is marked with: a wheel for a free
2673
+ * choice, a palette for a quick one and the hex value for an exact one.
2674
+ *
2675
+ * The color can also be left to the item itself, which is what the "automatic" switch
2676
+ * is for: the picker then shows what the item derives (autoColor), and picking anything
2677
+ * puts it back to the color chosen here.
2678
+ */
2679
+ declare class ColorPickerComponent implements AfterViewInit, OnChanges, OnDestroy {
2680
+ color: string;
2681
+ colorChange: EventEmitter<string>;
2682
+ auto: boolean;
2683
+ autoChange: EventEmitter<boolean>;
2684
+ autoColor: string;
2685
+ autoLabel: string;
2686
+ palette: string[];
2687
+ wheelContainer: ElementRef<HTMLElement>;
2688
+ hexValue: string;
2689
+ readonly autoId: string;
2690
+ private static instances;
2691
+ private picker;
2692
+ private updating;
2693
+ private mounted;
2694
+ get shownColor(): string;
2695
+ ngAfterViewInit(): void;
2696
+ ngOnChanges(): void;
2697
+ ngOnDestroy(): void;
2698
+ private static readonly noColor;
2699
+ pick(color: string): void;
2700
+ pickHex(value: string): void;
2701
+ resetHex(): void;
2702
+ setAuto(auto: boolean): void;
2703
+ private onWheelChange;
2704
+ private apply;
2705
+ private update;
2706
+ private static parseHex;
2707
+ static ɵfac: i0.ɵɵFactoryDeclaration<ColorPickerComponent, never>;
2708
+ static ɵcmp: i0.ɵɵComponentDeclaration<ColorPickerComponent, "lib-app-color-picker", never, { "color": { "alias": "color"; "required": false; }; "auto": { "alias": "auto"; "required": false; }; "autoColor": { "alias": "autoColor"; "required": false; }; "autoLabel": { "alias": "autoLabel"; "required": false; }; "palette": { "alias": "palette"; "required": false; }; }, { "colorChange": "colorChange"; "autoChange": "autoChange"; }, never, never, false, never>;
2709
+ }
2710
+
2711
+ /**
2712
+ * Picks the icon an item (a scene, a preset) is shown with in the trees, from a small
2713
+ * set of font awesome glyphs which say something about lighting: what a look is, what
2714
+ * it does and where in the show it belongs.
2715
+ *
2716
+ * The icon can also be left alone, which is what the first entry is for: the item then
2717
+ * keeps the default icon of its kind.
2718
+ */
2719
+ declare class IconPickerComponent implements OnChanges {
2720
+ icon: string;
2721
+ iconChange: EventEmitter<string>;
2722
+ defaultIcon: string;
2723
+ color: string;
2724
+ pickableIcons: string[];
2725
+ ngOnChanges(): void;
2726
+ get defaultPicked(): boolean;
2727
+ pick(icon: string): void;
2728
+ private static readonly icons;
2729
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconPickerComponent, never>;
2730
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconPickerComponent, "lib-app-icon-picker", never, { "icon": { "alias": "icon"; "required": false; }; "defaultIcon": { "alias": "defaultIcon"; "required": false; }; "color": { "alias": "color"; "required": false; }; }, { "iconChange": "iconChange"; }, never, never, false, never>;
2731
+ }
2732
+
2733
+ declare class HardwarePromoBarComponent {
2734
+ hardwarePromoService: HardwarePromoService;
2735
+ introService: IntroService;
2736
+ link: string;
2737
+ constructor(hardwarePromoService: HardwarePromoService, introService: IntroService);
2738
+ get show(): boolean;
2739
+ dismiss(): void;
2740
+ static ɵfac: i0.ɵɵFactoryDeclaration<HardwarePromoBarComponent, never>;
2741
+ static ɵcmp: i0.ɵɵComponentDeclaration<HardwarePromoBarComponent, "lib-app-hardware-promo-bar", never, {}, {}, never, never, false, never>;
2742
+ }
2743
+
2744
+ declare class HardwarePromoDialogComponent {
2745
+ private bsModalRef;
2746
+ link: string;
2747
+ constructor(bsModalRef: BsModalRef, hardwarePromoService: HardwarePromoService);
2748
+ close(): void;
2749
+ static ɵfac: i0.ɵɵFactoryDeclaration<HardwarePromoDialogComponent, never>;
2750
+ static ɵcmp: i0.ɵɵComponentDeclaration<HardwarePromoDialogComponent, "lib-app-hardware-promo-dialog", never, {}, {}, never, never, false, never>;
2751
+ }
2752
+
1872
2753
  declare class DesignerModule {
1873
2754
  static ɵfac: i0.ɵɵFactoryDeclaration<DesignerModule, never>;
1874
- static ɵmod: i0.ɵɵNgModuleDeclaration<DesignerModule, [typeof DesignerComponent, typeof WarningDialogComponent, typeof PreviewComponent, typeof EffectCurveComponent, typeof EffectPanTiltComponent, typeof SceneComponent, typeof TimelineComponent, typeof FixtureCapabilityColorComponent, typeof FixtureComponent, typeof FixtureSettingsPositionComponent, typeof FixtureCapabilityComponent, typeof FixtureSettingsComponent, typeof EffectComponent, typeof FixturePoolComponent, typeof PresetComponent, typeof MasterDimmerComponent, typeof FixtureCapabilityDimmerComponent, typeof TimelineGridComponent, typeof CompositionSettingsComponent, typeof ArraySortPipe, typeof FixtureCapabilityPanTiltComponent, typeof FixtureCapabilityChannelComponent, typeof FixtureChannelComponent, typeof FixtureCapabilityColorWheelComponent, typeof UserLoginComponent, typeof UserRegisterComponent, typeof ProjectBrowserComponent, typeof WaitDialogComponent, typeof ProjectImportComponent, typeof ProjectShareComponent, typeof ErrorDialogComponent, typeof FixtureSettingsStageComponent, typeof IntroComponent, typeof PresetSettingsComponent, typeof SceneSettingsComponent, typeof ProjectSaveComponent, typeof FixturePoolCreateFromFileComponent, typeof FixturePoolEditUniversesComponent, typeof DropzoneComponent, typeof SortablejsDirective, typeof TreeComponent], [typeof i42.RouterModule, typeof i43.BrowserModule, typeof i44.BrowserAnimationsModule, typeof i45.FormsModule, typeof i46.NgxBootstrapSliderModule, typeof i47.TranslateModule, typeof i48.AccordionModule, typeof i49.PopoverModule, typeof i50.TypeaheadModule, typeof i51.DropzoneModule, typeof i52.ToastrModule], [typeof DesignerComponent]>;
2755
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DesignerModule, [typeof DesignerComponent, typeof WarningDialogComponent, typeof PreviewComponent, typeof EffectCurveComponent, typeof EffectCurveAdvancedComponent, typeof EffectPanTiltComponent, typeof SceneComponent, typeof TimelineComponent, typeof FixtureCapabilityColorComponent, typeof FixtureComponent, typeof FixtureSettingsPositionComponent, typeof FixtureCapabilityComponent, typeof FixtureSettingsComponent, typeof EffectComponent, typeof FixturePoolComponent, typeof PresetComponent, typeof MasterDimmerComponent, typeof FixtureCapabilityDimmerComponent, typeof TimelineGridComponent, typeof CompositionSettingsComponent, typeof ArraySortPipe, typeof FixtureCapabilityPanTiltComponent, typeof FixtureCapabilityChannelComponent, typeof FixtureChannelComponent, typeof FixtureCapabilityColorWheelComponent, typeof UserLoginComponent, typeof UserRegisterComponent, typeof ProjectBrowserComponent, typeof WaitDialogComponent, typeof ProjectImportComponent, typeof ProjectShareComponent, typeof ErrorDialogComponent, typeof FixtureSettingsStageComponent, typeof IntroComponent, typeof PresetSettingsComponent, typeof PresetStepComponent, typeof PresetStepSettingsComponent, typeof PresetStepsSettingsComponent, typeof SceneSettingsComponent, typeof ProjectSaveComponent, typeof FixturePoolCreateFromFileComponent, typeof FixturePoolEditUniversesComponent, typeof DropzoneComponent, typeof SortablejsDirective, typeof TreeComponent, typeof InlineEditComponent, typeof ColorPickerComponent, typeof IconPickerComponent, typeof HardwarePromoBarComponent, typeof HardwarePromoDialogComponent], [typeof i51.RouterModule, typeof i52.BrowserModule, typeof i53.BrowserAnimationsModule, typeof i54.FormsModule, typeof i55.NgxBootstrapSliderModule, typeof i56.TranslateModule, typeof i57.AccordionModule, typeof i58.PopoverModule, typeof i59.TypeaheadModule, typeof i60.DropzoneModule, typeof i61.ToastrModule], [typeof DesignerComponent]>;
1875
2756
  static ɵinj: i0.ɵɵInjectorDeclaration<DesignerModule>;
1876
2757
  }
1877
2758