@rocketshow/designer 1.67.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,41 +379,115 @@ 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);
398
478
  }
399
479
 
480
+ /**
481
+ * Lightweight configuration entry describing a universe that can
482
+ * be selected by the user inside the fixture pool. The actual
483
+ * runtime universe (with channel values, etc.) is represented by
484
+ * the `Universe` model.
485
+ */
486
+ interface UniverseConfig {
487
+ uuid: string;
488
+ name: string;
489
+ }
490
+
400
491
  declare class Project {
401
492
  id: number;
402
493
  version: number;
@@ -412,14 +503,21 @@ declare class Project {
412
503
  masterDimmerValue: number;
413
504
  selectedPresetUuid: string;
414
505
  selectedSceneUuids: string[];
506
+ selectedStepUuid: string;
507
+ stepPreviewRunning: boolean;
508
+ stepPreviewStartMillis: number;
415
509
  previewPreset: boolean;
416
510
  selectedCompositionUuid: string;
417
511
  compositions: Composition[];
418
512
  fixtureProfiles: FixtureProfile[];
419
513
  fixtures: Fixture[];
420
514
  presetFixtures: PresetFixture[];
515
+ universes: UniverseConfig[];
421
516
  scenes: Scene[];
422
517
  presets: Preset[];
518
+ sceneFolders: Folder[];
519
+ presetFolders: Folder[];
520
+ fixtureFolders: Folder[];
423
521
  constructor(data?: any);
424
522
  }
425
523
 
@@ -430,7 +528,7 @@ declare class UserService {
430
528
  username: string;
431
529
  constructor(http: HttpClient);
432
530
  private loadFromLocalStorage;
433
- register(email: string, username: string, password: string): Observable<any>;
531
+ register(email: string, username: string, password: string, newsletter: boolean): Observable<any>;
434
532
  login(email: string, password: string): Observable<any>;
435
533
  logout(): void;
436
534
  isLoggedIn(): boolean;
@@ -442,6 +540,27 @@ declare class UserService {
442
540
  static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
443
541
  }
444
542
 
543
+ declare class ConfigService {
544
+ restUrl: string;
545
+ enableMediaLibrary: boolean;
546
+ loginAvailable: boolean;
547
+ shareAvailable: boolean;
548
+ menuHeightPx: number;
549
+ languageSwitch: boolean;
550
+ livePreview: boolean;
551
+ localProfiles: boolean;
552
+ intro: boolean;
553
+ uniqueProjectNames: boolean;
554
+ dropzoneChunking: boolean;
555
+ universes: UniverseConfig[];
556
+ freeUniverseEdit: boolean;
557
+ hardwarePromo: boolean;
558
+ menuHeightChanged: Subject<void>;
559
+ constructor();
560
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfigService, never>;
561
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConfigService>;
562
+ }
563
+
445
564
  declare class ProjectService {
446
565
  private http;
447
566
  private userService;
@@ -449,10 +568,13 @@ declare class ProjectService {
449
568
  private activatedRoute;
450
569
  private translateService;
451
570
  private toastrService;
571
+ private configService;
452
572
  project: Project;
453
573
  currentProjectVersion: number;
454
- constructor(http: HttpClient, userService: UserService, router: Router, activatedRoute: ActivatedRoute, translateService: TranslateService, toastrService: ToastrService);
574
+ projectChanged: Subject<void>;
575
+ constructor(http: HttpClient, userService: UserService, router: Router, activatedRoute: ActivatedRoute, translateService: TranslateService, toastrService: ToastrService, configService: ConfigService);
455
576
  private saveApi;
577
+ writeCompatibilityValues(project: Project): void;
456
578
  save(project: Project): void;
457
579
  getAllProjects(): Observable<Project[]>;
458
580
  deleteProject(project: Project): Observable<any>;
@@ -489,12 +611,16 @@ declare class FixtureService {
489
611
  private uuidService;
490
612
  private fixturePixelGroupResolveService;
491
613
  cachedFixtures: CachedFixture[];
614
+ private fixtureIndex;
615
+ private profileIndex;
616
+ private cachedFixtureIndex;
492
617
  settingsSelection: boolean;
493
618
  selectedSettingsFixtures: Fixture[];
494
619
  constructor(http: HttpClient, projectService: ProjectService, translateService: TranslateService, toastrService: ToastrService, uuidService: UuidService, fixturePixelGroupResolveService: FixturePixelGroupResolveService);
495
620
  getFixtureByUuid(uuid: string): Fixture;
496
621
  private fixtureUuidAndPixelKeyEquals;
497
622
  getCachedFixtureByUuid(uuid: string, pixelKey: string): CachedFixture;
623
+ private getCachedFixturesByUuid;
498
624
  getSearchProfiles(): Observable<FixtureProfile[]>;
499
625
  getProfileByUuid(uuid: string): FixtureProfile;
500
626
  loadProfileByUuid(uuid: string): Observable<void>;
@@ -551,58 +677,100 @@ declare class PreviewMeshService {
551
677
  static ɵprov: i0.ɵɵInjectableDeclaration<PreviewMeshService>;
552
678
  }
553
679
 
554
- declare class PresetRegionScene {
555
- preset: Preset;
556
- region: ScenePlaybackRegion;
557
- scene: Scene;
558
- 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>;
559
692
  }
560
693
 
561
694
  declare class EffectService {
695
+ private uuidService;
562
696
  selectedEffect: Effect;
563
697
  effectsOpen: boolean;
564
698
  effectsOpenChanged: Subject<void>;
565
- constructor();
699
+ effectsChanged: Subject<void>;
700
+ constructor(uuidService: UuidService);
701
+ duplicateEffect(preset: Preset, effect: Effect): Effect;
702
+ private copyOf;
566
703
  static ɵfac: i0.ɵɵFactoryDeclaration<EffectService, never>;
567
704
  static ɵprov: i0.ɵɵInjectableDeclaration<EffectService>;
568
705
  }
569
706
 
570
- declare class AnimationService {
571
- timeMillis: number;
572
- constructor();
573
- static ɵfac: i0.ɵɵFactoryDeclaration<AnimationService, never>;
574
- static ɵprov: i0.ɵɵInjectableDeclaration<AnimationService>;
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;
575
714
  }
576
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
+ }
577
747
  /**
578
- * Lightweight configuration entry describing a universe that can
579
- * be selected by the user inside the fixture pool. The actual
580
- * runtime universe (with channel values, etc.) is represented by
581
- * the `Universe` model.
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.
582
753
  */
583
- interface UniverseConfig {
584
- uuid: string;
585
- name: string;
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>;
586
767
  }
587
768
 
588
- declare class ConfigService {
589
- restUrl: string;
590
- enableMediaLibrary: boolean;
591
- loginAvailable: boolean;
592
- shareAvailable: boolean;
593
- menuHeightPx: number;
594
- languageSwitch: boolean;
595
- livePreview: boolean;
596
- localProfiles: boolean;
597
- intro: boolean;
598
- uniqueProjectNames: boolean;
599
- dropzoneChunking: boolean;
600
- universes: UniverseConfig[];
601
- freeUniverseEdit: boolean;
602
- menuHeightChanged: Subject<void>;
769
+ declare class AnimationService {
770
+ timeMillis: number;
603
771
  constructor();
604
- static ɵfac: i0.ɵɵFactoryDeclaration<ConfigService, never>;
605
- static ɵprov: i0.ɵɵInjectableDeclaration<ConfigService>;
772
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnimationService, never>;
773
+ static ɵprov: i0.ɵɵInjectableDeclaration<AnimationService>;
606
774
  }
607
775
 
608
776
  declare class TimelineStateService {
@@ -620,11 +788,13 @@ declare class LivePreviewService {
620
788
  private projectService;
621
789
  private animationService;
622
790
  private timelineStateService;
791
+ private static readonly throttleMillis;
623
792
  private livePreviewTimer;
624
- private liveChangePending;
625
- private livePreviewPendingPositionMillis;
793
+ private pendingPositionMillis;
626
794
  constructor(configService: ConfigService, http: HttpClient, projectService: ProjectService, animationService: AnimationService, timelineStateService: TimelineStateService);
627
795
  previewLive(compositionName?: string, positionMillis?: number): void;
796
+ private startThrottleTimer;
797
+ private postPreview;
628
798
  stopPreviewPlay(): void;
629
799
  static ɵfac: i0.ɵɵFactoryDeclaration<LivePreviewService, never>;
630
800
  static ɵprov: i0.ɵɵInjectableDeclaration<LivePreviewService>;
@@ -632,19 +802,33 @@ declare class LivePreviewService {
632
802
 
633
803
  declare class PresetService {
634
804
  private effectService;
805
+ private presetStepService;
635
806
  private uuidService;
636
807
  private projectService;
637
808
  private fixtureService;
638
809
  private livePreviewService;
810
+ private animationService;
811
+ private folderService;
639
812
  selectedPreset: Preset;
813
+ static readonly defaultIcon = "fa-lightbulb-o";
814
+ selectedStep: PresetStep;
815
+ private presetFixtureIndex;
640
816
  previewSelectionChanged: Subject<void>;
817
+ presetsChanged: Subject<void>;
818
+ stepsChanged: Subject<void>;
641
819
  fixtureSelectionChanged: Subject<void>;
642
820
  fixtureSelectionSettingsChanged: Subject<void>;
643
821
  fixtureColorChanged: Subject<void>;
644
- 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;
645
825
  getPresetByUuid(uuid: string): Preset;
646
826
  fixtureUuidAndPixelKeyEquals(fixtureUuid1: string, fixtureUuid2: string, pixelKey1: string, pixelKey2: string): boolean;
647
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;
648
832
  fixtureIsSelected(fixture: Fixture, pixelKey: string, preset?: Preset): boolean;
649
833
  switchFixtureSelection(fixture: Fixture, pixelKey: string): void;
650
834
  selectAllFixtures(): void;
@@ -652,45 +836,114 @@ declare class PresetService {
652
836
  private presetFixtueEquals;
653
837
  removeDeletedFixtures(): void;
654
838
  updateFixtureSelection(): void;
655
- deleteCapabilityValue(preset: Preset, capabilityType: FixtureCapabilityType, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): void;
656
- setCapabilityValue(preset: Preset, capabilityType: FixtureCapabilityType, valuePercentage: number, slotNumber?: number, color?: FixtureCapabilityColor, wheel?: string, profileUuid?: string): void;
657
- 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;
658
844
  deleteChannelValue(channelName: string, profileUuid: string): void;
659
845
  setChannelValue(channelName: string, profileUuid: string, value: number): void;
660
846
  getChannelValue(channelName: string, profileUuid: string): number;
661
- 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;
662
851
  private hasCapabilityType;
663
852
  hasCapabilityDimmer(): boolean;
664
853
  hasCapabilityColor(): boolean;
665
854
  hasCapabilityColorOrColorWheel(): boolean;
666
855
  hasCapabilityPanTilt(): boolean;
856
+ setPreviewPreset(previewPreset: boolean): void;
667
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;
668
873
  autoOpenFirstEffect(): void;
669
874
  addPreset(name?: string): void;
875
+ duplicatePreset(preset: Preset, name?: string): Preset;
876
+ removePreset(preset: Preset): void;
670
877
  getSelectedProfiles(): FixtureProfile[];
671
878
  getSelectedProfileChannels(selectedProfiles: FixtureProfile[]): Map<FixtureProfile, CachedFixtureChannel[]>;
672
879
  static ɵfac: i0.ɵɵFactoryDeclaration<PresetService, never>;
673
880
  static ɵprov: i0.ɵɵInjectableDeclaration<PresetService>;
674
881
  }
675
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
+
676
921
  declare class SceneService {
677
922
  private uuidService;
923
+ private colorService;
678
924
  private effectService;
925
+ private folderService;
679
926
  private presetService;
680
927
  private projectService;
681
928
  private livePreviewService;
682
929
  selectedScenes: Scene[];
683
- sceneColors: string[];
684
- multipleSelection: boolean;
930
+ static readonly defaultIcon = "fa-picture-o";
685
931
  sceneDeleted: Subject<void>;
686
932
  sceneSelected: Subject<void>;
687
- 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;
688
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;
689
941
  presetIsSelected(preset: Preset): boolean;
690
- switchSceneSelection(scene: Scene): void;
691
942
  selectPresetFromSelectedScene(): void;
692
943
  selectScene(index: number): void;
693
- 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;
694
947
  removeScene(scene: Scene): void;
695
948
  getSceneByUuid(uuid: string): Scene;
696
949
  static ɵfac: i0.ɵɵFactoryDeclaration<SceneService, never>;
@@ -700,6 +953,7 @@ declare class SceneService {
700
953
  declare class TimelineService {
701
954
  private sceneService;
702
955
  private presetService;
956
+ private colorService;
703
957
  private projectService;
704
958
  private http;
705
959
  private configService;
@@ -720,14 +974,14 @@ declare class TimelineService {
720
974
  detectChanges: Subject<void>;
721
975
  externalCompositionsAvailable: boolean;
722
976
  loadingAudioFile: boolean;
723
- 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);
724
978
  get playState(): string;
725
979
  set playState(playState: string);
726
980
  get selectedComposition(): Composition;
727
981
  set selectedComposition(selectedComposition: Composition);
728
982
  get selectedCompositionIndex(): number;
729
983
  set selectedCompositionIndex(selectedCompositionIndex: number);
730
- private redrawAllRegions;
984
+ redrawAllRegions(): void;
731
985
  private pad;
732
986
  private msToTime;
733
987
  private updateCurrentTime;
@@ -746,12 +1000,15 @@ declare class TimelineService {
746
1000
  deleteSelectedComposition(): void;
747
1001
  destroyWaveSurfer(): void;
748
1002
  createWaveSurfer(): void;
749
- private hexToRgb;
1003
+ private regionColor;
750
1004
  private updateRegionSelection;
751
1005
  updateSelectedRegion(): void;
752
1006
  private setSelectedRegion;
753
1007
  private getRegionSnapToGridValue;
754
1008
  private connectRegion;
1009
+ updateStepMarkers(): void;
1010
+ private drawStepMarkers;
1011
+ private createStepMarker;
755
1012
  private drawRegion;
756
1013
  removeRegion(): void;
757
1014
  getPresetsInTime(timeMillis: number): PresetRegionScene[];
@@ -765,6 +1022,7 @@ declare class TimelineService {
765
1022
 
766
1023
  declare class PreviewService implements OnDestroy {
767
1024
  private presetService;
1025
+ private presetStepService;
768
1026
  private fixtureService;
769
1027
  private sceneService;
770
1028
  private timelineService;
@@ -778,14 +1036,18 @@ declare class PreviewService implements OnDestroy {
778
1036
  private stageMaterial;
779
1037
  fixtureMaterial: THREE.MeshStandardMaterial;
780
1038
  fixtureSelectedMaterial: THREE.MeshLambertMaterial;
781
- 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);
782
1040
  private getAlreadyCalculatedFixture;
783
1041
  getPresets(timeMillis: number): PresetRegionScene[];
784
1042
  private mixChannelValue;
785
1043
  private getFixtureIndex;
1044
+ private getPresetStartMillis;
1045
+ private getPresetStepState;
786
1046
  private getPresetIntensity;
787
1047
  private mixCapabilityValues;
788
1048
  private mixChannelValues;
1049
+ private getBeatsPerMinute;
1050
+ private getCurveTimeMillis;
789
1051
  private mixEffects;
790
1052
  getChannelValues(timeMillis: number, presets: PresetRegionScene[]): Map<CachedFixture, FixtureChannelValue[]>;
791
1053
  fixtureIsSelected(uuid: string, pixelKey: string, presets: PresetRegionScene[]): boolean;
@@ -803,8 +1065,11 @@ declare class PreviewComponent implements AfterViewInit {
803
1065
  private animationService;
804
1066
  private previewService;
805
1067
  private timelineService;
806
- private projectService;
1068
+ projectService: ProjectService;
1069
+ private presetService;
1070
+ private sceneService;
807
1071
  private ngZone;
1072
+ hardwarePromoService: HardwarePromoService;
808
1073
  private renderer;
809
1074
  private scene;
810
1075
  private camera;
@@ -812,11 +1077,14 @@ declare class PreviewComponent implements AfterViewInit {
812
1077
  private fixtures3d;
813
1078
  private fixtureGroups;
814
1079
  private canvasRef;
815
- 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);
816
1083
  private syncFixtures;
817
1084
  private get canvas();
818
1085
  private render;
819
1086
  private updateStagePosition;
1087
+ private updateFixtures;
820
1088
  private animate;
821
1089
  private getAspectRatio;
822
1090
  onResize(): void;
@@ -824,6 +1092,9 @@ declare class PreviewComponent implements AfterViewInit {
824
1092
  private setupCamera;
825
1093
  private setupControls;
826
1094
  private setupScene;
1095
+ soloPreset(): boolean;
1096
+ switchPreviewHidden(): void;
1097
+ previewName(): string;
827
1098
  ngAfterViewInit(): void;
828
1099
  static ɵfac: i0.ɵɵFactoryDeclaration<PreviewComponent, never>;
829
1100
  static ɵcmp: i0.ɵɵComponentDeclaration<PreviewComponent, "lib-app-preview", never, {}, {}, never, never, false, never>;
@@ -848,8 +1119,10 @@ declare class FixturePoolService {
848
1119
  }
849
1120
 
850
1121
  declare class HotkeyTargetExcludeService {
1122
+ private static readonly textInputTypes;
851
1123
  constructor();
852
1124
  exclude(event: any): boolean;
1125
+ excludeTyping(event: any): boolean;
853
1126
  static ɵfac: i0.ɵɵFactoryDeclaration<HotkeyTargetExcludeService, never>;
854
1127
  static ɵprov: i0.ɵɵInjectableDeclaration<HotkeyTargetExcludeService>;
855
1128
  }
@@ -887,6 +1160,7 @@ declare class ProjectLoadService {
887
1160
  private previewService;
888
1161
  private fixtureService;
889
1162
  private presetService;
1163
+ private presetStepService;
890
1164
  private sceneService;
891
1165
  private modalService;
892
1166
  private uuidService;
@@ -895,15 +1169,27 @@ declare class ProjectLoadService {
895
1169
  private activatedRoute;
896
1170
  private warningDialogService;
897
1171
  private livePreviewService;
898
- 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);
1172
+ private 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);
899
1175
  private migrateToVersion2;
1176
+ private migrateToVersion3;
1177
+ private migrateToVersion4;
1178
+ private migrateToVersion5;
1179
+ private migrateToVersion6;
1180
+ private migrateToVersion7;
1181
+ private globalFixtureIndex;
900
1182
  private migrateFromOldProject;
1183
+ private setupUniverses;
901
1184
  private afterLoad;
1185
+ private announceChanges;
902
1186
  private selectScenesPresetComposition;
903
1187
  load(id: number, name: string, shareToken?: string): Observable<void>;
904
1188
  new(): void;
905
1189
  template(): void;
906
1190
  import(data: string): void;
1191
+ private restoreSelectedComposition;
1192
+ restoreProject(project: Project): void;
907
1193
  static ɵfac: i0.ɵɵFactoryDeclaration<ProjectLoadService, never>;
908
1194
  static ɵprov: i0.ɵɵInjectableDeclaration<ProjectLoadService>;
909
1195
  }
@@ -957,6 +1243,46 @@ declare class TimelineComponent implements OnInit, AfterViewInit {
957
1243
  static ɵcmp: i0.ɵɵComponentDeclaration<TimelineComponent, "lib-app-timeline", never, {}, {}, never, never, false, never>;
958
1244
  }
959
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
+
960
1286
  declare class DesignerComponent implements OnInit, AfterViewInit {
961
1287
  private translateService;
962
1288
  projectService: ProjectService;
@@ -972,7 +1298,11 @@ declare class DesignerComponent implements OnInit, AfterViewInit {
972
1298
  private fixtureService;
973
1299
  private timelineService;
974
1300
  introService: IntroService;
1301
+ presetService: PresetService;
1302
+ colorService: ColorService;
975
1303
  private effectService;
1304
+ private hardwarePromoService;
1305
+ undoService: UndoService;
976
1306
  set menuHeightPx(value: number);
977
1307
  set externalCompositionsAvailable(value: boolean);
978
1308
  set restUrl(value: string);
@@ -987,13 +1317,14 @@ declare class DesignerComponent implements OnInit, AfterViewInit {
987
1317
  set dropzoneChunking(value: boolean);
988
1318
  set universes(value: UniverseConfig[]);
989
1319
  set freeUniverseEdit(value: boolean);
1320
+ set hardwarePromo(value: boolean);
990
1321
  private designerMenuSizePx;
991
1322
  private splitGutterSizePx;
992
1323
  totalMenuHeightPx: number;
993
1324
  currentTab: string;
994
1325
  previewComponent: PreviewComponent;
995
1326
  timelineComponent: TimelineComponent;
996
- 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);
997
1328
  private loadError;
998
1329
  ngOnInit(): void;
999
1330
  private calcTotalMenuHeight;
@@ -1001,6 +1332,9 @@ declare class DesignerComponent implements OnInit, AfterViewInit {
1001
1332
  ngAfterViewInit(): void;
1002
1333
  openTab(tab: string): void;
1003
1334
  openFixturePool(): void;
1335
+ undo(): void;
1336
+ redo(): void;
1337
+ setProjectName(name: string): void;
1004
1338
  projectNew(): void;
1005
1339
  projectOpen(): void;
1006
1340
  projectSave(): void;
@@ -1010,9 +1344,10 @@ declare class DesignerComponent implements OnInit, AfterViewInit {
1010
1344
  projectExport(): void;
1011
1345
  projectShare(): void;
1012
1346
  handleKeyboardEvent(event: any): void;
1347
+ private handleUndoRedo;
1013
1348
  switchLanguage(language: string): void;
1014
1349
  static ɵfac: i0.ɵɵFactoryDeclaration<DesignerComponent, never>;
1015
- 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>;
1016
1351
  }
1017
1352
 
1018
1353
  declare class WarningDialogComponent implements OnInit {
@@ -1035,18 +1370,61 @@ declare class EffectCurveProfileChannels {
1035
1370
  }
1036
1371
 
1037
1372
  declare class EffectCurve extends Effect {
1373
+ private static readonly dutyCycleTypes;
1374
+ private static readonly cycleEpsilon;
1375
+ static readonly defaultBeatsPerMinute = 120;
1038
1376
  curveType: string;
1039
1377
  capabilities: FixtureCapability[];
1040
1378
  channels: EffectCurveProfileChannels[];
1379
+ lengthMode: string;
1041
1380
  lengthMillis: number;
1381
+ lengthBeats: number;
1042
1382
  phaseMillis: number;
1383
+ phaseBeats: number;
1043
1384
  amplitude: number;
1044
1385
  position: number;
1386
+ dutyCycle: number;
1387
+ runMode: string;
1388
+ runCycles: number;
1389
+ runDurationMillis: number;
1390
+ endMode: string;
1391
+ phasingMode: string;
1045
1392
  phasingMillis: number;
1393
+ phasingBeats: number;
1394
+ phasingCycles: number;
1395
+ phasingGroupSize: number;
1046
1396
  constructor(data?: any);
1047
- 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;
1048
1427
  }
1049
-
1050
1428
  declare class EffectCurveComponent implements OnInit, OnDestroy {
1051
1429
  presetService: PresetService;
1052
1430
  private animationService;
@@ -1055,54 +1433,113 @@ declare class EffectCurveComponent implements OnInit, OnDestroy {
1055
1433
  private effectService;
1056
1434
  private ngZone;
1057
1435
  livePreviewService: LivePreviewService;
1058
- private gridUpdateSubscription;
1436
+ private modalService;
1437
+ private timelineService;
1438
+ private animationFrameId;
1059
1439
  private ctx;
1060
1440
  private maxWidth;
1061
1441
  private maxHeight;
1062
1442
  lengthMillisMin: number;
1063
1443
  lengthMillisMax: number;
1444
+ lengthBeatsMin: number;
1445
+ lengthBeatsMax: number;
1064
1446
  amplitudeMin: number;
1065
1447
  amplitudeMax: number;
1066
1448
  percentageMin: number;
1067
1449
  percentageMax: number;
1068
- phaseMillisMin: number;
1069
- phaseMillisMax: number;
1070
1450
  phasingMillisMin: number;
1071
1451
  phasingMillisMax: number;
1072
- availableCapabilities: FixtureCapability[];
1073
- 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;
1074
1461
  availableProfiles: FixtureProfile[];
1075
1462
  selectedProfiles: FixtureProfile[];
1076
1463
  private effectsOpenChangedSubscription;
1464
+ private fixtureSelectionChangedSubscription;
1465
+ private langChangeSubscription;
1466
+ private effectSelected;
1467
+ private phasingCount;
1468
+ private phasingCountMillis;
1077
1469
  curve: EffectCurve;
1078
1470
  set isSelected(value: boolean);
1079
1471
  curveGrid: ElementRef;
1080
- 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);
1081
1473
  ngOnInit(): void;
1082
1474
  ngOnDestroy(): void;
1083
- private startUpdateTimer;
1084
- private stopUpdateTimer;
1475
+ private startAnimation;
1476
+ private stopAnimation;
1477
+ get beatsPerMinute(): number;
1085
1478
  private drawCurrentValue;
1086
1479
  private getPhasingCount;
1480
+ private getGridDurationMillis;
1087
1481
  redraw(): void;
1088
1482
  private calculateChannelCapabilities;
1089
1483
  changeProfileSelection($event: any, profile: FixtureProfile): void;
1484
+ profileChecked(profile: FixtureProfile): boolean;
1090
1485
  private updateCapabilitiesAndChannels;
1091
- getCapabilityName(capability: FixtureCapability): Observable<string>;
1092
- capabilityChecked(capability: FixtureCapability): boolean;
1093
- toggleCapability(event: any, capability: FixtureCapability): void;
1094
- getChannelName(profileName: string, channelName: string): string;
1095
- channelChecked(profile: FixtureProfile, channel: CachedFixtureChannel): boolean;
1096
- 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;
1097
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;
1098
1504
  setAmplitude(value: any): void;
1099
1505
  setPosition(value: any): void;
1100
1506
  setPhaseMillis(value: any): void;
1507
+ setPhaseBeats(value: any): void;
1101
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;
1102
1514
  static ɵfac: i0.ɵɵFactoryDeclaration<EffectCurveComponent, never>;
1103
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>;
1104
1516
  }
1105
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
+
1106
1543
  declare class EffectPanTiltComponent implements OnInit {
1107
1544
  panTiltGrid: ElementRef;
1108
1545
  private svg;
@@ -1117,16 +1554,171 @@ declare class EffectPanTiltComponent implements OnInit {
1117
1554
  static ɵcmp: i0.ɵɵComponentDeclaration<EffectPanTiltComponent, "lib-app-effect-pan-tilt", never, {}, {}, never, never, false, never>;
1118
1555
  }
1119
1556
 
1120
- 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 {
1121
1678
  sceneService: SceneService;
1122
1679
  presetService: PresetService;
1123
1680
  projectService: ProjectService;
1681
+ private colorService;
1682
+ private folderService;
1683
+ private translateService;
1124
1684
  private modalService;
1685
+ private livePreviewService;
1125
1686
  introService: IntroService;
1126
- 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);
1127
1695
  ngOnInit(): void;
1128
- selectScene(event: any, index: number): void;
1129
- 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;
1130
1722
  openSettings(scene: Scene): void;
1131
1723
  static ɵfac: i0.ɵɵFactoryDeclaration<SceneComponent, never>;
1132
1724
  static ɵcmp: i0.ɵɵComponentDeclaration<SceneComponent, "lib-app-scene", never, {}, {}, never, never, false, never>;
@@ -1156,19 +1748,75 @@ declare class FixtureCapabilityColorComponent implements OnInit, OnDestroy {
1156
1748
  static ɵcmp: i0.ɵɵComponentDeclaration<FixtureCapabilityColorComponent, "lib-app-fixture-capability-color", never, {}, {}, never, never, false, never>;
1157
1749
  }
1158
1750
 
1159
- 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 {
1160
1773
  projectService: ProjectService;
1161
1774
  presetService: PresetService;
1162
1775
  private fixturePoolService;
1163
1776
  fixtureService: FixtureService;
1164
1777
  introService: IntroService;
1778
+ private folderService;
1779
+ private fixtureOrderService;
1780
+ private translateService;
1165
1781
  private livePreviewService;
1166
- fixtureSortableOptions: Options;
1167
- 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);
1168
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;
1169
1817
  fixtureName(presetFixture: PresetFixture): string;
1170
1818
  fixtureIsSelected(presetFixture: PresetFixture): boolean;
1171
- selectFixture(event: any, presetFixture: PresetFixture): void;
1819
+ selectFixture(presetFixture: PresetFixture): void;
1172
1820
  selectAll(): void;
1173
1821
  selectNone(): void;
1174
1822
  fixtureListReordered(): void;
@@ -1216,6 +1864,7 @@ declare class FixtureCapabilityComponent implements OnInit, OnDestroy {
1216
1864
  introService: IntroService;
1217
1865
  private fixtureSelectionChangedSubscription;
1218
1866
  private previewSelectionChangedSubscription;
1867
+ private stepsChangedSubscription;
1219
1868
  colorWheelChannels: Map<FixtureProfile, CachedFixtureChannel>;
1220
1869
  hasCapabilityDimmer: boolean;
1221
1870
  hasCapabilityColorOrColorWheel: boolean;
@@ -1252,15 +1901,24 @@ declare class EffectComponent implements OnInit {
1252
1901
  constructor(uuidService: UuidService, presetService: PresetService, effectService: EffectService, warningDialogService: WarningDialogService, livePreviewService: LivePreviewService);
1253
1902
  ngOnInit(): void;
1254
1903
  private addEffect;
1904
+ toggleVisible(effect: Effect): void;
1255
1905
  addCurveEffect(): void;
1256
1906
  addPanTiltEffect(): void;
1257
1907
  openEffect(effect: Effect, event: any): void;
1908
+ duplicateEffect(effect: Effect): void;
1258
1909
  deleteEffect(effect: Effect): void;
1259
1910
  static ɵfac: i0.ɵɵFactoryDeclaration<EffectComponent, never>;
1260
1911
  static ɵcmp: i0.ɵɵComponentDeclaration<EffectComponent, "lib-app-effect", never, {}, {}, never, never, false, never>;
1261
1912
  }
1262
1913
 
1263
- 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 {
1264
1922
  bsModalRef: BsModalRef;
1265
1923
  fixtureService: FixtureService;
1266
1924
  private uuidService;
@@ -1271,15 +1929,26 @@ declare class FixturePoolComponent implements OnInit {
1271
1929
  private presetService;
1272
1930
  configService: ConfigService;
1273
1931
  private modalService;
1932
+ private folderService;
1933
+ private fixtureOrderService;
1934
+ private ngZone;
1935
+ private hotkeyTargetExcludeService;
1274
1936
  private livePreviewService;
1275
- private profiles;
1937
+ hardwarePromoService: HardwarePromoService;
1276
1938
  filteredProfiles: FixtureProfile[];
1939
+ hiddenProfileCount: number;
1277
1940
  loadingProfiles: boolean;
1278
1941
  fixturePool: Fixture[];
1279
- 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>;
1280
1950
  selectedFixture: Fixture;
1281
1951
  selectedFixtureProfile: FixtureProfile;
1282
- showChannelNumbers: boolean;
1283
1952
  channelDragFixture: Fixture;
1284
1953
  channelDragOffset: number;
1285
1954
  onClose: Subject<number>;
@@ -1287,7 +1956,18 @@ declare class FixturePoolComponent implements OnInit {
1287
1956
  updatingProfiles: boolean;
1288
1957
  universes: UniverseConfig[];
1289
1958
  selectedUniverse: UniverseConfig;
1290
- 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);
1291
1971
  get freeUniverseEdit(): boolean;
1292
1972
  /** Fixtures belonging to the currently selected universe. */
1293
1973
  get currentUniverseFixtures(): Fixture[];
@@ -1295,22 +1975,54 @@ declare class FixturePoolComponent implements OnInit {
1295
1975
  private get channelFixtures();
1296
1976
  selectUniverse(universe: UniverseConfig): void;
1297
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;
1298
1987
  private loadProfiles;
1299
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;
1300
2011
  filterProfiles(): void;
1301
2012
  addFixture(searchProfile: FixtureProfile): void;
1302
2013
  addCopy(originalFixture: Fixture): void;
1303
2014
  removeFixture(fixture: Fixture): void;
1304
- channelOccupied(index: number): boolean;
1305
- channelOccupiedStart(index: number): boolean;
1306
- channelOccupiedEnd(index: number): boolean;
1307
- channelOverlapped(index: number): boolean;
1308
- private channelOverlappedInFixtures;
1309
- channelMouseDown(event: any): void;
1310
- channelSelected(index: number): boolean;
2015
+ updateChannelMap(): void;
2016
+ private lampKey;
2017
+ private fixtureChannelCount;
2018
+ private fixturesOverlap;
2019
+ channelMouseDown(event: MouseEvent): void;
1311
2020
  mouseUp(event: any): void;
1312
- channelMouseOver(event: any): void;
2021
+ private dragChannelTo;
2022
+ setFirstChannel(channel: number): void;
1313
2023
  ok(): void;
2024
+ private addPresetFixture;
2025
+ private applyFixtureOrder;
1314
2026
  cancel(): void;
1315
2027
  updateProfiles(): void;
1316
2028
  openEditUniverses(): void;
@@ -1320,97 +2032,53 @@ declare class FixturePoolComponent implements OnInit {
1320
2032
  static ɵcmp: i0.ɵɵComponentDeclaration<FixturePoolComponent, "lib-app-fixture-pool", never, {}, {}, never, never, false, never>;
1321
2033
  }
1322
2034
 
1323
- interface TreeNode {
1324
- id?: string | number;
1325
- name?: string;
1326
- isFolder?: boolean;
1327
- expanded?: boolean;
1328
- children?: TreeNode[];
1329
- [key: string]: any;
1330
- }
1331
- type TreeDropZone = 'before' | 'after' | 'inside';
1332
- interface FlatNode {
1333
- node: TreeNode;
1334
- level: number;
1335
- parent: TreeNode | null;
1336
- }
1337
- interface DropTarget {
1338
- row: TreeNode;
1339
- zone: TreeDropZone;
1340
- indent: number;
1341
- ref: TreeNode;
1342
- }
1343
- /**
1344
- * A lightweight, dependency-free tree:
1345
- * - collapsible folders (closed/open folder icon)
1346
- * - multi selection (ctrl/cmd to toggle, shift to select a range)
1347
- * - native HTML5 drag & drop, dropping before/after a node or into a folder,
1348
- * moving the whole current selection at once
1349
- */
1350
- declare class TreeComponent implements OnChanges {
1351
- nodes: TreeNode[];
1352
- selectedNodes: TreeNode[];
1353
- allowDrag: (node: TreeNode) => boolean;
1354
- allowDrop: (dragged: TreeNode[], target: TreeNode, zone: TreeDropZone) => boolean;
1355
- selectedNodesChange: EventEmitter<TreeNode[]>;
1356
- activate: EventEmitter<TreeNode>;
1357
- nodesChange: EventEmitter<TreeNode[]>;
1358
- nodeTemplate?: TemplateRef<any>;
1359
- flatNodes: FlatNode[];
1360
- draggingNodes: TreeNode[];
1361
- drop: DropTarget | null;
1362
- dropTail: boolean;
1363
- private static readonly INDENT_STEP;
1364
- private static readonly INDENT_BASE;
1365
- private selection;
1366
- private lastClickedIndex;
1367
- private flatByNode;
1368
- indentPx(level: number): string;
1369
- private indent;
1370
- ngOnChanges(changes: SimpleChanges): void;
1371
- isSelected(node: TreeNode): boolean;
1372
- isDragging(node: TreeNode): boolean;
1373
- toggleExpand(node: TreeNode): void;
1374
- onRowClick(flat: FlatNode, event: MouseEvent): void;
1375
- private selectRange;
1376
- onDragStart(flat: FlatNode, event: DragEvent): void;
1377
- onDragOver(flat: FlatNode, event: DragEvent): void;
1378
- onDrop(flat: FlatNode, event: DragEvent): void;
1379
- onTailDragOver(event: DragEvent): void;
1380
- onTailDrop(event: DragEvent): void;
1381
- onDragEnd(): void;
1382
- private endDrag;
1383
- private clearIndicator;
1384
- private resolveDrop;
1385
- private afterRow;
1386
- private canDrop;
1387
- private moveNodes;
1388
- private detachAll;
1389
- private rebuild;
1390
- private flatten;
1391
- private removeNested;
1392
- private contains;
1393
- private locate;
1394
- static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent, never>;
1395
- 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>;
1396
- }
1397
-
1398
- declare class PresetComponent implements OnInit {
2035
+ declare class PresetComponent implements OnInit, OnDestroy {
1399
2036
  presetService: PresetService;
1400
2037
  sceneService: SceneService;
1401
2038
  projectService: ProjectService;
1402
2039
  introService: IntroService;
2040
+ private colorService;
2041
+ private folderService;
2042
+ private translateService;
1403
2043
  private modalService;
1404
2044
  treeNodes: TreeNode[];
1405
- 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);
1406
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;
1407
2065
  onActivate(node: TreeNode): void;
1408
- selectPreset(index: number): void;
2066
+ onSelectedNodesChange(nodes: TreeNode[]): void;
2067
+ allFoldersCollapsed(): boolean;
2068
+ switchAllFoldersCollapsed(): void;
2069
+ private singleSelectedScene;
1409
2070
  enableCheckbox(): boolean;
1410
- activatePreset(active: boolean, index: number): void;
2071
+ activatePreset(active: boolean, preset: Preset): void;
2072
+ soloPreset(): boolean;
2073
+ switchSoloPreset(): void;
1411
2074
  addPreset(): void;
1412
- removePreset(): void;
1413
- 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;
1414
2082
  static ɵfac: i0.ɵɵFactoryDeclaration<PresetComponent, never>;
1415
2083
  static ɵcmp: i0.ɵɵComponentDeclaration<PresetComponent, "lib-app-preset", never, {}, {}, never, never, false, never>;
1416
2084
  }
@@ -1469,6 +2137,7 @@ declare class CompositionSettingsComponent implements OnInit {
1469
2137
  private warningDialogService;
1470
2138
  private toastrService;
1471
2139
  projectService: ProjectService;
2140
+ hardwarePromoService: HardwarePromoService;
1472
2141
  composition: Composition;
1473
2142
  existingCompositionNames: string[];
1474
2143
  onClose: Subject<number>;
@@ -1477,7 +2146,8 @@ declare class CompositionSettingsComponent implements OnInit {
1477
2146
  existingFiles: string[];
1478
2147
  filteredExistingFiles: string[];
1479
2148
  uploading: boolean;
1480
- 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);
1481
2151
  ngOnInit(): void;
1482
2152
  getDropzoneUrl(): string;
1483
2153
  ok(): void;
@@ -1508,6 +2178,11 @@ declare class FixtureCapabilityPanTiltComponent implements OnInit {
1508
2178
  private livePreviewService;
1509
2179
  constructor(presetService: PresetService, changeDetectorRef: ChangeDetectorRef, livePreviewService: LivePreviewService);
1510
2180
  ngOnInit(): void;
2181
+ getMirrorPan(): boolean;
2182
+ setMirrorPan(mirror: boolean): void;
2183
+ getMirrorTilt(): boolean;
2184
+ setMirrorTilt(mirror: boolean): void;
2185
+ private mirrorChanged;
1511
2186
  getValuePan(): number;
1512
2187
  getValueTextPan(): number;
1513
2188
  setValuePan(value: any): void;
@@ -1519,14 +2194,18 @@ declare class FixtureCapabilityPanTiltComponent implements OnInit {
1519
2194
  static ɵcmp: i0.ɵɵComponentDeclaration<FixtureCapabilityPanTiltComponent, "lib-app-fixture-capability-pan-tilt", never, {}, {}, never, never, false, never>;
1520
2195
  }
1521
2196
 
1522
- declare class FixtureCapabilityChannelComponent implements OnInit {
2197
+ declare class FixtureCapabilityChannelComponent implements OnInit, OnDestroy {
1523
2198
  private presetService;
2199
+ private effectService;
1524
2200
  private livePreviewService;
2201
+ private changeDetectorRef;
1525
2202
  sliderValue: ElementRef;
1526
2203
  selectedCapability: CachedFixtureCapability;
1527
2204
  _channel: CachedFixtureChannel;
1528
2205
  defaultValue: number;
1529
2206
  value: number;
2207
+ capabilityValue: number;
2208
+ drivenByEffect: boolean;
1530
2209
  templateValue: number;
1531
2210
  description: string;
1532
2211
  hasRange: boolean;
@@ -1535,10 +2214,15 @@ declare class FixtureCapabilityChannelComponent implements OnInit {
1535
2214
  descriptionStart: string;
1536
2215
  descriptionEnd: string;
1537
2216
  valueSetTimer: any;
2217
+ private updateTimer;
2218
+ private capabilityValuesChangedSubscription;
2219
+ private effectsChangedSubscription;
2220
+ private stepsChangedSubscription;
1538
2221
  profile: FixtureProfile;
1539
2222
  set channel(value: CachedFixtureChannel);
1540
2223
  capabilityIndex: number;
1541
- constructor(presetService: PresetService, livePreviewService: LivePreviewService);
2224
+ constructor(presetService: PresetService, effectService: EffectService, livePreviewService: LivePreviewService, changeDetectorRef: ChangeDetectorRef);
2225
+ private scheduleUpdate;
1542
2226
  private updateChannel;
1543
2227
  capabilityHasRange(): boolean;
1544
2228
  getDescriptionStart(capability: CachedFixtureCapability): string;
@@ -1547,6 +2231,7 @@ declare class FixtureCapabilityChannelComponent implements OnInit {
1547
2231
  private getRangeMin;
1548
2232
  private getRangeMax;
1549
2233
  ngOnInit(): void;
2234
+ ngOnDestroy(): void;
1550
2235
  setValue(value: any, ignoreCapabilityRange?: boolean): void;
1551
2236
  private calculateTemplateValue;
1552
2237
  private getDefaultValue;
@@ -1631,6 +2316,7 @@ declare class UserRegisterComponent implements OnInit {
1631
2316
  email: string;
1632
2317
  password: string;
1633
2318
  passwordRepeat: string;
2319
+ newsletter: boolean;
1634
2320
  subject: Subject<void>;
1635
2321
  constructor(bsModalRef: BsModalRef, modalService: BsModalService, userService: UserService);
1636
2322
  ngOnInit(): void;
@@ -1689,8 +2375,10 @@ declare class ProjectImportComponent implements OnInit {
1689
2375
  declare class ProjectShareComponent implements OnInit {
1690
2376
  bsModalRef: BsModalRef;
1691
2377
  private projectService;
2378
+ hardwarePromoService: HardwarePromoService;
1692
2379
  shareLink: string;
1693
- constructor(bsModalRef: BsModalRef, projectService: ProjectService);
2380
+ promoLink: string;
2381
+ constructor(bsModalRef: BsModalRef, projectService: ProjectService, hardwarePromoService: HardwarePromoService);
1694
2382
  ngOnInit(): void;
1695
2383
  ok(): void;
1696
2384
  cancel(): void;
@@ -1726,7 +2414,9 @@ declare class FixtureSettingsStageComponent implements OnInit {
1726
2414
 
1727
2415
  declare class IntroComponent implements OnInit {
1728
2416
  introService: IntroService;
1729
- constructor(introService: IntroService);
2417
+ hardwarePromoService: HardwarePromoService;
2418
+ promoLink: string;
2419
+ constructor(introService: IntroService, hardwarePromoService: HardwarePromoService);
1730
2420
  ngOnInit(): void;
1731
2421
  close(): void;
1732
2422
  static ɵfac: i0.ɵɵFactoryDeclaration<IntroComponent, never>;
@@ -1735,16 +2425,28 @@ declare class IntroComponent implements OnInit {
1735
2425
 
1736
2426
  declare class PresetSettingsComponent implements OnInit {
1737
2427
  bsModalRef: BsModalRef;
2428
+ private colorService;
2429
+ private presetService;
1738
2430
  preset: Preset;
1739
2431
  name: string;
2432
+ color: string;
2433
+ colorAuto: boolean;
2434
+ icon: string;
1740
2435
  startMillis: number;
1741
2436
  endMillis: number;
1742
2437
  fadeInMillis: number;
1743
2438
  fadeOutMillis: number;
1744
2439
  fadeInPre: boolean;
1745
2440
  fadeOutPost: boolean;
1746
- 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);
1747
2448
  ngOnInit(): void;
2449
+ shownColor(): string;
1748
2450
  ok(): void;
1749
2451
  cancel(): void;
1750
2452
  handleKeyboardEvent(event: any): void;
@@ -1752,16 +2454,100 @@ declare class PresetSettingsComponent implements OnInit {
1752
2454
  static ɵcmp: i0.ɵɵComponentDeclaration<PresetSettingsComponent, "lib-preset-settings", never, {}, {}, never, never, false, never>;
1753
2455
  }
1754
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
+
1755
2525
  declare class SceneSettingsComponent implements OnInit {
1756
2526
  bsModalRef: BsModalRef;
2527
+ private colorService;
2528
+ private sceneService;
2529
+ private livePreviewService;
1757
2530
  scene: Scene;
1758
2531
  name: string;
2532
+ color: string;
2533
+ colorAuto: boolean;
2534
+ icon: string;
2535
+ dimmer: number;
1759
2536
  fadeInMillis: number;
1760
2537
  fadeOutMillis: number;
1761
2538
  fadeInPre: boolean;
1762
2539
  fadeOutPost: boolean;
1763
- 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);
1764
2547
  ngOnInit(): void;
2548
+ dimmerPercentage(): number;
2549
+ setDimmer(value: any): void;
2550
+ shownColor(): string;
1765
2551
  ok(): void;
1766
2552
  cancel(): void;
1767
2553
  handleKeyboardEvent(event: any): void;
@@ -1813,10 +2599,12 @@ declare class FixturePoolCreateFromFileComponent implements OnInit {
1813
2599
  declare class FixturePoolEditUniversesComponent {
1814
2600
  bsModalRef: BsModalRef;
1815
2601
  private uuidService;
2602
+ hardwarePromoService: HardwarePromoService;
1816
2603
  universes: UniverseConfig[];
1817
2604
  newUniverseName: string;
1818
2605
  onClose: Subject<UniverseConfig[] | undefined>;
1819
- constructor(bsModalRef: BsModalRef, uuidService: UuidService);
2606
+ promoLink: string;
2607
+ constructor(bsModalRef: BsModalRef, uuidService: UuidService, hardwarePromoService: HardwarePromoService);
1820
2608
  addUniverse(): void;
1821
2609
  removeUniverse(universe: UniverseConfig): void;
1822
2610
  ok(): void;
@@ -1865,9 +2653,106 @@ declare class SortablejsDirective implements AfterViewInit, OnDestroy {
1865
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>;
1866
2654
  }
1867
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
+
1868
2753
  declare class DesignerModule {
1869
2754
  static ɵfac: i0.ɵɵFactoryDeclaration<DesignerModule, never>;
1870
- 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]>;
1871
2756
  static ɵinj: i0.ɵɵInjectorDeclaration<DesignerModule>;
1872
2757
  }
1873
2758