@rocketshow/designer 1.32.0 → 1.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/array-sort-pipe.mjs +30 -0
- package/esm2022/lib/designer.component.mjs +605 -0
- package/esm2022/lib/designer.module.mjs +183 -0
- package/esm2022/lib/designer.service.mjs +14 -0
- package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +569 -0
- package/esm2022/lib/effect/effect-pan-tilt/effect-pan-tilt.component.mjs +36 -0
- package/esm2022/lib/effect/effect.component.mjs +174 -0
- package/esm2022/lib/error-dialog/error-dialog.component.mjs +75 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.mjs +222 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.mjs +147 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.mjs +213 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.mjs +78 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.mjs +119 -0
- package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +169 -0
- package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +160 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.mjs +365 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.mjs +151 -0
- package/esm2022/lib/fixture/fixture-settings/fixture-settings.component.mjs +46 -0
- package/esm2022/lib/fixture/fixture.component.mjs +138 -0
- package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +145 -0
- package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +589 -0
- package/esm2022/lib/intro/intro.component.mjs +95 -0
- package/esm2022/lib/master-dimmer/master-dimmer.component.mjs +66 -0
- package/esm2022/lib/models/cached-fixture-capability.mjs +9 -0
- package/esm2022/lib/models/cached-fixture-channel.mjs +7 -0
- package/esm2022/lib/models/cached-fixture.mjs +6 -0
- package/esm2022/lib/models/color.mjs +8 -0
- package/esm2022/lib/models/composition.mjs +46 -0
- package/esm2022/lib/models/effect-curve-profile-channel.mjs +15 -0
- package/esm2022/lib/models/effect-curve.mjs +69 -0
- package/esm2022/lib/models/effect-pan-tilt.mjs +19 -0
- package/esm2022/lib/models/effect.mjs +12 -0
- package/esm2022/lib/models/fixture-capability-value.mjs +15 -0
- package/esm2022/lib/models/fixture-capability.mjs +84 -0
- package/esm2022/lib/models/fixture-channel-value.mjs +11 -0
- package/esm2022/lib/models/fixture-channel.mjs +24 -0
- package/esm2022/lib/models/fixture-mode.mjs +14 -0
- package/esm2022/lib/models/fixture-profile.mjs +70 -0
- package/esm2022/lib/models/fixture-wheel-slot.mjs +26 -0
- package/esm2022/lib/models/fixture-wheel.mjs +15 -0
- package/esm2022/lib/models/fixture.mjs +40 -0
- package/esm2022/lib/models/preset-region-scene.mjs +8 -0
- package/esm2022/lib/models/preset.mjs +56 -0
- package/esm2022/lib/models/project.mjs +68 -0
- package/esm2022/lib/models/scene-playback-region.mjs +11 -0
- package/esm2022/lib/models/scene.mjs +27 -0
- package/esm2022/lib/models/universe.mjs +11 -0
- package/esm2022/lib/preset/preset-settings/preset-settings.component.mjs +194 -0
- package/esm2022/lib/preset/preset.component.mjs +131 -0
- package/esm2022/lib/preview/models/color-changer-3d.mjs +167 -0
- package/esm2022/lib/preview/models/fixture-3d.mjs +150 -0
- package/esm2022/lib/preview/models/moving-head-3d.mjs +243 -0
- package/esm2022/lib/preview/preview.component.mjs +212 -0
- package/esm2022/lib/project/project-browser/project-browser.component.mjs +143 -0
- package/esm2022/lib/project/project-import/project-import.component.mjs +107 -0
- package/esm2022/lib/project/project-save/project-save.component.mjs +178 -0
- package/esm2022/lib/project/project-share/project-share.component.mjs +71 -0
- package/esm2022/lib/scene/scene-settings/scene-settings.component.mjs +146 -0
- package/esm2022/lib/scene/scene.component.mjs +110 -0
- package/esm2022/lib/services/animation.service.mjs +16 -0
- package/esm2022/lib/services/config.service.mjs +27 -0
- package/esm2022/lib/services/effect.service.mjs +14 -0
- package/esm2022/lib/services/error-dialog.service.mjs +39 -0
- package/esm2022/lib/services/fixture-pool.service.mjs +30 -0
- package/esm2022/lib/services/fixture.service.mjs +431 -0
- package/esm2022/lib/services/hotkey-target-exclude.service.mjs +24 -0
- package/esm2022/lib/services/intro.service.mjs +140 -0
- package/esm2022/lib/services/preset.service.mjs +400 -0
- package/esm2022/lib/services/preview-mesh.service.mjs +57 -0
- package/esm2022/lib/services/preview.service.mjs +496 -0
- package/esm2022/lib/services/project-load.service.mjs +149 -0
- package/esm2022/lib/services/project.service.mjs +97 -0
- package/esm2022/lib/services/scene.service.mjs +164 -0
- package/esm2022/lib/services/timeline.service.mjs +726 -0
- package/esm2022/lib/services/universe.service.mjs +23 -0
- package/esm2022/lib/services/user-ensure-login.service.mjs +38 -0
- package/esm2022/lib/services/user.service.mjs +89 -0
- package/esm2022/lib/services/uuid.service.mjs +23 -0
- package/esm2022/lib/services/warning-dialog.service.mjs +38 -0
- package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +334 -0
- package/esm2022/lib/timeline/timeline-grid/timeline-grid.component.mjs +216 -0
- package/esm2022/lib/timeline/timeline.component.mjs +418 -0
- package/esm2022/lib/user/user-login/user-login.component.mjs +144 -0
- package/esm2022/lib/user/user-register/user-register.component.mjs +220 -0
- package/esm2022/lib/wait-dialog/wait-dialog.component.mjs +26 -0
- package/esm2022/lib/warning-dialog/warning-dialog.component.mjs +68 -0
- package/esm2022/public_api.mjs +7 -0
- package/esm2022/rocketshow-designer.mjs +5 -0
- package/fesm2022/rocketshow-designer.mjs +10626 -0
- package/fesm2022/rocketshow-designer.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/array-sort-pipe.d.ts +3 -0
- package/lib/designer.component.d.ts +15 -12
- package/lib/designer.module.d.ts +54 -0
- package/lib/designer.service.d.ts +3 -0
- package/lib/effect/effect-curve/effect-curve.component.d.ts +4 -1
- package/lib/effect/effect-pan-tilt/effect-pan-tilt.component.d.ts +3 -0
- package/lib/effect/effect.component.d.ts +3 -0
- package/lib/error-dialog/error-dialog.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.d.ts +4 -1
- package/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.d.ts +5 -2
- package/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.d.ts +3 -0
- package/lib/fixture/fixture-capability/fixture-capability.component.d.ts +3 -0
- package/lib/fixture/fixture-channel/fixture-channel.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.d.ts +3 -0
- package/lib/fixture/fixture-settings/fixture-settings.component.d.ts +3 -0
- package/lib/fixture/fixture.component.d.ts +3 -0
- package/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.d.ts +3 -0
- package/lib/fixture-pool/fixture-pool.component.d.ts +3 -0
- package/lib/intro/intro.component.d.ts +3 -0
- package/lib/master-dimmer/master-dimmer.component.d.ts +3 -0
- package/lib/preset/preset-settings/preset-settings.component.d.ts +3 -0
- package/lib/preset/preset.component.d.ts +3 -0
- package/lib/preview/preview.component.d.ts +4 -4
- package/lib/project/project-browser/project-browser.component.d.ts +3 -0
- package/lib/project/project-import/project-import.component.d.ts +3 -0
- package/lib/project/project-save/project-save.component.d.ts +3 -0
- package/lib/project/project-share/project-share.component.d.ts +3 -0
- package/lib/scene/scene-settings/scene-settings.component.d.ts +3 -0
- package/lib/scene/scene.component.d.ts +3 -0
- package/lib/services/animation.service.d.ts +3 -0
- package/lib/services/config.service.d.ts +3 -0
- package/lib/services/effect.service.d.ts +3 -0
- package/lib/services/error-dialog.service.d.ts +3 -0
- package/lib/services/fixture-pool.service.d.ts +3 -0
- package/lib/services/fixture.service.d.ts +3 -0
- package/lib/services/hotkey-target-exclude.service.d.ts +3 -0
- package/lib/services/intro.service.d.ts +3 -0
- package/lib/services/preset.service.d.ts +3 -0
- package/lib/services/preview-mesh.service.d.ts +3 -0
- package/lib/services/preview.service.d.ts +4 -0
- package/lib/services/project-load.service.d.ts +3 -0
- package/lib/services/project.service.d.ts +3 -0
- package/lib/services/scene.service.d.ts +3 -0
- package/lib/services/timeline.service.d.ts +4 -1
- package/lib/services/universe.service.d.ts +3 -0
- package/lib/services/user-ensure-login.service.d.ts +3 -0
- package/lib/services/user.service.d.ts +3 -0
- package/lib/services/uuid.service.d.ts +3 -0
- package/lib/services/warning-dialog.service.d.ts +3 -0
- package/lib/timeline/composition-settings/composition-settings.component.d.ts +3 -0
- package/lib/timeline/timeline-grid/timeline-grid.component.d.ts +3 -0
- package/lib/timeline/timeline.component.d.ts +3 -0
- package/lib/user/user-login/user-login.component.d.ts +3 -0
- package/lib/user/user-register/user-register.component.d.ts +3 -0
- package/lib/wait-dialog/wait-dialog.component.d.ts +3 -0
- package/lib/warning-dialog/warning-dialog.component.d.ts +3 -0
- package/package.json +20 -22
- package/rocketshow-designer-1.33.0.tgz +0 -0
- package/bundles/rocketshow-designer.umd.js +0 -9966
- package/bundles/rocketshow-designer.umd.js.map +0 -1
- package/bundles/rocketshow-designer.umd.min.js +0 -17
- package/bundles/rocketshow-designer.umd.min.js.map +0 -1
- package/esm2015/lib/array-sort-pipe.js +0 -28
- package/esm2015/lib/designer.component.js +0 -411
- package/esm2015/lib/designer.module.js +0 -117
- package/esm2015/lib/designer.service.js +0 -16
- package/esm2015/lib/effect/effect-curve/effect-curve.component.js +0 -325
- package/esm2015/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -30
- package/esm2015/lib/effect/effect.component.js +0 -73
- package/esm2015/lib/error-dialog/error-dialog.component.js +0 -42
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -141
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -128
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -163
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -60
- package/esm2015/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -87
- package/esm2015/lib/fixture/fixture-capability/fixture-capability.component.js +0 -97
- package/esm2015/lib/fixture/fixture-channel/fixture-channel.component.js +0 -66
- package/esm2015/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -200
- package/esm2015/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -31
- package/esm2015/lib/fixture/fixture-settings/fixture-settings.component.js +0 -35
- package/esm2015/lib/fixture/fixture.component.js +0 -70
- package/esm2015/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -128
- package/esm2015/lib/fixture-pool/fixture-pool.component.js +0 -331
- package/esm2015/lib/intro/intro.component.js +0 -25
- package/esm2015/lib/master-dimmer/master-dimmer.component.js +0 -41
- package/esm2015/lib/models/cached-fixture-capability.js +0 -9
- package/esm2015/lib/models/cached-fixture-channel.js +0 -7
- package/esm2015/lib/models/cached-fixture.js +0 -6
- package/esm2015/lib/models/color.js +0 -8
- package/esm2015/lib/models/composition.js +0 -46
- package/esm2015/lib/models/effect-curve-profile-channel.js +0 -15
- package/esm2015/lib/models/effect-curve.js +0 -69
- package/esm2015/lib/models/effect-pan-tilt.js +0 -19
- package/esm2015/lib/models/effect.js +0 -12
- package/esm2015/lib/models/fixture-capability-value.js +0 -15
- package/esm2015/lib/models/fixture-capability.js +0 -84
- package/esm2015/lib/models/fixture-channel-value.js +0 -11
- package/esm2015/lib/models/fixture-channel.js +0 -24
- package/esm2015/lib/models/fixture-mode.js +0 -14
- package/esm2015/lib/models/fixture-profile.js +0 -70
- package/esm2015/lib/models/fixture-wheel-slot.js +0 -26
- package/esm2015/lib/models/fixture-wheel.js +0 -15
- package/esm2015/lib/models/fixture.js +0 -40
- package/esm2015/lib/models/preset-region-scene.js +0 -8
- package/esm2015/lib/models/preset.js +0 -56
- package/esm2015/lib/models/project.js +0 -68
- package/esm2015/lib/models/scene-playback-region.js +0 -11
- package/esm2015/lib/models/scene.js +0 -27
- package/esm2015/lib/models/universe.js +0 -11
- package/esm2015/lib/preset/preset-settings/preset-settings.component.js +0 -66
- package/esm2015/lib/preset/preset.component.js +0 -85
- package/esm2015/lib/preview/models/color-changer-3d.js +0 -167
- package/esm2015/lib/preview/models/fixture-3d.js +0 -150
- package/esm2015/lib/preview/models/moving-head-3d.js +0 -233
- package/esm2015/lib/preview/preview.component.js +0 -242
- package/esm2015/lib/project/project-browser/project-browser.component.js +0 -73
- package/esm2015/lib/project/project-import/project-import.component.js +0 -89
- package/esm2015/lib/project/project-save/project-save.component.js +0 -105
- package/esm2015/lib/project/project-share/project-share.component.js +0 -43
- package/esm2015/lib/scene/scene-settings/scene-settings.component.js +0 -52
- package/esm2015/lib/scene/scene.component.js +0 -56
- package/esm2015/lib/services/animation.service.js +0 -17
- package/esm2015/lib/services/config.service.js +0 -28
- package/esm2015/lib/services/effect.service.js +0 -16
- package/esm2015/lib/services/error-dialog.service.js +0 -44
- package/esm2015/lib/services/fixture-pool.service.js +0 -34
- package/esm2015/lib/services/fixture.service.js +0 -443
- package/esm2015/lib/services/hotkey-target-exclude.service.js +0 -26
- package/esm2015/lib/services/intro.service.js +0 -144
- package/esm2015/lib/services/preset.service.js +0 -416
- package/esm2015/lib/services/preview-mesh.service.js +0 -58
- package/esm2015/lib/services/preview.service.js +0 -500
- package/esm2015/lib/services/project-load.service.js +0 -171
- package/esm2015/lib/services/project.service.js +0 -113
- package/esm2015/lib/services/scene.service.js +0 -174
- package/esm2015/lib/services/timeline.service.js +0 -738
- package/esm2015/lib/services/universe.service.js +0 -24
- package/esm2015/lib/services/user-ensure-login.service.js +0 -44
- package/esm2015/lib/services/user.service.js +0 -93
- package/esm2015/lib/services/uuid.service.js +0 -25
- package/esm2015/lib/services/warning-dialog.service.js +0 -43
- package/esm2015/lib/timeline/composition-settings/composition-settings.component.js +0 -197
- package/esm2015/lib/timeline/timeline-grid/timeline-grid.component.js +0 -55
- package/esm2015/lib/timeline/timeline.component.js +0 -239
- package/esm2015/lib/user/user-login/user-login.component.js +0 -64
- package/esm2015/lib/user/user-register/user-register.component.js +0 -89
- package/esm2015/lib/wait-dialog/wait-dialog.component.js +0 -16
- package/esm2015/lib/warning-dialog/warning-dialog.component.js +0 -42
- package/esm2015/public_api.js +0 -7
- package/esm2015/rocketshow-designer.js +0 -61
- package/esm5/lib/array-sort-pipe.js +0 -31
- package/esm5/lib/designer.component.js +0 -468
- package/esm5/lib/designer.module.js +0 -120
- package/esm5/lib/designer.service.js +0 -17
- package/esm5/lib/effect/effect-curve/effect-curve.component.js +0 -386
- package/esm5/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -31
- package/esm5/lib/effect/effect.component.js +0 -75
- package/esm5/lib/error-dialog/error-dialog.component.js +0 -43
- package/esm5/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -159
- package/esm5/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -130
- package/esm5/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -215
- package/esm5/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -61
- package/esm5/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -88
- package/esm5/lib/fixture/fixture-capability/fixture-capability.component.js +0 -130
- package/esm5/lib/fixture/fixture-channel/fixture-channel.component.js +0 -68
- package/esm5/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -306
- package/esm5/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -32
- package/esm5/lib/fixture/fixture-settings/fixture-settings.component.js +0 -36
- package/esm5/lib/fixture/fixture.component.js +0 -71
- package/esm5/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -127
- package/esm5/lib/fixture-pool/fixture-pool.component.js +0 -430
- package/esm5/lib/intro/intro.component.js +0 -26
- package/esm5/lib/master-dimmer/master-dimmer.component.js +0 -42
- package/esm5/lib/models/cached-fixture-capability.js +0 -11
- package/esm5/lib/models/cached-fixture-channel.js +0 -9
- package/esm5/lib/models/cached-fixture.js +0 -8
- package/esm5/lib/models/color.js +0 -10
- package/esm5/lib/models/composition.js +0 -60
- package/esm5/lib/models/effect-curve-profile-channel.js +0 -29
- package/esm5/lib/models/effect-curve.js +0 -95
- package/esm5/lib/models/effect-pan-tilt.js +0 -24
- package/esm5/lib/models/effect.js +0 -14
- package/esm5/lib/models/fixture-capability-value.js +0 -17
- package/esm5/lib/models/fixture-capability.js +0 -86
- package/esm5/lib/models/fixture-channel-value.js +0 -13
- package/esm5/lib/models/fixture-channel.js +0 -38
- package/esm5/lib/models/fixture-mode.js +0 -16
- package/esm5/lib/models/fixture-profile.js +0 -114
- package/esm5/lib/models/fixture-wheel-slot.js +0 -28
- package/esm5/lib/models/fixture-wheel.js +0 -29
- package/esm5/lib/models/fixture.js +0 -42
- package/esm5/lib/models/preset-region-scene.js +0 -10
- package/esm5/lib/models/preset.js +0 -90
- package/esm5/lib/models/project.js +0 -122
- package/esm5/lib/models/scene-playback-region.js +0 -13
- package/esm5/lib/models/scene.js +0 -29
- package/esm5/lib/models/universe.js +0 -13
- package/esm5/lib/preset/preset-settings/preset-settings.component.js +0 -67
- package/esm5/lib/preset/preset.component.js +0 -86
- package/esm5/lib/preview/models/color-changer-3d.js +0 -194
- package/esm5/lib/preview/models/fixture-3d.js +0 -196
- package/esm5/lib/preview/models/moving-head-3d.js +0 -250
- package/esm5/lib/preview/preview.component.js +0 -280
- package/esm5/lib/project/project-browser/project-browser.component.js +0 -77
- package/esm5/lib/project/project-import/project-import.component.js +0 -88
- package/esm5/lib/project/project-save/project-save.component.js +0 -120
- package/esm5/lib/project/project-share/project-share.component.js +0 -44
- package/esm5/lib/scene/scene-settings/scene-settings.component.js +0 -53
- package/esm5/lib/scene/scene.component.js +0 -57
- package/esm5/lib/services/animation.service.js +0 -18
- package/esm5/lib/services/config.service.js +0 -29
- package/esm5/lib/services/effect.service.js +0 -17
- package/esm5/lib/services/error-dialog.service.js +0 -46
- package/esm5/lib/services/fixture-pool.service.js +0 -36
- package/esm5/lib/services/fixture.service.js +0 -643
- package/esm5/lib/services/hotkey-target-exclude.service.js +0 -27
- package/esm5/lib/services/intro.service.js +0 -145
- package/esm5/lib/services/preset.service.js +0 -637
- package/esm5/lib/services/preview-mesh.service.js +0 -61
- package/esm5/lib/services/preview.service.js +0 -754
- package/esm5/lib/services/project-load.service.js +0 -185
- package/esm5/lib/services/project.service.js +0 -127
- package/esm5/lib/services/scene.service.js +0 -251
- package/esm5/lib/services/timeline.service.js +0 -845
- package/esm5/lib/services/universe.service.js +0 -36
- package/esm5/lib/services/user-ensure-login.service.js +0 -45
- package/esm5/lib/services/user.service.js +0 -95
- package/esm5/lib/services/uuid.service.js +0 -26
- package/esm5/lib/services/warning-dialog.service.js +0 -45
- package/esm5/lib/timeline/composition-settings/composition-settings.component.js +0 -206
- package/esm5/lib/timeline/timeline-grid/timeline-grid.component.js +0 -56
- package/esm5/lib/timeline/timeline.component.js +0 -243
- package/esm5/lib/user/user-login/user-login.component.js +0 -66
- package/esm5/lib/user/user-register/user-register.component.js +0 -91
- package/esm5/lib/wait-dialog/wait-dialog.component.js +0 -18
- package/esm5/lib/warning-dialog/warning-dialog.component.js +0 -43
- package/esm5/public_api.js +0 -7
- package/esm5/rocketshow-designer.js +0 -61
- package/fesm2015/rocketshow-designer.js +0 -7945
- package/fesm2015/rocketshow-designer.js.map +0 -1
- package/fesm5/rocketshow-designer.js +0 -9690
- package/fesm5/rocketshow-designer.js.map +0 -1
- package/rocketshow-designer-1.32.0.tgz +0 -0
- package/rocketshow-designer.d.ts +0 -60
- package/rocketshow-designer.metadata.json +0 -1
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Component, HostListener } from '@angular/core';
|
|
3
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
|
|
5
|
-
import { ToastrService } from 'ngx-toastr';
|
|
6
|
-
import { Subject } from 'rxjs';
|
|
7
|
-
import { catchError, finalize } from 'rxjs/operators';
|
|
8
|
-
import { Fixture } from '../models/fixture';
|
|
9
|
-
import { ConfigService } from '../services/config.service';
|
|
10
|
-
import { FixtureService } from '../services/fixture.service';
|
|
11
|
-
import { PresetService } from '../services/preset.service';
|
|
12
|
-
import { PreviewService } from '../services/preview.service';
|
|
13
|
-
import { ProjectService } from '../services/project.service';
|
|
14
|
-
import { UuidService } from '../services/uuid.service';
|
|
15
|
-
import { FixturePoolCreateFromFileComponent } from './fixture-pool-create-from-file/fixture-pool-create-from-file.component';
|
|
16
|
-
let FixturePoolComponent = class FixturePoolComponent {
|
|
17
|
-
constructor(bsModalRef, fixtureService, uuidService, projectService, previewService, translateService, toastrService, presetService, configService, modalService) {
|
|
18
|
-
this.bsModalRef = bsModalRef;
|
|
19
|
-
this.fixtureService = fixtureService;
|
|
20
|
-
this.uuidService = uuidService;
|
|
21
|
-
this.projectService = projectService;
|
|
22
|
-
this.previewService = previewService;
|
|
23
|
-
this.translateService = translateService;
|
|
24
|
-
this.toastrService = toastrService;
|
|
25
|
-
this.presetService = presetService;
|
|
26
|
-
this.configService = configService;
|
|
27
|
-
this.modalService = modalService;
|
|
28
|
-
this.loadingProfiles = false;
|
|
29
|
-
this.dmxChannels = [];
|
|
30
|
-
this.showChannelNumbers = false;
|
|
31
|
-
this.onClose = new Subject();
|
|
32
|
-
this.fixturePool = [...this.projectService.project.fixtures];
|
|
33
|
-
if (this.fixturePool.length > 0) {
|
|
34
|
-
this.selectFixture(this.fixturePool[0]);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
for (let i = 0; i < 512; i++) {
|
|
39
|
-
this.dmxChannels.push(0);
|
|
40
|
-
}
|
|
41
|
-
this.loadProfiles();
|
|
42
|
-
}
|
|
43
|
-
loadProfiles() {
|
|
44
|
-
this.loadingProfiles = true;
|
|
45
|
-
this.fixtureService.getSearchProfiles().subscribe((profiles) => {
|
|
46
|
-
this.profiles = profiles;
|
|
47
|
-
this.filterProfiles();
|
|
48
|
-
this.loadingProfiles = false;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
selectFixture(fixture) {
|
|
52
|
-
this.selectedFixtureProfile = undefined;
|
|
53
|
-
if (fixture) {
|
|
54
|
-
this.selectedFixtureProfile = this.fixtureService.getProfileByUuid(fixture.profileUuid);
|
|
55
|
-
}
|
|
56
|
-
this.selectedFixture = fixture;
|
|
57
|
-
}
|
|
58
|
-
filterProfiles() {
|
|
59
|
-
if (!this.searchExpression || !this.profiles) {
|
|
60
|
-
this.filteredProfiles = this.profiles;
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.filteredProfiles = [];
|
|
64
|
-
const keywords = this.searchExpression.split(' ');
|
|
65
|
-
for (const profile of this.profiles) {
|
|
66
|
-
let foundKeywords = 0;
|
|
67
|
-
for (const keyword of keywords) {
|
|
68
|
-
if (profile.uuid.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||
|
|
69
|
-
profile.name.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||
|
|
70
|
-
profile.manufacturerName.toLowerCase().indexOf(keyword.toLowerCase()) !== -1) {
|
|
71
|
-
foundKeywords++;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (foundKeywords === keywords.length) {
|
|
75
|
-
this.filteredProfiles.push(profile);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
addFixture(searchProfile) {
|
|
80
|
-
// Load the profile details, if not already done. There is only a
|
|
81
|
-
// minimal profile passed from the search.
|
|
82
|
-
this.fixtureService.loadProfileByUuid(searchProfile.uuid).subscribe(() => {
|
|
83
|
-
const profile = this.fixtureService.getProfileByUuid(searchProfile.uuid);
|
|
84
|
-
const newFixture = this.fixtureService.addFixture(profile, this.fixturePool);
|
|
85
|
-
this.selectFixture(newFixture);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
addCopy(originalFixture) {
|
|
89
|
-
const fixture = new Fixture();
|
|
90
|
-
fixture.uuid = this.uuidService.getUuid();
|
|
91
|
-
fixture.profileUuid = originalFixture.profileUuid;
|
|
92
|
-
fixture.name = originalFixture.name;
|
|
93
|
-
fixture.modeShortName = originalFixture.modeShortName;
|
|
94
|
-
fixture.dmxFirstChannel = originalFixture.dmxFirstChannel;
|
|
95
|
-
fixture.dmxUniverseUuid = originalFixture.dmxUniverseUuid;
|
|
96
|
-
this.fixturePool.push(fixture);
|
|
97
|
-
this.selectFixture(fixture);
|
|
98
|
-
}
|
|
99
|
-
removeFixture(fixture) {
|
|
100
|
-
for (let i = 0; i < this.fixturePool.length; i++) {
|
|
101
|
-
if (this.fixturePool[i].uuid === fixture.uuid) {
|
|
102
|
-
if (this.selectedFixture === this.fixturePool[i]) {
|
|
103
|
-
this.selectFixture(undefined);
|
|
104
|
-
}
|
|
105
|
-
this.fixturePool.splice(i, 1);
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
if (!this.selectedFixture && this.fixturePool && this.fixturePool.length > 0) {
|
|
110
|
-
this.selectFixture((this.selectedFixture = this.fixturePool[0]));
|
|
111
|
-
}
|
|
112
|
-
// remove unused profiles
|
|
113
|
-
for (let i = 0; i < this.projectService.project.fixtureProfiles.length; i++) {
|
|
114
|
-
let profileUsed = false;
|
|
115
|
-
for (const fixtureInPool of this.fixturePool) {
|
|
116
|
-
if (fixtureInPool.profileUuid === this.projectService.project.fixtureProfiles[i].uuid) {
|
|
117
|
-
profileUsed = true;
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (!profileUsed) {
|
|
122
|
-
this.projectService.project.fixtureProfiles.splice(i, 1);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
channelOccupied(index) {
|
|
127
|
-
for (const fixture of this.fixturePool) {
|
|
128
|
-
const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);
|
|
129
|
-
if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + mode.channels.length) {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
channelOccupiedStart(index) {
|
|
136
|
-
for (const fixture of this.fixturePool) {
|
|
137
|
-
if (index === fixture.dmxFirstChannel) {
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
channelOccupiedEnd(index) {
|
|
144
|
-
for (const fixture of this.fixturePool) {
|
|
145
|
-
const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);
|
|
146
|
-
if (index === fixture.dmxFirstChannel + mode.channels.length - 1) {
|
|
147
|
-
return true;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
channelOverlapped(index) {
|
|
153
|
-
let occupiedFixture;
|
|
154
|
-
for (const fixture of this.fixturePool) {
|
|
155
|
-
const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);
|
|
156
|
-
if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + mode.channels.length) {
|
|
157
|
-
if (occupiedFixture) {
|
|
158
|
-
if (occupiedFixture.dmxFirstChannel !== fixture.dmxFirstChannel || occupiedFixture.modeShortName !== fixture.modeShortName) {
|
|
159
|
-
// fixtures are allowed to overlap, if they start at the same channel and
|
|
160
|
-
// use the same mode. otherwise it's not allowed.
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
occupiedFixture = fixture;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
channelMouseDown(event) {
|
|
172
|
-
// start dragging
|
|
173
|
-
const selectedIndex = event.target.dataset.index;
|
|
174
|
-
let newSelectedFixture;
|
|
175
|
-
// find a dragging fixture and select it, but don't change the selection, if the
|
|
176
|
-
// currently selected fixture might also be selected (on overlapped fixtures)
|
|
177
|
-
for (const fixture of this.fixturePool) {
|
|
178
|
-
const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);
|
|
179
|
-
if (selectedIndex >= fixture.dmxFirstChannel && selectedIndex <= fixture.dmxFirstChannel + mode.channels.length - 1) {
|
|
180
|
-
if (this.selectedFixture === fixture) {
|
|
181
|
-
newSelectedFixture = fixture;
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
if (!newSelectedFixture) {
|
|
185
|
-
newSelectedFixture = fixture;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
if (newSelectedFixture) {
|
|
190
|
-
if (newSelectedFixture !== this.selectedFixture) {
|
|
191
|
-
this.selectFixture(newSelectedFixture);
|
|
192
|
-
}
|
|
193
|
-
this.channelDragFixture = newSelectedFixture;
|
|
194
|
-
this.channelDragOffset = selectedIndex - newSelectedFixture.dmxFirstChannel;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
channelSelected(index) {
|
|
198
|
-
if (!this.selectedFixture) {
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
|
-
if (index >= this.selectedFixture.dmxFirstChannel) {
|
|
202
|
-
const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(this.selectedFixture.profileUuid), this.selectedFixture);
|
|
203
|
-
if (index < this.selectedFixture.dmxFirstChannel + mode.channels.length) {
|
|
204
|
-
return true;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return false;
|
|
208
|
-
}
|
|
209
|
-
// register mouse up globally (e.g. also outside the DMX mapping)
|
|
210
|
-
mouseUp(event) {
|
|
211
|
-
// finish dragging
|
|
212
|
-
this.channelDragFixture = undefined;
|
|
213
|
-
this.channelDragOffset = undefined;
|
|
214
|
-
}
|
|
215
|
-
channelMouseOver(event) {
|
|
216
|
-
// perform dragging
|
|
217
|
-
const selectedIndex = event.target.dataset.index;
|
|
218
|
-
if (this.channelDragFixture &&
|
|
219
|
-
selectedIndex - this.channelDragOffset >= 0 &&
|
|
220
|
-
selectedIndex -
|
|
221
|
-
this.channelDragOffset +
|
|
222
|
-
this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(this.channelDragFixture.profileUuid), this.channelDragFixture).channels.length -
|
|
223
|
-
1 <=
|
|
224
|
-
511) {
|
|
225
|
-
this.channelDragFixture.dmxFirstChannel = selectedIndex - this.channelDragOffset;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
ok() {
|
|
229
|
-
// don't allow OK if overlapping fixtures exist
|
|
230
|
-
for (let i = 0; i < this.dmxChannels.length; i++) {
|
|
231
|
-
if (this.channelOverlapped(i)) {
|
|
232
|
-
const msg = 'designer.fixture-pool.channel-occupied';
|
|
233
|
-
const title = 'designer.fixture-pool.channel-occupied-title';
|
|
234
|
-
this.translateService.get([msg, title]).subscribe((result) => {
|
|
235
|
-
this.toastrService.error(result[msg], result[title]);
|
|
236
|
-
});
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
this.projectService.project.fixtures = this.fixturePool;
|
|
241
|
-
this.fixtureService.updateCachedFixtures();
|
|
242
|
-
this.presetService.removeDeletedFixtures();
|
|
243
|
-
this.previewService.updateFixtureSetup();
|
|
244
|
-
this.presetService.updateFixtureSelection();
|
|
245
|
-
this.presetService.fixtureSelectionChanged.next();
|
|
246
|
-
this.presetService.previewLive();
|
|
247
|
-
this.onClose.next(1);
|
|
248
|
-
this.bsModalRef.hide();
|
|
249
|
-
}
|
|
250
|
-
cancel() {
|
|
251
|
-
this.onClose.next(2);
|
|
252
|
-
this.bsModalRef.hide();
|
|
253
|
-
}
|
|
254
|
-
updateProfiles() {
|
|
255
|
-
this.updatingProfiles = true;
|
|
256
|
-
// TODO
|
|
257
|
-
this.fixtureService
|
|
258
|
-
.updateProfiles()
|
|
259
|
-
.pipe(finalize(() => {
|
|
260
|
-
this.updatingProfiles = false;
|
|
261
|
-
}), catchError(() => {
|
|
262
|
-
const msg = 'designer.fixture-pool.profiles-update-error';
|
|
263
|
-
const title = 'designer.fixture-pool.profiles-update-error-title';
|
|
264
|
-
this.translateService.get([msg, title]).subscribe((result) => {
|
|
265
|
-
this.toastrService.error(result[msg], result[title]);
|
|
266
|
-
});
|
|
267
|
-
return undefined;
|
|
268
|
-
}))
|
|
269
|
-
.subscribe(() => {
|
|
270
|
-
this.loadProfiles();
|
|
271
|
-
const msg = 'designer.fixture-pool.profiles-updated';
|
|
272
|
-
const title = 'designer.fixture-pool.profiles-updated-title';
|
|
273
|
-
this.translateService.get([msg, title]).subscribe((result) => {
|
|
274
|
-
this.toastrService.success(result[msg], result[title]);
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
createFixtureFromProfileFile() {
|
|
279
|
-
const bsModalRef = this.modalService.show(FixturePoolCreateFromFileComponent, { keyboard: true, ignoreBackdropClick: false });
|
|
280
|
-
bsModalRef.content.onClose.subscribe((profile) => {
|
|
281
|
-
const newFixture = this.fixtureService.addFixture(profile, this.fixturePool);
|
|
282
|
-
this.selectFixture(newFixture);
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
handleKeyboardEvent(event) {
|
|
286
|
-
this.ok();
|
|
287
|
-
}
|
|
288
|
-
};
|
|
289
|
-
FixturePoolComponent.ctorParameters = () => [
|
|
290
|
-
{ type: BsModalRef },
|
|
291
|
-
{ type: FixtureService },
|
|
292
|
-
{ type: UuidService },
|
|
293
|
-
{ type: ProjectService },
|
|
294
|
-
{ type: PreviewService },
|
|
295
|
-
{ type: TranslateService },
|
|
296
|
-
{ type: ToastrService },
|
|
297
|
-
{ type: PresetService },
|
|
298
|
-
{ type: ConfigService },
|
|
299
|
-
{ type: BsModalService }
|
|
300
|
-
];
|
|
301
|
-
__decorate([
|
|
302
|
-
HostListener('window:mouseup', ['$event']),
|
|
303
|
-
__metadata("design:type", Function),
|
|
304
|
-
__metadata("design:paramtypes", [Object]),
|
|
305
|
-
__metadata("design:returntype", void 0)
|
|
306
|
-
], FixturePoolComponent.prototype, "mouseUp", null);
|
|
307
|
-
__decorate([
|
|
308
|
-
HostListener('document:keydown.enter', ['$event']),
|
|
309
|
-
__metadata("design:type", Function),
|
|
310
|
-
__metadata("design:paramtypes", [Object]),
|
|
311
|
-
__metadata("design:returntype", void 0)
|
|
312
|
-
], FixturePoolComponent.prototype, "handleKeyboardEvent", null);
|
|
313
|
-
FixturePoolComponent = __decorate([
|
|
314
|
-
Component({
|
|
315
|
-
selector: 'lib-app-fixture-pool',
|
|
316
|
-
template: "<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\">×</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\"> </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 - {{ mode.channels.length }}\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",
|
|
317
|
-
styles: [".list-group-item{padding:.3rem 1.25rem}.dmx-channel{display:flex;float:left;width:28px;border:1px solid #fff;margin-left:-1px;margin-bottom:-1px;padding-bottom:2px}.dmx-channel-occupied{background-color:#63462e;border-left:none;border-right:none;cursor:move}.dmx-channel-occupied-start{border-left:1px solid #fff;border-top-left-radius:8px;border-bottom-left-radius:8px}.dmx-channel-occupied-end{border-right:1px solid #fff;border-top-right-radius:8px;border-bottom-right-radius:8px}.dmx-channel-selected{background-color:#fd7e14}.dmx-channel-overlapped{background-color:red;border:1px solid red;cursor:move}.card{overflow:auto}"]
|
|
318
|
-
}),
|
|
319
|
-
__metadata("design:paramtypes", [BsModalRef,
|
|
320
|
-
FixtureService,
|
|
321
|
-
UuidService,
|
|
322
|
-
ProjectService,
|
|
323
|
-
PreviewService,
|
|
324
|
-
TranslateService,
|
|
325
|
-
ToastrService,
|
|
326
|
-
PresetService,
|
|
327
|
-
ConfigService,
|
|
328
|
-
BsModalService])
|
|
329
|
-
], FixturePoolComponent);
|
|
330
|
-
export { FixturePoolComponent };
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1wb29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL2ZpeHR1cmUtcG9vbC9maXh0dXJlLXBvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQU83SCxJQUFhLG9CQUFvQixHQUFqQyxNQUFhLG9CQUFvQjtJQW9CL0IsWUFDUyxVQUFzQixFQUN0QixjQUE4QixFQUM3QixXQUF3QixFQUN6QixjQUE4QixFQUM3QixjQUE4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aEMsbzFWQUE0Qzs7S0FFN0MsQ0FBQztxQ0FzQnFCLFVBQVU7UUFDTixjQUFjO1FBQ2hCLFdBQVc7UUFDVCxjQUFjO1FBQ2IsY0FBYztRQUNaLGdCQUFnQjtRQUNuQixhQUFhO1FBQ2IsYUFBYTtRQUNkLGFBQWE7UUFDYixjQUFjO0dBOUIzQixvQkFBb0IsQ0EwV2hDO1NBMVdZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYsIEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpeHR1cmUgfSBmcm9tICcuLi9tb2RlbHMvZml4dHVyZSc7XG5pbXBvcnQgeyBGaXh0dXJlUHJvZmlsZSB9IGZyb20gJy4uL21vZGVscy9maXh0dXJlLXByb2ZpbGUnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpeHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZml4dHVyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmVzZXQuc2VydmljZSc7XG5pbXBvcnQgeyBQcmV2aWV3U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ByZXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9qZWN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2plY3Quc2VydmljZSc7XG5pbXBvcnQgeyBVdWlkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V1aWQuc2VydmljZSc7XG5pbXBvcnQgeyBGaXh0dXJlUG9vbENyZWF0ZUZyb21GaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9maXh0dXJlLXBvb2wtY3JlYXRlLWZyb20tZmlsZS9maXh0dXJlLXBvb2wtY3JlYXRlLWZyb20tZmlsZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWZpeHR1cmUtcG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maXh0dXJlLXBvb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maXh0dXJlLXBvb2wuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaXh0dXJlUG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcHJvZmlsZXM6IEZpeHR1cmVQcm9maWxlW107XG4gIHB1YmxpYyBmaWx0ZXJlZFByb2ZpbGVzOiBGaXh0dXJlUHJvZmlsZVtdO1xuICBwdWJsaWMgbG9hZGluZ1Byb2ZpbGVzID0gZmFsc2U7XG5cbiAgcHVibGljIGZpeHR1cmVQb29sOiBGaXh0dXJlW107XG5cbiAgcHVibGljIGRteENoYW5uZWxzOiBudW1iZXJbXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRGaXh0dXJlOiBGaXh0dXJlO1xuICBwdWJsaWMgc2VsZWN0ZWRGaXh0dXJlUHJvZmlsZTogRml4dHVyZVByb2ZpbGU7XG4gIHB1YmxpYyBzaG93Q2hhbm5lbE51bWJlcnMgPSBmYWxzZTtcbiAgcHVibGljIGNoYW5uZWxEcmFnRml4dHVyZTogRml4dHVyZTtcbiAgcHVibGljIGNoYW5uZWxEcmFnT2Zmc2V0OiBudW1iZXI7XG5cbiAgcHVibGljIG9uQ2xvc2U6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHVibGljIHNlYXJjaEV4cHJlc3Npb246IHN0cmluZztcblxuICBwdWJsaWMgdXBkYXRpbmdQcm9maWxlczogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYnNNb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwdWJsaWMgZml4dHVyZVNlcnZpY2U6IEZpeHR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXVpZFNlcnZpY2U6IFV1aWRTZXJ2aWNlLFxuICAgIHB1YmxpYyBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmV2aWV3U2VydmljZTogUHJldmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RyU2VydmljZSxcbiAgICBwcml2YXRlIHByZXNldFNlcnZpY2U6IFByZXNldFNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZml4dHVyZVBvb2wgPSBbLi4udGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVzXTtcblxuICAgIGlmICh0aGlzLmZpeHR1cmVQb29sLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZSh0aGlzLmZpeHR1cmVQb29sWzBdKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUxMjsgaSsrKSB7XG4gICAgICB0aGlzLmRteENoYW5uZWxzLnB1c2goMCk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkUHJvZmlsZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByb2ZpbGVzKCkge1xuICAgIHRoaXMubG9hZGluZ1Byb2ZpbGVzID0gdHJ1ZTtcblxuICAgIHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0U2VhcmNoUHJvZmlsZXMoKS5zdWJzY3JpYmUoKHByb2ZpbGVzKSA9PiB7XG4gICAgICB0aGlzLnByb2ZpbGVzID0gcHJvZmlsZXM7XG4gICAgICB0aGlzLmZpbHRlclByb2ZpbGVzKCk7XG4gICAgICB0aGlzLmxvYWRpbmdQcm9maWxlcyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0Rml4dHVyZShmaXh0dXJlOiBGaXh0dXJlKSB7XG4gICAgdGhpcy5zZWxlY3RlZEZpeHR1cmVQcm9maWxlID0gdW5kZWZpbmVkO1xuICAgIGlmIChmaXh0dXJlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZVByb2ZpbGUgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gZml4dHVyZTtcbiAgfVxuXG4gIGZpbHRlclByb2ZpbGVzKCkge1xuICAgIGlmICghdGhpcy5zZWFyY2hFeHByZXNzaW9uIHx8ICF0aGlzLnByb2ZpbGVzKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkUHJvZmlsZXMgPSB0aGlzLnByb2ZpbGVzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRQcm9maWxlcyA9IFtdO1xuXG4gICAgY29uc3Qga2V5d29yZHMgPSB0aGlzLnNlYXJjaEV4cHJlc3Npb24uc3BsaXQoJyAnKTtcblxuICAgIGZvciAoY29uc3QgcHJvZmlsZSBvZiB0aGlzLnByb2ZpbGVzKSB7XG4gICAgICBsZXQgZm91bmRLZXl3b3JkcyA9IDA7XG5cbiAgICAgIGZvciAoY29uc3Qga2V5d29yZCBvZiBrZXl3b3Jkcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJvZmlsZS51dWlkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihrZXl3b3JkLnRvTG93ZXJDYXNlKCkpICE9PSAtMSB8fFxuICAgICAgICAgIHByb2ZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoa2V5d29yZC50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgfHxcbiAgICAgICAgICBwcm9maWxlLm1hbnVmYWN0dXJlck5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGtleXdvcmQudG9Mb3dlckNhc2UoKSkgIT09IC0xXG4gICAgICAgICkge1xuICAgICAgICAgIGZvdW5kS2V5d29yZHMrKztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZm91bmRLZXl3b3JkcyA9PT0ga2V5d29yZHMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRQcm9maWxlcy5wdXNoKHByb2ZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZEZpeHR1cmUoc2VhcmNoUHJvZmlsZTogRml4dHVyZVByb2ZpbGUpIHtcbiAgICAvLyBMb2FkIHRoZSBwcm9maWxlIGRldGFpbHMsIGlmIG5vdCBhbHJlYWR5IGRvbmUuIFRoZXJlIGlzIG9ubHkgYVxuICAgIC8vIG1pbmltYWwgcHJvZmlsZSBwYXNzZWQgZnJvbSB0aGUgc2VhcmNoLlxuICAgIHRoaXMuZml4dHVyZVNlcnZpY2UubG9hZFByb2ZpbGVCeVV1aWQoc2VhcmNoUHJvZmlsZS51dWlkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0UHJvZmlsZUJ5VXVpZChzZWFyY2hQcm9maWxlLnV1aWQpO1xuICAgICAgY29uc3QgbmV3Rml4dHVyZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuYWRkRml4dHVyZShwcm9maWxlLCB0aGlzLmZpeHR1cmVQb29sKTtcbiAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZShuZXdGaXh0dXJlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZENvcHkob3JpZ2luYWxGaXh0dXJlOiBGaXh0dXJlKSB7XG4gICAgY29uc3QgZml4dHVyZSA9IG5ldyBGaXh0dXJlKCk7XG4gICAgZml4dHVyZS51dWlkID0gdGhpcy51dWlkU2VydmljZS5nZXRVdWlkKCk7XG4gICAgZml4dHVyZS5wcm9maWxlVXVpZCA9IG9yaWdpbmFsRml4dHVyZS5wcm9maWxlVXVpZDtcbiAgICBmaXh0dXJlLm5hbWUgPSBvcmlnaW5hbEZpeHR1cmUubmFtZTtcbiAgICBmaXh0dXJlLm1vZGVTaG9ydE5hbWUgPSBvcmlnaW5hbEZpeHR1cmUubW9kZVNob3J0TmFtZTtcbiAgICBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCA9IG9yaWdpbmFsRml4dHVyZS5kbXhGaXJzdENoYW5uZWw7XG4gICAgZml4dHVyZS5kbXhVbml2ZXJzZVV1aWQgPSBvcmlnaW5hbEZpeHR1cmUuZG14VW5pdmVyc2VVdWlkO1xuXG4gICAgdGhpcy5maXh0dXJlUG9vbC5wdXNoKGZpeHR1cmUpO1xuICAgIHRoaXMuc2VsZWN0Rml4dHVyZShmaXh0dXJlKTtcbiAgfVxuXG4gIHJlbW92ZUZpeHR1cmUoZml4dHVyZTogRml4dHVyZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maXh0dXJlUG9vbC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZml4dHVyZVBvb2xbaV0udXVpZCA9PT0gZml4dHVyZS51dWlkKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRml4dHVyZSA9PT0gdGhpcy5maXh0dXJlUG9vbFtpXSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZSh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZml4dHVyZVBvb2wuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaXh0dXJlICYmIHRoaXMuZml4dHVyZVBvb2wgJiYgdGhpcy5maXh0dXJlUG9vbC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlbGVjdEZpeHR1cmUoKHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gdGhpcy5maXh0dXJlUG9vbFswXSkpO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSB1bnVzZWQgcHJvZmlsZXNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlUHJvZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBwcm9maWxlVXNlZCA9IGZhbHNlO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpeHR1cmVJblBvb2wgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgICBpZiAoZml4dHVyZUluUG9vbC5wcm9maWxlVXVpZCA9PT0gdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVQcm9maWxlc1tpXS51dWlkKSB7XG4gICAgICAgICAgcHJvZmlsZVVzZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJvZmlsZVVzZWQpIHtcbiAgICAgICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmZpeHR1cmVQcm9maWxlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbm5lbE9jY3VwaWVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZSh0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCksIGZpeHR1cmUpO1xuXG4gICAgICBpZiAoaW5kZXggPj0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgJiYgaW5kZXggPCBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCArIG1vZGUuY2hhbm5lbHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNoYW5uZWxPY2N1cGllZFN0YXJ0KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgaWYgKGluZGV4ID09PSBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGFubmVsT2NjdXBpZWRFbmQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVQb29sKSB7XG4gICAgICBjb25zdCBtb2RlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQnlGaXh0dXJlKHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0UHJvZmlsZUJ5VXVpZChmaXh0dXJlLnByb2ZpbGVVdWlkKSwgZml4dHVyZSk7XG5cbiAgICAgIGlmIChpbmRleCA9PT0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgKyBtb2RlLmNoYW5uZWxzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hhbm5lbE92ZXJsYXBwZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGxldCBvY2N1cGllZEZpeHR1cmU6IEZpeHR1cmU7XG5cbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlUG9vbCkge1xuICAgICAgY29uc3QgbW9kZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZSh0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQoZml4dHVyZS5wcm9maWxlVXVpZCksIGZpeHR1cmUpO1xuXG4gICAgICBpZiAoaW5kZXggPj0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgJiYgaW5kZXggPCBmaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCArIG1vZGUuY2hhbm5lbHMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvY2N1cGllZEZpeHR1cmUpIHtcbiAgICAgICAgICBpZiAob2NjdXBpZWRGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCAhPT0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgfHwgb2NjdXBpZWRGaXh0dXJlLm1vZGVTaG9ydE5hbWUgIT09IGZpeHR1cmUubW9kZVNob3J0TmFtZSkge1xuICAgICAgICAgICAgLy8gZml4dHVyZXMgYXJlIGFsbG93ZWQgdG8gb3ZlcmxhcCwgaWYgdGhleSBzdGFydCBhdCB0aGUgc2FtZSBjaGFubmVsIGFuZFxuICAgICAgICAgICAgLy8gdXNlIHRoZSBzYW1lIG1vZGUuIG90aGVyd2lzZSBpdCdzIG5vdCBhbGxvd2VkLlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9jY3VwaWVkRml4dHVyZSA9IGZpeHR1cmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjaGFubmVsTW91c2VEb3duKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBzdGFydCBkcmFnZ2luZ1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBldmVudC50YXJnZXQuZGF0YXNldC5pbmRleDtcbiAgICBsZXQgbmV3U2VsZWN0ZWRGaXh0dXJlOiBGaXh0dXJlO1xuXG4gICAgLy8gZmluZCBhIGRyYWdnaW5nIGZpeHR1cmUgYW5kIHNlbGVjdCBpdCwgYnV0IGRvbid0IGNoYW5nZSB0aGUgc2VsZWN0aW9uLCBpZiB0aGVcbiAgICAvLyBjdXJyZW50bHkgc2VsZWN0ZWQgZml4dHVyZSBtaWdodCBhbHNvIGJlIHNlbGVjdGVkIChvbiBvdmVybGFwcGVkIGZpeHR1cmVzKVxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVQb29sKSB7XG4gICAgICBjb25zdCBtb2RlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQnlGaXh0dXJlKHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0UHJvZmlsZUJ5VXVpZChmaXh0dXJlLnByb2ZpbGVVdWlkKSwgZml4dHVyZSk7XG5cbiAgICAgIGlmIChzZWxlY3RlZEluZGV4ID49IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICYmIHNlbGVjdGVkSW5kZXggPD0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgKyBtb2RlLmNoYW5uZWxzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlID09PSBmaXh0dXJlKSB7XG4gICAgICAgICAgbmV3U2VsZWN0ZWRGaXh0dXJlID0gZml4dHVyZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbmV3U2VsZWN0ZWRGaXh0dXJlKSB7XG4gICAgICAgICAgbmV3U2VsZWN0ZWRGaXh0dXJlID0gZml4dHVyZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZEZpeHR1cmUpIHtcbiAgICAgIGlmIChuZXdTZWxlY3RlZEZpeHR1cmUgIT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZShuZXdTZWxlY3RlZEZpeHR1cmUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5uZWxEcmFnRml4dHVyZSA9IG5ld1NlbGVjdGVkRml4dHVyZTtcbiAgICAgIHRoaXMuY2hhbm5lbERyYWdPZmZzZXQgPSBzZWxlY3RlZEluZGV4IC0gbmV3U2VsZWN0ZWRGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbDtcbiAgICB9XG4gIH1cblxuICBjaGFubmVsU2VsZWN0ZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZEZpeHR1cmUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gdGhpcy5zZWxlY3RlZEZpeHR1cmUuZG14Rmlyc3RDaGFubmVsKSB7XG4gICAgICBjb25zdCBtb2RlID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNb2RlQnlGaXh0dXJlKFxuICAgICAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQodGhpcy5zZWxlY3RlZEZpeHR1cmUucHJvZmlsZVV1aWQpLFxuICAgICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZVxuICAgICAgKTtcblxuICAgICAgaWYgKGluZGV4IDwgdGhpcy5zZWxlY3RlZEZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICsgbW9kZS5jaGFubmVscy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gcmVnaXN0ZXIgbW91c2UgdXAgZ2xvYmFsbHkgKGUuZy4gYWxzbyBvdXRzaWRlIHRoZSBETVggbWFwcGluZylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNldXAnLCBbJyRldmVudCddKVxuICBtb3VzZVVwKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBmaW5pc2ggZHJhZ2dpbmdcbiAgICB0aGlzLmNoYW5uZWxEcmFnRml4dHVyZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNoYW5uZWxEcmFnT2Zmc2V0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2hhbm5lbE1vdXNlT3ZlcihldmVudDogYW55KSB7XG4gICAgLy8gcGVyZm9ybSBkcmFnZ2luZ1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBldmVudC50YXJnZXQuZGF0YXNldC5pbmRleDtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuY2hhbm5lbERyYWdGaXh0dXJlICYmXG4gICAgICBzZWxlY3RlZEluZGV4IC0gdGhpcy5jaGFubmVsRHJhZ09mZnNldCA+PSAwICYmXG4gICAgICBzZWxlY3RlZEluZGV4IC1cbiAgICAgICAgdGhpcy5jaGFubmVsRHJhZ09mZnNldCArXG4gICAgICAgIHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0TW9kZUJ5Rml4dHVyZShcbiAgICAgICAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFByb2ZpbGVCeVV1aWQodGhpcy5jaGFubmVsRHJhZ0ZpeHR1cmUucHJvZmlsZVV1aWQpLFxuICAgICAgICAgIHRoaXMuY2hhbm5lbERyYWdGaXh0dXJlXG4gICAgICAgICkuY2hhbm5lbHMubGVuZ3RoIC1cbiAgICAgICAgMSA8PVxuICAgICAgICA1MTFcbiAgICApIHtcbiAgICAgIHRoaXMuY2hhbm5lbERyYWdGaXh0dXJlLmRteEZpcnN0Q2hhbm5lbCA9IHNlbGVjdGVkSW5kZXggLSB0aGlzLmNoYW5uZWxEcmFnT2Zmc2V0O1xuICAgIH1cbiAgfVxuXG4gIG9rKCkge1xuICAgIC8vIGRvbid0IGFsbG93IE9LIGlmIG92ZXJsYXBwaW5nIGZpeHR1cmVzIGV4aXN0XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRteENoYW5uZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jaGFubmVsT3ZlcmxhcHBlZChpKSkge1xuICAgICAgICBjb25zdCBtc2cgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLmNoYW5uZWwtb2NjdXBpZWQnO1xuICAgICAgICBjb25zdCB0aXRsZSA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wuY2hhbm5lbC1vY2N1cGllZC10aXRsZSc7XG5cbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChbbXNnLCB0aXRsZV0pLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLmVycm9yKHJlc3VsdFttc2ddLCByZXN1bHRbdGl0bGVdKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlcyA9IHRoaXMuZml4dHVyZVBvb2w7XG5cbiAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlLnVwZGF0ZUNhY2hlZEZpeHR1cmVzKCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnJlbW92ZURlbGV0ZWRGaXh0dXJlcygpO1xuICAgIHRoaXMucHJldmlld1NlcnZpY2UudXBkYXRlRml4dHVyZVNldHVwKCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnVwZGF0ZUZpeHR1cmVTZWxlY3Rpb24oKTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2UuZml4dHVyZVNlbGVjdGlvbkNoYW5nZWQubmV4dCgpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5wcmV2aWV3TGl2ZSgpO1xuXG4gICAgdGhpcy5vbkNsb3NlLm5leHQoMSk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLm9uQ2xvc2UubmV4dCgyKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgdXBkYXRlUHJvZmlsZXMoKSB7XG4gICAgdGhpcy51cGRhdGluZ1Byb2ZpbGVzID0gdHJ1ZTtcblxuICAgIC8vIFRPRE9cbiAgICB0aGlzLmZpeHR1cmVTZXJ2aWNlXG4gICAgICAudXBkYXRlUHJvZmlsZXMoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0aW5nUHJvZmlsZXMgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wucHJvZmlsZXMtdXBkYXRlLWVycm9yJztcbiAgICAgICAgICBjb25zdCB0aXRsZSA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wucHJvZmlsZXMtdXBkYXRlLWVycm9yLXRpdGxlJztcblxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLmVycm9yKHJlc3VsdFttc2ddLCByZXN1bHRbdGl0bGVdKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkUHJvZmlsZXMoKTtcblxuICAgICAgICBjb25zdCBtc2cgPSAnZGVzaWduZXIuZml4dHVyZS1wb29sLnByb2ZpbGVzLXVwZGF0ZWQnO1xuICAgICAgICBjb25zdCB0aXRsZSA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wucHJvZmlsZXMtdXBkYXRlZC10aXRsZSc7XG5cbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChbbXNnLCB0aXRsZV0pLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnN1Y2Nlc3MocmVzdWx0W21zZ10sIHJlc3VsdFt0aXRsZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRml4dHVyZUZyb21Qcm9maWxlRmlsZSgpIHtcbiAgICBjb25zdCBic01vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhGaXh0dXJlUG9vbENyZWF0ZUZyb21GaWxlQ29tcG9uZW50LCB7IGtleWJvYXJkOiB0cnVlLCBpZ25vcmVCYWNrZHJvcENsaWNrOiBmYWxzZSB9KTtcbiAgICAoYnNNb2RhbFJlZi5jb250ZW50IGFzIEZpeHR1cmVQb29sQ3JlYXRlRnJvbUZpbGVDb21wb25lbnQpLm9uQ2xvc2Uuc3Vic2NyaWJlKChwcm9maWxlOiBGaXh0dXJlUHJvZmlsZSkgPT4ge1xuICAgICAgY29uc3QgbmV3Rml4dHVyZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuYWRkRml4dHVyZShwcm9maWxlLCB0aGlzLmZpeHR1cmVQb29sKTtcbiAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZShuZXdGaXh0dXJlKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9rKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import { IntroService } from '../services/intro.service';
|
|
4
|
-
let IntroComponent = class IntroComponent {
|
|
5
|
-
constructor(introService) {
|
|
6
|
-
this.introService = introService;
|
|
7
|
-
}
|
|
8
|
-
ngOnInit() { }
|
|
9
|
-
close() {
|
|
10
|
-
this.introService.setShowIntro(false);
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
IntroComponent.ctorParameters = () => [
|
|
14
|
-
{ type: IntroService }
|
|
15
|
-
];
|
|
16
|
-
IntroComponent = __decorate([
|
|
17
|
-
Component({
|
|
18
|
-
selector: 'lib-app-intro',
|
|
19
|
-
template: "<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",
|
|
20
|
-
styles: [".card{position:absolute;width:400px;height:350px!important;z-index:999999}"]
|
|
21
|
-
}),
|
|
22
|
-
__metadata("design:paramtypes", [IntroService])
|
|
23
|
-
], IntroComponent);
|
|
24
|
-
export { IntroComponent };
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50cm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJvY2tldHNob3cvZGVzaWduZXIvIiwic291cmNlcyI6WyJsaWIvaW50cm8vaW50cm8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBQ3pCLFlBQW1CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUcsQ0FBQztJQUVqRCxRQUFRLEtBQUksQ0FBQztJQUViLEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0YsQ0FBQTs7WUFQa0MsWUFBWTs7QUFEbEMsY0FBYztJQUwxQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsZUFBZTtRQUN6QixpakRBQXFDOztLQUV0QyxDQUFDO3FDQUVpQyxZQUFZO0dBRGxDLGNBQWMsQ0FRMUI7U0FSWSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEludHJvU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludHJvLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWludHJvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ludHJvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW50cm8uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbnRyb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbnRyb1NlcnZpY2U6IEludHJvU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pbnRyb1NlcnZpY2Uuc2V0U2hvd0ludHJvKGZhbHNlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
|
|
3
|
-
import { PresetService } from '../services/preset.service';
|
|
4
|
-
import { ProjectService } from '../services/project.service';
|
|
5
|
-
let MasterDimmerComponent = class MasterDimmerComponent {
|
|
6
|
-
constructor(projectService, changeDetectorRef, presetService) {
|
|
7
|
-
this.projectService = projectService;
|
|
8
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
9
|
-
this.presetService = presetService;
|
|
10
|
-
}
|
|
11
|
-
ngOnInit() { }
|
|
12
|
-
setValue(value) {
|
|
13
|
-
if (isNaN(value)) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (value < 0 || value > 1) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
this.projectService.project.masterDimmerValue = value;
|
|
20
|
-
this.changeDetectorRef.detectChanges();
|
|
21
|
-
this.presetService.previewLive();
|
|
22
|
-
}
|
|
23
|
-
getValue() {
|
|
24
|
-
return Math.round(this.projectService.project.masterDimmerValue * 100 * 100) / 100;
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
MasterDimmerComponent.ctorParameters = () => [
|
|
28
|
-
{ type: ProjectService },
|
|
29
|
-
{ type: ChangeDetectorRef },
|
|
30
|
-
{ type: PresetService }
|
|
31
|
-
];
|
|
32
|
-
MasterDimmerComponent = __decorate([
|
|
33
|
-
Component({
|
|
34
|
-
selector: 'lib-app-master-dimmer',
|
|
35
|
-
template: "<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",
|
|
36
|
-
styles: [""]
|
|
37
|
-
}),
|
|
38
|
-
__metadata("design:paramtypes", [ProjectService, ChangeDetectorRef, PresetService])
|
|
39
|
-
], MasterDimmerComponent);
|
|
40
|
-
export { MasterDimmerComponent };
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRpbW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9tYXN0ZXItZGltbWVyL21hc3Rlci1kaW1tZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBTzdELElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBQ2hDLFlBQW1CLGNBQThCLEVBQVUsaUJBQW9DLEVBQVUsYUFBNEI7UUFBbEgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQUcsQ0FBQztJQUV6SSxRQUFRLEtBQUksQ0FBQztJQUViLFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLE9BQU87U0FDUjtRQUVELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3JGLENBQUM7Q0FDRixDQUFBOztZQXJCb0MsY0FBYztZQUE2QixpQkFBaUI7WUFBeUIsYUFBYTs7QUFEMUgscUJBQXFCO0lBTGpDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSx1QkFBdUI7UUFDakMsby9EQUE2Qzs7S0FFOUMsQ0FBQztxQ0FFbUMsY0FBYyxFQUE2QixpQkFBaUIsRUFBeUIsYUFBYTtHQUQxSCxxQkFBcUIsQ0FzQmpDO1NBdEJZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ByZXNldC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1tYXN0ZXItZGltbWVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hc3Rlci1kaW1tZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXN0ZXItZGltbWVyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWFzdGVyRGltbWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcHJlc2V0U2VydmljZTogUHJlc2V0U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgc2V0VmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5tYXN0ZXJEaW1tZXJWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5wcmV2aWV3TGl2ZSgpO1xuICB9XG5cbiAgZ2V0VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QubWFzdGVyRGltbWVyVmFsdWUgKiAxMDAgKiAxMDApIC8gMTAwO1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export class CachedFixtureCapability {
|
|
2
|
-
constructor() {
|
|
3
|
-
// the wheel slots, if available
|
|
4
|
-
this.wheelSlots = [];
|
|
5
|
-
// is this a color wheel?
|
|
6
|
-
this.wheelIsColor = false;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLWZpeHR1cmUtY2FwYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9jYWNoZWQtZml4dHVyZS1jYXBhYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyx1QkFBdUI7SUFBcEM7UUFTRSxnQ0FBZ0M7UUFDaEMsZUFBVSxHQUF1QixFQUFFLENBQUM7UUFFcEMseUJBQXlCO1FBQ3pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBR3ZCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpeHR1cmVDYXBhYmlsaXR5IH0gZnJvbSAnLi9maXh0dXJlLWNhcGFiaWxpdHknO1xuaW1wb3J0IHsgRml4dHVyZVdoZWVsIH0gZnJvbSAnLi9maXh0dXJlLXdoZWVsJztcbmltcG9ydCB7IEZpeHR1cmVXaGVlbFNsb3QgfSBmcm9tICcuL2ZpeHR1cmUtd2hlZWwtc2xvdCc7XG5cbmV4cG9ydCBjbGFzcyBDYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eSB7XG4gIGNhcGFiaWxpdHk6IEZpeHR1cmVDYXBhYmlsaXR5O1xuXG4gIC8vIHRoZSB3aGVlbCBuYW1lcywgaWYgYXZhaWxhYmxlXG4gIHdoZWVsTmFtZTogc3RyaW5nO1xuXG4gIC8vIHRoZSB3aGVlbCwgaWYgYXZhaWxhYmxlXG4gIHdoZWVsOiBGaXh0dXJlV2hlZWw7XG5cbiAgLy8gdGhlIHdoZWVsIHNsb3RzLCBpZiBhdmFpbGFibGVcbiAgd2hlZWxTbG90czogRml4dHVyZVdoZWVsU2xvdFtdID0gW107XG5cbiAgLy8gaXMgdGhpcyBhIGNvbG9yIHdoZWVsP1xuICB3aGVlbElzQ29sb3IgPSBmYWxzZTtcblxuICBjZW50ZXJWYWx1ZTogbnVtYmVyO1xufVxuIl19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export class CachedFixtureChannel {
|
|
2
|
-
constructor() {
|
|
3
|
-
// all channel capabilities
|
|
4
|
-
this.capabilities = [];
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLWZpeHR1cmUtY2hhbm5lbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9jYWNoZWQtZml4dHVyZS1jaGFubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxvQkFBb0I7SUFBakM7UUFPRSwyQkFBMkI7UUFDM0IsaUJBQVksR0FBOEIsRUFBRSxDQUFDO0lBVS9DLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhY2hlZEZpeHR1cmVDYXBhYmlsaXR5IH0gZnJvbSAnLi9jYWNoZWQtZml4dHVyZS1jYXBhYmlsaXR5JztcbmltcG9ydCB7IEZpeHR1cmVDaGFubmVsIH0gZnJvbSAnLi9maXh0dXJlLWNoYW5uZWwnO1xuaW1wb3J0IHsgRml4dHVyZVdoZWVsIH0gZnJvbSAnLi9maXh0dXJlLXdoZWVsJztcblxuZXhwb3J0IGNsYXNzIENhY2hlZEZpeHR1cmVDaGFubmVsIHtcbiAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgY2hhbm5lbFxuICBjaGFubmVsOiBGaXh0dXJlQ2hhbm5lbDtcblxuICAvLyB0aGUgbmFtZSBvZiB0aGUgY2hhbm5lbFxuICBuYW1lOiBzdHJpbmc7XG5cbiAgLy8gYWxsIGNoYW5uZWwgY2FwYWJpbGl0aWVzXG4gIGNhcGFiaWxpdGllczogQ2FjaGVkRml4dHVyZUNhcGFiaWxpdHlbXSA9IFtdO1xuXG4gIC8vIGRlZmF1bHQgdmFsdWVcbiAgZGVmYXVsdFZhbHVlOiBudW1iZXI7XG5cbiAgLy8gbWF4aW11bSB2YWx1ZVxuICBtYXhWYWx1ZTogbnVtYmVyO1xuXG4gIC8vIGEgY29sb3Igd2hlZWwsIGlmIGF2YWlsYWJsZVxuICBjb2xvcldoZWVsOiBGaXh0dXJlV2hlZWw7XG59XG4iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export class CachedFixture {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.channels = [];
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLWZpeHR1cmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvY2FjaGVkLWZpeHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLGFBQWE7SUFBMUI7UUFJRSxhQUFRLEdBQTJCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoZWRGaXh0dXJlQ2hhbm5lbCB9IGZyb20gJy4vY2FjaGVkLWZpeHR1cmUtY2hhbm5lbCc7XG5pbXBvcnQgeyBGaXh0dXJlIH0gZnJvbSAnLi9maXh0dXJlJztcbmltcG9ydCB7IEZpeHR1cmVNb2RlIH0gZnJvbSAnLi9maXh0dXJlLW1vZGUnO1xuaW1wb3J0IHsgRml4dHVyZVByb2ZpbGUgfSBmcm9tICcuL2ZpeHR1cmUtcHJvZmlsZSc7XG5cbmV4cG9ydCBjbGFzcyBDYWNoZWRGaXh0dXJlIHtcbiAgZml4dHVyZTogRml4dHVyZTtcbiAgcHJvZmlsZTogRml4dHVyZVByb2ZpbGU7XG4gIG1vZGU6IEZpeHR1cmVNb2RlO1xuICBjaGFubmVsczogQ2FjaGVkRml4dHVyZUNoYW5uZWxbXSA9IFtdO1xufVxuIl19
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export class Color {
|
|
2
|
-
constructor(red, green, blue) {
|
|
3
|
-
this.red = red;
|
|
4
|
-
this.green = green;
|
|
5
|
-
this.blue = blue;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvY29sb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLEtBQUs7SUFLaEIsWUFBWSxHQUFZLEVBQUUsS0FBYyxFQUFFLElBQWE7UUFDckQsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ29sb3Ige1xuICByZWQ6IG51bWJlcjtcbiAgZ3JlZW46IG51bWJlcjtcbiAgYmx1ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHJlZD86IG51bWJlciwgZ3JlZW4/OiBudW1iZXIsIGJsdWU/OiBudW1iZXIpIHtcbiAgICB0aGlzLnJlZCA9IHJlZDtcbiAgICB0aGlzLmdyZWVuID0gZ3JlZW47XG4gICAgdGhpcy5ibHVlID0gYmx1ZTtcbiAgfVxufVxuIl19
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { ScenePlaybackRegion } from './scene-playback-region';
|
|
2
|
-
export class Composition {
|
|
3
|
-
constructor(data) {
|
|
4
|
-
// none or audio
|
|
5
|
-
this.syncType = 'audio';
|
|
6
|
-
this.audioFileInLibrary = false;
|
|
7
|
-
this.beatsPerMinute = 120;
|
|
8
|
-
this.timeSignatureUpper = 4;
|
|
9
|
-
this.timeSignatureLower = 4;
|
|
10
|
-
this.snapToGrid = true;
|
|
11
|
-
this.tempoGuessed = false;
|
|
12
|
-
// time based or musical
|
|
13
|
-
this.gridType = 'musical';
|
|
14
|
-
this.gridOffsetMillis = 0;
|
|
15
|
-
// 1/1, 1/2, 1/4, 1/8, etc.
|
|
16
|
-
this.gridResolution = 1;
|
|
17
|
-
// if no sync
|
|
18
|
-
this.durationMillis = 0;
|
|
19
|
-
// Regions, where the scene will be played
|
|
20
|
-
this.scenePlaybackRegions = [];
|
|
21
|
-
if (!data) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
this.uuid = data.uuid;
|
|
25
|
-
this.name = data.name;
|
|
26
|
-
this.syncType = data.syncType;
|
|
27
|
-
this.audioFileName = data.audioFileName;
|
|
28
|
-
this.audioFileInLibrary = data.audioFileInLibrary;
|
|
29
|
-
this.beatsPerMinute = data.beatsPerMinute;
|
|
30
|
-
this.timeSignatureUpper = data.timeSignatureUpper;
|
|
31
|
-
this.timeSignatureLower = data.timeSignatureLower;
|
|
32
|
-
this.snapToGrid = data.snapToGrid;
|
|
33
|
-
// never guess again (and overwrite), when a composition is loaded
|
|
34
|
-
this.tempoGuessed = true;
|
|
35
|
-
this.gridType = data.gridType;
|
|
36
|
-
this.gridOffsetMillis = data.gridOffsetMillis;
|
|
37
|
-
this.gridResolution = data.gridResolution;
|
|
38
|
-
this.durationMillis = data.durationMillis;
|
|
39
|
-
if (data.scenePlaybackRegions) {
|
|
40
|
-
for (const scenePlaybackRegion of data.scenePlaybackRegions) {
|
|
41
|
-
this.scenePlaybackRegions.push(new ScenePlaybackRegion(scenePlaybackRegion));
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvY29tcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsTUFBTSxPQUFPLFdBQVc7SUErQnRCLFlBQVksSUFBVTtRQTNCdEIsZ0JBQWdCO1FBQ1QsYUFBUSxHQUFHLE9BQU8sQ0FBQztRQUduQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0IsbUJBQWMsR0FBRyxHQUFHLENBQUM7UUFDckIsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQUV2QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTVCLHdCQUF3QjtRQUNqQixhQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ3JCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUU1QiwyQkFBMkI7UUFDcEIsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFFMUIsYUFBYTtRQUNOLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLDBDQUEwQztRQUNuQyx5QkFBb0IsR0FBMEIsRUFBRSxDQUFDO1FBR3RELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUVsQyxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM3QixLQUFLLE1BQU0sbUJBQW1CLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUMzRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2FBQzlFO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2VuZVBsYXliYWNrUmVnaW9uIH0gZnJvbSAnLi9zY2VuZS1wbGF5YmFjay1yZWdpb24nO1xuXG5leHBvcnQgY2xhc3MgQ29tcG9zaXRpb24ge1xuICBwdWJsaWMgdXVpZDogc3RyaW5nO1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gIC8vIG5vbmUgb3IgYXVkaW9cbiAgcHVibGljIHN5bmNUeXBlID0gJ2F1ZGlvJztcblxuICBwdWJsaWMgYXVkaW9GaWxlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYXVkaW9GaWxlSW5MaWJyYXJ5ID0gZmFsc2U7XG5cbiAgcHVibGljIGJlYXRzUGVyTWludXRlID0gMTIwO1xuICBwdWJsaWMgdGltZVNpZ25hdHVyZVVwcGVyID0gNDtcbiAgcHVibGljIHRpbWVTaWduYXR1cmVMb3dlciA9IDQ7XG5cbiAgcHVibGljIHNuYXBUb0dyaWQgPSB0cnVlO1xuXG4gIHB1YmxpYyB0ZW1wb0d1ZXNzZWQgPSBmYWxzZTtcblxuICAvLyB0aW1lIGJhc2VkIG9yIG11c2ljYWxcbiAgcHVibGljIGdyaWRUeXBlID0gJ211c2ljYWwnO1xuICBwdWJsaWMgZ3JpZE9mZnNldE1pbGxpcyA9IDA7XG5cbiAgLy8gMS8xLCAxLzIsIDEvNCwgMS84LCBldGMuXG4gIHB1YmxpYyBncmlkUmVzb2x1dGlvbiA9IDE7XG5cbiAgLy8gaWYgbm8gc3luY1xuICBwdWJsaWMgZHVyYXRpb25NaWxsaXMgPSAwO1xuXG4gIC8vIFJlZ2lvbnMsIHdoZXJlIHRoZSBzY2VuZSB3aWxsIGJlIHBsYXllZFxuICBwdWJsaWMgc2NlbmVQbGF5YmFja1JlZ2lvbnM6IFNjZW5lUGxheWJhY2tSZWdpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnV1aWQgPSBkYXRhLnV1aWQ7XG4gICAgdGhpcy5uYW1lID0gZGF0YS5uYW1lO1xuICAgIHRoaXMuc3luY1R5cGUgPSBkYXRhLnN5bmNUeXBlO1xuICAgIHRoaXMuYXVkaW9GaWxlTmFtZSA9IGRhdGEuYXVkaW9GaWxlTmFtZTtcbiAgICB0aGlzLmF1ZGlvRmlsZUluTGlicmFyeSA9IGRhdGEuYXVkaW9GaWxlSW5MaWJyYXJ5O1xuICAgIHRoaXMuYmVhdHNQZXJNaW51dGUgPSBkYXRhLmJlYXRzUGVyTWludXRlO1xuICAgIHRoaXMudGltZVNpZ25hdHVyZVVwcGVyID0gZGF0YS50aW1lU2lnbmF0dXJlVXBwZXI7XG4gICAgdGhpcy50aW1lU2lnbmF0dXJlTG93ZXIgPSBkYXRhLnRpbWVTaWduYXR1cmVMb3dlcjtcbiAgICB0aGlzLnNuYXBUb0dyaWQgPSBkYXRhLnNuYXBUb0dyaWQ7XG5cbiAgICAvLyBuZXZlciBndWVzcyBhZ2FpbiAoYW5kIG92ZXJ3cml0ZSksIHdoZW4gYSBjb21wb3NpdGlvbiBpcyBsb2FkZWRcbiAgICB0aGlzLnRlbXBvR3Vlc3NlZCA9IHRydWU7XG5cbiAgICB0aGlzLmdyaWRUeXBlID0gZGF0YS5ncmlkVHlwZTtcbiAgICB0aGlzLmdyaWRPZmZzZXRNaWxsaXMgPSBkYXRhLmdyaWRPZmZzZXRNaWxsaXM7XG4gICAgdGhpcy5ncmlkUmVzb2x1dGlvbiA9IGRhdGEuZ3JpZFJlc29sdXRpb247XG4gICAgdGhpcy5kdXJhdGlvbk1pbGxpcyA9IGRhdGEuZHVyYXRpb25NaWxsaXM7XG5cbiAgICBpZiAoZGF0YS5zY2VuZVBsYXliYWNrUmVnaW9ucykge1xuICAgICAgZm9yIChjb25zdCBzY2VuZVBsYXliYWNrUmVnaW9uIG9mIGRhdGEuc2NlbmVQbGF5YmFja1JlZ2lvbnMpIHtcbiAgICAgICAgdGhpcy5zY2VuZVBsYXliYWNrUmVnaW9ucy5wdXNoKG5ldyBTY2VuZVBsYXliYWNrUmVnaW9uKHNjZW5lUGxheWJhY2tSZWdpb24pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export class EffectCurveProfileChannels {
|
|
2
|
-
constructor(data) {
|
|
3
|
-
this.channels = [];
|
|
4
|
-
if (!data) {
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
this.profileUuid = data.profileUuid;
|
|
8
|
-
if (data.channels) {
|
|
9
|
-
for (const channel of Object.keys(data.channels)) {
|
|
10
|
-
this.channels.push(channel);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LWN1cnZlLXByb2ZpbGUtY2hhbm5lbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9lZmZlY3QtY3VydmUtcHJvZmlsZS1jaGFubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFBWSxJQUFVO1FBRnRCLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFHdEIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDN0I7U0FDRjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBFZmZlY3RDdXJ2ZVByb2ZpbGVDaGFubmVscyB7XG4gIHByb2ZpbGVVdWlkOiBzdHJpbmc7XG4gIGNoYW5uZWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBhbnkpIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb2ZpbGVVdWlkID0gZGF0YS5wcm9maWxlVXVpZDtcblxuICAgIGlmIChkYXRhLmNoYW5uZWxzKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoYW5uZWwgb2YgT2JqZWN0LmtleXMoZGF0YS5jaGFubmVscykpIHtcbiAgICAgICAgdGhpcy5jaGFubmVscy5wdXNoKGNoYW5uZWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|