@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,151 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component } from '@angular/core';
|
|
2
|
+
import { PreviewService } from '../../../services/preview.service';
|
|
3
|
+
import { ProjectService } from '../../../services/project.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../services/project.service";
|
|
6
|
+
import * as i2 from "../../../services/preview.service";
|
|
7
|
+
import * as i3 from "@angular/forms";
|
|
8
|
+
import * as i4 from "ngx-bootstrap-slider";
|
|
9
|
+
import * as i5 from "@ngx-translate/core";
|
|
10
|
+
export class FixtureSettingsStageComponent {
|
|
11
|
+
constructor(projectService, previewService, changeDetectorRef) {
|
|
12
|
+
this.projectService = projectService;
|
|
13
|
+
this.previewService = previewService;
|
|
14
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() { }
|
|
17
|
+
update() {
|
|
18
|
+
this.previewService.updateStage();
|
|
19
|
+
this.changeDetectorRef.detectChanges();
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = function FixtureSettingsStageComponent_Factory(t) { return new (t || FixtureSettingsStageComponent)(i0.ɵɵdirectiveInject(i1.ProjectService), i0.ɵɵdirectiveInject(i2.PreviewService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
22
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FixtureSettingsStageComponent, selectors: [["lib-app-fixture-settings-stage"]], decls: 65, vars: 57, consts: [[1, "card", "border-secondary", "h-100"], [1, "card-header"], [1, "card-body", "h-100"], [1, "d-flex"], [1, "my-auto", 2, "width", "120px", "float", "left"], [1, "my-auto", 2, "float", "left"], [2, "width", "140px", 3, "change", "tooltip", "value", "min", "max", "step"], [1, "my-auto"], ["type", "text", "readonly", "", 1, "slider-input-readonly", 3, "ngModelChange", "ngModel"], [1, "my-auto", "ml-1", 2, "color", "darkgray"]], template: function FixtureSettingsStageComponent_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
24
|
+
i0.ɵɵtext(2);
|
|
25
|
+
i0.ɵɵpipe(3, "translate");
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
i0.ɵɵelementStart(4, "div", 2)(5, "div", 3)(6, "div", 4);
|
|
28
|
+
i0.ɵɵtext(7);
|
|
29
|
+
i0.ɵɵpipe(8, "translate");
|
|
30
|
+
i0.ɵɵelementEnd();
|
|
31
|
+
i0.ɵɵelementStart(9, "div", 5)(10, "mv-slider", 6);
|
|
32
|
+
i0.ɵɵlistener("change", function FixtureSettingsStageComponent_Template_mv_slider_change_10_listener($event) { ctx.projectService.project.stageWidthCm = $event.newValue; return ctx.update(); });
|
|
33
|
+
i0.ɵɵelementEnd()();
|
|
34
|
+
i0.ɵɵelementStart(11, "div", 7)(12, "input", 8);
|
|
35
|
+
i0.ɵɵlistener("ngModelChange", function FixtureSettingsStageComponent_Template_input_ngModelChange_12_listener($event) { ctx.projectService.project.stageWidthCm = $event; return ctx.update(); });
|
|
36
|
+
i0.ɵɵelementEnd()();
|
|
37
|
+
i0.ɵɵelementStart(13, "div", 9);
|
|
38
|
+
i0.ɵɵtext(14, "cm");
|
|
39
|
+
i0.ɵɵelementEnd()();
|
|
40
|
+
i0.ɵɵelementStart(15, "div", 3)(16, "div", 4);
|
|
41
|
+
i0.ɵɵtext(17);
|
|
42
|
+
i0.ɵɵpipe(18, "translate");
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
i0.ɵɵelementStart(19, "div", 5)(20, "mv-slider", 6);
|
|
45
|
+
i0.ɵɵlistener("change", function FixtureSettingsStageComponent_Template_mv_slider_change_20_listener($event) { ctx.projectService.project.stageHeightCm = $event.newValue; return ctx.update(); });
|
|
46
|
+
i0.ɵɵelementEnd()();
|
|
47
|
+
i0.ɵɵelementStart(21, "div", 7)(22, "input", 8);
|
|
48
|
+
i0.ɵɵlistener("ngModelChange", function FixtureSettingsStageComponent_Template_input_ngModelChange_22_listener($event) { ctx.projectService.project.stageHeightCm = $event; return ctx.update(); });
|
|
49
|
+
i0.ɵɵelementEnd()();
|
|
50
|
+
i0.ɵɵelementStart(23, "div", 9);
|
|
51
|
+
i0.ɵɵtext(24, "cm");
|
|
52
|
+
i0.ɵɵelementEnd()();
|
|
53
|
+
i0.ɵɵelementStart(25, "div", 3)(26, "div", 4);
|
|
54
|
+
i0.ɵɵtext(27);
|
|
55
|
+
i0.ɵɵpipe(28, "translate");
|
|
56
|
+
i0.ɵɵelementEnd();
|
|
57
|
+
i0.ɵɵelementStart(29, "div", 5)(30, "mv-slider", 6);
|
|
58
|
+
i0.ɵɵlistener("change", function FixtureSettingsStageComponent_Template_mv_slider_change_30_listener($event) { ctx.projectService.project.stageDepthCm = $event.newValue; return ctx.update(); });
|
|
59
|
+
i0.ɵɵelementEnd()();
|
|
60
|
+
i0.ɵɵelementStart(31, "div", 7)(32, "input", 8);
|
|
61
|
+
i0.ɵɵlistener("ngModelChange", function FixtureSettingsStageComponent_Template_input_ngModelChange_32_listener($event) { ctx.projectService.project.stageDepthCm = $event; return ctx.update(); });
|
|
62
|
+
i0.ɵɵelementEnd()();
|
|
63
|
+
i0.ɵɵelementStart(33, "div", 9);
|
|
64
|
+
i0.ɵɵtext(34, "cm");
|
|
65
|
+
i0.ɵɵelementEnd()();
|
|
66
|
+
i0.ɵɵelementStart(35, "div", 3)(36, "div", 4);
|
|
67
|
+
i0.ɵɵtext(37);
|
|
68
|
+
i0.ɵɵpipe(38, "translate");
|
|
69
|
+
i0.ɵɵelementEnd();
|
|
70
|
+
i0.ɵɵelementStart(39, "div", 5)(40, "mv-slider", 6);
|
|
71
|
+
i0.ɵɵlistener("change", function FixtureSettingsStageComponent_Template_mv_slider_change_40_listener($event) { ctx.projectService.project.stageFloorHeightCm = $event.newValue; return ctx.update(); });
|
|
72
|
+
i0.ɵɵelementEnd()();
|
|
73
|
+
i0.ɵɵelementStart(41, "div", 7)(42, "input", 8);
|
|
74
|
+
i0.ɵɵlistener("ngModelChange", function FixtureSettingsStageComponent_Template_input_ngModelChange_42_listener($event) { ctx.projectService.project.stageFloorHeightCm = $event; return ctx.update(); });
|
|
75
|
+
i0.ɵɵelementEnd()();
|
|
76
|
+
i0.ɵɵelementStart(43, "div", 9);
|
|
77
|
+
i0.ɵɵtext(44, "cm");
|
|
78
|
+
i0.ɵɵelementEnd()();
|
|
79
|
+
i0.ɵɵelementStart(45, "div", 3)(46, "div", 4);
|
|
80
|
+
i0.ɵɵtext(47);
|
|
81
|
+
i0.ɵɵpipe(48, "translate");
|
|
82
|
+
i0.ɵɵelementEnd();
|
|
83
|
+
i0.ɵɵelementStart(49, "div", 5)(50, "mv-slider", 6);
|
|
84
|
+
i0.ɵɵlistener("change", function FixtureSettingsStageComponent_Template_mv_slider_change_50_listener($event) { ctx.projectService.project.stageCeilingHeightCm = $event.newValue; return ctx.update(); });
|
|
85
|
+
i0.ɵɵelementEnd()();
|
|
86
|
+
i0.ɵɵelementStart(51, "div", 7)(52, "input", 8);
|
|
87
|
+
i0.ɵɵlistener("ngModelChange", function FixtureSettingsStageComponent_Template_input_ngModelChange_52_listener($event) { ctx.projectService.project.stageCeilingHeightCm = $event; return ctx.update(); });
|
|
88
|
+
i0.ɵɵelementEnd()();
|
|
89
|
+
i0.ɵɵelementStart(53, "div", 9);
|
|
90
|
+
i0.ɵɵtext(54, "cm");
|
|
91
|
+
i0.ɵɵelementEnd()();
|
|
92
|
+
i0.ɵɵelementStart(55, "div", 3)(56, "div", 4);
|
|
93
|
+
i0.ɵɵtext(57);
|
|
94
|
+
i0.ɵɵpipe(58, "translate");
|
|
95
|
+
i0.ɵɵelementEnd();
|
|
96
|
+
i0.ɵɵelementStart(59, "div", 5)(60, "mv-slider", 6);
|
|
97
|
+
i0.ɵɵlistener("change", function FixtureSettingsStageComponent_Template_mv_slider_change_60_listener($event) { ctx.projectService.project.stagePillarWidthCm = $event.newValue; return ctx.update(); });
|
|
98
|
+
i0.ɵɵelementEnd()();
|
|
99
|
+
i0.ɵɵelementStart(61, "div", 7)(62, "input", 8);
|
|
100
|
+
i0.ɵɵlistener("ngModelChange", function FixtureSettingsStageComponent_Template_input_ngModelChange_62_listener($event) { ctx.projectService.project.stagePillarWidthCm = $event; return ctx.update(); });
|
|
101
|
+
i0.ɵɵelementEnd()();
|
|
102
|
+
i0.ɵɵelementStart(63, "div", 9);
|
|
103
|
+
i0.ɵɵtext(64, "cm");
|
|
104
|
+
i0.ɵɵelementEnd()()()();
|
|
105
|
+
} if (rf & 2) {
|
|
106
|
+
i0.ɵɵadvance(2);
|
|
107
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 43, "designer.fixture.setting-stage"), " ");
|
|
108
|
+
i0.ɵɵadvance(5);
|
|
109
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 45, "designer.fixture.setting-stage-width"), " ");
|
|
110
|
+
i0.ɵɵadvance(3);
|
|
111
|
+
i0.ɵɵproperty("tooltip", "hide")("value", ctx.projectService.project.stageWidthCm)("min", 100)("max", 2000)("step", 5);
|
|
112
|
+
i0.ɵɵadvance(2);
|
|
113
|
+
i0.ɵɵproperty("ngModel", ctx.projectService.project.stageWidthCm);
|
|
114
|
+
i0.ɵɵadvance(5);
|
|
115
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 47, "designer.fixture.setting-stage-height"), " ");
|
|
116
|
+
i0.ɵɵadvance(3);
|
|
117
|
+
i0.ɵɵproperty("tooltip", "hide")("value", ctx.projectService.project.stageHeightCm)("min", 100)("max", 2000)("step", 5);
|
|
118
|
+
i0.ɵɵadvance(2);
|
|
119
|
+
i0.ɵɵproperty("ngModel", ctx.projectService.project.stageHeightCm);
|
|
120
|
+
i0.ɵɵadvance(5);
|
|
121
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(28, 49, "designer.fixture.setting-stage-depth"), " ");
|
|
122
|
+
i0.ɵɵadvance(3);
|
|
123
|
+
i0.ɵɵproperty("tooltip", "hide")("value", ctx.projectService.project.stageDepthCm)("min", 100)("max", 2000)("step", 5);
|
|
124
|
+
i0.ɵɵadvance(2);
|
|
125
|
+
i0.ɵɵproperty("ngModel", ctx.projectService.project.stageDepthCm);
|
|
126
|
+
i0.ɵɵadvance(5);
|
|
127
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(38, 51, "designer.fixture.setting-stage-floor-height"), " ");
|
|
128
|
+
i0.ɵɵadvance(3);
|
|
129
|
+
i0.ɵɵproperty("tooltip", "hide")("value", ctx.projectService.project.stageFloorHeightCm)("min", 1)("max", 1000)("step", 5);
|
|
130
|
+
i0.ɵɵadvance(2);
|
|
131
|
+
i0.ɵɵproperty("ngModel", ctx.projectService.project.stageFloorHeightCm);
|
|
132
|
+
i0.ɵɵadvance(5);
|
|
133
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(48, 53, "designer.fixture.setting-stage-ceiling-height"), " ");
|
|
134
|
+
i0.ɵɵadvance(3);
|
|
135
|
+
i0.ɵɵproperty("tooltip", "hide")("value", ctx.projectService.project.stageCeilingHeightCm)("min", 1)("max", 1000)("step", 5);
|
|
136
|
+
i0.ɵɵadvance(2);
|
|
137
|
+
i0.ɵɵproperty("ngModel", ctx.projectService.project.stageCeilingHeightCm);
|
|
138
|
+
i0.ɵɵadvance(5);
|
|
139
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(58, 55, "designer.fixture.setting-stage-pillar-width"), " ");
|
|
140
|
+
i0.ɵɵadvance(3);
|
|
141
|
+
i0.ɵɵproperty("tooltip", "hide")("value", ctx.projectService.project.stagePillarWidthCm)("min", 1)("max", 200)("step", 5);
|
|
142
|
+
i0.ɵɵadvance(2);
|
|
143
|
+
i0.ɵɵproperty("ngModel", ctx.projectService.project.stagePillarWidthCm);
|
|
144
|
+
} }, dependencies: [i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.SliderComponent, i5.TranslatePipe] }); }
|
|
145
|
+
}
|
|
146
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FixtureSettingsStageComponent, [{
|
|
147
|
+
type: Component,
|
|
148
|
+
args: [{ selector: 'lib-app-fixture-settings-stage', template: "<div class=\"card border-secondary h-100\">\n <div class=\"card-header\">\n {{ 'designer.fixture.setting-stage' | translate }}\n </div>\n\n <div class=\"card-body h-100\">\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-width' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageWidthCm\"\n [min]=\"100\"\n [max]=\"2000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageWidthCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageWidthCm\"\n (ngModelChange)=\"projectService.project.stageWidthCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-height' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageHeightCm\"\n [min]=\"100\"\n [max]=\"2000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageHeightCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageHeightCm\"\n (ngModelChange)=\"projectService.project.stageHeightCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-depth' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageDepthCm\"\n [min]=\"100\"\n [max]=\"2000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageDepthCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageDepthCm\"\n (ngModelChange)=\"projectService.project.stageDepthCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-floor-height' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageFloorHeightCm\"\n [min]=\"1\"\n [max]=\"1000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageFloorHeightCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageFloorHeightCm\"\n (ngModelChange)=\"projectService.project.stageFloorHeightCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-ceiling-height' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageCeilingHeightCm\"\n [min]=\"1\"\n [max]=\"1000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageCeilingHeightCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageCeilingHeightCm\"\n (ngModelChange)=\"projectService.project.stageCeilingHeightCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-pillar-width' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stagePillarWidthCm\"\n [min]=\"1\"\n [max]=\"200\"\n [step]=\"5\"\n (change)=\"projectService.project.stagePillarWidthCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stagePillarWidthCm\"\n (ngModelChange)=\"projectService.project.stagePillarWidthCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n </div>\n</div>\n" }]
|
|
149
|
+
}], () => [{ type: i1.ProjectService }, { type: i2.PreviewService }, { type: i0.ChangeDetectorRef }], null); })();
|
|
150
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixtureSettingsStageComponent, { className: "FixtureSettingsStageComponent" }); })();
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1zZXR0aW5ncy1zdGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS1zZXR0aW5ncy9maXh0dXJlLXNldHRpbmdzLXN0YWdlL2ZpeHR1cmUtc2V0dGluZ3Mtc3RhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduZXIvc3JjL2xpYi9maXh0dXJlL2ZpeHR1cmUtc2V0dGluZ3MvZml4dHVyZS1zZXR0aW5ncy1zdGFnZS9maXh0dXJlLXNldHRpbmdzLXN0YWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7OztBQU9uRSxNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDLFlBQW1CLGNBQThCLEVBQVMsY0FBOEIsRUFBVSxpQkFBb0M7UUFBbkgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFMUksUUFBUSxLQUFJLENBQUM7SUFFYixNQUFNO1FBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekMsQ0FBQzs4RkFSVSw2QkFBNkI7b0VBQTdCLDZCQUE2QjtZQ1J4QyxBQURGLDhCQUF5QyxhQUNkO1lBQ3ZCLFlBQ0Y7O1lBQUEsaUJBQU07WUFJRixBQURGLEFBREYsOEJBQTZC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REEsZ0NBQWtCLHdEQUNpQyxVQUMxQyxhQUNHLFdBQ0Y7WUFRVixlQUFxRDtZQUFyRCx1RUFBcUQ7WUFXdkQsZUFDRjtZQURFLHdHQUNGO1lBSUksZUFBa0I7WUFJbEIsQUFEQSxBQURBLEFBREEsQUFEQSxnQ0FBa0IsMERBQ21DLFVBQzVDLGFBQ0csV0FDRjtZQVFWLGVBQXVEO1lBQXZELHlFQUF1RDtZQVd6RCxlQUNGO1lBREUsc0dBQ0Y7WUFJSSxlQUFrQjtZQUlsQixBQURBLEFBREEsQUFEQSxBQURBLGdDQUFrQix3REFDaUMsVUFDMUMsWUFDRSxXQUNEO1lBUVYsZUFBcUQ7WUFBckQsdUVBQXFEOzs7aUZENUpsRCw2QkFBNkI7Y0FMekMsU0FBUzsyQkFDRSxnQ0FBZ0M7O2tGQUkvQiw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByZXZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1maXh0dXJlLXNldHRpbmdzLXN0YWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpeHR1cmUtc2V0dGluZ3Mtc3RhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maXh0dXJlLXNldHRpbmdzLXN0YWdlLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRml4dHVyZVNldHRpbmdzU3RhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLCBwdWJsaWMgcHJldmlld1NlcnZpY2U6IFByZXZpZXdTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgdXBkYXRlKCkge1xuICAgIHRoaXMucHJldmlld1NlcnZpY2UudXBkYXRlU3RhZ2UoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLXNlY29uZGFyeSBoLTEwMFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICB7eyAnZGVzaWduZXIuZml4dHVyZS5zZXR0aW5nLXN0YWdlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGgtMTAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIiBzdHlsZT1cIndpZHRoOiAxMjBweDsgZmxvYXQ6IGxlZnRcIj5cbiAgICAgICAge3sgJ2Rlc2lnbmVyLmZpeHR1cmUuc2V0dGluZy1zdGFnZS13aWR0aCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIiBzdHlsZT1cImZsb2F0OiBsZWZ0XCI+XG4gICAgICAgIDxtdi1zbGlkZXJcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNDBweFwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ2hpZGUnXCJcbiAgICAgICAgICBbdmFsdWVdPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ21cIlxuICAgICAgICAgIFttaW5dPVwiMTAwXCJcbiAgICAgICAgICBbbWF4XT1cIjIwMDBcIlxuICAgICAgICAgIFtzdGVwXT1cIjVcIlxuICAgICAgICAgIChjaGFuZ2UpPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVdpZHRoQ20gPSAkZXZlbnQubmV3VmFsdWU7IHVwZGF0ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L212LXNsaWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VXaWR0aENtXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlV2lkdGhDbSA9ICRldmVudDsgdXBkYXRlKClcIlxuICAgICAgICAgIGNsYXNzPVwic2xpZGVyLWlucHV0LXJlYWRvbmx5XCJcbiAgICAgICAgICByZWFkb25seVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktYXV0byBtbC0xXCIgc3R5bGU9XCJjb2xvcjogZGFya2dyYXlcIj5jbTwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIiBzdHlsZT1cIndpZHRoOiAxMjBweDsgZmxvYXQ6IGxlZnRcIj5cbiAgICAgICAge3sgJ2Rlc2lnbmVyLmZpeHR1cmUuc2V0dGluZy1zdGFnZS1oZWlnaHQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJmbG9hdDogbGVmdFwiPlxuICAgICAgICA8bXYtc2xpZGVyXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTQwcHhcIlxuICAgICAgICAgIFt0b29sdGlwXT1cIidoaWRlJ1wiXG4gICAgICAgICAgW3ZhbHVlXT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VIZWlnaHRDbVwiXG4gICAgICAgICAgW21pbl09XCIxMDBcIlxuICAgICAgICAgIFttYXhdPVwiMjAwMFwiXG4gICAgICAgICAgW3N0ZXBdPVwiNVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlSGVpZ2h0Q20gPSAkZXZlbnQubmV3VmFsdWU7IHVwZGF0ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L212LXNsaWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VIZWlnaHRDbVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUhlaWdodENtID0gJGV2ZW50OyB1cGRhdGUoKVwiXG4gICAgICAgICAgY2xhc3M9XCJzbGlkZXItaW5wdXQtcmVhZG9ubHlcIlxuICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvIG1sLTFcIiBzdHlsZT1cImNvbG9yOiBkYXJrZ3JheVwiPmNtPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiIHN0eWxlPVwid2lkdGg6IDEyMHB4OyBmbG9hdDogbGVmdFwiPlxuICAgICAgICB7eyAnZGVzaWduZXIuZml4dHVyZS5zZXR0aW5nLXN0YWdlLWRlcHRoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiIHN0eWxlPVwiZmxvYXQ6IGxlZnRcIj5cbiAgICAgICAgPG12LXNsaWRlclxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE0MHB4XCJcbiAgICAgICAgICBbdG9vbHRpcF09XCInaGlkZSdcIlxuICAgICAgICAgIFt2YWx1ZV09XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbVwiXG4gICAgICAgICAgW21pbl09XCIxMDBcIlxuICAgICAgICAgIFttYXhdPVwiMjAwMFwiXG4gICAgICAgICAgW3N0ZXBdPVwiNVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRGVwdGhDbSA9ICRldmVudC5uZXdWYWx1ZTsgdXBkYXRlKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbXYtc2xpZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW25nTW9kZWxdPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZURlcHRoQ21cIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VEZXB0aENtID0gJGV2ZW50OyB1cGRhdGUoKVwiXG4gICAgICAgICAgY2xhc3M9XCJzbGlkZXItaW5wdXQtcmVhZG9ubHlcIlxuICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvIG1sLTFcIiBzdHlsZT1cImNvbG9yOiBkYXJrZ3JheVwiPmNtPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiIHN0eWxlPVwid2lkdGg6IDEyMHB4OyBmbG9hdDogbGVmdFwiPlxuICAgICAgICB7eyAnZGVzaWduZXIuZml4dHVyZS5zZXR0aW5nLXN0YWdlLWZsb29yLWhlaWdodCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIiBzdHlsZT1cImZsb2F0OiBsZWZ0XCI+XG4gICAgICAgIDxtdi1zbGlkZXJcbiAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNDBweFwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ2hpZGUnXCJcbiAgICAgICAgICBbdmFsdWVdPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q21cIlxuICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgW21heF09XCIxMDAwXCJcbiAgICAgICAgICBbc3RlcF09XCI1XCJcbiAgICAgICAgICAoY2hhbmdlKT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VGbG9vckhlaWdodENtID0gJGV2ZW50Lm5ld1ZhbHVlOyB1cGRhdGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9tdi1zbGlkZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlRmxvb3JIZWlnaHRDbVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZUZsb29ySGVpZ2h0Q20gPSAkZXZlbnQ7IHVwZGF0ZSgpXCJcbiAgICAgICAgICBjbGFzcz1cInNsaWRlci1pbnB1dC1yZWFkb25seVwiXG4gICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG8gbWwtMVwiIHN0eWxlPVwiY29sb3I6IGRhcmtncmF5XCI+Y208L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJ3aWR0aDogMTIwcHg7IGZsb2F0OiBsZWZ0XCI+XG4gICAgICAgIHt7ICdkZXNpZ25lci5maXh0dXJlLnNldHRpbmctc3RhZ2UtY2VpbGluZy1oZWlnaHQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJmbG9hdDogbGVmdFwiPlxuICAgICAgICA8bXYtc2xpZGVyXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTQwcHhcIlxuICAgICAgICAgIFt0b29sdGlwXT1cIidoaWRlJ1wiXG4gICAgICAgICAgW3ZhbHVlXT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VDZWlsaW5nSGVpZ2h0Q21cIlxuICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgW21heF09XCIxMDAwXCJcbiAgICAgICAgICBbc3RlcF09XCI1XCJcbiAgICAgICAgICAoY2hhbmdlKT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VDZWlsaW5nSGVpZ2h0Q20gPSAkZXZlbnQubmV3VmFsdWU7IHVwZGF0ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L212LXNsaWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VDZWlsaW5nSGVpZ2h0Q21cIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VDZWlsaW5nSGVpZ2h0Q20gPSAkZXZlbnQ7IHVwZGF0ZSgpXCJcbiAgICAgICAgICBjbGFzcz1cInNsaWRlci1pbnB1dC1yZWFkb25seVwiXG4gICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG8gbWwtMVwiIHN0eWxlPVwiY29sb3I6IGRhcmtncmF5XCI+Y208L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJ3aWR0aDogMTIwcHg7IGZsb2F0OiBsZWZ0XCI+XG4gICAgICAgIHt7ICdkZXNpZ25lci5maXh0dXJlLnNldHRpbmctc3RhZ2UtcGlsbGFyLXdpZHRoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiIHN0eWxlPVwiZmxvYXQ6IGxlZnRcIj5cbiAgICAgICAgPG12LXNsaWRlclxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE0MHB4XCJcbiAgICAgICAgICBbdG9vbHRpcF09XCInaGlkZSdcIlxuICAgICAgICAgIFt2YWx1ZV09XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlUGlsbGFyV2lkdGhDbVwiXG4gICAgICAgICAgW21pbl09XCIxXCJcbiAgICAgICAgICBbbWF4XT1cIjIwMFwiXG4gICAgICAgICAgW3N0ZXBdPVwiNVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJwcm9qZWN0U2VydmljZS5wcm9qZWN0LnN0YWdlUGlsbGFyV2lkdGhDbSA9ICRldmVudC5uZXdWYWx1ZTsgdXBkYXRlKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbXYtc2xpZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW25nTW9kZWxdPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5zdGFnZVBpbGxhcldpZHRoQ21cIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInByb2plY3RTZXJ2aWNlLnByb2plY3Quc3RhZ2VQaWxsYXJXaWR0aENtID0gJGV2ZW50OyB1cGRhdGUoKVwiXG4gICAgICAgICAgY2xhc3M9XCJzbGlkZXItaW5wdXQtcmVhZG9ubHlcIlxuICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvIG1sLTFcIiBzdHlsZT1cImNvbG9yOiBkYXJrZ3JheVwiPmNtPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FixtureService } from '../../services/fixture.service';
|
|
3
|
+
import { PresetService } from '../../services/preset.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../services/fixture.service";
|
|
6
|
+
import * as i2 from "../../services/preset.service";
|
|
7
|
+
import * as i3 from "./fixture-settings-position/fixture-settings-position.component";
|
|
8
|
+
import * as i4 from "./fixture-settings-stage/fixture-settings-stage.component";
|
|
9
|
+
export class FixtureSettingsComponent {
|
|
10
|
+
constructor(fixtureService, presetService) {
|
|
11
|
+
this.fixtureService = fixtureService;
|
|
12
|
+
this.presetService = presetService;
|
|
13
|
+
this.dmxChannels = [];
|
|
14
|
+
for (let i = 0; i < 512; i++) {
|
|
15
|
+
this.dmxChannels.push(0);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() { }
|
|
19
|
+
isChrome() {
|
|
20
|
+
if (navigator.appVersion.indexOf('Chrome/') !== -1) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = function FixtureSettingsComponent_Factory(t) { return new (t || FixtureSettingsComponent)(i0.ɵɵdirectiveInject(i1.FixtureService), i0.ɵɵdirectiveInject(i2.PresetService)); }; }
|
|
26
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FixtureSettingsComponent, selectors: [["lib-app-fixture-settings"]], decls: 9, vars: 2, consts: [[1, "card", "border-secondary", "panel", "h-100"], [1, "card-body", "capability-container", "d-flex", "h-100", 2, "overflow-y", "hidden"], [1, "row", "m-0", "pl-3"], [1, "col", "col-auto", "p-0", "my-3", "mr-3"]], template: function FixtureSettingsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
|
|
28
|
+
i0.ɵɵelement(4, "lib-app-fixture-settings-position");
|
|
29
|
+
i0.ɵɵelementEnd();
|
|
30
|
+
i0.ɵɵelementStart(5, "div", 3);
|
|
31
|
+
i0.ɵɵelement(6, "lib-app-fixture-settings-stage");
|
|
32
|
+
i0.ɵɵelementEnd();
|
|
33
|
+
i0.ɵɵelementStart(7, "div", 3);
|
|
34
|
+
i0.ɵɵtext(8, "\u00A0");
|
|
35
|
+
i0.ɵɵelementEnd()()()();
|
|
36
|
+
} if (rf & 2) {
|
|
37
|
+
i0.ɵɵadvance(2);
|
|
38
|
+
i0.ɵɵclassProp("h-100", ctx.isChrome());
|
|
39
|
+
} }, dependencies: [i3.FixtureSettingsPositionComponent, i4.FixtureSettingsStageComponent], styles: [".dmx-channel[_ngcontent-%COMP%]{display:flex;float:left;width:28px;border:1px solid white;margin-left:-1px;margin-bottom:-1px}.dmx-channel-occupied[_ngcontent-%COMP%]{background-color:#fd7e14;border-left:none;border-right:none;cursor:move}.dmx-channel-occupied-start[_ngcontent-%COMP%]{border-left:1px solid white}.dmx-channel-occupied-end[_ngcontent-%COMP%]{border-right:1px solid white}"] }); }
|
|
40
|
+
}
|
|
41
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FixtureSettingsComponent, [{
|
|
42
|
+
type: Component,
|
|
43
|
+
args: [{ selector: 'lib-app-fixture-settings', template: "<div class=\"card border-secondary panel h-100\">\n <div class=\"card-body capability-container d-flex h-100\" style=\"overflow-y: hidden\">\n <!-- h-100 needs to be applied in chrome to avoid performance issues with many layouts (reflows)\n during sliding. But the class must not be applied e.g. in Safari, because the bottom margin is not correct\n anymore afterwards. -->\n <div class=\"row m-0 pl-3\" [class.h-100]=\"isChrome()\">\n <!-- Position -->\n <div class=\"col col-auto p-0 my-3 mr-3\">\n <lib-app-fixture-settings-position></lib-app-fixture-settings-position>\n </div>\n\n <!-- Stage -->\n <div class=\"col col-auto p-0 my-3 mr-3\">\n <lib-app-fixture-settings-stage></lib-app-fixture-settings-stage>\n </div>\n\n <!-- Fix spacing at the end -->\n <div class=\"col col-auto p-0 my-3 mr-3\"> </div>\n </div>\n </div>\n</div>\n", styles: [".dmx-channel{display:flex;float:left;width:28px;border:1px solid white;margin-left:-1px;margin-bottom:-1px}.dmx-channel-occupied{background-color:#fd7e14;border-left:none;border-right:none;cursor:move}.dmx-channel-occupied-start{border-left:1px solid white}.dmx-channel-occupied-end{border-right:1px solid white}\n"] }]
|
|
44
|
+
}], () => [{ type: i1.FixtureService }, { type: i2.PresetService }], null); })();
|
|
45
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixtureSettingsComponent, { className: "FixtureSettingsComponent" }); })();
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS1zZXR0aW5ncy9maXh0dXJlLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvZml4dHVyZS9maXh0dXJlLXNldHRpbmdzL2ZpeHR1cmUtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFPOUQsTUFBTSxPQUFPLHdCQUF3QjtJQUduQyxZQUFvQixjQUE4QixFQUFTLGFBQTRCO1FBQW5FLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRnZGLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBR3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsS0FBSSxDQUFDO0lBRWIsUUFBUTtRQUNOLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7eUZBaEJVLHdCQUF3QjtvRUFBeEIsd0JBQXdCO1lDRi9CLEFBRkYsQUFKRixBQURGLDhCQUErQyxhQUN1QyxhQUk3QixhQUVYO1lBQ3RDLG9EQUF1RTtZQUN6RSxpQkFBTTtZQUdOLDhCQUF3QztZQUN0QyxpREFBaUU7WUFDbkUsaUJBQU07WUFHTiw4QkFBd0M7WUFBQSxzQkFBTTtZQUdwRCxBQURFLEFBREUsQUFEZ0QsaUJBQU0sRUFDaEQsRUFDRixFQUNGOztZQWZ3QixlQUEwQjtZQUExQix1Q0FBMEI7OztpRkRJM0Msd0JBQXdCO2NBTHBDLFNBQVM7MkJBQ0UsMEJBQTBCOztrRkFJekIsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpeHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZml4dHVyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcmVzZXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hcHAtZml4dHVyZS1zZXR0aW5ncycsXG4gIHRlbXBsYXRlVXJsOiAnLi9maXh0dXJlLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZml4dHVyZS1zZXR0aW5ncy5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZpeHR1cmVTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGRteENoYW5uZWxzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZml4dHVyZVNlcnZpY2U6IEZpeHR1cmVTZXJ2aWNlLCBwdWJsaWMgcHJlc2V0U2VydmljZTogUHJlc2V0U2VydmljZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTEyOyBpKyspIHtcbiAgICAgIHRoaXMuZG14Q2hhbm5lbHMucHVzaCgwKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgaXNDaHJvbWUoKTogYm9vbGVhbiB7XG4gICAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoJ0Nocm9tZS8nKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci1zZWNvbmRhcnkgcGFuZWwgaC0xMDBcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBjYXBhYmlsaXR5LWNvbnRhaW5lciBkLWZsZXggaC0xMDBcIiBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiPlxuICAgIDwhLS0gaC0xMDAgbmVlZHMgdG8gYmUgYXBwbGllZCBpbiBjaHJvbWUgdG8gYXZvaWQgcGVyZm9ybWFuY2UgaXNzdWVzIHdpdGggbWFueSBsYXlvdXRzIChyZWZsb3dzKVxuICAgICAgZHVyaW5nIHNsaWRpbmcuIEJ1dCB0aGUgY2xhc3MgbXVzdCBub3QgYmUgYXBwbGllZCBlLmcuIGluIFNhZmFyaSwgYmVjYXVzZSB0aGUgYm90dG9tIG1hcmdpbiBpcyBub3QgY29ycmVjdFxuICAgICAgYW55bW9yZSBhZnRlcndhcmRzLiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG0tMCBwbC0zXCIgW2NsYXNzLmgtMTAwXT1cImlzQ2hyb21lKClcIj5cbiAgICAgIDwhLS0gUG9zaXRpb24gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC1hdXRvIHAtMCBteS0zIG1yLTNcIj5cbiAgICAgICAgPGxpYi1hcHAtZml4dHVyZS1zZXR0aW5ncy1wb3NpdGlvbj48L2xpYi1hcHAtZml4dHVyZS1zZXR0aW5ncy1wb3NpdGlvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFN0YWdlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtYXV0byBwLTAgbXktMyBtci0zXCI+XG4gICAgICAgIDxsaWItYXBwLWZpeHR1cmUtc2V0dGluZ3Mtc3RhZ2U+PC9saWItYXBwLWZpeHR1cmUtc2V0dGluZ3Mtc3RhZ2U+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBGaXggc3BhY2luZyBhdCB0aGUgZW5kIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtYXV0byBwLTAgbXktMyBtci0zXCI+Jm5ic3A7PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FixturePoolService } from '../services/fixture-pool.service';
|
|
3
|
+
import { FixtureService } from '../services/fixture.service';
|
|
4
|
+
import { IntroService } from '../services/intro.service';
|
|
5
|
+
import { PresetService } from '../services/preset.service';
|
|
6
|
+
import { ProjectService } from '../services/project.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../services/project.service";
|
|
9
|
+
import * as i2 from "../services/preset.service";
|
|
10
|
+
import * as i3 from "../services/fixture-pool.service";
|
|
11
|
+
import * as i4 from "../services/fixture.service";
|
|
12
|
+
import * as i5 from "../services/intro.service";
|
|
13
|
+
import * as i6 from "@angular/common";
|
|
14
|
+
import * as i7 from "@angular/forms";
|
|
15
|
+
import * as i8 from "ngx-sortablejs-plus";
|
|
16
|
+
import * as i9 from "@ngx-translate/core";
|
|
17
|
+
function FixtureComponent_div_12_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
19
|
+
i0.ɵɵelementStart(0, "div", 12)(1, "div", 13);
|
|
20
|
+
i0.ɵɵlistener("click", function FixtureComponent_div_12_div_1_Template_div_click_1_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectFixture($event, item_r2)); });
|
|
21
|
+
i0.ɵɵelementStart(2, "div", 14);
|
|
22
|
+
i0.ɵɵelement(3, "i", 15);
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
i0.ɵɵelementStart(4, "div", 16);
|
|
25
|
+
i0.ɵɵelement(5, "input", 17);
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
i0.ɵɵelementStart(6, "div");
|
|
28
|
+
i0.ɵɵelement(7, "span");
|
|
29
|
+
i0.ɵɵtext(8);
|
|
30
|
+
i0.ɵɵelementEnd()()();
|
|
31
|
+
} if (rf & 2) {
|
|
32
|
+
const item_r2 = ctx.$implicit;
|
|
33
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
34
|
+
i0.ɵɵclassProp("inactive-list-item", !ctx_r2.fixtureIsSelected(item_r2));
|
|
35
|
+
i0.ɵɵadvance(5);
|
|
36
|
+
i0.ɵɵproperty("ngModel", ctx_r2.fixtureIsSelected(item_r2));
|
|
37
|
+
i0.ɵɵadvance(2);
|
|
38
|
+
i0.ɵɵclassMapInterpolate1("icon-", ctx_r2.fixtureService.getFixtureIconClass(ctx_r2.fixtureService.getProfileByUuid(item_r2.profileUuid)), " mr-1");
|
|
39
|
+
i0.ɵɵadvance();
|
|
40
|
+
i0.ɵɵtextInterpolate1(" ", item_r2.name, " ");
|
|
41
|
+
} }
|
|
42
|
+
function FixtureComponent_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
44
|
+
i0.ɵɵtemplate(1, FixtureComponent_div_12_div_1_Template, 9, 7, "div", 11);
|
|
45
|
+
i0.ɵɵelementEnd();
|
|
46
|
+
} if (rf & 2) {
|
|
47
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
48
|
+
i0.ɵɵproperty("sortablejs", ctx_r2.projectService.project.fixtures);
|
|
49
|
+
i0.ɵɵadvance();
|
|
50
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.projectService.project.fixtures);
|
|
51
|
+
} }
|
|
52
|
+
function FixtureComponent_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
54
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "a", 19);
|
|
55
|
+
i0.ɵɵlistener("click", function FixtureComponent_div_13_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.openFixturePool(); return i0.ɵɵresetView(false); });
|
|
56
|
+
i0.ɵɵelement(2, "i", 20);
|
|
57
|
+
i0.ɵɵtext(3);
|
|
58
|
+
i0.ɵɵpipe(4, "translate");
|
|
59
|
+
i0.ɵɵelementEnd()();
|
|
60
|
+
} if (rf & 2) {
|
|
61
|
+
i0.ɵɵadvance(3);
|
|
62
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 1, "designer.fixture.no-fixtures"), "");
|
|
63
|
+
} }
|
|
64
|
+
export class FixtureComponent {
|
|
65
|
+
constructor(projectService, presetService, fixturePoolService, fixtureService, introService) {
|
|
66
|
+
this.projectService = projectService;
|
|
67
|
+
this.presetService = presetService;
|
|
68
|
+
this.fixturePoolService = fixturePoolService;
|
|
69
|
+
this.fixtureService = fixtureService;
|
|
70
|
+
this.introService = introService;
|
|
71
|
+
}
|
|
72
|
+
ngOnInit() { }
|
|
73
|
+
fixtureIsSelected(fixture) {
|
|
74
|
+
if (this.fixtureService.settingsSelection) {
|
|
75
|
+
return this.fixtureService.settingsFixtureIsSelected(fixture);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return this.presetService.fixtureIsSelected(fixture);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
selectFixture(event, fixture) {
|
|
82
|
+
if (this.fixtureService.settingsSelection) {
|
|
83
|
+
// select fixtures for the settings
|
|
84
|
+
this.fixtureService.switchSettingsFixtureSelection(fixture);
|
|
85
|
+
this.presetService.fixtureSelectionSettingsChanged.next();
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// select fixtures for the current preset
|
|
89
|
+
this.presetService.switchFixtureSelection(fixture);
|
|
90
|
+
this.presetService.fixtureSelectionChanged.next();
|
|
91
|
+
this.presetService.previewLive();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
selectAll() {
|
|
95
|
+
this.presetService.selectAllFixtures();
|
|
96
|
+
this.presetService.fixtureSelectionChanged.next();
|
|
97
|
+
}
|
|
98
|
+
selectNone() {
|
|
99
|
+
this.presetService.selectNoFixtures();
|
|
100
|
+
this.presetService.fixtureSelectionChanged.next();
|
|
101
|
+
}
|
|
102
|
+
openFixturePool() {
|
|
103
|
+
this.fixturePoolService.open();
|
|
104
|
+
}
|
|
105
|
+
static { this.ɵfac = function FixtureComponent_Factory(t) { return new (t || FixtureComponent)(i0.ɵɵdirectiveInject(i1.ProjectService), i0.ɵɵdirectiveInject(i2.PresetService), i0.ɵɵdirectiveInject(i3.FixturePoolService), i0.ɵɵdirectiveInject(i4.FixtureService), i0.ɵɵdirectiveInject(i5.IntroService)); }; }
|
|
106
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FixtureComponent, selectors: [["lib-app-fixture"]], decls: 14, vars: 4, consts: [[1, "card", "border-secondary", "h-100", "panel"], [1, "card-header", "d-flex"], [1, "ml-auto"], ["href", "#", 1, "btn", "btn-secondary", "m-0,", "p-0", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-square-o", "fa-fw"], ["aria-hidden", "true", 1, "fa", "fa-check-square-o", "fa-fw"], ["aria-hidden", "true", 1, "fa", "fa-cog", "fa-fw"], [1, "card-body", "h-100", "p-0"], ["class", "list-group", 3, "sortablejs", 4, "ngIf"], ["class", "w-100 h-100 d-flex p-3 text-center", 4, "ngIf"], [1, "list-group", 3, "sortablejs"], ["class", "list-group-item", 3, "inactive-list-item", 4, "ngFor", "ngForOf"], [1, "list-group-item"], [1, "row", "d-flex", 2, "cursor", "pointer", 3, "click"], [1, "col-auto", "list-sort-handle", "my-auto", 2, "cursor", "move", "cursor", "-webkit-grabbing"], ["aria-hidden", "true", 1, "fa", "fa-bars"], [1, "form-check"], ["type", "checkbox", "id", "active", 1, "form-check-input", 3, "ngModel"], [1, "w-100", "h-100", "d-flex", "p-3", "text-center"], ["href", "#", 1, "m-auto", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-plus-circle", "fa-fw"]], template: function FixtureComponent_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div");
|
|
108
|
+
i0.ɵɵtext(3, "Fixtures");
|
|
109
|
+
i0.ɵɵelementEnd();
|
|
110
|
+
i0.ɵɵelementStart(4, "div", 2)(5, "a", 3);
|
|
111
|
+
i0.ɵɵlistener("click", function FixtureComponent_Template_a_click_5_listener() { ctx.selectNone(); return false; });
|
|
112
|
+
i0.ɵɵelement(6, "i", 4);
|
|
113
|
+
i0.ɵɵelementEnd();
|
|
114
|
+
i0.ɵɵelementStart(7, "a", 3);
|
|
115
|
+
i0.ɵɵlistener("click", function FixtureComponent_Template_a_click_7_listener() { ctx.selectAll(); return false; });
|
|
116
|
+
i0.ɵɵelement(8, "i", 5);
|
|
117
|
+
i0.ɵɵelementEnd();
|
|
118
|
+
i0.ɵɵelementStart(9, "a", 3);
|
|
119
|
+
i0.ɵɵlistener("click", function FixtureComponent_Template_a_click_9_listener() { ctx.openFixturePool(); return false; });
|
|
120
|
+
i0.ɵɵelement(10, "i", 6);
|
|
121
|
+
i0.ɵɵelementEnd()()();
|
|
122
|
+
i0.ɵɵelementStart(11, "div", 7);
|
|
123
|
+
i0.ɵɵtemplate(12, FixtureComponent_div_12_Template, 2, 2, "div", 8)(13, FixtureComponent_div_13_Template, 5, 3, "div", 9);
|
|
124
|
+
i0.ɵɵelementEnd()();
|
|
125
|
+
} if (rf & 2) {
|
|
126
|
+
i0.ɵɵclassProp("card-intro-active", ctx.introService.showStep("fixtures"));
|
|
127
|
+
i0.ɵɵadvance(12);
|
|
128
|
+
i0.ɵɵproperty("ngIf", ctx.presetService.selectedPreset);
|
|
129
|
+
i0.ɵɵadvance();
|
|
130
|
+
i0.ɵɵproperty("ngIf", ctx.projectService.project.fixtures.length == 0);
|
|
131
|
+
} }, dependencies: [i6.NgForOf, i6.NgIf, i7.CheckboxControlValueAccessor, i7.NgControlStatus, i7.NgModel, i8.SortablejsDirective, i9.TranslatePipe] }); }
|
|
132
|
+
}
|
|
133
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FixtureComponent, [{
|
|
134
|
+
type: Component,
|
|
135
|
+
args: [{ selector: 'lib-app-fixture', template: "<div class=\"card border-secondary h-100 panel\" [class.card-intro-active]=\"introService.showStep('fixtures')\">\n <div class=\"card-header d-flex\">\n <div>Fixtures</div>\n <div class=\"ml-auto\">\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"selectNone(); (false)\"\n ><i class=\"fa fa-square-o fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"selectAll(); (false)\"\n ><i class=\"fa fa-check-square-o fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"openFixturePool(); (false)\"\n ><i class=\"fa fa-cog fa-fw\" aria-hidden=\"true\"></i\n ></a>\n </div>\n </div>\n\n <div class=\"card-body h-100 p-0\">\n <!-- List of fixtures -->\n <div *ngIf=\"presetService.selectedPreset\" class=\"list-group\" [sortablejs]=\"projectService.project.fixtures\">\n <div\n class=\"list-group-item\"\n *ngFor=\"let item of projectService.project.fixtures\"\n [class.inactive-list-item]=\"!fixtureIsSelected(item)\"\n >\n <div class=\"row d-flex\" (click)=\"selectFixture($event, item)\" style=\"cursor: pointer\">\n <div class=\"col-auto list-sort-handle my-auto\" style=\"cursor: move; cursor: -webkit-grabbing\">\n <i class=\"fa fa-bars\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"form-check\">\n <input type=\"checkbox\" class=\"form-check-input\" id=\"active\" [ngModel]=\"fixtureIsSelected(item)\" />\n </div>\n <div>\n <span class=\"icon-{{ fixtureService.getFixtureIconClass(fixtureService.getProfileByUuid(item.profileUuid)) }} mr-1\"></span>\n {{ item.name }}\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"projectService.project.fixtures.length == 0\" class=\"w-100 h-100 d-flex p-3 text-center\">\n <a href=\"#\" class=\"m-auto\" (click)=\"openFixturePool(); (false)\"\n ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i> {{ 'designer.fixture.no-fixtures' | translate }}</a\n >\n </div>\n </div>\n</div>\n" }]
|
|
136
|
+
}], () => [{ type: i1.ProjectService }, { type: i2.PresetService }, { type: i3.FixturePoolService }, { type: i4.FixtureService }, { type: i5.IntroService }], null); })();
|
|
137
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixtureComponent, { className: "FixtureComponent" }); })();
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7OztJQ2tCckQsQUFMRiwrQkFJQyxjQUN1RjtJQUE5RCxpTkFBUyxxQ0FBMkIsS0FBQztJQUMzRCwrQkFBOEY7SUFDNUYsd0JBQTZDO0lBQy9DLGlCQUFNO0lBQ04sK0JBQXdCO0lBQ3RCLDRCQUFrRztJQUNwRyxpQkFBTTtJQUNOLDJCQUFLO0lBQ0gsdUJBQTJIO0lBQzNILFlBQ0Y7SUFFSixBQURFLEFBREUsaUJBQU0sRUFDRixFQUNGOzs7O0lBZEosd0VBQXFEO0lBT1csZUFBbUM7SUFBbkMsMkRBQW1DO0lBR3pGLGVBQTZHO0lBQTdHLG1KQUE2RztJQUNuSCxjQUNGO0lBREUsNkNBQ0Y7OztJQWhCTiwrQkFBNEc7SUFDMUcseUVBSUM7SUFjSCxpQkFBTTs7O0lBbkJ1RCxtRUFBOEM7SUFHdEYsY0FBa0M7SUFBbEMsZ0VBQWtDOzs7O0lBbUJyRCxBQURGLCtCQUFvRyxZQUUvRjtJQUR3QixrSkFB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b250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaXh0dXJlIH0gZnJvbSAnLi4vbW9kZWxzL2ZpeHR1cmUnO1xuaW1wb3J0IHsgRml4dHVyZVBvb2xTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZml4dHVyZS1wb29sLnNlcnZpY2UnO1xuaW1wb3J0IHsgRml4dHVyZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9maXh0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW50cm9TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW50cm8uc2VydmljZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJlc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9qZWN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWZpeHR1cmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZml4dHVyZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpeHR1cmUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaXh0dXJlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZSxcbiAgICBwdWJsaWMgcHJlc2V0U2VydmljZTogUHJlc2V0U2VydmljZSxcbiAgICBwcml2YXRlIGZpeHR1cmVQb29sU2VydmljZTogRml4dHVyZVBvb2xTZXJ2aWNlLFxuICAgIHB1YmxpYyBmaXh0dXJlU2VydmljZTogRml4dHVyZVNlcnZpY2UsXG4gICAgcHVibGljIGludHJvU2VydmljZTogSW50cm9TZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgZml4dHVyZUlzU2VsZWN0ZWQoZml4dHVyZTogRml4dHVyZSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmZpeHR1cmVTZXJ2aWNlLnNldHRpbmdzU2VsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5maXh0dXJlU2VydmljZS5zZXR0aW5nc0ZpeHR1cmVJc1NlbGVjdGVkKGZpeHR1cmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wcmVzZXRTZXJ2aWNlLmZpeHR1cmVJc1NlbGVjdGVkKGZpeHR1cmUpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEZpeHR1cmUoZXZlbnQ6IGFueSwgZml4dHVyZTogRml4dHVyZSkge1xuICAgIGlmICh0aGlzLmZpeHR1cmVTZXJ2aWNlLnNldHRpbmdzU2VsZWN0aW9uKSB7XG4gICAgICAvLyBzZWxlY3QgZml4dHVyZXMgZm9yIHRoZSBzZXR0aW5nc1xuICAgICAgdGhpcy5maXh0dXJlU2VydmljZS5zd2l0Y2hTZXR0aW5nc0ZpeHR1cmVTZWxlY3Rpb24oZml4dHVyZSk7XG4gICAgICB0aGlzLnByZXNldFNlcnZpY2UuZml4dHVyZVNlbGVjdGlvblNldHRpbmdzQ2hhbmdlZC5uZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlbGVjdCBmaXh0dXJlcyBmb3IgdGhlIGN1cnJlbnQgcHJlc2V0XG4gICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc3dpdGNoRml4dHVyZVNlbGVjdGlvbihmaXh0dXJlKTtcbiAgICAgIHRoaXMucHJlc2V0U2VydmljZS5maXh0dXJlU2VsZWN0aW9uQ2hhbmdlZC5uZXh0KCk7XG4gICAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdEFsbEZpeHR1cmVzKCk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLmZpeHR1cmVTZWxlY3Rpb25DaGFuZ2VkLm5leHQoKTtcbiAgfVxuXG4gIHNlbGVjdE5vbmUoKSB7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdE5vRml4dHVyZXMoKTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2UuZml4dHVyZVNlbGVjdGlvbkNoYW5nZWQubmV4dCgpO1xuICB9XG5cbiAgb3BlbkZpeHR1cmVQb29sKCkge1xuICAgIHRoaXMuZml4dHVyZVBvb2xTZXJ2aWNlLm9wZW4oKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLXNlY29uZGFyeSBoLTEwMCBwYW5lbFwiIFtjbGFzcy5jYXJkLWludHJvLWFjdGl2ZV09XCJpbnRyb1NlcnZpY2Uuc2hvd1N0ZXAoJ2ZpeHR1cmVzJylcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGQtZmxleFwiPlxuICAgIDxkaXY+Rml4dHVyZXM8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWwtYXV0b1wiPlxuICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IG0tMCwgcC0wXCIgKGNsaWNrKT1cInNlbGVjdE5vbmUoKTsgKGZhbHNlKVwiXG4gICAgICAgID48aSBjbGFzcz1cImZhIGZhLXNxdWFyZS1vIGZhLWZ3XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pXG4gICAgICA+PC9hPlxuICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IG0tMCwgcC0wXCIgKGNsaWNrKT1cInNlbGVjdEFsbCgpOyAoZmFsc2UpXCJcbiAgICAgICAgPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2stc3F1YXJlLW8gZmEtZndcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lcbiAgICAgID48L2E+XG4gICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgbS0wLCBwLTBcIiAoY2xpY2spPVwib3BlbkZpeHR1cmVQb29sKCk7IChmYWxzZSlcIlxuICAgICAgICA+PGkgY2xhc3M9XCJmYSBmYS1jb2cgZmEtZndcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lcbiAgICAgID48L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgaC0xMDAgcC0wXCI+XG4gICAgPCEtLSBMaXN0IG9mIGZpeHR1cmVzIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJwcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0XCIgY2xhc3M9XCJsaXN0LWdyb3VwXCIgW3NvcnRhYmxlanNdPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlc1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZXNcIlxuICAgICAgICBbY2xhc3MuaW5hY3RpdmUtbGlzdC1pdGVtXT1cIiFmaXh0dXJlSXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZC1mbGV4XCIgKGNsaWNrKT1cInNlbGVjdEZpeHR1cmUoJGV2ZW50LCBpdGVtKVwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGxpc3Qtc29ydC1oYW5kbGUgbXktYXV0b1wiIHN0eWxlPVwiY3Vyc29yOiBtb3ZlOyBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmdcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFyc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIGlkPVwiYWN0aXZlXCIgW25nTW9kZWxdPVwiZml4dHVyZUlzU2VsZWN0ZWQoaXRlbSlcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24te3sgZml4dHVyZVNlcnZpY2UuZ2V0Rml4dHVyZUljb25DbGFzcyhmaXh0dXJlU2VydmljZS5nZXRQcm9maWxlQnlVdWlkKGl0ZW0ucHJvZmlsZVV1aWQpKSB9fSBtci0xXCI+PC9zcGFuPlxuICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlcy5sZW5ndGggPT0gMFwiIGNsYXNzPVwidy0xMDAgaC0xMDAgZC1mbGV4IHAtMyB0ZXh0LWNlbnRlclwiPlxuICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cIm0tYXV0b1wiIChjbGljayk9XCJvcGVuRml4dHVyZVBvb2woKTsgKGZhbHNlKVwiXG4gICAgICAgID48aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlIGZhLWZ3XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyAnZGVzaWduZXIuZml4dHVyZS5uby1maXh0dXJlcycgfCB0cmFuc2xhdGUgfX08L2FcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { Component, HostListener } from '@angular/core';
|
|
2
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
+
import { BsModalRef } from 'ngx-bootstrap/modal';
|
|
4
|
+
import { ToastrService } from 'ngx-toastr';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { map } from 'rxjs/operators';
|
|
7
|
+
import { FixtureProfile } from '../../models/fixture-profile';
|
|
8
|
+
import { FixtureService } from '../../services/fixture.service';
|
|
9
|
+
import { ProjectService } from '../../services/project.service';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "ngx-bootstrap/modal";
|
|
12
|
+
import * as i2 from "@ngx-translate/core";
|
|
13
|
+
import * as i3 from "ngx-toastr";
|
|
14
|
+
import * as i4 from "../../services/fixture.service";
|
|
15
|
+
import * as i5 from "../../services/project.service";
|
|
16
|
+
import * as i6 from "ngx-dropzone-wrapper";
|
|
17
|
+
export class FixturePoolCreateFromFileComponent {
|
|
18
|
+
constructor(bsModalRef, translateService, toastrService, fixtureService, projectService) {
|
|
19
|
+
this.bsModalRef = bsModalRef;
|
|
20
|
+
this.translateService = translateService;
|
|
21
|
+
this.toastrService = toastrService;
|
|
22
|
+
this.fixtureService = fixtureService;
|
|
23
|
+
this.projectService = projectService;
|
|
24
|
+
this.onClose = new Subject();
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
this.dropzoneConfig = {
|
|
28
|
+
url: 'dummy',
|
|
29
|
+
addRemoveLinks: false,
|
|
30
|
+
maxFilesize: 10 /* 10 MB */,
|
|
31
|
+
acceptedFiles: '.json',
|
|
32
|
+
timeout: 0,
|
|
33
|
+
accept: (file, done) => {
|
|
34
|
+
const reader = new FileReader();
|
|
35
|
+
reader.addEventListener('loadend', (event) => {
|
|
36
|
+
// validate the file
|
|
37
|
+
const text = event.target.result;
|
|
38
|
+
const json = JSON.parse(text);
|
|
39
|
+
if (json['$schema'].match('https://raw.githubusercontent.com/OpenLightingProject/open-fixture-library/schema-(.*)/schemas/fixture.json')) {
|
|
40
|
+
// create the metadata from the file. we don't have the corresponding
|
|
41
|
+
// manufacturer-file, therefore we just assume the attributes from the
|
|
42
|
+
// fixture-file.
|
|
43
|
+
const manufacturerShortName = json['manufacturerKey'];
|
|
44
|
+
const manufacturerName = manufacturerShortName;
|
|
45
|
+
const uuid = manufacturerShortName + '/' + json['fixtureKey'];
|
|
46
|
+
const profile = new FixtureProfile(json);
|
|
47
|
+
profile.manufacturerShortName = manufacturerShortName;
|
|
48
|
+
profile.manufacturerName = manufacturerName;
|
|
49
|
+
profile.uuid = uuid;
|
|
50
|
+
profile.createdFromFile = true;
|
|
51
|
+
// add the profile to the project, if not already added
|
|
52
|
+
const loadedProfile = this.fixtureService.getProfileByUuid(uuid);
|
|
53
|
+
if (!loadedProfile) {
|
|
54
|
+
this.projectService.project.fixtureProfiles.push(profile);
|
|
55
|
+
}
|
|
56
|
+
// add a new fixture from this profile
|
|
57
|
+
this.onClose.next(profile);
|
|
58
|
+
this.bsModalRef.hide();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// show an error toast
|
|
62
|
+
const msg = 'designer.fixture-pool.invalid-fixture-profile-file';
|
|
63
|
+
const title = 'designer.misc.toast-upload-error-title';
|
|
64
|
+
this.translateService.get([msg, title]).subscribe((result) => {
|
|
65
|
+
this.toastrService.error(result[msg], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
done('noerr');
|
|
69
|
+
});
|
|
70
|
+
reader.readAsText(file);
|
|
71
|
+
},
|
|
72
|
+
previewTemplate: `
|
|
73
|
+
<div style="display: none;">
|
|
74
|
+
<!-- No preview -->
|
|
75
|
+
</div>
|
|
76
|
+
`,
|
|
77
|
+
};
|
|
78
|
+
this.translateService
|
|
79
|
+
.get('designer.misc.dropzone-message')
|
|
80
|
+
.pipe(map((result) => {
|
|
81
|
+
this.uploadMessage = '<h3 class="mb-0"><i class="fa fa-cloud-upload"></i></h3>' + result;
|
|
82
|
+
}))
|
|
83
|
+
.subscribe();
|
|
84
|
+
}
|
|
85
|
+
onUploadError(args) {
|
|
86
|
+
if (args[1] === 'noerr') {
|
|
87
|
+
// this error is set in the accept event listener -> everything OK
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const msg = 'designer.misc.toast-upload-error';
|
|
91
|
+
const title = 'designer.misc.toast-upload-error-title';
|
|
92
|
+
this.translateService.get([msg, title]).subscribe((result) => {
|
|
93
|
+
this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
ok() {
|
|
97
|
+
this.onClose.next(undefined);
|
|
98
|
+
this.bsModalRef.hide();
|
|
99
|
+
}
|
|
100
|
+
cancel() {
|
|
101
|
+
this.onClose.next(undefined);
|
|
102
|
+
this.bsModalRef.hide();
|
|
103
|
+
}
|
|
104
|
+
handleKeyboardEvent(event) {
|
|
105
|
+
this.ok();
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = function FixturePoolCreateFromFileComponent_Factory(t) { return new (t || FixturePoolCreateFromFileComponent)(i0.ɵɵdirectiveInject(i1.BsModalRef), i0.ɵɵdirectiveInject(i2.TranslateService), i0.ɵɵdirectiveInject(i3.ToastrService), i0.ɵɵdirectiveInject(i4.FixtureService), i0.ɵɵdirectiveInject(i5.ProjectService)); }; }
|
|
108
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FixturePoolCreateFromFileComponent, selectors: [["lib-fixture-pool-create-from-file"]], hostBindings: function FixturePoolCreateFromFileComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
109
|
+
i0.ɵɵlistener("keydown.enter", function FixturePoolCreateFromFileComponent_keydown_enter_HostBindingHandler($event) { return ctx.handleKeyboardEvent($event); }, false, i0.ɵɵresolveDocument);
|
|
110
|
+
} }, decls: 13, vars: 9, consts: [[1, "modal-header"], [1, "modal-title", "pull-left"], ["type", "button", "aria-label", "Close", 1, "close", "pull-right", 3, "click"], ["aria-hidden", "true"], [1, "modal-body"], [3, "error", "config", "useDropzoneClass", "message"], [1, "modal-footer"], ["type", "button", 1, "btn", "btn-primary", 3, "click"]], template: function FixturePoolCreateFromFileComponent_Template(rf, ctx) { if (rf & 1) {
|
|
111
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "h4", 1);
|
|
112
|
+
i0.ɵɵtext(2);
|
|
113
|
+
i0.ɵɵpipe(3, "translate");
|
|
114
|
+
i0.ɵɵelementEnd();
|
|
115
|
+
i0.ɵɵelementStart(4, "button", 2);
|
|
116
|
+
i0.ɵɵlistener("click", function FixturePoolCreateFromFileComponent_Template_button_click_4_listener() { return ctx.bsModalRef.hide(); });
|
|
117
|
+
i0.ɵɵelementStart(5, "span", 3);
|
|
118
|
+
i0.ɵɵtext(6, "\u00D7");
|
|
119
|
+
i0.ɵɵelementEnd()()();
|
|
120
|
+
i0.ɵɵelementStart(7, "div", 4)(8, "dropzone", 5);
|
|
121
|
+
i0.ɵɵlistener("error", function FixturePoolCreateFromFileComponent_Template_dropzone_error_8_listener($event) { return ctx.onUploadError($event); });
|
|
122
|
+
i0.ɵɵelementEnd()();
|
|
123
|
+
i0.ɵɵelementStart(9, "div", 6)(10, "button", 7);
|
|
124
|
+
i0.ɵɵlistener("click", function FixturePoolCreateFromFileComponent_Template_button_click_10_listener() { return ctx.ok(); });
|
|
125
|
+
i0.ɵɵtext(11);
|
|
126
|
+
i0.ɵɵpipe(12, "translate");
|
|
127
|
+
i0.ɵɵelementEnd()();
|
|
128
|
+
} if (rf & 2) {
|
|
129
|
+
i0.ɵɵadvance(2);
|
|
130
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, "designer.fixture-pool.create-fixture-from-profile-file-dialog-title"));
|
|
131
|
+
i0.ɵɵadvance(6);
|
|
132
|
+
i0.ɵɵproperty("config", ctx.dropzoneConfig)("useDropzoneClass", "false")("message", ctx.uploadMessage);
|
|
133
|
+
i0.ɵɵadvance(3);
|
|
134
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 7, "designer.misc.ok"));
|
|
135
|
+
} }, dependencies: [i6.DropzoneComponent, i2.TranslatePipe] }); }
|
|
136
|
+
}
|
|
137
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FixturePoolCreateFromFileComponent, [{
|
|
138
|
+
type: Component,
|
|
139
|
+
args: [{ selector: 'lib-fixture-pool-create-from-file', template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.fixture-pool.create-fixture-from-profile-file-dialog-title' | translate }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <!-- Dropzone -->\n <dropzone [config]=\"dropzoneConfig\" [useDropzoneClass]=\"'false'\" [message]=\"uploadMessage\" (error)=\"onUploadError($event)\"></dropzone>\n</div>\n<div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n" }]
|
|
140
|
+
}], () => [{ type: i1.BsModalRef }, { type: i2.TranslateService }, { type: i3.ToastrService }, { type: i4.FixtureService }, { type: i5.ProjectService }], { handleKeyboardEvent: [{
|
|
141
|
+
type: HostListener,
|
|
142
|
+
args: ['document:keydown.enter', ['$event']]
|
|
143
|
+
}] }); })();
|
|
144
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixturePoolCreateFromFileComponent, { className: "FixturePoolCreateFromFileComponent" }); })();
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduZXIvc3JjL2xpYi9maXh0dXJlLXBvb2wvZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUvZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduZXIvc3JjL2xpYi9maXh0dXJlLXBvb2wvZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUvZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBT2hFLE1BQU0sT0FBTyxrQ0FBa0M7SUFLN0MsWUFDUyxVQUFzQixFQUNyQixnQkFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsY0FBOEIsRUFDOUIsY0FBOEI7UUFKL0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNy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RUQsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUdELG1CQUFtQixDQUFDLEtBQVU7UUFDNUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ1osQ0FBQzttR0E3R1Usa0NBQWtDO29FQUFsQyxrQ0FBa0M7WUFBbEMsNkhBQUEsK0JBQTJCLGlDQUFPOztZQ2Y3QyxBQURGLDhCQUEwQixZQUNVO1lBQUEsWUFBdUY7O1lBQUEsaUJBQUs7WUFDOUgsaUNBQThGO1lBQTVCLCtHQUFTLHFCQUFpQixJQUFDO1lBQzNGLCtCQUF5QjtZQUFBLHNCQUFPO1lBRXBDLEFBREUsQUFEa0MsaUJBQU8sRUFDaEMsRUFDTDtZQUdKLEFBRkYsOEJBQXdCLGtCQUVxRztZQUFoQyx1SEFBUyx5QkFBcUIsSUFBQztZQUM1SCxBQUQ2SCxpQkFBVyxFQUNsSTtZQUVKLEFBREYsOEJBQTBCLGlCQUNxQztZQUFmLGdIQUFTLFFBQUksSUFBQztZQUFDLGFBQW9DOztZQUNuRyxBQURtRyxpQkFBUyxFQUN0Rzs7WUFYOEIsZUFBdUY7WUFBdkYsaUhBQXVGO1lBTy9HLGVBQXlCO1lBQThCLEFBQTdCLEFBQTFCLDJDQUF5Qiw2QkFBNkIsOEJBQTBCO1lBRzdCLGVBQW9DO1lBQXBDLCtEQUFvQzs7O2lGREt0RixrQ0FBa0M7Y0FMOUMsU0FBUzsyQkFDRSxtQ0FBbUM7Z0tBK0c3QyxtQkFBbUI7a0JBRGxCLFlBQVk7bUJBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O2tGQTFHdkMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRHJvcHpvbmVDb25maWdJbnRlcmZhY2UgfSBmcm9tICduZ3gtZHJvcHpvbmUtd3JhcHBlcic7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGaXh0dXJlUHJvZmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9maXh0dXJlLXByb2ZpbGUnO1xuaW1wb3J0IHsgRml4dHVyZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maXh0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvamVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9qZWN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZml4dHVyZS1wb29sLWNyZWF0ZS1mcm9tLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maXh0dXJlLXBvb2wtY3JlYXRlLWZyb20tZmlsZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZpeHR1cmVQb29sQ3JlYXRlRnJvbUZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZHJvcHpvbmVDb25maWc6IERyb3B6b25lQ29uZmlnSW50ZXJmYWNlO1xuICBwdWJsaWMgdXBsb2FkTWVzc2FnZTogc3RyaW5nO1xuICBwdWJsaWMgb25DbG9zZTogU3ViamVjdDxGaXh0dXJlUHJvZmlsZT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaXh0dXJlU2VydmljZTogRml4dHVyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZHJvcHpvbmVDb25maWcgPSB7XG4gICAgICB1cmw6ICdkdW1teScsXG4gICAgICBhZGRSZW1vdmVMaW5rczogZmFsc2UsXG4gICAgICBtYXhGaWxlc2l6ZTogMTAgLyogMTAgTUIgKi8sXG4gICAgICBhY2NlcHRlZEZpbGVzOiAnLmpzb24nLFxuICAgICAgdGltZW91dDogMCxcbiAgICAgIGFjY2VwdDogKGZpbGU6IGFueSwgZG9uZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdsb2FkZW5kJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgZmlsZVxuICAgICAgICAgIGNvbnN0IHRleHQgPSBldmVudC50YXJnZXQucmVzdWx0O1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHRleHQpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGpzb25bJyRzY2hlbWEnXS5tYXRjaChcbiAgICAgICAgICAgICAgJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PcGVuTGlnaHRpbmdQcm9qZWN0L29wZW4tZml4dHVyZS1saWJyYXJ5L3NjaGVtYS0oLiopL3NjaGVtYXMvZml4dHVyZS5qc29uJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSBtZXRhZGF0YSBmcm9tIHRoZSBmaWxlLiB3ZSBkb24ndCBoYXZlIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAvLyBtYW51ZmFjdHVyZXItZmlsZSwgdGhlcmVmb3JlIHdlIGp1c3QgYXNzdW1lIHRoZSBhdHRyaWJ1dGVzIGZyb20gdGhlXG4gICAgICAgICAgICAvLyBmaXh0dXJlLWZpbGUuXG4gICAgICAgICAgICBjb25zdCBtYW51ZmFjdHVyZXJTaG9ydE5hbWUgPSBqc29uWydtYW51ZmFjdHVyZXJLZXknXTtcbiAgICAgICAgICAgIGNvbnN0IG1hbnVmYWN0dXJlck5hbWUgPSBtYW51ZmFjdHVyZXJTaG9ydE5hbWU7XG4gICAgICAgICAgICBjb25zdCB1dWlkID0gbWFudWZhY3R1cmVyU2hvcnROYW1lICsgJy8nICsganNvblsnZml4dHVyZUtleSddO1xuICAgICAgICAgICAgY29uc3QgcHJvZmlsZSA9IG5ldyBGaXh0dXJlUHJvZmlsZShqc29uKTtcblxuICAgICAgICAgICAgcHJvZmlsZS5tYW51ZmFjdHVyZXJTaG9ydE5hbWUgPSBtYW51ZmFjdHVyZXJTaG9ydE5hbWU7XG4gICAgICAgICAgICBwcm9maWxlLm1hbnVmYWN0dXJlck5hbWUgPSBtYW51ZmFjdHVyZXJOYW1lO1xuICAgICAgICAgICAgcHJvZmlsZS51dWlkID0gdXVpZDtcbiAgICAgICAgICAgIHByb2ZpbGUuY3JlYXRlZEZyb21GaWxlID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gYWRkIHRoZSBwcm9maWxlIHRvIHRoZSBwcm9qZWN0LCBpZiBub3QgYWxyZWFkeSBhZGRlZFxuICAgICAgICAgICAgY29uc3QgbG9hZGVkUHJvZmlsZSA9IHRoaXMuZml4dHVyZVNlcnZpY2UuZ2V0UHJvZmlsZUJ5VXVpZCh1dWlkKTtcbiAgICAgICAgICAgIGlmICghbG9hZGVkUHJvZmlsZSkge1xuICAgICAgICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZVByb2ZpbGVzLnB1c2gocHJvZmlsZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGFkZCBhIG5ldyBmaXh0dXJlIGZyb20gdGhpcyBwcm9maWxlXG4gICAgICAgICAgICB0aGlzLm9uQ2xvc2UubmV4dChwcm9maWxlKTtcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNob3cgYW4gZXJyb3IgdG9hc3RcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9ICdkZXNpZ25lci5maXh0dXJlLXBvb2wuaW52YWxpZC1maXh0dXJlLXByb2ZpbGUtZmlsZSc7XG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9ICdkZXNpZ25lci5taXNjLnRvYXN0LXVwbG9hZC1lcnJvci10aXRsZSc7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KFttc2csIHRpdGxlXSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLmVycm9yKHJlc3VsdFttc2ddLCByZXN1bHRbdGl0bGVdLCB7IHRpbWVPdXQ6IDAsIGV4dGVuZGVkVGltZU91dDogMCwgZW5hYmxlSHRtbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUoJ25vZXJyJyk7XG4gICAgICAgIH0pO1xuICAgICAgICByZWFkZXIucmVhZEFzVGV4dChmaWxlKTtcbiAgICAgIH0sXG4gICAgICBwcmV2aWV3VGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPlxuICAgICAgICA8IS0tIE5vIHByZXZpZXcgLS0+XG4gICAgICA8L2Rpdj5cbiAgICAgIGAsXG4gICAgfTtcblxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgLmdldCgnZGVzaWduZXIubWlzYy5kcm9wem9uZS1tZXNzYWdlJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkTWVzc2FnZSA9ICc8aDMgY2xhc3M9XCJtYi0wXCI+PGkgY2xhc3M9XCJmYSBmYS1jbG91ZC11cGxvYWRcIj48L2k+PC9oMz4nICsgcmVzdWx0O1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uVXBsb2FkRXJyb3IoYXJnczogYW55KSB7XG4gICAgaWYgKGFyZ3NbMV0gPT09ICdub2VycicpIHtcbiAgICAgIC8vIHRoaXMgZXJyb3IgaXMgc2V0IGluIHRoZSBhY2NlcHQgZXZlbnQgbGlzdGVuZXIgLT4gZXZlcnl0aGluZyBPS1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1zZyA9ICdkZXNpZ25lci5taXNjLnRvYXN0LXVwbG9hZC1lcnJvcic7XG4gICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIubWlzYy50b2FzdC11cGxvYWQtZXJyb3ItdGl0bGUnO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLmVycm9yKHJlc3VsdFttc2ddICsgYXJnc1sxXSwgcmVzdWx0W3RpdGxlXSwgeyB0aW1lT3V0OiAwLCBleHRlbmRlZFRpbWVPdXQ6IDAsIGVuYWJsZUh0bWw6IHRydWUgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvaygpIHtcbiAgICB0aGlzLm9uQ2xvc2UubmV4dCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5vbkNsb3NlLm5leHQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMub2soKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZSBwdWxsLWxlZnRcIj57eyAnZGVzaWduZXIuZml4dHVyZS1wb29sLmNyZWF0ZS1maXh0dXJlLWZyb20tcHJvZmlsZS1maWxlLWRpYWxvZy10aXRsZScgfCB0cmFuc2xhdGUgfX08L2g0PlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlIHB1bGwtcmlnaHRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwiYnNNb2RhbFJlZi5oaWRlKClcIj5cbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgPCEtLSBEcm9wem9uZSAtLT5cbiAgPGRyb3B6b25lIFtjb25maWddPVwiZHJvcHpvbmVDb25maWdcIiBbdXNlRHJvcHpvbmVDbGFzc109XCInZmFsc2UnXCIgW21lc3NhZ2VdPVwidXBsb2FkTWVzc2FnZVwiIChlcnJvcik9XCJvblVwbG9hZEVycm9yKCRldmVudClcIj48L2Ryb3B6b25lPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9rKClcIj57eyAnZGVzaWduZXIubWlzYy5vaycgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvZGl2PlxuIl19
|