{"version":3,"file":"rocketshow-designer.mjs","sources":["../../../projects/designer/src/lib/designer.service.ts","../../../projects/designer/src/lib/models/fixture-capability.ts","../../../projects/designer/src/lib/models/fixture-channel.ts","../../../projects/designer/src/lib/models/fixture-matrix-pixel-group-constraints.ts","../../../projects/designer/src/lib/models/fixture-matrix-pixel-group.ts","../../../projects/designer/src/lib/models/fixture-matrix.ts","../../../projects/designer/src/lib/models/fixture-mode-channel.ts","../../../projects/designer/src/lib/models/fixture-mode.ts","../../../projects/designer/src/lib/models/fixture-physical.ts","../../../projects/designer/src/lib/models/fixture-wheel-slot.ts","../../../projects/designer/src/lib/models/fixture-wheel.ts","../../../projects/designer/src/lib/models/fixture-profile.ts","../../../projects/designer/src/lib/models/cached-fixture.ts","../../../projects/designer/src/lib/models/cached-fixture-capability.ts","../../../projects/designer/src/lib/models/cached-fixture-channel.ts","../../../projects/designer/src/lib/models/color.ts","../../../projects/designer/src/lib/models/fixture.ts","../../../projects/designer/src/lib/models/scene-playback-region.ts","../../../projects/designer/src/lib/models/composition.ts","../../../projects/designer/src/lib/models/effect.ts","../../../projects/designer/src/lib/models/effect-curve-profile-channel.ts","../../../projects/designer/src/lib/models/effect-curve.ts","../../../projects/designer/src/lib/models/effect-pan-tilt.ts","../../../projects/designer/src/lib/models/fixture-capability-value.ts","../../../projects/designer/src/lib/models/fixture-channel-value.ts","../../../projects/designer/src/lib/models/preset-fixture.ts","../../../projects/designer/src/lib/models/preset.ts","../../../projects/designer/src/lib/models/scene.ts","../../../projects/designer/src/lib/models/project.ts","../../../projects/designer/src/lib/services/user.service.ts","../../../projects/designer/src/lib/services/project.service.ts","../../../projects/designer/src/lib/services/uuid.service.ts","../../../projects/designer/src/lib/services/fixture.service.ts","../../../projects/designer/src/lib/services/preview-mesh.service.ts","../../../projects/designer/src/lib/models/preset-region-scene.ts","../../../projects/designer/src/lib/services/animation.service.ts","../../../projects/designer/src/lib/services/config.service.ts","../../../projects/designer/src/lib/services/effect.service.ts","../../../projects/designer/src/lib/services/preset.service.ts","../../../projects/designer/src/lib/services/scene.service.ts","../../../projects/designer/src/lib/services/timeline.service.ts","../../../projects/designer/src/lib/services/preview.service.ts","../../../projects/designer/src/lib/preview/models/fixture-3d.ts","../../../projects/designer/src/lib/preview/models/color-changer-3d.ts","../../../projects/designer/src/lib/preview/models/moving-head-3d.ts","../../../projects/designer/src/lib/preview/preview.component.ts","../../../projects/designer/src/lib/preview/preview.component.html","../../../projects/designer/src/lib/wait-dialog/wait-dialog.component.ts","../../../projects/designer/src/lib/wait-dialog/wait-dialog.component.html","../../../projects/designer/src/lib/warning-dialog/warning-dialog.component.ts","../../../projects/designer/src/lib/warning-dialog/warning-dialog.component.html","../../../projects/designer/src/lib/services/warning-dialog.service.ts","../../../projects/designer/src/lib/services/project-load.service.ts","../../../projects/designer/src/lib/array-sort-pipe.ts","../../../projects/designer/src/lib/project/project-browser/project-browser.component.html","../../../projects/designer/src/lib/project/project-browser/project-browser.component.ts","../../../projects/designer/src/lib/project/project-import/project-import.component.ts","../../../projects/designer/src/lib/project/project-import/project-import.component.html","../../../projects/designer/src/lib/project/project-save/project-save.component.html","../../../projects/designer/src/lib/project/project-save/project-save.component.ts","../../../projects/designer/src/lib/project/project-share/project-share.component.ts","../../../projects/designer/src/lib/project/project-share/project-share.component.html","../../../projects/designer/src/lib/error-dialog/error-dialog.component.html","../../../projects/designer/src/lib/error-dialog/error-dialog.component.ts","../../../projects/designer/src/lib/services/error-dialog.service.ts","../../../projects/designer/src/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.ts","../../../projects/designer/src/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.html","../../../projects/designer/src/lib/fixture-pool/fixture-pool.component.html","../../../projects/designer/src/lib/fixture-pool/fixture-pool.component.ts","../../../projects/designer/src/lib/services/fixture-pool.service.ts","../../../projects/designer/src/lib/services/hotkey-target-exclude.service.ts","../../../projects/designer/src/lib/services/intro.service.ts","../../../projects/designer/src/lib/user/user-login/user-login.component.html","../../../projects/designer/src/lib/user/user-login/user-login.component.ts","../../../projects/designer/src/lib/user/user-register/user-register.component.html","../../../projects/designer/src/lib/user/user-register/user-register.component.ts","../../../projects/designer/src/lib/services/user-ensure-login.service.ts","../../../projects/designer/src/lib/dropzone/dropzone.component.ts","../../../projects/designer/src/lib/dropzone/dropzone.component.html","../../../projects/designer/src/lib/timeline/composition-settings/composition-settings.component.html","../../../projects/designer/src/lib/timeline/composition-settings/composition-settings.component.ts","../../../projects/designer/src/lib/timeline/timeline-grid/timeline-grid.component.html","../../../projects/designer/src/lib/timeline/timeline-grid/timeline-grid.component.ts","../../../projects/designer/src/lib/timeline/timeline.component.html","../../../projects/designer/src/lib/timeline/timeline.component.ts","../../../projects/designer/src/lib/scene/scene-settings/scene-settings.component.ts","../../../projects/designer/src/lib/scene/scene-settings/scene-settings.component.html","../../../projects/designer/src/lib/scene/scene.component.html","../../../projects/designer/src/lib/scene/scene.component.ts","../../../projects/designer/src/lib/fixture/fixture.component.html","../../../projects/designer/src/lib/fixture/fixture.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability.component.ts","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.html","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.ts","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.ts","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.html","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings.component.ts","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings.component.html","../../../projects/designer/src/lib/effect/effect-curve/effect-curve.component.html","../../../projects/designer/src/lib/effect/effect-curve/effect-curve.component.ts","../../../projects/designer/src/lib/effect/effect-pan-tilt/effect-pan-tilt.component.ts","../../../projects/designer/src/lib/effect/effect-pan-tilt/effect-pan-tilt.component.html","../../../projects/designer/src/lib/effect/effect.component.html","../../../projects/designer/src/lib/effect/effect.component.ts","../../../projects/designer/src/lib/preset/preset-settings/preset-settings.component.ts","../../../projects/designer/src/lib/preset/preset-settings/preset-settings.component.html","../../../projects/designer/src/lib/preset/preset.component.html","../../../projects/designer/src/lib/preset/preset.component.ts","../../../projects/designer/src/lib/master-dimmer/master-dimmer.component.ts","../../../projects/designer/src/lib/master-dimmer/master-dimmer.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.ts","../../../projects/designer/src/lib/fixture/fixture-channel/fixture-channel.component.html","../../../projects/designer/src/lib/fixture/fixture-channel/fixture-channel.component.ts","../../../projects/designer/src/lib/intro/intro.component.html","../../../projects/designer/src/lib/intro/intro.component.ts","../../../projects/designer/src/lib/designer.component.html","../../../projects/designer/src/lib/designer.component.ts","../../../projects/designer/src/lib/designer.module.ts","../../../projects/designer/src/public_api.ts","../../../projects/designer/src/rocketshow-designer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DesignerService {\n  constructor() {}\n}\n","export enum FixtureCapabilityType {\n  NoFunction = 'NoFunction',\n  ShutterStrobe = 'ShutterStrobe',\n  StrobeSpeed = 'StrobeSpeed',\n  StrobeDuration = 'StrobeDuration',\n  Intensity = 'Intensity',\n  ColorIntensity = 'ColorIntensity',\n  ColorPreset = 'ColorPreset',\n  ColorTemperature = 'ColorTemperature',\n  Pan = 'Pan',\n  PanContinuous = 'PanContinuous',\n  Tilt = 'Tilt',\n  TiltContinuous = 'TiltContinuous',\n  PanTiltSpeed = 'PanTiltSpeed',\n  WheelSlot = 'WheelSlot',\n  WheelShake = 'WheelShake',\n  WheelSlotRotation = 'WheelSlotRotation',\n  WheelRotation = 'WheelRotation',\n  EffectSpeed = 'EffectSpeed',\n  EffectDuration = 'EffectDuration',\n  EffectParameter = 'EffectParameter',\n  SoundSensitivity = 'SoundSensitivity',\n  Focus = 'Focus',\n  Zoom = 'Zoom',\n  Iris = 'Iris',\n  IrisEffect = 'IrisEffect',\n  Frost = 'Frost',\n  FrostEffect = 'FrostEffect',\n  Prism = 'Prism',\n  PrismRotation = 'PrismRotation',\n  BladeInsertion = 'BladeInsertion',\n  BladeRotation = 'BladeRotation',\n  BladeSystemRotation = 'BladeSystemRotation',\n  Fog = 'Fog',\n  FogOutput = 'FogOutput',\n  FogType = 'FogType',\n  BeamAngle = 'BeamAngle',\n  Rotation = 'Rotation',\n  Speed = 'Speed',\n  Time = 'Time',\n  Maintenance = 'Maintenance',\n  Generic = 'Generic',\n  Effect = 'Effect',\n  BeamPosition = 'BeamPosition',\n}\n\nexport enum FixtureCapabilityColor {\n  Red = 'Red',\n  Green = 'Green',\n  Blue = 'Blue',\n  Cyan = 'Cyan',\n  Magenta = 'Magenta',\n  Yellow = 'Yellow',\n  Amber = 'Amber',\n  White = 'White',\n  'Warm White' = 'Warm White',\n  'Cold White' = 'Cold White',\n  UV = 'UV',\n  Lime = 'Lime',\n  Indigo = 'Indigo',\n}\n\nexport class FixtureCapability {\n  type: FixtureCapabilityType;\n  color: FixtureCapabilityColor;\n  dmxRange: number[] = [];\n  slotNumber: number;\n  comment: string;\n  soundControlled: boolean;\n  shutterEffect: string;\n  randomTiming: boolean;\n\n  // may be empty. in this case, the channel name points to the wheel\n  wheel: any;\n\n  angle: string;\n  angleStart: string;\n  angleEnd: string;\n  speed: string;\n  speedStart: string;\n  speedEnd: string;\n  brightness: string;\n  brightnessStart: string;\n  brightnessEnd: string;\n  duration: string;\n  durationStart: string;\n  durationEnd: string;\n  colorTemperature: string;\n  colorTemperatureStart: string;\n  colorTemperatureEnd: string;\n  soundSensitivity: string;\n  soundSensitivityStart: string;\n  soundSensitivityEnd: string;\n  horizontalAngle: string;\n  horizontalAngleStart: string;\n  horizontalAngleEnd: string;\n  verticalAngle: string;\n  verticalAngleStart: string;\n  verticalAngleEnd: string;\n  distance: string;\n  distanceStart: string;\n  distanceEnd: string;\n  openPercent: string;\n  openPercentStart: string;\n  openPercentEnd: string;\n  frostIntensity: string;\n  frostIntensityStart: string;\n  frostIntensityEnd: string;\n  fogOutput: string;\n  fogOutputStart: string;\n  fogOutputEnd: string;\n  time: string;\n  timeStart: string;\n  timeEnd: string;\n  insertion: string;\n  insertionStart: string;\n  insertionEnd: string;\n  colors: string[];\n  colorsStart: string[];\n  colorsEnd: string[];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.type = FixtureCapabilityType[data.type as string];\n    this.color = data.color;\n    if (data.dmxRange) {\n      this.dmxRange = data.dmxRange;\n    }\n    this.wheel = data.wheel;\n    this.slotNumber = data.slotNumber;\n    this.comment = data.comment;\n    this.soundControlled = data.soundControlled;\n    this.shutterEffect = data.shutterEffect;\n    this.randomTiming = data.randomTiming;\n\n    this.angle = data.angle;\n    this.angleStart = data.angleStart;\n    this.angleEnd = data.angleEnd;\n    this.speed = data.speed;\n    this.speedStart = data.speedStart;\n    this.speedEnd = data.speedEnd;\n    this.brightness = data.brightness;\n    this.brightnessStart = data.brightnessStart;\n    this.brightnessEnd = data.brightnessEnd;\n    this.duration = data.duration;\n    this.durationStart = data.durationStart;\n    this.durationEnd = data.durationEnd;\n    this.colorTemperature = data.colorTemperature;\n    this.colorTemperatureStart = data.colorTemperatureStart;\n    this.colorTemperatureEnd = data.colorTemperatureEnd;\n    this.soundSensitivity = data.soundSensitivity;\n    this.soundSensitivityStart = data.soundSensitivityStart;\n    this.soundSensitivityEnd = data.soundSensitivityEnd;\n    this.horizontalAngle = data.horizontalAngle;\n    this.horizontalAngleStart = data.horizontalAngleStart;\n    this.horizontalAngleEnd = data.horizontalAngleEnd;\n    this.verticalAngle = data.verticalAngle;\n    this.verticalAngleStart = data.verticalAngleStart;\n    this.verticalAngleEnd = data.verticalAngleEnd;\n    this.distance = data.distance;\n    this.distanceStart = data.distanceStart;\n    this.distanceEnd = data.distanceEnd;\n    this.openPercent = data.openPercent;\n    this.openPercentStart = data.openPercentStart;\n    this.openPercentEnd = data.openPercentEnd;\n    this.frostIntensity = data.frostIntensity;\n    this.frostIntensityStart = data.frostIntensityStart;\n    this.frostIntensityEnd = data.frostIntensityEnd;\n    this.fogOutput = data.fogOutput;\n    this.fogOutputStart = data.fogOutputStart;\n    this.fogOutputEnd = data.fogOutputEnd;\n    this.time = data.time;\n    this.timeStart = data.timeStart;\n    this.timeEnd = data.timeEnd;\n    this.insertion = data.insertion;\n    this.insertionStart = data.insertionStart;\n    this.insertionEnd = data.insertionEnd;\n    this.colors = data.colors;\n    this.colorsStart = data.colorsStart;\n    this.colorsEnd = data.colorsEnd;\n  }\n}\n","import { FixtureCapability } from './fixture-capability';\n\nexport class FixtureChannel {\n  fineChannelAliases: string[] = [];\n  defaultValue: string | number;\n  capability: FixtureCapability;\n  capabilities: FixtureCapability[] = [];\n  dmxValueResolution: string;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    if (data.fineChannelAliases) {\n      this.fineChannelAliases = data.fineChannelAliases;\n    }\n\n    this.defaultValue = data.defaultValue;\n    this.dmxValueResolution = data.dmxValueResolution;\n\n    if (data.capability) {\n      this.capability = new FixtureCapability(data.capability);\n    } else if (data.capabilities) {\n      for (const capability of data.capabilities) {\n        this.capabilities.push(new FixtureCapability(capability));\n      }\n    }\n  }\n}\n","export class FixtureMatrixPixelGroupConstraints {\n  // constraint the pixel keys directly\n  keys: string[] = [];\n\n  // constraints by coordinates\n  x: string[] = [];\n  y: string[] = [];\n  z: string[] = [];\n\n  // a name regexp-constraint\n  name: string[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    if (Array.isArray(data)) {\n      // an array of pixel keys\n      this.keys = data;\n    } else {\n      // an object of constraints\n      this.x = data.x;\n      this.y = data.y;\n      this.z = data.z;\n      this.name = data.name;\n    }\n  }\n}\n","import { FixtureMatrixPixelGroupConstraints } from './fixture-matrix-pixel-group-constraints';\n\nexport class FixtureMatrixPixelGroup {\n  isAll: boolean = false;\n  constraints: FixtureMatrixPixelGroupConstraints = null;\n\n  constructor(isAll: boolean = false, constraints?: any) {\n    this.isAll = isAll;\n    if (constraints) {\n      this.constraints = new FixtureMatrixPixelGroupConstraints(constraints);\n    }\n  }\n}\n","import { FixtureMatrixPixelGroup } from './fixture-matrix-pixel-group';\n\nexport class FixtureMatrix {\n  pixelKeys: string[][];\n  pixelCount: number[] = [];\n  pixelGroups: any = {};\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    if (data.pixelKeys) {\n      this.pixelKeys = data.pixelKeys;\n    }\n    if (data.pixelCount) {\n      for (const pixelCountEntry of data.pixelCount) {\n        this.pixelCount.push(pixelCountEntry);\n      }\n    }\n    if (data.pixelGroups) {\n      for (const property of Object.keys(data.pixelGroups)) {\n        const pixelGroup = new FixtureMatrixPixelGroup(data.pixelGroups[property]);\n        this.pixelGroups[property] = pixelGroup;\n      }\n    }\n  }\n}\n","export class FixtureModeChannel {\n  // direct reference to an available channel\n  name: string;\n\n  // a matrix channel\n  insert: string;\n  repeatFor: string[] = [];\n  channelOrder: string;\n  templateChannels: string[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    if (typeof data === 'string') {\n      this.name = data;\n    } else if (typeof data === 'object') {\n      // after first saving the project, we have a FixtureModeChannel-object, even if it's just a direct channel with a name\n      this.name = data.name;\n\n      this.insert = data.insert;\n      if (Array.isArray(data.repeatFor)) {\n        this.repeatFor = data.repeatFor;\n      } else {\n        this.repeatFor.push(data.repeatFor);\n      }\n      this.channelOrder = data.channelOrder;\n      this.templateChannels = data.templateChannels;\n    }\n  }\n}\n","import { FixtureModeChannel } from './fixture-mode-channel';\n\nexport class FixtureMode {\n  name: string;\n  shortName: string;\n  channels: FixtureModeChannel[] = [];\n  channelCount: number;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.name = data.name;\n    this.shortName = data.shortName;\n\n    if (data.channels) {\n      for (const channel of data.channels) {\n        this.channels.push(new FixtureModeChannel(channel));\n      }\n    }\n  }\n}\n","export class FixturePhysical {\n  dimensions: number[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    if (data.dimensions) {\n      for (const dimension of data.dimensions) {\n        this.dimensions.push(dimension);\n      }\n    }\n  }\n}\n","export enum FixtureWheelSlotType {\n  Open = 'Open',\n  Closed = 'Closed',\n  Color = 'Color',\n  Gobo = 'Gobo',\n  Prism = 'Prism',\n  Iris = 'Iris',\n  Frost = 'Frost',\n  AnimationGoboStart = 'AnimationGoboStart',\n  AnimationGoboEnd = 'AnimationGoboEnd',\n}\n\nexport class FixtureWheelSlot {\n  type: FixtureWheelSlotType;\n  name: string;\n  colors: string[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.type = FixtureWheelSlotType[data.type as string];\n    this.name = data.name;\n    if (data.colors) {\n      this.colors = data.colors;\n    }\n  }\n}\n","import { FixtureWheelSlot } from './fixture-wheel-slot';\n\nexport class FixtureWheel {\n  slots: FixtureWheelSlot[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    if (data.slots) {\n      for (const slot of data.slots) {\n        this.slots.push(new FixtureWheelSlot(slot));\n      }\n    }\n  }\n}\n","import { FixtureChannel } from './fixture-channel';\nimport { FixtureMatrix } from './fixture-matrix';\nimport { FixtureMode } from './fixture-mode';\nimport { FixturePhysical } from './fixture-physical';\nimport { FixtureWheel } from './fixture-wheel';\n\nexport enum FixtureCategory {\n  Blinder = 'Blinder',\n  'Color Changer' = 'Color Changer',\n  Dimmer = 'Dimmer',\n  Effect = 'Effect',\n  Fan = 'Fan',\n  Flower = 'Flower',\n  Hazer = 'Hazer',\n  Laser = 'Laser',\n  Matrix = 'Matrix',\n  'Moving Head' = 'Moving Head',\n  'Pixel Bar' = 'Pixel Bar',\n  Scanner = 'Scanner',\n  Smoke = 'Smoke',\n  Stand = 'Stand',\n  Strobe = 'Strobe',\n  Other = 'Other',\n  'Barrel Scanner' = 'Barrel Scanner',\n}\n\nexport class FixtureProfile {\n  uuid: string;\n  name: string;\n\n  // set to file, if the profile is not loaded from the backend\n  source: string;\n  createdFromFile = false;\n  manufacturerShortName: string;\n  manufacturerName: string;\n  categories: FixtureCategory[] = [];\n  physical: FixturePhysical;\n  matrix: FixtureMatrix;\n  availableChannels: any = {};\n  templateChannels: any = {};\n  shortName: string;\n  wheels: any = {};\n\n  // All available fixture modes\n  modes: FixtureMode[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    // metadata\n    this.uuid = data.uuid;\n    this.name = data.name;\n    this.manufacturerName = data.manufacturerName;\n    this.manufacturerShortName = data.manufacturerShortName;\n\n    if (data.categories) {\n      for (const category of data.categories) {\n        this.categories.push(FixtureCategory[category as string]);\n      }\n    } else if (data.mainCategory) {\n      this.categories.push(FixtureCategory[data.mainCategory as string]);\n    }\n    if (data.physical) {\n      this.physical = new FixturePhysical(data.physical);\n    }\n    if (data.matrix) {\n      this.matrix = new FixtureMatrix(data.matrix);\n    }\n    if (data.wheels) {\n      for (const property of Object.keys(data.wheels)) {\n        const wheel = new FixtureWheel(data.wheels[property]);\n        this.wheels[property] = wheel;\n      }\n    }\n    if (data.modes) {\n      for (const mode of data.modes) {\n        this.modes.push(new FixtureMode(mode));\n      }\n    }\n    if (data.availableChannels) {\n      for (const property of Object.keys(data.availableChannels)) {\n        const fixtureChannel = new FixtureChannel(data.availableChannels[property]);\n        this.availableChannels[property] = fixtureChannel;\n      }\n    }\n    if (data.templateChannels) {\n      for (const property of Object.keys(data.templateChannels)) {\n        const templateChannel = new FixtureChannel(data.templateChannels[property]);\n        this.templateChannels[property] = templateChannel;\n      }\n    }\n    if (data.createdFromFile) {\n      this.createdFromFile = data.createdFromFile;\n    }\n  }\n}\n","import { CachedFixtureChannel } from './cached-fixture-channel';\nimport { Fixture } from './fixture';\nimport { FixtureMode } from './fixture-mode';\nimport { FixtureProfile } from './fixture-profile';\n\nexport class CachedFixture {\n  fixture: Fixture;\n  pixelKey: string;\n  profile: FixtureProfile;\n  mode: FixtureMode;\n  channels: CachedFixtureChannel[] = [];\n}\n","import { FixtureCapability } from './fixture-capability';\nimport { FixtureWheel } from './fixture-wheel';\nimport { FixtureWheelSlot } from './fixture-wheel-slot';\n\nexport class CachedFixtureCapability {\n  capability: FixtureCapability;\n\n  // the wheel names, if available\n  wheelName: string;\n\n  // the wheel, if available\n  wheel: FixtureWheel;\n\n  // the wheel slots, if available\n  wheelSlots: FixtureWheelSlot[] = [];\n\n  // is this a color wheel?\n  wheelIsColor = false;\n\n  centerValue: number;\n}\n","import { CachedFixtureCapability } from './cached-fixture-capability';\nimport { FixtureChannel } from './fixture-channel';\nimport { FixtureWheel } from './fixture-wheel';\n\nexport class CachedFixtureChannel {\n  // the corresponding channel\n  channel: FixtureChannel;\n\n  // the name of the channel\n  name: string;\n\n  // all channel capabilities\n  capabilities: CachedFixtureCapability[] = [];\n\n  // default value\n  defaultValue: number;\n\n  // maximum value\n  maxValue: number;\n\n  // a color wheel, if available\n  colorWheel: FixtureWheel;\n}\n","export class Color {\n  red: number;\n  green: number;\n  blue: number;\n\n  constructor(red?: number, green?: number, blue?: number) {\n    this.red = red;\n    this.green = green;\n    this.blue = blue;\n  }\n}\n","export enum Positioning {\n  topFront = 'topFront',\n  topBack = 'topBack',\n  bottomFront = 'bottomFront',\n  bottomBack = 'bottomBack',\n  manual = 'manual',\n}\n\nexport class Fixture {\n  uuid: string;\n  profileUuid: string;\n  name: string;\n  dmxUniverseUuid: string;\n  dmxFirstChannel = 1;\n  modeShortName: string;\n  positioning: Positioning = Positioning.topFront;\n\n  // Only relevant when positioning = manual\n  // in CM\n  positionX = 0;\n  positionY = 0;\n  positionZ = 0;\n\n  // in DEG\n  rotationX = 0;\n  rotationY = 0;\n  rotationZ = 0;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.uuid = data.uuid;\n    this.profileUuid = data.profileUuid;\n    this.name = data.name;\n    this.dmxUniverseUuid = data.dmxUniverseUuid;\n    this.dmxFirstChannel = data.dmxFirstChannel;\n    this.modeShortName = data.modeShortName;\n    this.positioning = data.positioning;\n    this.positionX = data.positionX;\n    this.positionY = data.positionY;\n    this.positionZ = data.positionZ;\n    this.rotationX = data.rotationX;\n    this.rotationY = data.rotationY;\n    this.rotationZ = data.rotationZ;\n  }\n}\n","export class ScenePlaybackRegion {\n  sceneUuid: string;\n  startMillis: number;\n  endMillis: number;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.sceneUuid = data.sceneUuid;\n    this.startMillis = data.startMillis;\n    this.endMillis = data.endMillis;\n  }\n}\n","import { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class Composition {\n  public uuid: string;\n  public name: string;\n\n  // none or audio\n  public syncType = 'audio';\n\n  public audioFileName: string;\n  public audioFileInLibrary = false;\n\n  public beatsPerMinute = 120;\n  public timeSignatureUpper = 4;\n  public timeSignatureLower = 4;\n\n  public snapToGrid = true;\n\n  public tempoGuessed = false;\n\n  // time based or musical\n  public gridType = 'musical';\n  public gridOffsetMillis = 0;\n\n  // 1/1, 1/2, 1/4, 1/8, etc.\n  public gridResolution = 1;\n\n  // if no sync\n  public durationMillis = 0;\n\n  // Regions, where the scene will be played\n  public scenePlaybackRegions: ScenePlaybackRegion[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.uuid = data.uuid;\n    this.name = data.name;\n    this.syncType = data.syncType;\n    this.audioFileName = data.audioFileName;\n    this.audioFileInLibrary = data.audioFileInLibrary;\n    this.beatsPerMinute = data.beatsPerMinute;\n    this.timeSignatureUpper = data.timeSignatureUpper;\n    this.timeSignatureLower = data.timeSignatureLower;\n    this.snapToGrid = data.snapToGrid;\n\n    // never guess again (and overwrite), when a composition is loaded\n    this.tempoGuessed = true;\n\n    this.gridType = data.gridType;\n    this.gridOffsetMillis = data.gridOffsetMillis;\n    this.gridResolution = data.gridResolution;\n    this.durationMillis = data.durationMillis;\n\n    if (data.scenePlaybackRegions) {\n      for (const scenePlaybackRegion of data.scenePlaybackRegions) {\n        this.scenePlaybackRegions.push(new ScenePlaybackRegion(scenePlaybackRegion));\n      }\n    }\n  }\n}\n","export abstract class Effect {\n  type: string;\n  uuid: string;\n  visible = true;\n\n  constructor(type: string, data?: any) {\n    this.type = type;\n\n    if (!data) {\n      return;\n    }\n\n    this.uuid = data.uuid;\n    this.visible = data.visible;\n  }\n}\n","export class EffectCurveProfileChannels {\n  profileUuid: string;\n  channels: string[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.profileUuid = data.profileUuid;\n\n    if (data.channels) {\n      for (const channel of Object.keys(data.channels)) {\n        this.channels.push(channel);\n      }\n    }\n  }\n}\n","import { Effect } from './effect';\nimport { EffectCurveProfileChannels } from './effect-curve-profile-channel';\nimport { FixtureCapability } from './fixture-capability';\n\nexport class EffectCurve extends Effect {\n  curveType = 'sine';\n\n  capabilities: FixtureCapability[] = [];\n  channels: EffectCurveProfileChannels[] = [];\n\n  lengthMillis = 2500;\n  phaseMillis = 0;\n  amplitude = 1;\n  position = 0.5;\n  phasingMillis = 0;\n\n  constructor(data?: any) {\n    super('curve', data);\n\n    if (!data) {\n      return;\n    }\n\n    if (data.capabilities) {\n      for (const capability of data.capabilities) {\n        this.capabilities.push(new FixtureCapability(capability));\n      }\n    }\n\n    if (data.channels) {\n      for (const channel of data.channels) {\n        this.channels.push(new EffectCurveProfileChannels(channel));\n      }\n    }\n\n    this.lengthMillis = data.lengthMillis;\n    this.phaseMillis = data.phaseMillis;\n    this.amplitude = data.amplitude;\n    this.position = data.position;\n    this.phasingMillis = data.phasingMillis;\n    this.curveType = data.curveType;\n  }\n\n  public getValueAtMillis(timeMillis: number, fixtureIndex?: number): number {\n    // Calculate the offset for phasing\n    let phasingIndex = 0;\n\n    if (fixtureIndex) {\n      phasingIndex = fixtureIndex;\n    }\n\n    const phase = this.phaseMillis + phasingIndex * this.phasingMillis;\n\n    // Calculate the value between 0 and 1 according to the curve\n    let value = 0;\n\n    switch (this.curveType) {\n      case 'sine':\n        value = this.position + ((this.amplitude / 2) * Math.sin((2 * Math.PI * (timeMillis - phase)) / this.lengthMillis)) / 2;\n        break;\n      case 'square':\n        if (Math.sign(Math.sin((2 * Math.PI * (timeMillis - phase)) / this.lengthMillis) / 2) === -1) {\n          value = this.position + this.amplitude / 2;\n        } else {\n          value = this.position - this.amplitude / 2;\n        }\n        break;\n      case 'triangle':\n        // TODO check wikipedia formula\n        break;\n      case 'sawtooth':\n        // TODO\n        break;\n      case 'reverse-sawtooth':\n        // TODO\n        break;\n    }\n\n    return Math.max(Math.min(value, 1), 0);\n  }\n}\n","import { Effect } from './effect';\n\nexport class EffectPanTilt extends Effect {\n  phasingMillis = 0;\n\n  constructor(data?: any) {\n    super('pan-tilt', data);\n  }\n\n  getValueAtMillis(timeMillis: number, fixtureIndex?: number): number {\n    // Calculate the offset for phasing\n    let phasingIndex = 0;\n\n    if (fixtureIndex) {\n      phasingIndex = fixtureIndex;\n    }\n\n    // let phase = this.phaseMillis + phasingIndex * this.phasingMillis;\n\n    // Calculate the value according to the curve\n    // TODO\n\n    return 0;\n  }\n}\n","import { FixtureCapabilityColor, FixtureCapabilityType } from './fixture-capability';\n\nexport class FixtureCapabilityValue {\n  type: FixtureCapabilityType;\n  profileUuid: string;\n\n  // value between 0 and 1\n  valuePercentage: number;\n\n  color: FixtureCapabilityColor;\n  wheel: string;\n  slotNumber: number;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n    this.type = FixtureCapabilityType[data.type as string];\n    this.profileUuid = data.profileUuid;\n\n    this.valuePercentage = data.valuePercentage;\n    this.color = FixtureCapabilityColor[data.color as string];\n    this.wheel = data.wheel;\n    this.slotNumber = data.slotNumber;\n  }\n}\n","export class FixtureChannelValue {\n  channelName: string;\n  profileUuid: string;\n  value: number;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n    this.channelName = data.channelName;\n    this.profileUuid = data.profileUuid;\n    this.value = data.value;\n  }\n}\n","export class PresetFixture {\n  public fixtureUuid: string;\n  public pixelKey: string;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.fixtureUuid = data.fixtureUuid;\n    this.pixelKey = data.pixelKey;\n  }\n}\n","import { Effect } from './effect';\nimport { EffectCurve } from './effect-curve';\nimport { EffectPanTilt } from './effect-pan-tilt';\nimport { FixtureCapabilityValue } from './fixture-capability-value';\nimport { FixtureChannelValue } from './fixture-channel-value';\nimport { PresetFixture } from './preset-fixture';\n\nexport class Preset {\n  uuid: string;\n  name: string;\n\n  // all related fixtures\n  // OBSOLETE: replaced with fixtures\n  fixtureUuids: string[] = [];\n  fixtures: PresetFixture[] = [];\n\n  // the selected values\n  fixtureChannelValues: FixtureChannelValue[] = [];\n  fixtureCapabilityValues: FixtureCapabilityValue[] = [];\n\n  // all related effects\n  effects: Effect[] = [];\n\n  // position offset, relative to the scene start\n  // (undefined = start/end of the scene itself)\n  startMillis: number;\n  endMillis: number;\n\n  // fading times\n  fadeInMillis = 0;\n  fadeOutMillis = 0;\n\n  // fade in/out outside the start/end times?\n  fadeInPre = false;\n  fadeOutPost = false;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.uuid = data.uuid;\n    this.name = data.name;\n\n    // OBSOLETE\n    this.fixtureUuids = data.fixtureUuids;\n\n    if (data.fixtures) {\n      for (const fixture of data.fixtures) {\n        this.fixtures.push(new PresetFixture(fixture));\n      }\n    }\n\n    if (data.fixtureChannelValues) {\n      for (const fixtureChannelValue of data.fixtureChannelValues) {\n        this.fixtureChannelValues.push(new FixtureChannelValue(fixtureChannelValue));\n      }\n    }\n    if (data.fixtureCapabilityValues) {\n      for (const fixtureCapabilityValue of data.fixtureCapabilityValues) {\n        this.fixtureCapabilityValues.push(new FixtureCapabilityValue(fixtureCapabilityValue));\n      }\n    }\n    if (data.effects) {\n      for (const effect of data.effects) {\n        switch (effect.type) {\n          case 'curve':\n            this.effects.push(new EffectCurve(effect));\n            break;\n          case 'pan-tilt':\n            this.effects.push(new EffectPanTilt(effect));\n            break;\n        }\n      }\n    }\n    this.startMillis = data.startMillis;\n    this.endMillis = data.endMillis;\n    this.fadeInMillis = data.fadeInMillis;\n    this.fadeOutMillis = data.fadeOutMillis;\n    this.fadeInPre = data.fadeInPre;\n    this.fadeOutPost = data.fadeOutPost;\n  }\n}\n","import { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class Scene {\n  uuid: string;\n  name: string;\n\n  color = '#fff';\n\n  // All contained presets\n  presetUuids: string[] = [];\n\n  // Fading times\n  fadeInMillis = 0;\n  fadeOutMillis = 0;\n\n  // fade in/out outside the start/end times?\n  fadeInPre = false;\n  fadeOutPost = false;\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.uuid = data.uuid;\n    this.name = data.name;\n    this.color = data.color;\n    if (data.presetUuids) {\n      this.presetUuids = data.presetUuids;\n    }\n    this.fadeInMillis = data.fadeInMillis;\n    this.fadeOutMillis = data.fadeOutMillis;\n    this.fadeInPre = data.fadeInPre;\n    this.fadeOutPost = data.fadeOutPost;\n  }\n}\n","import { Composition } from './composition';\nimport { Fixture } from './fixture';\nimport { FixtureProfile } from './fixture-profile';\nimport { Preset } from './preset';\nimport { PresetFixture } from './preset-fixture';\nimport { Scene } from './scene';\n\nexport class Project {\n  public id: number;\n  public version: number;\n  public uuid: string;\n  public name: string;\n  public shareToken: string;\n\n  public stageWidthCm = 600;\n  public stageHeightCm = 350;\n  public stageDepthCm = 600;\n\n  public stageFloorHeightCm = 30;\n  public stageCeilingHeightCm = 5;\n  public stagePillarWidthCm = 20;\n\n  public masterDimmerValue = 1;\n\n  public selectedPresetUuid: string;\n  public selectedSceneUuids: string[] = [];\n\n  // true = show the preset, false = show the selected scene\n  public previewPreset = true;\n\n  public selectedCompositionUuid: string;\n\n  public compositions: Composition[] = [];\n  public fixtureProfiles: FixtureProfile[] = [];\n\n  // fixtures added to the project in a DMX universe\n  public fixtures: Fixture[] = [];\n\n  // the fixtures and pixel keys in order to be selectable\n  public presetFixtures: PresetFixture[] = [];\n\n  public scenes: Scene[] = [];\n  public presets: Preset[] = [];\n\n  constructor(data?: any) {\n    if (!data) {\n      return;\n    }\n\n    this.id = data.id;\n    this.version = data.version;\n    this.uuid = data.uuid;\n    this.name = data.name;\n    this.shareToken = data.shareToken;\n\n    this.stageWidthCm = data.stageWidthCm;\n    this.stageHeightCm = data.stageHeightCm;\n    this.stageDepthCm = data.stageDepthCm;\n\n    this.stageFloorHeightCm = data.stageFloorHeightCm;\n    this.stageCeilingHeightCm = data.stageCeilingHeightCm;\n    this.stagePillarWidthCm = data.stagePillarWidthCm;\n\n    this.masterDimmerValue = data.masterDimmerValue;\n\n    this.selectedPresetUuid = data.selectedPresetUuid;\n    this.selectedSceneUuids = data.selectedSceneUuids;\n    this.previewPreset = data.previewPreset;\n    this.selectedCompositionUuid = data.selectedCompositionUuid;\n\n    if (data.compositions) {\n      for (const composition of data.compositions) {\n        this.compositions.push(new Composition(composition));\n      }\n    }\n\n    if (data.fixtureProfiles) {\n      for (const fixtureProfile of data.fixtureProfiles) {\n        this.fixtureProfiles.push(new FixtureProfile(fixtureProfile));\n      }\n    }\n\n    if (data.fixtures) {\n      for (const fixture of data.fixtures) {\n        this.fixtures.push(new Fixture(fixture));\n      }\n    }\n\n    if (data.presetFixtures) {\n      for (const presetFixture of data.presetFixtures) {\n        this.presetFixtures.push(new PresetFixture(presetFixture));\n      }\n    }\n\n    if (data.scenes) {\n      for (const scene of data.scenes) {\n        this.scenes.push(new Scene(scene));\n      }\n    }\n\n    if (data.presets) {\n      for (const preset of data.presets) {\n        this.presets.push(new Preset(preset));\n      }\n    }\n  }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../models/project';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UserService {\n  // the authentication token\n  token: string;\n  tokenExpiration: Date;\n  username: string;\n\n  constructor(private http: HttpClient) {\n    this.loadFromLocalStorage();\n  }\n\n  private loadFromLocalStorage() {\n    this.token = localStorage.getItem('token');\n    this.tokenExpiration = undefined;\n    if (localStorage.getItem('tokenExpiration')) {\n      this.tokenExpiration = new Date(Date.parse(localStorage.getItem('tokenExpiration')));\n    }\n    this.username = localStorage.getItem('username');\n  }\n\n  // register a new user\n  register(email: string, username: string, password: string): Observable<any> {\n    return this.http.post('register?email=' + email + '&username=' + username + '&password=' + password, null);\n  }\n\n  // login a user in the api\n  login(email: string, password: string): Observable<any> {\n    return this.http.post('login?email=' + email + '&password=' + password, null).pipe(\n      map((result: any) => {\n        this.token = result.token;\n        this.username = result.username;\n\n        // the token expires one month from now\n        this.tokenExpiration = new Date();\n        this.tokenExpiration.setDate(this.tokenExpiration.getDate() + 30);\n\n        // store to the local storage\n        localStorage.setItem('token', this.token);\n        localStorage.setItem('tokenExpiration', JSON.stringify(this.tokenExpiration));\n        localStorage.setItem('username', this.username);\n\n        this.loadFromLocalStorage();\n      })\n    );\n  }\n\n  logout() {\n    localStorage.removeItem('token');\n    localStorage.removeItem('tokenExpiration');\n    localStorage.removeItem('username');\n\n    this.loadFromLocalStorage();\n  }\n\n  isLoggedIn(): boolean {\n    if (!this.token) {\n      return false;\n    }\n\n    if (new Date() > this.tokenExpiration) {\n      this.logout();\n      return false;\n    }\n\n    return true;\n  }\n\n  getHeaders(): HttpHeaders {\n    if (!this.isLoggedIn()) {\n      return null;\n    }\n\n    let headers = new HttpHeaders();\n    headers = headers.append('Authorization', this.token);\n    return headers;\n  }\n\n  setAutoLoadProject(project: Project) {\n    localStorage.setItem('projectName', project.name);\n    if (project.id) {\n      localStorage.setItem('projectId', project.id.toString());\n    } else {\n      localStorage.removeItem('projectId');\n    }\n  }\n\n  getAutoLoadProjectId(): number {\n    if (!localStorage.getItem('projectId')) {\n      return null;\n    }\n    return Number.parseInt(localStorage.getItem('projectId'), 10);\n  }\n\n  getAutoLoadProjectName(): string {\n    return localStorage.getItem('projectName');\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../models/project';\nimport { UserService } from './user.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ProjectService {\n  // the current project\n  public project: Project;\n\n  // the project-file versions used in this version of the designer (older ones will be migrated, newer ones are not supported)\n  public currentProjectVersion = 2;\n\n  constructor(\n    private http: HttpClient,\n    private userService: UserService,\n    private router: Router,\n    private activatedRoute: ActivatedRoute,\n    private translateService: TranslateService,\n    private toastrService: ToastrService\n  ) {}\n\n  private saveApi(project: Project): Observable<object> {\n    return this.http.post('project', JSON.stringify(project), { headers: this.userService.getHeaders() }).pipe(\n      map((response: any) => {\n        if (response) {\n          project.id = response.id;\n          if (response.shareToken) {\n            project.shareToken = response.shareToken;\n          }\n          const queryParams: Params = {\n            id: project.id,\n            token: project.shareToken,\n          };\n          this.router.navigate([], {\n            relativeTo: this.activatedRoute,\n            queryParams,\n            queryParamsHandling: 'merge', // remove to replace all query params by provided\n          });\n        }\n        return null;\n      })\n    );\n  }\n\n  save(project: Project) {\n    // tries to save the project and returns, whether it has been saved or not\n    this.saveApi(project).subscribe(\n      () => {\n        const msg = 'designer.project.save-success';\n        const title = 'designer.project.save-success-title';\n\n        this.translateService.get([msg, title]).subscribe((result) => {\n          this.toastrService.success(result[msg], result[title]);\n        });\n\n        this.userService.setAutoLoadProject(project);\n      },\n      (response) => {\n        const msg = 'designer.project.save-error';\n        const title = 'designer.project.save-error-title';\n        const error = response && response.error ? response.error.error : 'unknown';\n\n        this.translateService.get([msg, title]).subscribe((result) => {\n          this.toastrService.error(result[msg] + ' (' + error + ')', result[title]);\n        });\n      }\n    );\n  }\n\n  getAllProjects(): Observable<Project[]> {\n    return this.http.get('projects', { headers: this.userService.getHeaders() }).pipe(\n      map((response: any) => {\n        const projects: Project[] = [];\n        for (const project of response) {\n          const projectObject = new Project(project);\n          projects.push(projectObject);\n        }\n        return projects;\n      })\n    );\n  }\n\n  deleteProject(project: Project): Observable<any> {\n    return this.http.delete('project?id=' + project.id + '&name=' + project.name, { headers: this.userService.getHeaders() });\n  }\n\n  getProject(id: number, name: string, shareToken?: string): Observable<Project> {\n    return this.http.get('project?id=' + id + '&name=' + name + '&token=' + shareToken, { headers: this.userService.getHeaders() }).pipe(\n      map((response: any) => {\n        const project = new Project(response);\n        project.id = id;\n\n        return project;\n      })\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UuidService {\n  constructor() {}\n\n  getUuid(): string {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n      // tslint:disable-next-line:no-bitwise\n      const r = (Math.random() * 16) | 0;\n\n      // tslint:disable-next-line:no-bitwise\n      const v = c === 'x' ? r : (r & 0x3) | 0x8;\n\n      return v.toString(16);\n    });\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CachedFixture } from '../models/cached-fixture';\nimport { CachedFixtureCapability } from '../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../models/cached-fixture-channel';\nimport { Color } from '../models/color';\nimport { Fixture } from '../models/fixture';\nimport { FixtureCapability, FixtureCapabilityColor, FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureChannel } from '../models/fixture-channel';\nimport { FixtureMode } from '../models/fixture-mode';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { FixtureWheel } from '../models/fixture-wheel';\nimport { FixtureWheelSlot, FixtureWheelSlotType } from '../models/fixture-wheel-slot';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FixtureService {\n  cachedFixtures: CachedFixture[] = [];\n\n  // is the side-tab settings currently selected?\n  settingsSelection = false;\n\n  selectedSettingsFixtures: Fixture[] = [];\n\n  constructor(\n    private http: HttpClient,\n    private projectService: ProjectService,\n    private translateService: TranslateService,\n    private toastrService: ToastrService,\n    private uuidService: UuidService\n  ) {}\n\n  getFixtureByUuid(uuid: string): Fixture {\n    for (const fixture of this.projectService.project.fixtures) {\n      if (fixture.uuid === uuid) {\n        return fixture;\n      }\n    }\n  }\n\n  private fixtureUuidAndPixelKeyEquals(fixtureUuid1: string, fixtureUuid2: string, pixelKey1: string, pixelKey2: string): boolean {\n    return fixtureUuid1 === fixtureUuid2 && ((pixelKey1 == null && pixelKey2 == null) || pixelKey1 === pixelKey2);\n  }\n\n  getCachedFixtureByUuid(uuid: string, pixelKey: string): CachedFixture {\n    for (const fixture of this.cachedFixtures) {\n      if (this.fixtureUuidAndPixelKeyEquals(fixture.fixture.uuid, uuid, fixture.pixelKey, pixelKey)) {\n        return fixture;\n      }\n    }\n\n    // not yet found -> try searching the fixture without pixelKey for the general channels\n    if (pixelKey) {\n      return undefined;\n    }\n\n    for (const fixture of this.cachedFixtures) {\n      if (!fixture.pixelKey && fixture.fixture.uuid === uuid) {\n        return fixture;\n      }\n    }\n  }\n\n  // Get all profiles to search for (only metadata)\n  getSearchProfiles(): Observable<FixtureProfile[]> {\n    return this.http.get('fixtures').pipe(\n      map((response: object[]) => {\n        const searchProfiles: FixtureProfile[] = [];\n\n        for (const profile of response) {\n          searchProfiles.push(new FixtureProfile(profile));\n        }\n\n        return searchProfiles;\n      })\n    );\n  }\n\n  getProfileByUuid(uuid: string): FixtureProfile {\n    for (const fixtureProfile of this.projectService.project.fixtureProfiles) {\n      if (fixtureProfile.uuid === uuid) {\n        return fixtureProfile;\n      }\n    }\n  }\n\n  loadProfileByUuid(uuid: string): Observable<void> {\n    const loadedProfile = this.getProfileByUuid(uuid);\n\n    if (loadedProfile) {\n      // This profile is already loaded\n      return of(undefined);\n    }\n\n    // Load the metadata and the profile\n    return forkJoin([this.http.get('fixtures?uuid=' + encodeURI(uuid)), this.http.get('fixture?uuid=' + encodeURI(uuid))]).pipe(\n      map((result) => {\n        const mergedData = { ...result[0][0], ...result[1] };\n        const fixtureProfile = new FixtureProfile(mergedData);\n        this.projectService.project.fixtureProfiles.push(fixtureProfile);\n      })\n    );\n  }\n\n  getRotationAngleDeg(value: string): number {\n    // convert a rotation angle value into degrees\n    if (value.endsWith('deg')) {\n      return Number.parseInt(value.replace('deg', ''), 10);\n    } else if (value.endsWith('%')) {\n      const perc = Number.parseInt(value.replace('%', ''), 10);\n      return (perc / 100) * 360;\n    }\n\n    return undefined;\n  }\n\n  getWheelSlotColors(wheel: FixtureWheel, slotNumber: number): string[] {\n    let colors: string[] = [];\n    const wheelSlots = this.getWheelSlots(wheel, slotNumber);\n\n    for (const slot of wheelSlots) {\n      if (slot.colors && slot.colors.length > 0) {\n        colors = colors.concat(slot.colors);\n      }\n    }\n\n    return colors;\n  }\n\n  getMixedWheelSlotColor(wheel: FixtureWheel, slotNumber: number): Color {\n    const colors = this.getWheelSlotColors(wheel, slotNumber);\n    const colorsRgb: Color[] = [];\n\n    if (colors.length === 0) {\n      return undefined;\n    }\n\n    for (const color of colors) {\n      colorsRgb.push(this.hexToRgb(color));\n    }\n\n    return this.mixColors(colorsRgb);\n  }\n\n  private componentToHex(c: number): any {\n    const hex = c.toString(16);\n    return hex.length === 1 ? '0' + hex : hex;\n  }\n\n  rgbToHex(r: number, g: number, b: number): string {\n    return '#' + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);\n  }\n\n  hexToRgb(hex: string): Color {\n    // expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n    const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n    hex = hex.replace(shorthandRegex, (m, r, g, b) => {\n      return r + r + g + g + b + b;\n    });\n\n    const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    return result ? new Color(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) : null;\n  }\n\n  mixColors(colors: Color[]): Color {\n    // mix an array of rgb-colors containing r, g, b values to a new color\n    let r = 0;\n    let g = 0;\n    let b = 0;\n\n    for (const color of colors) {\n      r += color.red;\n      g += color.green;\n      b += color.blue;\n    }\n\n    r /= colors.length;\n    g /= colors.length;\n    b /= colors.length;\n\n    return new Color(r, g, b);\n  }\n\n  wheelHasSlotType(wheel: FixtureWheel, slotType: FixtureWheelSlotType): boolean {\n    for (const slot of wheel.slots) {\n      if (slot.type === slotType) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  getWheelByName(profile: FixtureProfile, wheelName: string): FixtureWheel {\n    for (const property in profile.wheels) {\n      if (property === wheelName) {\n        return profile.wheels[property];\n      }\n    }\n\n    // wheel not found\n    return undefined;\n  }\n\n  private getWheelSlots(wheel: FixtureWheel, slotNumber: number): FixtureWheelSlot[] {\n    // return one slot or two slots, if they are mixed (e.g. slor number 2.5 returns the slots 2 and 3)\n    const slots: FixtureWheelSlot[] = [];\n\n    if (!wheel) {\n      return slots;\n    }\n\n    if (slotNumber - Math.floor(slotNumber) > 0) {\n      // two slots are set\n      const number = Math.floor(slotNumber);\n      slots.push(wheel.slots[number - 1]);\n      if (number >= 0 && number < wheel.slots.length) {\n        slots.push(wheel.slots[number]);\n      }\n    } else {\n      // only one slot is set\n      slots.push(wheel.slots[slotNumber - 1]);\n    }\n\n    return slots;\n  }\n\n  getModeByFixture(profile: FixtureProfile, fixture: Fixture): FixtureMode {\n    for (const mode of profile.modes) {\n      if (mode.shortName) {\n        if (mode.shortName === fixture.modeShortName) {\n          return mode;\n        }\n      } else {\n        if (mode.name === fixture.modeShortName) {\n          return mode;\n        }\n      }\n    }\n  }\n\n  private getFixtureCapability(capability: FixtureCapability, channelName: string, profile: FixtureProfile): CachedFixtureCapability {\n    const cachedFixtureCapability = new CachedFixtureCapability();\n    cachedFixtureCapability.capability = capability;\n    if (capability.slotNumber) {\n      // there is a wheel connected to this capability\n      if (typeof capability.wheel === 'string') {\n        cachedFixtureCapability.wheelName = capability.wheel as string;\n      } else if (Array.isArray(capability.wheel)) {\n        cachedFixtureCapability.wheelName = capability.wheel[0];\n      } else {\n        cachedFixtureCapability.wheelName = channelName;\n      }\n      cachedFixtureCapability.wheel = this.getWheelByName(profile, cachedFixtureCapability.wheelName);\n      cachedFixtureCapability.wheelSlots = this.getWheelSlots(cachedFixtureCapability.wheel, capability.slotNumber);\n      cachedFixtureCapability.wheelIsColor = this.wheelHasSlotType(cachedFixtureCapability.wheel, FixtureWheelSlotType.Color);\n    }\n    if (cachedFixtureCapability.capability.dmxRange && cachedFixtureCapability.capability.dmxRange.length === 2) {\n      cachedFixtureCapability.centerValue = Math.floor(\n        (cachedFixtureCapability.capability.dmxRange[0] + cachedFixtureCapability.capability.dmxRange[1]) / 2\n      );\n    }\n    return cachedFixtureCapability;\n  }\n\n  private getCapabilitiesByChannel(\n    fixtureChannel: FixtureChannel,\n    channelName: string,\n    profile: FixtureProfile\n  ): CachedFixtureCapability[] {\n    const capabilites: CachedFixtureCapability[] = [];\n\n    if (fixtureChannel.capability) {\n      capabilites.push(this.getFixtureCapability(fixtureChannel.capability, channelName, profile));\n    } else if (fixtureChannel.capabilities) {\n      for (const capability of fixtureChannel.capabilities) {\n        capabilites.push(this.getFixtureCapability(capability, channelName, profile));\n      }\n    }\n\n    return capabilites;\n  }\n\n  private getMaxValueByChannel(fixtureChannel: FixtureChannel): number {\n    return Math.pow(256, 1 + fixtureChannel.fineChannelAliases.length) - 1;\n  }\n\n  private getDefaultValueByChannel(fixtureChannel: FixtureChannel): number {\n    if (!fixtureChannel.defaultValue) {\n      return undefined;\n    }\n\n    if (isNaN(fixtureChannel.defaultValue as any) && (fixtureChannel.defaultValue as string).endsWith('%')) {\n      // percentage value\n      const percentage = Number.parseInt((fixtureChannel.defaultValue as string).replace('%', ''), 10);\n      const maxValue = this.getMaxValueByChannel(fixtureChannel);\n      return (maxValue / 100) * percentage;\n    } else {\n      // DMX value\n      return Number.parseInt(fixtureChannel.defaultValue as any, 10);\n    }\n  }\n\n  private getColorWheelByChannel(channel: CachedFixtureChannel, profile: FixtureProfile): FixtureWheel {\n    for (const channelCapability of channel.capabilities) {\n      if (channelCapability.wheelIsColor) {\n        return channelCapability.wheel;\n      }\n    }\n\n    return undefined;\n  }\n\n  getChannelByName(fixture: CachedFixture, channelName: string): CachedFixtureChannel {\n    for (const channel of fixture.channels) {\n      if (\n        (channel.name && channel.name === channelName) ||\n        (channel.channel && channel.channel.fineChannelAliases.indexOf(channelName) > -1)\n      ) {\n        return channel;\n      }\n    }\n\n    return undefined;\n  }\n\n  private getChannelNameWithPixelKey(templateChannelName: string, pixelKey: string) {\n    return templateChannelName.replace('$pixelKey', pixelKey);\n  }\n\n  private addCachedChannel(\n    channels: CachedFixtureChannel[],\n    channel: FixtureChannel,\n    templateChannelName: string,\n    pixelKey: string,\n    profile: FixtureProfile\n  ) {\n    const cachedFixtureChannel = new CachedFixtureChannel();\n    const channelName = this.getChannelNameWithPixelKey(templateChannelName, pixelKey);\n\n    cachedFixtureChannel.channel = channel;\n    cachedFixtureChannel.name = channelName;\n    cachedFixtureChannel.capabilities = this.getCapabilitiesByChannel(cachedFixtureChannel.channel, channelName, profile);\n    const defaultValue = this.getDefaultValueByChannel(cachedFixtureChannel.channel);\n    if (defaultValue) {\n      cachedFixtureChannel.defaultValue = defaultValue;\n    }\n    cachedFixtureChannel.maxValue = this.getMaxValueByChannel(cachedFixtureChannel.channel);\n    cachedFixtureChannel.colorWheel = this.getColorWheelByChannel(cachedFixtureChannel, profile);\n    channels.push(cachedFixtureChannel);\n  }\n\n  private alphanumericSort(a: string, b: string): number {\n    return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' });\n  }\n\n  private getAllPixelKeys(profile: FixtureProfile) {\n    let result: string[] = [];\n    for (let pixelKeyX of profile.matrix.pixelKeys) {\n      for (let pixelKeyY of pixelKeyX) {\n        for (let pixelKeyZ of pixelKeyY) {\n          if (pixelKeyZ) {\n            result.push(pixelKeyZ);\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  private getAllPixelGroups(profile: FixtureProfile) {\n    let result: string[] = [];\n    for (const property of Object.keys(profile.matrix.pixelGroups)) {\n      result.push(property);\n    }\n    return result;\n  }\n\n  private getPixelKeysInOrder(profile: FixtureProfile, repeatFor: string[]): string[] {\n    let result: string[] = [];\n\n    // could contain just a single string (e.g. 'eachPixelABC') or\n    if (repeatFor.length > 1) {\n      // an array of pixel (groups)\n      result = repeatFor;\n    } else if (repeatFor.length === 0) {\n      return result;\n    } else if (repeatFor[0] === 'eachPixelABC') {\n      // Gets computed into an alphanumerically sorted list of all pixelKeys\n      if (profile.matrix.pixelCount.length === 3) {\n        for (let x = 0; x < profile.matrix.pixelCount[0]; x++) {\n          for (let y = 0; y < profile.matrix.pixelCount[1]; y++) {\n            for (let z = 0; z < profile.matrix.pixelCount[2]; z++) {\n              result.push('Pixel ' + (x + 1) + '-' + (y + 1) + '-' + (z + 1));\n            }\n          }\n        }\n      } else {\n        result = result.concat(this.getAllPixelKeys(profile));\n      }\n      result.sort(this.alphanumericSort);\n    } else if (repeatFor[0] === 'eachPixelGroup') {\n      // Gets computed into an array of all pixel group keys, ordered by appearance in the JSON file\n      result = result.concat(this.getAllPixelGroups(profile));\n    } else if (repeatFor[0] === 'eachPixelXYZ') {\n      for (let x = 0; x < profile.matrix.pixelKeys.length; x++) {\n        for (let y = 0; y < profile.matrix.pixelKeys[x].length; y++) {\n          for (let z = 0; z < profile.matrix.pixelKeys[x][y].length; z++) {\n            const pixel = profile.matrix.pixelKeys[x][y][z];\n            if (pixel) {\n              result.push(pixel);\n            }\n          }\n        }\n      }\n    } else if (repeatFor[0] === 'eachPixelXZY') {\n      for (let x = 0; x < profile.matrix.pixelKeys.length; x++) {\n        for (let z = 0; z < profile.matrix.pixelKeys[x][0].length; z++) {\n          for (let y = 0; y < profile.matrix.pixelKeys[x].length; y++) {\n            const pixel = profile.matrix.pixelKeys[x][y][z];\n            if (pixel) {\n              result.push(pixel);\n            }\n          }\n        }\n      }\n    } else if (repeatFor[0] === 'eachPixelYXZ') {\n      for (let y = 0; y < profile.matrix.pixelKeys[0].length; y++) {\n        for (let x = 0; x < profile.matrix.pixelKeys.length; x++) {\n          for (let z = 0; z < profile.matrix.pixelKeys[x][y].length; z++) {\n            const pixel = profile.matrix.pixelKeys[x][y][z];\n            if (pixel) {\n              result.push(pixel);\n            }\n          }\n        }\n      }\n    } else if (repeatFor[0] === 'eachPixelYZX') {\n      for (let y = 0; y < profile.matrix.pixelKeys[0].length; y++) {\n        for (let z = 0; z < profile.matrix.pixelKeys[0][y].length; z++) {\n          for (let x = 0; x < profile.matrix.pixelKeys.length; x++) {\n            const pixel = profile.matrix.pixelKeys[x][y][z];\n            if (pixel) {\n              result.push(pixel);\n            }\n          }\n        }\n      }\n    } else if (repeatFor[0] === 'eachPixelZXY') {\n      for (let z = 0; z < profile.matrix.pixelKeys[0][0].length; z++) {\n        for (let x = 0; x < profile.matrix.pixelKeys.length; x++) {\n          for (let y = 0; y < profile.matrix.pixelKeys[x].length; y++) {\n            const pixel = profile.matrix.pixelKeys[x][y][z];\n            if (pixel) {\n              result.push(pixel);\n            }\n          }\n        }\n      }\n    } else if (repeatFor[0] === 'eachPixelZYX') {\n      for (let z = 0; z < profile.matrix.pixelKeys[0][0].length; z++) {\n        for (let y = 0; y < profile.matrix.pixelKeys[0].length; y++) {\n          for (let x = 0; x < profile.matrix.pixelKeys.length; x++) {\n            const pixel = profile.matrix.pixelKeys[x][y][z];\n            if (pixel) {\n              result.push(pixel);\n            }\n          }\n        }\n      }\n    }\n\n    return result;\n  }\n\n  getModeChannelCount(profile: FixtureProfile, mode: FixtureMode): number {\n    let count: number = 0;\n\n    // already calculated?\n    if (mode.channelCount) {\n      return mode.channelCount;\n    }\n\n    for (let channel of mode.channels) {\n      if (channel.insert === 'matrixChannels') {\n        if (channel.repeatFor.length > 1) {\n          count += channel.repeatFor.length * channel.templateChannels.length;\n        } else if (channel.repeatFor[0] === 'eachPixelGroup') {\n          count += profile.matrix.pixelGroups.length * channel.templateChannels.length;\n        } else if (channel.repeatFor[0].startsWith('eachPixel')) {\n          if (profile.matrix.pixelCount.length === 3) {\n            count +=\n              profile.matrix.pixelCount[0] * profile.matrix.pixelCount[1] * profile.matrix.pixelCount[2] * channel.templateChannels.length;\n          } else {\n            for (let x = 0; x < profile.matrix.pixelKeys.length; x++) {\n              for (let y = 0; y < profile.matrix.pixelKeys[x].length; y++) {\n                for (let z = 0; z < profile.matrix.pixelKeys[x][y].length; z++) {\n                  const pixel = profile.matrix.pixelKeys[x][y][z];\n                  if (pixel) {\n                    count += channel.templateChannels.length;\n                  }\n                }\n              }\n            }\n          }\n        }\n      } else {\n        count++;\n      }\n    }\n\n    mode.channelCount = count;\n\n    return mode.channelCount;\n  }\n\n  getCachedChannels(profile: FixtureProfile, mode: FixtureMode, pixelKey: string): CachedFixtureChannel[] {\n    const channels: CachedFixtureChannel[] = [];\n\n    if (!mode) {\n      return channels;\n    }\n\n    for (const channel of mode.channels) {\n      if (channel.name && !pixelKey) {\n        // direct reference to a channel\n        // don't check the fine channels. only add the coarse channel.\n        let channelFound = false;\n\n        for (const availableChannelName of Object.keys(profile.availableChannels)) {\n          if (channel.name === availableChannelName) {\n            const availableChannel: FixtureChannel = profile.availableChannels[availableChannelName];\n\n            this.addCachedChannel(channels, availableChannel, availableChannelName, null, profile);\n          }\n        }\n\n        // check the template channels, if not found in the available channels\n        if (!channelFound) {\n          for (const templateChannelName of Object.keys(profile.templateChannels)) {\n            let existingPixelKeys = this.getAllPixelKeys(profile).concat(this.getAllPixelGroups(profile));\n\n            for (const existingPixelKey of existingPixelKeys) {\n              const channelName = this.getChannelNameWithPixelKey(templateChannelName, existingPixelKey);\n\n              if (channel.name === channelName) {\n                const templateChannel: FixtureChannel = profile.templateChannels[templateChannelName];\n\n                this.addCachedChannel(channels, templateChannel, channelName, existingPixelKey, profile);\n              }\n            }\n          }\n        }\n      } else {\n        // reference a channel through a pixel matrix\n        const availablePixelKeys = this.getPixelKeysInOrder(profile, channel.repeatFor);\n\n        if (channel.channelOrder === 'perPixel') {\n          // each channel for each pixel\n\n          for (const availablePixelKey of availablePixelKeys) {\n            if (availablePixelKey === pixelKey) {\n              for (const modeTemplateChannelName of channel.templateChannels) {\n                for (const templateChannelName of Object.keys(profile.templateChannels)) {\n                  // don't check the fine channels. only add the coarse channel.\n                  if (modeTemplateChannelName === templateChannelName) {\n                    const templateChannel: FixtureChannel = profile.templateChannels[templateChannelName];\n\n                    this.addCachedChannel(channels, templateChannel, templateChannelName, availablePixelKey, profile);\n                  }\n                }\n              }\n            }\n          }\n        } else if (channel.channelOrder === 'perChannel') {\n          // each pixel for each channel\n\n          for (const modeTemplateChannelName of channel.templateChannels) {\n            for (const availablePixelKey of availablePixelKeys) {\n              if (availablePixelKey === pixelKey) {\n                for (const templateChannelName of Object.keys(profile.templateChannels)) {\n                  // don't check the fine channels. only add the coarse channel.\n                  if (modeTemplateChannelName === templateChannelName) {\n                    const templateChannel: FixtureChannel = profile.templateChannels[templateChannelName];\n\n                    this.addCachedChannel(channels, templateChannel, templateChannelName, availablePixelKey, profile);\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return channels;\n  }\n\n  fixtureGetUniquePixelKeys(fixture: Fixture): string[] {\n    let pixelKeys: Set<string> = new Set();\n\n    let profile = this.getProfileByUuid(fixture.profileUuid);\n    let mode = this.getModeByFixture(profile, fixture);\n\n    // add the unique pixel keys\n    for (let channel of mode.channels) {\n      this.getPixelKeysInOrder(profile, channel.repeatFor).forEach((str) => {\n        pixelKeys.add(str);\n      });\n    }\n\n    return Array.from(pixelKeys);\n  }\n\n  // does the fixture have a general channel without reference to specific pixel keys in the current mode?\n  fixtureHasGeneralChannel(fixture: Fixture): boolean {\n    let profile = this.getProfileByUuid(fixture.profileUuid);\n    let mode = this.getModeByFixture(profile, fixture);\n\n    // add the unique pixel keys\n    for (let channel of mode.channels) {\n      if (this.getPixelKeysInOrder(profile, channel.repeatFor).length === 0) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  updateCachedFixtures() {\n    // calculate some frequently used values as a cache to save cpu time\n    // afterwards\n    this.cachedFixtures = [];\n\n    for (const fixture of this.projectService.project.fixtures) {\n      if (this.fixtureHasGeneralChannel(fixture)) {\n        const cachedFixture = new CachedFixture();\n        cachedFixture.fixture = fixture;\n        cachedFixture.profile = this.getProfileByUuid(fixture.profileUuid);\n        cachedFixture.mode = this.getModeByFixture(cachedFixture.profile, fixture);\n        cachedFixture.channels = this.getCachedChannels(cachedFixture.profile, cachedFixture.mode, null);\n        this.cachedFixtures.push(cachedFixture);\n      }\n\n      const pixelKeys = this.fixtureGetUniquePixelKeys(fixture);\n\n      for (let pixelKey of pixelKeys) {\n        const cachedFixture = new CachedFixture();\n        cachedFixture.fixture = fixture;\n        cachedFixture.pixelKey = pixelKey;\n        cachedFixture.profile = this.getProfileByUuid(fixture.profileUuid);\n        cachedFixture.mode = this.getModeByFixture(cachedFixture.profile, fixture);\n        cachedFixture.channels = this.getCachedChannels(cachedFixture.profile, cachedFixture.mode, pixelKey);\n        this.cachedFixtures.push(cachedFixture);\n      }\n    }\n  }\n\n  capabilitiesMatch(\n    type1: FixtureCapabilityType,\n    type2: FixtureCapabilityType,\n    color1: FixtureCapabilityColor,\n    color2: FixtureCapabilityColor,\n    wheel1: string,\n    wheel2: string,\n    profileUuid1: string,\n    profileUuid2: string\n  ): boolean {\n    // checks, whether two provided capapabilities match\n    return (\n      type1 === type2 &&\n      (!color1 || color1 === color2) &&\n      (!wheel1 || wheel1 === wheel2) &&\n      (!profileUuid1 || profileUuid1 === profileUuid2)\n    );\n  }\n\n  settingsFixtureIsSelected(fixture: Fixture): boolean {\n    for (const selectedFixture of this.selectedSettingsFixtures) {\n      if (selectedFixture === fixture) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  switchSettingsFixtureSelection(fixture: Fixture) {\n    if (this.settingsFixtureIsSelected(fixture)) {\n      this.selectedSettingsFixtures.splice(this.selectedSettingsFixtures.indexOf(fixture), 1);\n    } else {\n      this.selectedSettingsFixtures.push(fixture);\n    }\n  }\n\n  getFixtureIconClass(profile: FixtureProfile): string {\n    if (!profile) {\n      return '';\n    }\n    if (profile.categories.length === 0) {\n      return '';\n    }\n    if (!profile.categories[0]) {\n      return '';\n    }\n    return profile.categories[0].replace(' ', '-').toLocaleLowerCase();\n  }\n\n  updateProfiles() {\n    return this.http.post('update-profiles', null);\n  }\n\n  getNextFreeDmxChannel(fixturePool: Fixture[], neededChannels: number): number {\n    // get the next free space for this fixture\n    let freeChannels = 0;\n\n    for (let i = 0; i < 512; i++) {\n      let occupiedChannels = 0;\n\n      for (const fixture of fixturePool) {\n        const profile = this.getProfileByUuid(fixture.profileUuid);\n        const mode = this.getModeByFixture(this.getProfileByUuid(fixture.profileUuid), fixture);\n        const channelCount = this.getModeChannelCount(profile, mode);\n\n        if (i >= fixture.dmxFirstChannel && i < fixture.dmxFirstChannel + channelCount) {\n          // this channel is already occupied by a fixture -> move forward to the end of the fixture\n          if (channelCount > occupiedChannels) {\n            occupiedChannels = channelCount - (i - fixture.dmxFirstChannel);\n          }\n        }\n      }\n\n      if (occupiedChannels > 0) {\n        i += occupiedChannels - 1;\n        freeChannels = 0;\n      } else {\n        freeChannels++;\n      }\n\n      if (freeChannels === neededChannels) {\n        return i - freeChannels + 1;\n      }\n    }\n\n    // no free space left for the needed channels\n    return -1;\n  }\n\n  addFixture(profile: FixtureProfile, fixturePool: Fixture[]): Fixture {\n    const fixture = new Fixture();\n\n    fixture.uuid = this.uuidService.getUuid();\n    fixture.profileUuid = profile.uuid;\n    fixture.name = profile.name;\n\n    if (profile.modes && profile.modes.length > 0) {\n      fixture.modeShortName = profile.modes[0].shortName;\n    }\n\n    // add the same mode as an existing fixture, if available\n    let existingModeShortName: string;\n    for (const existingFixture of fixturePool) {\n      const existingProfile = this.getProfileByUuid(existingFixture.profileUuid);\n\n      if (existingProfile === profile) {\n        existingModeShortName = existingFixture.modeShortName;\n        break;\n      }\n    }\n\n    if (existingModeShortName) {\n      fixture.modeShortName = existingModeShortName;\n    } else {\n      fixture.modeShortName = profile.modes[0].shortName || profile.modes[0].name;\n    }\n\n    const mode = this.getModeByFixture(profile, fixture);\n    const channelCount = this.getModeChannelCount(profile, mode);\n    const firstChannel = this.getNextFreeDmxChannel(fixturePool, channelCount);\n\n    if (firstChannel >= 0) {\n      fixture.dmxFirstChannel = firstChannel;\n      fixturePool.push(fixture);\n      return fixture;\n    } else {\n      // no free space anymore\n      const msg = 'designer.fixture-pool.no-free-space';\n      const title = 'designer.fixture-pool.no-free-space-title';\n\n      this.translateService.get([msg, title]).subscribe((result) => {\n        this.toastrService.error(result[msg], result[title]);\n      });\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PreviewMeshService {\n  private loader = new GLTFLoader();\n  private cachedMeshes = new Map<string, THREE.Mesh>();\n\n  // the observable, if the requested mesh is already being loaded currently\n  private cachedObservables = new Map<string, Observable<THREE.Mesh>>();\n\n  constructor() {}\n\n  private loadScene(name: string): Observable<THREE.Scene> {\n    return new Observable((observer) => {\n      this.loader.load(\n        './assets/designer/models/' + name + '.gltf',\n\n        // Called when the resource is loaded\n        (gltf: any) => {\n          const model = gltf.scene.children[0];\n\n          model.position.set(0, 0, 0);\n\n          observer.next(gltf.scene);\n          observer.complete();\n        },\n\n        // Called while loading is progressing\n        (xhr: any) => {},\n\n        // Called when loading has errors\n        (error: any) => {\n          observer.error(error);\n        }\n      );\n    });\n  }\n\n  private loadMesh(name: string): Observable<THREE.Mesh> {\n    const observable = this.loadScene(name).pipe(\n      map((scene: any) => {\n        const model = scene.children[0];\n\n        model.position.set(0, 0, 0);\n\n        this.cachedMeshes.set(name, model);\n        this.cachedObservables.delete(name);\n\n        return model.clone();\n      })\n    );\n\n    this.cachedObservables.set(name, observable);\n\n    return observable;\n  }\n\n  getMesh(name: string): Observable<THREE.Mesh> {\n    if (this.cachedMeshes.get(name)) {\n      return of(this.cachedMeshes.get(name).clone());\n    }\n\n    return this.cachedObservables.get(name) || this.loadMesh(name);\n  }\n}\n","import { Preset } from './preset';\nimport { Scene } from './scene';\nimport { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class PresetRegionScene {\n  preset: Preset;\n  region: ScenePlaybackRegion;\n  scene: Scene;\n\n  constructor(preset: Preset, region: ScenePlaybackRegion, scene: Scene) {\n    this.preset = preset;\n    this.region = region;\n    this.scene = scene;\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AnimationService {\n  timeMillis = 0;\n\n  constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ConfigService {\n  public restUrl: string;\n  public enableMediaLibrary = false;\n  public loginAvailable = false;\n  public shareAvailable = false;\n  public menuHeightPx = 0;\n  public languageSwitch = false;\n  public newProjectTemplate = false;\n  public livePreview = false;\n  public localProfiles = false;\n  public intro = false;\n  public uniqueProjectNames = false;\n  public dropzoneChunking = true;\n\n  public menuHeightChanged: Subject<void> = new Subject<void>();\n\n  constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { Effect } from './../models/effect';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class EffectService {\n  // The currently selected effect\n  selectedEffect: Effect;\n\n  constructor() {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { CachedFixtureCapability } from '../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../models/cached-fixture-channel';\nimport { Fixture } from '../models/fixture';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureCapabilityValue } from '../models/fixture-capability-value';\nimport { FixtureChannelValue } from '../models/fixture-channel-value';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { Preset } from '../models/preset';\nimport { AnimationService } from './animation.service';\nimport { ConfigService } from './config.service';\nimport { EffectService } from './effect.service';\nimport { FixtureService } from './fixture.service';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\nimport { PresetFixture } from '../models/preset-fixture';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PresetService {\n  selectedPreset: Preset;\n\n  // fires, when the current preview element has changed (scene/preset)\n  previewSelectionChanged: Subject<void> = new Subject<void>();\n\n  // fires, when the fixture selection has changed\n  fixtureSelectionChanged: Subject<void> = new Subject<void>();\n\n  // fires, when the fixture selection has changed for settings\n  fixtureSelectionSettingsChanged: Subject<void> = new Subject<void>();\n\n  // fires, when the selected color has changed. This is required,\n  // because detectChanges is not enough to trigger different components.\n  fixtureColorChanged: Subject<void> = new Subject<void>();\n\n  livePreviewTimer: any;\n  liveChangePending = false;\n\n  constructor(\n    private effectService: EffectService,\n    private uuidService: UuidService,\n    private projectService: ProjectService,\n    private fixtureService: FixtureService,\n    private configService: ConfigService,\n    private http: HttpClient,\n    private animationService: AnimationService\n  ) {}\n\n  getPresetByUuid(uuid: string): Preset {\n    for (const preset of this.projectService.project.presets) {\n      if (preset.uuid === uuid) {\n        return preset;\n      }\n    }\n  }\n\n  fixtureUuidAndPixelKeyEquals(fixtureUuid1: string, fixtureUuid2: string, pixelKey1: string, pixelKey2: string): boolean {\n    return fixtureUuid1 === fixtureUuid2 && ((!pixelKey1 && !pixelKey2) || pixelKey1 === pixelKey2);\n  }\n\n  getPresetFixture(preset: Preset, fixtureUuid: string, pixelKey?: string): PresetFixture {\n    for (const fixture of preset.fixtures) {\n      if (this.fixtureUuidAndPixelKeyEquals(fixture.fixtureUuid, fixtureUuid, fixture.pixelKey, pixelKey)) {\n        return fixture;\n      }\n    }\n\n    return null;\n  }\n\n  fixtureIsSelected(fixture: Fixture, pixelKey: string, preset?: Preset): boolean {\n    // is the passed fixture selected in the passed/currently selected preset?\n    if (!preset) {\n      if (this.selectedPreset) {\n        preset = this.selectedPreset;\n      } else {\n        return false;\n      }\n    }\n\n    const presetFixture = this.getPresetFixture(preset, fixture.uuid, pixelKey);\n\n    if (presetFixture) {\n      return true;\n    }\n\n    return false;\n  }\n\n  switchFixtureSelection(fixture: Fixture, pixelKey: string) {\n    if (!this.selectedPreset) {\n      return;\n    }\n\n    // select all fixtures at the specified start channel or unselect them,\n    // if already selected\n    if (this.fixtureIsSelected(fixture, pixelKey)) {\n      for (let i = this.selectedPreset.fixtures.length - 1; i >= 0; i--) {\n        const projectFixture = this.fixtureService.getFixtureByUuid(this.selectedPreset.fixtures[i].fixtureUuid);\n        if (\n          projectFixture.dmxFirstChannel === fixture.dmxFirstChannel &&\n          ((!this.selectedPreset.fixtures[i].pixelKey && !pixelKey) || this.selectedPreset.fixtures[i].pixelKey === pixelKey)\n        ) {\n          this.selectedPreset.fixtures.splice(i, 1);\n        }\n      }\n    } else {\n      for (const projectPresetFixture of this.projectService.project.presetFixtures) {\n        if ((!projectPresetFixture.pixelKey && !pixelKey) || projectPresetFixture.pixelKey === pixelKey) {\n          const projectFixture = this.fixtureService.getFixtureByUuid(projectPresetFixture.fixtureUuid);\n          if (projectFixture.dmxFirstChannel === fixture.dmxFirstChannel) {\n            const presetFixture = new PresetFixture();\n            presetFixture.fixtureUuid = projectPresetFixture.fixtureUuid;\n            presetFixture.pixelKey = pixelKey;\n            this.selectedPreset.fixtures.push(presetFixture);\n          }\n        }\n      }\n    }\n  }\n\n  selectAllFixtures() {\n    if (!this.selectedPreset) {\n      return;\n    }\n\n    for (const fixture of this.projectService.project.fixtures) {\n      if (this.fixtureService.fixtureHasGeneralChannel(fixture)) {\n        if (!this.fixtureIsSelected(fixture, null)) {\n          const presetFixture = new PresetFixture();\n          presetFixture.fixtureUuid = fixture.uuid;\n          this.selectedPreset.fixtures.push(presetFixture);\n        }\n      }\n\n      const pixelKeys = this.fixtureService.fixtureGetUniquePixelKeys(fixture);\n\n      for (const pixelKey of pixelKeys) {\n        if (!this.fixtureIsSelected(fixture, pixelKey)) {\n          const presetFixture = new PresetFixture();\n          presetFixture.fixtureUuid = fixture.uuid;\n          presetFixture.pixelKey = pixelKey;\n          this.selectedPreset.fixtures.push(presetFixture);\n        }\n      }\n    }\n  }\n\n  selectNoFixtures() {\n    if (!this.selectedPreset) {\n      return;\n    }\n\n    this.selectedPreset.fixtures = [];\n  }\n\n  public removeDeletedFixtures() {\n    // after changing the configuration in the fixture pool, we might need to\n    // delete some fixtures\n    for (const preset of this.projectService.project.presets) {\n      for (let i = preset.fixtures.length - 1; i >= 0; i--) {\n        const presetFixture = this.fixtureService.getFixtureByUuid(preset.fixtures[i].fixtureUuid);\n        if (!presetFixture) {\n          preset.fixtures.splice(i, 1);\n        }\n      }\n    }\n  }\n\n  public updateFixtureSelection() {\n    // after changing the configuration in the fixture pool, we might need to\n    // select some more fixtures on the same channel as already selected ones\n    for (const preset of this.projectService.project.presets) {\n      for (let presetFixture of preset.fixtures) {\n        const fixture = this.fixtureService.getFixtureByUuid(presetFixture.fixtureUuid);\n        for (const projectFixture of this.projectService.project.fixtures) {\n          if (\n            projectFixture.dmxFirstChannel === fixture.dmxFirstChannel &&\n            !this.fixtureIsSelected(projectFixture, presetFixture.pixelKey, preset)\n          ) {\n            const newPresetFixture = new PresetFixture();\n            newPresetFixture.fixtureUuid = projectFixture.uuid;\n            newPresetFixture.pixelKey = presetFixture.pixelKey;\n            preset.fixtures.push(newPresetFixture);\n          }\n        }\n      }\n    }\n  }\n\n  deleteCapabilityValue(\n    preset: Preset,\n    capabilityType: FixtureCapabilityType,\n    color?: FixtureCapabilityColor,\n    wheel?: string,\n    profileUuid?: string\n  ) {\n    for (let i = 0; i < preset.fixtureCapabilityValues.length; i++) {\n      if (\n        this.fixtureService.capabilitiesMatch(\n          preset.fixtureCapabilityValues[i].type,\n          capabilityType,\n          preset.fixtureCapabilityValues[i].color,\n          color,\n          preset.fixtureCapabilityValues[i].wheel,\n          wheel,\n          preset.fixtureCapabilityValues[i].profileUuid,\n          profileUuid\n        )\n      ) {\n        preset.fixtureCapabilityValues.splice(i, 1);\n        return;\n      }\n    }\n  }\n\n  setCapabilityValue(\n    preset: Preset,\n    capabilityType: FixtureCapabilityType,\n    valuePercentage: number,\n    slotNumber?: number,\n    color?: FixtureCapabilityColor,\n    wheel?: string,\n    profileUuid?: string\n  ) {\n    // Delete existant properties with this type and set the new value\n    this.deleteCapabilityValue(preset, capabilityType, color, wheel, profileUuid);\n\n    const fixtureCapabilityValue = new FixtureCapabilityValue();\n    fixtureCapabilityValue.type = capabilityType;\n    fixtureCapabilityValue.color = color;\n    fixtureCapabilityValue.wheel = wheel;\n    fixtureCapabilityValue.valuePercentage = valuePercentage;\n    fixtureCapabilityValue.slotNumber = slotNumber;\n    fixtureCapabilityValue.profileUuid = profileUuid;\n\n    preset.fixtureCapabilityValues.push(fixtureCapabilityValue);\n  }\n\n  getCapabilityValue(\n    preset: Preset,\n    capabilityType: FixtureCapabilityType,\n    color?: FixtureCapabilityColor,\n    wheel?: string,\n    profileUuid?: string\n  ): FixtureCapabilityValue {\n    for (const capabilityValue of preset.fixtureCapabilityValues) {\n      if (\n        this.fixtureService.capabilitiesMatch(\n          capabilityValue.type,\n          capabilityType,\n          capabilityValue.color,\n          color,\n          capabilityValue.wheel,\n          wheel,\n          capabilityValue.profileUuid,\n          profileUuid\n        )\n      ) {\n        return capabilityValue;\n      }\n    }\n    return undefined;\n  }\n\n  deleteChannelValue(channelName: string, profileUuid: string) {\n    for (let i = 0; i < this.selectedPreset.fixtureChannelValues.length; i++) {\n      if (\n        this.selectedPreset.fixtureChannelValues[i].channelName === channelName &&\n        this.selectedPreset.fixtureChannelValues[i].profileUuid === profileUuid\n      ) {\n        this.selectedPreset.fixtureChannelValues.splice(i, 1);\n        return;\n      }\n    }\n  }\n\n  setChannelValue(channelName: string, profileUuid: string, value: number) {\n    // Delete existant properties with this type and set the new value\n    this.deleteChannelValue(channelName, profileUuid);\n\n    const fixtureChannelValue = new FixtureChannelValue();\n    fixtureChannelValue.channelName = channelName;\n    fixtureChannelValue.profileUuid = profileUuid;\n    fixtureChannelValue.value = value;\n\n    this.selectedPreset.fixtureChannelValues.push(fixtureChannelValue);\n  }\n\n  getChannelValue(channelName: string, profileUuid: string): number {\n    for (const channelValue of this.selectedPreset.fixtureChannelValues) {\n      if (channelValue.channelName === channelName && channelValue.profileUuid === profileUuid) {\n        return channelValue.value;\n      }\n    }\n  }\n\n  getApproximatedColorWheelCapability(preset: Preset, cachedChannel: CachedFixtureChannel): CachedFixtureCapability {\n    // return an approximated wheel slot channel capability, if a color or a slot on a different\n    // wheel has been selected\n    let colorRed: number;\n    let colorGreen: number;\n    let colorBlue: number;\n    let lowestDiff = Number.MAX_VALUE;\n    let lowestDiffCapability: CachedFixtureCapability;\n    let capabilityValue: FixtureCapabilityValue;\n\n    capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Red);\n    if (capabilityValue) {\n      colorRed = 255 * capabilityValue.valuePercentage;\n    }\n    capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Green);\n    if (capabilityValue) {\n      colorGreen = 255 * capabilityValue.valuePercentage;\n    }\n    capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Blue);\n    if (capabilityValue) {\n      colorBlue = 255 * capabilityValue.valuePercentage;\n    }\n\n    if (!colorRed && !colorGreen && !colorBlue) {\n      // no color found -> search the first color wheel\n      // TODO\n    }\n\n    if (colorRed !== undefined && colorGreen !== undefined && colorBlue !== undefined) {\n      for (const capability of cachedChannel.capabilities) {\n        if (capability.capability.slotNumber) {\n          const mixedColor = this.fixtureService.getMixedWheelSlotColor(capability.wheel, capability.capability.slotNumber);\n          if (mixedColor) {\n            const diff =\n              Math.abs(mixedColor.red - colorRed) + Math.abs(mixedColor.green - colorGreen) + Math.abs(mixedColor.blue - colorBlue);\n\n            if (diff < lowestDiff) {\n              lowestDiff = diff;\n              lowestDiffCapability = capability;\n            }\n          }\n        }\n      }\n    }\n\n    return lowestDiffCapability;\n  }\n\n  private hasCapabilityType(type: FixtureCapabilityType): boolean {\n    // there is at least one channel with at least one intensity capability\n    for (const presetFixture of this.selectedPreset.fixtures) {\n      const fixture = this.fixtureService.getCachedFixtureByUuid(presetFixture.fixtureUuid, presetFixture.pixelKey);\n      for (const channel of fixture.channels) {\n        if (channel.channel) {\n          for (const capability of channel.capabilities) {\n            if (capability.capability.type === type) {\n              return true;\n            }\n          }\n        }\n      }\n    }\n    return false;\n  }\n\n  hasCapabilityDimmer(): boolean {\n    return this.hasCapabilityType(FixtureCapabilityType.Intensity);\n  }\n\n  hasCapabilityColor(): boolean {\n    // TODO optionally color temperature and color white (see stairville/mh-100)\n\n    // one of the profiles has a color intensity\n    if (this.hasCapabilityType(FixtureCapabilityType.ColorIntensity)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  hasCapabilityColorOrColorWheel(): boolean {\n    // TODO optionally color temperature and color white (see stairville/mh-100)\n\n    // one of the profiles has a color intensity\n    if (this.hasCapabilityColor()) {\n      return true;\n    }\n\n    // a color wheel is involved\n    for (const projectFixture of this.selectedPreset.fixtures) {\n      const fixture = this.fixtureService.getCachedFixtureByUuid(projectFixture.fixtureUuid, projectFixture.pixelKey);\n      for (const channel of fixture.channels) {\n        if (channel.colorWheel) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  hasCapabilityPanTilt(): boolean {\n    let hasPan = false;\n    let hasTilt = false;\n\n    // there is at least one pan and one tilt channel\n    if (this.hasCapabilityType(FixtureCapabilityType.Pan)) {\n      hasPan = true;\n    }\n\n    if (this.hasCapabilityType(FixtureCapabilityType.Tilt)) {\n      hasTilt = true;\n    }\n\n    if (hasPan && hasTilt) {\n      return true;\n    }\n\n    return false;\n  }\n\n  selectPreset(index: number) {\n    this.effectService.selectedEffect = undefined;\n    this.selectedPreset = this.projectService.project.presets[index];\n    this.projectService.project.selectedPresetUuid = this.projectService.project.presets[index].uuid;\n    this.autoOpenFirstEffect();\n    this.previewSelectionChanged.next();\n    this.previewLive();\n  }\n\n  autoOpenFirstEffect() {\n    // open the first effect, if the preset only has one\n    if (this.selectedPreset && this.selectedPreset.effects.length === 1) {\n      this.effectService.selectedEffect = this.selectedPreset.effects[0];\n    }\n  }\n\n  addPreset(name?: string): void {\n    const preset: Preset = new Preset();\n    preset.uuid = this.uuidService.getUuid();\n    preset.name = name || 'New Preset';\n\n    // Insert the new preset before the highest currently selected preset\n    let highestSelectedPresetIndex = 0;\n\n    for (let i = 0; i < this.projectService.project.presets.length; i++) {\n      if (this.selectedPreset === this.projectService.project.presets[i]) {\n        highestSelectedPresetIndex = i;\n        break;\n      }\n    }\n\n    this.projectService.project.presets.splice(highestSelectedPresetIndex, 0, preset);\n    this.selectPreset(highestSelectedPresetIndex);\n  }\n\n  // return all fixture profiles used in the current preset selection\n  getSelectedProfiles() {\n    const profiles: FixtureProfile[] = [];\n\n    if (!this.selectedPreset) {\n      return profiles;\n    }\n\n    for (const presetFixture of this.selectedPreset.fixtures) {\n      const fixture = this.fixtureService.getFixtureByUuid(presetFixture.fixtureUuid);\n      const profile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n\n      if (profiles.indexOf(profile) < 0) {\n        profiles.push(profile);\n      }\n    }\n\n    return profiles;\n  }\n\n  // given a list of fixture profiles, return all available channels based on the currently selected fixtures in the preset\n  getSelectedProfileChannels(selectedProfiles: FixtureProfile[]) {\n    const calculatedProfileModes = new Map<FixtureProfile, any[]>();\n    const availableChannels: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n\n    // calculate all modes for each profile\n    for (const profile of selectedProfiles) {\n      const modeAndPixelKeys: any[] = [];\n\n      // loop over the project fixtures to keep the order\n      for (let projectFixture of this.projectService.project.presetFixtures) {\n        for (const presetFixture of this.selectedPreset.fixtures) {\n          if (\n            projectFixture.fixtureUuid === presetFixture.fixtureUuid &&\n            ((!projectFixture.pixelKey && !presetFixture.pixelKey) || projectFixture.pixelKey === presetFixture.pixelKey)\n          ) {\n            const fixture = this.fixtureService.getCachedFixtureByUuid(presetFixture.fixtureUuid, presetFixture.pixelKey);\n            if (fixture.profile.uuid === profile.uuid) {\n              const exists = modeAndPixelKeys.some(\n                (item) => (item.mode === fixture.mode && !item.pixelKey && !fixture.pixelKey) || item.pixelKey === fixture.pixelKey\n              );\n              if (!exists) {\n                modeAndPixelKeys.push({\n                  mode: fixture.mode,\n                  pixelKey: presetFixture.pixelKey,\n                });\n              }\n            }\n          }\n        }\n\n        calculatedProfileModes.set(profile, modeAndPixelKeys);\n      }\n    }\n\n    // calculate all channels from the modes\n    calculatedProfileModes.forEach((modeAndPixelKeys: any[], profile: FixtureProfile) => {\n      const profileChannels: CachedFixtureChannel[] = [];\n      for (const modeAndPixelKey of modeAndPixelKeys) {\n        const channels = this.fixtureService.getCachedChannels(profile, modeAndPixelKey.mode, modeAndPixelKey.pixelKey);\n        for (const channel of channels) {\n          // only add the channel, if no channel with the same name has already been added\n          // (e.g. a fine channel)\n          if (channel.channel && !profileChannels.find((c) => c.name === channel.name)) {\n            profileChannels.push(channel);\n          }\n        }\n      }\n      availableChannels.set(profile, profileChannels);\n    });\n\n    return availableChannels;\n  }\n\n  previewLive(compositionName: string = '', positionMillis?: number) {\n    if (!this.configService.livePreview) {\n      return;\n    }\n\n    // collect all changes and delay them to not flood the backend\n    // (except play events. they need to be delivered always)\n    if (this.livePreviewTimer && !compositionName) {\n      this.liveChangePending = true;\n      return;\n    }\n\n    let position = positionMillis;\n\n    if (position === undefined) {\n      position = Math.round(this.animationService.timeMillis);\n    }\n\n    this.http\n      .post('preview?positionMillis=' + position + '&compositionName=' + compositionName, JSON.stringify(this.projectService.project))\n      .subscribe();\n\n    this.liveChangePending = false;\n\n    if (!compositionName) {\n      this.livePreviewTimer = setTimeout(() => {\n        this.livePreviewTimer = undefined;\n        if (this.liveChangePending) {\n          this.http\n            .post('preview?positionMillis=' + position + '&compositionName=' + compositionName, JSON.stringify(this.projectService.project))\n            .subscribe();\n        }\n      }, 50);\n    }\n  }\n\n  stopPreviewPlay() {\n    if (!this.configService.livePreview) {\n      return;\n    }\n\n    this.http.post('stop-preview-play', null).subscribe();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Preset } from '../models/preset';\nimport { Scene } from '../models/scene';\nimport { EffectService } from './effect.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SceneService {\n  selectedScenes: Scene[] = [];\n  sceneColors: string[] = ['#945fda', '#61da5f', '#5fc3da', '#dad65f', '#da5f5f', '#246db7'];\n\n  multipleSelection = false;\n\n  sceneDeleted: Subject<void> = new Subject<void>();\n  sceneSelected: Subject<void> = new Subject<void>();\n\n  constructor(\n    private uuidService: UuidService,\n    private effectService: EffectService,\n    private presetService: PresetService,\n    private projectService: ProjectService\n  ) {}\n\n  sceneIsSelected(scene: Scene): boolean {\n    for (const selectedScene of this.selectedScenes) {\n      if (selectedScene.uuid === scene.uuid) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  presetIsSelected(preset: Preset): boolean {\n    if (!this.selectedScenes || this.selectedScenes.length !== 1) {\n      return false;\n    }\n\n    for (const uuid of this.selectedScenes[0].presetUuids) {\n      if (preset.uuid === uuid) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  switchSceneSelection(scene: Scene) {\n    // Select a scene if not yet selected or unselect it otherwise\n    if (this.sceneIsSelected(scene)) {\n      for (let i = 0; i < this.selectedScenes.length; i++) {\n        if (this.selectedScenes[i].uuid === scene.uuid) {\n          this.selectedScenes.splice(i, 1);\n          return;\n        }\n      }\n    } else {\n      this.selectedScenes.push(scene);\n    }\n\n    this.sceneSelected.next();\n  }\n\n  selectPresetFromSelectedScene() {\n    // select the first preset of the scene, if no preset of the current scene is already\n    // selected to make sure, the user does not edit a preset which is not even\n    // active in the current scene (and sees no change).\n\n    let firstPresetUuid;\n\n    // check, whether a preset of the current scene is already selected and do nothing\n    // in this case\n    for (const scene of this.selectedScenes) {\n      for (const presetUuid of scene.presetUuids) {\n        firstPresetUuid = presetUuid;\n\n        if (presetUuid === this.presetService.selectedPreset.uuid) {\n          // a preset of a currently selected scene is already selected -> do nothing\n          return;\n        }\n      }\n    }\n\n    if (!firstPresetUuid) {\n      return;\n    }\n\n    for (let i = 0; i < this.projectService.project.presets.length; i++) {\n      if (this.projectService.project.presets[i].uuid === firstPresetUuid) {\n        this.presetService.selectPreset(i);\n        break;\n      }\n    }\n  }\n\n  selectScene(index: number) {\n    this.effectService.selectedEffect = undefined;\n\n    if (index >= this.projectService.project.scenes.length) {\n      this.selectedScenes = [];\n    } else {\n      if (this.multipleSelection) {\n        this.switchSceneSelection(this.projectService.project.scenes[index]);\n      } else {\n        this.selectedScenes = [];\n        this.selectedScenes.push(this.projectService.project.scenes[index]);\n      }\n    }\n\n    this.selectPresetFromSelectedScene();\n\n    // preview the complete scene\n    this.projectService.project.previewPreset = false;\n\n    this.projectService.project.selectedSceneUuids = [];\n    for (const scene of this.selectedScenes) {\n      this.projectService.project.selectedSceneUuids.push(scene.uuid);\n    }\n    this.presetService.previewSelectionChanged.next();\n    this.presetService.previewLive();\n\n    this.sceneSelected.next();\n  }\n\n  addScene(name?: string): void {\n    const scene: Scene = new Scene();\n    scene.uuid = this.uuidService.getUuid();\n    scene.name = name || 'New Scene';\n\n    if (this.projectService.project.scenes.length < this.sceneColors.length) {\n      scene.color = this.sceneColors[this.projectService.project.scenes.length];\n    } else {\n      scene.color = '#' + Math.random().toString(16).slice(2, 8).toUpperCase();\n    }\n\n    // Insert the new scene before the highest currently selected scene\n    let highestSelectedSceneIndex = 0;\n\n    for (let i = 0; i < this.projectService.project.scenes.length; i++) {\n      if (this.sceneIsSelected(this.projectService.project.scenes[i])) {\n        highestSelectedSceneIndex = i;\n        break;\n      }\n    }\n\n    this.projectService.project.scenes.splice(highestSelectedSceneIndex, 0, scene);\n    this.selectScene(highestSelectedSceneIndex);\n  }\n\n  removeScene(scene: Scene): void {\n    // remove all playback regions\n    for (const composition of this.projectService.project.compositions) {\n      for (let i = composition.scenePlaybackRegions.length - 1; i >= 0; i--) {\n        const compositionPlaybackRegion = composition.scenePlaybackRegions[i];\n        if (compositionPlaybackRegion.sceneUuid === scene.uuid) {\n          composition.scenePlaybackRegions.splice(i, 1);\n        }\n      }\n    }\n\n    // remove the scene\n    this.projectService.project.scenes.splice(this.projectService.project.scenes.indexOf(scene), 1);\n    if (this.projectService.project.scenes.length > 0) {\n      this.selectScene(0);\n    }\n\n    this.sceneDeleted.next();\n  }\n\n  getSceneByUuid(uuid: string): Scene {\n    for (const scene of this.projectService.project.scenes) {\n      if (scene.uuid === uuid) {\n        return scene;\n      }\n    }\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport WaveSurfer from 'wavesurfer.js';\nimport CursorPlugin from 'wavesurfer.js/dist/plugin/wavesurfer.cursor.min.js';\nimport RegionsPlugin from 'wavesurfer.js/dist/plugin/wavesurfer.regions.min.js';\nimport TimeLinePlugin from 'wavesurfer.js/dist/plugin/wavesurfer.timeline.min.js';\nimport { guess } from 'web-audio-beat-detector';\nimport { Composition } from '../models/composition';\nimport { Preset } from '../models/preset';\nimport { PresetRegionScene } from '../models/preset-region-scene';\nimport { Scene } from '../models/scene';\nimport { ScenePlaybackRegion } from '../models/scene-playback-region';\nimport { ConfigService } from './config.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TimelineService {\n  public waveSurfer: WaveSurfer;\n  public playState = 'paused';\n\n  public zoom = 0;\n  private timeUpdateSubscription: Subscription;\n  public currentTime: string;\n  private timelineClicking = false;\n  public selectedPlaybackRegion: ScenePlaybackRegion;\n  private intensity = 0.2;\n  private intensitySelectedScene = 0.4;\n  private intensityHighlighted = 0.8;\n  public duration: string;\n  public waveSurferReady: Subject<void> = new Subject();\n  public detectChanges: Subject<void> = new Subject();\n\n  // the current composition\n  public selectedComposition: Composition;\n  public selectedCompositionIndex: number;\n\n  // can we add new compositions based on an external pool and\n  // should new compositions not available in this pool be added there?\n  public externalCompositionsAvailable = false;\n\n  public loadingAudioFile = false;\n\n  constructor(\n    private sceneService: SceneService,\n    private presetService: PresetService,\n    private projectService: ProjectService,\n    private http: HttpClient,\n    private configService: ConfigService\n  ) {\n    this.presetService.previewSelectionChanged.subscribe(() => {\n      this.selectedPlaybackRegion = undefined;\n      this.updateRegionSelection();\n    });\n    this.sceneService.sceneDeleted.subscribe(() => {\n      this.redrawAllRegions();\n    });\n    this.sceneService.sceneSelected.subscribe(() => {\n      this.redrawAllRegions();\n    });\n  }\n\n  private redrawAllRegions() {\n    // remove all regions from wavesurver\n    if (this.waveSurfer) {\n      for (const key of Object.keys(this.waveSurfer.regions.list)) {\n        const region: any = this.waveSurfer.regions.list[key];\n        region.remove();\n      }\n    }\n\n    // draw all regions\n    this.drawAllRegions();\n  }\n\n  private pad(num: number, size: number): string {\n    if (!num) {\n      num = 0;\n    }\n\n    let padded: string = num.toString();\n    while (padded.length < size) {\n      padded = '0' + padded;\n    }\n\n    return padded;\n  }\n\n  private msToTime(millis: number, includeMillis: boolean = true): string {\n    const ms: number = Math.round(millis % 1000);\n    const seconds: number = Math.floor(((millis % 360000) % 60000) / 1000);\n    const minutes: number = Math.floor((millis % 3600000) / 60000);\n\n    if (includeMillis) {\n      return this.pad(minutes, 2) + ':' + this.pad(seconds, 2) + '.' + this.pad(ms, 3);\n    } else {\n      return this.pad(minutes, 2) + ':' + this.pad(seconds, 2);\n    }\n  }\n\n  private updateCurrentTime() {\n    if (!this.waveSurfer) {\n      return;\n    }\n\n    // display the current time\n    this.currentTime = this.msToTime(this.waveSurfer.getCurrentTime() * 1000);\n\n    if (!this.waveSurfer.timeline.drawer) {\n      return;\n    }\n\n    // draw the current cursor on the timeline\n    // TODO redrawing the timeline each update is way to expensive.\n    // maybe as a better solution use an element, like the cursor inside Wavesurfer to\n    // display the progress?\n    let x = 0;\n    const duration: number = this.waveSurfer.backend.getDuration();\n    const width: number =\n      this.waveSurfer.params.fillParent && !this.waveSurfer.params.scrollParent\n        ? this.waveSurfer.timeline.drawer.getWidth()\n        : this.waveSurfer.timeline.drawer.wrapper.scrollWidth * this.waveSurfer.params.pixelRatio;\n\n    x = (width / duration) * this.waveSurfer.getCurrentTime() - 2;\n\n    // update the timeline canvas\n    this.waveSurfer.timeline.render();\n\n    // draw the cursor on the timeline\n    this.waveSurfer.timeline.canvases.forEach((canvas, i) => {\n      const leftOffset = i * this.waveSurfer.timeline.maxCanvasWidth;\n\n      const ctx = canvas.getContext('2d');\n\n      ctx.fillStyle = '#fd7e14';\n      ctx.beginPath();\n      ctx.moveTo(x - 12 - leftOffset, 20);\n      ctx.lineTo(x + 12 - leftOffset, 20);\n      ctx.lineTo(x - leftOffset, 45);\n      ctx.fill();\n    });\n  }\n\n  private startTimeUpdater() {\n    this.stopTimeUpdater();\n\n    const timeUpdater = timer(0, 40);\n    this.timeUpdateSubscription = timeUpdater.subscribe(() => {\n      this.updateCurrentTime();\n    });\n  }\n\n  private stopTimeUpdater() {\n    if (this.timeUpdateSubscription) {\n      this.timeUpdateSubscription.unsubscribe();\n    }\n  }\n\n  formatTimeCallback(seconds: number, pxPerSec: number) {\n    if (this.selectedComposition.gridType === 'musical') {\n      return Math.round(seconds / this.selectedComposition.timeSignatureUpper / (60 / this.selectedComposition.beatsPerMinute));\n    } else {\n      // calculate minutes and seconds from seconds count\n      const minutes = parseInt((seconds / 60) as any, 10);\n      seconds = parseInt((seconds % 60) as any, 10);\n\n      // fill up seconds with zeroes\n      const secondsStr = seconds < 10 ? '0' + seconds : seconds;\n      return `${minutes}:${secondsStr}`;\n    }\n  }\n\n  timeInterval(pxPerSec: number) {\n    if (this.selectedComposition.gridType === 'musical') {\n      const interval = 60 / this.selectedComposition.beatsPerMinute / this.selectedComposition.gridResolution;\n\n      if (pxPerSec < 40) {\n        return interval * 4;\n      } else if (pxPerSec < 80) {\n        return interval * 2;\n      }\n\n      return interval;\n    } else {\n      if (pxPerSec >= 25) {\n        return 1;\n      } else if (pxPerSec * 5 >= 25) {\n        return 5;\n      } else if (pxPerSec * 15 >= 25) {\n        return 15;\n      }\n\n      return Math.ceil(0.5 / pxPerSec) * 60;\n    }\n  }\n\n  primaryLabelInterval(pxPerSec: number) {\n    if (this.selectedComposition.gridType === 'musical') {\n      const interval = this.selectedComposition.timeSignatureUpper * this.selectedComposition.gridResolution;\n\n      return interval;\n    } else {\n      if (pxPerSec >= 25) {\n        return 10;\n      } else if (pxPerSec * 5 >= 25) {\n        return 6;\n      } else if (pxPerSec * 15 >= 25) {\n        return 4;\n      }\n\n      return 4;\n    }\n  }\n\n  secondaryLabelInterval(pxPerSec: number) {\n    if (this.selectedComposition.gridType === 'musical') {\n      return 0;\n    } else {\n      if (pxPerSec >= 25) {\n        return 5;\n      } else if (pxPerSec * 5 >= 25) {\n        return 2;\n      } else if (pxPerSec * 15 >= 25) {\n        return 2;\n      }\n      return 2;\n    }\n  }\n\n  private seeekWithTimeline(e: any) {\n    // taken from wavesurfer -> drawer -> handleEvent\n    const clientX = e.targetTouches ? e.targetTouches[0].clientX : e.clientX;\n    const bbox = this.waveSurfer.timeline.wrapper.getBoundingClientRect();\n\n    const nominalWidth = this.waveSurfer.timeline.drawer.width;\n    const parentWidth = this.waveSurfer.timeline.drawer.getWidth();\n\n    let progress: number;\n\n    if (!this.waveSurfer.timeline.drawer.params.fillParent && nominalWidth < parentWidth) {\n      progress =\n        (this.waveSurfer.timeline.drawer.params.rtl ? bbox.right - clientX : clientX - bbox.left) *\n          (this.waveSurfer.timeline.drawer.params.pixelRatio / nominalWidth) || 0;\n\n      if (progress > 1) {\n        progress = 1;\n      }\n    } else {\n      progress =\n        ((this.waveSurfer.timeline.drawer.params.rtl ? bbox.right - clientX : clientX - bbox.left) +\n          this.waveSurfer.timeline.wrapper.scrollLeft) /\n          this.waveSurfer.timeline.wrapper.scrollWidth || 0;\n    }\n\n    progress = Math.max(progress, 0);\n\n    setTimeout(() => {\n      this.waveSurfer.seekTo(progress);\n      this.detectChanges.next();\n      this.presetService.previewLive(this.selectedComposition.name, Math.round(this.waveSurfer.getCurrentTime() * 1000));\n    }, 0);\n  }\n\n  applyZoom(zoom: any) {\n    if (zoom < 0 || zoom > 200) {\n      return;\n    }\n\n    this.zoom = zoom;\n    if (this.waveSurfer) {\n      setTimeout(() => {\n        this.waveSurfer.zoom(this.zoom);\n        this.updateCurrentTime();\n      }, 0);\n    }\n  }\n\n  private isWaveSurferReady(): boolean {\n    if (!this.waveSurfer) {\n      return false;\n    }\n\n    if (!this.waveSurfer.isReady) {\n      return false;\n    }\n\n    return true;\n  }\n\n  addRegion(waveSurferRegion?: any) {\n    if (!this.isWaveSurferReady()) {\n      return;\n    }\n\n    if (!this.sceneService.selectedScenes || this.sceneService.selectedScenes.length !== 1) {\n      return;\n    }\n\n    if (!this.selectedComposition) {\n      return;\n    }\n\n    const scenePlaybackRegion: ScenePlaybackRegion = new ScenePlaybackRegion();\n    scenePlaybackRegion.sceneUuid = this.sceneService.selectedScenes[0].uuid;\n\n    if (waveSurferRegion) {\n      scenePlaybackRegion.startMillis = waveSurferRegion.start * 1000;\n      scenePlaybackRegion.endMillis = waveSurferRegion.end * 1000;\n    } else {\n      scenePlaybackRegion.startMillis = (this.waveSurfer.getDuration() * 1000) / 3;\n      scenePlaybackRegion.endMillis = ((this.waveSurfer.getDuration() * 1000) / 3) * 2;\n    }\n\n    this.selectedComposition.scenePlaybackRegions.push(scenePlaybackRegion);\n\n    this.selectedPlaybackRegion = scenePlaybackRegion;\n\n    if (waveSurferRegion) {\n      waveSurferRegion.color =\n        'rgba(' +\n        this.hexToRgb(this.sceneService.selectedScenes[0].color).r +\n        ', ' +\n        this.hexToRgb(this.sceneService.selectedScenes[0].color).g +\n        ', ' +\n        this.hexToRgb(this.sceneService.selectedScenes[0].color).b +\n        ', ' +\n        this.intensityHighlighted +\n        ')';\n      waveSurferRegion.attributes.selectable = true;\n      this.connectRegion(waveSurferRegion, this.sceneService.selectedScenes[0], scenePlaybackRegion);\n      this.updateRegionSelection();\n    } else {\n      this.drawRegion(scenePlaybackRegion, this.sceneService.selectedScenes[0]);\n    }\n\n    this.presetService.previewLive();\n  }\n\n  private getSnapToGridInterval(): number {\n    if (this.selectedComposition.snapToGrid) {\n      return 60 / this.selectedComposition.beatsPerMinute / this.selectedComposition.gridResolution;\n    }\n\n    return undefined;\n  }\n\n  private getSnapToGridOffset(): number {\n    return this.selectedComposition.gridOffsetMillis / 1000;\n  }\n\n  deleteSelectedComposition() {\n    this.projectService.project.compositions.splice(this.selectedCompositionIndex, 1);\n    this.selectedComposition = undefined;\n    this.selectedCompositionIndex = undefined;\n    this.destroyWaveSurfer();\n    if (this.projectService.project.compositions.length > 0) {\n      this.selectCompositionIndex(0);\n    }\n  }\n\n  destroyWaveSurfer() {\n    this.duration = undefined;\n    this.loadingAudioFile = false;\n\n    if (this.waveSurfer) {\n      this.waveSurfer.destroy();\n      this.waveSurfer = undefined;\n    }\n  }\n\n  createWaveSurfer() {\n    this.destroyWaveSurfer();\n\n    if (!this.selectedComposition.audioFileName) {\n      return;\n    }\n\n    this.loadingAudioFile = true;\n\n    setTimeout(() => {\n      this.waveSurfer = WaveSurfer.create({\n        container: '#waveform',\n        waveColor: 'white',\n        progressColor: 'white',\n        // barWidth: 2,\n        height: 1,\n        interact: false,\n        // Use for timelines without sound. Wave will be displayed\n        // wrong, but should work for a dummy audio without any waves.\n        // duration: 400,\n        plugins: [\n          CursorPlugin.create({\n            // showTime: true,\n            opacity: 1,\n            color: '#fd7e14',\n            hideOnBlur: false /* don't show/hide the cursor on the wave (only on the timeline) */,\n          }),\n          RegionsPlugin.create({\n            dragSelection: {\n              slop: 5,\n            },\n            color: '#fff',\n            snapToGridInterval: this.getSnapToGridInterval(),\n            snapToGridOffset: this.getSnapToGridOffset(),\n          }),\n          TimeLinePlugin.create({\n            container: '#waveform-timeline',\n            primaryFontColor: '#fff',\n            secondaryFontColor: '#fff',\n            offset: this.getSnapToGridOffset(),\n            formatTimeCallback: this.formatTimeCallback.bind(this),\n            timeInterval: this.timeInterval.bind(this),\n            primaryLabelInterval: this.primaryLabelInterval.bind(this),\n            secondaryLabelInterval: this.secondaryLabelInterval.bind(this),\n          }),\n        ],\n      });\n\n      let audioFileName: string;\n\n      if (this.configService.enableMediaLibrary) {\n        // the file name is also used for the real file name\n        audioFileName = 'file/get?name=' + this.selectedComposition.audioFileName + '&type=AUDIO';\n      } else {\n        // the composition uuid and extension is used as the file name\n        audioFileName =\n          'composition-files/?file=' +\n          this.selectedComposition.uuid +\n          '.' +\n          this.selectedComposition.audioFileName.substr(this.selectedComposition.audioFileName.lastIndexOf('.') + 1);\n      }\n\n      this.waveSurfer.load(this.configService.restUrl + audioFileName);\n\n      this.waveSurfer.on('ready', () => {\n        setTimeout(() => {\n          // try guessing the bpm and offset from the file, if necessary\n          if (this.selectedComposition.tempoGuessed) {\n            // we already guessed the BPM of this file --> don't do it again\n            this.loadingAudioFile = false;\n          } else {\n            // we have not yet guessed the BPM --> do it now\n            this.selectedComposition.tempoGuessed = true;\n            guess(this.waveSurfer.backend.buffer)\n              .then(({ bpm, offset }) => {\n                // the bpm and offset could be guessed\n                this.selectedComposition.beatsPerMinute = bpm;\n                this.selectedComposition.gridOffsetMillis = offset * 1000;\n                this.loadingAudioFile = false;\n              })\n              .catch((err) => {\n                // something went wrong\n                console.error('Could not detect the BPM from the audio file', err);\n                this.loadingAudioFile = false;\n              });\n          }\n\n          this.duration = this.msToTime(this.waveSurfer.getDuration() * 1000);\n          this.drawAllRegions();\n\n          // scroll wavesurfer in sync with the timeline\n          this.waveSurfer.timeline.wrapper.addEventListener('scroll', () => {\n            this.waveSurfer.drawer.wrapper.scrollLeft = this.waveSurfer.timeline.wrapper.scrollLeft;\n\n            // Set the scroll position of the timeline to the same position as the wavesurfer,\n            // because the timeline is larger than wavesurfer and might get out of sync.\n            // This way, if wavesurfer cannot scroll any further, we reset the position\n            // of the timeline as well.\n            this.waveSurfer.timeline.wrapper.scrollLeft = this.waveSurfer.drawer.wrapper.scrollLeft;\n          });\n\n          // display the cursor also on the timeline\n          this.waveSurfer.timeline.wrapper.addEventListener('mouseenter', () => {\n            this.waveSurfer.cursor.showCursor();\n          });\n          this.waveSurfer.timeline.wrapper.addEventListener('mouseleave', () => {\n            this.waveSurfer.cursor.hideCursor();\n          });\n          this.waveSurfer.timeline.wrapper.addEventListener('mousemove', (e: any) => {\n            const bbox = this.waveSurfer.container.getBoundingClientRect();\n            const x = e.clientX - bbox.left;\n            this.waveSurfer.cursor.updateCursorPosition(x, 0);\n          });\n\n          // hide the cursor on the wave initially. in combination with the param hideOnBlur = false,\n          // it will never be displayed on the wave now. we handle it on the timeline only.\n          this.waveSurfer.cursor.hideCursor();\n\n          // seek on timeline-click\n          this.waveSurfer.timeline.wrapper.addEventListener('mousedown', (e: any) => {\n            this.timelineClicking = true;\n            this.seeekWithTimeline(e);\n          });\n\n          this.waveSurfer.timeline.wrapper.addEventListener('mousemove', (e: any) => {\n            if (this.timelineClicking) {\n              this.seeekWithTimeline(e);\n            }\n          });\n\n          this.waveSurfer.timeline.wrapper.addEventListener('mouseup', (e: any) => {\n            this.timelineClicking = false;\n          });\n\n          this.updateCurrentTime();\n\n          this.detectChanges.next();\n          this.waveSurferReady.next();\n        }, 0);\n      });\n\n      this.waveSurfer.on('error', (error: any) => {\n        // could not load the composition --> delete it\n        // (this may occur, when the composition has been deleted but the project is not saved afterwards)\n        this.deleteSelectedComposition();\n      });\n\n      this.waveSurfer.on('seek', () => {\n        this.updateCurrentTime();\n      });\n\n      this.waveSurfer.on('play', () => {\n        this.startTimeUpdater();\n      });\n\n      this.waveSurfer.on('pause', () => {\n        this.stopTimeUpdater();\n      });\n\n      this.waveSurfer.on('region-created', (region) => {\n        // region created by selection or programmatically\n        if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n          if (!region.data.handled) {\n            this.addRegion(region);\n          }\n        } else {\n          if (!region.data.handled) {\n            region.remove();\n          }\n        }\n      });\n\n      this.waveSurfer.on('region-updated', (region: any) => {\n        this.detectChanges.next();\n        this.presetService.previewLive();\n      });\n    }, 0);\n  }\n\n  private hexToRgb(hex: string) {\n    const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n    return result\n      ? {\n          r: parseInt(result[1], 16),\n          g: parseInt(result[2], 16),\n          b: parseInt(result[3], 16),\n        }\n      : null;\n  }\n\n  private updateRegionSelection() {\n    if (!this.waveSurfer) {\n      return;\n    }\n\n    for (const key of Object.keys(this.waveSurfer.regions.list)) {\n      const region: any = this.waveSurfer.regions.list[key];\n\n      // if no scene is set, the region is not valid (e.g. has been created, while\n      // no scene has been selected and remove did not work properly)\n      if (region.scene) {\n        let intensity = this.intensity;\n\n        region.drag = false;\n        region.resize = false;\n        region.attributes.selectable = false;\n\n        if (this.sceneService.sceneIsSelected(region.scene)) {\n          intensity = this.intensitySelectedScene;\n          region.drag = true;\n          region.resize = true;\n          region.attributes.selectable = true;\n        }\n\n        region.attributes.selected = false;\n\n        if (this.selectedPlaybackRegion && this.selectedPlaybackRegion === region.scenePlaybackRegion) {\n          intensity = this.intensityHighlighted;\n          region.attributes.selected = true;\n        }\n\n        region.color =\n          'rgba(' +\n          this.hexToRgb(region.scene.color).r +\n          ', ' +\n          this.hexToRgb(region.scene.color).g +\n          ', ' +\n          this.hexToRgb(region.scene.color).b +\n          ', ' +\n          intensity +\n          ')';\n        region.updateRender();\n      }\n    }\n  }\n\n  updateSelectedRegion() {\n    if (!this.waveSurfer) {\n      return;\n    }\n\n    if (!this.selectedPlaybackRegion) {\n      return;\n    }\n\n    for (const key of Object.keys(this.waveSurfer.regions.list)) {\n      const region: any = this.waveSurfer.regions.list[key];\n\n      if (this.selectedPlaybackRegion === region.scenePlaybackRegion) {\n        region.start = this.selectedPlaybackRegion.startMillis / 1000;\n        region.end = this.selectedPlaybackRegion.endMillis / 1000;\n        region.updateRender();\n        break;\n      }\n    }\n  }\n\n  private setSelectedRegion(scenePlaybackRegion?: ScenePlaybackRegion) {\n    if (this.selectedPlaybackRegion && this.selectedPlaybackRegion === scenePlaybackRegion) {\n      // No update required\n      return;\n    }\n\n    if (scenePlaybackRegion) {\n      this.selectedPlaybackRegion = scenePlaybackRegion;\n    }\n\n    this.updateRegionSelection();\n  }\n\n  private getRegionSnapToGridValue(value: number): number {\n    // the regions should snap to a grid\n    const offset = this.getSnapToGridOffset() || 0;\n    const interval = this.getSnapToGridInterval() || 0;\n    return Math.round((value - offset) / interval) * interval + offset;\n  }\n\n  private connectRegion(waveSurferRegion: any, scene: Scene, scenePlaybackRegion: ScenePlaybackRegion, preset?: Preset) {\n    waveSurferRegion.scenePlaybackRegion = scenePlaybackRegion;\n    waveSurferRegion.scene = scene;\n    waveSurferRegion.preset = preset;\n\n    waveSurferRegion.on('click', (event) => {\n      if (this.sceneService.sceneIsSelected(scene)) {\n        this.setSelectedRegion(scenePlaybackRegion);\n      }\n    });\n\n    waveSurferRegion.on('update', () => {\n      this.setSelectedRegion(scenePlaybackRegion);\n      if (this.selectedComposition.snapToGrid) {\n        // update the regions boundaries. they may not snap to grid, if it has been\n        // disabled during creation of the region but activated afterwards.\n        waveSurferRegion.start = this.getRegionSnapToGridValue(waveSurferRegion.start);\n        waveSurferRegion.end = this.getRegionSnapToGridValue(waveSurferRegion.end);\n      }\n      scenePlaybackRegion.startMillis = waveSurferRegion.start * 1000;\n      scenePlaybackRegion.endMillis = waveSurferRegion.end * 1000;\n    });\n  }\n\n  private drawRegion(scenePlaybackRegion: ScenePlaybackRegion, scene: Scene) {\n    // draw the regions of the currently selected scene\n    if (!this.isWaveSurferReady()) {\n      return;\n    }\n\n    // add the playback region\n    const waveSurferRegion = this.waveSurfer.addRegion({\n      start: scenePlaybackRegion.startMillis / 1000,\n      end: scenePlaybackRegion.endMillis / 1000,\n      color: '#fff',\n      data: { handled: true },\n    });\n    this.connectRegion(waveSurferRegion, scene, scenePlaybackRegion);\n\n    // TODO show the all presets\n    // for (let presetUuid of scene.presetUuids) {\n    //   const preset = this.presetService.getPresetByUuid(presetUuid);\n\n    //   let waveSurferRegion = this.timelineService.waveSurfer.addRegion({\n    //     start: (scenePlaybackRegion.startMillis + (preset.startMillis ? preset.startMillis : 0)) / 1000,\n    //     end: (scenePlaybackRegion.startMillis\n    //       + (preset.endMillis ? preset.endMillis : scenePlaybackRegion.endMillis - scenePlaybackRegion.startMillis)) / 1000,\n    //     color: '#fff',\n    //     data: { handled: true },\n    //     // TODO\n    //     attributes: {\n    //       preset: true,\n    //       name: 'Preset 1'\n    //     }\n    //   });\n    //   this.connectRegion(waveSurferRegion, scene, scenePlaybackRegion, preset);\n    // }\n\n    this.updateRegionSelection();\n  }\n\n  removeRegion() {\n    if (!this.selectedPlaybackRegion) {\n      return;\n    }\n\n    if (this.sceneService.selectedScenes.length !== 1) {\n      return;\n    }\n\n    for (let i = 0; i < this.selectedComposition.scenePlaybackRegions.length; i++) {\n      if (this.selectedComposition.scenePlaybackRegions[i] === this.selectedPlaybackRegion) {\n        // remove the region from wavesurfer\n        for (const key of Object.keys(this.waveSurfer.regions.list)) {\n          const region: any = this.waveSurfer.regions.list[key];\n\n          if (region.scenePlaybackRegion === this.selectedPlaybackRegion) {\n            region.remove();\n          }\n        }\n\n        this.selectedPlaybackRegion = undefined;\n        this.selectedComposition.scenePlaybackRegions.splice(i, 1);\n\n        return;\n      }\n    }\n\n    this.presetService.previewLive();\n  }\n\n  getPresetsInTime(timeMillis: number): PresetRegionScene[] {\n    // Return all presets which should be active during the specified time\n    const activePresets: PresetRegionScene[] = [];\n\n    for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n      const scene = this.projectService.project.scenes[sceneIndex];\n\n      for (const region of this.selectedComposition.scenePlaybackRegions) {\n        if (region.sceneUuid === scene.uuid) {\n          for (let presetIndex = this.projectService.project.presets.length - 1; presetIndex >= 0; presetIndex--) {\n            for (const presetUuid of scene.presetUuids) {\n              if (presetUuid === this.projectService.project.presets[presetIndex].uuid) {\n                const preset = this.presetService.getPresetByUuid(presetUuid);\n\n                if (preset) {\n                  let presetStartMillis = preset.startMillis === undefined ? region.startMillis : region.startMillis + preset.startMillis;\n                  let presetEndMillis = preset.endMillis === undefined ? region.endMillis : region.startMillis + preset.endMillis;\n\n                  // extend the running time, if fading is done outside the boundaries\n                  presetStartMillis -= preset.fadeInPre ? preset.fadeInMillis : 0;\n                  presetEndMillis += preset.fadeOutPost ? preset.fadeOutMillis : 0;\n\n                  if (presetStartMillis <= timeMillis && presetEndMillis >= timeMillis) {\n                    activePresets.push(new PresetRegionScene(preset, region, scene));\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return activePresets;\n  }\n\n  drawAllRegions() {\n    if (!this.selectedComposition) {\n      return;\n    }\n\n    // draw the regions in the same order as their corresponding scenes, but draw\n    // the selected ones last, to make sure they're always clickable.\n    for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n      const scene = this.projectService.project.scenes[sceneIndex];\n      if (!this.sceneService.sceneIsSelected(scene)) {\n        for (const scenePlaybackRegion of this.selectedComposition.scenePlaybackRegions) {\n          if (scenePlaybackRegion.sceneUuid === scene.uuid) {\n            this.drawRegion(scenePlaybackRegion, scene);\n          }\n        }\n      }\n    }\n\n    // draw all selected scenes afterwards\n    for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n      const scene = this.projectService.project.scenes[sceneIndex];\n\n      if (this.sceneService.sceneIsSelected(scene)) {\n        for (const scenePlaybackRegion of this.selectedComposition.scenePlaybackRegions) {\n          if (scenePlaybackRegion.sceneUuid === scene.uuid) {\n            this.drawRegion(scenePlaybackRegion, scene);\n          }\n        }\n      }\n    }\n  }\n\n  updateGrid() {\n    if (this.waveSurferReady) {\n      this.waveSurfer.timeline.params.offset = this.getSnapToGridOffset();\n\n      this.waveSurfer.regions.params.snapToGridInterval = this.getSnapToGridInterval();\n      this.waveSurfer.regions.params.snapToGridOffset = this.getSnapToGridOffset();\n    }\n    this.updateCurrentTime();\n  }\n\n  getExternalCompositionNames(): Observable<string[]> {\n    // get available compositions from an external pool (e.g. Rocket Show)\n    return this.http.get('composition/list').pipe(\n      map((response: object[]) => {\n        const compositionNames: string[] = [];\n\n        for (const responseComposition of response) {\n          compositionNames.push((responseComposition as any).name);\n        }\n\n        return compositionNames;\n      })\n    );\n  }\n\n  selectCompositionIndex(index: number) {\n    this.selectedComposition = this.projectService.project.compositions[index];\n    this.selectedCompositionIndex = index;\n    this.projectService.project.selectedCompositionUuid = this.selectedComposition.uuid;\n    this.createWaveSurfer();\n\n    // required to trigger timeline.component.resize()\n    this.waveSurferReady.next();\n\n    this.applyZoom(0);\n  }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as THREE from 'three';\nimport { CachedFixture } from '../models/cached-fixture';\nimport { EffectCurve } from '../models/effect-curve';\nimport { FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureChannelValue } from '../models/fixture-channel-value';\nimport { Preset } from '../models/preset';\nimport { PresetRegionScene } from '../models/preset-region-scene';\nimport { FixtureService } from './fixture.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\nimport { TimelineService } from './timeline.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PreviewService implements OnDestroy {\n  public doUpdateFixtureSetup: Subject<void> = new Subject();\n\n  public scene: THREE.Scene;\n\n  private stageMeshes: THREE.Mesh[] = [];\n  private stageMaterial: THREE.MeshStandardMaterial;\n  fixtureMaterial: THREE.MeshStandardMaterial;\n  fixtureSelectedMaterial: THREE.MeshLambertMaterial;\n\n  constructor(\n    private presetService: PresetService,\n    private fixtureService: FixtureService,\n    private sceneService: SceneService,\n    private timelineService: TimelineService,\n    private projectService: ProjectService\n  ) {\n    this.stageMaterial = new THREE.MeshStandardMaterial({\n      color: 0x0d0d0d,\n      // roughness: 0.5,\n      // metalness: 0.5,\n    });\n    this.fixtureMaterial = new THREE.MeshLambertMaterial({\n      color: 0x0d0d0d,\n      emissive: 0x0d0d0d,\n    });\n    this.fixtureSelectedMaterial = new THREE.MeshLambertMaterial({\n      color: 0xff00ff,\n      emissive: 0xff00ff,\n    });\n  }\n\n  private getAlreadyCalculatedFixture(fixtures: CachedFixture[], fixtureIndex: number): CachedFixture {\n    // Has this fixture already been calculated (same universe and dmx start address as a fixture before)\n    // --> return it\n    for (let i = 0; i < fixtureIndex; i++) {\n      const calculatedFixture = fixtures[i];\n\n      if (\n        calculatedFixture.fixture.dmxUniverseUuid === fixtures[fixtureIndex].fixture.dmxUniverseUuid &&\n        calculatedFixture.fixture.dmxFirstChannel === fixtures[fixtureIndex].fixture.dmxFirstChannel\n      ) {\n        return calculatedFixture;\n      }\n    }\n\n    return undefined;\n  }\n\n  public getPresets(timeMillis: number): PresetRegionScene[] {\n    // Get relevant presets in correct order to process with their corresponding scene, if available\n    let presets: PresetRegionScene[] = [];\n\n    if (this.timelineService.playState === 'playing') {\n      // Only use active presets in current regions\n      presets = this.timelineService.getPresetsInTime(timeMillis);\n    } else {\n      if (this.projectService.project.previewPreset) {\n        // Only preview the selected preset\n        if (this.presetService.selectedPreset) {\n          presets.push(new PresetRegionScene(this.presetService.selectedPreset, undefined, undefined));\n        }\n      } else {\n        // Preview the selected scenes\n        for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n          for (const scene of this.sceneService.selectedScenes) {\n            if (scene.uuid === this.projectService.project.scenes[sceneIndex].uuid) {\n              for (let presetIndex = this.projectService.project.presets.length - 1; presetIndex >= 0; presetIndex--) {\n                for (const presetUuid of scene.presetUuids) {\n                  // Loop over the presets in the preset service to retain the preset order\n                  if (presetUuid === this.projectService.project.presets[presetIndex].uuid) {\n                    presets.push(new PresetRegionScene(this.projectService.project.presets[presetIndex], undefined, scene));\n                    break;\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return presets;\n  }\n\n  private mixChannelValue(\n    existingChannelValues: FixtureChannelValue[],\n    channelValue: FixtureChannelValue,\n    intensityPercentage: number,\n    defaultValue: number = 0\n  ) {\n    let newValue: number = channelValue.value;\n    let existingValue: number = defaultValue;\n\n    if (intensityPercentage < 1) {\n      // We need to mix a possibly existing value (or the default value 0) with the new value (fading)\n\n      // Get the existent value for this property\n      for (const existingChannelValue of existingChannelValues) {\n        if (\n          existingChannelValue.channelName === channelValue.channelName &&\n          existingChannelValue.profileUuid === channelValue.profileUuid\n        ) {\n          existingValue = existingChannelValue.value;\n          break;\n        }\n      }\n\n      // Mix the existing value with the new value\n      newValue = existingValue * (1 - intensityPercentage) + newValue * intensityPercentage;\n    }\n\n    // Remove the existent value, if available\n    for (let i = 0; i < existingChannelValues.length; i++) {\n      if (\n        existingChannelValues[i].channelName === channelValue.channelName &&\n        existingChannelValues[i].profileUuid === channelValue.profileUuid\n      ) {\n        existingChannelValues.splice(i, 1);\n        break;\n      }\n    }\n\n    // Add the new value\n    const fixtureChannelValue = new FixtureChannelValue();\n    fixtureChannelValue.channelName = channelValue.channelName;\n    fixtureChannelValue.profileUuid = channelValue.profileUuid;\n    fixtureChannelValue.value = newValue;\n    existingChannelValues.push(fixtureChannelValue);\n  }\n\n  // Get the fixture index inside the passed preset (used for chasing)\n  private getFixtureIndex(preset: Preset, fixtureUuid: string, pixelKey: string): number {\n    let index = 0;\n    const countedFirstDmxChannelPixelKey: any[] = [];\n\n    if (!this.presetService.getPresetFixture(preset, fixtureUuid, pixelKey)) {\n      // fixture is not in preset\n      return undefined;\n    }\n\n    // Loop over the global fixtures to retain the order\n    for (const projectFixture of this.projectService.project.presetFixtures) {\n      for (const presetFixture of preset.fixtures) {\n        if (\n          this.presetService.fixtureUuidAndPixelKeyEquals(\n            projectFixture.fixtureUuid,\n            presetFixture.fixtureUuid,\n            projectFixture.pixelKey,\n            presetFixture.pixelKey\n          )\n        ) {\n          if (this.presetService.fixtureUuidAndPixelKeyEquals(projectFixture.fixtureUuid, fixtureUuid, projectFixture.pixelKey, pixelKey)) {\n            return index;\n          }\n\n          const fixture = this.fixtureService.getFixtureByUuid(projectFixture.fixtureUuid);\n          const firstDmxChannelAndFixtureUuid = {\n            firstDmxChannel: fixture.dmxFirstChannel,\n            pixelKey: projectFixture.pixelKey,\n          };\n\n          const exists = countedFirstDmxChannelPixelKey.some(\n            (item) =>\n              item.firstDmxChannel === firstDmxChannelAndFixtureUuid.firstDmxChannel &&\n              ((!item.pixelKey && !firstDmxChannelAndFixtureUuid.pixelKey) || item.pixelKey === firstDmxChannelAndFixtureUuid.pixelKey)\n          );\n\n          // don't count fixtures on the same channel as already counted ones\n          if (!exists) {\n            index++;\n            countedFirstDmxChannelPixelKey.push(firstDmxChannelAndFixtureUuid);\n          }\n\n          break;\n        }\n      }\n    }\n\n    return undefined;\n  }\n\n  private getPresetIntensity(preset: PresetRegionScene, timeMillis: number): number {\n    // When fading is in progress (on preset or scene-level), the current preset does not\n    // fully cover underlying values.\n    // -> 0 = no covering at all, 1 = fully cover (no fading)\n    let intensityPercentageScene = 1;\n    let intensityPercentagePreset = 1;\n    let intensityPercentage = 1;\n\n    if (preset.region && preset.scene) {\n      // Fade out is stronger than fade in (if they overlap)\n\n      // Take away intensity for scene fading\n      const sceneStartMillis = preset.scene.fadeInPre ? preset.region.startMillis - preset.scene.fadeInMillis : preset.region.startMillis;\n      const sceneEndMillis = preset.scene.fadeOutPost ? preset.region.endMillis + preset.scene.fadeOutMillis : preset.region.endMillis;\n\n      if (timeMillis > sceneEndMillis - preset.scene.fadeOutMillis && timeMillis < sceneEndMillis) {\n        // Scene fades out\n        intensityPercentageScene = (sceneEndMillis - timeMillis) / preset.scene.fadeOutMillis;\n      } else if (timeMillis < sceneStartMillis + preset.scene.fadeInMillis && timeMillis > sceneStartMillis) {\n        // Scene fades in\n        intensityPercentageScene = (timeMillis - sceneStartMillis) / preset.scene.fadeInMillis;\n      }\n    }\n\n    if (preset.region && preset.preset) {\n      // Take away intensity for preset fading\n      let presetStartMillis =\n        preset.preset.startMillis === undefined ? preset.region.startMillis : preset.region.startMillis + preset.preset.startMillis;\n\n      let presetEndMillis =\n        preset.preset.endMillis === undefined ? preset.region.endMillis : preset.region.startMillis + preset.preset.endMillis;\n\n      // extend the running time, if fading is done outside the boundaries\n      presetStartMillis -= preset.preset.fadeInPre ? preset.preset.fadeInMillis : 0;\n      presetEndMillis += preset.preset.fadeOutPost ? preset.preset.fadeOutMillis : 0;\n\n      if (timeMillis > presetEndMillis - preset.preset.fadeOutMillis && timeMillis < presetEndMillis) {\n        // Preset fades out\n        intensityPercentagePreset = (presetEndMillis - timeMillis) / preset.preset.fadeOutMillis;\n      } else if (timeMillis < presetStartMillis + preset.preset.fadeInMillis && timeMillis > presetStartMillis) {\n        // Preset fades in\n        intensityPercentagePreset = (timeMillis - presetStartMillis) / preset.preset.fadeInMillis;\n      }\n\n      intensityPercentage = intensityPercentageScene * intensityPercentagePreset;\n    }\n\n    return intensityPercentage;\n  }\n\n  private mixCapabilityValues(\n    preset: PresetRegionScene,\n    cachedFixture: CachedFixture,\n    values: FixtureChannelValue[],\n    intensityPercentage: number\n  ) {\n    let hasColor = false;\n\n    // mix the preset capability values\n    for (const presetCapabilityValue of preset.preset.fixtureCapabilityValues) {\n      for (const cachedChannel of cachedFixture.channels) {\n        if (cachedChannel.channel) {\n          for (const channelCapability of cachedChannel.capabilities) {\n            if (\n              this.fixtureService.capabilitiesMatch(\n                presetCapabilityValue.type,\n                channelCapability.capability.type,\n                presetCapabilityValue.color,\n                channelCapability.capability.color,\n                presetCapabilityValue.wheel,\n                channelCapability.wheelName,\n                presetCapabilityValue.profileUuid,\n                cachedFixture.profile.uuid\n              )\n            ) {\n              // the capabilities match -> apply the value, if possible\n              if (\n                (presetCapabilityValue.type === FixtureCapabilityType.Intensity ||\n                  presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) &&\n                presetCapabilityValue.valuePercentage >= 0\n              ) {\n                // intensity and colorIntensity (dimmer and color)\n                const valuePercentage = presetCapabilityValue.valuePercentage;\n                const defaultValue = 0;\n\n                // brightness property\n                if (cachedChannel.capabilities.length === 1) {\n                  // the only capability in this channel\n                  const fixtureChannelValue = new FixtureChannelValue();\n                  fixtureChannelValue.channelName = cachedChannel.name;\n                  fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n                  fixtureChannelValue.value = cachedChannel.maxValue * valuePercentage;\n                  this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n                  if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n                    hasColor = true;\n                  }\n                } else {\n                  // more than one capability in the channel\n                  if (channelCapability.capability.brightness === 'off' && valuePercentage === 0) {\n                    const fixtureChannelValue = new FixtureChannelValue();\n                    fixtureChannelValue.channelName = cachedChannel.name;\n                    fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n                    fixtureChannelValue.value = channelCapability.centerValue;\n                    this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n                    if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n                      hasColor = true;\n                    }\n                  } else if (\n                    (channelCapability.capability.brightnessStart === 'dark' || channelCapability.capability.brightnessStart === 'off') &&\n                    channelCapability.capability.brightnessEnd === 'bright'\n                  ) {\n                    const value =\n                      (channelCapability.capability.dmxRange[1] - channelCapability.capability.dmxRange[0]) * valuePercentage +\n                      channelCapability.capability.dmxRange[0];\n\n                    const fixtureChannelValue = new FixtureChannelValue();\n                    fixtureChannelValue.channelName = cachedChannel.name;\n                    fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n                    fixtureChannelValue.value = value;\n                    this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n                    if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n                      hasColor = true;\n                    }\n                  }\n                }\n              } else if (\n                (presetCapabilityValue.type === FixtureCapabilityType.Pan || presetCapabilityValue.type === FixtureCapabilityType.Tilt) &&\n                presetCapabilityValue.valuePercentage >= 0\n              ) {\n                const fixtureChannelValue = new FixtureChannelValue();\n                fixtureChannelValue.channelName = cachedChannel.name;\n                fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n                fixtureChannelValue.value = cachedChannel.maxValue * presetCapabilityValue.valuePercentage;\n                this.mixChannelValue(values, fixtureChannelValue, 1);\n              } else if (\n                presetCapabilityValue.type === FixtureCapabilityType.WheelSlot &&\n                channelCapability.capability.slotNumber === presetCapabilityValue.slotNumber\n              ) {\n                // wheel slot (color, gobo, etc.)\n                const fixtureChannelValue = new FixtureChannelValue();\n                fixtureChannelValue.channelName = cachedChannel.name;\n                fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n                fixtureChannelValue.value = channelCapability.centerValue;\n                this.mixChannelValue(values, fixtureChannelValue, 1);\n\n                // check, whether we just set a color wheel value\n                if (channelCapability.wheelIsColor) {\n                  hasColor = true;\n                }\n              }\n            }\n          }\n        }\n\n        // approximate the color from a color or a different color wheel, if necessary\n        if (!hasColor && cachedChannel.colorWheel) {\n          const capability = this.presetService.getApproximatedColorWheelCapability(preset.preset, cachedChannel);\n\n          if (capability) {\n            // we found an approximated color in the available wheel channel\n            const fixtureChannelValue = new FixtureChannelValue();\n            fixtureChannelValue.channelName = cachedChannel.name;\n            fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n            fixtureChannelValue.value = capability.centerValue;\n            this.mixChannelValue(values, fixtureChannelValue, 1);\n          }\n        }\n      }\n    }\n  }\n\n  private mixChannelValues(\n    preset: PresetRegionScene,\n    cachedFixture: CachedFixture,\n    values: FixtureChannelValue[],\n    intensityPercentage: number\n  ) {\n    // mix the preset channel values\n    for (const cachedChannel of cachedFixture.channels) {\n      if (cachedChannel.channel) {\n        for (const channelValue of preset.preset.fixtureChannelValues) {\n          if (cachedFixture.profile.uuid === channelValue.profileUuid && cachedChannel.name === channelValue.channelName) {\n            this.mixChannelValue(values, channelValue, intensityPercentage);\n          }\n        }\n      }\n    }\n  }\n\n  private mixEffects(\n    timeMillis: number,\n    fixtureIndex: number,\n    preset: PresetRegionScene,\n    cachedFixture: CachedFixture,\n    values: FixtureChannelValue[],\n    intensityPercentage: number\n  ) {\n    let effectTimeMillis = timeMillis;\n\n    if (preset.region) {\n      effectTimeMillis = timeMillis - preset.region.startMillis;\n    }\n\n    for (const effect of preset.preset.effects) {\n      if (effect.visible) {\n        // EffectCurve\n        if (effect instanceof EffectCurve) {\n          const effectCurve = effect as EffectCurve;\n\n          // capabilities\n          for (const capability of effectCurve.capabilities) {\n            for (const cachedChannel of cachedFixture.channels) {\n              for (const channelCapability of cachedChannel.capabilities) {\n                if (\n                  this.fixtureService.capabilitiesMatch(\n                    capability.type,\n                    channelCapability.capability.type,\n                    capability.color,\n                    channelCapability.capability.color,\n                    null,\n                    null,\n                    null,\n                    null\n                  )\n                ) {\n                  const fixtureChannelValue = new FixtureChannelValue();\n                  fixtureChannelValue.channelName = cachedChannel.name;\n                  fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n                  fixtureChannelValue.value = cachedChannel.maxValue * effectCurve.getValueAtMillis(effectTimeMillis, fixtureIndex);\n                  this.mixChannelValue(values, fixtureChannelValue, intensityPercentage);\n                }\n              }\n            }\n          }\n\n          // channels\n          for (const channelProfile of effectCurve.channels) {\n            if (channelProfile.profileUuid === cachedFixture.profile.uuid) {\n              for (const channel of channelProfile.channels) {\n                for (const cachedChannel of cachedFixture.channels) {\n                  if (cachedChannel.name === channel) {\n                    const fixtureChannelValue = new FixtureChannelValue();\n                    fixtureChannelValue.channelName = cachedChannel.name;\n                    fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n                    fixtureChannelValue.value = cachedChannel.maxValue * effectCurve.getValueAtMillis(effectTimeMillis, fixtureIndex);\n                    this.mixChannelValue(values, fixtureChannelValue, intensityPercentage);\n                  }\n                }\n              }\n\n              break;\n            }\n          }\n        }\n\n        // TODO other effects (PanTilt, etc.)\n      }\n    }\n  }\n\n  // return all fixture uuids with their corresponding channel values\n  public getChannelValues(timeMillis: number, presets: PresetRegionScene[]): Map<CachedFixture, FixtureChannelValue[]> {\n    // Loop over all relevant presets and calc the property values from the presets (capabilities, channels and effects)\n    const calculatedFixtures = new Map<CachedFixture, FixtureChannelValue[]>();\n\n    for (let i = 0; i < this.fixtureService.cachedFixtures.length; i++) {\n      const cachedFixture = this.fixtureService.cachedFixtures[i];\n\n      // all values of the current fixture channels\n      let values: FixtureChannelValue[] = [];\n\n      const alreadyCalculatedFixture = this.getAlreadyCalculatedFixture(this.fixtureService.cachedFixtures, i);\n\n      if (alreadyCalculatedFixture) {\n        // only relevant for the preview --> reuse all calculated values\n        values = Object.assign([], calculatedFixtures.get(alreadyCalculatedFixture));\n      } else {\n        // apply the default values\n        for (const cachedChannel of cachedFixture.channels) {\n          if (cachedChannel.channel) {\n            if (cachedChannel.channel.defaultValue) {\n              const fixtureChannelValue = new FixtureChannelValue();\n              fixtureChannelValue.channelName = cachedChannel.name;\n              fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n              fixtureChannelValue.value = cachedChannel.defaultValue;\n              this.mixChannelValue(values, fixtureChannelValue, 1);\n            }\n          }\n        }\n\n        for (const preset of presets) {\n          // search for this fixture in the preset and get it's preset-specific index (for chasing effects)\n          const fixtureIndex = this.getFixtureIndex(preset.preset, cachedFixture.fixture.uuid, cachedFixture.pixelKey);\n\n          if (fixtureIndex >= 0) {\n            // this fixture is also in the preset -> mix the required values (overwrite existing values,\n            // if set multiple times)\n            const intensityPercentage = this.getPresetIntensity(preset, timeMillis);\n\n            this.mixCapabilityValues(preset, cachedFixture, values, intensityPercentage);\n            this.mixChannelValues(preset, cachedFixture, values, intensityPercentage);\n            this.mixEffects(timeMillis, fixtureIndex, preset, cachedFixture, values, intensityPercentage);\n          }\n        }\n      }\n\n      // Store the calculated values for subsequent fixtures on the same DMX address\n      calculatedFixtures.set(cachedFixture, values);\n    }\n\n    return calculatedFixtures;\n  }\n\n  public fixtureIsSelected(uuid: string, pixelKey: string, presets: PresetRegionScene[]): boolean {\n    for (const preset of presets) {\n      if (this.presetService.getPresetFixture(preset.preset, uuid, pixelKey)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  public updateFixtureSetup() {\n    this.doUpdateFixtureSetup.next();\n  }\n\n  private prepareStageMesh(mesh: THREE.Mesh) {\n    mesh.receiveShadow = false;\n    mesh.castShadow = false;\n  }\n\n  public updateStage() {\n    if (!this.scene) {\n      return;\n    }\n\n    let geometry: any;\n    let mesh: any;\n\n    // Remove old meshes from the scene\n    for (const existingMesh of this.stageMeshes) {\n      this.scene.remove(existingMesh);\n      existingMesh.geometry.dispose();\n    }\n    this.stageMeshes = [];\n\n    // Ground\n    geometry = new THREE.PlaneGeometry(5000, 5000);\n    mesh = new THREE.Mesh(geometry, this.stageMaterial);\n    this.prepareStageMesh(mesh);\n    mesh.position.set(0, 0, 0);\n    mesh.rotateX((Math.PI / 180) * -90);\n    this.scene.add(mesh);\n    this.stageMeshes.push(mesh);\n\n    // Floor\n    geometry = new THREE.BoxGeometry(\n      this.projectService.project.stageWidthCm,\n      this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageDepthCm\n    );\n    mesh = new THREE.Mesh(geometry, this.stageMaterial);\n    this.prepareStageMesh(mesh);\n    mesh.position.set(0, this.projectService.project.stageFloorHeightCm / 2, 0);\n    this.scene.add(mesh);\n    this.stageMeshes.push(mesh);\n\n    // Pillar front left\n    geometry = new THREE.BoxGeometry(\n      this.projectService.project.stagePillarWidthCm,\n      this.projectService.project.stageHeightCm,\n      this.projectService.project.stagePillarWidthCm\n    );\n    mesh = new THREE.Mesh(geometry, this.stageMaterial);\n    this.prepareStageMesh(mesh);\n    mesh.position.set(\n      -this.projectService.project.stageWidthCm / 2 + this.projectService.project.stagePillarWidthCm / 2,\n      this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageDepthCm / 2 - this.projectService.project.stagePillarWidthCm / 2\n    );\n    this.scene.add(mesh);\n    this.stageMeshes.push(mesh);\n\n    // Pillar front right\n    geometry = new THREE.BoxGeometry(\n      this.projectService.project.stagePillarWidthCm,\n      this.projectService.project.stageHeightCm,\n      this.projectService.project.stagePillarWidthCm\n    );\n    mesh = new THREE.Mesh(geometry, this.stageMaterial);\n    this.prepareStageMesh(mesh);\n    mesh.position.set(\n      this.projectService.project.stageWidthCm / 2 - this.projectService.project.stagePillarWidthCm / 2,\n      this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageDepthCm / 2 - this.projectService.project.stagePillarWidthCm / 2\n    );\n    this.scene.add(mesh);\n    this.stageMeshes.push(mesh);\n\n    // Pillar back left\n    geometry = new THREE.BoxGeometry(\n      this.projectService.project.stagePillarWidthCm,\n      this.projectService.project.stageHeightCm,\n      this.projectService.project.stagePillarWidthCm\n    );\n    mesh = new THREE.Mesh(geometry, this.stageMaterial);\n    this.prepareStageMesh(mesh);\n    mesh.position.set(\n      -this.projectService.project.stageWidthCm / 2 + this.projectService.project.stagePillarWidthCm / 2,\n      this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n      -this.projectService.project.stageDepthCm / 2 + this.projectService.project.stagePillarWidthCm / 2\n    );\n    this.scene.add(mesh);\n    this.stageMeshes.push(mesh);\n\n    // Pillar back right\n    geometry = new THREE.BoxGeometry(\n      this.projectService.project.stagePillarWidthCm,\n      this.projectService.project.stageHeightCm,\n      this.projectService.project.stagePillarWidthCm\n    );\n    mesh = new THREE.Mesh(geometry, this.stageMaterial);\n    this.prepareStageMesh(mesh);\n    mesh.position.set(\n      this.projectService.project.stageWidthCm / 2 - this.projectService.project.stagePillarWidthCm / 2,\n      this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n      -this.projectService.project.stageDepthCm / 2 + this.projectService.project.stagePillarWidthCm / 2\n    );\n    this.scene.add(mesh);\n    this.stageMeshes.push(mesh);\n\n    // Ceiling\n    geometry = new THREE.BoxGeometry(\n      this.projectService.project.stageWidthCm,\n      this.projectService.project.stageCeilingHeightCm,\n      this.projectService.project.stageDepthCm\n    );\n    mesh = new THREE.Mesh(geometry, this.stageMaterial);\n    this.prepareStageMesh(mesh);\n    mesh.position.set(\n      0,\n      this.projectService.project.stageHeightCm +\n        this.projectService.project.stageCeilingHeightCm / 2 +\n        this.projectService.project.stageFloorHeightCm,\n      0\n    );\n    this.scene.add(mesh);\n    this.stageMeshes.push(mesh);\n  }\n\n  ngOnDestroy() {\n    this.fixtureMaterial.dispose();\n    this.fixtureSelectedMaterial.dispose();\n  }\n}\n","import * as THREE from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { CachedFixtureCapability } from '../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { Positioning } from '../../models/fixture';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PreviewService } from '../../services/preview.service';\n\nexport abstract class Fixture3d {\n  private readonly pointLightMaxIntensity: number = 2;\n  private readonly spotLightLightMaxIntensity: number = 10;\n\n  protected scene: any;\n\n  public fixture: CachedFixture;\n  private fixtureHasDimmer = false;\n  private fixtureHasColorWheel = false;\n  private fixtureHasColor = false;\n\n  private colorRed: number;\n  private colorGreen: number;\n  private colorBlue: number;\n  private dimmer: number = 0;\n\n  protected lastSelected: boolean;\n  public isSelected = false;\n  protected isLoaded = false;\n\n  protected hasSpotLight: boolean = false;\n  protected spotLight: THREE.SpotLight;\n  protected spotLightBeam: THREE.Mesh;\n  protected spotlightGroup: THREE.Object3D;\n  protected spotlightMaterial: THREE.ShaderMaterial;\n\n  constructor(\n    public fixtureService: FixtureService,\n    public previewService: PreviewService,\n    fixture: CachedFixture,\n    scene: any,\n    hasSpotLight: boolean = false\n  ) {\n    this.fixture = fixture;\n    this.scene = scene;\n    this.hasSpotLight = hasSpotLight;\n\n    // evaluate, various capabilities of this fixture\n    for (const cachedChannel of this.fixture.channels) {\n      if (cachedChannel.channel) {\n        for (const capability of cachedChannel.capabilities) {\n          switch (capability.capability.type) {\n            case FixtureCapabilityType.Intensity:\n              this.fixtureHasDimmer = true;\n              break;\n            case FixtureCapabilityType.ColorIntensity:\n              this.fixtureHasColor = true;\n              break;\n          }\n        }\n\n        if (cachedChannel.colorWheel) {\n          this.fixtureHasColorWheel = true;\n        }\n      }\n    }\n  }\n\n  private createSpotlightMaterial() {\n    const vertexShader = `\n    varying vec3 vNormal;\n    varying vec3 vWorldPosition;\n\n    void main(){\n      vNormal = normalize(normalMatrix * normal);\n\n      vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n      vWorldPosition = worldPosition.xyz;\n\n      gl_Position\t= projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n    }`;\n    const fragmentShader = `\n    varying vec3 vNormal;\n    varying vec3 vWorldPosition;\n\n    uniform vec3 lightColor;\n    uniform float\topacity;\n    uniform vec3 spotPosition;\n    uniform float attenuation;\n    uniform float\tanglePower;\n\n    void main(){\n      float intensity;\n\n      intensity\t= distance(vWorldPosition, spotPosition) / attenuation;\n      intensity\t= 1.0 - clamp(intensity, 0.0, 1.0);\n\n      vec3 normal\t= vec3(vNormal.x, vNormal.y, abs(vNormal.z));\n      float angleIntensity\t= pow(dot(normal, vec3(0.0, 0.0, 1.0)), anglePower);\n      intensity\t= intensity * angleIntensity * opacity;\n\n      gl_FragColor\t= vec4(lightColor, intensity);\n    }`;\n\n    this.spotlightMaterial = new THREE.ShaderMaterial({\n      uniforms: {\n        attenuation: {\n          type: 'f',\n          value: 800.0,\n        },\n        anglePower: {\n          type: 'f',\n          value: 2,\n        },\n        spotPosition: {\n          type: 'v3',\n          value: new THREE.Vector3(0, 0, 0),\n        },\n        lightColor: {\n          type: 'c',\n          value: new THREE.Color('white'),\n        },\n        opacity: {\n          type: 'f',\n          value: 1.0,\n        },\n      },\n      vertexShader,\n      fragmentShader,\n      transparent: true,\n      depthWrite: false,\n    });\n  }\n\n  protected createObjects() {\n    if (this.hasSpotLight) {\n      this.createSpotlightMaterial();\n\n      this.spotLight = new THREE.SpotLight(0xffffff, 50000);\n      this.spotLight.angle = 2;\n      this.spotLight.penumbra = 1;\n      this.spotLight.decay = 0.01;\n      this.spotLight.distance = 0;\n      this.spotLight.intensity = 1;\n\n      const spotLightTarget = new THREE.Object3D();\n      this.spotLight.target = spotLightTarget;\n\n      this.spotlightGroup = new THREE.Object3D();\n      this.spotlightGroup.add(this.spotLight);\n      this.spotlightGroup.add(spotLightTarget);\n      this.spotLight.position.set(0, -1.4, 0);\n      spotLightTarget.position.set(0, -10, 0);\n      this.createSpotLightBeam();\n    }\n  }\n\n  protected getCapabilityInValue(channel: CachedFixtureChannel, value: number): CachedFixtureCapability {\n    for (const capability of channel.capabilities) {\n      if (\n        capability.capability.dmxRange.length === 0 ||\n        (value >= capability.capability.dmxRange[0] && value <= capability.capability.dmxRange[1])\n      ) {\n        return capability;\n      }\n    }\n\n    return undefined;\n  }\n\n  // Apply the properties of the base fixture to the preview\n  updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number) {\n    // Apply default settings\n    if (this.fixtureHasDimmer) {\n      this.dimmer = 0;\n    } else {\n      this.dimmer = 1;\n    }\n\n    this.colorRed = 255;\n    this.colorGreen = 255;\n    this.colorBlue = 255;\n\n    if (!this.fixtureHasColorWheel && this.fixtureHasColor) {\n      this.colorRed = 0;\n      this.colorGreen = 0;\n      this.colorBlue = 0;\n    }\n\n    for (const channelValue of channelValues) {\n      const channel = this.fixtureService.getChannelByName(this.fixture, channelValue.channelName);\n      const capability = this.getCapabilityInValue(channel, channelValue.value);\n\n      if (capability) {\n        switch (capability.capability.type) {\n          case FixtureCapabilityType.Intensity: {\n            let valuePercentage: number;\n            if (capability.capability.dmxRange.length > 0) {\n              valuePercentage =\n                (channelValue.value - capability.capability.dmxRange[0]) /\n                (capability.capability.dmxRange[1] - capability.capability.dmxRange[0]);\n            } else {\n              valuePercentage = channelValue.value / channel.maxValue;\n            }\n            this.dimmer = valuePercentage * masterDimmerValue;\n            break;\n          }\n          case FixtureCapabilityType.ColorIntensity: {\n            const valuePercentage = (255 * channelValue.value) / channel.maxValue;\n            switch (capability.capability.color) {\n              case FixtureCapabilityColor.Red:\n                // Round needed for threejs\n                this.colorRed = Math.round(valuePercentage);\n                break;\n              case FixtureCapabilityColor.Green:\n                // Round needed for threejs\n                this.colorGreen = Math.round(valuePercentage);\n                break;\n              case FixtureCapabilityColor.Blue:\n                // Round needed for threejs\n                this.colorBlue = Math.round(valuePercentage);\n                break;\n            }\n            break;\n          }\n          case FixtureCapabilityType.WheelSlot: {\n            const mixedColor = this.fixtureService.getMixedWheelSlotColor(capability.wheel, capability.capability.slotNumber);\n            if (mixedColor) {\n              this.colorRed = Math.round(mixedColor.red);\n              this.colorGreen = Math.round(mixedColor.green);\n              this.colorBlue = Math.round(mixedColor.blue);\n            }\n            break;\n          }\n        }\n      }\n    }\n\n    // Apply the colors and intensities\n    // Apply the dimmer value\n    // Take the color into account for the beam (don't show a black beam)\n    const color = new THREE.Color('rgb(' + this.colorRed + ', ' + this.colorGreen + ', ' + this.colorBlue + ')');\n    const intensityColor = Math.max(this.colorRed, this.colorGreen, this.colorBlue);\n\n    if (this.hasSpotLight) {\n      this.spotLight.color = color;\n      this.spotLightBeam.material.uniforms.lightColor.value = color;\n\n      this.spotLightBeam.material.uniforms.opacity.value = Math.min(intensityColor, this.dimmer);\n      this.spotLight.intensity = this.spotLightLightMaxIntensity * this.dimmer;\n      this.spotLightBeam.material.uniforms.spotPosition.value = this.spotlightGroup.position;\n    }\n  }\n\n  protected updatePosition(object: THREE.Object3D) {\n    // Update the position\n    switch (this.fixture.fixture.positioning) {\n      case Positioning.topFront: {\n        object.rotation.x = THREE.MathUtils.degToRad(0);\n        object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY - 13, this.fixture.fixture.positionZ);\n        break;\n      }\n      case Positioning.bottomFront: {\n        object.rotation.x = THREE.MathUtils.degToRad(180);\n        object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY + 13, this.fixture.fixture.positionZ);\n        break;\n      }\n      case Positioning.topBack: {\n        object.rotation.x = THREE.MathUtils.degToRad(0);\n        object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY - 13, this.fixture.fixture.positionZ);\n        break;\n      }\n      case Positioning.bottomBack: {\n        object.rotation.x = THREE.MathUtils.degToRad(180);\n        object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY + 13, this.fixture.fixture.positionZ);\n        break;\n      }\n      case Positioning.manual: {\n        object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY, this.fixture.fixture.positionZ);\n        object.rotation.x = THREE.MathUtils.degToRad(this.fixture.fixture.rotationX);\n        object.rotation.y = THREE.MathUtils.degToRad(this.fixture.fixture.rotationY);\n        object.rotation.z = THREE.MathUtils.degToRad(this.fixture.fixture.rotationZ);\n        break;\n      }\n    }\n  }\n\n  protected createSpotLightBeam() {\n    // TODO set the correct angle from the profile\n    const beamAngleDegrees = 14;\n    const geometry = new THREE.CylinderGeometry(0.1, beamAngleDegrees * 1.2, 100, 64, 20, false);\n    geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -geometry.parameters.height / 2, 0));\n    geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\n    this.spotLightBeam = new THREE.Mesh(geometry, this.spotlightMaterial);\n    this.spotLightBeam.position.set(0, -0.02, 0);\n    this.spotLightBeam.receiveShadow = false;\n    this.spotLightBeam.castShadow = false;\n\n    this.spotlightGroup.add(this.spotLightBeam);\n    this.spotLightBeam.rotation.x = Math.PI / 2;\n  }\n\n  destroy() {\n    if (this.hasSpotLight) {\n      this.spotlightMaterial.dispose();\n    }\n  }\n}\n","import { forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PreviewMeshService } from '../../services/preview-mesh.service';\nimport { Fixture3d } from './fixture-3d';\nimport { PreviewService } from '../../services/preview.service';\n\nexport class ColorChanger3d extends Fixture3d {\n  private mesh: THREE.Mesh;\n  private objectGroup: THREE.Object3D = new THREE.Object3D();\n\n  constructor(\n    public fixtureService: FixtureService,\n    public previewService: PreviewService,\n    previewMeshService: PreviewMeshService,\n    fixture: CachedFixture,\n    scene: any\n  ) {\n    super(fixtureService, previewService, fixture, scene, true);\n\n    forkJoin([previewMeshService.getMesh('color-changer')])\n      .pipe(\n        map(([colorChanger]) => {\n          this.mesh = colorChanger;\n          this.createObjects();\n        })\n      )\n      .subscribe();\n  }\n\n  protected createObjects() {\n    super.createObjects();\n\n    this.mesh.material = this.previewService.fixtureMaterial;\n\n    this.objectGroup.add(this.spotlightGroup);\n    this.objectGroup.add(this.mesh);\n    this.objectGroup.scale.multiplyScalar(9);\n    this.scene.add(this.objectGroup);\n\n    this.isLoaded = true;\n  }\n\n  public updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number): void {\n    if (!this.isLoaded) {\n      return;\n    }\n\n    super.updatePreview(channelValues, masterDimmerValue);\n    this.updatePosition(this.objectGroup);\n\n    // Update the material\n    if (this.lastSelected !== this.isSelected) {\n      if (this.isSelected) {\n        for (const child of this.mesh.children) {\n          (child as Mesh).material = this.previewService.fixtureSelectedMaterial;\n        }\n      } else {\n        for (const child of this.mesh.children) {\n          (child as Mesh).material = this.previewService.fixtureMaterial;\n        }\n      }\n\n      this.lastSelected = this.isSelected;\n    }\n  }\n\n  destroy() {\n    this.scene.remove(this.objectGroup);\n  }\n}\n","import { forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PreviewMeshService } from '../../services/preview-mesh.service';\nimport { Fixture3d } from './fixture-3d';\nimport { PreviewService } from '../../services/preview.service';\n\nexport class MovingHead3d extends Fixture3d {\n  private pan: number;\n  private tilt: number;\n\n  private socket: THREE.Mesh;\n  private arm: THREE.Mesh;\n  private head: THREE.Mesh;\n\n  private headGroup: THREE.Object3D = new THREE.Object3D();\n  private armGroup: THREE.Object3D = new THREE.Object3D();\n  private objectGroup: THREE.Object3D = new THREE.Object3D();\n\n  private lastBeamAngleDegrees: number;\n\n  constructor(\n    public fixtureService: FixtureService,\n    public previewService: PreviewService,\n    previewMeshService: PreviewMeshService,\n    fixture: CachedFixture,\n    scene: any\n  ) {\n    super(fixtureService, previewService, fixture, scene, true);\n\n    forkJoin([\n      previewMeshService.getMesh('moving_head_socket'),\n      previewMeshService.getMesh('moving_head_arm'),\n      previewMeshService.getMesh('moving_head_head'),\n    ])\n      .pipe(\n        map(([socket, arm, head]) => {\n          this.socket = socket;\n          this.arm = arm;\n          this.head = head;\n\n          this.createObjects();\n        })\n      )\n      .subscribe();\n  }\n\n  protected createObjects() {\n    super.createObjects();\n\n    this.socket.material = this.previewService.fixtureMaterial;\n    this.arm.material = this.previewService.fixtureMaterial;\n    this.head.material = this.previewService.fixtureMaterial;\n\n    // Add the head\n    this.head.scale.multiplyScalar(0.9);\n    this.head.position.set(-0.1, 0, 0);\n    const headPivotGroup = new THREE.Object3D();\n    headPivotGroup.add(this.head);\n    this.headGroup.add(headPivotGroup);\n\n    this.headGroup.add(this.spotlightGroup);\n\n    // Add the arm\n    this.armGroup.add(this.headGroup);\n    this.headGroup.position.set(0, -0.6, 0);\n    this.armGroup.add(this.arm);\n\n    // Add the socket\n    this.objectGroup.add(this.armGroup);\n    this.objectGroup.add(this.socket);\n    this.socket.position.set(0, 1.2, 0);\n\n    // A moving head has about 32 cm in width\n    this.objectGroup.scale.multiplyScalar(9);\n\n    this.scene.add(this.objectGroup);\n\n    this.isLoaded = true;\n  }\n\n  public updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number): void {\n    if (!this.isLoaded) {\n      return;\n    }\n\n    super.updatePreview(channelValues, masterDimmerValue);\n    this.updatePosition(this.objectGroup);\n\n    // Apply default settings\n    let panStart = 0;\n    let panEnd = 255;\n\n    let tiltStart = 0;\n    let tiltEnd = 255;\n\n    this.pan = 0;\n    this.tilt = 0;\n\n    // Apply the known property values\n    for (const channelValue of channelValues) {\n      const channel = this.fixtureService.getChannelByName(this.fixture, channelValue.channelName);\n      const capability = this.getCapabilityInValue(channel, channelValue.value);\n      if (capability) {\n        switch (capability.capability.type) {\n          case FixtureCapabilityType.Pan: {\n            panStart = this.fixtureService.getRotationAngleDeg(capability.capability.angleStart) || 0;\n            panEnd = this.fixtureService.getRotationAngleDeg(capability.capability.angleEnd) || 540;\n            this.pan = channelValue.value / channel.maxValue;\n            break;\n          }\n          case FixtureCapabilityType.Tilt: {\n            tiltStart = this.fixtureService.getRotationAngleDeg(capability.capability.angleStart) || 0;\n            tiltEnd = this.fixtureService.getRotationAngleDeg(capability.capability.angleEnd) || 2700;\n            this.tilt = channelValue.value / channel.maxValue;\n            break;\n          }\n        }\n      }\n    }\n\n    // calculate the y/x rotation in radiants based on pan/tilt (0-1) respecting the max pan/tilt\n    this.armGroup.rotation.y = THREE.MathUtils.degToRad(panEnd * this.pan + panStart) - THREE.MathUtils.degToRad(panEnd / 2);\n    this.headGroup.rotation.x = THREE.MathUtils.degToRad(tiltEnd * this.tilt + tiltStart) - THREE.MathUtils.degToRad(tiltEnd / 2);\n\n    // Update the angle only on change, because it's expensive\n    // TODO update the correct angle from the profile\n    const beamAngleDregrees = 14;\n    if (this.lastBeamAngleDegrees !== beamAngleDregrees) {\n      this.spotLight.angle = THREE.MathUtils.degToRad(beamAngleDregrees);\n      this.lastBeamAngleDegrees = beamAngleDregrees;\n    }\n\n    // Update the material\n    if (this.lastSelected !== this.isSelected) {\n      if (this.isSelected) {\n        this.socket.material = this.previewService.fixtureSelectedMaterial;\n        this.arm.material = this.previewService.fixtureSelectedMaterial;\n        this.head.material = this.previewService.fixtureSelectedMaterial;\n      } else {\n        this.socket.material = this.previewService.fixtureMaterial;\n        this.arm.material = this.previewService.fixtureMaterial;\n        this.head.material = this.previewService.fixtureMaterial;\n      }\n\n      this.lastSelected = this.isSelected;\n    }\n  }\n\n  destroy() {\n    this.scene.remove(this.objectGroup);\n  }\n}\n","import { AfterViewInit, Component, ElementRef, HostListener, ViewChild } from '@angular/core';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\nimport { FixtureCategory } from '../models/fixture-profile';\nimport { FixtureService } from '../services/fixture.service';\nimport { PreviewMeshService } from '../services/preview-mesh.service';\nimport { PreviewService } from '../services/preview.service';\nimport { ProjectService } from '../services/project.service';\nimport { TimelineService } from '../services/timeline.service';\nimport { Positioning } from './../models/fixture';\nimport { AnimationService } from './../services/animation.service';\nimport { ColorChanger3d } from './models/color-changer-3d';\nimport { Fixture3d } from './models/fixture-3d';\nimport { MovingHead3d } from './models/moving-head-3d';\n\n@Component({\n  selector: 'lib-app-preview',\n  templateUrl: './preview.component.html',\n  styleUrls: ['./preview.component.css'],\n})\nexport class PreviewComponent implements AfterViewInit {\n  private renderer: THREE.WebGLRenderer;\n  private scene: THREE.Scene;\n  private camera: THREE.PerspectiveCamera;\n  public controls: OrbitControls;\n\n  private fixtures3d: Fixture3d[] = [];\n\n  @ViewChild('canvas')\n  private canvasRef: ElementRef;\n\n  constructor(\n    private fixtureService: FixtureService,\n    private previewMeshService: PreviewMeshService,\n    private animationService: AnimationService,\n    private previewService: PreviewService,\n    private timelineService: TimelineService,\n    private projectService: ProjectService\n  ) {\n    this.previewService.doUpdateFixtureSetup.subscribe(() => {\n      this.syncFixtures();\n    });\n    this.syncFixtures();\n  }\n\n  // synchronize the 3d-fixtures to the project fixtures\n  private syncFixtures() {\n    if (!this.previewService.scene) {\n      return;\n    }\n\n    // remove all fixtures\n    for (const fixture3d of this.fixtures3d) {\n      fixture3d.destroy();\n    }\n    this.fixtures3d = [];\n\n    // add all fixtures from the project\n    for (const fixture of this.fixtureService.cachedFixtures) {\n      switch (fixture.profile.categories[0]) {\n        case FixtureCategory['Moving Head']:\n          this.fixtures3d.push(new MovingHead3d(this.fixtureService, this.previewService, this.previewMeshService, fixture, this.scene));\n          break;\n        case FixtureCategory['Color Changer']:\n          this.fixtures3d.push(new ColorChanger3d(this.fixtureService, this.previewService, this.previewMeshService, fixture, this.scene));\n          break;\n        case FixtureCategory['Blinder']:\n          this.fixtures3d.push(new ColorChanger3d(this.fixtureService, this.previewService, this.previewMeshService, fixture, this.scene));\n          break;\n      }\n    }\n  }\n\n  private get canvas(): HTMLCanvasElement {\n    return this.canvasRef.nativeElement;\n  }\n\n  private render() {\n    this.renderer.render(this.scene, this.camera);\n  }\n\n  private updateStagePosition(\n    positioning: Positioning,\n    xMin: number,\n    xMax: number,\n    yMin: number,\n    yMax: number,\n    zMin: number,\n    zMax: number\n  ) {\n    let positionCount = 0; // Number of fixtures in the same position\n    let positionIndex = 1;\n\n    this.projectService.project.presetFixtures.forEach((element, index) => {\n      const fixture = this.fixtureService.getFixtureByUuid(element.fixtureUuid);\n      if (fixture.positioning === positioning) {\n        positionCount++;\n      }\n    });\n\n    this.projectService.project.presetFixtures.forEach((element, index) => {\n      const fixture = this.fixtureService.getFixtureByUuid(element.fixtureUuid);\n      if (fixture.positioning === positioning) {\n        fixture.positionX = xMin + ((xMax - xMin) / (positionCount + 1)) * positionIndex;\n        fixture.positionY = yMin + ((yMax - yMin) / (positionCount + 1)) * positionIndex;\n        fixture.positionZ = zMin + ((zMax - zMin) / (positionCount + 1)) * positionIndex;\n\n        positionIndex++;\n      }\n    });\n  }\n\n  private animate(timeMillis: number) {\n    if (this.timelineService.playState === 'playing') {\n      // Overwrite the current time with the playing time, if we're in playback mode\n      timeMillis = this.timelineService.waveSurfer.getCurrentTime() * 1000;\n    }\n\n    this.animationService.timeMillis = timeMillis;\n\n    // Update the controls\n    if (this.controls) {\n      this.controls.update();\n    }\n\n    // Update the positions\n    this.updateStagePosition(\n      Positioning.topFront,\n      -this.projectService.project.stageWidthCm / 2,\n      this.projectService.project.stageWidthCm / 2,\n      this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageDepthCm / 2 - 70,\n      this.projectService.project.stageDepthCm / 2 - 70\n    );\n    this.updateStagePosition(\n      Positioning.bottomFront,\n      -this.projectService.project.stageWidthCm / 2,\n      this.projectService.project.stageWidthCm / 2,\n      this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageDepthCm / 2 - 70,\n      this.projectService.project.stageDepthCm / 2 - 70\n    );\n    this.updateStagePosition(\n      Positioning.topBack,\n      -this.projectService.project.stageWidthCm / 2,\n      this.projectService.project.stageWidthCm / 2,\n      this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n      -this.projectService.project.stageDepthCm / 2 + 70,\n      -this.projectService.project.stageDepthCm / 2 + 70\n    );\n    this.updateStagePosition(\n      Positioning.bottomBack,\n      -this.projectService.project.stageWidthCm / 2,\n      this.projectService.project.stageWidthCm / 2,\n      this.projectService.project.stageFloorHeightCm,\n      this.projectService.project.stageFloorHeightCm,\n      -this.projectService.project.stageDepthCm / 2 + 70,\n      -this.projectService.project.stageDepthCm / 2 + 70\n    );\n\n    // Update all fixtures and apply the preview properties, if available\n    // TODO Update the fixtures only e.g. 40 times per second according to the \"real\" refresh rate of the DMX interface?\n    const presets = this.previewService.getPresets(timeMillis);\n\n    const calculatedFixtures = this.previewService.getChannelValues(timeMillis, presets);\n\n    for (const fixture3d of this.fixtures3d) {\n      // Update the fixture properties\n      fixture3d.updatePreview(calculatedFixtures.get(fixture3d.fixture) || [], this.projectService.project.masterDimmerValue);\n\n      // Select the fixture, if required\n      if (this.fixtureService.settingsSelection) {\n        fixture3d.isSelected = this.fixtureService.settingsFixtureIsSelected(fixture3d.fixture.fixture);\n      } else {\n        fixture3d.isSelected = this.previewService.fixtureIsSelected(fixture3d.fixture.fixture.uuid, fixture3d.fixture.pixelKey, presets);\n      }\n    }\n\n    // Render the scene\n    this.render();\n\n    requestAnimationFrame(this.animate.bind(this));\n  }\n\n  private getAspectRatio(): number {\n    const height = this.canvas.clientHeight;\n\n    if (height === 0) {\n      return 0;\n    }\n\n    return this.canvas.clientWidth / this.canvas.clientHeight;\n  }\n\n  @HostListener('window:resize')\n  public onResize() {\n    this.camera.aspect = this.getAspectRatio();\n    this.camera.updateProjectionMatrix();\n    this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\n  }\n\n  private setupRenderer() {\n    this.renderer = new THREE.WebGLRenderer({ antialias: true });\n    this.canvas.appendChild(this.renderer.domElement);\n    this.renderer.setPixelRatio(devicePixelRatio);\n    this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\n    // this.renderer.shadowMap.enabled = true;\n    // this.renderer.gammaInput = true;\n    // this.renderer.gammaOutput = true;\n  }\n\n  private setupCamera() {\n    this.camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 1, 10000);\n    this.camera.position.set(-600, 80, 700);\n  }\n\n  private setupControls() {\n    this.controls = new OrbitControls(this.camera, this.renderer.domElement);\n    this.controls.enableKeys = false;\n    this.controls.rotateSpeed = 0.05;\n    this.controls.zoomSpeed = 1.2;\n    this.controls.enableDamping = true;\n    this.controls.dampingFactor = 0.25;\n    this.controls.screenSpacePanning = false;\n    this.controls.minDistance = 700;\n    // this.controls.zoom = 1000;\n    this.controls.maxDistance = 2000;\n    this.controls.maxPolarAngle = Math.PI / 2;\n    this.controls.target = new THREE.Vector3(0, 200, 0);\n    // this.controls.rotation = 100;\n  }\n\n  private setupScene() {\n    // Create a new scene\n    this.scene = new THREE.Scene();\n    // this.scene.background = new THREE.Color(0x080808);\n    // this.scene.fog\t= new THREE.FogExp2( 0x000000, 0.1 );\n\n    this.previewService.scene = this.scene;\n\n    // Add a little bit of ambient light\n    const ambient = new THREE.AmbientLight(0xffffff, 1.8);\n    this.scene.add(ambient);\n\n    // Create the stage dimensions\n    this.previewService.updateStage();\n\n    const lights = [];\n    lights[0] = new THREE.PointLight(0xffffff, 2, 0, 0.1);\n    lights[1] = new THREE.PointLight(0xffffff, 2, 0, 0.1);\n    lights[2] = new THREE.PointLight(0xffffff, 2, 0, 0.1);\n\n    lights[0].position.set(0, 2000, 0);\n    lights[1].position.set(1000, 2000, 1000);\n    lights[2].position.set(-1000, -2000, -1000);\n\n    lights[0].castShadow = true;\n    lights[1].castShadow = true;\n    lights[2].castShadow = true;\n\n    this.scene.add(lights[0]);\n    this.scene.add(lights[1]);\n    this.scene.add(lights[2]);\n\n    this.previewService.updateFixtureSetup();\n  }\n\n  ngAfterViewInit(): void {\n    this.setupRenderer();\n    this.setupCamera();\n    this.setupControls();\n    this.setupScene();\n\n    this.onResize();\n    this.animate(null);\n  }\n}\n","<div class=\"h-100\" #canvas style=\"overflow: hidden\"></div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lib-wait-dialog',\n  templateUrl: './wait-dialog.component.html',\n  styleUrls: ['./wait-dialog.component.css'],\n})\nexport class WaitDialogComponent implements OnInit {\n  constructor() {}\n\n  ngOnInit() {}\n}\n","<div class=\"card-modal\">\n  <div class=\"card\">\n    <div class=\"card-body\">\n      <p class=\"card-text\">{{ 'designer.misc.please-wait' | translate }}</p>\n      <div class=\"progress\">\n        <div\n          class=\"progress-bar progress-bar-striped progress-bar-animated\"\n          role=\"progressbar\"\n          style=\"width: 100%\"\n          aria-valuenow=\"10\"\n          aria-valuemin=\"0\"\n          aria-valuemax=\"100\"\n        ></div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n\n@Component({\n  selector: 'lib-app-warning-dialog',\n  templateUrl: './warning-dialog.component.html',\n  styleUrls: ['./warning-dialog.component.scss'],\n})\nexport class WarningDialogComponent implements OnInit {\n  onClose: Subject<number>;\n\n  message: string;\n\n  constructor(private bsModalRef: BsModalRef) {}\n\n  ngOnInit() {\n    this.onClose = new Subject();\n  }\n\n  public ok(): void {\n    this.onClose.next(1);\n    this.bsModalRef.hide();\n  }\n\n  public cancel(): void {\n    this.onClose.next(2);\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","<div class=\"card-modal\">\n  <div class=\"card\">\n    <div class=\"card-header\">\n      {{ 'designer.misc.warning' | translate }}\n    </div>\n\n    <div class=\"card-body\">\n      <div class=\"row\">\n        <div class=\"col-auto\">\n          <h2 class=\"mb-0\">\n            <i class=\"fa fa-exclamation-triangle text-primary\" aria-hidden=\"true\"></i>\n          </h2>\n        </div>\n        <div class=\"col pl-0\">\n          <p class=\"mb-0\">{{ message }}</p>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"card-footer\">\n      <div class=\"d-flex float-right\">\n        <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n          {{ 'designer.misc.cancel' | translate }}\n        </a>\n        <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok(); (false)\">\n          {{ 'designer.misc.ok' | translate }}\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { WarningDialogComponent } from '../warning-dialog/warning-dialog.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class WarningDialogService {\n  constructor(private modalService: BsModalService, private translateService: TranslateService) {}\n\n  // Show a warning dialog and return true, when the user clicked OK\n  show(message: string): Observable<boolean> {\n    return this.translateService.get(message).pipe(\n      map((result) => {\n        return result;\n      }),\n      mergeMap((result) => {\n        const fileDialog = this.modalService.show(WarningDialogComponent, { keyboard: false, ignoreBackdropClick: true });\n        (fileDialog.content as WarningDialogComponent).message = result;\n\n        return (fileDialog.content as WarningDialogComponent).onClose.pipe(\n          map((warningResult) => {\n            if (warningResult === 1) {\n              return true;\n            }\n\n            return false;\n          })\n        );\n      })\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { Preset } from '../models/preset';\nimport { Project } from '../models/project';\nimport { WaitDialogComponent } from '../wait-dialog/wait-dialog.component';\nimport { FixtureService } from './fixture.service';\nimport { PresetService } from './preset.service';\nimport { PreviewService } from './preview.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\nimport { TimelineService } from './timeline.service';\nimport { UuidService } from './uuid.service';\nimport { PresetFixture } from '../models/preset-fixture';\nimport { WarningDialogService } from './warning-dialog.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ProjectLoadService {\n  constructor(\n    private projectService: ProjectService,\n    private previewService: PreviewService,\n    private fixtureService: FixtureService,\n    private presetService: PresetService,\n    private sceneService: SceneService,\n    private modalService: BsModalService,\n    private uuidService: UuidService,\n    private timelineService: TimelineService,\n    private router: Router,\n    private activatedRoute: ActivatedRoute,\n    private warningDialogService: WarningDialogService\n  ) {}\n\n  private migrateToVersion2() {\n    for (let fixture of this.projectService.project.fixtures) {\n      if (this.fixtureService.fixtureHasGeneralChannel(fixture)) {\n        const projectFixture = new PresetFixture();\n        projectFixture.fixtureUuid = fixture.uuid;\n        this.projectService.project.presetFixtures.push(projectFixture);\n      }\n\n      const pixelKeys = this.fixtureService.fixtureGetUniquePixelKeys(fixture);\n\n      for (let pixelKey of pixelKeys) {\n        const projectFixture = new PresetFixture();\n        projectFixture.fixtureUuid = fixture.uuid;\n        projectFixture.pixelKey = pixelKey;\n        this.projectService.project.presetFixtures.push(projectFixture);\n      }\n    }\n    for (let preset of this.projectService.project.presets) {\n      for (let fixtureUuid of preset.fixtureUuids) {\n        const fixture = this.fixtureService.getFixtureByUuid(fixtureUuid);\n\n        if (this.fixtureService.fixtureHasGeneralChannel(fixture)) {\n          const presetFixture = new PresetFixture();\n          presetFixture.fixtureUuid = fixtureUuid;\n          preset.fixtures.push(presetFixture);\n        }\n\n        const pixelKeys = this.fixtureService.fixtureGetUniquePixelKeys(fixture);\n\n        for (let pixelKey of pixelKeys) {\n          const presetFixture = new PresetFixture();\n          presetFixture.fixtureUuid = fixtureUuid;\n          presetFixture.pixelKey = pixelKey;\n          preset.fixtures.push(presetFixture);\n        }\n      }\n      preset.fixtureUuids = undefined;\n    }\n    this.projectService.project.version = 2;\n  }\n\n  private migrateFromOldProject() {\n    let migrated = false;\n\n    if (!this.projectService.project.version) {\n      // Migrate from version 1\n      this.migrateToVersion2();\n      migrated = true;\n    }\n\n    if (migrated) {\n      this.warningDialogService.show('designer.project.migrated').subscribe();\n    }\n  }\n\n  private afterLoad() {\n    this.migrateFromOldProject();\n    this.fixtureService.updateCachedFixtures();\n    this.presetService.removeDeletedFixtures();\n    this.previewService.updateFixtureSetup();\n    this.presetService.fixtureSelectionChanged.next();\n    this.presetService.autoOpenFirstEffect();\n    this.previewService.updateStage();\n    this.presetService.previewLive();\n    this.sceneService.selectPresetFromSelectedScene();\n  }\n\n  private selectScenesPresetComposition() {\n    this.presetService.selectedPreset = this.presetService.getPresetByUuid(this.projectService.project.selectedPresetUuid);\n    this.sceneService.selectedScenes = [];\n    if (this.projectService.project.selectedSceneUuids) {\n      for (const uuid of this.projectService.project.selectedSceneUuids) {\n        this.sceneService.selectedScenes.push(this.sceneService.getSceneByUuid(uuid));\n      }\n    }\n    this.timelineService.selectedComposition = undefined;\n    this.timelineService.selectedCompositionIndex = undefined;\n    this.timelineService.destroyWaveSurfer();\n    for (let i = 0; i < this.projectService.project.compositions.length; i++) {\n      if (this.projectService.project.compositions[i].uuid === this.projectService.project.selectedCompositionUuid) {\n        this.timelineService.selectCompositionIndex(i);\n        break;\n      }\n    }\n  }\n\n  load(id: number, name: string, shareToken?: string): Observable<void> {\n    const ref = this.modalService.show(WaitDialogComponent, { keyboard: false, ignoreBackdropClick: true });\n\n    return this.projectService.getProject(id, name, shareToken).pipe(\n      map((project) => {\n        if (project.version > this.projectService.currentProjectVersion) {\n          throw new Error(\n            'The project version ' +\n              project.version +\n              ' is created with a newer version of the designer. Please update your Rocket Show version to open this project.'\n          );\n        }\n        this.projectService.project = project;\n        this.selectScenesPresetComposition();\n        this.afterLoad();\n\n        const queryParams: Params = {\n          id,\n          token: project.shareToken,\n        };\n        this.router.navigate([], {\n          relativeTo: this.activatedRoute,\n          queryParams,\n          queryParamsHandling: 'merge', // remove to replace all query params by provided\n        });\n      }),\n      finalize(() => {\n        // hide the modal again because of:\n        // https://github.com/valor-software/ngx-bootstrap/issues/3711\n        setTimeout(() => {\n          ref.hide();\n        }, 250);\n        setTimeout(() => {\n          ref.hide();\n        }, 500);\n        setTimeout(() => {\n          ref.hide();\n        }, 1500);\n      })\n    );\n  }\n\n  new() {\n    // create an empty new project\n    const project = new Project();\n    project.uuid = this.uuidService.getUuid();\n    project.version = this.projectService.currentProjectVersion;\n    this.projectService.project = project;\n    this.projectService.project.shareToken = this.uuidService.getUuid();\n\n    // Add a default scene and preset\n    const preset = new Preset();\n    preset.uuid = this.uuidService.getUuid();\n    preset.name = 'New Preset';\n    this.projectService.project.presets.push(preset);\n    this.presetService.selectPreset(0);\n\n    this.sceneService.addScene();\n    this.projectService.project.scenes[0].presetUuids.push(preset.uuid);\n\n    this.projectService.project.previewPreset = true;\n\n    this.sceneService.selectedScenes = [this.projectService.project.scenes[0]];\n    this.presetService.selectedPreset = this.projectService.project.presets[0];\n\n    this.timelineService.selectedComposition = undefined;\n    this.timelineService.selectedCompositionIndex = undefined;\n    this.timelineService.destroyWaveSurfer();\n\n    this.afterLoad();\n\n    const queryParams: Params = {\n      id: '',\n      token: '',\n    };\n    this.router.navigate([], {\n      relativeTo: this.activatedRoute,\n      queryParams,\n      queryParamsHandling: 'merge', // remove to replace all query params by provided\n    });\n  }\n\n  template() {\n    // load the template project with id 1\n    this.load(1, null).subscribe(() => {\n      this.projectService.project.id = undefined;\n    });\n  }\n\n  import(data: string) {\n    // import a project from a string\n    const project = new Project(JSON.parse(data));\n    project.id = undefined;\n    this.projectService.project = project;\n\n    this.selectScenesPresetComposition();\n    this.afterLoad();\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'sort',\n})\nexport class ArraySortPipe implements PipeTransform {\n  transform(array: any, field: string): any[] {\n    if (!Array.isArray(array)) {\n      return;\n    }\n    array.sort((a: any, b: any) => {\n      if (a[field] < b[field]) {\n        return -1;\n      } else if (a[field] > b[field]) {\n        return 1;\n      } else {\n        return 0;\n      }\n    });\n    return array;\n  }\n}\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ 'designer.project.browser-title' | translate }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body p-0\">\n  <div *ngIf=\"loading\" class=\"m-2 d-flex w-100\">\n    <p class=\"w-100\" style=\"text-align: center\"><i class=\"fa fa-spinner fa-pulse fa-fw\"></i></p>\n  </div>\n  <div *ngIf=\"projects.length == 0 && !loading\" class=\"m-2 d-flex w-100\">\n    <p class=\"w-100\" style=\"text-align: center\">\n      {{ 'designer.project.browser-empty' | translate }}\n    </p>\n  </div>\n  <div *ngIf=\"!loading\" class=\"list-group list-group-flush\" style=\"max-height: 500px; overflow-y: scroll\">\n    <div class=\"list-group-item\" *ngFor=\"let project of projects | sort: 'name'\">\n      <div class=\"row\">\n        <div class=\"col-auto my-auto flex-grow\">\n          <a href=\"#\" (click)=\"openProject(project); (false)\">\n            <p class=\"mb-0 w-100\">{{ project.name }}</p>\n          </a>\n        </div>\n        <div class=\"my-auto\">\n          <div class=\"col-auto my-auto pl-0 text-danger float-right\" style=\"cursor: pointer\" (click)=\"deleteProject(project); (false)\">\n            <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n    {{ 'designer.misc.cancel' | translate }}\n  </a>\n  <button (click)=\"cancel(); (false)\" type=\"button\" class=\"btn btn-primary\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../../models/project';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectLoadService } from '../../services/project-load.service';\nimport { ProjectService } from '../../services/project.service';\nimport { UserService } from '../../services/user.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n  selector: 'lib-project-browser',\n  templateUrl: './project-browser.component.html',\n  styleUrls: ['./project-browser.component.css'],\n})\nexport class ProjectBrowserComponent implements OnInit {\n  projects: Project[] = [];\n  loading = true;\n\n  constructor(\n    private bsModalRef: BsModalRef,\n    private projectService: ProjectService,\n    private projectLoadService: ProjectLoadService,\n    private userService: UserService,\n    private warningDialogService: WarningDialogService,\n    private configService: ConfigService\n  ) {\n    this.loadProjects();\n  }\n\n  private loadProjects() {\n    this.projectService.getAllProjects().subscribe((projects) => {\n      this.projects = projects;\n      this.loading = false;\n    });\n  }\n\n  ngOnInit() {}\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  openProject(project: Project) {\n    this.bsModalRef.hide();\n    this.projectLoadService.load(project.id, project.name).subscribe(() => {\n      this.userService.setAutoLoadProject(project);\n    });\n  }\n\n  deleteProject(project: Project) {\n    this.warningDialogService\n      .show('designer.project.delete-warning')\n      .pipe(\n        map((result) => {\n          if (result) {\n            this.projectService.deleteProject(project).subscribe((projects) => {\n              this.loadProjects();\n            });\n          }\n        })\n      )\n      .subscribe();\n  }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { map } from 'rxjs/operators';\nimport { ProjectLoadService } from '../../services/project-load.service';\n\n@Component({\n  selector: 'lib-project-import',\n  templateUrl: './project-import.component.html',\n  styleUrls: ['./project-import.component.css'],\n})\nexport class ProjectImportComponent implements OnInit {\n  public dropzoneConfig: DropzoneConfigInterface;\n  public uploadMessage: string;\n\n  constructor(\n    public bsModalRef: BsModalRef,\n    private translateService: TranslateService,\n    private toastrService: ToastrService,\n    private projectLoadService: ProjectLoadService\n  ) {}\n\n  ngOnInit() {\n    this.dropzoneConfig = {\n      url: 'dummy',\n      addRemoveLinks: false,\n      maxFilesize: 10 /* 10 MB */,\n      acceptedFiles: '.rsd',\n      timeout: 0,\n      accept: (file: any, done: any) => {\n        const reader = new FileReader();\n        reader.addEventListener('loadend', (event: any) => {\n          this.projectLoadService.import(event.target.result);\n          done('noerr');\n          this.bsModalRef.hide();\n        });\n        reader.readAsText(file);\n      },\n      previewTemplate: `\n      <div style=\"display: none;\">\n        <!-- No preview -->\n      </div>\n      `,\n    };\n\n    this.translateService\n      .get('designer.misc.dropzone-message')\n      .pipe(\n        map((result) => {\n          this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n        })\n      )\n      .subscribe();\n  }\n\n  public onUploadError(args: any) {\n    if (args[1] === 'noerr') {\n      // this error is set in the accept event listener -> everything OK\n      return;\n    }\n\n    const msg = 'designer.misc.toast-upload-error';\n    const title = 'designer.misc.toast-upload-error-title';\n    this.translateService.get([msg, title]).subscribe((result) => {\n      this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n    });\n  }\n\n  ok() {\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ 'designer.project.import-title' | translate }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <!-- Dropzone -->\n  <dropzone [config]=\"dropzoneConfig\" [useDropzoneClass]=\"'false'\" [message]=\"uploadMessage\" (error)=\"onUploadError($event)\"></dropzone>\n</div>\n<div class=\"modal-footer\">\n  <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ 'designer.project.save-title' | translate }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body p-0\">\n  <!-- The name of the current project -->\n  <div class=\"form-group row p-3 mb-0\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.project.name' | translate }}</label>\n    <div class=\"col-lg-8\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"projectName\" (ngModelChange)=\"projectName = $event\" />\n    </div>\n  </div>\n\n  <!-- List existing projects -->\n  <div *ngIf=\"loading\" class=\"m-2 d-flex w-100\">\n    <p class=\"w-100\" style=\"text-align: center\"><i class=\"fa fa-spinner fa-pulse fa-fw\"></i></p>\n  </div>\n  <div *ngIf=\"!loading\" class=\"list-group list-group-flush\" style=\"max-height: 500px; overflow-y: scroll\">\n    <div class=\"list-group-item\" *ngFor=\"let project of projects | sort: 'name'\">\n      <div class=\"row\">\n        <div class=\"col-auto my-auto flex-grow\">\n          <a href=\"#\" (click)=\"selectProject(project); (false)\">\n            <p class=\"mb-0 w-100\">{{ project.name }}</p>\n          </a>\n        </div>\n        <div class=\"my-auto\">\n          <div class=\"col-auto my-auto pl-0 text-danger float-right\" style=\"cursor: pointer\" (click)=\"deleteProject(project); (false)\">\n            <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n    {{ 'designer.misc.cancel' | translate }}\n  </a>\n  <button [disabled]=\"loading || !projectName\" (click)=\"saveProject(); (false)\" type=\"button\" class=\"btn btn-primary\">\n    {{ 'designer.misc.ok' | translate }}\n  </button>\n</div>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../../models/project';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectService } from '../../services/project.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n  selector: 'lib-project-save',\n  templateUrl: './project-save.component.html',\n  styleUrls: ['./project-save.component.css'],\n})\nexport class ProjectSaveComponent implements OnInit {\n  projects: Project[] = [];\n  loading = true;\n  projectName: string;\n\n  constructor(\n    private bsModalRef: BsModalRef,\n    private projectService: ProjectService,\n    private warningDialogService: WarningDialogService,\n    private configService: ConfigService\n  ) {\n    this.loadProjects();\n    if (this.projectService.project.name) {\n      this.projectName = this.projectService.project.name;\n    } else {\n      this.projectName = 'New Project';\n    }\n  }\n\n  ngOnInit() {}\n\n  private loadProjects() {\n    this.projectService.getAllProjects().subscribe((projects) => {\n      this.projects = projects;\n      this.loading = false;\n    });\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  selectProject(project: Project) {\n    this.projectService.project.name = project.name;\n  }\n\n  private existingProject(uuid: string, name: string) {\n    for (const project of this.projects) {\n      if (project.name === name && project.uuid !== uuid) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private doSave() {\n    this.projectService.project.name = this.projectName;\n    this.projectService.save(this.projectService.project);\n    this.bsModalRef.hide();\n  }\n\n  saveProject() {\n    if (this.existingProject(this.projectService.project.uuid, this.projectName) && this.configService.uniqueProjectNames) {\n      this.warningDialogService\n        .show('designer.project.overwrite-warning')\n        .pipe(\n          map((result) => {\n            if (result) {\n              this.doSave();\n            }\n          })\n        )\n        .subscribe();\n    } else {\n      this.doSave();\n    }\n  }\n\n  deleteProject(project: Project) {\n    this.warningDialogService\n      .show('designer.project.delete-warning')\n      .pipe(\n        map((result) => {\n          if (result) {\n            this.projectService.deleteProject(project).subscribe((projects) => {\n              this.loadProjects();\n            });\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.saveProject();\n  }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n  selector: 'lib-project-share',\n  templateUrl: './project-share.component.html',\n  styleUrls: ['./project-share.component.css'],\n})\nexport class ProjectShareComponent implements OnInit {\n  shareLink: string;\n\n  constructor(public bsModalRef: BsModalRef, private projectService: ProjectService) {}\n\n  ngOnInit() {\n    this.shareLink =\n      window.location.host + '/designer?id=' + this.projectService.project.id + '&token=' + this.projectService.project.shareToken;\n  }\n\n  ok() {\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ 'designer.project.share-title' | translate }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.project.share-link' | translate }}</label>\n    <div class=\"col-lg-8 d-flex\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"shareLink\" readonly />\n    </div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","<div class=\"card-modal\">\n  <div class=\"card\">\n    <div class=\"card-header\">\n      {{ 'designer.misc.error' | translate }}\n    </div>\n\n    <div class=\"card-body\">\n      <div class=\"row\">\n        <div class=\"col-auto\">\n          <h2 class=\"mb-0\">\n            <i class=\"fa fa-exclamation-circle text-danger\" aria-hidden=\"true\"></i>\n          </h2>\n        </div>\n        <div class=\"col pl-0\">\n          <p class=\"mb-0\">{{ message }}</p>\n          <p *ngIf=\"details\" class=\"mt-1 mb-0\">({{ details }})</p>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"card-footer\">\n      <div class=\"d-flex float-right\">\n        <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok(); (false)\">\n          {{ 'designer.misc.ok' | translate }}\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n\n@Component({\n  selector: 'lib-error-dialog',\n  templateUrl: './error-dialog.component.html',\n  styleUrls: ['./error-dialog.component.css'],\n})\nexport class ErrorDialogComponent implements OnInit {\n  onClose: Subject<number>;\n\n  message: string;\n  details: string;\n\n  constructor(private bsModalRef: BsModalRef) {}\n\n  ngOnInit() {\n    this.onClose = new Subject();\n  }\n\n  public ok(): void {\n    this.onClose.next(1);\n    this.bsModalRef.hide();\n  }\n\n  public cancel(): void {\n    this.onClose.next(2);\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { ErrorDialogComponent } from '../error-dialog/error-dialog.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ErrorDialogService {\n  constructor(private modalService: BsModalService, private translateService: TranslateService) {}\n\n  // Show a warning dialog and return true, when the user clicked OK\n  show(message: string, details?: string): Observable<boolean> {\n    return this.translateService.get(message).pipe(\n      map((result) => {\n        return result;\n      }),\n      mergeMap((result) => {\n        const fileDialog = this.modalService.show(ErrorDialogComponent, { keyboard: true, ignoreBackdropClick: false });\n        (fileDialog.content as ErrorDialogComponent).message = result;\n        (fileDialog.content as ErrorDialogComponent).details = details;\n\n        return (fileDialog.content as ErrorDialogComponent).onClose.pipe(\n          map((errorResult) => {\n            if (errorResult === 1) {\n              return true;\n            }\n\n            return false;\n          })\n        );\n      })\n    );\n  }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureService } from '../../services/fixture.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n  selector: 'lib-fixture-pool-create-from-file',\n  templateUrl: './fixture-pool-create-from-file.component.html',\n  styleUrls: ['./fixture-pool-create-from-file.component.css'],\n})\nexport class FixturePoolCreateFromFileComponent implements OnInit {\n  public dropzoneConfig: DropzoneConfigInterface;\n  public uploadMessage: string;\n  public onClose: Subject<FixtureProfile> = new Subject();\n\n  constructor(\n    public bsModalRef: BsModalRef,\n    private translateService: TranslateService,\n    private toastrService: ToastrService,\n    private fixtureService: FixtureService,\n    private projectService: ProjectService\n  ) {}\n\n  ngOnInit() {\n    this.dropzoneConfig = {\n      url: 'dummy',\n      addRemoveLinks: false,\n      maxFilesize: 10 /* 10 MB */,\n      acceptedFiles: '.json',\n      timeout: 0,\n      accept: (file: any, done: any) => {\n        const reader = new FileReader();\n        reader.addEventListener('loadend', (event: any) => {\n          // validate the file\n          const text = event.target.result;\n          const json = JSON.parse(text);\n          if (\n            json['$schema'].match(\n              'https://raw.githubusercontent.com/OpenLightingProject/open-fixture-library/schema-(.*)/schemas/fixture.json'\n            )\n          ) {\n            // create the metadata from the file. we don't have the corresponding\n            // manufacturer-file, therefore we just assume the attributes from the\n            // fixture-file.\n            const manufacturerShortName = json['manufacturerKey'];\n            const manufacturerName = manufacturerShortName;\n            const uuid = manufacturerShortName + '/' + json['fixtureKey'];\n            const profile = new FixtureProfile(json);\n\n            profile.manufacturerShortName = manufacturerShortName;\n            profile.manufacturerName = manufacturerName;\n            profile.uuid = uuid;\n            profile.createdFromFile = true;\n\n            // add the profile to the project, if not already added\n            const loadedProfile = this.fixtureService.getProfileByUuid(uuid);\n            if (!loadedProfile) {\n              this.projectService.project.fixtureProfiles.push(profile);\n            }\n\n            // add a new fixture from this profile\n            this.onClose.next(profile);\n            this.bsModalRef.hide();\n          } else {\n            // show an error toast\n            const msg = 'designer.fixture-pool.invalid-fixture-profile-file';\n            const title = 'designer.misc.toast-upload-error-title';\n            this.translateService.get([msg, title]).subscribe((result) => {\n              this.toastrService.error(result[msg], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n            });\n          }\n\n          done('noerr');\n        });\n        reader.readAsText(file);\n      },\n      previewTemplate: `\n      <div style=\"display: none;\">\n        <!-- No preview -->\n      </div>\n      `,\n    };\n\n    this.translateService\n      .get('designer.misc.dropzone-message')\n      .pipe(\n        map((result) => {\n          this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n        })\n      )\n      .subscribe();\n  }\n\n  public onUploadError(args: any) {\n    if (args[1] === 'noerr') {\n      // this error is set in the accept event listener -> everything OK\n      return;\n    }\n\n    const msg = 'designer.misc.toast-upload-error';\n    const title = 'designer.misc.toast-upload-error-title';\n    this.translateService.get([msg, title]).subscribe((result) => {\n      this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n    });\n  }\n\n  ok() {\n    this.onClose.next(undefined);\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.onClose.next(undefined);\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ 'designer.fixture-pool.create-fixture-from-profile-file-dialog-title' | translate }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <!-- Dropzone -->\n  <dropzone [config]=\"dropzoneConfig\" [useDropzoneClass]=\"'false'\" [message]=\"uploadMessage\" (error)=\"onUploadError($event)\"></dropzone>\n  <div class=\"modal-footer\">\n    <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n  </div>\n</div>\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ 'designer.fixture-pool.title' | translate }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <div class=\"row\">\n    <div class=\"col-6\">\n      <!-- Search for profiles -->\n      <input\n        type=\"text\"\n        class=\"form-control input-block mb-3\"\n        id=\"searchSet\"\n        placeholder=\"{{ 'designer.fixture-pool.search-profiles' | translate }}\"\n        (input)=\"searchExpression = $event.target.value; filterProfiles()\"\n      />\n\n      <!-- Profiles -->\n      <div class=\"card border-secondary w-100\" style=\"height: 200px\">\n        <div class=\"card-body p-0 w-100\">\n          <div class=\"list-group list-group-flush w-100\">\n            <a *ngIf=\"loadingProfiles\" class=\"list-group-item flex-column align-items-start d-flex\">\n              <p class=\"mb-0 mx-auto\">\n                <i class=\"fa fa-spinner fa-pulse fa-fw\"></i>\n              </p>\n            </a>\n\n            <div class=\"list-group-item\" *ngFor=\"let profile of filteredProfiles | sort : 'uuid'\">\n              <div class=\"row\">\n                <div class=\"col-10 col-auto my-auto pl-2\">\n                  <p class=\"mb-0\">\n                    <span class=\"icon-{{ fixtureService.getFixtureIconClass(profile) }} mr-1\"></span> {{ profile.manufacturerName }} -\n                    {{ profile.name }}\n                  </p>\n                </div>\n                <div class=\"col-2 my-auto\">\n                  <a class=\"btn btn-primary btn-sm float-right\" href=\"#\" role=\"button\" (click)=\"addFixture(profile); (false)\">\n                    <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n                  </a>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div>\n        <p class=\"d-inline-block mb-0 mt-2\">\n          Powered by the <a href=\"https://open-fixture-library.org/\" target=\"_blank\">Open Fixture Library</a>\n        </p>\n        <a\n          class=\"mt-2 btn btn-secondary btn-sm float-right\"\n          href=\"https://open-fixture-library.org/fixture-editor\"\n          target=\"_blank\"\n          role=\"button\"\n        >\n          <i class=\"fa fa-file-o\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.add-profile' | translate }}\n        </a>\n        <button\n          *ngIf=\"configService.localProfiles\"\n          type=\"button\"\n          class=\"mr-2 mt-2 btn btn-secondary btn-sm float-right\"\n          (click)=\"updateProfiles(); (false)\"\n          [disabled]=\"updatingProfiles\"\n          role=\"button\"\n        >\n          <i *ngIf=\"updatingProfiles\" class=\"fa fa-spinner fa-pulse fa-fw\" aria-hidden=\"true\"></i>\n          <i *ngIf=\"!updatingProfiles\" class=\"fa fa-download fa-fw\" aria-hidden=\"true\"></i>\n          {{ 'designer.fixture-pool.update-profiles' | translate }}\n        </button>\n      </div>\n    </div>\n    <div class=\"col-6\">\n      <div class=\"row\">\n        <!-- Add fixture from local profile -->\n        <div class=\"col-6\">\n          <button type=\"button\" class=\"btn btn-secondary\" (click)=\"createFixtureFromProfileFile()\" role=\"button\">\n            <i class=\"fa fa-plus\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.create-fixture-from-profile-file' | translate }}\n          </button>\n        </div>\n\n        <!-- Universe -->\n        <div class=\"col-6\">\n          <div class=\"form-group row\">\n            <label class=\"col-lg-4 col-form-label\">{{ 'designer.fixture-pool.universe' | translate }}</label>\n            <div class=\"col-lg-8\">\n              <select class=\"custom-select\">\n                <option>Universe 1</option>\n              </select>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Fixtures -->\n      <div class=\"card border-secondary\" style=\"height: 235px\">\n        <div class=\"card-body p-0\">\n          <div class=\"list-group list-group-flush\" [sortablejs]=\"fixturePool\">\n            <div\n              class=\"list-group-item\"\n              *ngFor=\"let fixture of fixturePool\"\n              [class.active]=\"fixture == selectedFixture\"\n              (click)=\"selectFixture(fixture)\"\n              style=\"cursor: pointer\"\n            >\n              <div class=\"row\">\n                <div class=\"col-auto list-sort-handle my-auto\" style=\"cursor: move; cursor: -webkit-grabbing\">\n                  <i class=\"fa fa-bars\" aria-hidden=\"true\"></i>\n                </div>\n                <div class=\"col-auto flex-grow pl-0 my-auto\">\n                  <p class=\"mb-0\">\n                    <span class=\"icon-{{ fixtureService.getFixtureIconClass(fixtureService.getProfileByUuid(fixture.profileUuid)) }} mr-1\">\n                    </span\n                    >{{ fixture.name }}\n                  </p>\n                </div>\n                <div class=\"col-auto my-auto\">\n                  <a class=\"btn btn-primary btn-sm float-right\" href=\"#\" role=\"button\" (click)=\"removeFixture(fixture); (false)\">\n                    <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\n                  </a>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"row mt-3\">\n    <div class=\"col\">\n      <!-- Tab navigation -->\n      <ul class=\"nav nav-tabs mb-4\" id=\"myTab\" role=\"tablist\">\n        <li class=\"nav-item\">\n          <a class=\"nav-link active\" id=\"sets-tab\" data-toggle=\"tab\" href=\"#dmx\" role=\"tab\">\n            <i class=\"icon-ola\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.dmx' | translate }}\n          </a>\n        </li>\n        <li class=\"nav-item\">\n          <a class=\"nav-link\" id=\"compositions-tab\" data-toggle=\"tab\" href=\"#settings\" role=\"tab\">\n            <i class=\"fa fa-cog\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.settings' | translate }}\n          </a>\n        </li>\n      </ul>\n\n      <!-- Tab content -->\n      <div class=\"tab-content\" id=\"myTabContent\">\n        <!-- DMX universe overview-->\n        <div class=\"tab-pane show active\" id=\"dmx\" role=\"tabpanel\">\n          <!-- Show all channel numbers -->\n          <!-- <div class=\"form-group row\">\n            <div class=\"col-auto flex-grow\"></div>\n            <div class=\"col-lg-3 d-flex\">\n              <div class=\"form-check my-auto ml-auto\">\n                <input type=\"checkbox\" class=\"form-check-input\" id=\"showChannelNumbers\" [ngModel]=\"showChannelNumbers\"\n                  (ngModelChange)=\"showChannelNumbers = $event\">\n                <label class=\"form-check-label\" for=\"showChannelNumbers\">Show channels</label>\n              </div>\n            </div>\n          </div> -->\n\n          <!-- List of DMX channels -->\n          <div>\n            <div\n              *ngFor=\"let channel of dmxChannels; let i = index\"\n              class=\"dmx-channel\"\n              [class.dmx-channel-occupied]=\"channelOccupied(i)\"\n              [class.dmx-channel-occupied-start]=\"channelOccupiedStart(i)\"\n              [class.dmx-channel-occupied-end]=\"channelOccupiedEnd(i)\"\n              [class.dmx-channel-selected]=\"channelSelected(i)\"\n              [class.dmx-channel-overlapped]=\"channelOverlapped(i)\"\n              (mousedown)=\"channelMouseDown($event)\"\n              (mouseover)=\"channelMouseOver($event)\"\n              [attr.data-index]=\"i\"\n              popover=\"{{ i + 1 }}\"\n              placement=\"top\"\n              triggers=\"mouseenter:mouseleave\"\n            >\n              <div class=\"d-flex w-100 dmx-channel-text\" [attr.data-index]=\"i\" [class.dmx-channel-text-visible]=\"showChannelNumbers\">\n                <div class=\"m-auto\" style=\"font-size: 11px\" [attr.data-index]=\"i\"><small [attr.data-index]=\"i\">&nbsp;</small></div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <!-- Fixture settings -->\n        <div class=\"tab-pane\" id=\"settings\" role=\"tabpanel\">\n          <div *ngIf=\"selectedFixture && selectedFixtureProfile\">\n            <div class=\"form-group row\">\n              <label class=\"col-lg-3 col-form-label\" for=\"fixtureName\">{{ 'designer.fixture-pool.fixture-name' | translate }}</label>\n              <div class=\"col-lg-9\">\n                <input type=\"text\" class=\"form-control\" [(ngModel)]=\"selectedFixture.name\" maxlength=\"200\" id=\"fixtureName\" />\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-lg-3 col-form-label\">{{ 'designer.fixture-pool.mode' | translate }}</label>\n              <div class=\"col-lg-9\">\n                <select\n                  class=\"custom-select\"\n                  [ngModel]=\"selectedFixture.modeShortName\"\n                  (ngModelChange)=\"selectedFixture.modeShortName = $event\"\n                >\n                  <option *ngFor=\"let mode of selectedFixtureProfile.modes\" [ngValue]=\"mode.shortName || mode.name\">\n                    {{ mode.name }}\n                    - {{ fixtureService.getModeChannelCount(selectedFixtureProfile, mode) }}\n                    {{ 'designer.fixture-pool.channels' | translate }}\n                  </option>\n                </select>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-lg-3 col-form-label\">{{ 'designer.fixture-pool.first-channel' | translate }}</label>\n              <div class=\"col-lg-9\">\n                <select\n                  class=\"custom-select\"\n                  [ngModel]=\"selectedFixture.dmxFirstChannel\"\n                  (ngModelChange)=\"selectedFixture.dmxFirstChannel = $event\"\n                >\n                  <option *ngFor=\"let channel of dmxChannels; let i = index\" [ngValue]=\"i\">\n                    {{ i + 1 }}\n                  </option>\n                </select>\n              </div>\n            </div>\n\n            <div class=\"form-group row\">\n              <label class=\"col-lg-3 col-form-label\"></label>\n              <div class=\"col-lg-9\">\n                <button type=\"button\" class=\"btn btn-primary\" (click)=\"addCopy(selectedFixture)\">\n                  {{ 'designer.fixture.add-copy' | translate }}\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n    {{ 'designer.misc.cancel' | translate }}\n  </a>\n  <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\nimport { Fixture } from '../models/fixture';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { ConfigService } from '../services/config.service';\nimport { FixtureService } from '../services/fixture.service';\nimport { PresetService } from '../services/preset.service';\nimport { PreviewService } from '../services/preview.service';\nimport { ProjectService } from '../services/project.service';\nimport { UuidService } from '../services/uuid.service';\nimport { FixturePoolCreateFromFileComponent } from './fixture-pool-create-from-file/fixture-pool-create-from-file.component';\nimport { PresetFixture } from '../models/preset-fixture';\n\n@Component({\n  selector: 'lib-app-fixture-pool',\n  templateUrl: './fixture-pool.component.html',\n  styleUrls: ['./fixture-pool.component.css'],\n})\nexport class FixturePoolComponent implements OnInit {\n  private profiles: FixtureProfile[];\n  public filteredProfiles: FixtureProfile[];\n  public loadingProfiles = false;\n\n  public fixturePool: Fixture[];\n\n  public dmxChannels: number[] = [];\n  public selectedFixture: Fixture;\n  public selectedFixtureProfile: FixtureProfile;\n  public showChannelNumbers = false;\n  public channelDragFixture: Fixture;\n  public channelDragOffset: number;\n\n  public onClose: Subject<number> = new Subject();\n\n  public searchExpression: string;\n\n  public updatingProfiles: boolean;\n\n  constructor(\n    public bsModalRef: BsModalRef,\n    public fixtureService: FixtureService,\n    private uuidService: UuidService,\n    public projectService: ProjectService,\n    private previewService: PreviewService,\n    private translateService: TranslateService,\n    private toastrService: ToastrService,\n    private presetService: PresetService,\n    public configService: ConfigService,\n    private modalService: BsModalService\n  ) {\n    this.fixturePool = [...this.projectService.project.fixtures];\n\n    if (this.fixturePool.length > 0) {\n      this.selectFixture(this.fixturePool[0]);\n    }\n  }\n\n  ngOnInit() {\n    for (let i = 0; i < 512; i++) {\n      this.dmxChannels.push(0);\n    }\n\n    this.loadProfiles();\n  }\n\n  private loadProfiles() {\n    this.loadingProfiles = true;\n\n    this.fixtureService.getSearchProfiles().subscribe((profiles) => {\n      this.profiles = profiles;\n      this.filterProfiles();\n      this.loadingProfiles = false;\n    });\n  }\n\n  selectFixture(fixture: Fixture) {\n    this.selectedFixtureProfile = undefined;\n    if (fixture) {\n      this.selectedFixtureProfile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n    }\n    this.selectedFixture = fixture;\n  }\n\n  filterProfiles() {\n    if (!this.searchExpression || !this.profiles) {\n      this.filteredProfiles = this.profiles;\n      return;\n    }\n\n    this.filteredProfiles = [];\n\n    const keywords = this.searchExpression.split(' ');\n\n    for (const profile of this.profiles) {\n      let foundKeywords = 0;\n\n      for (const keyword of keywords) {\n        if (\n          profile.uuid.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||\n          profile.name.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||\n          profile.manufacturerName.toLowerCase().indexOf(keyword.toLowerCase()) !== -1\n        ) {\n          foundKeywords++;\n        }\n      }\n\n      if (foundKeywords === keywords.length) {\n        this.filteredProfiles.push(profile);\n      }\n    }\n  }\n\n  addFixture(searchProfile: FixtureProfile) {\n    // Load the profile details, if not already done. There is only a\n    // minimal profile passed from the search.\n    this.fixtureService.loadProfileByUuid(searchProfile.uuid).subscribe(() => {\n      const profile = this.fixtureService.getProfileByUuid(searchProfile.uuid);\n      const newFixture = this.fixtureService.addFixture(profile, this.fixturePool);\n      if (newFixture) {\n        this.selectFixture(newFixture);\n      }\n    });\n  }\n\n  addCopy(originalFixture: Fixture) {\n    const fixture = new Fixture();\n\n    fixture.uuid = this.uuidService.getUuid();\n    fixture.profileUuid = originalFixture.profileUuid;\n    fixture.name = originalFixture.name;\n    fixture.modeShortName = originalFixture.modeShortName;\n    fixture.dmxFirstChannel = originalFixture.dmxFirstChannel;\n    fixture.dmxUniverseUuid = originalFixture.dmxUniverseUuid;\n\n    this.fixturePool.push(fixture);\n    this.selectFixture(fixture);\n  }\n\n  removeFixture(fixture: Fixture) {\n    for (let i = 0; i < this.fixturePool.length; i++) {\n      if (this.fixturePool[i].uuid === fixture.uuid) {\n        if (this.selectedFixture === this.fixturePool[i]) {\n          this.selectFixture(undefined);\n        }\n        this.fixturePool.splice(i, 1);\n        break;\n      }\n    }\n\n    if (!this.selectedFixture && this.fixturePool && this.fixturePool.length > 0) {\n      this.selectFixture((this.selectedFixture = this.fixturePool[0]));\n    }\n\n    // remove unused profiles\n    for (let i = 0; i < this.projectService.project.fixtureProfiles.length; i++) {\n      let profileUsed = false;\n\n      for (const fixtureInPool of this.fixturePool) {\n        if (fixtureInPool.profileUuid === this.projectService.project.fixtureProfiles[i].uuid) {\n          profileUsed = true;\n          break;\n        }\n      }\n\n      if (!profileUsed) {\n        this.projectService.project.fixtureProfiles.splice(i, 1);\n      }\n    }\n  }\n\n  channelOccupied(index: number): boolean {\n    for (const fixture of this.fixturePool) {\n      const profile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n      const mode = this.fixtureService.getModeByFixture(profile, fixture);\n      const channelCount = this.fixtureService.getModeChannelCount(profile, mode);\n\n      if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + channelCount) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  channelOccupiedStart(index: number): boolean {\n    for (const fixture of this.fixturePool) {\n      if (index === fixture.dmxFirstChannel) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  channelOccupiedEnd(index: number): boolean {\n    for (const fixture of this.fixturePool) {\n      const profile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n      const mode = this.fixtureService.getModeByFixture(profile, fixture);\n      const channelCount = this.fixtureService.getModeChannelCount(profile, mode);\n\n      if (index === fixture.dmxFirstChannel + channelCount - 1) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  channelOverlapped(index: number): boolean {\n    let occupiedFixture: Fixture;\n\n    for (const fixture of this.fixturePool) {\n      const profile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n      const mode = this.fixtureService.getModeByFixture(profile, fixture);\n      const channelCount = this.fixtureService.getModeChannelCount(profile, mode);\n\n      if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + channelCount) {\n        if (occupiedFixture) {\n          if (occupiedFixture.dmxFirstChannel !== fixture.dmxFirstChannel || occupiedFixture.modeShortName !== fixture.modeShortName) {\n            // fixtures are allowed to overlap, if they start at the same channel and\n            // use the same mode. otherwise it's not allowed.\n            return true;\n          }\n        } else {\n          occupiedFixture = fixture;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  channelMouseDown(event: any) {\n    // start dragging\n    const selectedIndex = event.target.dataset.index;\n    let newSelectedFixture: Fixture;\n\n    // find a dragging fixture and select it, but don't change the selection, if the\n    // currently selected fixture might also be selected (on overlapped fixtures)\n    for (const fixture of this.fixturePool) {\n      const profile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n      const mode = this.fixtureService.getModeByFixture(profile, fixture);\n      const channelCount = this.fixtureService.getModeChannelCount(profile, mode);\n\n      if (selectedIndex >= fixture.dmxFirstChannel && selectedIndex <= fixture.dmxFirstChannel + channelCount - 1) {\n        if (this.selectedFixture === fixture) {\n          newSelectedFixture = fixture;\n          break;\n        }\n\n        if (!newSelectedFixture) {\n          newSelectedFixture = fixture;\n        }\n      }\n    }\n\n    if (newSelectedFixture) {\n      if (newSelectedFixture !== this.selectedFixture) {\n        this.selectFixture(newSelectedFixture);\n      }\n\n      this.channelDragFixture = newSelectedFixture;\n      this.channelDragOffset = selectedIndex - newSelectedFixture.dmxFirstChannel;\n    }\n  }\n\n  channelSelected(index: number): boolean {\n    if (!this.selectedFixture) {\n      return false;\n    }\n\n    if (index >= this.selectedFixture.dmxFirstChannel) {\n      const profile = this.fixtureService.getProfileByUuid(this.selectedFixture.profileUuid);\n      const mode = this.fixtureService.getModeByFixture(profile, this.selectedFixture);\n      const channelCount = this.fixtureService.getModeChannelCount(profile, mode);\n\n      if (index < this.selectedFixture.dmxFirstChannel + channelCount) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  // register mouse up globally (e.g. also outside the DMX mapping)\n  @HostListener('window:mouseup', ['$event'])\n  mouseUp(event: any) {\n    // finish dragging\n    this.channelDragFixture = undefined;\n    this.channelDragOffset = undefined;\n  }\n\n  channelMouseOver(event: any) {\n    if (!this.channelDragFixture) {\n      return;\n    }\n\n    // perform dragging\n    const selectedIndex = event.target.dataset.index;\n    const profile = this.fixtureService.getProfileByUuid(this.channelDragFixture.profileUuid);\n    const mode = this.fixtureService.getModeByFixture(profile, this.selectedFixture);\n    const channelCount = this.fixtureService.getModeChannelCount(profile, mode);\n\n    if (selectedIndex - this.channelDragOffset >= 0 && selectedIndex - this.channelDragOffset + channelCount - 1 <= 511) {\n      this.channelDragFixture.dmxFirstChannel = selectedIndex - this.channelDragOffset;\n    }\n  }\n\n  ok() {\n    // don't allow OK if overlapping fixtures exist\n    for (let i = 0; i < this.dmxChannels.length; i++) {\n      if (this.channelOverlapped(i)) {\n        const msg = 'designer.fixture-pool.channel-occupied';\n        const title = 'designer.fixture-pool.channel-occupied-title';\n\n        this.translateService.get([msg, title]).subscribe((result) => {\n          this.toastrService.error(result[msg], result[title]);\n        });\n\n        return;\n      }\n    }\n\n    this.projectService.project.fixtures = this.fixturePool;\n\n    // remove deleted fixtures from preset fixtures\n    for (let i = this.projectService.project.presetFixtures.length - 1; i >= 0; i--) {\n      let found = false;\n      const presetFixture = this.projectService.project.presetFixtures[i];\n      for (let fixture of this.projectService.project.fixtures) {\n        if (presetFixture.fixtureUuid === fixture.uuid) {\n          found = true;\n          break;\n        }\n      }\n      if (!found) {\n        this.projectService.project.presetFixtures.splice(i, 1);\n      }\n    }\n\n    // add the new fixtures to the preset fixtures\n    for (let fixture of this.projectService.project.fixtures) {\n      let found = false;\n      for (let presetFixture of this.projectService.project.presetFixtures) {\n        if (presetFixture.fixtureUuid === fixture.uuid) {\n          found = true;\n          break;\n        }\n      }\n      if (!found) {\n        if (this.fixtureService.fixtureHasGeneralChannel(fixture)) {\n          const presetFixture = new PresetFixture();\n          presetFixture.fixtureUuid = fixture.uuid;\n          this.projectService.project.presetFixtures.push(presetFixture);\n        }\n\n        const pixelKeys = this.fixtureService.fixtureGetUniquePixelKeys(fixture);\n\n        for (let pixelKey of pixelKeys) {\n          const presetFixture = new PresetFixture();\n          presetFixture.fixtureUuid = fixture.uuid;\n          presetFixture.pixelKey = pixelKey;\n          this.projectService.project.presetFixtures.push(presetFixture);\n        }\n      }\n    }\n\n    this.fixtureService.updateCachedFixtures();\n    this.presetService.removeDeletedFixtures();\n    this.previewService.updateFixtureSetup();\n    this.presetService.updateFixtureSelection();\n    this.presetService.fixtureSelectionChanged.next();\n    this.presetService.previewLive();\n\n    this.onClose.next(1);\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.onClose.next(2);\n    this.bsModalRef.hide();\n  }\n\n  updateProfiles() {\n    this.updatingProfiles = true;\n\n    // TODO\n    this.fixtureService\n      .updateProfiles()\n      .pipe(\n        finalize(() => {\n          this.updatingProfiles = false;\n        }),\n        catchError(() => {\n          const msg = 'designer.fixture-pool.profiles-update-error';\n          const title = 'designer.fixture-pool.profiles-update-error-title';\n\n          this.translateService.get([msg, title]).subscribe((result) => {\n            this.toastrService.error(result[msg], result[title]);\n          });\n\n          return undefined;\n        })\n      )\n      .subscribe(() => {\n        this.loadProfiles();\n\n        const msg = 'designer.fixture-pool.profiles-updated';\n        const title = 'designer.fixture-pool.profiles-updated-title';\n\n        this.translateService.get([msg, title]).subscribe((result) => {\n          this.toastrService.success(result[msg], result[title]);\n        });\n      });\n  }\n\n  createFixtureFromProfileFile() {\n    const bsModalRef = this.modalService.show(FixturePoolCreateFromFileComponent, { keyboard: true, ignoreBackdropClick: false });\n    (bsModalRef.content as FixturePoolCreateFromFileComponent).onClose.subscribe((profile: FixtureProfile) => {\n      const newFixture = this.fixtureService.addFixture(profile, this.fixturePool);\n      this.selectFixture(newFixture);\n    });\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { FixturePoolComponent } from '../fixture-pool/fixture-pool.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FixturePoolService {\n  private fixturePoolOpened = false;\n\n  constructor(private modalService: BsModalService) {}\n\n  open() {\n    if (this.fixturePoolOpened) {\n      return;\n    }\n\n    this.fixturePoolOpened = true;\n    const bsModalRef = this.modalService.show(FixturePoolComponent, { keyboard: false, ignoreBackdropClick: true, class: 'modal-full' });\n    (bsModalRef.content as FixturePoolComponent).onClose.subscribe((result) => {\n      this.fixturePoolOpened = false;\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class HotkeyTargetExcludeService {\n  constructor() {}\n\n  exclude(event: any): boolean {\n    // don't react on certain targets (e.g. the user is inside an input field)\n    if (!event.target) {\n      return false;\n    }\n\n    if (event.target.nodeName === 'INPUT') {\n      return true;\n    }\n\n    return false;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ConfigService } from './config.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class IntroService {\n  showIntro = false;\n  activeStep = 'start';\n  positionTopPercentage = 50;\n  positionLeftPercentage = 50;\n  stylePosition = 'top: calc(50% - 150px); left: calc(50% - 200px);';\n  stepChanged: Subject<void> = new Subject<void>();\n\n  constructor(private configService: ConfigService) {}\n\n  refresh() {\n    // called, as soon as the config has been updated\n    if (this.configService.intro) {\n      if (localStorage.getItem('showIntro')) {\n        this.showIntro = localStorage.getItem('showIntro') === 'true';\n      } else {\n        this.showIntro = true;\n      }\n    }\n  }\n\n  setShowIntro(value: boolean) {\n    this.showIntro = value;\n    if (value) {\n      localStorage.setItem('showIntro', 'true');\n    } else {\n      localStorage.setItem('showIntro', 'false');\n    }\n    this.stepChanged.next();\n  }\n\n  reset() {\n    this.activeStep = 'start';\n    this.setShowIntro(true);\n    this.stepChanged.next();\n  }\n\n  showStep(step: string): boolean {\n    if (!this.showIntro) {\n      return false;\n    }\n\n    if (this.activeStep !== step) {\n      return false;\n    }\n\n    return true;\n  }\n\n  next() {\n    switch (this.activeStep) {\n      case 'start':\n        this.activeStep = 'preview';\n        this.positionTopPercentage = 60;\n        this.positionLeftPercentage = 40;\n        break;\n      case 'preview':\n        this.activeStep = 'fixtures';\n        this.positionTopPercentage = 40;\n        this.positionLeftPercentage = 30;\n        break;\n      case 'fixtures':\n        this.activeStep = 'presets';\n        this.positionTopPercentage = 30;\n        this.positionLeftPercentage = 50;\n        break;\n      case 'presets':\n        this.activeStep = 'capabilities';\n        this.positionTopPercentage = 50;\n        this.positionLeftPercentage = 60;\n        break;\n      case 'capabilities':\n        this.activeStep = 'scenes';\n        this.positionTopPercentage = 50;\n        this.positionLeftPercentage = 40;\n        break;\n      case 'scenes':\n        this.activeStep = 'timeline';\n        this.positionTopPercentage = 40;\n        this.positionLeftPercentage = 50;\n        break;\n      case 'timeline':\n        this.activeStep = 'finish';\n        this.positionTopPercentage = 50;\n        this.positionLeftPercentage = 50;\n        break;\n    }\n\n    this.stepChanged.next();\n  }\n\n  back() {\n    switch (this.activeStep) {\n      case 'preview':\n        this.activeStep = 'start';\n        this.positionTopPercentage = 50;\n        this.positionLeftPercentage = 50;\n        break;\n      case 'fixtures':\n        this.activeStep = 'preview';\n        this.positionTopPercentage = 60;\n        this.positionLeftPercentage = 40;\n        break;\n      case 'presets':\n        this.activeStep = 'fixtures';\n        this.positionTopPercentage = 30;\n        this.positionLeftPercentage = 50;\n        break;\n      case 'capabilities':\n        this.activeStep = 'presets';\n        this.positionTopPercentage = 40;\n        this.positionLeftPercentage = 30;\n        break;\n      case 'scenes':\n        this.activeStep = 'capabilities';\n        this.positionTopPercentage = 50;\n        this.positionLeftPercentage = 60;\n        break;\n      case 'timeline':\n        this.activeStep = 'scenes';\n        this.positionTopPercentage = 50;\n        this.positionLeftPercentage = 40;\n        break;\n      case 'finish':\n        this.activeStep = 'timeline';\n        this.positionTopPercentage = 40;\n        this.positionLeftPercentage = 50;\n        break;\n    }\n\n    this.stepChanged.next();\n  }\n}\n","<form (ngSubmit)=\"login()\">\n  <div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">{{ 'designer.user.login-title' | translate }}</h4>\n    <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n      <span aria-hidden=\"true\">&times;</span>\n    </button>\n  </div>\n  <div class=\"modal-body\">\n    <div class=\"form-group row\">\n      <label for=\"email\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.email' | translate }}</label>\n      <div class=\"col-sm-8\">\n        <div class=\"input-group\">\n          <div class=\"input-group-prepend\">\n            <div class=\"input-group-text\"><i class=\"fa fa-fw fa-envelope-o\" aria-hidden=\"true\"></i></div>\n          </div>\n          <input\n            required\n            [disabled]=\"loggingIn\"\n            name=\"email\"\n            [(ngModel)]=\"email\"\n            type=\"email\"\n            class=\"form-control\"\n            id=\"email\"\n            placeholder=\"email@example.com\"\n          />\n        </div>\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"password\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.password' | translate }}</label>\n      <div class=\"col-sm-8\">\n        <div class=\"input-group\">\n          <div class=\"input-group-prepend\">\n            <div class=\"input-group-text\"><i class=\"fa fa-fw fa-lock\" aria-hidden=\"true\"></i></div>\n          </div>\n          <input\n            required\n            [disabled]=\"loggingIn\"\n            name=\"password\"\n            [(ngModel)]=\"password\"\n            type=\"password\"\n            class=\"form-control\"\n            id=\"password\"\n            placeholder=\"{{ 'designer.user.password' | translate }}\"\n          />\n        </div>\n      </div>\n    </div>\n    <div *ngIf=\"error\" class=\"alert alert-primary\" role=\"alert\">\n      {{ 'designer.user.error.' + error | translate }}\n    </div>\n  </div>\n  <div class=\"modal-footer\">\n    <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n      {{ 'designer.misc.cancel' | translate }}\n    </a>\n    <button [disabled]=\"loggingIn\" type=\"submit\" class=\"btn btn-primary\">\n      <i *ngIf=\"loggingIn\" class=\"fa fa-spinner fa-pulse fa-fw\"></i> {{ 'designer.user.login' | translate }}\n    </button>\n  </div>\n</form>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { UserService } from '../../services/user.service';\n\n@Component({\n  selector: 'lib-user-login',\n  templateUrl: './user-login.component.html',\n  styleUrls: ['./user-login.component.css'],\n})\nexport class UserLoginComponent implements OnInit {\n  error = '';\n  loggingIn = false;\n\n  email = '';\n  password = '';\n\n  // emits, when logged in\n  subject: Subject<void>;\n\n  constructor(private bsModalRef: BsModalRef, private userService: UserService) {}\n\n  ngOnInit() {}\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  login() {\n    this.loggingIn = true;\n    this.error = '';\n\n    if (!this.email || !this.password) {\n      this.error = 'fill-all-fields';\n      this.loggingIn = false;\n      return;\n    }\n\n    this.userService.login(this.email, this.password).subscribe(\n      () => {\n        this.bsModalRef.hide();\n        if (this.subject) {\n          this.subject.next();\n        }\n      },\n      (response) => {\n        if (response.error && response.error.error) {\n          this.error = response.error.error;\n        } else {\n          this.error = 'internal';\n        }\n        this.loggingIn = false;\n      }\n    );\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.login();\n  }\n}\n","<form (ngSubmit)=\"register()\">\n  <div class=\"modal-header\">\n    <h4 class=\"modal-title pull-left\">{{ 'designer.user.register-title' | translate }}</h4>\n    <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n      <span aria-hidden=\"true\">&times;</span>\n    </button>\n  </div>\n  <div class=\"modal-body\">\n    <div *ngIf=\"subject\" class=\"alert alert-success\" role=\"alert\">\n      {{ 'designer.user.login-required' | translate }}\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"username\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.username' | translate }}</label>\n      <div class=\"col-sm-8\">\n        <div class=\"input-group\">\n          <div class=\"input-group-prepend\">\n            <div class=\"input-group-text\"><i class=\"fa fa-fw fa-user\" aria-hidden=\"true\"></i></div>\n          </div>\n          <input\n            required\n            [disabled]=\"registering\"\n            name=\"username\"\n            [(ngModel)]=\"username\"\n            type=\"text\"\n            class=\"form-control\"\n            id=\"username\"\n            placeholder=\"John Doe\"\n          />\n        </div>\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"email\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.email' | translate }}</label>\n      <div class=\"col-sm-8\">\n        <div class=\"input-group\">\n          <div class=\"input-group-prepend\">\n            <div class=\"input-group-text\"><i class=\"fa fa-fw fa-envelope-o\" aria-hidden=\"true\"></i></div>\n          </div>\n          <input\n            required\n            [disabled]=\"registering\"\n            name=\"email\"\n            [(ngModel)]=\"email\"\n            type=\"email\"\n            class=\"form-control\"\n            id=\"email\"\n            placeholder=\"email@example.com\"\n          />\n        </div>\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"password\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.password' | translate }}</label>\n      <div class=\"col-sm-8\">\n        <div class=\"input-group\">\n          <div class=\"input-group-prepend\">\n            <div class=\"input-group-text\"><i class=\"fa fa-fw fa-lock\" aria-hidden=\"true\"></i></div>\n          </div>\n          <input\n            required\n            [disabled]=\"registering\"\n            name=\"password\"\n            [(ngModel)]=\"password\"\n            type=\"password\"\n            class=\"form-control\"\n            id=\"password\"\n            placeholder=\"{{ 'designer.user.password' | translate }}\"\n          />\n        </div>\n      </div>\n    </div>\n    <div class=\"form-group row\">\n      <label for=\"passwordRepeat\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.password-repeat' | translate }}</label>\n      <div class=\"col-sm-8\">\n        <div class=\"input-group\">\n          <div class=\"input-group-prepend\">\n            <div class=\"input-group-text\"><i class=\"fa fa-fw fa-lock\" aria-hidden=\"true\"></i></div>\n          </div>\n          <input\n            required\n            [disabled]=\"registering\"\n            name=\"passwordRepeat\"\n            [(ngModel)]=\"passwordRepeat\"\n            type=\"password\"\n            class=\"form-control\"\n            id=\"passwordRepeat\"\n            placeholder=\"{{ 'designer.user.password' | translate }}\"\n          />\n        </div>\n      </div>\n    </div>\n    <div *ngIf=\"error\" class=\"alert alert-primary\" role=\"alert\">\n      {{ 'designer.user.error.' + error | translate }}\n    </div>\n    <a href=\"#\" (click)=\"login(); (false)\">\n      <p class=\"mt-3 mb-0\" style=\"text-align: center\">{{ 'designer.user.already-have-account' | translate }}</p>\n    </a>\n  </div>\n  <div class=\"modal-footer\">\n    <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n      {{ 'designer.misc.cancel' | translate }}\n    </a>\n    <button [disabled]=\"registering\" type=\"submit\" class=\"btn btn-primary\">\n      <i *ngIf=\"registering\" class=\"fa fa-spinner fa-pulse fa-fw\"> </i>{{ 'designer.user.register' | translate }}\n    </button>\n  </div>\n</form>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { UserService } from '../../services/user.service';\nimport { UserLoginComponent } from '../user-login/user-login.component';\n\n@Component({\n  selector: 'lib-user-register',\n  templateUrl: './user-register.component.html',\n  styleUrls: ['./user-register.component.css'],\n})\nexport class UserRegisterComponent implements OnInit {\n  error = '';\n  registering = false;\n\n  username = '';\n  email = '';\n  password = '';\n  passwordRepeat = '';\n\n  // emits, when logged in\n  subject: Subject<void>;\n\n  constructor(private bsModalRef: BsModalRef, private modalService: BsModalService, private userService: UserService) {}\n\n  ngOnInit() {}\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  login() {\n    this.bsModalRef.hide();\n    this.modalService.show(UserLoginComponent, { keyboard: true, ignoreBackdropClick: false, initialState: { subject: this.subject } });\n  }\n\n  private emailIsValid(email: string): boolean {\n    // tslint:disable-next-line:max-line-length\n    const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n    return re.test(String(email).toLowerCase());\n  }\n\n  register() {\n    this.registering = true;\n    this.error = '';\n\n    if (!this.username || !this.email || !this.password || !this.passwordRepeat) {\n      this.error = 'fill-all-fields';\n      this.registering = false;\n      return;\n    }\n\n    if (!this.emailIsValid(this.email)) {\n      this.error = 'email-valid';\n      this.registering = false;\n      return;\n    }\n\n    if (this.password !== this.passwordRepeat) {\n      this.error = 'password-mismatch';\n      this.registering = false;\n      return;\n    }\n\n    this.userService.register(this.email, this.username, this.password).subscribe(\n      () => {\n        // automatically login after registering\n        this.userService.login(this.email, this.password).subscribe(() => {\n          this.registering = false;\n          this.bsModalRef.hide();\n        });\n      },\n      (response) => {\n        if (response.error && response.error.error) {\n          this.error = response.error.error;\n        } else {\n          this.error = 'internal';\n        }\n        this.registering = false;\n      }\n    );\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.register();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable, of, Subject } from 'rxjs';\nimport { UserRegisterComponent } from '../user/user-register/user-register.component';\nimport { ConfigService } from './config.service';\nimport { UserService } from './user.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UserEnsureLoginService {\n  constructor(private userService: UserService, private modalService: BsModalService, private configService: ConfigService) {}\n\n  // show the login form and log a user in, if required\n  login(): Observable<void> {\n    if (this.userService.isLoggedIn()) {\n      return of(null);\n    }\n\n    if (!this.configService.loginAvailable) {\n      return of(null);\n    }\n\n    const subject = new Subject<void>();\n    this.modalService.show(UserRegisterComponent, { keyboard: true, ignoreBackdropClick: false, initialState: { subject } });\n    return subject;\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { map } from 'rxjs/operators';\nimport { ConfigService } from '../services/config.service';\n\n@Component({\n  selector: 'app-dropzone',\n  templateUrl: './dropzone.component.html',\n  styleUrl: './dropzone.component.css',\n})\nexport class DropzoneComponent {\n  @Output() error = new EventEmitter();\n  @Output() success = new EventEmitter();\n  @Output() addedFile = new EventEmitter();\n\n  private _url: string;\n  private _acceptedFiles: string;\n  private _maxFiles: number = undefined;\n\n  @Input()\n  set url(value: string) {\n    this._url = value;\n    this.updateConfig();\n  }\n  @Input()\n  set acceptedFiles(value: string) {\n    this._acceptedFiles = value;\n    this.updateConfig();\n  }\n  @Input()\n  set maxFiles(value: number) {\n    this._maxFiles = value;\n    this.updateConfig();\n  }\n\n  dropzoneConfig: DropzoneConfigInterface;\n  uploadMessage: string;\n\n  constructor(private translateService: TranslateService, private configService: ConfigService) {\n    this.translateService\n      .get('designer.misc.dropzone-message')\n      .pipe(\n        map((result) => {\n          this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n        })\n      )\n      .subscribe();\n\n    this.updateConfig();\n  }\n\n  updateConfig() {\n    this.dropzoneConfig = {\n      url: this.configService.restUrl + this._url,\n      paramName: 'file',\n      addRemoveLinks: false,\n      maxFilesize: null /* unlimited */,\n      acceptedFiles: this._acceptedFiles,\n      timeout: 0,\n      chunking: this.configService.dropzoneChunking,\n      forceChunking: this.configService.dropzoneChunking,\n      parallelUploads: 1,\n      maxFiles: this._maxFiles,\n      previewTemplate: `\n      <div class=\"dz-preview dz-file-preview\">\n        <!-- The attachment details -->\n        <div class=\"dz-details\" style=\"text-align: left\">\n          <i class=\"fa fa-file-o\"></i> <span data-dz-name></span> <small><span class=\"label label-default file-size\" data-dz-size></span></small>\n        </div>\n\n        <!--div class=\"mt-5\">\n          <span data-dz-errormessage></span>\n        </div-->\n\n        <div class=\"progress mt-4 mb-1\" style=\"height: 10px\">\n          <div class=\"progress-bar progress-bar-striped progress-bar-animated\" role=\"progressbar\" style=\"width:0%;\" data-dz-uploadprogress></div>\n        </div>\n      </div>\n      `,\n    };\n  }\n}\n","<dropzone\n  [config]=\"dropzoneConfig\"\n  [useDropzoneClass]=\"'false'\"\n  [message]=\"uploadMessage\"\n  (error)=\"error.emit($event)\"\n  (success)=\"success.emit($event)\"\n  (addedFile)=\"addedFile.emit($event)\"\n></dropzone>\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ composition.name }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.composition-name' | translate }}</label>\n    <div class=\"col-lg-8 d-flex\">\n      <input\n        type=\"text\"\n        class=\"form-control\"\n        [ngModel]=\"composition.name\"\n        (ngModelChange)=\"composition.name = $event\"\n        [typeahead]=\"existingCompositionNames\"\n      />\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.composition-sync-type' | translate }}</label>\n    <div class=\"col-lg-8 d-flex\">\n      <select class=\"custom-select\" [ngModel]=\"composition.syncType\" (ngModelChange)=\"composition.syncType = $event\">\n        <!-- TODO -->\n        <!-- <option value=\"none\">{{ 'designer.timeline.composition-sync-type-none' | translate }}</option> -->\n        <option value=\"audio\">{{ 'designer.timeline.composition-sync-type-audio' | translate }}</option>\n      </select>\n    </div>\n  </div>\n\n  <div *ngIf=\"composition.syncType == 'audio'\" class=\"row\">\n    <div class=\"px-3 w-100\">\n      <!-- Selected file -->\n      <div class=\"card border-secondary mb-3\">\n        <div class=\"card-body\">\n          <!-- No file selected -->\n          <div *ngIf=\"!composition.audioFileName\">\n            {{ 'designer.timeline.composition-no-file-selected' | translate }}\n          </div>\n\n          <!-- A file is selected -->\n          <div *ngIf=\"composition.audioFileName\">\n            {{ composition.audioFileName }}\n          </div>\n        </div>\n      </div>\n\n      <!-- Choose file -->\n      <ul *ngIf=\"configService.enableMediaLibrary\" class=\"nav nav-tabs mb-3\" id=\"myTab\" role=\"tablist\">\n        <li class=\"nav-item\">\n          <a class=\"nav-link active\" id=\"upload-tab\" data-toggle=\"tab\" href=\"#upload\" role=\"tab\">\n            <i class=\"fa fa-upload\" aria-hidden=\"true\"></i>\n            {{ 'designer.timeline.composition-file-upload' | translate }}\n          </a>\n        </li>\n        <li class=\"nav-item\">\n          <a class=\"nav-link\" id=\"media-library-tab\" data-toggle=\"tab\" href=\"#media-library\" role=\"tab\">\n            <i class=\"fa fa-folder-o\" aria-hidden=\"true\"></i>\n            {{ 'designer.timeline.composition-file-library' | translate }}\n          </a>\n        </li>\n      </ul>\n\n      <div class=\"tab-content\" id=\"myTabContent\">\n        <!-- Upload -->\n        <div class=\"tab-pane fade show active\" id=\"upload\" role=\"tabpanel\">\n          <app-dropzone\n            [url]=\"getDropzoneUrl()\"\n            [acceptedFiles]=\"'audio/*'\"\n            (error)=\"onUploadError($event)\"\n            (success)=\"onUploadSuccess($event)\"\n            (queuecomplete)=\"onQueueComplete($event)\"\n            (addedfile)=\"onAddedFile($event)\"\n          ></app-dropzone>\n        </div>\n\n        <!-- Media library -->\n        <div class=\"tab-pane fade\" id=\"media-library\" role=\"tabpanel\">\n          <input\n            type=\"text\"\n            class=\"form-control input-block mb-3\"\n            id=\"searchFileList\"\n            placeholder=\"{{ 'designer.misc.search' | translate }}\"\n            (input)=\"filterExistingFiles($event.target.value)\"\n          />\n\n          <div class=\"card border-secondary\" style=\"height: 200px; overflow-y: scroll\">\n            <div class=\"card-body p-0\">\n              <div class=\"list-group list-group-flush\">\n                <a\n                  *ngFor=\"let existingFile of filteredExistingFiles | sort : 'name'\"\n                  class=\"list-group-item\"\n                  [class.active]=\"composition.audioFileName == existingFile\"\n                  href=\"#\"\n                  (click)=\"selectExistingFile(existingFile); (false)\"\n                >\n                  <div class=\"row\">\n                    <div class=\"col-auto my-auto flex-grow text-break-word\">\n                      {{ existingFile }}\n                    </div>\n\n                    <div class=\"col-auto my-auto pl-0 text-danger float-right\" (click)=\"deleteFile(existingFile); (false)\">\n                      <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n                    </div>\n                  </div>\n                </a>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n    {{ 'designer.misc.cancel' | translate }}\n  </a>\n  <button [disabled]=\"uploading\" type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Composition } from '../../models/composition';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectService } from '../../services/project.service';\nimport { TimelineService } from '../../services/timeline.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n  selector: 'lib-app-composition-settings',\n  templateUrl: './composition-settings.component.html',\n  styleUrls: ['./composition-settings.component.css'],\n})\nexport class CompositionSettingsComponent implements OnInit {\n  composition: Composition;\n  existingCompositionNames: string[] = [];\n\n  public onClose: Subject<number> = new Subject();\n\n  public dropzoneConfig: DropzoneConfigInterface;\n  public uploadMessage: string;\n\n  public existingFiles: string[] = [];\n  public filteredExistingFiles: string[] = [];\n\n  public uploading = false;\n\n  constructor(\n    public bsModalRef: BsModalRef,\n    private timelineService: TimelineService,\n    public configService: ConfigService,\n    private translateService: TranslateService,\n    private http: HttpClient,\n    private warningDialogService: WarningDialogService,\n    private toastrService: ToastrService,\n    public projectService: ProjectService\n  ) {}\n\n  ngOnInit() {\n    this.loadFiles();\n\n    if (this.timelineService.externalCompositionsAvailable) {\n      this.timelineService.getExternalCompositionNames().subscribe((compositionNames) => {\n        this.existingCompositionNames = compositionNames;\n      });\n    }\n  }\n\n  getDropzoneUrl() {\n    const projectId = this.projectService.project.id ? this.projectService.project.id : '';\n    return 'file/upload?compositionUuid=' + this.composition.uuid + '&projectId=' + projectId;\n  }\n\n  ok() {\n    this.onClose.next(1);\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.onClose.next(2);\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n\n  private getNameFromFile(data: any): string {\n    return data.name;\n  }\n\n  private loadFiles() {\n    if (!this.configService.enableMediaLibrary) {\n      return;\n    }\n\n    this.http\n      .get('file/list')\n      .pipe(\n        map((response: object[]) => {\n          this.existingFiles = [];\n\n          for (const file of response) {\n            // only load audio files\n            if ((file as any).audioFile) {\n              this.existingFiles.push(this.getNameFromFile((file as any).audioFile));\n            }\n          }\n\n          this.filterExistingFiles();\n        })\n      )\n      .subscribe();\n  }\n\n  public onUploadError(args: any) {\n    const msg = 'designer.misc.toast-upload-error';\n    const title = 'designer.misc.toast-upload-error-title';\n    this.translateService.get([msg, title]).subscribe((result) => {\n      this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n      // Hide the preview element\n      args[0].previewElement.hidden = true;\n    });\n  }\n\n  public onUploadSuccess(args: any) {\n    this.loadFiles();\n\n    // allow to guess the bpm of the newly uploaded file\n    this.composition.tempoGuessed = false;\n\n    // hide the preview element\n    args[0].previewElement.hidden = true;\n\n    // select this file\n    this.composition.audioFileName = args[0].name;\n\n    if (this.configService.enableMediaLibrary) {\n      // the file has been uploaded to the media library\n      this.composition.audioFileInLibrary = true;\n    }\n  }\n\n  public onQueueComplete(args: any) {\n    this.uploading = false;\n  }\n\n  public onAddedFile(args: any) {\n    this.uploading = true;\n  }\n\n  // Filter the existing files\n  filterExistingFiles(searchValue?: string) {\n    if (!searchValue) {\n      this.filteredExistingFiles = this.existingFiles;\n      return;\n    }\n\n    this.filteredExistingFiles = [];\n\n    for (const file of this.existingFiles) {\n      if (file.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1) {\n        this.filteredExistingFiles.push(file);\n      }\n    }\n  }\n\n  selectExistingFile(existingFile: string) {\n    this.composition.audioFileName = existingFile;\n\n    // the file has been selected from the media library\n    this.composition.audioFileInLibrary = true;\n  }\n\n  deleteFile(existingFile: string) {\n    this.warningDialogService\n      .show('designer.timeline.warning-delete-file')\n      .pipe(\n        map((result) => {\n          if (result) {\n            this.http\n              .post('file/delete?name=' + existingFile + '&type=AUDIO', undefined)\n              .pipe(\n                map((response: Response) => {\n                  this.loadFiles();\n                })\n              )\n              .subscribe();\n          }\n        })\n      )\n      .subscribe();\n  }\n}\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ 'designer.timeline.grid' | translate }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.grid-type' | translate }}</label>\n    <div class=\"col-lg-8\">\n      <select class=\"custom-select\" [ngModel]=\"gridType\" (ngModelChange)=\"gridType = $event\">\n        <option value=\"time\">{{ 'designer.timeline.grid-type-time-based' | translate }}</option>\n        <option value=\"musical\">{{ 'designer.timeline.grid-type-musical' | translate }}</option>\n      </select>\n    </div>\n  </div>\n\n  <div *ngIf=\"gridType == 'musical'\" class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.beats-per-minute' | translate }}</label>\n    <div class=\"col-lg-8\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"beatsPerMinute\" (ngModelChange)=\"beatsPerMinute = $event\" />\n    </div>\n  </div>\n\n  <div *ngIf=\"gridType == 'musical'\" class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.time-signature' | translate }}</label>\n    <div class=\"col-lg-8\">\n      <input\n        type=\"text\"\n        class=\"form-control\"\n        [ngModel]=\"timeSignatureUpper\"\n        (ngModelChange)=\"timeSignatureUpper = $event\"\n        style=\"float: left; width: 40px\"\n      />\n      <div class=\"d-flex px-2 h-100\" style=\"float: left\">\n        <div class=\"m-auto\">/</div>\n      </div>\n      <input\n        type=\"text\"\n        class=\"form-control\"\n        [ngModel]=\"timeSignatureLower\"\n        (ngModelChange)=\"timeSignatureLower = $event\"\n        style=\"width: 40px\"\n      />\n    </div>\n  </div>\n\n  <div *ngIf=\"gridType == 'musical'\" class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.grid-resolution' | translate }}</label>\n    <div class=\"col-lg-8\">\n      <select class=\"custom-select\" [ngModel]=\"gridResolution\" (ngModelChange)=\"gridResolution = $event\">\n        <option value=\"1\">1/1</option>\n        <option value=\"2\">1/2</option>\n        <option value=\"4\">1/4</option>\n        <option value=\"8\">1/8</option>\n        <option value=\"16\">1/16</option>\n        <option value=\"32\">1/32</option>\n        <option value=\"64\">1/64</option>\n      </select>\n    </div>\n  </div>\n\n  <div *ngIf=\"gridType == 'musical'\" class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.grid-offset' | translate }}</label>\n    <div class=\"col-lg-8\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"gridOffsetMillis\" (ngModelChange)=\"gridOffsetMillis = $event\" />\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\"></label>\n    <div class=\"col-lg-8\">\n      <div class=\"form-check\">\n        <input type=\"checkbox\" [ngModel]=\"snapToGrid\" (ngModelChange)=\"snapToGrid = $event\" class=\"form-check-input\" id=\"snapToGrid\" />\n\n        <label class=\"form-check-label\" for=\"snapToGrid\">\n          {{ 'designer.timeline.snap-to-grid' | translate }}\n        </label>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n    {{ 'designer.misc.cancel' | translate }}\n  </a>\n  <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { TimelineService } from '../../services/timeline.service';\n\n@Component({\n  selector: 'lib-app-timeline-grid',\n  templateUrl: './timeline-grid.component.html',\n  styleUrls: ['./timeline-grid.component.css'],\n})\nexport class TimelineGridComponent implements OnInit {\n  public gridType: string;\n  public beatsPerMinute: number;\n  public timeSignatureUpper: number;\n  public timeSignatureLower: number;\n  public snapToGrid: boolean;\n  public gridOffsetMillis: number;\n  public gridResolution: number;\n\n  constructor(public bsModalRef: BsModalRef, public timelineService: TimelineService) {\n    this.gridType = timelineService.selectedComposition.gridType;\n    this.beatsPerMinute = timelineService.selectedComposition.beatsPerMinute;\n    this.timeSignatureUpper = timelineService.selectedComposition.timeSignatureUpper;\n    this.timeSignatureLower = timelineService.selectedComposition.timeSignatureLower;\n    this.snapToGrid = timelineService.selectedComposition.snapToGrid;\n    this.gridOffsetMillis = timelineService.selectedComposition.gridOffsetMillis;\n    this.gridResolution = timelineService.selectedComposition.gridResolution;\n  }\n\n  ngOnInit() {}\n\n  ok() {\n    this.timelineService.selectedComposition.gridType = this.gridType;\n    this.timelineService.selectedComposition.beatsPerMinute = this.beatsPerMinute;\n    this.timelineService.selectedComposition.timeSignatureUpper = this.timeSignatureUpper;\n    this.timelineService.selectedComposition.timeSignatureLower = this.timeSignatureLower;\n    this.timelineService.selectedComposition.snapToGrid = this.snapToGrid;\n    this.timelineService.selectedComposition.gridOffsetMillis = this.gridOffsetMillis;\n    this.timelineService.selectedComposition.gridResolution = this.gridResolution;\n\n    this.timelineService.updateGrid();\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","<div class=\"card border-secondary h-100\" [class.card-intro-active]=\"introService.showStep('timeline')\">\n  <div class=\"card-body h-100 d-flex\" style=\"flex-flow: column; overflow: unset\">\n    <div class=\"d-flex pb-3\">\n      <div class=\"btn-group mr-3 my-auto\" role=\"group\" style=\"float: left\">\n        <a href=\"#\" class=\"btn btn-primary m-0 p-1 mr-3\" (click)=\"addComposition(); (false)\"\n          ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i\n        ></a>\n\n        <select\n          *ngIf=\"projectService.project.compositions.length > 0\"\n          class=\"mr-3\"\n          [ngModel]=\"timelineService.selectedCompositionIndex\"\n          (ngModelChange)=\"selectComposition($event)\"\n          style=\"width: 150px; height: 30px\"\n        >\n          <option *ngFor=\"let composition of projectService.project.compositions; let i = index\" [value]=\"i\">\n            {{ composition.name }}\n          </option>\n        </select>\n\n        <div *ngIf=\"timelineService.selectedComposition\" class=\"d-flex\">\n          <a href=\"#\" class=\"btn btn-primary m-0 p-1\" (click)=\"rewind(); (false)\"\n            ><i class=\"fa fa-step-backward fa-fw\" aria-hidden=\"true\"></i\n          ></a>\n          <a *ngIf=\"timelineService.playState == 'paused'\" href=\"#\" class=\"btn btn-primary m-0 p-1\" (click)=\"play(); (false)\"\n            ><i class=\"fa fa-play fa-fw\" aria-hidden=\"true\"></i\n          ></a>\n          <a *ngIf=\"timelineService.playState == 'playing'\" href=\"#\" class=\"btn btn-primary m-0 p-1\" (click)=\"pause(); (false)\"\n            ><i class=\"fa fa-pause fa-fw\" aria-hidden=\"true\"></i\n          ></a>\n        </div>\n      </div>\n\n      <div *ngIf=\"timelineService.selectedComposition\" class=\"d-flex w-100\">\n        <div *ngIf=\"timelineService.duration\" class=\"my-auto mr-3\">\n          <span style=\"width: 78px; text-align: left; display: inline-block; margin-left: 5px\">{{ timelineService.currentTime }}</span>\n          <span style=\"display: inline-block\"></span>- {{ timelineService.duration }}\n        </div>\n\n        <div class=\"my-auto mr-3 ml-auto\" style=\"float: left\">\n          <i (click)=\"timelineService.applyZoom(timelineService.zoom - 20)\" class=\"fa fa-search-minus mr-3\" aria-hidden=\"true\"></i>\n          <mv-slider\n            style=\"width: 80px\"\n            [tooltip]=\"'hide'\"\n            [value]=\"timelineService.zoom\"\n            [min]=\"0\"\n            [max]=\"200\"\n            [step]=\"20\"\n            (change)=\"timelineService.applyZoom($event.newValue)\"\n          ></mv-slider>\n          <i (click)=\"timelineService.applyZoom(timelineService.zoom + 20)\" class=\"fa fa-search-plus ml-3\" aria-hidden=\"true\"></i>\n        </div>\n\n        <div class=\"my-auto mr-3\">\n          <input\n            type=\"text\"\n            [ngModel]=\"timelineService.selectedPlaybackRegion?.startMillis\"\n            (ngModelChange)=\"setRegionStartMillis($event)\"\n          />\n          - <input type=\"text\" [ngModel]=\"timelineService.selectedPlaybackRegion?.endMillis\" (ngModelChange)=\"setRegionEndMillis($event)\" />\n        </div>\n\n        <a\n          href=\"#\"\n          class=\"btn btn-secondary m-0 py-1 mr-3\"\n          (click)=\"openGridSettings(); (false)\"\n          popover=\"{{ 'designer.timeline.grid' | translate }}\"\n          container=\"body\"\n          placement=\"top\"\n          triggers=\"mouseenter:mouseleave\"\n          ><i class=\"fa fa-th\" aria-hidden=\"true\"></i\n        ></a>\n\n        <a\n          href=\"#\"\n          class=\"btn btn-secondary m-0 py-1 mr-3\"\n          (click)=\"removeRegion(); (false)\"\n          popover=\"{{ 'designer.timeline.remove-region' | translate }}\"\n          container=\"body\"\n          placement=\"top\"\n          triggers=\"mouseenter:mouseleave\"\n          ><i class=\"fa fa-minus-circle\" aria-hidden=\"true\"></i\n        ></a>\n\n        <a\n          href=\"#\"\n          class=\"btn btn-secondary m-0 py-1 mr-3\"\n          (click)=\"addRegion(); (false)\"\n          popover=\"{{ 'designer.timeline.add-region' | translate }}\"\n          container=\"body\"\n          placement=\"top\"\n          triggers=\"mouseenter:mouseleave\"\n          ><i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i\n        ></a>\n\n        <a\n          href=\"#\"\n          class=\"btn btn-secondary m-0 py-1 mr-3\"\n          (click)=\"removeComposition(); (false)\"\n          popover=\"{{ 'designer.timeline.remove-composition' | translate }}\"\n          container=\"body\"\n          placement=\"top\"\n          triggers=\"mouseenter:mouseleave\"\n          ><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i\n        ></a>\n\n        <a\n          href=\"#\"\n          class=\"btn btn-secondary m-0 py-1\"\n          (click)=\"compositionSettings(); (false)\"\n          popover=\"{{ 'designer.timeline.composition-settings' | translate }}\"\n          container=\"body\"\n          placement=\"left\"\n          triggers=\"mouseenter:mouseleave\"\n          ><i class=\"fa fa-cog\" aria-hidden=\"true\"></i\n        ></a>\n      </div>\n    </div>\n\n    <div *ngIf=\"timelineService.loadingAudioFile\" class=\"w-100 d-flex\">\n      <i class=\"fa fa-circle-o-notch fa-spin m-auto\" style=\"margin-top: -30px\"></i>\n    </div>\n\n    <div *ngIf=\"timelineService.selectedComposition\">\n      <div id=\"waveform-timeline\"></div>\n    </div>\n    <div *ngIf=\"timelineService.selectedComposition\" #waveWrapper class=\"h-100\" style=\"flex: 2; position: relative\">\n      <div #waveElement id=\"waveform\"></div>\n    </div>\n\n    <div *ngIf=\"projectService.project.compositions.length == 0\" class=\"w-100 d-flex\">\n      <a href=\"#\" class=\"m-auto\" (click)=\"addComposition(); (false)\"\n        ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i> {{ 'designer.timeline.no-compositions' | translate }}</a\n      >\n    </div>\n  </div>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Composition } from '../models/composition';\nimport { ConfigService } from '../services/config.service';\nimport { HotkeyTargetExcludeService } from '../services/hotkey-target-exclude.service';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { TimelineService } from '../services/timeline.service';\nimport { UuidService } from '../services/uuid.service';\nimport { WarningDialogService } from '../services/warning-dialog.service';\nimport { CompositionSettingsComponent } from './composition-settings/composition-settings.component';\nimport { TimelineGridComponent } from './timeline-grid/timeline-grid.component';\n\n@Component({\n  selector: 'lib-app-timeline',\n  templateUrl: './timeline.component.html',\n  styleUrls: ['./timeline.component.css'],\n})\nexport class TimelineComponent implements OnInit, AfterViewInit {\n  @ViewChild('waveWrapper')\n  waveWrapper: ElementRef;\n\n  @ViewChild('waveElement')\n  waveElement: ElementRef;\n\n  private lastHeight: number;\n  private lastWidth: number;\n\n  constructor(\n    public timelineService: TimelineService,\n    private changeDetectorRef: ChangeDetectorRef,\n    private modalService: BsModalService,\n    private uuidService: UuidService,\n    public projectService: ProjectService,\n    private hotkeyTargetExcludeService: HotkeyTargetExcludeService,\n    private warningDialogService: WarningDialogService,\n    private http: HttpClient,\n    private configService: ConfigService,\n    private presetService: PresetService,\n    public introService: IntroService\n  ) {\n    this.timelineService.waveSurferReady.subscribe(() => {\n      this.onResize();\n    });\n    this.timelineService.detectChanges.subscribe(() => {\n      this.changeDetectorRef.detectChanges();\n    });\n  }\n\n  ngOnInit() {}\n\n  ngAfterViewInit() {}\n\n  @HostListener('window:resize')\n  public onResize() {\n    if (!this.waveElement) {\n      return;\n    }\n\n    // Hide wavesurfer to calculate the height, because it will grow infinitely\n    // otherwise\n    this.waveElement.nativeElement.style.display = 'none';\n    const height = this.waveWrapper.nativeElement.clientHeight;\n    this.waveElement.nativeElement.style.display = 'block';\n\n    const width = this.waveWrapper.nativeElement.clientWidth;\n\n    if (!this.lastHeight || this.lastHeight !== height || !this.lastWidth || this.lastWidth !== width) {\n      // Set height and redraw\n      if (this.timelineService.waveSurfer) {\n        this.timelineService.waveSurfer.setHeight(height);\n      }\n\n      this.lastHeight = height;\n      this.lastWidth = width;\n    }\n  }\n\n  play() {\n    this.timelineService.playState = 'playing';\n    this.presetService.previewLive(\n      this.timelineService.selectedComposition.name,\n      Math.round(this.timelineService.waveSurfer.getCurrentTime() * 1000)\n    );\n    this.timelineService.waveSurfer.play();\n  }\n\n  pause() {\n    this.timelineService.playState = 'paused';\n    this.presetService.stopPreviewPlay();\n    this.timelineService.waveSurfer.pause();\n  }\n\n  rewind() {\n    this.timelineService.playState = 'paused';\n    this.pause();\n    this.timelineService.waveSurfer.seekTo(0);\n  }\n\n  addRegion(waveSurferRegion?: any) {\n    this.timelineService.addRegion(waveSurferRegion);\n  }\n\n  removeRegion() {\n    this.timelineService.removeRegion();\n  }\n\n  openGridSettings() {\n    const bsModalRef = this.modalService.show(TimelineGridComponent, { keyboard: true, ignoreBackdropClick: false, class: '' });\n  }\n\n  private afterDeleteFile() {\n    this.timelineService.deleteSelectedComposition();\n  }\n\n  removeComposition() {\n    this.warningDialogService\n      .show('designer.timeline.warning-delete-composition')\n      .pipe(\n        map((result) => {\n          if (result) {\n            if (this.configService.enableMediaLibrary) {\n              // don't delete the file from the library\n              this.afterDeleteFile();\n            } else {\n              // the composition uuid and extension is used as the file name\n              this.http\n                .post('file/delete?compositionUuid=' + this.timelineService.selectedComposition.uuid, undefined)\n                .pipe(\n                  map((response: Response) => {\n                    this.afterDeleteFile();\n                  })\n                )\n                .subscribe();\n            }\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  private openCompositionSettings(compositionIndex?: number, newComposition?: Composition) {\n    const editComposition: Composition =\n      newComposition || JSON.parse(JSON.stringify(this.projectService.project.compositions[compositionIndex]));\n\n    const bsModalRef = this.modalService.show(CompositionSettingsComponent, {\n      keyboard: false,\n      ignoreBackdropClick: true,\n      class: '',\n      initialState: { composition: editComposition },\n    });\n\n    (bsModalRef.content as CompositionSettingsComponent).onClose.subscribe((result) => {\n      if (result === 1) {\n        // OK has been pressed -> save\n        if (newComposition) {\n          this.projectService.project.compositions.push(editComposition);\n          this.timelineService.selectedCompositionIndex = this.projectService.project.compositions.length - 1;\n\n          // create the composition, if externally necessary\n          if (this.timelineService.externalCompositionsAvailable) {\n            // TODO check, if this composition already exists externally and create it, if not\n            // maybe not needed and even confusing?\n          }\n        } else {\n          this.projectService.project.compositions[compositionIndex] = editComposition;\n        }\n\n        this.selectComposition(this.timelineService.selectedCompositionIndex);\n      }\n    });\n  }\n\n  compositionSettings() {\n    this.openCompositionSettings(this.timelineService.selectedCompositionIndex);\n  }\n\n  addComposition() {\n    // create a new composition\n    const composition = new Composition();\n    composition.uuid = this.uuidService.getUuid();\n    composition.name = 'New Composition';\n\n    this.openCompositionSettings(undefined, composition);\n  }\n\n  selectComposition(index: number) {\n    this.timelineService.selectCompositionIndex(index);\n  }\n\n  @HostListener('document:keydown', ['$event'])\n  handleKeyboardEvent(event: KeyboardEvent) {\n    if (this.hotkeyTargetExcludeService.exclude(event)) {\n      return;\n    }\n\n    if (!this.timelineService.selectedComposition) {\n      return;\n    }\n\n    if (event.key === ' ') {\n      if (this.timelineService.playState === 'paused') {\n        this.play();\n      } else {\n        this.pause();\n      }\n\n      // prevent checkboxes being toggled, if in focus e.g.\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n\n  setRegionStartMillis(value: any) {\n    if (!this.timelineService.selectedPlaybackRegion) {\n      return;\n    }\n\n    if (isNaN(value) || value < 0) {\n      return;\n    }\n\n    this.timelineService.selectedPlaybackRegion.startMillis = +value;\n    this.timelineService.updateSelectedRegion();\n  }\n\n  setRegionEndMillis(value: any) {\n    if (!this.timelineService.selectedPlaybackRegion) {\n      return;\n    }\n\n    if (isNaN(value) || value < 0) {\n      return;\n    }\n\n    this.timelineService.selectedPlaybackRegion.endMillis = +value;\n    this.timelineService.updateSelectedRegion();\n  }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Scene } from '../../models/scene';\n\n@Component({\n  selector: 'lib-scene-settings',\n  templateUrl: './scene-settings.component.html',\n  styleUrls: ['./scene-settings.component.css'],\n})\nexport class SceneSettingsComponent implements OnInit {\n  scene: Scene;\n\n  name: string;\n  fadeInMillis: number;\n  fadeOutMillis: number;\n  fadeInPre: boolean;\n  fadeOutPost: boolean;\n\n  constructor(public bsModalRef: BsModalRef) {}\n\n  ngOnInit() {\n    this.name = this.scene.name;\n    this.fadeInMillis = this.scene.fadeInMillis;\n    this.fadeOutMillis = this.scene.fadeOutMillis;\n    this.fadeInPre = this.scene.fadeInPre;\n    this.fadeOutPost = this.scene.fadeOutPost;\n  }\n\n  ok() {\n    this.scene.name = this.name;\n\n    if (!isNaN(this.fadeInMillis) && this.fadeInMillis >= 0) {\n      this.scene.fadeInMillis = +this.fadeInMillis;\n    }\n    if (!isNaN(this.fadeOutMillis) && this.fadeOutMillis >= 0) {\n      this.scene.fadeOutMillis = +this.fadeOutMillis;\n    }\n\n    this.scene.fadeInPre = this.fadeInPre;\n    this.scene.fadeOutPost = this.fadeOutPost;\n\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ name }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-name' | translate }}</label>\n    <div class=\"col-lg-7\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"name\" (ngModelChange)=\"name = $event\" />\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.scene.settings-fade-in' | translate }}</label>\n    <div class=\"col-lg-7\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"fadeInMillis\" (ngModelChange)=\"fadeInMillis = $event\" />\n    </div>\n    <div class=\"col-lg-1 d-flex p-0\">\n      <div class=\"my-auto\">\n        {{ 'designer.misc.ms' | translate }}\n      </div>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\"></label>\n    <div class=\"col-lg-8 d-flex\">\n      <div class=\"form-check my-auto\">\n        <input type=\"checkbox\" [ngModel]=\"fadeInPre\" (ngModelChange)=\"fadeInPre = $event\" class=\"form-check-input\" id=\"fadeInPre\" />\n\n        <label class=\"form-check-label\" for=\"fadeInPre\">\n          {{ 'designer.scene.settings-fade-in-pre' | translate }}\n        </label>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.scene.settings-fade-out' | translate }}</label>\n    <div class=\"col-lg-7\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"fadeOutMillis\" (ngModelChange)=\"fadeOutMillis = $event\" />\n    </div>\n    <div class=\"col-lg-1 d-flex p-0\">\n      <div class=\"my-auto\">\n        {{ 'designer.misc.ms' | translate }}\n      </div>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\"></label>\n    <div class=\"col-lg-8 d-flex\">\n      <div class=\"form-check my-auto\">\n        <input type=\"checkbox\" [ngModel]=\"fadeOutPost\" (ngModelChange)=\"fadeOutPost = $event\" class=\"form-check-input\" id=\"fadeOutPost\" />\n\n        <label class=\"form-check-label\" for=\"fadeOutPost\">\n          {{ 'designer.scene.settings-fade-out-post' | translate }}\n        </label>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n    {{ 'designer.misc.cancel' | translate }}\n  </a>\n  <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","<div class=\"card border-secondary panel h-100\" [class.card-intro-active]=\"introService.showStep('scenes')\">\n  <div class=\"card-header d-flex\">\n    <div>\n      {{ 'designer.scene.title' | translate }}\n    </div>\n    <div class=\"ml-auto\">\n      <a\n        href=\"#\"\n        class=\"d-none d-md-inline-block btn btn-secondary m-0 p-0\"\n        [class.text-primary]=\"sceneService.multipleSelection == true\"\n        (click)=\"sceneService.multipleSelection = !sceneService.multipleSelection; (false)\"\n        ><i class=\"fa fa-object-group fa-fw\" aria-hidden=\"true\"></i\n      ></a>\n      <a href=\"#\" class=\"d-none d-md-inline-block btn btn-secondary m-0 p-0\" (click)=\"removeScene(); (false)\"\n        ><i class=\"fa fa-minus-circle fa-fw\" aria-hidden=\"true\"></i\n      ></a>\n      <a href=\"#\" class=\"d-none d-md-inline-block btn btn-secondary m-0 p-0\" (click)=\"sceneService.addScene(); (false)\"\n        ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i\n      ></a>\n    </div>\n  </div>\n  <div class=\"card-body border-secondary p-0\">\n    <!-- List of scenes -->\n    <div class=\"list-group\" [sortablejs]=\"projectService.project.scenes\">\n      <div\n        *ngFor=\"let scene of projectService.project.scenes; let i = index\"\n        class=\"list-group-item\"\n        [class.active-light]=\"projectService.project.previewPreset && sceneService.sceneIsSelected(scene)\"\n        [class.active]=\"!projectService.project.previewPreset && sceneService.sceneIsSelected(scene)\"\n      >\n        <div class=\"row d-flex\" (click)=\"selectScene($event, i)\" style=\"cursor: pointer\">\n          <div class=\"d-none d-md-block col-auto list-sort-handle my-auto\" style=\"cursor: move; cursor: -webkit-grabbing\">\n            <i class=\"fa fa-bars\" aria-hidden=\"true\"></i>\n          </div>\n          <div class=\"my-auto\">\n            {{ scene.name }}\n          </div>\n          <div class=\"my-auto ml-auto mr-2 d-flex\">\n            <svg class=\"my-auto\" height=\"20\" width=\"20\">\n              <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"white\" stroke-width=\"1\" [attr.fill]=\"scene.color\" />\n            </svg>\n          </div>\n          <div class=\"d-none d-md-flex my-auto mr-2\">\n            <button type=\"button\" class=\"btn btn-secondary btn-sm py-0 px-1\" (click)=\"openSettings(scene); (false)\">...</button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Scene } from '../models/scene';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { SceneService } from '../services/scene.service';\nimport { SceneSettingsComponent } from './scene-settings/scene-settings.component';\n\n@Component({\n  selector: 'lib-app-scene',\n  templateUrl: './scene.component.html',\n  styleUrls: ['./scene.component.css'],\n})\nexport class SceneComponent implements OnInit {\n  constructor(\n    public sceneService: SceneService,\n    public presetService: PresetService,\n    public projectService: ProjectService,\n    private modalService: BsModalService,\n    public introService: IntroService\n  ) {}\n\n  ngOnInit() {}\n\n  selectScene(event: any, index: number) {\n    this.sceneService.selectScene(index);\n  }\n\n  removeScene() {\n    if (this.sceneService.selectedScenes.length === 0) {\n      return;\n    }\n\n    this.sceneService.removeScene(this.sceneService.selectedScenes[0]);\n  }\n\n  openSettings(scene: Scene) {\n    const bsModalRef = this.modalService.show(SceneSettingsComponent, {\n      keyboard: true,\n      ignoreBackdropClick: false,\n      class: '',\n      initialState: { scene },\n    });\n  }\n}\n","<div class=\"card border-secondary h-100 panel\" [class.card-intro-active]=\"introService.showStep('fixtures')\">\n  <div class=\"card-header d-flex\">\n    <div>Fixtures</div>\n    <div class=\"ml-auto\">\n      <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"selectNone(); (false)\"\n        ><i class=\"fa fa-square-o fa-fw\" aria-hidden=\"true\"></i\n      ></a>\n      <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"selectAll(); (false)\"\n        ><i class=\"fa fa-check-square-o fa-fw\" aria-hidden=\"true\"></i\n      ></a>\n      <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"openFixturePool(); (false)\"\n        ><i class=\"fa fa-cog fa-fw\" aria-hidden=\"true\"></i\n      ></a>\n    </div>\n  </div>\n\n  <div class=\"card-body h-100 p-0\">\n    <!-- List of fixtures -->\n    <div *ngIf=\"presetService.selectedPreset\" class=\"list-group\" [sortablejs]=\"projectService.project.presetFixtures\">\n      <div\n        class=\"list-group-item\"\n        *ngFor=\"let presetFixture of projectService.project.presetFixtures\"\n        [class.inactive-list-item]=\"!fixtureIsSelected(presetFixture)\"\n      >\n        <div class=\"row d-flex\" (click)=\"selectFixture($event, presetFixture)\" style=\"cursor: pointer\">\n          <div class=\"col-auto list-sort-handle my-auto\" style=\"cursor: move; cursor: -webkit-grabbing\">\n            <i class=\"fa fa-bars\" aria-hidden=\"true\"></i>\n          </div>\n          <div class=\"form-check\">\n            <input type=\"checkbox\" class=\"form-check-input\" id=\"active\" [ngModel]=\"fixtureIsSelected(presetFixture)\" />\n          </div>\n          <div>\n            <span\n              class=\"icon-{{\n                fixtureService.getFixtureIconClass(\n                  fixtureService.getProfileByUuid(fixtureService.getFixtureByUuid(presetFixture.fixtureUuid).profileUuid)\n                )\n              }} mr-1\"\n            ></span>\n            {{ fixtureName(presetFixture) }}\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div *ngIf=\"projectService.project.presetFixtures.length == 0\" class=\"w-100 h-100 d-flex p-3 text-center\">\n      <a href=\"#\" class=\"m-auto\" (click)=\"openFixturePool(); (false)\"\n        ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i> {{ 'designer.fixture.no-fixtures' | translate }}</a\n      >\n    </div>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { Fixture } from '../models/fixture';\nimport { FixturePoolService } from '../services/fixture-pool.service';\nimport { FixtureService } from '../services/fixture.service';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { PresetFixture } from '../models/preset-fixture';\n\n@Component({\n  selector: 'lib-app-fixture',\n  templateUrl: './fixture.component.html',\n  styleUrls: ['./fixture.component.css'],\n})\nexport class FixtureComponent implements OnInit {\n  constructor(\n    public projectService: ProjectService,\n    public presetService: PresetService,\n    private fixturePoolService: FixturePoolService,\n    public fixtureService: FixtureService,\n    public introService: IntroService\n  ) {}\n\n  ngOnInit() {}\n\n  fixtureName(presetFixture: PresetFixture) {\n    let name: string;\n    name = this.fixtureService.getFixtureByUuid(presetFixture.fixtureUuid).name;\n    if (presetFixture.pixelKey) {\n      name += ' - ' + presetFixture.pixelKey;\n    }\n    return name;\n  }\n\n  fixtureIsSelected(presetFixture: PresetFixture): boolean {\n    const fixture = this.fixtureService.getFixtureByUuid(presetFixture.fixtureUuid);\n    if (this.fixtureService.settingsSelection) {\n      return this.fixtureService.settingsFixtureIsSelected(fixture);\n    } else {\n      return this.presetService.fixtureIsSelected(fixture, presetFixture.pixelKey);\n    }\n  }\n\n  selectFixture(event: any, presetFixture: PresetFixture) {\n    const fixture = this.fixtureService.getFixtureByUuid(presetFixture.fixtureUuid);\n    if (this.fixtureService.settingsSelection) {\n      // select fixtures for the settings\n      this.fixtureService.switchSettingsFixtureSelection(fixture);\n      this.presetService.fixtureSelectionSettingsChanged.next();\n    } else {\n      // select fixtures for the current preset\n      this.presetService.switchFixtureSelection(fixture, presetFixture.pixelKey);\n      this.presetService.fixtureSelectionChanged.next();\n      this.presetService.previewLive();\n    }\n  }\n\n  selectAll() {\n    this.presetService.selectAllFixtures();\n    this.presetService.fixtureSelectionChanged.next();\n  }\n\n  selectNone() {\n    this.presetService.selectNoFixtures();\n    this.presetService.fixtureSelectionChanged.next();\n  }\n\n  openFixturePool() {\n    this.fixturePoolService.open();\n  }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { FixtureCapabilityValue } from '../../../models/fixture-capability-value';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\ndeclare var iro: any;\n\n@Component({\n  selector: 'lib-app-fixture-capability-color',\n  templateUrl: './fixture-capability-color.component.html',\n  styleUrls: ['./fixture-capability-color.component.css'],\n})\nexport class FixtureCapabilityColorComponent implements OnInit, OnDestroy {\n  color = '#ffffff';\n  colorPicker: any;\n  active = false;\n  private colorPickerMounted = false;\n\n  // avoid internal updating events\n  private updatingColor = false;\n\n  private updateSubscription: Subscription;\n\n  constructor(private presetService: PresetService, private fixtureService: FixtureService, private changeDetectorRef: ChangeDetectorRef) {\n    this.updateSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n      this.update();\n      this.changeDetectorRef.detectChanges();\n    });\n    this.update();\n  }\n\n  private update() {\n    let red: number;\n    let green: number;\n    let blue: number;\n    let capabilityValue: FixtureCapabilityValue;\n    capabilityValue = this.presetService.getCapabilityValue(\n      this.presetService.selectedPreset,\n      FixtureCapabilityType.ColorIntensity,\n      FixtureCapabilityColor.Red\n    );\n    if (capabilityValue) {\n      red = 255 * capabilityValue.valuePercentage;\n    }\n    capabilityValue = this.presetService.getCapabilityValue(\n      this.presetService.selectedPreset,\n      FixtureCapabilityType.ColorIntensity,\n      FixtureCapabilityColor.Green\n    );\n    if (capabilityValue) {\n      green = 255 * capabilityValue.valuePercentage;\n    }\n    capabilityValue = this.presetService.getCapabilityValue(\n      this.presetService.selectedPreset,\n      FixtureCapabilityType.ColorIntensity,\n      FixtureCapabilityColor.Blue\n    );\n    if (capabilityValue) {\n      blue = 255 * capabilityValue.valuePercentage;\n    }\n    if (red !== undefined && green !== undefined && blue !== undefined) {\n      this.active = true;\n    } else {\n      this.active = false;\n      red = 255;\n      green = 255;\n      blue = 255;\n    }\n    this.color = this.fixtureService.rgbToHex(red, green, blue);\n    this.setPickerColor(red, green, blue);\n  }\n\n  private setPickerColor(red: number, green: number, blue: number) {\n    this.updatingColor = true;\n    if (this.colorPicker) {\n      this.colorPicker.color.rgb = { r: red, g: green, b: blue };\n    }\n    this.updatingColor = false;\n  }\n\n  ngOnDestroy() {\n    this.updateSubscription.unsubscribe();\n  }\n\n  ngOnInit() {\n    this.colorPicker = new iro.ColorPicker('#color-picker-container', {\n      width: 180,\n      color: this.color,\n      borderWidth: 1,\n      borderColor: '#ffffff',\n      sliderMargin: 20,\n    });\n\n    this.colorPicker.on('color:change', this.changeColor.bind(this));\n\n    // mounted may be called, before this callback has been added. use input:start therefore\n    this.colorPicker.on('input:start', this.mount.bind(this));\n  }\n\n  mount() {\n    this.colorPickerMounted = true;\n  }\n\n  private updateFixtureColor(color: any) {\n    if (this.presetService.selectedPreset) {\n      if (color) {\n        this.presetService.setCapabilityValue(\n          this.presetService.selectedPreset,\n          FixtureCapabilityType.ColorIntensity,\n          color.rgb.r / 255,\n          undefined,\n          FixtureCapabilityColor.Red\n        );\n        this.presetService.setCapabilityValue(\n          this.presetService.selectedPreset,\n          FixtureCapabilityType.ColorIntensity,\n          color.rgb.g / 255,\n          undefined,\n          FixtureCapabilityColor.Green\n        );\n        this.presetService.setCapabilityValue(\n          this.presetService.selectedPreset,\n          FixtureCapabilityType.ColorIntensity,\n          color.rgb.b / 255,\n          undefined,\n          FixtureCapabilityColor.Blue\n        );\n      } else {\n        this.presetService.deleteCapabilityValue(\n          this.presetService.selectedPreset,\n          FixtureCapabilityType.ColorIntensity,\n          FixtureCapabilityColor.Red\n        );\n        this.presetService.deleteCapabilityValue(\n          this.presetService.selectedPreset,\n          FixtureCapabilityType.ColorIntensity,\n          FixtureCapabilityColor.Green\n        );\n        this.presetService.deleteCapabilityValue(\n          this.presetService.selectedPreset,\n          FixtureCapabilityType.ColorIntensity,\n          FixtureCapabilityColor.Blue\n        );\n      }\n      this.changeDetectorRef.detectChanges();\n      this.presetService.fixtureColorChanged.next();\n      this.presetService.previewLive();\n    }\n  }\n\n  changeActive(active: boolean) {\n    this.active = active;\n\n    if (active) {\n      this.updateFixtureColor(this.colorPicker.color);\n    } else {\n      this.updateFixtureColor(undefined);\n      this.setPickerColor(255, 255, 255);\n      this.color = '#ffffff';\n    }\n    this.presetService.previewLive();\n  }\n\n  changeColor(color: any) {\n    if (!this.colorPickerMounted || this.updatingColor) {\n      return;\n    }\n\n    this.active = true;\n    this.color = color.hexString;\n    this.updateFixtureColor(color);\n  }\n}\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"!active\">\n  <div class=\"card-header\">\n    <div class=\"my-auto\" style=\"float: left\">\n      <div class=\"form-check\">\n        <input\n          type=\"checkbox\"\n          class=\"form-check-input\"\n          id=\"capabilityColorActive\"\n          [ngModel]=\"active\"\n          (ngModelChange)=\"changeActive($event)\"\n        />\n        <label class=\"form-check-label\" for=\"capabilityColorActive\">{{ 'designer.fixture.capability-color' | translate }}</label>\n      </div>\n    </div>\n    <div class=\"pull-right\">\n      <input type=\"text\" [(ngModel)]=\"color\" style=\"width: 58px; text-align: center; font-size: 12px; font-family: monospace\" />\n    </div>\n  </div>\n\n  <div class=\"card-body h-100\">\n    <div id=\"color-picker-container\"></div>\n  </div>\n</div>\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n  selector: 'lib-app-fixture-capability-dimmer',\n  templateUrl: './fixture-capability-dimmer.component.html',\n  styleUrls: ['./fixture-capability-dimmer.component.css'],\n})\nexport class FixtureCapabilityDimmerComponent implements OnInit {\n  constructor(private presetService: PresetService, private changeDetectorRef: ChangeDetectorRef) {}\n\n  ngOnInit() {}\n\n  getValue(): number {\n    const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity);\n    if (capabilityValue) {\n      return capabilityValue.valuePercentage;\n    }\n    return undefined;\n  }\n\n  getValueText(): number {\n    const value = this.getValue();\n    if (value >= 0) {\n      return Math.round(value * 100 * 100) / 100;\n    }\n    return undefined;\n  }\n\n  setValue(value: any) {\n    if (isNaN(value)) {\n      return;\n    }\n\n    if (value < 0 || value > 1) {\n      return;\n    }\n\n    this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity, value);\n    this.changeDetectorRef.detectChanges();\n    this.presetService.previewLive();\n  }\n\n  changeActive(active: boolean) {\n    if (active) {\n      this.setValue(1);\n    } else {\n      this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity);\n      this.changeDetectorRef.detectChanges();\n    }\n    this.presetService.previewLive();\n  }\n}\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"getValue() == undefined\" style=\"min-height: 200px\">\n  <div class=\"card-header\">\n    <div class=\"my-auto\">\n      <div class=\"form-check\">\n        <input\n          type=\"checkbox\"\n          class=\"form-check-input\"\n          id=\"capabilityDimmerActive\"\n          [ngModel]=\"getValue() != undefined\"\n          (ngModelChange)=\"changeActive($event)\"\n        />\n        <label class=\"form-check-label\" for=\"capabilityDimmerActive\">\n          <i class=\"icon-dimmer\"></i>\n        </label>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"card-body h-100 d-flex\" style=\"flex-direction: column\">\n    <div class=\"mb-4 w-100 d-flex\">\n      <input\n        class=\"mx-auto\"\n        type=\"text\"\n        [ngModel]=\"getValueText() >= 0 ? getValueText() : 0\"\n        (ngModelChange)=\"setValue($event / 100)\"\n        style=\"width: 42px; height: 20px; text-align: center; font-size: 12px; font-family: monospace\"\n      />\n    </div>\n\n    <div class=\"h-100 w-100 d-flex\">\n      <mv-slider\n        class=\"mx-auto\"\n        [value]=\"getValue() >= 0 ? getValue() : 0\"\n        (change)=\"setValue($event.newValue)\"\n        [orientation]=\"'vertical'\"\n        [reversed]=\"true\"\n        style=\"height: 100%\"\n        [tooltip]=\"'hide'\"\n        [min]=\"0\"\n        [max]=\"1\"\n        [step]=\"0.001\"\n      ></mv-slider>\n    </div>\n  </div>\n</div>\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n  selector: 'lib-app-fixture-capability-pan-tilt',\n  templateUrl: './fixture-capability-pan-tilt.component.html',\n  styleUrls: ['./fixture-capability-pan-tilt.component.css'],\n})\nexport class FixtureCapabilityPanTiltComponent implements OnInit {\n  constructor(private presetService: PresetService, private changeDetectorRef: ChangeDetectorRef) {}\n\n  ngOnInit() {}\n\n  getValuePan(): number {\n    const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan);\n    if (capabilityValue) {\n      return capabilityValue.valuePercentage;\n    }\n    return undefined;\n  }\n\n  getValueTextPan(): number {\n    const value = this.getValuePan();\n    if (value >= 0) {\n      return Math.round(value * 100 * 100) / 100;\n    }\n    return undefined;\n  }\n\n  setValuePan(value: any) {\n    if (isNaN(value)) {\n      return;\n    }\n\n    if (value < 0 || value > 1) {\n      return;\n    }\n\n    this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan, value);\n    this.changeDetectorRef.detectChanges();\n    this.presetService.previewLive();\n  }\n\n  getValueTilt(): number {\n    const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt);\n    if (capabilityValue) {\n      return capabilityValue.valuePercentage;\n    }\n    return undefined;\n  }\n\n  getValueTextTilt(): number {\n    const value = this.getValueTilt();\n    if (value >= 0) {\n      return Math.round(value * 100 * 100) / 100;\n    }\n    return undefined;\n  }\n\n  setValueTilt(value: any) {\n    if (isNaN(value)) {\n      return;\n    }\n\n    if (value < 0 || value > 1) {\n      return;\n    }\n\n    this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt, value);\n    this.changeDetectorRef.detectChanges();\n    this.presetService.previewLive();\n  }\n\n  changeActive(active: boolean) {\n    if (active) {\n      this.setValuePan(0.5);\n      this.setValueTilt(0.5);\n    } else {\n      this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan);\n      this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt);\n      this.changeDetectorRef.detectChanges();\n    }\n    this.presetService.previewLive();\n  }\n}\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"getValuePan() == undefined && getValueTilt() == undefined\">\n  <div class=\"card-header\">\n    <div class=\"my-auto\">\n      <div class=\"form-check\">\n        <input\n          type=\"checkbox\"\n          class=\"form-check-input\"\n          id=\"capabilityColorWheelActive\"\n          [ngModel]=\"getValuePan() != undefined || getValueTilt() != undefined\"\n          (ngModelChange)=\"changeActive($event)\"\n        />\n        <label class=\"form-check-label\" for=\"capabilityColorWheelActive\">{{ 'designer.fixture.capability-pan-tilt' | translate }}</label>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"card-body h-100 d-flex\" style=\"flex-direction: row\">\n    <div class=\"d-flex h-100 mr-3\" style=\"flex-direction: column\">\n      <div class=\"mb-4 w-100 d-flex\">\n        <input\n          class=\"mx-auto\"\n          type=\"text\"\n          [ngModel]=\"getValueTextPan() >= 0 ? getValueTextPan() : 0\"\n          (ngModelChange)=\"setValuePan($event / 100)\"\n          style=\"width: 42px; height: 20px; text-align: center; font-size: 12px; font-family: monospace\"\n        />\n      </div>\n\n      <div class=\"h-100 w-100 d-flex\">\n        <mv-slider\n          class=\"mx-auto\"\n          [value]=\"getValuePan() >= 0 ? getValuePan() : 0\"\n          (change)=\"setValuePan($event.newValue)\"\n          [orientation]=\"'vertical'\"\n          [reversed]=\"true\"\n          style=\"height: 100%\"\n          [tooltip]=\"'hide'\"\n          [min]=\"0\"\n          [max]=\"1\"\n          [step]=\"0.001\"\n        ></mv-slider>\n      </div>\n    </div>\n\n    <div class=\"d-flex h-100\" style=\"flex-direction: column\">\n      <div class=\"mb-4 w-100 d-flex\">\n        <input\n          class=\"mx-auto\"\n          type=\"text\"\n          [ngModel]=\"getValueTextTilt() >= 0 ? getValueTextTilt() : 0\"\n          (ngModelChange)=\"setValueTilt($event / 100)\"\n          style=\"width: 42px; height: 20px; text-align: center; font-size: 12px; font-family: monospace\"\n        />\n      </div>\n\n      <div class=\"h-100 w-100 d-flex\">\n        <mv-slider\n          class=\"mx-auto\"\n          [value]=\"getValueTilt() >= 0 ? getValueTilt() : 0\"\n          (change)=\"setValueTilt($event.newValue)\"\n          [orientation]=\"'vertical'\"\n          [reversed]=\"true\"\n          style=\"height: 100%\"\n          [tooltip]=\"'hide'\"\n          [min]=\"0\"\n          [max]=\"1\"\n          [step]=\"0.001\"\n        ></mv-slider>\n      </div>\n    </div>\n  </div>\n</div>\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"getCurrentSlotNumber() == undefined\" style=\"min-height: 200px\">\n  <div class=\"card-header\">\n    <div class=\"my-auto\">\n      <div class=\"form-check\">\n        <input\n          type=\"checkbox\"\n          class=\"form-check-input\"\n          id=\"capabilityColorWheel{{ wheelIndex }}Active\"\n          [ngModel]=\"getCurrentSlotNumber() != undefined\"\n          (ngModelChange)=\"changeActive($event)\"\n        />\n        <label class=\"form-check-label\" for=\"capabilityColorWheel{{ wheelIndex }}Active\">\n          {{ 'designer.fixture.capability-color' | translate }}\n        </label>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"card-body h-100\">\n    <div *ngIf=\"showContainer\">{{ _fixtureProfile.name }} - {{ _channel.name }}</div>\n\n    <div *ngIf=\"wheel\" class=\"d-flex\" style=\"max-width: 240px; flex-wrap: wrap\">\n      <div\n        *ngFor=\"let slot of slotCapabilities; let i = index\"\n        (click)=\"selectSlotNumber(slot.capability.slotNumber)\"\n        class=\"m-1 color\"\n        [class.color-selected]=\"slotCapabilityIsSelected(slot.capability.slotNumber)\"\n        [ngStyle]=\"getCapabilityColorStyle(slot)\"\n      >\n        <div\n          *ngIf=\"slotCapabilityIsSelected(slot.capability.slotNumber)\"\n          (click)=\"selectSlotNumber(slot.capability.slotNumber)\"\n          class=\"color-selected-inner\"\n        ></div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureCapability } from '../../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../../models/cached-fixture-channel';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { FixtureProfile } from '../../../models/fixture-profile';\nimport { FixtureWheel } from '../../../models/fixture-wheel';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n  selector: 'lib-app-fixture-capability-color-wheel',\n  templateUrl: './fixture-capability-color-wheel.component.html',\n  styleUrls: ['./fixture-capability-color-wheel.component.css'],\n})\nexport class FixtureCapabilityColorWheelComponent implements OnInit, OnDestroy {\n  _fixtureProfile: FixtureProfile;\n  _channel: CachedFixtureChannel;\n  wheelName: string;\n  wheel: FixtureWheel;\n  slotCapabilities: CachedFixtureCapability[];\n\n  private colorChangeSubscription: Subscription;\n\n  @Input()\n  set profile(value: FixtureProfile) {\n    this._fixtureProfile = value;\n    this.update();\n  }\n\n  @Input()\n  set channel(value: CachedFixtureChannel) {\n    this._channel = value;\n    this.update();\n  }\n\n  @Input()\n  wheelIndex: number;\n\n  @Input()\n  showContainer = false;\n\n  constructor(public presetService: PresetService, private changeDetectorRef: ChangeDetectorRef, private fixtureService: FixtureService) {}\n\n  ngOnInit() {\n    this.colorChangeSubscription = this.presetService.fixtureColorChanged.subscribe(() => {\n      this.changeDetectorRef.detectChanges();\n    });\n  }\n\n  ngOnDestroy() {\n    this.colorChangeSubscription.unsubscribe();\n  }\n\n  private update() {\n    if (this._fixtureProfile && this._channel) {\n      this.wheelName = undefined;\n      this.slotCapabilities = [];\n\n      // get the wheel name\n      for (const capability of this._channel.capabilities) {\n        if (capability.wheel) {\n          this.wheelName = capability.wheelName;\n          break;\n        }\n      }\n      if (!this.wheelName) {\n        this.wheelName = this._channel.name;\n      }\n\n      this.wheel = this.fixtureService.getWheelByName(this._fixtureProfile, this.wheelName);\n\n      // calculate all available slots\n      for (const capability of this._channel.capabilities) {\n        if (capability.capability.type === FixtureCapabilityType.WheelSlot) {\n          this.slotCapabilities.push(capability);\n        }\n      }\n    }\n\n    this.changeDetectorRef.detectChanges();\n  }\n\n  getCapabilityColorStyle(capability: CachedFixtureCapability): any {\n    let property = 'background-color';\n    let value = 'black';\n    let colors: string[] = [];\n\n    if (capability.wheelSlots) {\n      for (const slot of capability.wheelSlots) {\n        // calculate the color based on the color wheel slot\n        if (slot.colors.length > 0) {\n          colors = colors.concat(slot.colors);\n        }\n      }\n    }\n\n    if (colors.length > 1) {\n      // mixed colors -> gradient\n      let colorString: string;\n      for (const color of colors) {\n        if (colorString) {\n          colorString += ', ';\n        } else {\n          colorString = '';\n        }\n        colorString += color;\n      }\n      property = 'background-image';\n      value = 'linear-gradient(to bottom right, ' + colorString + ')';\n    } else if (colors.length === 1) {\n      value = colors[0];\n    } else {\n      value = '#fff';\n    }\n\n    const style = {};\n    style[property] = value;\n    return style;\n  }\n\n  getCurrentSlotNumber(): number {\n    const capabilityValue = this.presetService.getCapabilityValue(\n      this.presetService.selectedPreset,\n      FixtureCapabilityType.WheelSlot,\n      undefined,\n      this.wheelName,\n      this._fixtureProfile.uuid\n    );\n\n    if (capabilityValue) {\n      return capabilityValue.slotNumber;\n    }\n    return undefined;\n  }\n\n  slotCapabilityIsSelected(slotNumber: number): boolean {\n    const selectedSlotNumber = this.getCurrentSlotNumber();\n\n    if (selectedSlotNumber >= 0) {\n      // a slot is selected\n      return selectedSlotNumber === slotNumber;\n    } else {\n      // no slot is selected and the capability is inactive\n      // -> show the approx. color, if a color or a similar slot from a different wheel has been selected\n      const approximatedCapability = this.presetService.getApproximatedColorWheelCapability(\n        this.presetService.selectedPreset,\n        this._channel\n      );\n\n      if (approximatedCapability) {\n        return slotNumber === approximatedCapability.capability.slotNumber;\n      } else {\n        return false;\n      }\n    }\n  }\n\n  changeActive(active: boolean) {\n    if (active) {\n      this.presetService.setCapabilityValue(\n        this.presetService.selectedPreset,\n        FixtureCapabilityType.WheelSlot,\n        undefined,\n        1,\n        undefined,\n        this.wheelName,\n        this._fixtureProfile.uuid\n      );\n    } else {\n      this.presetService.deleteCapabilityValue(\n        this.presetService.selectedPreset,\n        FixtureCapabilityType.WheelSlot,\n        undefined,\n        this.wheelName,\n        this._fixtureProfile.uuid\n      );\n    }\n\n    this.presetService.previewLive();\n  }\n\n  selectSlotNumber(slotNumber: number) {\n    this.presetService.setCapabilityValue(\n      this.presetService.selectedPreset,\n      FixtureCapabilityType.WheelSlot,\n      undefined,\n      slotNumber,\n      undefined,\n      this.wheelName,\n      this._fixtureProfile.uuid\n    );\n    this.presetService.previewLive();\n  }\n}\n","<div class=\"card border-secondary panel h-100\" [class.card-intro-active]=\"introService.showStep('capabilities')\">\n  <div class=\"card-body capability-container d-flex h-100\" style=\"overflow-y: hidden\">\n    <!-- h-100 needs to be applied in chrome to avoid performance issues with many layouts (reflows)\n    during sliding. But the class must not be applied e.g. in Safari, because the bottom margin is not correct\n    anymore afterwards. -->\n    <div *ngIf=\"presetService.selectedPreset\" class=\"row m-0 pl-3\" [class.h-100]=\"isChrome()\">\n      <!-- Dimmer -->\n      <!-- the height attribute is required to avoid performance issues with many layouts (reflows)\n      in Chrome during sliding -->\n      <div *ngIf=\"hasCapabilityDimmer\" class=\"col col-auto p-0 my-3 mr-3\" style=\"height: calc(100% - 2rem)\">\n        <lib-app-fixture-capability-dimmer></lib-app-fixture-capability-dimmer>\n      </div>\n\n      <!-- Color -->\n      <!-- Also show for color wheel fixtures to approx. the color -->\n      <div *ngIf=\"hasCapabilityColorOrColorWheel\" class=\"col col-auto p-0 my-3 mr-3\" style=\"height: calc(100% - 2rem)\">\n        <lib-app-fixture-capability-color></lib-app-fixture-capability-color>\n      </div>\n\n      <!-- Color wheels -->\n      <div\n        *ngFor=\"let entry of colorWheelChannels | keyvalue; let i = index\"\n        class=\"col col-auto p-0 my-3 mr-3\"\n        style=\"height: calc(100% - 2rem)\"\n      >\n        <lib-app-fixture-capability-color-wheel\n          [profile]=\"entry.key\"\n          [channel]=\"entry.value\"\n          [wheelIndex]=\"i\"\n          [showContainer]=\"colorWheelChannels.size > 1\"\n        ></lib-app-fixture-capability-color-wheel>\n      </div>\n\n      <!-- Pan/Tilt -->\n      <div *ngIf=\"hasCapabilityPanTilt\" class=\"col col-auto p-0 my-3 mr-3\" style=\"height: calc(100% - 2rem)\">\n        <lib-app-fixture-capability-pan-tilt></lib-app-fixture-capability-pan-tilt>\n      </div>\n\n      <!-- Fix spacing at the end -->\n      <div class=\"col col-auto p-0 my-3 mr-3\">&nbsp;</div>\n    </div>\n\n    <div *ngIf=\"projectService.project.fixtures.length == 0\" class=\"m-auto\">\n      <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures' | translate }}</p>\n    </div>\n\n    <div\n      *ngIf=\"\n        projectService.project.fixtures.length > 0 && presetService.selectedPreset && presetService.selectedPreset.fixtures.length == 0\n      \"\n      class=\"m-auto\"\n    >\n      <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures-selected' | translate }}</p>\n    </div>\n\n    <div\n      *ngIf=\"\n        projectService.project.fixtures.length > 0 &&\n        presetService.selectedPreset &&\n        presetService.selectedPreset.fixtures.length > 0 &&\n        !hasCapabilityColorOrColorWheel &&\n        !hasCapabilityPanTilt\n      \"\n      class=\"m-auto\"\n    >\n      <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-capabilities-available' | translate }}</p>\n    </div>\n  </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureWheelSlotType } from '../../models/fixture-wheel-slot';\nimport { FixtureService } from '../../services/fixture.service';\nimport { IntroService } from '../../services/intro.service';\nimport { PresetService } from '../../services/preset.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n  selector: 'lib-app-fixture-capability',\n  templateUrl: './fixture-capability.component.html',\n  styleUrls: ['./fixture-capability.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FixtureCapabilityComponent implements OnInit, OnDestroy {\n  private fixtureSelectionChangedSubscription: Subscription;\n  private previewSelectionChangedSubscription: Subscription;\n\n  // map containing the profile and the channel name containing the wheel\n  colorWheelChannels: Map<FixtureProfile, CachedFixtureChannel> = new Map<FixtureProfile, CachedFixtureChannel>();\n  hasCapabilityDimmer: boolean = false;\n  hasCapabilityColorOrColorWheel: boolean = false;\n  hasCapabilityPanTilt: boolean = false;\n\n  constructor(\n    public presetService: PresetService,\n    private fixtureService: FixtureService,\n    private changeDetectorRef: ChangeDetectorRef,\n    public projectService: ProjectService,\n    public introService: IntroService\n  ) {\n    this.fixtureSelectionChangedSubscription = this.presetService.fixtureSelectionChanged.subscribe(() => {\n      this.update();\n    });\n\n    this.previewSelectionChangedSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n      this.update();\n    });\n\n    this.introService.stepChanged.subscribe(() => {\n      this.changeDetectorRef.detectChanges();\n    });\n  }\n\n  ngOnInit() {\n    this.update();\n  }\n\n  ngOnDestroy() {\n    this.fixtureSelectionChangedSubscription.unsubscribe();\n    this.previewSelectionChangedSubscription.unsubscribe();\n  }\n\n  private wheelInList(wheels: Map<FixtureProfile, CachedFixtureChannel>, profile: FixtureProfile, channel: CachedFixtureChannel) {\n    wheels.forEach((existingChannel: CachedFixtureChannel, existingProfile: FixtureProfile) => {\n      if (existingProfile.uuid === profile.uuid && existingChannel.name === channel.name) {\n        return true;\n      }\n    });\n\n    return false;\n  }\n\n  private updateColorWheels() {\n    this.colorWheelChannels = new Map<FixtureProfile, CachedFixtureChannel>();\n\n    if (!this.presetService.selectedPreset) {\n      return;\n    }\n\n    for (const preserFixture of this.presetService.selectedPreset.fixtures) {\n      const fixture = this.fixtureService.getCachedFixtureByUuid(preserFixture.fixtureUuid, preserFixture.pixelKey);\n      for (const channel of fixture.channels) {\n        for (const capability of channel.capabilities) {\n          if (capability.wheel && capability.wheelSlots && capability.wheelSlots.length > 0) {\n            if (this.fixtureService.wheelHasSlotType(capability.wheel, FixtureWheelSlotType.Color)) {\n              // color wheel\n              if (!this.wheelInList(this.colorWheelChannels, fixture.profile, channel)) {\n                this.colorWheelChannels.set(fixture.profile, channel);\n              }\n            } else if (this.fixtureService.wheelHasSlotType(capability.wheel, FixtureWheelSlotType.Gobo)) {\n              // gobo wheel\n              // TODO\n            }\n          }\n        }\n      }\n    }\n  }\n\n  private updateCapabilities() {\n    this.hasCapabilityDimmer = this.presetService.hasCapabilityDimmer();\n    this.hasCapabilityColorOrColorWheel = this.presetService.hasCapabilityColorOrColorWheel();\n    this.hasCapabilityPanTilt = this.presetService.hasCapabilityPanTilt();\n  }\n\n  private update() {\n    this.updateColorWheels();\n    this.updateCapabilities();\n    this.changeDetectorRef.detectChanges();\n  }\n\n  isChrome(): boolean {\n    if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n      return true;\n    }\n    return false;\n  }\n}\n","<div class=\"card border-secondary h-100\">\n  <div class=\"card-header\">\n    {{ 'designer.fixture.setting-position-title' | translate }}\n  </div>\n\n  <div *ngIf=\"fixtureService.selectedSettingsFixtures.length > 0\" class=\"card-body h-100\">\n    <div>\n      <select class=\"mb-2\" style=\"width: 140px\" [(ngModel)]=\"selectedPositioning\" (change)=\"changePosition($event.target.value)\">\n        <option [ngValue]=\"selectUndefinedOptionValue\"></option>\n        <option value=\"topFront\">{{ 'designer.fixture.setting-position-front-top' | translate }}</option>\n        <option value=\"bottomFront\">{{ 'designer.fixture.setting-position-front-bottom' | translate }}</option>\n        <option value=\"topBack\">{{ 'designer.fixture.setting-position-back-top' | translate }}</option>\n        <option value=\"bottomBack\">{{ 'designer.fixture.setting-position-back-bottom' | translate }}</option>\n        <option value=\"manual\">{{ 'designer.fixture.setting-position-manual' | translate }}</option>\n      </select>\n    </div>\n\n    <div *ngIf=\"selectedPositioning == 'manual'\">\n      <div>{{ 'designer.fixture.setting-position' | translate }}</div>\n      <div class=\"d-flex\">\n        <div class=\"my-auto\" style=\"width: 20px; float: left\">X</div>\n        <div class=\"my-auto\" style=\"float: left\">\n          <mv-slider\n            style=\"width: 80px\"\n            [tooltip]=\"'hide'\"\n            [value]=\"positionX ? positionX : (positionXMax + positionXMin) / 2\"\n            [min]=\"positionXMin\"\n            [max]=\"positionXMax\"\n            [step]=\"1\"\n            (change)=\"changePositionManual('x', $event.newValue)\"\n          ></mv-slider>\n        </div>\n        <div class=\"my-auto\">\n          <input [ngModel]=\"positionX\" (ngModelChange)=\"changePositionManual('x', $event)\" type=\"text\" class=\"slider-input\" />\n        </div>\n      </div>\n      <div class=\"d-flex\">\n        <div class=\"my-auto\" style=\"width: 20px; float: left\">Y</div>\n        <div class=\"my-auto\" style=\"float: left\">\n          <mv-slider\n            style=\"width: 80px; height: 18px\"\n            [tooltip]=\"'hide'\"\n            [value]=\"positionZ ? positionZ : (positionZMax + positionZMin) / 2\"\n            [min]=\"positionZMin\"\n            [max]=\"positionZMax\"\n            [step]=\"1\"\n            (change)=\"changePositionManual('z', $event.newValue)\"\n          ></mv-slider>\n        </div>\n        <div class=\"my-auto\">\n          <input [ngModel]=\"positionZ\" (ngModelChange)=\"changePositionManual('z', $event)\" type=\"text\" class=\"slider-input\" />\n        </div>\n      </div>\n      <div class=\"d-flex\">\n        <div class=\"my-auto\" style=\"width: 20px; float: left\">Z</div>\n        <div class=\"my-auto\" style=\"float: left\">\n          <mv-slider\n            style=\"width: 80px\"\n            [tooltip]=\"'hide'\"\n            [value]=\"positionY ? positionY : (positionYMax + positionYMin) / 2\"\n            [min]=\"positionYMin\"\n            [max]=\"positionYMax\"\n            [step]=\"1\"\n            (change)=\"changePositionManual('y', $event.newValue)\"\n          ></mv-slider>\n        </div>\n        <div class=\"my-auto\">\n          <input [ngModel]=\"positionY\" (ngModelChange)=\"changePositionManual('y', $event)\" type=\"text\" class=\"slider-input\" />\n        </div>\n      </div>\n\n      <div class=\"mt-2\">{{ 'designer.fixture.setting-rotation' | translate }}</div>\n      <div class=\"d-flex\">\n        <div class=\"my-auto\" style=\"width: 20px; float: left\">X</div>\n        <div class=\"my-auto\" style=\"float: left\">\n          <mv-slider\n            style=\"width: 80px\"\n            [tooltip]=\"'hide'\"\n            [value]=\"rotationX ? rotationX : (rotationMin + rotationMax) / 2\"\n            [min]=\"rotationMin\"\n            [max]=\"rotationMax\"\n            [step]=\"1\"\n            (change)=\"changeRotationManual('x', $event.newValue)\"\n          ></mv-slider>\n        </div>\n        <div class=\"my-auto\">\n          <input [ngModel]=\"rotationX\" (ngModelChange)=\"changeRotationManual('x', $event)\" type=\"text\" class=\"slider-input\" />\n        </div>\n      </div>\n      <div class=\"d-flex\">\n        <div class=\"my-auto\" style=\"width: 20px; float: left\">Y</div>\n        <div class=\"my-auto\" style=\"float: left\">\n          <mv-slider\n            style=\"width: 80px; height: 18px\"\n            [tooltip]=\"'hide'\"\n            [value]=\"rotationZ ? rotationZ : (rotationMin + rotationMax) / 2\"\n            [min]=\"rotationMin\"\n            [max]=\"rotationMax\"\n            [step]=\"1\"\n            (change)=\"changeRotationManual('z', $event.newValue)\"\n          ></mv-slider>\n        </div>\n        <div class=\"my-auto\">\n          <input [ngModel]=\"rotationZ\" (ngModelChange)=\"changeRotationManual('z', $event)\" type=\"text\" class=\"slider-input\" />\n        </div>\n      </div>\n      <div class=\"d-flex\">\n        <div class=\"my-auto\" style=\"width: 20px; float: left\">Z</div>\n        <div class=\"my-auto\" style=\"float: left\">\n          <mv-slider\n            style=\"width: 80px\"\n            [tooltip]=\"'hide'\"\n            [value]=\"rotationY ? rotationY : (rotationMin + rotationMax) / 2\"\n            [min]=\"rotationMin\"\n            [max]=\"rotationMax\"\n            [step]=\"1\"\n            (change)=\"changeRotationManual('y', $event.newValue)\"\n          ></mv-slider>\n        </div>\n        <div class=\"my-auto\">\n          <input [ngModel]=\"rotationY\" (ngModelChange)=\"changeRotationManual('y', $event)\" type=\"text\" class=\"slider-input\" />\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div *ngIf=\"fixtureService.selectedSettingsFixtures.length == 0\" class=\"card-body h-100 d-flex\">\n    <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures-settings-selected' | translate }}</p>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { Positioning } from '../../../models/fixture';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n  selector: 'lib-app-fixture-settings-position',\n  templateUrl: './fixture-settings-position.component.html',\n  styleUrls: ['./fixture-settings-position.component.css'],\n})\nexport class FixtureSettingsPositionComponent implements OnInit {\n  selectUndefinedOptionValue: any = undefined;\n\n  selectedPositioning: string = undefined;\n\n  positionX = 0;\n  positionY = 0;\n  positionZ = 0;\n\n  positionXMin = -400;\n  positionXMax = 400;\n  positionYMin = 0;\n  positionYMax = 400;\n  positionZMin = -400;\n  positionZMax = 400;\n\n  rotationX = 0;\n  rotationY = 0;\n  rotationZ = 0;\n\n  rotationMin = 0;\n  rotationMax = 360;\n\n  constructor(public fixtureService: FixtureService, private presetService: PresetService) {\n    presetService.fixtureSelectionSettingsChanged.subscribe(() => {\n      this.updateSelection();\n    });\n  }\n\n  ngOnInit() {}\n\n  private updateSelection() {\n    // get all display values for the selected settings fixtures\n    this.selectedPositioning = undefined;\n\n    this.positionX = undefined;\n    this.positionY = undefined;\n    this.positionZ = undefined;\n\n    this.rotationX = undefined;\n    this.rotationY = undefined;\n    this.rotationZ = undefined;\n\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (this.selectedPositioning) {\n        if (this.selectedPositioning !== fixture.positioning) {\n          this.selectedPositioning = undefined;\n          break;\n        }\n      } else {\n        this.selectedPositioning = fixture.positioning;\n      }\n    }\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (this.positionX) {\n        if (this.positionX !== fixture.positionX) {\n          this.positionX = undefined;\n          break;\n        }\n      } else {\n        this.positionX = fixture.positionX;\n      }\n    }\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (this.positionY) {\n        if (this.positionY !== fixture.positionY) {\n          this.positionY = undefined;\n          break;\n        }\n      } else {\n        this.positionY = fixture.positionY;\n      }\n    }\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (this.positionZ) {\n        if (this.positionZ !== fixture.positionZ) {\n          this.positionZ = undefined;\n          break;\n        }\n      } else {\n        this.positionZ = fixture.positionZ;\n      }\n    }\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (this.rotationX) {\n        if (this.rotationX !== fixture.rotationX) {\n          this.rotationX = undefined;\n          break;\n        }\n      } else {\n        this.rotationX = fixture.rotationX;\n      }\n    }\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (this.rotationY) {\n        if (this.rotationY !== fixture.rotationY) {\n          this.rotationY = undefined;\n          break;\n        }\n      } else {\n        this.rotationY = fixture.rotationY;\n      }\n    }\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (this.rotationZ) {\n        if (this.rotationZ !== fixture.rotationZ) {\n          this.rotationZ = undefined;\n          break;\n        }\n      } else {\n        this.rotationZ = fixture.rotationZ;\n      }\n    }\n  }\n\n  changePosition(positioningStr: string) {\n    const positioning: Positioning = Positioning[positioningStr];\n\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      fixture.positioning = positioning;\n    }\n  }\n\n  changePositionManual(position: string, value: any) {\n    if (isNaN(value)) {\n      return;\n    }\n\n    if (position === 'x') {\n      if (value >= this.positionXMin && value <= this.positionXMax) {\n        this.positionX = +value;\n      }\n    } else if (position === 'y') {\n      if (value >= this.positionYMin && value <= this.positionYMax) {\n        this.positionY = +value;\n      }\n    } else if (position === 'z') {\n      if (value >= this.positionZMin && value <= this.positionZMax) {\n        this.positionZ = +value;\n      }\n    }\n\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (position === 'x') {\n        if (value >= this.positionXMin && value <= this.positionXMax) {\n          fixture.positionX = +value;\n        }\n      } else if (position === 'y') {\n        if (value >= this.positionYMin && value <= this.positionYMax) {\n          fixture.positionY = +value;\n        }\n      } else if (position === 'z') {\n        if (value >= this.positionZMin && value <= this.positionZMax) {\n          fixture.positionZ = +value;\n        }\n      }\n    }\n  }\n\n  changeRotationManual(rotation: string, value: any) {\n    if (isNaN(value) || value < this.rotationMin || value > this.rotationMax) {\n      return;\n    }\n\n    if (rotation === 'x') {\n      this.rotationX = +value;\n    } else if (rotation === 'y') {\n      this.rotationY = +value;\n    } else if (rotation === 'z') {\n      this.rotationZ = +value;\n    }\n\n    for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n      if (rotation === 'x') {\n        fixture.rotationX = +value;\n      } else if (rotation === 'y') {\n        fixture.rotationY = +value;\n      } else if (rotation === 'z') {\n        fixture.rotationZ = +value;\n      }\n    }\n  }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { PreviewService } from '../../../services/preview.service';\nimport { ProjectService } from '../../../services/project.service';\n\n@Component({\n  selector: 'lib-app-fixture-settings-stage',\n  templateUrl: './fixture-settings-stage.component.html',\n  styleUrls: ['./fixture-settings-stage.component.css'],\n})\nexport class FixtureSettingsStageComponent implements OnInit {\n  constructor(public projectService: ProjectService, public previewService: PreviewService, private changeDetectorRef: ChangeDetectorRef) {}\n\n  ngOnInit() {}\n\n  update() {\n    this.previewService.updateStage();\n    this.changeDetectorRef.detectChanges();\n  }\n}\n","<div class=\"card border-secondary h-100\">\n  <div class=\"card-header\">\n    {{ 'designer.fixture.setting-stage' | translate }}\n  </div>\n\n  <div class=\"card-body h-100\">\n    <div class=\"d-flex\">\n      <div class=\"my-auto\" style=\"width: 120px; float: left\">\n        {{ 'designer.fixture.setting-stage-width' | translate }}\n      </div>\n      <div class=\"my-auto\" style=\"float: left\">\n        <mv-slider\n          style=\"width: 140px\"\n          [tooltip]=\"'hide'\"\n          [value]=\"projectService.project.stageWidthCm\"\n          [min]=\"100\"\n          [max]=\"2000\"\n          [step]=\"5\"\n          (change)=\"projectService.project.stageWidthCm = $event.newValue; update()\"\n        >\n        </mv-slider>\n      </div>\n      <div class=\"my-auto\">\n        <input\n          type=\"text\"\n          [ngModel]=\"projectService.project.stageWidthCm\"\n          (ngModelChange)=\"projectService.project.stageWidthCm = $event; update()\"\n          class=\"slider-input-readonly\"\n          readonly\n        />\n      </div>\n      <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n    </div>\n\n    <div class=\"d-flex\">\n      <div class=\"my-auto\" style=\"width: 120px; float: left\">\n        {{ 'designer.fixture.setting-stage-height' | translate }}\n      </div>\n      <div class=\"my-auto\" style=\"float: left\">\n        <mv-slider\n          style=\"width: 140px\"\n          [tooltip]=\"'hide'\"\n          [value]=\"projectService.project.stageHeightCm\"\n          [min]=\"100\"\n          [max]=\"2000\"\n          [step]=\"5\"\n          (change)=\"projectService.project.stageHeightCm = $event.newValue; update()\"\n        >\n        </mv-slider>\n      </div>\n      <div class=\"my-auto\">\n        <input\n          type=\"text\"\n          [ngModel]=\"projectService.project.stageHeightCm\"\n          (ngModelChange)=\"projectService.project.stageHeightCm = $event; update()\"\n          class=\"slider-input-readonly\"\n          readonly\n        />\n      </div>\n      <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n    </div>\n\n    <div class=\"d-flex\">\n      <div class=\"my-auto\" style=\"width: 120px; float: left\">\n        {{ 'designer.fixture.setting-stage-depth' | translate }}\n      </div>\n      <div class=\"my-auto\" style=\"float: left\">\n        <mv-slider\n          style=\"width: 140px\"\n          [tooltip]=\"'hide'\"\n          [value]=\"projectService.project.stageDepthCm\"\n          [min]=\"100\"\n          [max]=\"2000\"\n          [step]=\"5\"\n          (change)=\"projectService.project.stageDepthCm = $event.newValue; update()\"\n        >\n        </mv-slider>\n      </div>\n      <div class=\"my-auto\">\n        <input\n          type=\"text\"\n          [ngModel]=\"projectService.project.stageDepthCm\"\n          (ngModelChange)=\"projectService.project.stageDepthCm = $event; update()\"\n          class=\"slider-input-readonly\"\n          readonly\n        />\n      </div>\n      <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n    </div>\n\n    <div class=\"d-flex\">\n      <div class=\"my-auto\" style=\"width: 120px; float: left\">\n        {{ 'designer.fixture.setting-stage-floor-height' | translate }}\n      </div>\n      <div class=\"my-auto\" style=\"float: left\">\n        <mv-slider\n          style=\"width: 140px\"\n          [tooltip]=\"'hide'\"\n          [value]=\"projectService.project.stageFloorHeightCm\"\n          [min]=\"1\"\n          [max]=\"1000\"\n          [step]=\"5\"\n          (change)=\"projectService.project.stageFloorHeightCm = $event.newValue; update()\"\n        >\n        </mv-slider>\n      </div>\n      <div class=\"my-auto\">\n        <input\n          type=\"text\"\n          [ngModel]=\"projectService.project.stageFloorHeightCm\"\n          (ngModelChange)=\"projectService.project.stageFloorHeightCm = $event; update()\"\n          class=\"slider-input-readonly\"\n          readonly\n        />\n      </div>\n      <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n    </div>\n\n    <div class=\"d-flex\">\n      <div class=\"my-auto\" style=\"width: 120px; float: left\">\n        {{ 'designer.fixture.setting-stage-ceiling-height' | translate }}\n      </div>\n      <div class=\"my-auto\" style=\"float: left\">\n        <mv-slider\n          style=\"width: 140px\"\n          [tooltip]=\"'hide'\"\n          [value]=\"projectService.project.stageCeilingHeightCm\"\n          [min]=\"1\"\n          [max]=\"1000\"\n          [step]=\"5\"\n          (change)=\"projectService.project.stageCeilingHeightCm = $event.newValue; update()\"\n        >\n        </mv-slider>\n      </div>\n      <div class=\"my-auto\">\n        <input\n          type=\"text\"\n          [ngModel]=\"projectService.project.stageCeilingHeightCm\"\n          (ngModelChange)=\"projectService.project.stageCeilingHeightCm = $event; update()\"\n          class=\"slider-input-readonly\"\n          readonly\n        />\n      </div>\n      <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n    </div>\n\n    <div class=\"d-flex\">\n      <div class=\"my-auto\" style=\"width: 120px; float: left\">\n        {{ 'designer.fixture.setting-stage-pillar-width' | translate }}\n      </div>\n      <div class=\"my-auto\" style=\"float: left\">\n        <mv-slider\n          style=\"width: 140px\"\n          [tooltip]=\"'hide'\"\n          [value]=\"projectService.project.stagePillarWidthCm\"\n          [min]=\"1\"\n          [max]=\"200\"\n          [step]=\"5\"\n          (change)=\"projectService.project.stagePillarWidthCm = $event.newValue; update()\"\n        >\n        </mv-slider>\n      </div>\n      <div class=\"my-auto\">\n        <input\n          type=\"text\"\n          [ngModel]=\"projectService.project.stagePillarWidthCm\"\n          (ngModelChange)=\"projectService.project.stagePillarWidthCm = $event; update()\"\n          class=\"slider-input-readonly\"\n          readonly\n        />\n      </div>\n      <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PresetService } from '../../services/preset.service';\n\n@Component({\n  selector: 'lib-app-fixture-settings',\n  templateUrl: './fixture-settings.component.html',\n  styleUrls: ['./fixture-settings.component.css'],\n})\nexport class FixtureSettingsComponent implements OnInit {\n  dmxChannels: number[] = [];\n\n  constructor(private fixtureService: FixtureService, public presetService: PresetService) {\n    for (let i = 0; i < 512; i++) {\n      this.dmxChannels.push(0);\n    }\n  }\n\n  ngOnInit() {}\n\n  isChrome(): boolean {\n    if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n      return true;\n    }\n    return false;\n  }\n}\n","<div class=\"card border-secondary panel h-100\">\n  <div class=\"card-body capability-container d-flex h-100\" style=\"overflow-y: hidden\">\n    <!-- h-100 needs to be applied in chrome to avoid performance issues with many layouts (reflows)\n      during sliding. But the class must not be applied e.g. in Safari, because the bottom margin is not correct\n      anymore afterwards. -->\n    <div class=\"row m-0 pl-3\" [class.h-100]=\"isChrome()\">\n      <!-- Position -->\n      <div class=\"col col-auto p-0 my-3 mr-3\">\n        <lib-app-fixture-settings-position></lib-app-fixture-settings-position>\n      </div>\n\n      <!-- Stage -->\n      <div class=\"col col-auto p-0 my-3 mr-3\">\n        <lib-app-fixture-settings-stage></lib-app-fixture-settings-stage>\n      </div>\n\n      <!-- Fix spacing at the end -->\n      <div class=\"col col-auto p-0 my-3 mr-3\">&nbsp;</div>\n    </div>\n  </div>\n</div>\n","<div class=\"mr-3\" style=\"float: left\">\n  <div class=\"mb-2\">\n    <select\n      [ngModel]=\"curve.curveType\"\n      (ngModelChange)=\"curve.curveType = $event; presetService.previewLive()\"\n      style=\"width: 200px; height: 20px\"\n    >\n      <option [value]=\"'sine'\">\n        {{ 'designer.effect.curve-sine' | translate }}\n      </option>\n      <option [value]=\"'square'\">\n        {{ 'designer.effect.curve-square' | translate }}\n      </option>\n      <!-- <option [value]=\"'triangle'\">\n        {{ 'designer.effect.curve-triangle' | translate }}</option>\n      <option [value]=\"'sawtooth'\">\n        {{ 'designer.effect.curve-sawtooth' | translate }}</option>\n      <option [value]=\"'reverse-sawtooth'\">\n        {{ 'designer.effect.curve-reverse-sawtooth' | translate }}</option> -->\n    </select>\n  </div>\n  <div>\n    <canvas #curveGrid class=\"curve-grid\" width=\"200\" height=\"100\" viewBox=\"150 -75 4850 5150\" preserveAspectRatio=\"none\"></canvas>\n  </div>\n</div>\n\n<div class=\"mr-4\" style=\"float: left\">\n  <div class=\"d-flex\">\n    <div class=\"my-auto\" style=\"width: 100px; float: left\">\n      {{ 'designer.effect.curve-length' | translate }}\n    </div>\n    <div class=\"my-auto\" style=\"float: left\">\n      <mv-slider\n        (change)=\"redraw(); presetService.previewLive()\"\n        [(value)]=\"curve.lengthMillis\"\n        style=\"width: 80px\"\n        [tooltip]=\"'hide'\"\n        [value]=\"0\"\n        [min]=\"lengthMillisMin\"\n        [max]=\"lengthMillisMax\"\n        [step]=\"1\"\n      ></mv-slider>\n    </div>\n    <div class=\"my-auto\">\n      <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.lengthMillis\" (ngModelChange)=\"setLengthMillis($event); redraw()\" />\n    </div>\n    <div class=\"my-auto ml-1\">\n      {{ 'designer.misc.ms' | translate }}\n    </div>\n  </div>\n\n  <div class=\"d-flex\">\n    <div class=\"my-auto\" style=\"width: 100px; float: left\">\n      {{ 'designer.effect.curve-amplitude' | translate }}\n    </div>\n    <div class=\"my-auto\" style=\"float: left\">\n      <mv-slider\n        (change)=\"redraw(); presetService.previewLive()\"\n        [(value)]=\"curve.amplitude\"\n        style=\"width: 80px\"\n        [tooltip]=\"'hide'\"\n        [min]=\"amplitudeMin\"\n        [max]=\"amplitudeMax\"\n        [step]=\"0.01\"\n      ></mv-slider>\n    </div>\n    <div class=\"my-auto\">\n      <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.amplitude\" (ngModelChange)=\"setAmplitude($event); redraw()\" />\n    </div>\n  </div>\n\n  <div class=\"d-flex\">\n    <div class=\"my-auto\" style=\"width: 100px; float: left\">\n      {{ 'designer.effect.curve-position' | translate }}\n    </div>\n    <div class=\"my-auto\" style=\"float: left\">\n      <mv-slider\n        (change)=\"redraw(); presetService.previewLive()\"\n        [(value)]=\"curve.position\"\n        style=\"width: 80px; height: 18px\"\n        [tooltip]=\"'hide'\"\n        [min]=\"percentageMin\"\n        [max]=\"percentageMax\"\n        [step]=\"0.01\"\n      >\n      </mv-slider>\n    </div>\n    <div class=\"my-auto\">\n      <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.position\" (ngModelChange)=\"setPosition($event); redraw()\" />\n    </div>\n  </div>\n\n  <div class=\"d-flex\">\n    <div class=\"my-auto\" style=\"width: 100px; float: left\">\n      {{ 'designer.effect.curve-phase' | translate }}\n    </div>\n    <div class=\"my-auto\" style=\"float: left\">\n      <mv-slider\n        (change)=\"redraw(); presetService.previewLive()\"\n        [(value)]=\"curve.phaseMillis\"\n        style=\"width: 80px; height: 18px\"\n        [tooltip]=\"'hide'\"\n        [min]=\"phaseMillisMin\"\n        [max]=\"phaseMillisMax\"\n        [step]=\"1\"\n      ></mv-slider>\n    </div>\n    <div class=\"my-auto\">\n      <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.phaseMillis\" (ngModelChange)=\"setPhaseMillis($event); redraw()\" />\n    </div>\n    <div class=\"my-auto ml-1\">\n      {{ 'designer.misc.ms' | translate }}\n    </div>\n  </div>\n\n  <div class=\"d-flex\">\n    <div class=\"my-auto\" style=\"width: 100px; float: left\">\n      {{ 'designer.effect.curve-chase' | translate }}\n    </div>\n    <div class=\"my-auto\" style=\"float: left\">\n      <mv-slider\n        (change)=\"redraw(); presetService.previewLive()\"\n        [(value)]=\"curve.phasingMillis\"\n        style=\"width: 80px; height: 18px\"\n        [tooltip]=\"'hide'\"\n        [min]=\"phasingMillisMin\"\n        [max]=\"phasingMillisMax\"\n        [step]=\"1\"\n      ></mv-slider>\n    </div>\n    <div class=\"my-auto\">\n      <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.phasingMillis\" (ngModelChange)=\"setPhasingMillis($event); redraw()\" />\n    </div>\n    <div class=\"my-auto ml-1\">\n      {{ 'designer.misc.ms' | translate }}\n    </div>\n  </div>\n</div>\n\n<!-- Menu for the capabilities and channels-->\n<div class=\"col col-auto p-0\" style=\"margin-right: 1px; width: 50px; float: left\">\n  <div class=\"nav flex-column nav-pills\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n    <a\n      class=\"nav-link px-3 active\"\n      id=\"v-pills-effect-capabilities-tab\"\n      popover=\"{{ 'designer.misc.capabilities' | translate }}\"\n      container=\"body\"\n      placement=\"right\"\n      triggers=\"mouseenter:mouseleave\"\n      data-toggle=\"pill\"\n      href=\"#v-pills-effect-capabilities-{{ curve?.uuid }}\"\n      role=\"tab\"\n      aria-controls=\"v-pills-capabilities\"\n      aria-selected=\"true\"\n    >\n      <i class=\"fa fa-bolt fa-fw\" aria-hidden=\"true\"></i>\n    </a>\n    <a\n      class=\"nav-link px-3\"\n      id=\"v-pills-effect-channels-tab\"\n      popover=\"{{ 'designer.misc.channels' | translate }}\"\n      container=\"body\"\n      placement=\"right\"\n      triggers=\"mouseenter:mouseleave\"\n      data-toggle=\"pill\"\n      href=\"#v-pills-effect-channels-{{ curve?.uuid }}\"\n      role=\"tab\"\n      aria-controls=\"v-pills-channels\"\n      aria-selected=\"false\"\n    >\n      <i class=\"fa fa-sliders fa-fw\" aria-hidden=\"true\"></i>\n    </a>\n  </div>\n</div>\n\n<div class=\"h-100\" class=\"applying-to\">\n  <div class=\"tab-content h-100\" id=\"v-pills-tabContent\">\n    <div class=\"tab-pane h-100 show active\" id=\"v-pills-effect-capabilities-{{ curve?.uuid }}\" role=\"tabpanel\">\n      <!-- Capabilities-->\n      <div *ngFor=\"let capability of availableCapabilities; let i = index\" class=\"form-check\">\n        <input\n          type=\"checkbox\"\n          class=\"form-check-input\"\n          id=\"capability_{{ curve?.uuid + '_' + i }}\"\n          [ngModel]=\"capabilityChecked(capability)\"\n          (change)=\"toggleCapability($event, capability)\"\n        />\n        <label class=\"form-check-label\" for=\"capability_{{ curve?.uuid + '_' + i }}\">{{ getCapabilityName(capability) | async }}</label>\n      </div>\n    </div>\n    <div class=\"tab-pane h-100 show\" id=\"v-pills-effect-channels-{{ curve?.uuid }}\" role=\"tabpanel\">\n      <!-- channels -->\n\n      <!-- profile selection -->\n      <div *ngIf=\"availableProfiles.length > 1\">\n        <div *ngFor=\"let profile of availableProfiles; let i = index\" class=\"form-check\">\n          <input\n            type=\"checkbox\"\n            class=\"form-check-input\"\n            id=\"channel_profile_{{ curve?.uuid }}_{{ profile.uuid }}\"\n            [ngModel]=\"selectedProfiles.indexOf(profile) >= 0\"\n            (change)=\"changeProfileSelection($event, profile)\"\n          />\n          <label class=\"form-check-label\" for=\"channel_profile_{{ curve?.uuid }}_{{ profile.uuid }}\">{{ profile.name }}</label>\n        </div>\n\n        <hr class=\"my-1\" style=\"border-color: white\" />\n      </div>\n\n      <!-- channels -->\n      <ng-container *ngFor=\"let entry of availableChannels | keyvalue; let i = index\">\n        <div *ngFor=\"let channel of entry.value; let j = index\" class=\"form-check\">\n          <input\n            type=\"checkbox\"\n            class=\"form-check-input\"\n            id=\"channel_{{ curve?.uuid }}_{{ i }}_{{ j }}\"\n            [ngModel]=\"channelChecked(entry.key, channel)\"\n            (change)=\"toggleChannel($event, entry.key, channel)\"\n          />\n          <label class=\"form-check-label\" for=\"channel_{{ curve?.uuid }}_{{ i }}_{{ j }}\">{{\n            getChannelName(entry.key.name, channel.name)\n          }}</label>\n        </div>\n      </ng-container>\n    </div>\n  </div>\n</div>\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { EffectCurveProfileChannels } from '../../models/effect-curve-profile-channel';\nimport { FixtureCapability, FixtureCapabilityColor, FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PresetService } from '../../services/preset.service';\nimport { EffectCurve } from './../../models/effect-curve';\nimport { AnimationService } from './../../services/animation.service';\n\n@Component({\n  selector: 'lib-app-effect-curve',\n  templateUrl: './effect-curve.component.html',\n  styleUrls: ['./effect-curve.component.css'],\n})\nexport class EffectCurveComponent implements OnInit {\n  private gridUpdateSubscription: Subscription;\n  private ctx: any;\n  private maxWidth: number;\n  private maxHeight: number;\n\n  public lengthMillisMin = 20;\n  public lengthMillisMax = 8000;\n  public amplitudeMin = 0;\n  public amplitudeMax = 4;\n  public percentageMin = 0;\n  public percentageMax = 1;\n  public phaseMillisMin = -1000;\n  public phaseMillisMax = 1000;\n  public phasingMillisMin = 0;\n  public phasingMillisMax = 1000;\n\n  // the selected capabilities\n  public availableCapabilities: FixtureCapability[] = [];\n\n  // the selected channels\n  public availableChannels: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n  public availableProfiles: FixtureProfile[] = [];\n  public selectedProfiles: FixtureProfile[] = [];\n\n  @Input() curve: EffectCurve;\n\n  // whether the effect is currently being edited (open) or not\n  @Input()\n  set isSelected(value: boolean) {\n    if (value) {\n      // start the update timer\n      if (!this.gridUpdateSubscription) {\n        this.gridUpdateSubscription = timer(0, 15).subscribe(() => {\n          this.redraw();\n        });\n      }\n    } else {\n      // stop the update timer\n      if (this.gridUpdateSubscription) {\n        this.gridUpdateSubscription.unsubscribe();\n        this.gridUpdateSubscription = undefined;\n      }\n    }\n  }\n\n  @ViewChild('curveGrid', { static: true }) curveGrid: ElementRef;\n\n  constructor(\n    public presetService: PresetService,\n    private animationService: AnimationService,\n    private fixtureService: FixtureService,\n    private translate: TranslateService\n  ) {\n    this.presetService.fixtureSelectionChanged.subscribe(() => {\n      this.updateCapabilitiesAndChannels();\n    });\n\n    this.updateCapabilitiesAndChannels();\n  }\n\n  ngOnInit() {\n    const canvas = this.curveGrid.nativeElement;\n    this.ctx = canvas.getContext('2d');\n    this.maxWidth = canvas.width;\n    this.maxHeight = canvas.height;\n\n    this.redraw();\n  }\n\n  private drawCurrentValue(currMillis: number, radius: number, lineWidth: number, durationMillis: number, maxHeight: number) {\n    const currVal = 1 - this.curve.getValueAtMillis(currMillis);\n\n    const x = (this.maxWidth * (currMillis % durationMillis)) / durationMillis;\n    const y = maxHeight * currVal + lineWidth;\n\n    this.ctx.beginPath();\n    this.ctx.arc(x, y, radius, 0, 2 * Math.PI, false);\n    this.ctx.fillStyle = '#fff';\n    this.ctx.fill();\n    this.ctx.lineWidth = 1;\n    this.ctx.strokeStyle = '#000';\n    this.ctx.stroke();\n  }\n\n  private getPhasingCount(): number {\n    let count = 0;\n    const countedFirstDmxChannelPixelKey: any[] = [];\n\n    for (const presetFixture of this.presetService.selectedPreset.fixtures) {\n      const fixture = this.fixtureService.getFixtureByUuid(presetFixture.fixtureUuid);\n      const firstDmxChannelAndFixtureUuid = {\n        firstDmxChannel: fixture.dmxFirstChannel,\n        pixelKey: presetFixture.pixelKey,\n      };\n\n      const exists = countedFirstDmxChannelPixelKey.some(\n        (item) =>\n          item.firstDmxChannel === firstDmxChannelAndFixtureUuid.firstDmxChannel &&\n          ((!item.pixelKey && !firstDmxChannelAndFixtureUuid.pixelKey) || item.pixelKey === firstDmxChannelAndFixtureUuid.pixelKey)\n      );\n\n      // don't count it, if it has the same DMX address and pixel key (if available),\n      // as an already counted one\n      if (!exists) {\n        count++;\n        countedFirstDmxChannelPixelKey.push(firstDmxChannelAndFixtureUuid);\n      }\n    }\n\n    return count;\n  }\n\n  redraw() {\n    this.ctx.clearRect(0, 0, this.maxWidth, this.maxHeight);\n    this.ctx.fillStyle = '#fff';\n    this.ctx.strokeStyle = '#fff';\n\n    // the width of the lines\n    const width = 3;\n\n    this.ctx.lineWidth = width;\n\n    let oldX: number;\n    let oldY: number;\n\n    let step = 50;\n\n    if (length < 500) {\n      step = 5;\n    }\n\n    const durationMillis = this.curve.lengthMillis * Math.max(Math.round(4 - this.curve.lengthMillis / 1000), 1);\n    const maxHeight = this.maxHeight - width * 2;\n\n    // draw the curve\n    for (let i = -step * 2; i < durationMillis + step * 2; i += step) {\n      const val = 1 - this.curve.getValueAtMillis(i);\n\n      // Scale the values to the grid dimensions\n      const x = (this.maxWidth * i) / durationMillis;\n      const y = maxHeight * val + width;\n\n      if (oldY) {\n        this.ctx.beginPath();\n        this.ctx.moveTo(oldX, oldY);\n        this.ctx.lineTo(x, y);\n        this.ctx.stroke();\n      }\n\n      oldX = x;\n      oldY = y;\n    }\n\n    // draw the current value\n    this.drawCurrentValue(this.animationService.timeMillis % durationMillis, 5, width, durationMillis, maxHeight);\n\n    // draw the phasing values (chase), if required\n    let phasingCount = 0;\n\n    if (this.curve.phasingMillis > 0 && this.presetService.selectedPreset) {\n      phasingCount = this.getPhasingCount();\n    }\n\n    for (let i = 1; i < phasingCount; i++) {\n      this.drawCurrentValue(\n        (this.animationService.timeMillis - i * this.curve.phasingMillis) % durationMillis,\n        3,\n        width,\n        durationMillis,\n        maxHeight\n      );\n    }\n  }\n\n  private calculateChannelCapabilities() {\n    this.availableChannels = this.presetService.getSelectedProfileChannels(this.selectedProfiles);\n  }\n\n  changeProfileSelection($event: any, profile: FixtureProfile) {\n    if (this.selectedProfiles.indexOf(profile) >= 0) {\n      this.selectedProfiles.splice(this.selectedProfiles.indexOf(profile), 1);\n    } else {\n      this.selectedProfiles.push(profile);\n    }\n\n    this.calculateChannelCapabilities();\n  }\n\n  private updateCapabilitiesAndChannels() {\n    // capabilities\n    this.availableCapabilities = [];\n\n    if (this.presetService.hasCapabilityDimmer()) {\n      const capability = new FixtureCapability();\n      capability.type = FixtureCapabilityType.Intensity;\n      this.availableCapabilities.push(capability);\n    }\n\n    if (this.presetService.hasCapabilityColor()) {\n      let capability = new FixtureCapability();\n      capability.type = FixtureCapabilityType.ColorIntensity;\n      capability.color = FixtureCapabilityColor.Red;\n      this.availableCapabilities.push(capability);\n\n      capability = new FixtureCapability();\n      capability.type = FixtureCapabilityType.ColorIntensity;\n      capability.color = FixtureCapabilityColor.Green;\n      this.availableCapabilities.push(capability);\n\n      capability = new FixtureCapability();\n      capability.type = FixtureCapabilityType.ColorIntensity;\n      capability.color = FixtureCapabilityColor.Blue;\n      this.availableCapabilities.push(capability);\n    }\n\n    if (this.presetService.hasCapabilityPanTilt()) {\n      let capability = new FixtureCapability();\n      capability.type = FixtureCapabilityType.Pan;\n      this.availableCapabilities.push(capability);\n\n      capability = new FixtureCapability();\n      capability.type = FixtureCapabilityType.Tilt;\n      this.availableCapabilities.push(capability);\n    }\n\n    // calculate all profiles\n    this.availableProfiles = this.presetService.getSelectedProfiles();\n\n    // select all profiles by default\n    this.selectedProfiles = [...this.availableProfiles];\n\n    // calculate all channels\n    this.calculateChannelCapabilities();\n  }\n\n  getCapabilityName(capability: FixtureCapability): Observable<string> {\n    return this.translate\n      .get(['designer.fixtureCapabilityType.' + capability.type, 'designer.fixtureCapabilityColor.' + capability.color])\n      .pipe(\n        map((result: string) => {\n          let name = '';\n          name += result['designer.fixtureCapabilityType.' + capability.type];\n\n          if (capability.color) {\n            name += ', ' + result['designer.fixtureCapabilityColor.' + capability.color];\n          } else {\n            return name;\n          }\n\n          return name;\n        })\n      );\n  }\n\n  capabilityChecked(capability: FixtureCapability): boolean {\n    for (const existingCapability of this.curve.capabilities) {\n      if (\n        this.fixtureService.capabilitiesMatch(\n          existingCapability.type,\n          capability.type,\n          existingCapability.color,\n          capability.color,\n          null,\n          null,\n          null,\n          null\n        )\n      ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  toggleCapability(event: any, capability: FixtureCapability) {\n    if (event.currentTarget.checked) {\n      // add the capability\n      this.curve.capabilities.push(capability);\n    } else {\n      // Remove the channel\n      for (let i = 0; i < this.curve.capabilities.length; i++) {\n        const existingCapability = this.curve.capabilities[i];\n        if (\n          this.fixtureService.capabilitiesMatch(\n            existingCapability.type,\n            capability.type,\n            existingCapability.color,\n            capability.color,\n            null,\n            null,\n            null,\n            null\n          )\n        ) {\n          this.curve.capabilities.splice(i, 1);\n        }\n      }\n    }\n\n    this.presetService.previewLive();\n  }\n\n  getChannelName(profileName: string, channelName: string) {\n    if (this.availableProfiles.length > 1) {\n      return profileName + ' - ' + channelName;\n    }\n\n    return channelName;\n  }\n\n  channelChecked(profile: FixtureProfile, channel: CachedFixtureChannel): boolean {\n    for (const profileChannels of this.curve.channels) {\n      if (profileChannels.profileUuid === profile.uuid) {\n        if (profileChannels.channels.includes(channel.name)) {\n          return true;\n        }\n\n        break;\n      }\n    }\n\n    return false;\n  }\n\n  toggleChannel(event: any, profile: FixtureProfile, channel: CachedFixtureChannel) {\n    // add the profile, if necessary\n    let profileContained = false;\n    for (const profileChannels of this.curve.channels) {\n      if (profileChannels.profileUuid === profile.uuid) {\n        profileContained = true;\n        break;\n      }\n    }\n\n    if (!profileContained) {\n      const profileChannels = new EffectCurveProfileChannels();\n      profileChannels.profileUuid = profile.uuid;\n      this.curve.channels.push(profileChannels);\n    }\n\n    // add or delete the channel\n    for (const profileChannels of this.curve.channels) {\n      if (profileChannels.profileUuid === profile.uuid) {\n        const index = profileChannels.channels.indexOf(channel.name);\n\n        if (index >= 0) {\n          profileChannels.channels.splice(index, 1);\n        } else {\n          profileChannels.channels.push(channel.name);\n        }\n\n        break;\n      }\n    }\n\n    this.presetService.previewLive();\n  }\n\n  setLengthMillis(value: any) {\n    if (!isNaN(value) && value >= this.lengthMillisMin && value <= this.lengthMillisMax) {\n      this.curve.lengthMillis = +value;\n      this.presetService.previewLive();\n    }\n  }\n\n  setAmplitude(value: any) {\n    if (!isNaN(value) && value >= this.amplitudeMin && value <= this.amplitudeMax) {\n      this.curve.amplitude = +value;\n      this.presetService.previewLive();\n    }\n  }\n\n  setPosition(value: any) {\n    if (!isNaN(value) && value >= this.percentageMin && value <= this.percentageMax) {\n      this.curve.position = +value;\n      this.presetService.previewLive();\n    }\n  }\n\n  setPhaseMillis(value: any) {\n    if (!isNaN(value) && value >= this.phaseMillisMin && value <= this.phaseMillisMax) {\n      this.curve.phaseMillis = +value;\n      this.presetService.previewLive();\n    }\n  }\n\n  setPhasingMillis(value: any) {\n    if (!isNaN(value) && value >= this.phasingMillisMin && value <= this.phasingMillisMax) {\n      this.curve.phasingMillis = +value;\n      this.presetService.previewLive();\n    }\n  }\n}\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'lib-app-effect-pan-tilt',\n  templateUrl: './effect-pan-tilt.component.html',\n  styleUrls: ['./effect-pan-tilt.component.css'],\n})\nexport class EffectPanTiltComponent implements OnInit {\n  @ViewChild('panTiltGrid') panTiltGrid: ElementRef;\n\n  // private line = d3.line();\n  private svg;\n  private path;\n\n  private points = [\n    [0, 500],\n    [500, 0],\n    [1000, 500],\n    [500, 1000],\n  ];\n\n  private dragged = null;\n  private selected = this.points[0];\n\n  constructor() {}\n\n  private redraw() {}\n\n  ngOnInit() {}\n}\n","<svg #panTiltGrid class=\"pan-tilt-grid\" width=\"150\" height=\"150\" viewBox=\"-100 -100 1200 1200\" style=\"border: 1px solid white\"></svg>\n","<div class=\"card border-secondary panel h-100\">\n  <div class=\"card-body capability-container\" *ngIf=\"presetService.selectedPreset\">\n    <div class=\"m-3\">\n      <accordion [closeOthers]=\"true\">\n        <accordion-group\n          *ngFor=\"let item of presetService.selectedPreset.effects; let i = index\"\n          [isOpen]=\"effectService.selectedEffect == item\"\n          (isOpenChange)=\"openEffect(item, $event)\"\n          style=\"margin-top: 1px\"\n        >\n          <button class=\"btn btn-link btn-block clearfix\" accordion-heading>\n            <div class=\"pull-left float-left d-flex w-100\">\n              <i *ngIf=\"item.type == 'curve'\" class=\"fa fa-area-chart fa-fw my-auto\" aria-hidden=\"true\"></i>\n              <i *ngIf=\"item.type == 'pan-tilt'\" class=\"fa fa-arrows-alt fa-fw my-auto\" aria-hidden=\"true\"></i>\n              <span class=\"ml-2\">{{ 'designer.effect.type-' + item.type | translate }}</span>\n              <div class=\"ml-auto mr-2\">\n                <i\n                  (click)=\"item.visible = !item.visible; presetService.previewLive(); $event.stopPropagation()\"\n                  class=\"fa fa-eye fa-fw\"\n                  [class.text-primary]=\"item.visible\"\n                  aria-hidden=\"true\"\n                ></i>\n              </div>\n              <div class=\"mr-2\">\n                <i (click)=\"this.deleteEffect(item); $event.stopPropagation()\" class=\"fa fa-trash fa-fw\" aria-hidden=\"true\"></i>\n              </div>\n              <div class=\"mr-2\">\n                <i *ngIf=\"item == effectService.selectedEffect\" class=\"fa fa-caret-down fa-fw\" aria-hidden=\"true\"></i>\n                <i *ngIf=\"item != effectService.selectedEffect\" class=\"fa fa-caret-right fa-fw\" aria-hidden=\"true\"></i>\n              </div>\n            </div>\n          </button>\n\n          <div *ngIf=\"item.type == 'curve'\" style=\"min-width: 670px\">\n            <lib-app-effect-curve [curve]=\"item\" [isSelected]=\"item == effectService.selectedEffect\"></lib-app-effect-curve>\n          </div>\n\n          <div *ngIf=\"item.type == 'pan-tilt'\" style=\"min-width: 500px\">\n            <lib-app-effect-pan-tilt></lib-app-effect-pan-tilt>\n          </div>\n        </accordion-group>\n      </accordion>\n\n      <div class=\"d-flex mx-auto mt-3\">\n        <div class=\"dropdown d-flex\">\n          <a\n            class=\"btn btn-secondary dropdown-toggle\"\n            href=\"#\"\n            role=\"button\"\n            id=\"dropdownMenuLink\"\n            data-toggle=\"dropdown\"\n            aria-haspopup=\"true\"\n            aria-expanded=\"false\"\n          >\n            <i class=\"fa fa-plus\" aria-hidden=\"true\"></i> {{ 'designer.effect.add-new' | translate }}\n          </a>\n\n          <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuLink\">\n            <a class=\"dropdown-item\" href=\"#\" (click)=\"addCurveEffect(); (false)\">\n              <i class=\"fa fa-area-chart fa-fw\" aria-hidden=\"true\"></i> {{ 'designer.effect.curve' | translate }}</a\n            >\n            <!-- <a class=\"dropdown-item\" href=\"#\" (click)=\"addPanTiltEffect()\">\n              <i class=\"fa fa-arrows-alt fa-fw\" aria-hidden=\"true\"></i> Pan/Tilt</a> -->\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Effect } from '../models/effect';\nimport { EffectCurve } from '../models/effect-curve';\nimport { EffectPanTilt } from '../models/effect-pan-tilt';\nimport { EffectService } from '../services/effect.service';\nimport { PresetService } from '../services/preset.service';\nimport { UuidService } from '../services/uuid.service';\nimport { WarningDialogService } from '../services/warning-dialog.service';\n\n@Component({\n  selector: 'lib-app-effect',\n  templateUrl: './effect.component.html',\n  styleUrls: ['./effect.component.css'],\n})\nexport class EffectComponent implements OnInit {\n  constructor(\n    private uuidService: UuidService,\n    public presetService: PresetService,\n    public effectService: EffectService,\n    private warningDialogService: WarningDialogService\n  ) {}\n\n  ngOnInit() {}\n\n  private addEffect(effect: Effect) {\n    this.effectService.selectedEffect = effect;\n\n    if (this.presetService.selectedPreset) {\n      this.presetService.selectedPreset.effects.push(effect);\n    }\n  }\n\n  addCurveEffect() {\n    const effect = new EffectCurve();\n    effect.uuid = this.uuidService.getUuid();\n    this.addEffect(effect);\n    this.presetService.previewLive();\n  }\n\n  addPanTiltEffect() {\n    this.addEffect(new EffectPanTilt());\n  }\n\n  openEffect(effect: Effect, event: any) {\n    if (event) {\n      this.effectService.selectedEffect = effect;\n    } else {\n      if (this.effectService.selectedEffect === effect) {\n        this.effectService.selectedEffect = undefined;\n      }\n    }\n  }\n\n  deleteEffect(effect: Effect) {\n    this.warningDialogService\n      .show('designer.effect.delete-warning')\n      .pipe(\n        map((result) => {\n          if (result) {\n            this.presetService.selectedPreset.effects.splice(this.presetService.selectedPreset.effects.indexOf(effect), 1);\n            this.presetService.previewLive();\n          }\n        })\n      )\n      .subscribe();\n  }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Preset } from '../../models/preset';\n\n@Component({\n  selector: 'lib-preset-settings',\n  templateUrl: './preset-settings.component.html',\n  styleUrls: ['./preset-settings.component.css'],\n})\nexport class PresetSettingsComponent implements OnInit {\n  preset: Preset;\n\n  name: string;\n  startMillis: number;\n  endMillis: number;\n  fadeInMillis: number;\n  fadeOutMillis: number;\n  fadeInPre: boolean;\n  fadeOutPost: boolean;\n\n  constructor(public bsModalRef: BsModalRef) {}\n\n  ngOnInit() {\n    this.name = this.preset.name;\n    this.startMillis = this.preset.startMillis;\n    this.endMillis = this.preset.endMillis;\n    this.fadeInMillis = this.preset.fadeInMillis;\n    this.fadeOutMillis = this.preset.fadeOutMillis;\n    this.fadeInPre = this.preset.fadeInPre;\n    this.fadeOutPost = this.preset.fadeOutPost;\n  }\n\n  ok() {\n    this.preset.name = this.name;\n\n    if (this.startMillis === undefined || this.startMillis === null || (this.startMillis as any) === '') {\n      this.preset.startMillis = undefined;\n    } else if (!isNaN(this.startMillis) && this.startMillis >= 0) {\n      this.preset.startMillis = +this.startMillis;\n    }\n    if (this.endMillis === undefined || this.endMillis === null || (this.endMillis as any) === '') {\n      this.preset.endMillis = undefined;\n    } else if (!isNaN(this.endMillis) && this.endMillis >= 0) {\n      this.preset.endMillis = +this.endMillis;\n    }\n    if (!isNaN(this.fadeInMillis) && this.fadeInMillis >= 0) {\n      this.preset.fadeInMillis = +this.fadeInMillis;\n    }\n    if (!isNaN(this.fadeOutMillis) && this.fadeOutMillis >= 0) {\n      this.preset.fadeOutMillis = +this.fadeOutMillis;\n    }\n\n    this.preset.fadeInPre = this.fadeInPre;\n    this.preset.fadeOutPost = this.fadeOutPost;\n\n    this.bsModalRef.hide();\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n  }\n\n  @HostListener('document:keydown.enter', ['$event'])\n  handleKeyboardEvent(event: any) {\n    this.ok();\n  }\n}\n","<div class=\"modal-header\">\n  <h4 class=\"modal-title pull-left\">{{ name }}</h4>\n  <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body\">\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-name' | translate }}</label>\n    <div class=\"col-lg-7\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"name\" (ngModelChange)=\"name = $event\" />\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-start' | translate }}</label>\n    <div class=\"col-lg-7\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"startMillis\" (ngModelChange)=\"startMillis = $event\" />\n    </div>\n    <div class=\"col-lg-1 d-flex p-0\">\n      <div class=\"my-auto\">\n        {{ 'designer.misc.ms' | translate }}\n      </div>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-end' | translate }}</label>\n    <div class=\"col-lg-7\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"endMillis\" (ngModelChange)=\"endMillis = $event\" />\n    </div>\n    <div class=\"col-lg-1 d-flex p-0\">\n      <div class=\"my-auto\">\n        {{ 'designer.misc.ms' | translate }}\n      </div>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-fade-in' | translate }}</label>\n    <div class=\"col-lg-7\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"fadeInMillis\" (ngModelChange)=\"fadeInMillis = $event\" />\n    </div>\n    <div class=\"col-lg-1 d-flex p-0\">\n      <div class=\"my-auto\">\n        {{ 'designer.misc.ms' | translate }}\n      </div>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\"></label>\n    <div class=\"col-lg-8 d-flex\">\n      <div class=\"form-check my-auto\">\n        <input type=\"checkbox\" [ngModel]=\"fadeInPre\" (ngModelChange)=\"fadeInPre = $event\" class=\"form-check-input\" id=\"fadeInPre\" />\n\n        <label class=\"form-check-label\" for=\"fadeInPre\">\n          {{ 'designer.preset.settings-fade-in-pre' | translate }}\n        </label>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-fade-out' | translate }}</label>\n    <div class=\"col-lg-7\">\n      <input type=\"text\" class=\"form-control\" [ngModel]=\"fadeOutMillis\" (ngModelChange)=\"fadeOutMillis = $event\" />\n    </div>\n    <div class=\"col-lg-1 d-flex p-0\">\n      <div class=\"my-auto\">\n        {{ 'designer.misc.ms' | translate }}\n      </div>\n    </div>\n  </div>\n\n  <div class=\"form-group row\">\n    <label class=\"col-lg-4 col-form-label\"></label>\n    <div class=\"col-lg-8 d-flex\">\n      <div class=\"form-check my-auto\">\n        <input type=\"checkbox\" [ngModel]=\"fadeOutPost\" (ngModelChange)=\"fadeOutPost = $event\" class=\"form-check-input\" id=\"fadeOutPost\" />\n\n        <label class=\"form-check-label\" for=\"fadeOutPost\">\n          {{ 'designer.preset.settings-fade-out-post' | translate }}\n        </label>\n      </div>\n    </div>\n  </div>\n</div>\n<div class=\"modal-footer\">\n  <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n    {{ 'designer.misc.cancel' | translate }}\n  </a>\n  <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","<div\n  class=\"card border-secondary h-100 panel card-intro-preset card-intro-active\"\n  [class.card-intro-active]=\"introService.showStep('presets')\"\n>\n  <div class=\"card-header d-flex\">\n    <div>\n      {{ 'designer.preset.title' | translate }}\n    </div>\n    <div class=\"ml-auto\">\n      <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"removePreset(); (false)\"\n        ><i class=\"fa fa-minus-circle fa-fw\" aria-hidden=\"true\"></i\n      ></a>\n      <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"addPreset(); (false)\"\n        ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i\n      ></a>\n    </div>\n  </div>\n\n  <div class=\"card-body h-100 p-0\">\n    <!-- List of presets -->\n    <div class=\"list-group\" [sortablejs]=\"projectService.project.presets\">\n      <div\n        class=\"list-group-item\"\n        *ngFor=\"let item of projectService.project.presets; let i = index\"\n        (click)=\"selectPreset(i)\"\n        [class.active-light]=\"!projectService.project.previewPreset && item == presetService.selectedPreset\"\n        [class.active]=\"projectService.project.previewPreset && item == presetService.selectedPreset\"\n        [class.inactive-list-item]=\"!sceneService.presetIsSelected(item)\"\n      >\n        <div class=\"row d-flex\" style=\"cursor: pointer\">\n          <div class=\"col-auto list-sort-handle my-auto\" style=\"cursor: move; cursor: -webkit-grabbing\">\n            <i class=\"fa fa-bars\" aria-hidden=\"true\"></i>\n          </div>\n          <div class=\"form-check\">\n            <input\n              type=\"checkbox\"\n              [disabled]=\"!enableCheckbox()\"\n              class=\"form-check-input\"\n              id=\"active\"\n              [ngModel]=\"sceneService.presetIsSelected(item)\"\n              (ngModelChange)=\"activatePreset($event, i)\"\n              (click)=\"$event.stopPropagation()\"\n            />\n          </div>\n          <div>\n            {{ item.name }}\n          </div>\n          <div class=\"my-auto ml-auto mr-2 d-flex\">\n            <button type=\"button\" class=\"btn btn-secondary btn-sm py-0 px-1\" (click)=\"openSettings(item); (false)\">...</button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Preset } from '../models/preset';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { SceneService } from '../services/scene.service';\nimport { PresetSettingsComponent } from './preset-settings/preset-settings.component';\n\n@Component({\n  selector: 'lib-app-preset',\n  templateUrl: './preset.component.html',\n  styleUrls: ['./preset.component.css'],\n})\nexport class PresetComponent implements OnInit {\n  constructor(\n    public presetService: PresetService,\n    public sceneService: SceneService,\n    public projectService: ProjectService,\n    public introService: IntroService,\n    private modalService: BsModalService\n  ) {}\n\n  ngOnInit() {}\n\n  selectPreset(index: number) {\n    this.projectService.project.previewPreset = true;\n    this.presetService.selectPreset(index);\n  }\n\n  enableCheckbox(): boolean {\n    return this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1;\n  }\n\n  activatePreset(active: boolean, index: number) {\n    if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n      const uuid = this.projectService.project.presets[index].uuid;\n\n      if (active) {\n        // Activate a new uuid\n        this.sceneService.selectedScenes[0].presetUuids.push(uuid);\n      } else {\n        // Remove the uuid\n        for (let i = 0; i < this.sceneService.selectedScenes[0].presetUuids.length; i++) {\n          if (this.sceneService.selectedScenes[0].presetUuids[i] === uuid) {\n            this.sceneService.selectedScenes[0].presetUuids.splice(i, 1);\n            return;\n          }\n        }\n      }\n    }\n  }\n\n  addPreset() {\n    this.presetService.addPreset();\n\n    if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n      this.sceneService.selectedScenes[0].presetUuids.push(this.presetService.selectedPreset.uuid);\n    }\n  }\n\n  removePreset() {\n    if (!this.presetService.selectedPreset) {\n      return;\n    }\n\n    this.projectService.project.presets.splice(this.projectService.project.presets.indexOf(this.presetService.selectedPreset), 1);\n    this.presetService.selectPreset(0);\n  }\n\n  openSettings(preset: Preset) {\n    const bsModalRef = this.modalService.show(PresetSettingsComponent, {\n      keyboard: true,\n      ignoreBackdropClick: false,\n      class: '',\n      initialState: { preset },\n    });\n  }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\n\n@Component({\n  selector: 'lib-app-master-dimmer',\n  templateUrl: './master-dimmer.component.html',\n  styleUrls: ['./master-dimmer.component.css'],\n})\nexport class MasterDimmerComponent implements OnInit {\n  constructor(public projectService: ProjectService, private changeDetectorRef: ChangeDetectorRef, private presetService: PresetService) {}\n\n  ngOnInit() {}\n\n  setValue(value: any) {\n    if (isNaN(value)) {\n      return;\n    }\n\n    if (value < 0 || value > 1) {\n      return;\n    }\n\n    this.projectService.project.masterDimmerValue = value;\n    this.changeDetectorRef.detectChanges();\n    this.presetService.previewLive();\n  }\n\n  getValue(): number {\n    return Math.round(this.projectService.project.masterDimmerValue * 100 * 100) / 100;\n  }\n}\n","<div class=\"card border-secondary h-100\">\n  <!-- For larger screens vertically -->\n  <div class=\"d-none d-md-flex card-body h-100\" style=\"flex-direction: column\">\n    <div class=\"mb-3 w-100 d-flex\">\n      <i class=\"icon-dimmer m-auto\" style=\"font-size: 2em\"></i>\n    </div>\n\n    <div class=\"mb-4 w-100 d-flex\">\n      <input\n        class=\"mx-auto\"\n        type=\"text\"\n        [ngModel]=\"getValue()\"\n        (ngModelChange)=\"setValue($event / 100)\"\n        style=\"width: 42px; height: 23px; text-align: center; font-size: 12px; font-family: monospace\"\n      />\n    </div>\n\n    <div class=\"h-100 w-100 d-flex\">\n      <mv-slider\n        class=\"mx-auto\"\n        [value]=\"projectService?.project?.masterDimmerValue\"\n        (change)=\"setValue($event.newValue)\"\n        [orientation]=\"'vertical'\"\n        [reversed]=\"true\"\n        style=\"height: 100%\"\n        [tooltip]=\"'hide'\"\n        [min]=\"0\"\n        [max]=\"1\"\n        [step]=\"0.001\"\n      ></mv-slider>\n    </div>\n  </div>\n\n  <!-- For smaller screens horizontally -->\n  <div class=\"d-flex d-md-none card-body h-100\">\n    <div class=\"mb-3 d-flex my-auto\">\n      <i class=\"icon-dimmer m-auto\" style=\"font-size: 2em\"></i>\n    </div>\n\n    <div class=\"h-100 w-100 d-flex my-auto mx-3\">\n      <mv-slider\n        class=\"mx-auto\"\n        [value]=\"projectService?.project?.masterDimmerValue\"\n        (change)=\"setValue($event.newValue)\"\n        [orientation]=\"'horizontal'\"\n        style=\"width: 100%\"\n        [tooltip]=\"'hide'\"\n        [min]=\"0\"\n        [max]=\"1\"\n        [step]=\"0.001\"\n      ></mv-slider>\n    </div>\n\n    <div class=\"mb-4 d-flex my-auto\">\n      <input\n        class=\"mx-auto\"\n        type=\"text\"\n        [ngModel]=\"getValue()\"\n        (ngModelChange)=\"setValue($event / 100)\"\n        style=\"width: 42px; height: 23px; text-align: center; font-size: 12px; font-family: monospace\"\n      />\n    </div>\n  </div>\n</div>\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"value == undefined\" style=\"min-height: 200px\">\n  <div class=\"card-header\">\n    <div class=\"my-auto\">\n      <div class=\"form-check\">\n        <input\n          type=\"checkbox\"\n          class=\"form-check-input\"\n          id=\"capabilityGeneric{{ capabilityIndex }}Active\"\n          [ngModel]=\"value != undefined\"\n          (ngModelChange)=\"changeActive($event)\"\n        />\n        <label class=\"form-check-label\" for=\"capabilityGeneric{{ capabilityIndex }}Active\">\n          {{ _channel?.name }}\n        </label>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"card-body h-100 d-flex\" style=\"flex-direction: column; overflow: hidden\">\n    <div class=\"row h-100\">\n      <!-- display all options, if there is more than one -->\n      <div *ngIf=\"_channel.capabilities?.length > 1\" class=\"col mr-3\" style=\"overflow-y: auto\">\n        <div *ngFor=\"let capability of _channel.capabilities; let i = index\" class=\"form-check\">\n          <input\n            [(ngModel)]=\"selectedCapability\"\n            (change)=\"capabilitySelected()\"\n            class=\"form-check-input\"\n            type=\"radio\"\n            name=\"capabilityGeneric{{ capabilityIndex }}Option\"\n            id=\"capabilityGeneric{{ capabilityIndex }}Option{{ i }}\"\n            [value]=\"capability\"\n          />\n          <label style=\"max-width: 200px\" class=\"form-check-label\" for=\"capabilityGeneric{{ capabilityIndex }}Option{{ i }}\">\n            {{ 'designer.fixtureCapabilityType.' + capability.capability.type | translate\n            }}<span *ngIf=\"getDescription(capability)\"> ({{ getDescription(capability) }})</span\n            ><small\n              ><div *ngFor=\"let color of capability.capability.colors\" class=\"color\" [style.background-color]=\"color\"></div>\n              <small *ngIf=\"getDescriptionStart(capability)\">\n                ({{ getDescriptionStart(capability) }} to {{ getDescriptionEnd(capability) }})</small\n              >\n              <span *ngIf=\"capability.capability.comment\"> - </span> {{ capability.capability.comment }}</small\n            >\n            <i\n              *ngIf=\"capability.capability.soundControlled\"\n              class=\"fa fa-microphone pl-1\"\n              popover=\"{{ 'designer.fixture.capability-sound-controlled' | translate }}\"\n              container=\"body\"\n              placement=\"top\"\n              triggers=\"mouseenter:mouseleave\"\n              aria-hidden=\"true\"\n            ></i>\n            <i\n              *ngIf=\"capability.capability.randomTiming\"\n              class=\"fa fa-random pl-1\"\n              popover=\"{{ 'designer.fixture.capability-random-timing' | translate }}\"\n              container=\"body\"\n              placement=\"top\"\n              triggers=\"mouseenter:mouseleave\"\n              aria-hidden=\"true\"\n            ></i>\n          </label>\n        </div>\n      </div>\n\n      <!-- display a slider to select the value for the currently selected capability, if it has a range -->\n      <div\n        *ngIf=\"hasRange\"\n        class=\"col col-auto d-flex mx-auto\"\n        [class.pl-0]=\"_channel.capabilities?.length > 1\"\n        style=\"flex-direction: column\"\n      >\n        <div class=\"mb-2 w-100 d-flex\">\n          <input\n            #sliderValue\n            class=\"mx-auto\"\n            type=\"text\"\n            [ngModel]=\"templateValue\"\n            (ngModelChange)=\"setValue($event)\"\n            style=\"width: 45px; height: 20px; text-align: center; font-size: 12px; font-family: monospace\"\n          />\n        </div>\n\n        <div class=\"mx-auto mb-2\">{{ descriptionEnd }}</div>\n\n        <div class=\"h-100 w-100 d-flex\">\n          <mv-slider\n            #slider\n            class=\"mx-auto\"\n            [value]=\"templateValue\"\n            (change)=\"setValue($event.newValue)\"\n            [orientation]=\"'vertical'\"\n            [reversed]=\"true\"\n            style=\"height: 100%\"\n            [tooltip]=\"'hide'\"\n            [min]=\"rangeMin\"\n            [max]=\"rangeMax\"\n            [step]=\"1\"\n          ></mv-slider>\n        </div>\n\n        <div class=\"mx-auto mt-2\">{{ descriptionStart }}</div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { CachedFixtureCapability } from '../../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../../models/fixture-profile';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n  selector: 'lib-app-fixture-capability-channel',\n  templateUrl: './fixture-capability-channel.component.html',\n  styleUrls: ['./fixture-capability-channel.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FixtureCapabilityChannelComponent implements OnInit {\n  @ViewChild('sliderValue', { static: false }) sliderValue: ElementRef;\n\n  selectedCapability: CachedFixtureCapability;\n  _channel: CachedFixtureChannel;\n\n  defaultValue = 0;\n  value = 0;\n  templateValue = 0;\n  description: string;\n\n  hasRange = false;\n  rangeMin = 0;\n  rangeMax = 0;\n  descriptionStart: string;\n  descriptionEnd: string;\n\n  valueSetTimer: any;\n\n  @Input()\n  profile: FixtureProfile;\n\n  @Input()\n  set channel(value: CachedFixtureChannel) {\n    this._channel = value;\n    this.updateChannel();\n  }\n\n  @Input()\n  capabilityIndex: number;\n\n  constructor(private presetService: PresetService) {}\n\n  private updateChannel() {\n    this.selectedCapability = this._channel.capabilities[0];\n\n    this.value = this.presetService.getChannelValue(this._channel.name, this.profile.uuid);\n    this.calculateTemplateValue();\n\n    if (this.value >= 0) {\n      for (const capability of this._channel.capabilities) {\n        if (\n          capability.capability.dmxRange.length > 0 &&\n          capability.capability.dmxRange[0] <= this.value &&\n          this.value <= capability.capability.dmxRange[1]\n        ) {\n          this.selectedCapability = capability;\n          break;\n        }\n      }\n    }\n\n    this.defaultValue = this.getDefaultValue();\n    this.description = this.getDescription(this.selectedCapability);\n\n    this.hasRange = this.capabilityHasRange();\n    this.rangeMin = this.getRangeMin();\n    this.rangeMax = this.getRangeMax();\n    this.descriptionStart = this.getDescriptionStart(this.selectedCapability);\n    this.descriptionEnd = this.getDescriptionEnd(this.selectedCapability);\n  }\n\n  capabilityHasRange(): boolean {\n    if (this._channel?.capabilities?.length === 1) {\n      // TODO does this work in all cases? if we have no option, it's always a range?\n      return true;\n    }\n\n    if (\n      this.selectedCapability?.capability.angleStart ||\n      this.selectedCapability?.capability.speedStart ||\n      this.selectedCapability?.capability.brightnessStart ||\n      this.selectedCapability?.capability.durationStart ||\n      this.selectedCapability?.capability.colorTemperatureStart ||\n      this.selectedCapability?.capability.soundSensitivityStart ||\n      this.selectedCapability?.capability.horizontalAngleStart ||\n      this.selectedCapability?.capability.verticalAngleStart ||\n      this.selectedCapability?.capability.distanceStart ||\n      this.selectedCapability?.capability.openPercentStart ||\n      this.selectedCapability?.capability.frostIntensityStart ||\n      this.selectedCapability?.capability.fogOutputStart ||\n      this.selectedCapability?.capability.timeStart ||\n      this.selectedCapability?.capability.insertionStart ||\n      this.selectedCapability?.capability.colorsStart\n    ) {\n      return true;\n    }\n\n    return false;\n  }\n\n  getDescriptionStart(capability: CachedFixtureCapability) {\n    if (!capability || !capability.capability) {\n      return '';\n    }\n    return (\n      capability.capability.angleStart ||\n      capability.capability.speedStart ||\n      capability.capability.brightnessStart ||\n      capability.capability.durationStart ||\n      capability.capability.colorTemperatureStart ||\n      capability.capability.soundSensitivityStart ||\n      capability.capability.horizontalAngleStart ||\n      capability.capability.verticalAngleStart ||\n      capability.capability.distanceStart ||\n      capability.capability.openPercentStart ||\n      capability.capability.frostIntensityStart ||\n      capability.capability.fogOutputStart ||\n      capability.capability.timeStart ||\n      capability.capability.insertionStart ||\n      capability.capability.colorsStart\n    )?.toString();\n  }\n\n  getDescriptionEnd(capability: CachedFixtureCapability) {\n    if (!capability || !capability.capability) {\n      return '';\n    }\n    return (\n      capability.capability.angleEnd ||\n      capability.capability.speedEnd ||\n      capability.capability.brightnessEnd ||\n      capability.capability.durationEnd ||\n      capability.capability.colorTemperatureEnd ||\n      capability.capability.soundSensitivityEnd ||\n      capability.capability.horizontalAngleEnd ||\n      capability.capability.verticalAngleEnd ||\n      capability.capability.distanceEnd ||\n      capability.capability.openPercentEnd ||\n      capability.capability.frostIntensityEnd ||\n      capability.capability.fogOutputEnd ||\n      capability.capability.timeEnd ||\n      capability.capability.insertionEnd ||\n      capability.capability.colorsEnd\n    )?.toString();\n  }\n\n  getDescription(capability: CachedFixtureCapability) {\n    if (!capability || !capability.capability) {\n      return '';\n    }\n    return (\n      capability.capability.slotNumber ||\n      capability.capability.shutterEffect ||\n      capability.capability.angle ||\n      capability.capability.speed ||\n      capability.capability.brightness ||\n      capability.capability.duration ||\n      capability.capability.colorTemperature ||\n      capability.capability.soundSensitivity ||\n      capability.capability.horizontalAngle ||\n      capability.capability.verticalAngle ||\n      capability.capability.distance ||\n      capability.capability.openPercent ||\n      capability.capability.frostIntensity ||\n      capability.capability.fogOutput ||\n      capability.capability.time ||\n      capability.capability.insertion\n    )?.toString();\n  }\n\n  private getRangeMin(): number {\n    if (this.selectedCapability.capability.dmxRange.length > 0) {\n      return this.selectedCapability.capability.dmxRange[0];\n    }\n\n    return 0;\n  }\n\n  private getRangeMax(): number {\n    if (this.selectedCapability.capability.dmxRange.length > 0) {\n      return this.selectedCapability.capability.dmxRange[1];\n    }\n\n    return this._channel.maxValue;\n  }\n\n  ngOnInit() {}\n\n  setValue(value: any, ignoreCapabilityRange: boolean = false) {\n    if (isNaN(value)) {\n      return;\n    }\n\n    if (!ignoreCapabilityRange && (value < this.rangeMin || value > this.rangeMax)) {\n      return;\n    }\n\n    this.value = value;\n    this.calculateTemplateValue();\n\n    this.presetService.setChannelValue(this._channel.name, this.profile.uuid, value);\n    if (this.sliderValue) {\n      // update the value without change detector for performance reasons and only in a specific\n      // interval. each value set will trigger a layout/reflow event and slow down the performance\n      // TODO use the same technique in the dimmer/pan/tilt/color sliders\n      if (!this.valueSetTimer) {\n        this.valueSetTimer = setTimeout(() => {\n          if (this.sliderValue) {\n            this.sliderValue.nativeElement.value = this.value;\n          }\n          this.valueSetTimer = undefined;\n        }, 30);\n      }\n    }\n    this.presetService.previewLive();\n  }\n\n  private calculateTemplateValue() {\n    this.templateValue = this.value ? this.value : this.getDefaultValue();\n  }\n\n  private getDefaultValue(): number {\n    if (this._channel.defaultValue) {\n      return this._channel.defaultValue;\n    }\n\n    return 0;\n  }\n\n  changeActive(active: boolean) {\n    if (active) {\n      this.setValue(this.getDefaultValue(), true);\n    } else {\n      this.presetService.deleteChannelValue(this._channel.name, this.profile.uuid);\n      this.selectedCapability = this._channel.capabilities[0];\n      this.value = undefined;\n      this.calculateTemplateValue();\n    }\n    this.presetService.previewLive();\n  }\n\n  capabilitySelected() {\n    // select the center value of the selected capability\n    if (this.capabilityHasRange()) {\n      this.setValue(this.selectedCapability.capability.dmxRange[0], true);\n    } else {\n      this.setValue(this.selectedCapability.centerValue, true);\n    }\n    this.updateChannel();\n  }\n}\n","<div class=\"card border-secondary panel h-100\">\n  <div class=\"card-body capability-container d-flex h-100\" style=\"overflow-y: hidden\">\n    <!-- h-100 needs to be applied in chrome to avoid performance issues with many layouts (reflows)\n      during sliding. But the class must not be applied e.g. in Safari, because the bottom margin is not correct\n      anymore afterwards. -->\n    <div *ngIf=\"presetService.selectedPreset\" class=\"row m-0 pl-3\" [class.h-100]=\"isChrome()\">\n      <!-- profile selection -->\n      <div\n        *ngIf=\"profiles.length > 1\"\n        class=\"col col-auto p-3 my-3 mr-3\"\n        style=\"height: calc(100% - 2rem); border: solid 1px #444; border-right: none\"\n      >\n        <div *ngFor=\"let profile of profiles; let i = index\" class=\"form-check\">\n          <input\n            type=\"checkbox\"\n            class=\"form-check-input\"\n            id=\"capabilityFilter{{ i }}\"\n            [ngModel]=\"selectedProfiles.indexOf(profile) >= 0\"\n            (ngModelChange)=\"changeProfileSelection($event, profile)\"\n          />\n          <label class=\"form-check-label\" for=\"capabilityFilter{{ i }}\">\n            {{ profile.name }}\n          </label>\n        </div>\n      </div>\n\n      <!-- all channel capabilities -->\n      <ng-container *ngFor=\"let entry of channelCapabilities | keyvalue; let i = index\">\n        <div *ngFor=\"let capability of entry.value; let j = index\" class=\"col col-auto p-0 my-3 mr-3\" style=\"height: calc(100% - 2rem)\">\n          <lib-app-fixture-capability-channel [profile]=\"entry.key\" [channel]=\"capability\" [capabilityIndex]=\"i * 10000 + j\">\n          </lib-app-fixture-capability-channel>\n        </div>\n      </ng-container>\n\n      <!-- fix spacing at the end -->\n      <div class=\"col col-auto p-0 my-3 mr-3\">&nbsp;</div>\n    </div>\n\n    <div *ngIf=\"projectService.project.fixtures.length == 0\" class=\"m-auto\">\n      <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures' | translate }}</p>\n    </div>\n\n    <div\n      *ngIf=\"\n        projectService.project.fixtures.length > 0 && presetService.selectedPreset && presetService.selectedPreset.fixtures.length == 0\n      \"\n      class=\"m-auto\"\n    >\n      <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures-selected' | translate }}</p>\n    </div>\n  </div>\n</div>\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { PresetService } from '../../services/preset.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n  selector: 'lib-app-fixture-channel',\n  templateUrl: './fixture-channel.component.html',\n  styleUrls: ['./fixture-channel.component.css'],\n})\nexport class FixtureChannelComponent implements OnInit, OnDestroy {\n  public channelCapabilities: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n  public profiles: FixtureProfile[] = [];\n  public selectedProfiles: FixtureProfile[] = [];\n\n  private fixtureSelectionChangedSubscription: Subscription;\n  private previewSelectionChangedSubscription: Subscription;\n\n  constructor(public presetService: PresetService, private changeDetectorRef: ChangeDetectorRef, public projectService: ProjectService) {\n    this.fixtureSelectionChangedSubscription = this.presetService.fixtureSelectionChanged.subscribe(() => {\n      this.calculateProfiles();\n    });\n\n    this.previewSelectionChangedSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n      this.calculateProfiles();\n    });\n  }\n\n  ngOnInit() {\n    this.calculateProfiles();\n  }\n\n  ngOnDestroy() {\n    this.fixtureSelectionChangedSubscription.unsubscribe();\n    this.previewSelectionChangedSubscription.unsubscribe();\n  }\n\n  private calculateChannelCapabilities() {\n    this.channelCapabilities = this.presetService.getSelectedProfileChannels(this.selectedProfiles);\n\n    this.changeDetectorRef.detectChanges();\n  }\n\n  private calculateProfiles() {\n    // calculate all profiels\n    this.profiles = this.presetService.getSelectedProfiles();\n\n    // select all profiles by default\n    this.selectedProfiles = [...this.profiles];\n\n    this.calculateChannelCapabilities();\n  }\n\n  changeProfileSelection($event: any, profile: FixtureProfile) {\n    if (this.selectedProfiles.indexOf(profile) >= 0) {\n      this.selectedProfiles.splice(this.selectedProfiles.indexOf(profile), 1);\n    } else {\n      this.selectedProfiles.push(profile);\n    }\n\n    this.calculateChannelCapabilities();\n  }\n\n  isChrome(): boolean {\n    if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n      return true;\n    }\n    return false;\n  }\n}\n","<div\n  *ngIf=\"introService.showIntro\"\n  class=\"card border-secondary h-100 panel card-intro-active\"\n  [ngStyle]=\"{\n    top: 'calc(' + introService.positionTopPercentage + '% - 150px)',\n    left: 'calc(' + introService.positionLeftPercentage + '% - 200px)'\n  }\"\n>\n  <div class=\"card-header d-flex\">\n    <div>\n      <i class=\"fa fa-info-circle mr-1\" aria-hidden=\"true\"></i>\n      {{ 'designer.intro.title-' + introService.activeStep | translate }}\n    </div>\n    <div class=\"ml-auto\">\n      <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"close(); (false)\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></a>\n    </div>\n  </div>\n\n  <div class=\"card-body h-100\">\n    <p>{{ 'designer.intro.step-' + introService.activeStep | translate }}</p>\n  </div>\n\n  <div class=\"card-footer\">\n    <button *ngIf=\"introService.activeStep != 'start'\" type=\"button\" class=\"btn btn-secondary\" (click)=\"introService.back()\">\n      <i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i> {{ 'designer.intro.back' | translate }}\n    </button>\n    <button *ngIf=\"introService.activeStep != 'finish'\" type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"introService.next()\">\n      {{ 'designer.intro.next' | translate }} <i class=\"fa fa-chevron-right\" aria-hidden=\"true\"></i>\n    </button>\n    <button *ngIf=\"introService.activeStep == 'finish'\" type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"close()\">\n      {{ 'designer.intro.close' | translate }}\n    </button>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { IntroService } from '../services/intro.service';\n\n@Component({\n  selector: 'lib-app-intro',\n  templateUrl: './intro.component.html',\n  styleUrls: ['./intro.component.css'],\n})\nexport class IntroComponent implements OnInit {\n  constructor(public introService: IntroService) {}\n\n  ngOnInit() {}\n\n  close() {\n    this.introService.setShowIntro(false);\n  }\n}\n","<!-- Wrap the whole component inside a div to encapsulate the CSS -->\n\n<!-- 100 % height minus the menu bar above and the gutter size of 13 px -->\n<!-- <div style=\"height: calc(100% - 33px)\"> -->\n<div id=\"designer\" [ngStyle]=\"{ height: 'calc(100% - ' + totalMenuHeightPx + 'px)' }\">\n  <!-- Navigation -->\n  <nav\n    class=\"navbar navbar-expand-lg navbar-light bg-light border-secondary\"\n    style=\"border-bottom: 1px solid #444; height: 20px; z-index: 9999\"\n  >\n    <!-- Menu buttons -->\n    <ul class=\"navbar-nav mr-auto\">\n      <li class=\"nav-item dropdown\">\n        <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"fileDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n          {{ 'designer.navigation.project' | translate }}\n        </a>\n        <div class=\"dropdown-menu\" aria-labelledby=\"fileDropdown\">\n          <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectNew(); (false)\"\n            ><i class=\"fa fa-fw fa-file-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-new' | translate }}</a\n          >\n          <a class=\"dropdown-item\" href=\"#\" (click)=\"projectOpen(); (false)\"\n            ><i class=\"fa fa-fw fa-folder-open-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-open' | translate }}</a\n          >\n          <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectSave(); (false)\"\n            ><i class=\"fa fa-fw fa-floppy-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-save' | translate }}</a\n          >\n          <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectSaveAs(); (false)\"\n            ><i class=\"fa fa-fw fa-floppy-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-save-as' | translate }}</a\n          >\n          <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectImport(); (false)\"\n            ><i class=\"fa fa-fw fa-download\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-import' | translate }}</a\n          >\n          <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectExport(); (false)\"\n            ><i class=\"fa fa-fw fa-external-link\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-export' | translate }}</a\n          >\n        </div>\n      </li>\n      <li class=\"nav-item dropdown d-none d-md-block\">\n        <a\n          class=\"nav-link dropdown-toggle\"\n          href=\"#\"\n          id=\"settingsDropdown\"\n          data-toggle=\"dropdown\"\n          aria-haspopup=\"true\"\n          aria-expanded=\"false\"\n        >\n          {{ 'designer.navigation.settings' | translate }}\n        </a>\n        <div class=\"dropdown-menu\" aria-labelledby=\"settingsDropdown\">\n          <a class=\"dropdown-item\" href=\"#\" (click)=\"openFixturePool(); (false)\">{{ 'designer.navigation.fixture-pool' | translate }}</a>\n          <!-- <a class=\"dropdown-item\" href=\"#\">{{ 'designer.navigation.stage' | translate }}</a> -->\n        </div>\n      </li>\n      <li class=\"nav-item dropdown d-none d-md-block\">\n        <a\n          class=\"nav-link dropdown-toggle\"\n          href=\"#\"\n          id=\"settingsDropdown\"\n          data-toggle=\"dropdown\"\n          aria-haspopup=\"true\"\n          aria-expanded=\"false\"\n        >\n          {{ 'designer.navigation.help' | translate }}\n        </a>\n        <div class=\"dropdown-menu\" aria-labelledby=\"settingsDropdown\">\n          <a class=\"dropdown-item\" href=\"#\" (click)=\"introService.reset(); (false)\">{{ 'designer.navigation.reset-intro' | translate }}</a>\n          <a class=\"dropdown-item\" href=\"https://rocketshow.net/support/\" target=\"_blank\">{{\n            'designer.navigation.support' | translate\n          }}</a>\n        </div>\n      </li>\n    </ul>\n\n    <ul class=\"navbar-nav\">\n      <li *ngIf=\"configService.shareAvailable\" class=\"nav-item d-none d-md-flex\" data-toggle=\"collapse\">\n        <a class=\"nav-link text-primary\" (click)=\"projectShare(); (false)\" routerLinkActive=\"active\"\n          ><i class=\"fa fa-share-alt\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-share' | translate }}</a\n        >\n      </li>\n\n      <li *ngIf=\"configService.languageSwitch\" class=\"nav-item dropdown\">\n        <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"settingsDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"\n          ><i class=\"fa fa-globe\" aria-hidden=\"true\"></i>\n          {{ 'designer.misc.language' | translate }}\n        </a>\n        <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"settingsDropdown\">\n          <a class=\"dropdown-item\" href=\"#\" (click)=\"switchLanguage('en'); (false)\" target=\"_blank\">English</a>\n          <a class=\"dropdown-item\" href=\"#\" (click)=\"switchLanguage('de'); (false)\" target=\"_blank\">Deutsch</a>\n        </div>\n      </li>\n\n      <li *ngIf=\"configService.loginAvailable && !userService.isLoggedIn()\" class=\"nav-item\" data-toggle=\"collapse\">\n        <a class=\"nav-link\" (click)=\"userRegister(); (false)\" routerLinkActive=\"active\"\n          ><i class=\"fa fa-user\" aria-hidden=\"true\"></i> {{ 'designer.navigation.login' | translate }}</a\n        >\n      </li>\n\n      <li *ngIf=\"configService.loginAvailable && userService.isLoggedIn()\" class=\"nav-item dropdown\">\n        <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"settingsDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"\n          ><i class=\"fa fa-user\" aria-hidden=\"true\"></i>\n          {{ userService.username }}\n        </a>\n        <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"settingsDropdown\">\n          <a class=\"dropdown-item\" href=\"#\" (click)=\"userService.logout(); (false)\" target=\"_blank\"\n            ><i class=\"fa fa-sign-out\" aria-hidden=\"true\"></i> {{ 'designer.navigation.logout' | translate }}</a\n          >\n        </div>\n      </li>\n    </ul>\n  </nav>\n\n  <!-- The main content for larger screens -->\n  <div class=\"h-100 d-none d-md-block\">\n    <div id=\"row1\" class=\"split split-vertical clearfix pt-3 pl-3\">\n      <!-- Scenes -->\n      <div id=\"scenes\" class=\"split split-horizontal h-100\">\n        <lib-app-scene *ngIf=\"projectService.project\"></lib-app-scene>\n      </div>\n\n      <!-- Presets -->\n      <div id=\"presets\" class=\"split split-horizontal h-100\">\n        <lib-app-preset *ngIf=\"projectService.project\"></lib-app-preset>\n      </div>\n\n      <!-- 3D preview -->\n      <div id=\"preview\" class=\"split split-horizontal h-100 pr-3\">\n        <div\n          *ngIf=\"projectService.project\"\n          class=\"card border-secondary h-100\"\n          [class.card-intro-active]=\"introService.showStep('preview')\"\n        >\n          <div class=\"card-body p-0 h-100\">\n            <lib-app-preview class=\"h-100\"></lib-app-preview>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div id=\"row2\" class=\"split split-vertical clearfix px-3 d-flex\" style=\"flex-direction: row\">\n      <!-- Menu for the capabilities, channels, effects and settings -->\n      <div *ngIf=\"projectService.project\" class=\"col col-auto p-0\" style=\"margin-right: -1px\">\n        <div class=\"nav flex-column nav-pills\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n          <a\n            class=\"nav-link px-3 active\"\n            (click)=\"openTab('capabilities')\"\n            id=\"v-pills-capabilities-tab\"\n            popover=\"{{ 'designer.misc.capabilities' | translate }}\"\n            container=\"body\"\n            placement=\"right\"\n            triggers=\"mouseenter:mouseleave\"\n            data-toggle=\"pill\"\n            href=\"#v-pills-capabilities\"\n            role=\"tab\"\n            aria-controls=\"v-pills-capabilities\"\n            aria-selected=\"true\"\n          >\n            <i class=\"fa fa-bolt fa-fw\" aria-hidden=\"true\"></i>\n          </a>\n          <a\n            class=\"nav-link px-3\"\n            (click)=\"openTab('channels')\"\n            id=\"v-pills-channels-tab\"\n            popover=\"{{ 'designer.misc.channels' | translate }}\"\n            container=\"body\"\n            placement=\"right\"\n            triggers=\"mouseenter:mouseleave\"\n            data-toggle=\"pill\"\n            href=\"#v-pills-channels\"\n            role=\"tab\"\n            aria-controls=\"v-pills-channels\"\n            aria-selected=\"false\"\n          >\n            <i class=\"fa fa-sliders fa-fw\" aria-hidden=\"true\"></i>\n          </a>\n          <a\n            class=\"nav-link px-3\"\n            (click)=\"openTab('effects')\"\n            id=\"v-pills-effects-tab\"\n            popover=\"{{ 'designer.misc.effects' | translate }}\"\n            container=\"body\"\n            placement=\"right\"\n            triggers=\"mouseenter:mouseleave\"\n            data-toggle=\"pill\"\n            href=\"#v-pills-effects\"\n            role=\"tab\"\n            aria-controls=\"v-pills-effects\"\n            aria-selected=\"false\"\n          >\n            <i class=\"fa fa-magic fa-fw\" aria-hidden=\"true\"></i>\n          </a>\n          <a\n            class=\"nav-link px-3\"\n            (click)=\"openTab('settings')\"\n            id=\"v-pills-settings-tab\"\n            popover=\"{{ 'designer.misc.settings' | translate }}\"\n            container=\"body\"\n            placement=\"right\"\n            triggers=\"mouseenter:mouseleave\"\n            data-toggle=\"pill\"\n            href=\"#v-pills-settings\"\n            role=\"tab\"\n            aria-controls=\"v-pills-settings\"\n            aria-selected=\"false\"\n            style=\"border-top: 1px solid #444\"\n          >\n            <i class=\"fa fa-cog fa-fw\" aria-hidden=\"true\"></i>\n          </a>\n        </div>\n      </div>\n\n      <div id=\"capabilities\" class=\"split split-horizontal h-100\" style=\"padding-left: 1rem\">\n        <div *ngIf=\"projectService.project\" class=\"row h-100\">\n          <!-- Content for the capabilities, channels, effects and settings -->\n          <div class=\"col pl-0 h-100\">\n            <div class=\"tab-content h-100\" id=\"v-pills-tabContent\">\n              <div class=\"tab-pane h-100 show active\" id=\"v-pills-capabilities\" role=\"tabpanel\">\n                <lib-app-fixture-capability></lib-app-fixture-capability>\n              </div>\n              <div class=\"tab-pane h-100 show\" id=\"v-pills-channels\" role=\"tabpanel\">\n                <lib-app-fixture-channel></lib-app-fixture-channel>\n              </div>\n              <div class=\"tab-pane h-100\" id=\"v-pills-effects\" role=\"tabpanel\" aria-labelledby=\"v-pills-profile-tab\">\n                <lib-app-effect></lib-app-effect>\n              </div>\n              <div class=\"tab-pane h-100\" id=\"v-pills-settings\" role=\"tabpanel\" aria-labelledby=\"v-pills-home-tab\">\n                <lib-app-fixture-settings></lib-app-fixture-settings>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Fixtures -->\n      <div id=\"fixtures\" class=\"split split-horizontal h-100\">\n        <lib-app-fixture *ngIf=\"projectService.project\"></lib-app-fixture>\n      </div>\n\n      <!-- Master dimmer -->\n      <div id=\"masterDimmer\" class=\"split split-horizontal h-100\">\n        <lib-app-master-dimmer *ngIf=\"projectService.project\"></lib-app-master-dimmer>\n      </div>\n    </div>\n\n    <!-- Timeline -->\n    <div id=\"row3\" class=\"split split-vertical clearfix px-3 pb-3\" style=\"padding-bottom: 20px\">\n      <lib-app-timeline *ngIf=\"projectService.project\"></lib-app-timeline>\n    </div>\n  </div>\n\n  <!-- The components for small screens -->\n  <div class=\"d-md-none p-3\">\n    <div>\n      <lib-app-master-dimmer *ngIf=\"projectService.project\"></lib-app-master-dimmer>\n    </div>\n\n    <div class=\"mt-3\">\n      <lib-app-scene *ngIf=\"projectService.project\"></lib-app-scene>\n    </div>\n  </div>\n</div>\n\n<lib-app-intro class=\"d-none d-md-flex\"></lib-app-intro>\n","import { AfterViewInit, Component, HostListener, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport Split from 'split.js';\nimport { PreviewComponent } from './preview/preview.component';\nimport { ProjectBrowserComponent } from './project/project-browser/project-browser.component';\nimport { ProjectImportComponent } from './project/project-import/project-import.component';\nimport { ProjectSaveComponent } from './project/project-save/project-save.component';\nimport { ProjectShareComponent } from './project/project-share/project-share.component';\nimport { ConfigService } from './services/config.service';\nimport { ErrorDialogService } from './services/error-dialog.service';\nimport { FixturePoolService } from './services/fixture-pool.service';\nimport { FixtureService } from './services/fixture.service';\nimport { HotkeyTargetExcludeService } from './services/hotkey-target-exclude.service';\nimport { IntroService } from './services/intro.service';\nimport { ProjectLoadService } from './services/project-load.service';\nimport { ProjectService } from './services/project.service';\nimport { TimelineService } from './services/timeline.service';\nimport { UserEnsureLoginService } from './services/user-ensure-login.service';\nimport { UserService } from './services/user.service';\nimport { WarningDialogService } from './services/warning-dialog.service';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { UserRegisterComponent } from './user/user-register/user-register.component';\nimport { HttpErrorResponse } from '@angular/common/http';\n\n@Component({\n  selector: 'lib-designer',\n  templateUrl: './designer.component.html',\n  styleUrls: ['./designer.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DesignerComponent implements OnInit, AfterViewInit {\n  @Input()\n  set menuHeightPx(value: number) {\n    this.configService.menuHeightPx = value;\n    this.configService.menuHeightChanged.next();\n  }\n\n  @Input()\n  set externalCompositionsAvailable(value: boolean) {\n    this.timelineService.externalCompositionsAvailable = value;\n  }\n\n  @Input()\n  set restUrl(value: string) {\n    this.configService.restUrl = value;\n  }\n\n  @Input()\n  set enableMediaLibrary(value: boolean) {\n    this.configService.enableMediaLibrary = value;\n  }\n\n  @Input()\n  set loginAvailable(value: boolean) {\n    this.configService.loginAvailable = value;\n  }\n\n  @Input()\n  set shareAvailable(value: boolean) {\n    this.configService.shareAvailable = value;\n  }\n\n  @Input()\n  set languageSwitch(value: boolean) {\n    this.configService.languageSwitch = value;\n  }\n\n  @Input()\n  set newProjectTemplate(value: boolean) {\n    this.configService.newProjectTemplate = value;\n  }\n\n  @Input()\n  set livePreview(value: boolean) {\n    this.configService.livePreview = value;\n  }\n\n  @Input()\n  set localProfiles(value: boolean) {\n    this.configService.localProfiles = value;\n  }\n\n  @Input()\n  set intro(value: boolean) {\n    this.configService.intro = value;\n    this.introService.refresh();\n  }\n\n  @Input()\n  set uniqueProjectNames(value: boolean) {\n    this.configService.uniqueProjectNames = value;\n  }\n\n  @Input()\n  set dropzoneChunking(value: boolean) {\n    this.configService.dropzoneChunking = value;\n  }\n\n  // the size of the menu used in the designer\n  private designerMenuSizePx = 20;\n\n  private splitGutterSizePx = 13;\n\n  public totalMenuHeightPx = 0;\n\n  currentTab = 'properties';\n\n  @ViewChild(PreviewComponent)\n  previewComponent: PreviewComponent;\n\n  @ViewChild(TimelineComponent)\n  timelineComponent: TimelineComponent;\n\n  constructor(\n    private translateService: TranslateService,\n    public projectService: ProjectService,\n    public configService: ConfigService,\n    private fixturePoolService: FixturePoolService,\n    private hotkeyTargetExcludeService: HotkeyTargetExcludeService,\n    private modalService: BsModalService,\n    public userService: UserService,\n    private userEnsureLoginService: UserEnsureLoginService,\n    private projectLoadService: ProjectLoadService,\n    private warningDialogService: WarningDialogService,\n    private errorDialogService: ErrorDialogService,\n    private fixtureService: FixtureService,\n    private timelineService: TimelineService,\n    public introService: IntroService\n  ) {\n    this.configService.menuHeightChanged.subscribe(() => {\n      this.calcTotalMenuHeight();\n    });\n  }\n\n  private loadError(response: any) {\n    console.error(response);\n    let msg = 'designer.project.open-error';\n    let error: string;\n    if (response instanceof HttpErrorResponse) {\n      error = response && response.error ? response.error.error : 'unknown';\n      if (error === 'no-permission') {\n        msg = 'designer.project.open-no-permission-error';\n        error = undefined;\n      } else {\n        msg = 'designer.project.open-error';\n      }\n    } else {\n      error = response && response.message ? response.message : 'unknown';\n    }\n    this.errorDialogService.show(msg, error).subscribe(() => {\n      this.projectLoadService.new();\n    });\n  }\n\n  ngOnInit() {\n    if (localStorage.getItem('language')) {\n      this.translateService.use(localStorage.getItem('language'));\n    } else {\n      this.translateService.use('en');\n    }\n\n    this.calcTotalMenuHeight();\n\n    const urlParams = new URLSearchParams(window.location.search);\n    const projectId = urlParams.get('id');\n    const projectName = urlParams.get('name');\n    let shareToken = urlParams.get('token');\n\n    if (projectId) {\n      // load a project by query param ID\n      if (!shareToken) {\n        shareToken = '';\n      }\n\n      this.projectLoadService.load(Number.parseInt(projectId, 10), projectName, shareToken).subscribe(\n        () => {},\n        (response) => {\n          this.loadError(response);\n        }\n      );\n    } else if (\n      (this.userService.isLoggedIn() || !this.configService.loginAvailable) &&\n      (this.userService.getAutoLoadProjectId() || this.userService.getAutoLoadProjectName())\n    ) {\n      // restore the last saved project\n      this.projectLoadService.load(this.userService.getAutoLoadProjectId(), this.userService.getAutoLoadProjectName()).subscribe(\n        () => {},\n        (response) => {\n          this.loadError(response);\n        }\n      );\n    } else {\n      if (this.configService.newProjectTemplate) {\n        // load the new project template\n        this.projectLoadService.template();\n      } else {\n        this.projectLoadService.new();\n      }\n    }\n  }\n\n  private calcTotalMenuHeight() {\n    this.totalMenuHeightPx = this.designerMenuSizePx + this.splitGutterSizePx + this.configService.menuHeightPx;\n  }\n\n  private onResize() {\n    if (this.previewComponent) {\n      this.previewComponent.onResize();\n    }\n\n    if (this.timelineComponent) {\n      this.timelineComponent.onResize();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    // Set up the splitter\n    setTimeout(() => {\n      Split(['#row1', '#row2', '#row3'], {\n        sizes: [42, 40, 18],\n        direction: 'vertical',\n        cursor: 'row-resize',\n        snapOffset: 0,\n        gutterSize: this.splitGutterSizePx,\n        onDrag: this.onResize.bind(this),\n      });\n\n      Split(['#scenes', '#presets', '#preview'], {\n        sizes: [20, 20, 60],\n        snapOffset: 0,\n        gutterSize: this.splitGutterSizePx,\n        onDrag: this.onResize.bind(this),\n      });\n\n      Split(['#capabilities', '#fixtures', '#masterDimmer'], {\n        sizes: [70, 24, 6],\n        snapOffset: 0,\n        gutterSize: this.splitGutterSizePx,\n        onDrag: this.onResize.bind(this),\n        minSize: 50,\n      });\n\n      this.onResize();\n    });\n  }\n\n  openTab(tab: string) {\n    // open a side tab (e.g. effects, channels, settings, etc.)\n\n    if (tab === 'settings') {\n      this.fixtureService.settingsSelection = true;\n    } else {\n      this.fixtureService.settingsSelection = false;\n    }\n\n    this.currentTab = tab;\n  }\n\n  openFixturePool() {\n    this.fixturePoolService.open();\n  }\n\n  projectNew() {\n    this.warningDialogService\n      .show('designer.misc.warning-proceed-unsaved')\n      .pipe(\n        map((result) => {\n          if (result) {\n            this.projectLoadService.new();\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  projectOpen() {\n    this.warningDialogService\n      .show('designer.misc.warning-proceed-unsaved')\n      .pipe(\n        map((result) => {\n          if (result) {\n            this.userEnsureLoginService.login().subscribe(() => {\n              this.modalService.show(ProjectBrowserComponent, { keyboard: true, ignoreBackdropClick: false });\n            });\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  projectSave() {\n    this.userEnsureLoginService.login().subscribe(() => {\n      if (this.projectService.project.name) {\n        // this project has been saved before -> just save it again\n        this.projectService.save(this.projectService.project);\n      } else {\n        // this project has not yet been saved -> show the save as-dialog\n        this.modalService.show(ProjectSaveComponent, { keyboard: true, ignoreBackdropClick: false });\n      }\n    });\n  }\n\n  projectSaveAs() {\n    this.userEnsureLoginService.login().subscribe(() => {\n      this.modalService.show(ProjectSaveComponent, { keyboard: true, ignoreBackdropClick: false });\n    });\n  }\n\n  userRegister() {\n    this.modalService.show(UserRegisterComponent, { keyboard: true, ignoreBackdropClick: false });\n  }\n\n  projectImport() {\n    this.warningDialogService\n      .show('designer.misc.warning-proceed-unsaved')\n      .pipe(\n        map((result) => {\n          if (result) {\n            this.modalService.show(ProjectImportComponent, { keyboard: true, ignoreBackdropClick: false });\n          }\n        })\n      )\n      .subscribe();\n  }\n\n  projectExport() {\n    const json = JSON.stringify(this.projectService.project, null, 2);\n    const element = document.createElement('a');\n    element.setAttribute('href', 'data:text/json;charset=UTF-8,' + encodeURIComponent(json));\n    element.setAttribute('download', this.projectService.project.name + '.rsd');\n    element.style.display = 'none';\n    document.body.appendChild(element);\n    element.click();\n    document.body.removeChild(element);\n  }\n\n  projectShare() {\n    if (!this.projectService.project.id) {\n      // a save is required first\n      this.errorDialogService.show('designer.project.share-no-save').subscribe();\n      return;\n    }\n\n    // ignore backdrop click, because selecting the link text will also close the modal\n    this.modalService.show(ProjectShareComponent, { keyboard: true, ignoreBackdropClick: true });\n  }\n\n  @HostListener('document:keydown', ['$event'])\n  handleKeyboardEvent(event: any) {\n    if (this.hotkeyTargetExcludeService.exclude(event)) {\n      return;\n    }\n\n    if (event.key === 'p') {\n      this.openFixturePool();\n\n      // prevent checkboxes being toggled, if in focus e.g.\n      event.stopPropagation();\n      event.preventDefault();\n    }\n\n    if ((event.ctrlKey || event.metaKey) && event.key === 'n') {\n      this.projectNew();\n      event.stopPropagation();\n      event.preventDefault();\n    }\n\n    if ((event.ctrlKey || event.metaKey) && event.key === 's') {\n      this.projectSave();\n      event.stopPropagation();\n      event.preventDefault();\n    }\n\n    if ((event.ctrlKey || event.metaKey) && event.key === 'o') {\n      this.projectOpen();\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  }\n\n  switchLanguage(language: string) {\n    this.translateService.use(language);\n    localStorage.setItem('language', language);\n  }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgxBootstrapSliderModule } from 'ngx-bootstrap-slider';\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { DropzoneModule } from 'ngx-dropzone-wrapper';\nimport { SortablejsModule } from 'ngx-sortablejs-plus';\nimport { ToastrModule } from 'ngx-toastr';\nimport { ArraySortPipe } from './array-sort-pipe';\nimport { DesignerComponent } from './designer.component';\nimport { EffectCurveComponent } from './effect/effect-curve/effect-curve.component';\nimport { EffectPanTiltComponent } from './effect/effect-pan-tilt/effect-pan-tilt.component';\nimport { EffectComponent } from './effect/effect.component';\nimport { ErrorDialogComponent } from './error-dialog/error-dialog.component';\nimport { FixturePoolCreateFromFileComponent } from './fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component';\nimport { FixturePoolComponent } from './fixture-pool/fixture-pool.component';\nimport { FixtureCapabilityChannelComponent } from './fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component';\nimport { FixtureCapabilityColorWheelComponent } from './fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component';\nimport { FixtureCapabilityColorComponent } from './fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component';\nimport { FixtureCapabilityDimmerComponent } from './fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component';\nimport { FixtureCapabilityPanTiltComponent } from './fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component';\nimport { FixtureCapabilityComponent } from './fixture/fixture-capability/fixture-capability.component';\nimport { FixtureChannelComponent } from './fixture/fixture-channel/fixture-channel.component';\nimport { FixtureSettingsPositionComponent } from './fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component';\nimport { FixtureSettingsStageComponent } from './fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component';\nimport { FixtureSettingsComponent } from './fixture/fixture-settings/fixture-settings.component';\nimport { FixtureComponent } from './fixture/fixture.component';\nimport { IntroComponent } from './intro/intro.component';\nimport { MasterDimmerComponent } from './master-dimmer/master-dimmer.component';\nimport { PresetSettingsComponent } from './preset/preset-settings/preset-settings.component';\nimport { PresetComponent } from './preset/preset.component';\nimport { PreviewComponent } from './preview/preview.component';\nimport { ProjectBrowserComponent } from './project/project-browser/project-browser.component';\nimport { ProjectImportComponent } from './project/project-import/project-import.component';\nimport { ProjectSaveComponent } from './project/project-save/project-save.component';\nimport { ProjectShareComponent } from './project/project-share/project-share.component';\nimport { SceneSettingsComponent } from './scene/scene-settings/scene-settings.component';\nimport { SceneComponent } from './scene/scene.component';\nimport { CompositionSettingsComponent } from './timeline/composition-settings/composition-settings.component';\nimport { TimelineGridComponent } from './timeline/timeline-grid/timeline-grid.component';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { UserLoginComponent } from './user/user-login/user-login.component';\nimport { UserRegisterComponent } from './user/user-register/user-register.component';\nimport { WaitDialogComponent } from './wait-dialog/wait-dialog.component';\nimport { WarningDialogComponent } from './warning-dialog/warning-dialog.component';\nimport { DropzoneComponent } from './dropzone/dropzone.component';\n\n@NgModule({\n  declarations: [\n    DesignerComponent,\n    WarningDialogComponent,\n    PreviewComponent,\n    EffectCurveComponent,\n    EffectPanTiltComponent,\n    SceneComponent,\n    TimelineComponent,\n    FixtureCapabilityColorComponent,\n    FixtureComponent,\n    FixtureSettingsPositionComponent,\n    FixtureCapabilityComponent,\n    FixtureSettingsComponent,\n    EffectComponent,\n    FixturePoolComponent,\n    PresetComponent,\n    MasterDimmerComponent,\n    FixtureCapabilityDimmerComponent,\n    TimelineGridComponent,\n    CompositionSettingsComponent,\n    ArraySortPipe,\n    FixtureCapabilityPanTiltComponent,\n    FixtureCapabilityChannelComponent,\n    FixtureChannelComponent,\n    FixtureCapabilityColorWheelComponent,\n    UserLoginComponent,\n    UserRegisterComponent,\n    ProjectBrowserComponent,\n    WaitDialogComponent,\n    ProjectImportComponent,\n    ProjectShareComponent,\n    ErrorDialogComponent,\n    FixtureSettingsStageComponent,\n    IntroComponent,\n    PresetSettingsComponent,\n    SceneSettingsComponent,\n    ProjectSaveComponent,\n    FixturePoolCreateFromFileComponent,\n    DropzoneComponent,\n  ],\n  imports: [\n    RouterModule.forRoot([], {}),\n    BrowserModule,\n    BrowserAnimationsModule,\n    HttpClientModule,\n    FormsModule,\n    NgxBootstrapSliderModule,\n    TranslateModule,\n    AccordionModule,\n    PopoverModule,\n    TypeaheadModule,\n    SortablejsModule,\n    DropzoneModule,\n    ToastrModule.forRoot({\n      newestOnTop: true,\n    }),\n  ],\n  exports: [DesignerComponent],\n})\nexport class DesignerModule {}\n","/*\n * Public API Surface of designer\n */\n\nexport * from './lib/designer.service';\nexport * from './lib/designer.component';\nexport * from './lib/designer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.UserService","i4","i5","i2.ProjectService","i3","i5.UuidService","i1.EffectService","i2.UuidService","i3.ProjectService","i4.FixtureService","i5.ConfigService","i6","i7.AnimationService","i1.UuidService","i2.EffectService","i3.PresetService","i4.ProjectService","i1.SceneService","i2.PresetService","i1.PresetService","i2.FixtureService","i3.SceneService","i4.TimelineService","i5.ProjectService","i1.FixtureService","i2.PreviewMeshService","i3.AnimationService","i4.PreviewService","i5.TimelineService","i6.ProjectService","i1","i1.ProjectService","i2.PreviewService","i3.FixtureService","i4.PresetService","i5.SceneService","i7.UuidService","i8.TimelineService","i9","i10.WarningDialogService","i3.ProjectLoadService","i4.UserService","i5.WarningDialogService","i6.ConfigService","i4.ProjectLoadService","i3.WarningDialogService","i4.ConfigService","i3.UuidService","i5.PreviewService","i7","i8.PresetService","i9.ConfigService","i1.ConfigService","i1.UserService","i2","i3.ConfigService","i2.ConfigService","i2.TimelineService","i6.WarningDialogService","i8.ProjectService","i1.TimelineService","i5.HotkeyTargetExcludeService","i8.ConfigService","i9.PresetService","i10.IntroService","i5.IntroService","i3.FixturePoolService","i4.IntroService","i2.AnimationService","i3.EffectService","i4.WarningDialogService","i2.SceneService","_c0","i1.IntroService","i4.FixturePoolService","i7.UserService","i8.UserEnsureLoginService","i9.ProjectLoadService","i11.ErrorDialogService","i12.FixtureService","i13.TimelineService","i14.IntroService"],"mappings":"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"}