@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
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component } from '@angular/core';
|
|
2
|
+
import { FixtureCapabilityColor, FixtureCapabilityType } from '../../../models/fixture-capability';
|
|
3
|
+
import { FixtureService } from '../../../services/fixture.service';
|
|
4
|
+
import { PresetService } from '../../../services/preset.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../services/preset.service";
|
|
7
|
+
import * as i2 from "../../../services/fixture.service";
|
|
8
|
+
import * as i3 from "@angular/forms";
|
|
9
|
+
import * as i4 from "@ngx-translate/core";
|
|
10
|
+
export class FixtureCapabilityColorComponent {
|
|
11
|
+
constructor(presetService, fixtureService, changeDetectorRef) {
|
|
12
|
+
this.presetService = presetService;
|
|
13
|
+
this.fixtureService = fixtureService;
|
|
14
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
15
|
+
this.color = '#ffffff';
|
|
16
|
+
this.active = false;
|
|
17
|
+
this.colorPickerMounted = false;
|
|
18
|
+
// avoid internal updating events
|
|
19
|
+
this.updatingColor = false;
|
|
20
|
+
this.updateSubscription = this.presetService.previewSelectionChanged.subscribe(() => {
|
|
21
|
+
this.update();
|
|
22
|
+
this.changeDetectorRef.detectChanges();
|
|
23
|
+
});
|
|
24
|
+
this.update();
|
|
25
|
+
}
|
|
26
|
+
update() {
|
|
27
|
+
let red;
|
|
28
|
+
let green;
|
|
29
|
+
let blue;
|
|
30
|
+
let capabilityValue;
|
|
31
|
+
capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Red);
|
|
32
|
+
if (capabilityValue) {
|
|
33
|
+
red = 255 * capabilityValue.valuePercentage;
|
|
34
|
+
}
|
|
35
|
+
capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Green);
|
|
36
|
+
if (capabilityValue) {
|
|
37
|
+
green = 255 * capabilityValue.valuePercentage;
|
|
38
|
+
}
|
|
39
|
+
capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Blue);
|
|
40
|
+
if (capabilityValue) {
|
|
41
|
+
blue = 255 * capabilityValue.valuePercentage;
|
|
42
|
+
}
|
|
43
|
+
if (red !== undefined && green !== undefined && blue !== undefined) {
|
|
44
|
+
this.active = true;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.active = false;
|
|
48
|
+
red = 255;
|
|
49
|
+
green = 255;
|
|
50
|
+
blue = 255;
|
|
51
|
+
}
|
|
52
|
+
this.color = this.fixtureService.rgbToHex(red, green, blue);
|
|
53
|
+
this.setPickerColor(red, green, blue);
|
|
54
|
+
}
|
|
55
|
+
setPickerColor(red, green, blue) {
|
|
56
|
+
this.updatingColor = true;
|
|
57
|
+
if (this.colorPicker) {
|
|
58
|
+
this.colorPicker.color.rgb = { r: red, g: green, b: blue };
|
|
59
|
+
}
|
|
60
|
+
this.updatingColor = false;
|
|
61
|
+
}
|
|
62
|
+
ngOnDestroy() {
|
|
63
|
+
this.updateSubscription.unsubscribe();
|
|
64
|
+
}
|
|
65
|
+
ngOnInit() {
|
|
66
|
+
this.colorPicker = new iro.ColorPicker('#color-picker-container', {
|
|
67
|
+
width: 180,
|
|
68
|
+
color: this.color,
|
|
69
|
+
borderWidth: 1,
|
|
70
|
+
borderColor: '#ffffff',
|
|
71
|
+
sliderMargin: 20,
|
|
72
|
+
});
|
|
73
|
+
this.colorPicker.on('color:change', this.changeColor.bind(this));
|
|
74
|
+
// mounted may be called, before this callback has been added. use input:start therefore
|
|
75
|
+
this.colorPicker.on('input:start', this.mount.bind(this));
|
|
76
|
+
}
|
|
77
|
+
mount() {
|
|
78
|
+
this.colorPickerMounted = true;
|
|
79
|
+
}
|
|
80
|
+
updateFixtureColor(color) {
|
|
81
|
+
if (this.presetService.selectedPreset) {
|
|
82
|
+
if (color) {
|
|
83
|
+
this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, color.rgb.r / 255, undefined, FixtureCapabilityColor.Red);
|
|
84
|
+
this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, color.rgb.g / 255, undefined, FixtureCapabilityColor.Green);
|
|
85
|
+
this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, color.rgb.b / 255, undefined, FixtureCapabilityColor.Blue);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Red);
|
|
89
|
+
this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Green);
|
|
90
|
+
this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Blue);
|
|
91
|
+
}
|
|
92
|
+
this.changeDetectorRef.detectChanges();
|
|
93
|
+
this.presetService.fixtureColorChanged.next();
|
|
94
|
+
this.presetService.previewLive();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
changeActive(active) {
|
|
98
|
+
this.active = active;
|
|
99
|
+
if (active) {
|
|
100
|
+
this.updateFixtureColor(this.colorPicker.color);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.updateFixtureColor(undefined);
|
|
104
|
+
this.setPickerColor(255, 255, 255);
|
|
105
|
+
this.color = '#ffffff';
|
|
106
|
+
}
|
|
107
|
+
this.presetService.previewLive();
|
|
108
|
+
}
|
|
109
|
+
changeColor(color) {
|
|
110
|
+
if (!this.colorPickerMounted || this.updatingColor) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.active = true;
|
|
114
|
+
this.color = color.hexString;
|
|
115
|
+
this.updateFixtureColor(color);
|
|
116
|
+
}
|
|
117
|
+
static { this.ɵfac = function FixtureCapabilityColorComponent_Factory(t) { return new (t || FixtureCapabilityColorComponent)(i0.ɵɵdirectiveInject(i1.PresetService), i0.ɵɵdirectiveInject(i2.FixtureService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
118
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FixtureCapabilityColorComponent, selectors: [["lib-app-fixture-capability-color"]], decls: 12, vars: 7, consts: [[1, "card", "border-secondary", "h-100"], [1, "card-header"], [1, "my-auto", 2, "float", "left"], [1, "form-check"], ["type", "checkbox", "id", "capabilityColorActive", 1, "form-check-input", 3, "ngModelChange", "ngModel"], ["for", "capabilityColorActive", 1, "form-check-label"], [1, "pull-right"], ["type", "text", 2, "width", "58px", "text-align", "center", "font-size", "12px", "font-family", "monospace", 3, "ngModelChange", "ngModel"], [1, "card-body", "h-100"], ["id", "color-picker-container"]], template: function FixtureCapabilityColorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
119
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "input", 4);
|
|
120
|
+
i0.ɵɵlistener("ngModelChange", function FixtureCapabilityColorComponent_Template_input_ngModelChange_4_listener($event) { return ctx.changeActive($event); });
|
|
121
|
+
i0.ɵɵelementEnd();
|
|
122
|
+
i0.ɵɵelementStart(5, "label", 5);
|
|
123
|
+
i0.ɵɵtext(6);
|
|
124
|
+
i0.ɵɵpipe(7, "translate");
|
|
125
|
+
i0.ɵɵelementEnd()()();
|
|
126
|
+
i0.ɵɵelementStart(8, "div", 6)(9, "input", 7);
|
|
127
|
+
i0.ɵɵtwoWayListener("ngModelChange", function FixtureCapabilityColorComponent_Template_input_ngModelChange_9_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.color, $event) || (ctx.color = $event); return $event; });
|
|
128
|
+
i0.ɵɵelementEnd()()();
|
|
129
|
+
i0.ɵɵelementStart(10, "div", 8);
|
|
130
|
+
i0.ɵɵelement(11, "div", 9);
|
|
131
|
+
i0.ɵɵelementEnd()();
|
|
132
|
+
} if (rf & 2) {
|
|
133
|
+
i0.ɵɵclassProp("capability-deactivated", !ctx.active);
|
|
134
|
+
i0.ɵɵadvance(4);
|
|
135
|
+
i0.ɵɵproperty("ngModel", ctx.active);
|
|
136
|
+
i0.ɵɵadvance(2);
|
|
137
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(7, 5, "designer.fixture.capability-color"));
|
|
138
|
+
i0.ɵɵadvance(3);
|
|
139
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx.color);
|
|
140
|
+
} }, dependencies: [i3.DefaultValueAccessor, i3.CheckboxControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.TranslatePipe] }); }
|
|
141
|
+
}
|
|
142
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FixtureCapabilityColorComponent, [{
|
|
143
|
+
type: Component,
|
|
144
|
+
args: [{ selector: 'lib-app-fixture-capability-color', template: "<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" }]
|
|
145
|
+
}], () => [{ type: i1.PresetService }, { type: i2.FixtureService }, { type: i0.ChangeDetectorRef }], null); })();
|
|
146
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixtureCapabilityColorComponent, { className: "FixtureCapabilityColorComponent" }); })();
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvZml4dHVyZS9maXh0dXJlLWNhcGFiaWxpdHkvZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yL2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS1jYXBhYmlsaXR5L2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci9maXh0dXJlLWNhcGFiaWxpdHktY29sb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7O0FBU2pFLE1BQU0sT0FBTywrQkFBK0I7SUFXMUMsWUFBb0IsYUFBNEIsRUFBVSxjQUE4QixFQUFVLGlCQUFvQztRQUFsSCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFWdEksVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUVsQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ1AsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLGlDQUFpQztRQUN6QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUs1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFB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QVMsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Z0dBL0pVLCtCQUErQjtvRUFBL0IsK0JBQStCO1lDVnBDLEFBREYsQUFERixBQURGLEFBREYsOEJBQWtGLGFBQ3ZELGFBQ2tCLGFBQ2YsZUFPcEI7WUFEQSxpSUFBaUIsd0JBQW9CLElBQUM7WUFMeEMsaUJBTUU7WUFDRixnQ0FBNEQ7WUFBQSxZQUFxRDs7WUFFckgsQUFERSxBQURtSCxpQkFBUSxFQUNySCxFQUNGO1lBRUosQUFERiw4QkFBd0IsZUFDb0c7WUFBdkcsbU5BQW1CO1lBRTFDLEFBREUsQUFERSxpQkFBMEgsRUFDdEgsRUFDRjtZQUVOLCtCQUE2QjtZQUMzQiwwQkFBdUM7WUFFM0MsQUFERSxpQkFBTSxFQUNGOztZQXRCbUMscURBQXdDO1lBUXZFLGVBQWtCO1lBQWxCLG9DQUFrQjtZQUd3QyxlQUFxRDtZQUFyRCwrRUFBcUQ7WUFJaEcsZUFBbUI7WUFBbkIseUNBQW1COzs7aUZERC9CLCtCQUErQjtjQUwzQyxTQUFTOzJCQUNFLGtDQUFrQzs7a0ZBSWpDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpeHR1cmVDYXBhYmlsaXR5Q29sb3IsIEZpeHR1cmVDYXBhYmlsaXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maXh0dXJlLWNhcGFiaWxpdHknO1xuaW1wb3J0IHsgRml4dHVyZUNhcGFiaWxpdHlWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maXh0dXJlLWNhcGFiaWxpdHktdmFsdWUnO1xuaW1wb3J0IHsgRml4dHVyZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maXh0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldC5zZXJ2aWNlJztcblxuZGVjbGFyZSB2YXIgaXJvOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hcHAtZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZpeHR1cmVDYXBhYmlsaXR5Q29sb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNvbG9yID0gJyNmZmZmZmYnO1xuICBjb2xvclBpY2tlcjogYW55O1xuICBhY3RpdmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjb2xvclBpY2tlck1vdW50ZWQgPSBmYWxzZTtcblxuICAvLyBhdm9pZCBpbnRlcm5hbCB1cGRhdGluZyBldmVudHNcbiAgcHJpdmF0ZSB1cGRhdGluZ0NvbG9yID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByZXNldFNlcnZpY2U6IFByZXNldFNlcnZpY2UsIHByaXZhdGUgZml4dHVyZVNlcnZpY2U6IEZpeHR1cmVTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMudXBkYXRlU3Vic2NyaXB0aW9uID0gdGhpcy5wcmVzZXRTZXJ2aWNlLnByZXZpZXdTZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIGxldCByZWQ6IG51bWJlcjtcbiAgICBsZXQgZ3JlZW46IG51bWJlcjtcbiAgICBsZXQgYmx1ZTogbnVtYmVyO1xuICAgIGxldCBjYXBhYmlsaXR5VmFsdWU6IEZpeHR1cmVDYXBhYmlsaXR5VmFsdWU7XG4gICAgY2FwYWJpbGl0eVZhbHVlID0gdGhpcy5wcmVzZXRTZXJ2aWNlLmdldENhcGFiaWxpdHlWYWx1ZShcbiAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCxcbiAgICAgIEZpeHR1cmVDYXBhYmlsaXR5VHlwZS5Db2xvckludGVuc2l0eSxcbiAgICAgIEZpeHR1cmVDYXBhYmlsaXR5Q29sb3IuUmVkXG4gICAgKTtcbiAgICBpZiAoY2FwYWJpbGl0eVZhbHVlKSB7XG4gICAgICByZWQgPSAyNTUgKiBjYXBhYmlsaXR5VmFsdWUudmFsdWVQZXJjZW50YWdlO1xuICAgIH1cbiAgICBjYXBhYmlsaXR5VmFsdWUgPSB0aGlzLnByZXNldFNlcnZpY2UuZ2V0Q2FwYWJpbGl0eVZhbHVlKFxuICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LFxuICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5LFxuICAgICAgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5HcmVlblxuICAgICk7XG4gICAgaWYgKGNhcGFiaWxpdHlWYWx1ZSkge1xuICAgICAgZ3JlZW4gPSAyNTUgKiBjYXBhYmlsaXR5VmFsdWUudmFsdWVQZXJjZW50YWdlO1xuICAgIH1cbiAgICBjYXBhYmlsaXR5VmFsdWUgPSB0aGlzLnByZXNldFNlcnZpY2UuZ2V0Q2FwYWJpbGl0eVZhbHVlKFxuICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LFxuICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5LFxuICAgICAgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5CbHVlXG4gICAgKTtcbiAgICBpZiAoY2FwYWJpbGl0eVZhbHVlKSB7XG4gICAgICBibHVlID0gMjU1ICogY2FwYWJpbGl0eVZhbHVlLnZhbHVlUGVyY2VudGFnZTtcbiAgICB9XG4gICAgaWYgKHJlZCAhPT0gdW5kZWZpbmVkICYmIGdyZWVuICE9PSB1bmRlZmluZWQgJiYgYmx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgICByZWQgPSAyNTU7XG4gICAgICBncmVlbiA9IDI1NTtcbiAgICAgIGJsdWUgPSAyNTU7XG4gICAgfVxuICAgIHRoaXMuY29sb3IgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLnJnYlRvSGV4KHJlZCwgZ3JlZW4sIGJsdWUpO1xuICAgIHRoaXMuc2V0UGlja2VyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBpY2tlckNvbG9yKHJlZDogbnVtYmVyLCBncmVlbjogbnVtYmVyLCBibHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnVwZGF0aW5nQ29sb3IgPSB0cnVlO1xuICAgIGlmICh0aGlzLmNvbG9yUGlja2VyKSB7XG4gICAgICB0aGlzLmNvbG9yUGlja2VyLmNvbG9yLnJnYiA9IHsgcjogcmVkLCBnOiBncmVlbiwgYjogYmx1ZSB9O1xuICAgIH1cbiAgICB0aGlzLnVwZGF0aW5nQ29sb3IgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudXBkYXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbG9yUGlja2VyID0gbmV3IGlyby5Db2xvclBpY2tlcignI2NvbG9yLXBpY2tlci1jb250YWluZXInLCB7XG4gICAgICB3aWR0aDogMTgwLFxuICAgICAgY29sb3I6IHRoaXMuY29sb3IsXG4gICAgICBib3JkZXJXaWR0aDogMSxcbiAgICAgIGJvcmRlckNvbG9yOiAnI2ZmZmZmZicsXG4gICAgICBzbGlkZXJNYXJnaW46IDIwLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb2xvclBpY2tlci5vbignY29sb3I6Y2hhbmdlJywgdGhpcy5jaGFuZ2VDb2xvci5iaW5kKHRoaXMpKTtcblxuICAgIC8vIG1vdW50ZWQgbWF5IGJlIGNhbGxlZCwgYmVmb3JlIHRoaXMgY2FsbGJhY2sgaGFzIGJlZW4gYWRkZWQuIHVzZSBpbnB1dDpzdGFydCB0aGVyZWZvcmVcbiAgICB0aGlzLmNvbG9yUGlja2VyLm9uKCdpbnB1dDpzdGFydCcsIHRoaXMubW91bnQuYmluZCh0aGlzKSk7XG4gIH1cblxuICBtb3VudCgpIHtcbiAgICB0aGlzLmNvbG9yUGlja2VyTW91bnRlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpeHR1cmVDb2xvcihjb2xvcjogYW55KSB7XG4gICAgaWYgKHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCkge1xuICAgICAgaWYgKGNvbG9yKSB7XG4gICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZXRDYXBhYmlsaXR5VmFsdWUoXG4gICAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LFxuICAgICAgICAgIEZpeHR1cmVDYXBhYmlsaXR5VHlwZS5Db2xvckludGVuc2l0eSxcbiAgICAgICAgICBjb2xvci5yZ2IuciAvIDI1NSxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5SZWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNldENhcGFiaWxpdHlWYWx1ZShcbiAgICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5LFxuICAgICAgICAgIGNvbG9yLnJnYi5nIC8gMjU1LFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLkdyZWVuXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZXRDYXBhYmlsaXR5VmFsdWUoXG4gICAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LFxuICAgICAgICAgIEZpeHR1cmVDYXBhYmlsaXR5VHlwZS5Db2xvckludGVuc2l0eSxcbiAgICAgICAgICBjb2xvci5yZ2IuYiAvIDI1NSxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5CbHVlXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByZXNldFNlcnZpY2UuZGVsZXRlQ2FwYWJpbGl0eVZhbHVlKFxuICAgICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCxcbiAgICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuQ29sb3JJbnRlbnNpdHksXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5SZWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLmRlbGV0ZUNhcGFiaWxpdHlWYWx1ZShcbiAgICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5LFxuICAgICAgICAgIEZpeHR1cmVDYXBhYmlsaXR5Q29sb3IuR3JlZW5cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLmRlbGV0ZUNhcGFiaWxpdHlWYWx1ZShcbiAgICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5LFxuICAgICAgICAgIEZpeHR1cmVDYXBhYmlsaXR5Q29sb3IuQmx1ZVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnByZXNldFNlcnZpY2UuZml4dHVyZUNvbG9yQ2hhbmdlZC5uZXh0KCk7XG4gICAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VBY3RpdmUoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5hY3RpdmUgPSBhY3RpdmU7XG5cbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpeHR1cmVDb2xvcih0aGlzLmNvbG9yUGlja2VyLmNvbG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVGaXh0dXJlQ29sb3IodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2V0UGlja2VyQ29sb3IoMjU1LCAyNTUsIDI1NSk7XG4gICAgICB0aGlzLmNvbG9yID0gJyNmZmZmZmYnO1xuICAgIH1cbiAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcbiAgfVxuXG4gIGNoYW5nZUNvbG9yKGNvbG9yOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuY29sb3JQaWNrZXJNb3VudGVkIHx8IHRoaXMudXBkYXRpbmdDb2xvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLmNvbG9yID0gY29sb3IuaGV4U3RyaW5nO1xuICAgIHRoaXMudXBkYXRlRml4dHVyZUNvbG9yKGNvbG9yKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLXNlY29uZGFyeSBoLTEwMFwiIFtjbGFzcy5jYXBhYmlsaXR5LWRlYWN0aXZhdGVkXT1cIiFhY3RpdmVcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIiBzdHlsZT1cImZsb2F0OiBsZWZ0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXG4gICAgICAgICAgaWQ9XCJjYXBhYmlsaXR5Q29sb3JBY3RpdmVcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cImFjdGl2ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQWN0aXZlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiY2FwYWJpbGl0eUNvbG9yQWN0aXZlXCI+e3sgJ2Rlc2lnbmVyLmZpeHR1cmUuY2FwYWJpbGl0eS1jb2xvcicgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHRcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiY29sb3JcIiBzdHlsZT1cIndpZHRoOiA1OHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZVwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgaC0xMDBcIj5cbiAgICA8ZGl2IGlkPVwiY29sb3ItcGlja2VyLWNvbnRhaW5lclwiPjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
2
|
+
import { CachedFixtureChannel } from '../../../models/cached-fixture-channel';
|
|
3
|
+
import { FixtureCapabilityType } from '../../../models/fixture-capability';
|
|
4
|
+
import { FixtureProfile } from '../../../models/fixture-profile';
|
|
5
|
+
import { FixtureService } from '../../../services/fixture.service';
|
|
6
|
+
import { PresetService } from '../../../services/preset.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../../services/preset.service";
|
|
9
|
+
import * as i2 from "../../../services/fixture.service";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "@angular/forms";
|
|
12
|
+
import * as i5 from "@ngx-translate/core";
|
|
13
|
+
function FixtureCapabilityColorWheelComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
+
i0.ɵɵelementStart(0, "div");
|
|
15
|
+
i0.ɵɵtext(1);
|
|
16
|
+
i0.ɵɵelementEnd();
|
|
17
|
+
} if (rf & 2) {
|
|
18
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
19
|
+
i0.ɵɵadvance();
|
|
20
|
+
i0.ɵɵtextInterpolate2("", ctx_r0._fixtureProfile.name, " - ", ctx_r0._channel.name, "");
|
|
21
|
+
} }
|
|
22
|
+
function FixtureCapabilityColorWheelComponent_div_10_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
24
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
25
|
+
i0.ɵɵlistener("click", function FixtureCapabilityColorWheelComponent_div_10_div_1_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r4); const slot_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.selectSlotNumber(slot_r3.capability.slotNumber)); });
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
} }
|
|
28
|
+
function FixtureCapabilityColorWheelComponent_div_10_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
30
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
31
|
+
i0.ɵɵlistener("click", function FixtureCapabilityColorWheelComponent_div_10_div_1_Template_div_click_0_listener() { const slot_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.selectSlotNumber(slot_r3.capability.slotNumber)); });
|
|
32
|
+
i0.ɵɵtemplate(1, FixtureCapabilityColorWheelComponent_div_10_div_1_div_1_Template, 1, 0, "div", 12);
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const slot_r3 = ctx.$implicit;
|
|
36
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
37
|
+
i0.ɵɵclassProp("color-selected", ctx_r0.slotCapabilityIsSelected(slot_r3.capability.slotNumber));
|
|
38
|
+
i0.ɵɵproperty("ngStyle", ctx_r0.getCapabilityColorStyle(slot_r3));
|
|
39
|
+
i0.ɵɵadvance();
|
|
40
|
+
i0.ɵɵproperty("ngIf", ctx_r0.slotCapabilityIsSelected(slot_r3.capability.slotNumber));
|
|
41
|
+
} }
|
|
42
|
+
function FixtureCapabilityColorWheelComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelementStart(0, "div", 9);
|
|
44
|
+
i0.ɵɵtemplate(1, FixtureCapabilityColorWheelComponent_div_10_div_1_Template, 2, 4, "div", 10);
|
|
45
|
+
i0.ɵɵelementEnd();
|
|
46
|
+
} if (rf & 2) {
|
|
47
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
48
|
+
i0.ɵɵadvance();
|
|
49
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.slotCapabilities);
|
|
50
|
+
} }
|
|
51
|
+
export class FixtureCapabilityColorWheelComponent {
|
|
52
|
+
set profile(value) {
|
|
53
|
+
this._fixtureProfile = value;
|
|
54
|
+
this.update();
|
|
55
|
+
}
|
|
56
|
+
set channel(value) {
|
|
57
|
+
this._channel = value;
|
|
58
|
+
this.update();
|
|
59
|
+
}
|
|
60
|
+
constructor(presetService, changeDetectorRef, fixtureService) {
|
|
61
|
+
this.presetService = presetService;
|
|
62
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
63
|
+
this.fixtureService = fixtureService;
|
|
64
|
+
this.showContainer = false;
|
|
65
|
+
}
|
|
66
|
+
ngOnInit() {
|
|
67
|
+
this.colorChangeSubscription = this.presetService.fixtureColorChanged.subscribe(() => {
|
|
68
|
+
this.changeDetectorRef.detectChanges();
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
ngOnDestroy() {
|
|
72
|
+
this.colorChangeSubscription.unsubscribe();
|
|
73
|
+
}
|
|
74
|
+
update() {
|
|
75
|
+
if (this._fixtureProfile && this._channel) {
|
|
76
|
+
this.wheelName = undefined;
|
|
77
|
+
this.slotCapabilities = [];
|
|
78
|
+
// get the wheel name
|
|
79
|
+
for (const capability of this._channel.capabilities) {
|
|
80
|
+
if (capability.wheel) {
|
|
81
|
+
this.wheelName = capability.wheelName;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (!this.wheelName) {
|
|
86
|
+
this.wheelName = this._channel.name;
|
|
87
|
+
}
|
|
88
|
+
this.wheel = this.fixtureService.getWheelByName(this._fixtureProfile, this.wheelName);
|
|
89
|
+
// calculate all available slots
|
|
90
|
+
for (const capability of this._channel.capabilities) {
|
|
91
|
+
if (capability.capability.type === FixtureCapabilityType.WheelSlot) {
|
|
92
|
+
this.slotCapabilities.push(capability);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
this.changeDetectorRef.detectChanges();
|
|
97
|
+
}
|
|
98
|
+
getCapabilityColorStyle(capability) {
|
|
99
|
+
let property = 'background-color';
|
|
100
|
+
let value = 'black';
|
|
101
|
+
let colors = [];
|
|
102
|
+
if (capability.wheelSlots) {
|
|
103
|
+
for (const slot of capability.wheelSlots) {
|
|
104
|
+
// calculate the color based on the color wheel slot
|
|
105
|
+
if (slot.colors.length > 0) {
|
|
106
|
+
colors = colors.concat(slot.colors);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (colors.length > 1) {
|
|
111
|
+
// mixed colors -> gradient
|
|
112
|
+
let colorString;
|
|
113
|
+
for (const color of colors) {
|
|
114
|
+
if (colorString) {
|
|
115
|
+
colorString += ', ';
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
colorString = '';
|
|
119
|
+
}
|
|
120
|
+
colorString += color;
|
|
121
|
+
}
|
|
122
|
+
property = 'background-image';
|
|
123
|
+
value = 'linear-gradient(to bottom right, ' + colorString + ')';
|
|
124
|
+
}
|
|
125
|
+
else if (colors.length === 1) {
|
|
126
|
+
value = colors[0];
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
value = '#fff';
|
|
130
|
+
}
|
|
131
|
+
const style = {};
|
|
132
|
+
style[property] = value;
|
|
133
|
+
return style;
|
|
134
|
+
}
|
|
135
|
+
getCurrentSlotNumber() {
|
|
136
|
+
const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.WheelSlot, undefined, this.wheelName, this._fixtureProfile.uuid);
|
|
137
|
+
if (capabilityValue) {
|
|
138
|
+
return capabilityValue.slotNumber;
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
slotCapabilityIsSelected(slotNumber) {
|
|
143
|
+
const selectedSlotNumber = this.getCurrentSlotNumber();
|
|
144
|
+
if (selectedSlotNumber >= 0) {
|
|
145
|
+
// a slot is selected
|
|
146
|
+
return selectedSlotNumber === slotNumber;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// no slot is selected and the capability is inactive
|
|
150
|
+
// -> show the approx. color, if a color or a similar slot from a different wheel has been selected
|
|
151
|
+
const approximatedCapability = this.presetService.getApproximatedColorWheelCapability(this.presetService.selectedPreset, this._channel);
|
|
152
|
+
if (approximatedCapability) {
|
|
153
|
+
return slotNumber === approximatedCapability.capability.slotNumber;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
changeActive(active) {
|
|
161
|
+
if (active) {
|
|
162
|
+
this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.WheelSlot, undefined, 1, undefined, this.wheelName, this._fixtureProfile.uuid);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.WheelSlot, undefined, this.wheelName, this._fixtureProfile.uuid);
|
|
166
|
+
}
|
|
167
|
+
this.presetService.previewLive();
|
|
168
|
+
}
|
|
169
|
+
selectSlotNumber(slotNumber) {
|
|
170
|
+
this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.WheelSlot, undefined, slotNumber, undefined, this.wheelName, this._fixtureProfile.uuid);
|
|
171
|
+
this.presetService.previewLive();
|
|
172
|
+
}
|
|
173
|
+
static { this.ɵfac = function FixtureCapabilityColorWheelComponent_Factory(t) { return new (t || FixtureCapabilityColorWheelComponent)(i0.ɵɵdirectiveInject(i1.PresetService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.FixtureService)); }; }
|
|
174
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FixtureCapabilityColorWheelComponent, selectors: [["lib-app-fixture-capability-color-wheel"]], inputs: { profile: "profile", channel: "channel", wheelIndex: "wheelIndex", showContainer: "showContainer" }, decls: 11, vars: 12, consts: [[1, "card", "border-secondary", "h-100", 2, "min-height", "200px"], [1, "card-header"], [1, "my-auto"], [1, "form-check"], ["type", "checkbox", 1, "form-check-input", 3, "ngModelChange", "id", "ngModel"], [1, "form-check-label", 3, "for"], [1, "card-body", "h-100"], [4, "ngIf"], ["class", "d-flex", "style", "max-width: 240px; flex-wrap: wrap", 4, "ngIf"], [1, "d-flex", 2, "max-width", "240px", "flex-wrap", "wrap"], ["class", "m-1 color", 3, "color-selected", "ngStyle", "click", 4, "ngFor", "ngForOf"], [1, "m-1", "color", 3, "click", "ngStyle"], ["class", "color-selected-inner", 3, "click", 4, "ngIf"], [1, "color-selected-inner", 3, "click"]], template: function FixtureCapabilityColorWheelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
175
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "input", 4);
|
|
176
|
+
i0.ɵɵlistener("ngModelChange", function FixtureCapabilityColorWheelComponent_Template_input_ngModelChange_4_listener($event) { return ctx.changeActive($event); });
|
|
177
|
+
i0.ɵɵelementEnd();
|
|
178
|
+
i0.ɵɵelementStart(5, "label", 5);
|
|
179
|
+
i0.ɵɵtext(6);
|
|
180
|
+
i0.ɵɵpipe(7, "translate");
|
|
181
|
+
i0.ɵɵelementEnd()()()();
|
|
182
|
+
i0.ɵɵelementStart(8, "div", 6);
|
|
183
|
+
i0.ɵɵtemplate(9, FixtureCapabilityColorWheelComponent_div_9_Template, 2, 2, "div", 7)(10, FixtureCapabilityColorWheelComponent_div_10_Template, 2, 1, "div", 8);
|
|
184
|
+
i0.ɵɵelementEnd()();
|
|
185
|
+
} if (rf & 2) {
|
|
186
|
+
i0.ɵɵclassProp("capability-deactivated", ctx.getCurrentSlotNumber() == undefined);
|
|
187
|
+
i0.ɵɵadvance(4);
|
|
188
|
+
i0.ɵɵpropertyInterpolate1("id", "capabilityColorWheel", ctx.wheelIndex, "Active");
|
|
189
|
+
i0.ɵɵproperty("ngModel", ctx.getCurrentSlotNumber() != undefined);
|
|
190
|
+
i0.ɵɵadvance();
|
|
191
|
+
i0.ɵɵpropertyInterpolate1("for", "capabilityColorWheel", ctx.wheelIndex, "Active");
|
|
192
|
+
i0.ɵɵadvance();
|
|
193
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 10, "designer.fixture.capability-color"), " ");
|
|
194
|
+
i0.ɵɵadvance(3);
|
|
195
|
+
i0.ɵɵproperty("ngIf", ctx.showContainer);
|
|
196
|
+
i0.ɵɵadvance();
|
|
197
|
+
i0.ɵɵproperty("ngIf", ctx.wheel);
|
|
198
|
+
} }, dependencies: [i3.NgForOf, i3.NgIf, i3.NgStyle, i4.CheckboxControlValueAccessor, i4.NgControlStatus, i4.NgModel, i5.TranslatePipe], styles: [".color[_ngcontent-%COMP%]{box-sizing:border-box;width:50px;height:50px;border:solid 1px #ced4da;cursor:pointer}.color-selected[_ngcontent-%COMP%]{border-width:3px;border-color:#fff}.color-selected-inner[_ngcontent-%COMP%]{border:solid 1px black;height:100%;width:100%}"] }); }
|
|
199
|
+
}
|
|
200
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FixtureCapabilityColorWheelComponent, [{
|
|
201
|
+
type: Component,
|
|
202
|
+
args: [{ selector: 'lib-app-fixture-capability-color-wheel', template: "<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", styles: [".color{box-sizing:border-box;width:50px;height:50px;border:solid 1px #ced4da;cursor:pointer}.color-selected{border-width:3px;border-color:#fff}.color-selected-inner{border:solid 1px black;height:100%;width:100%}\n"] }]
|
|
203
|
+
}], () => [{ type: i1.PresetService }, { type: i0.ChangeDetectorRef }, { type: i2.FixtureService }], { profile: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], channel: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], wheelIndex: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], showContainer: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}] }); })();
|
|
212
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixtureCapabilityColorWheelComponent, { className: "FixtureCapabilityColorWheelComponent" }); })();
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yLXdoZWVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvZml4dHVyZS9maXh0dXJlLWNhcGFiaWxpdHkvZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yLXdoZWVsL2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci13aGVlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS1jYXBhYmlsaXR5L2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci13aGVlbC9maXh0dXJlLWNhcGFiaWxpdHktY29sb3Itd2hlZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBR3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7OztJQ1c3RCwyQkFBMkI7SUFBQSxZQUFnRDtJQUFBLGlCQUFNOzs7SUFBdEQsY0FBZ0Q7SUFBaEQsdUZBQWdEOzs7O0lBVXZFLCtCQUlDO0lBRkMseVBBQVMsc0RBQTRDLEtBQUM7SUFFdkQsaUJBQU07Ozs7SUFYVCwrQkFNQztJQUpDLCtOQUFTLHNEQUE0QyxLQUFDO0lBS3RELG1HQUlDO0lBQ0gsaUJBQU07Ozs7SUFSSixnR0FBNkU7SUFD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O2tGQXhCSyxvQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FjaGVkRml4dHVyZUNhcGFiaWxpdHkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2FjaGVkLWZpeHR1cmUtY2FwYWJpbGl0eSc7XG5pbXBvcnQgeyBDYWNoZWRGaXh0dXJlQ2hhbm5lbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jYWNoZWQtZml4dHVyZS1jaGFubmVsJztcbmltcG9ydCB7IEZpeHR1cmVDYXBhYmlsaXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maXh0dXJlLWNhcGFiaWxpdHknO1xuaW1wb3J0IHsgRml4dHVyZVByb2ZpbGUgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZml4dHVyZS1wcm9maWxlJztcbmltcG9ydCB7IEZpeHR1cmVXaGVlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maXh0dXJlLXdoZWVsJztcbmltcG9ydCB7IEZpeHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZml4dHVyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hcHAtZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yLXdoZWVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci13aGVlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci13aGVlbC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZpeHR1cmVDYXBhYmlsaXR5Q29sb3JXaGVlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgX2ZpeHR1cmVQcm9maWxlOiBGaXh0dXJlUHJvZmlsZTtcbiAgX2NoYW5uZWw6IENhY2hlZEZpeHR1cmVDaGFubmVsO1xuICB3aGVlbE5hbWU6IHN0cmluZztcbiAgd2hlZWw6IEZpeHR1cmVXaGVlbDtcbiAgc2xvdENhcGFiaWxpdGllczogQ2FjaGVkRml4dHVyZUNhcGFiaWxpdHlbXTtcblxuICBwcml2YXRlIGNvbG9yQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgQElucHV0KClcbiAgc2V0IHByb2ZpbGUodmFsdWU6IEZpeHR1cmVQcm9maWxlKSB7XG4gICAgdGhpcy5fZml4dHVyZVByb2ZpbGUgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGNoYW5uZWwodmFsdWU6IENhY2hlZEZpeHR1cmVDaGFubmVsKSB7XG4gICAgdGhpcy5fY2hhbm5lbCA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICB3aGVlbEluZGV4OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgc2hvd0NvbnRhaW5lciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwcmVzZXRTZXJ2aWNlOiBQcmVzZXRTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBmaXh0dXJlU2VydmljZTogRml4dHVyZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb2xvckNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJlc2V0U2VydmljZS5maXh0dXJlQ29sb3JDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY29sb3JDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIGlmICh0aGlzLl9maXh0dXJlUHJvZmlsZSAmJiB0aGlzLl9jaGFubmVsKSB7XG4gICAgICB0aGlzLndoZWVsTmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2xvdENhcGFiaWxpdGllcyA9IFtdO1xuXG4gICAgICAvLyBnZXQgdGhlIHdoZWVsIG5hbWVcbiAgICAgIGZvciAoY29uc3QgY2FwYWJpbGl0eSBvZiB0aGlzLl9jaGFubmVsLmNhcGFiaWxpdGllcykge1xuICAgICAgICBpZiAoY2FwYWJpbGl0eS53aGVlbCkge1xuICAgICAgICAgIHRoaXMud2hlZWxOYW1lID0gY2FwYWJpbGl0eS53aGVlbE5hbWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy53aGVlbE5hbWUpIHtcbiAgICAgICAgdGhpcy53aGVlbE5hbWUgPSB0aGlzLl9jaGFubmVsLm5hbWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2hlZWwgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldFdoZWVsQnlOYW1lKHRoaXMuX2ZpeHR1cmVQcm9maWxlLCB0aGlzLndoZWVsTmFtZSk7XG5cbiAgICAgIC8vIGNhbGN1bGF0ZSBhbGwgYXZhaWxhYmxlIHNsb3RzXG4gICAgICBmb3IgKGNvbnN0IGNhcGFiaWxpdHkgb2YgdGhpcy5fY2hhbm5lbC5jYXBhYmlsaXRpZXMpIHtcbiAgICAgICAgaWYgKGNhcGFiaWxpdHkuY2FwYWJpbGl0eS50eXBlID09PSBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuV2hlZWxTbG90KSB7XG4gICAgICAgICAgdGhpcy5zbG90Q2FwYWJpbGl0aWVzLnB1c2goY2FwYWJpbGl0eSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldENhcGFiaWxpdHlDb2xvclN0eWxlKGNhcGFiaWxpdHk6IENhY2hlZEZpeHR1cmVDYXBhYmlsaXR5KTogYW55IHtcbiAgICBsZXQgcHJvcGVydHkgPSAnYmFja2dyb3VuZC1jb2xvcic7XG4gICAgbGV0IHZhbHVlID0gJ2JsYWNrJztcbiAgICBsZXQgY29sb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGNhcGFiaWxpdHkud2hlZWxTbG90cykge1xuICAgICAgZm9yIChjb25zdCBzbG90IG9mIGNhcGFiaWxpdHkud2hlZWxTbG90cykge1xuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIGNvbG9yIGJhc2VkIG9uIHRoZSBjb2xvciB3aGVlbCBzbG90XG4gICAgICAgIGlmIChzbG90LmNvbG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29sb3JzID0gY29sb3JzLmNvbmNhdChzbG90LmNvbG9ycyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29sb3JzLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIG1peGVkIGNvbG9ycyAtPiBncmFkaWVudFxuICAgICAgbGV0IGNvbG9yU3RyaW5nOiBzdHJpbmc7XG4gICAgICBmb3IgKGNvbnN0IGNvbG9yIG9mIGNvbG9ycykge1xuICAgICAgICBpZiAoY29sb3JTdHJpbmcpIHtcbiAgICAgICAgICBjb2xvclN0cmluZyArPSAnLCAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbG9yU3RyaW5nID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29sb3JTdHJpbmcgKz0gY29sb3I7XG4gICAgICB9XG4gICAgICBwcm9wZXJ0eSA9ICdiYWNrZ3JvdW5kLWltYWdlJztcbiAgICAgIHZhbHVlID0gJ2xpbmVhci1ncmFkaWVudCh0byBib3R0b20gcmlnaHQsICcgKyBjb2xvclN0cmluZyArICcpJztcbiAgICB9IGVsc2UgaWYgKGNvbG9ycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhbHVlID0gY29sb3JzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9ICcjZmZmJztcbiAgICB9XG5cbiAgICBjb25zdCBzdHlsZSA9IHt9O1xuICAgIHN0eWxlW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfVxuXG4gIGdldEN1cnJlbnRTbG90TnVtYmVyKCk6IG51bWJlciB7XG4gICAgY29uc3QgY2FwYWJpbGl0eVZhbHVlID0gdGhpcy5wcmVzZXRTZXJ2aWNlLmdldENhcGFiaWxpdHlWYWx1ZShcbiAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCxcbiAgICAgIEZpeHR1cmVDYXBhYmlsaXR5VHlwZS5XaGVlbFNsb3QsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLndoZWVsTmFtZSxcbiAgICAgIHRoaXMuX2ZpeHR1cmVQcm9maWxlLnV1aWRcbiAgICApO1xuXG4gICAgaWYgKGNhcGFiaWxpdHlWYWx1ZSkge1xuICAgICAgcmV0dXJuIGNhcGFiaWxpdHlWYWx1ZS5zbG90TnVtYmVyO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc2xvdENhcGFiaWxpdHlJc1NlbGVjdGVkKHNsb3ROdW1iZXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNlbGVjdGVkU2xvdE51bWJlciA9IHRoaXMuZ2V0Q3VycmVudFNsb3ROdW1iZXIoKTtcblxuICAgIGlmIChzZWxlY3RlZFNsb3ROdW1iZXIgPj0gMCkge1xuICAgICAgLy8gYSBzbG90IGlzIHNlbGVjdGVkXG4gICAgICByZXR1cm4gc2VsZWN0ZWRTbG90TnVtYmVyID09PSBzbG90TnVtYmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBubyBzbG90IGlzIHNlbGVjdGVkIGFuZCB0aGUgY2FwYWJpbGl0eSBpcyBpbmFjdGl2ZVxuICAgICAgLy8gLT4gc2hvdyB0aGUgYXBwcm94LiBjb2xvciwgaWYgYSBjb2xvciBvciBhIHNpbWlsYXIgc2xvdCBmcm9tIGEgZGlmZmVyZW50IHdoZWVsIGhhcyBiZWVuIHNlbGVjdGVkXG4gICAgICBjb25zdCBhcHByb3hpbWF0ZWRDYXBhYmlsaXR5ID0gdGhpcy5wcmVzZXRTZXJ2aWNlLmdldEFwcHJveGltYXRlZENvbG9yV2hlZWxDYXBhYmlsaXR5KFxuICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsXG4gICAgICAgIHRoaXMuX2NoYW5uZWxcbiAgICAgICk7XG5cbiAgICAgIGlmIChhcHByb3hpbWF0ZWRDYXBhYmlsaXR5KSB7XG4gICAgICAgIHJldHVybiBzbG90TnVtYmVyID09PSBhcHByb3hpbWF0ZWRDYXBhYmlsaXR5LmNhcGFiaWxpdHkuc2xvdE51bWJlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VBY3RpdmUoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgaWYgKGFjdGl2ZSkge1xuICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNldENhcGFiaWxpdHlWYWx1ZShcbiAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LFxuICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuV2hlZWxTbG90LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIDEsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdGhpcy53aGVlbE5hbWUsXG4gICAgICAgIHRoaXMuX2ZpeHR1cmVQcm9maWxlLnV1aWRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJlc2V0U2VydmljZS5kZWxldGVDYXBhYmlsaXR5VmFsdWUoXG4gICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCxcbiAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLldoZWVsU2xvdCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB0aGlzLndoZWVsTmFtZSxcbiAgICAgICAgdGhpcy5fZml4dHVyZVByb2ZpbGUudXVpZFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcbiAgfVxuXG4gIHNlbGVjdFNsb3ROdW1iZXIoc2xvdE51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNldENhcGFiaWxpdHlWYWx1ZShcbiAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCxcbiAgICAgIEZpeHR1cmVDYXBhYmlsaXR5VHlwZS5XaGVlbFNsb3QsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBzbG90TnVtYmVyLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy53aGVlbE5hbWUsXG4gICAgICB0aGlzLl9maXh0dXJlUHJvZmlsZS51dWlkXG4gICAgKTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLXNlY29uZGFyeSBoLTEwMFwiIFtjbGFzcy5jYXBhYmlsaXR5LWRlYWN0aXZhdGVkXT1cImdldEN1cnJlbnRTbG90TnVtYmVyKCkgPT0gdW5kZWZpbmVkXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiAyMDBweFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgIGlkPVwiY2FwYWJpbGl0eUNvbG9yV2hlZWx7eyB3aGVlbEluZGV4IH19QWN0aXZlXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJnZXRDdXJyZW50U2xvdE51bWJlcigpICE9IHVuZGVmaW5lZFwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQWN0aXZlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiY2FwYWJpbGl0eUNvbG9yV2hlZWx7eyB3aGVlbEluZGV4IH19QWN0aXZlXCI+XG4gICAgICAgICAge3sgJ2Rlc2lnbmVyLmZpeHR1cmUuY2FwYWJpbGl0eS1jb2xvcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGgtMTAwXCI+XG4gICAgPGRpdiAqbmdJZj1cInNob3dDb250YWluZXJcIj57eyBfZml4dHVyZVByb2ZpbGUubmFtZSB9fSAtIHt7IF9jaGFubmVsLm5hbWUgfX08L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJ3aGVlbFwiIGNsYXNzPVwiZC1mbGV4XCIgc3R5bGU9XCJtYXgtd2lkdGg6IDI0MHB4OyBmbGV4LXdyYXA6IHdyYXBcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IHNsb3Qgb2Ygc2xvdENhcGFiaWxpdGllczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RTbG90TnVtYmVyKHNsb3QuY2FwYWJpbGl0eS5zbG90TnVtYmVyKVwiXG4gICAgICAgIGNsYXNzPVwibS0xIGNvbG9yXCJcbiAgICAgICAgW2NsYXNzLmNvbG9yLXNlbGVjdGVkXT1cInNsb3RDYXBhYmlsaXR5SXNTZWxlY3RlZChzbG90LmNhcGFiaWxpdHkuc2xvdE51bWJlcilcIlxuICAgICAgICBbbmdTdHlsZV09XCJnZXRDYXBhYmlsaXR5Q29sb3JTdHlsZShzbG90KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNsb3RDYXBhYmlsaXR5SXNTZWxlY3RlZChzbG90LmNhcGFiaWxpdHkuc2xvdE51bWJlcilcIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RTbG90TnVtYmVyKHNsb3QuY2FwYWJpbGl0eS5zbG90TnVtYmVyKVwiXG4gICAgICAgICAgY2xhc3M9XCJjb2xvci1zZWxlY3RlZC1pbm5lclwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component } from '@angular/core';
|
|
2
|
+
import { FixtureCapabilityType } from '../../../models/fixture-capability';
|
|
3
|
+
import { PresetService } from '../../../services/preset.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../services/preset.service";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "ngx-bootstrap-slider";
|
|
8
|
+
export class FixtureCapabilityDimmerComponent {
|
|
9
|
+
constructor(presetService, changeDetectorRef) {
|
|
10
|
+
this.presetService = presetService;
|
|
11
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() { }
|
|
14
|
+
getValue() {
|
|
15
|
+
const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity);
|
|
16
|
+
if (capabilityValue) {
|
|
17
|
+
return capabilityValue.valuePercentage;
|
|
18
|
+
}
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
getValueText() {
|
|
22
|
+
const value = this.getValue();
|
|
23
|
+
if (value >= 0) {
|
|
24
|
+
return Math.round(value * 100 * 100) / 100;
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
setValue(value) {
|
|
29
|
+
if (isNaN(value)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (value < 0 || value > 1) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity, value);
|
|
36
|
+
this.changeDetectorRef.detectChanges();
|
|
37
|
+
this.presetService.previewLive();
|
|
38
|
+
}
|
|
39
|
+
changeActive(active) {
|
|
40
|
+
if (active) {
|
|
41
|
+
this.setValue(1);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity);
|
|
45
|
+
this.changeDetectorRef.detectChanges();
|
|
46
|
+
}
|
|
47
|
+
this.presetService.previewLive();
|
|
48
|
+
}
|
|
49
|
+
static { this.ɵfac = function FixtureCapabilityDimmerComponent_Factory(t) { return new (t || FixtureCapabilityDimmerComponent)(i0.ɵɵdirectiveInject(i1.PresetService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
50
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FixtureCapabilityDimmerComponent, selectors: [["lib-app-fixture-capability-dimmer"]], decls: 12, vars: 11, consts: [[1, "card", "border-secondary", "h-100", 2, "min-height", "200px"], [1, "card-header"], [1, "my-auto"], [1, "form-check"], ["type", "checkbox", "id", "capabilityDimmerActive", 1, "form-check-input", 3, "ngModelChange", "ngModel"], ["for", "capabilityDimmerActive", 1, "form-check-label"], [1, "icon-dimmer"], [1, "card-body", "h-100", "d-flex", 2, "flex-direction", "column"], [1, "mb-4", "w-100", "d-flex"], ["type", "text", 1, "mx-auto", 2, "width", "42px", "height", "20px", "text-align", "center", "font-size", "12px", "font-family", "monospace", 3, "ngModelChange", "ngModel"], [1, "h-100", "w-100", "d-flex"], [1, "mx-auto", 2, "height", "100%", 3, "change", "value", "orientation", "reversed", "tooltip", "min", "max", "step"]], template: function FixtureCapabilityDimmerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "input", 4);
|
|
52
|
+
i0.ɵɵlistener("ngModelChange", function FixtureCapabilityDimmerComponent_Template_input_ngModelChange_4_listener($event) { return ctx.changeActive($event); });
|
|
53
|
+
i0.ɵɵelementEnd();
|
|
54
|
+
i0.ɵɵelementStart(5, "label", 5);
|
|
55
|
+
i0.ɵɵelement(6, "i", 6);
|
|
56
|
+
i0.ɵɵelementEnd()()()();
|
|
57
|
+
i0.ɵɵelementStart(7, "div", 7)(8, "div", 8)(9, "input", 9);
|
|
58
|
+
i0.ɵɵlistener("ngModelChange", function FixtureCapabilityDimmerComponent_Template_input_ngModelChange_9_listener($event) { return ctx.setValue($event / 100); });
|
|
59
|
+
i0.ɵɵelementEnd()();
|
|
60
|
+
i0.ɵɵelementStart(10, "div", 10)(11, "mv-slider", 11);
|
|
61
|
+
i0.ɵɵlistener("change", function FixtureCapabilityDimmerComponent_Template_mv_slider_change_11_listener($event) { return ctx.setValue($event.newValue); });
|
|
62
|
+
i0.ɵɵelementEnd()()()();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
i0.ɵɵclassProp("capability-deactivated", ctx.getValue() == undefined);
|
|
65
|
+
i0.ɵɵadvance(4);
|
|
66
|
+
i0.ɵɵproperty("ngModel", ctx.getValue() != undefined);
|
|
67
|
+
i0.ɵɵadvance(5);
|
|
68
|
+
i0.ɵɵproperty("ngModel", ctx.getValueText() >= 0 ? ctx.getValueText() : 0);
|
|
69
|
+
i0.ɵɵadvance(2);
|
|
70
|
+
i0.ɵɵproperty("value", ctx.getValue() >= 0 ? ctx.getValue() : 0)("orientation", "vertical")("reversed", true)("tooltip", "hide")("min", 0)("max", 1)("step", 0.001);
|
|
71
|
+
} }, dependencies: [i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.SliderComponent] }); }
|
|
72
|
+
}
|
|
73
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FixtureCapabilityDimmerComponent, [{
|
|
74
|
+
type: Component,
|
|
75
|
+
args: [{ selector: 'lib-app-fixture-capability-dimmer', template: "<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" }]
|
|
76
|
+
}], () => [{ type: i1.PresetService }, { type: i0.ChangeDetectorRef }], null); })();
|
|
77
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixtureCapabilityDimmerComponent, { className: "FixtureCapabilityDimmerComponent" }); })();
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1jYXBhYmlsaXR5LWRpbW1lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS1jYXBhYmlsaXR5L2ZpeHR1cmUtY2FwYWJpbGl0eS1kaW1tZXIvZml4dHVyZS1jYXBhYmlsaXR5LWRpbW1lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS1jYXBhYmlsaXR5L2ZpeHR1cmUtY2FwYWJpbGl0eS1kaW1tZXIvZml4dHVyZS1jYXBhYmlsaXR5LWRpbW1lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFPakUsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxZQUFvQixhQUE0QixFQUFVLGlCQUFvQztRQUExRSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFBRyxDQUFDO0lBRWxHLFFBQVEsS0FBSSxDQUFDO0lBRWIsUUFBUTtRQUNOLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEksSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixPQUFPLGVBQWUsQ0FBQyxlQUFlLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWU7UUFDMUIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO2lHQTNDVSxnQ0FBZ0M7b0VBQWhDLGdDQUFnQztZQ0xyQyxBQURGLEFBREYsQUFERixBQURGLDhCQUE0SCxhQUNqRyxhQUNGLGFBQ0ssZUFPcEI7WUFEQSxrSUFBaUIsd0JBQW9CLElBQUM7WUFMeEMsaUJBTUU7WUFDRixnQ0FBNkQ7WUFDM0QsdUJBQTJCO1lBSW5DLEFBREUsQUFERSxBQURFLGlCQUFRLEVBQ0osRUFDRixFQUNGO1lBSUYsQUFERixBQURGLDhCQUFtRSxhQUNsQyxlQU8zQjtZQUZBLGtJQUFpQixzQkFBa0IsR0FBRyxDQUFDLElBQUM7WUFHNUMsQUFQRSxpQkFNRSxFQUNFO1lBR0osQUFERixnQ0FBZ0MscUJBWTdCO1lBUkMseUhBQVUsNkJBQXlCLElBQUM7WUFXNUMsQUFERSxBQURFLEFBREcsaUJBQVksRUFDVCxFQUNGLEVBQ0Y7O1lBNUNtQyxxRUFBd0Q7WUFRdkYsZUFBbUM7WUFBbkMscURBQW1DO1lBZXJDLGVBQW9EO1lBQXBELDBFQUFvRDtZQVNwRCxlQUEwQztZQVExQyxBQURBLEFBREEsQUFEQSxBQUZBLEFBREEsQUFGQSxnRUFBMEMsMkJBRWhCLGtCQUNULG1CQUVDLFVBQ1QsVUFDQSxlQUNLOzs7aUZEL0JULGdDQUFnQztjQUw1QyxTQUFTOzJCQUNFLG1DQUFtQzs7a0ZBSWxDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRml4dHVyZUNhcGFiaWxpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpeHR1cmUtY2FwYWJpbGl0eSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWZpeHR1cmUtY2FwYWJpbGl0eS1kaW1tZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZml4dHVyZS1jYXBhYmlsaXR5LWRpbW1lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpeHR1cmUtY2FwYWJpbGl0eS1kaW1tZXIuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaXh0dXJlQ2FwYWJpbGl0eURpbW1lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJlc2V0U2VydmljZTogUHJlc2V0U2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGdldFZhbHVlKCk6IG51bWJlciB7XG4gICAgY29uc3QgY2FwYWJpbGl0eVZhbHVlID0gdGhpcy5wcmVzZXRTZXJ2aWNlLmdldENhcGFiaWxpdHlWYWx1ZSh0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsIEZpeHR1cmVDYXBhYmlsaXR5VHlwZS5JbnRlbnNpdHkpO1xuICAgIGlmIChjYXBhYmlsaXR5VmFsdWUpIHtcbiAgICAgIHJldHVybiBjYXBhYmlsaXR5VmFsdWUudmFsdWVQZXJjZW50YWdlO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0VmFsdWVUZXh0KCk6IG51bWJlciB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgaWYgKHZhbHVlID49IDApIHtcbiAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogMTAwICogMTAwKSAvIDEwMDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2V0Q2FwYWJpbGl0eVZhbHVlKHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCwgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkludGVuc2l0eSwgdmFsdWUpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMucHJlc2V0U2VydmljZS5wcmV2aWV3TGl2ZSgpO1xuICB9XG5cbiAgY2hhbmdlQWN0aXZlKGFjdGl2ZTogYm9vbGVhbikge1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJlc2V0U2VydmljZS5kZWxldGVDYXBhYmlsaXR5VmFsdWUodGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LCBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuSW50ZW5zaXR5KTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLXNlY29uZGFyeSBoLTEwMFwiIFtjbGFzcy5jYXBhYmlsaXR5LWRlYWN0aXZhdGVkXT1cImdldFZhbHVlKCkgPT0gdW5kZWZpbmVkXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiAyMDBweFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxuICAgICAgICAgIGlkPVwiY2FwYWJpbGl0eURpbW1lckFjdGl2ZVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwiZ2V0VmFsdWUoKSAhPSB1bmRlZmluZWRcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImNhcGFiaWxpdHlEaW1tZXJBY3RpdmVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb24tZGltbWVyXCI+PC9pPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgaC0xMDAgZC1mbGV4XCIgc3R5bGU9XCJmbGV4LWRpcmVjdGlvbjogY29sdW1uXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTQgdy0xMDAgZC1mbGV4XCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJteC1hdXRvXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbbmdNb2RlbF09XCJnZXRWYWx1ZVRleHQoKSA+PSAwID8gZ2V0VmFsdWVUZXh0KCkgOiAwXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VmFsdWUoJGV2ZW50IC8gMTAwKVwiXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDQycHg7IGhlaWdodDogMjBweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJoLTEwMCB3LTEwMCBkLWZsZXhcIj5cbiAgICAgIDxtdi1zbGlkZXJcbiAgICAgICAgY2xhc3M9XCJteC1hdXRvXCJcbiAgICAgICAgW3ZhbHVlXT1cImdldFZhbHVlKCkgPj0gMCA/IGdldFZhbHVlKCkgOiAwXCJcbiAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZSgkZXZlbnQubmV3VmFsdWUpXCJcbiAgICAgICAgW29yaWVudGF0aW9uXT1cIid2ZXJ0aWNhbCdcIlxuICAgICAgICBbcmV2ZXJzZWRdPVwidHJ1ZVwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMDAlXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ2hpZGUnXCJcbiAgICAgICAgW21pbl09XCIwXCJcbiAgICAgICAgW21heF09XCIxXCJcbiAgICAgICAgW3N0ZXBdPVwiMC4wMDFcIlxuICAgICAgPjwvbXYtc2xpZGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|