@rocketshow/designer 1.31.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 -9947
- 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.31.0.tgz +0 -0
- package/rocketshow-designer.d.ts +0 -60
- package/rocketshow-designer.metadata.json +0 -1
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Component, HostListener } from '@angular/core';
|
|
3
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
+
import { BsModalRef } from 'ngx-bootstrap/modal';
|
|
5
|
+
import { ToastrService } from 'ngx-toastr';
|
|
6
|
+
import { Subject } from 'rxjs';
|
|
7
|
+
import { map } from 'rxjs/operators';
|
|
8
|
+
import { ConfigService } from '../../services/config.service';
|
|
9
|
+
import { ProjectService } from '../../services/project.service';
|
|
10
|
+
import { TimelineService } from '../../services/timeline.service';
|
|
11
|
+
import { WarningDialogService } from '../../services/warning-dialog.service';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "ngx-bootstrap/modal";
|
|
14
|
+
import * as i2 from "../../services/timeline.service";
|
|
15
|
+
import * as i3 from "../../services/config.service";
|
|
16
|
+
import * as i4 from "@ngx-translate/core";
|
|
17
|
+
import * as i5 from "@angular/common/http";
|
|
18
|
+
import * as i6 from "../../services/warning-dialog.service";
|
|
19
|
+
import * as i7 from "ngx-toastr";
|
|
20
|
+
import * as i8 from "../../services/project.service";
|
|
21
|
+
import * as i9 from "@angular/common";
|
|
22
|
+
import * as i10 from "@angular/forms";
|
|
23
|
+
import * as i11 from "ngx-bootstrap/typeahead";
|
|
24
|
+
import * as i12 from "ngx-dropzone-wrapper";
|
|
25
|
+
import * as i13 from "../../array-sort-pipe";
|
|
26
|
+
function CompositionSettingsComponent_div_22_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵelementStart(0, "div");
|
|
28
|
+
i0.ɵɵtext(1);
|
|
29
|
+
i0.ɵɵpipe(2, "translate");
|
|
30
|
+
i0.ɵɵelementEnd();
|
|
31
|
+
} if (rf & 2) {
|
|
32
|
+
i0.ɵɵadvance();
|
|
33
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "designer.timeline.composition-no-file-selected"), " ");
|
|
34
|
+
} }
|
|
35
|
+
function CompositionSettingsComponent_div_22_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
i0.ɵɵelementStart(0, "div");
|
|
37
|
+
i0.ɵɵtext(1);
|
|
38
|
+
i0.ɵɵelementEnd();
|
|
39
|
+
} if (rf & 2) {
|
|
40
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
41
|
+
i0.ɵɵadvance();
|
|
42
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.composition.audioFileName, " ");
|
|
43
|
+
} }
|
|
44
|
+
function CompositionSettingsComponent_div_22_ul_6_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
+
i0.ɵɵelementStart(0, "ul", 30)(1, "li", 31)(2, "a", 32);
|
|
46
|
+
i0.ɵɵelement(3, "i", 33);
|
|
47
|
+
i0.ɵɵtext(4);
|
|
48
|
+
i0.ɵɵpipe(5, "translate");
|
|
49
|
+
i0.ɵɵelementEnd()();
|
|
50
|
+
i0.ɵɵelementStart(6, "li", 31)(7, "a", 34);
|
|
51
|
+
i0.ɵɵelement(8, "i", 35);
|
|
52
|
+
i0.ɵɵtext(9);
|
|
53
|
+
i0.ɵɵpipe(10, "translate");
|
|
54
|
+
i0.ɵɵelementEnd()()();
|
|
55
|
+
} if (rf & 2) {
|
|
56
|
+
i0.ɵɵadvance(4);
|
|
57
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 2, "designer.timeline.composition-file-upload"), " ");
|
|
58
|
+
i0.ɵɵadvance(5);
|
|
59
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 4, "designer.timeline.composition-file-library"), " ");
|
|
60
|
+
} }
|
|
61
|
+
function CompositionSettingsComponent_div_22_a_16_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
63
|
+
i0.ɵɵelementStart(0, "a", 36);
|
|
64
|
+
i0.ɵɵlistener("click", function CompositionSettingsComponent_div_22_a_16_Template_a_click_0_listener() { const existingFile_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.selectExistingFile(existingFile_r4); return i0.ɵɵresetView(false); });
|
|
65
|
+
i0.ɵɵelementStart(1, "div", 15)(2, "div", 37);
|
|
66
|
+
i0.ɵɵtext(3);
|
|
67
|
+
i0.ɵɵelementEnd();
|
|
68
|
+
i0.ɵɵelementStart(4, "div", 38);
|
|
69
|
+
i0.ɵɵlistener("click", function CompositionSettingsComponent_div_22_a_16_Template_div_click_4_listener() { const existingFile_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.deleteFile(existingFile_r4); return i0.ɵɵresetView(false); });
|
|
70
|
+
i0.ɵɵelement(5, "i", 39);
|
|
71
|
+
i0.ɵɵelementEnd()()();
|
|
72
|
+
} if (rf & 2) {
|
|
73
|
+
const existingFile_r4 = ctx.$implicit;
|
|
74
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
75
|
+
i0.ɵɵclassProp("active", ctx_r1.composition.audioFileName == existingFile_r4);
|
|
76
|
+
i0.ɵɵadvance(3);
|
|
77
|
+
i0.ɵɵtextInterpolate1(" ", existingFile_r4, " ");
|
|
78
|
+
} }
|
|
79
|
+
function CompositionSettingsComponent_div_22_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
81
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 16)(2, "div", 17)(3, "div", 18);
|
|
82
|
+
i0.ɵɵtemplate(4, CompositionSettingsComponent_div_22_div_4_Template, 3, 3, "div", 19)(5, CompositionSettingsComponent_div_22_div_5_Template, 2, 1, "div", 19);
|
|
83
|
+
i0.ɵɵelementEnd()();
|
|
84
|
+
i0.ɵɵtemplate(6, CompositionSettingsComponent_div_22_ul_6_Template, 11, 6, "ul", 20);
|
|
85
|
+
i0.ɵɵelementStart(7, "div", 21)(8, "div", 22)(9, "dropzone", 23);
|
|
86
|
+
i0.ɵɵlistener("error", function CompositionSettingsComponent_div_22_Template_dropzone_error_9_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onUploadError($event)); })("success", function CompositionSettingsComponent_div_22_Template_dropzone_success_9_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onUploadSuccess($event)); })("queuecomplete", function CompositionSettingsComponent_div_22_Template_dropzone_queuecomplete_9_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onQueueComplete($event)); })("addedfile", function CompositionSettingsComponent_div_22_Template_dropzone_addedfile_9_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAddedFile($event)); });
|
|
87
|
+
i0.ɵɵelementEnd()();
|
|
88
|
+
i0.ɵɵelementStart(10, "div", 24)(11, "input", 25);
|
|
89
|
+
i0.ɵɵpipe(12, "translate");
|
|
90
|
+
i0.ɵɵlistener("input", function CompositionSettingsComponent_div_22_Template_input_input_11_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.filterExistingFiles($event.target.value)); });
|
|
91
|
+
i0.ɵɵelementEnd();
|
|
92
|
+
i0.ɵɵelementStart(13, "div", 26)(14, "div", 27)(15, "div", 28);
|
|
93
|
+
i0.ɵɵtemplate(16, CompositionSettingsComponent_div_22_a_16_Template, 6, 3, "a", 29);
|
|
94
|
+
i0.ɵɵpipe(17, "sort");
|
|
95
|
+
i0.ɵɵelementEnd()()()()()()();
|
|
96
|
+
} if (rf & 2) {
|
|
97
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
98
|
+
i0.ɵɵadvance(4);
|
|
99
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.composition.audioFileName);
|
|
100
|
+
i0.ɵɵadvance();
|
|
101
|
+
i0.ɵɵproperty("ngIf", ctx_r1.composition.audioFileName);
|
|
102
|
+
i0.ɵɵadvance();
|
|
103
|
+
i0.ɵɵproperty("ngIf", ctx_r1.configService.enableMediaLibrary);
|
|
104
|
+
i0.ɵɵadvance(3);
|
|
105
|
+
i0.ɵɵproperty("config", ctx_r1.dropzoneConfig)("useDropzoneClass", "false")("message", ctx_r1.uploadMessage);
|
|
106
|
+
i0.ɵɵadvance(2);
|
|
107
|
+
i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(12, 8, "designer.misc.search"));
|
|
108
|
+
i0.ɵɵadvance(5);
|
|
109
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind2(17, 10, ctx_r1.filteredExistingFiles, "name"));
|
|
110
|
+
} }
|
|
111
|
+
export class CompositionSettingsComponent {
|
|
112
|
+
constructor(bsModalRef, timelineService, configService, translateService, http, warningDialogService, toastrService, projectService) {
|
|
113
|
+
this.bsModalRef = bsModalRef;
|
|
114
|
+
this.timelineService = timelineService;
|
|
115
|
+
this.configService = configService;
|
|
116
|
+
this.translateService = translateService;
|
|
117
|
+
this.http = http;
|
|
118
|
+
this.warningDialogService = warningDialogService;
|
|
119
|
+
this.toastrService = toastrService;
|
|
120
|
+
this.projectService = projectService;
|
|
121
|
+
this.existingCompositionNames = [];
|
|
122
|
+
this.onClose = new Subject();
|
|
123
|
+
this.existingFiles = [];
|
|
124
|
+
this.filteredExistingFiles = [];
|
|
125
|
+
this.uploading = false;
|
|
126
|
+
}
|
|
127
|
+
ngOnInit() {
|
|
128
|
+
const projectId = this.projectService.project.id ? this.projectService.project.id : '';
|
|
129
|
+
this.dropzoneConfig = {
|
|
130
|
+
url: this.configService.restUrl + 'file/upload?compositionUuid=' + this.composition.uuid + '&projectId=' + projectId,
|
|
131
|
+
addRemoveLinks: false,
|
|
132
|
+
maxFilesize: 100 /* 100 MB */,
|
|
133
|
+
acceptedFiles: 'audio/*',
|
|
134
|
+
timeout: 0,
|
|
135
|
+
parallelUploads: 1,
|
|
136
|
+
previewTemplate: `
|
|
137
|
+
<div class="dz-preview dz-file-preview">
|
|
138
|
+
<!-- The attachment details -->
|
|
139
|
+
<div class="dz-details" style="text-align: left">
|
|
140
|
+
<i class="fa fa-file-o"></i> <span data-dz-name></span> <small>
|
|
141
|
+
<span class="label label-default file-size" data-dz-size></span></small>
|
|
142
|
+
</div>
|
|
143
|
+
|
|
144
|
+
<!--div class="mt-5">
|
|
145
|
+
<span data-dz-errormessage></span>
|
|
146
|
+
</div-->
|
|
147
|
+
|
|
148
|
+
<div class="progress mt-4 mb-1" style="height: 10px">
|
|
149
|
+
<div class="progress-bar progress-bar-striped progress-bar-animated"
|
|
150
|
+
role="progressbar" style="width:0%;" data-dz-uploadprogress>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
`,
|
|
155
|
+
};
|
|
156
|
+
this.translateService
|
|
157
|
+
.get('designer.misc.dropzone-message')
|
|
158
|
+
.pipe(map((result) => {
|
|
159
|
+
this.uploadMessage = '<h3 class="mb-0"><i class="fa fa-cloud-upload"></i></h3>' + result;
|
|
160
|
+
}))
|
|
161
|
+
.subscribe();
|
|
162
|
+
this.loadFiles();
|
|
163
|
+
if (this.timelineService.externalCompositionsAvailable) {
|
|
164
|
+
this.timelineService.getExternalCompositionNames().subscribe((compositionNames) => {
|
|
165
|
+
this.existingCompositionNames = compositionNames;
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
ok() {
|
|
170
|
+
this.onClose.next(1);
|
|
171
|
+
this.bsModalRef.hide();
|
|
172
|
+
}
|
|
173
|
+
cancel() {
|
|
174
|
+
this.onClose.next(2);
|
|
175
|
+
this.bsModalRef.hide();
|
|
176
|
+
}
|
|
177
|
+
handleKeyboardEvent(event) {
|
|
178
|
+
this.ok();
|
|
179
|
+
}
|
|
180
|
+
getNameFromFile(data) {
|
|
181
|
+
return data.name;
|
|
182
|
+
}
|
|
183
|
+
loadFiles() {
|
|
184
|
+
if (!this.configService.enableMediaLibrary) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
this.http
|
|
188
|
+
.get('file/list')
|
|
189
|
+
.pipe(map((response) => {
|
|
190
|
+
this.existingFiles = [];
|
|
191
|
+
for (const file of response) {
|
|
192
|
+
// only load audio files
|
|
193
|
+
if (file.audioFile) {
|
|
194
|
+
this.existingFiles.push(this.getNameFromFile(file.audioFile));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
this.filterExistingFiles();
|
|
198
|
+
}))
|
|
199
|
+
.subscribe();
|
|
200
|
+
}
|
|
201
|
+
onUploadError(args) {
|
|
202
|
+
const msg = 'designer.misc.toast-upload-error';
|
|
203
|
+
const title = 'designer.misc.toast-upload-error-title';
|
|
204
|
+
this.translateService.get([msg, title]).subscribe((result) => {
|
|
205
|
+
this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });
|
|
206
|
+
// Hide the preview element
|
|
207
|
+
args[0].previewElement.hidden = true;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
onUploadSuccess(args) {
|
|
211
|
+
this.loadFiles();
|
|
212
|
+
// allow to guess the bpm of the newly uploaded file
|
|
213
|
+
this.composition.tempoGuessed = false;
|
|
214
|
+
// hide the preview element
|
|
215
|
+
args[0].previewElement.hidden = true;
|
|
216
|
+
// select this file
|
|
217
|
+
this.composition.audioFileName = args[0].name;
|
|
218
|
+
if (this.configService.enableMediaLibrary) {
|
|
219
|
+
// the file has been uploaded to the media library
|
|
220
|
+
this.composition.audioFileInLibrary = true;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
onQueueComplete(args) {
|
|
224
|
+
this.uploading = false;
|
|
225
|
+
}
|
|
226
|
+
onAddedFile(args) {
|
|
227
|
+
this.uploading = true;
|
|
228
|
+
}
|
|
229
|
+
// Filter the existing files
|
|
230
|
+
filterExistingFiles(searchValue) {
|
|
231
|
+
if (!searchValue) {
|
|
232
|
+
this.filteredExistingFiles = this.existingFiles;
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
this.filteredExistingFiles = [];
|
|
236
|
+
for (const file of this.existingFiles) {
|
|
237
|
+
if (file.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1) {
|
|
238
|
+
this.filteredExistingFiles.push(file);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
selectExistingFile(existingFile) {
|
|
243
|
+
this.composition.audioFileName = existingFile;
|
|
244
|
+
// the file has been selected from the media library
|
|
245
|
+
this.composition.audioFileInLibrary = true;
|
|
246
|
+
}
|
|
247
|
+
deleteFile(existingFile) {
|
|
248
|
+
this.warningDialogService
|
|
249
|
+
.show('designer.timeline.warning-delete-file')
|
|
250
|
+
.pipe(map((result) => {
|
|
251
|
+
if (result) {
|
|
252
|
+
this.http
|
|
253
|
+
.post('file/delete?name=' + existingFile + '&type=AUDIO', undefined)
|
|
254
|
+
.pipe(map((response) => {
|
|
255
|
+
this.loadFiles();
|
|
256
|
+
}))
|
|
257
|
+
.subscribe();
|
|
258
|
+
}
|
|
259
|
+
}))
|
|
260
|
+
.subscribe();
|
|
261
|
+
}
|
|
262
|
+
static { this.ɵfac = function CompositionSettingsComponent_Factory(t) { return new (t || CompositionSettingsComponent)(i0.ɵɵdirectiveInject(i1.BsModalRef), i0.ɵɵdirectiveInject(i2.TimelineService), i0.ɵɵdirectiveInject(i3.ConfigService), i0.ɵɵdirectiveInject(i4.TranslateService), i0.ɵɵdirectiveInject(i5.HttpClient), i0.ɵɵdirectiveInject(i6.WarningDialogService), i0.ɵɵdirectiveInject(i7.ToastrService), i0.ɵɵdirectiveInject(i8.ProjectService)); }; }
|
|
263
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CompositionSettingsComponent, selectors: [["lib-app-composition-settings"]], hostBindings: function CompositionSettingsComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
264
|
+
i0.ɵɵlistener("keydown.enter", function CompositionSettingsComponent_keydown_enter_HostBindingHandler($event) { return ctx.handleKeyboardEvent($event); }, false, i0.ɵɵresolveDocument);
|
|
265
|
+
} }, decls: 30, vars: 21, 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"], [1, "form-group", "row"], [1, "col-lg-4", "col-form-label"], [1, "col-lg-8", "d-flex"], ["type", "text", 1, "form-control", 3, "ngModelChange", "ngModel", "typeahead"], [1, "custom-select", 3, "ngModelChange", "ngModel"], ["value", "audio"], ["class", "row", 4, "ngIf"], [1, "modal-footer"], ["href", "#", "role", "button", 1, "mr-3", "my-auto", 3, "click"], ["type", "button", 1, "btn", "btn-primary", 3, "click", "disabled"], [1, "row"], [1, "px-3", "w-100"], [1, "card", "border-secondary", "mb-3"], [1, "card-body"], [4, "ngIf"], ["class", "nav nav-tabs mb-3", "id", "myTab", "role", "tablist", 4, "ngIf"], ["id", "myTabContent", 1, "tab-content"], ["id", "upload", "role", "tabpanel", 1, "tab-pane", "fade", "show", "active"], [3, "error", "success", "queuecomplete", "addedfile", "config", "useDropzoneClass", "message"], ["id", "media-library", "role", "tabpanel", 1, "tab-pane", "fade"], ["type", "text", "id", "searchFileList", 1, "form-control", "input-block", "mb-3", 3, "input", "placeholder"], [1, "card", "border-secondary", 2, "height", "200px", "overflow-y", "scroll"], [1, "card-body", "p-0"], [1, "list-group", "list-group-flush"], ["class", "list-group-item", "href", "#", 3, "active", "click", 4, "ngFor", "ngForOf"], ["id", "myTab", "role", "tablist", 1, "nav", "nav-tabs", "mb-3"], [1, "nav-item"], ["id", "upload-tab", "data-toggle", "tab", "href", "#upload", "role", "tab", 1, "nav-link", "active"], ["aria-hidden", "true", 1, "fa", "fa-upload"], ["id", "media-library-tab", "data-toggle", "tab", "href", "#media-library", "role", "tab", 1, "nav-link"], ["aria-hidden", "true", 1, "fa", "fa-folder-o"], ["href", "#", 1, "list-group-item", 3, "click"], [1, "col-auto", "my-auto", "flex-grow", "text-break-word"], [1, "col-auto", "my-auto", "pl-0", "text-danger", "float-right", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-trash-o"]], template: function CompositionSettingsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
266
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "h4", 1);
|
|
267
|
+
i0.ɵɵtext(2);
|
|
268
|
+
i0.ɵɵelementEnd();
|
|
269
|
+
i0.ɵɵelementStart(3, "button", 2);
|
|
270
|
+
i0.ɵɵlistener("click", function CompositionSettingsComponent_Template_button_click_3_listener() { return ctx.bsModalRef.hide(); });
|
|
271
|
+
i0.ɵɵelementStart(4, "span", 3);
|
|
272
|
+
i0.ɵɵtext(5, "\u00D7");
|
|
273
|
+
i0.ɵɵelementEnd()()();
|
|
274
|
+
i0.ɵɵelementStart(6, "div", 4)(7, "div", 5)(8, "label", 6);
|
|
275
|
+
i0.ɵɵtext(9);
|
|
276
|
+
i0.ɵɵpipe(10, "translate");
|
|
277
|
+
i0.ɵɵelementEnd();
|
|
278
|
+
i0.ɵɵelementStart(11, "div", 7)(12, "input", 8);
|
|
279
|
+
i0.ɵɵlistener("ngModelChange", function CompositionSettingsComponent_Template_input_ngModelChange_12_listener($event) { return ctx.composition.name = $event; });
|
|
280
|
+
i0.ɵɵelementEnd()()();
|
|
281
|
+
i0.ɵɵelementStart(13, "div", 5)(14, "label", 6);
|
|
282
|
+
i0.ɵɵtext(15);
|
|
283
|
+
i0.ɵɵpipe(16, "translate");
|
|
284
|
+
i0.ɵɵelementEnd();
|
|
285
|
+
i0.ɵɵelementStart(17, "div", 7)(18, "select", 9);
|
|
286
|
+
i0.ɵɵlistener("ngModelChange", function CompositionSettingsComponent_Template_select_ngModelChange_18_listener($event) { return ctx.composition.syncType = $event; });
|
|
287
|
+
i0.ɵɵelementStart(19, "option", 10);
|
|
288
|
+
i0.ɵɵtext(20);
|
|
289
|
+
i0.ɵɵpipe(21, "translate");
|
|
290
|
+
i0.ɵɵelementEnd()()()();
|
|
291
|
+
i0.ɵɵtemplate(22, CompositionSettingsComponent_div_22_Template, 18, 13, "div", 11);
|
|
292
|
+
i0.ɵɵelementEnd();
|
|
293
|
+
i0.ɵɵelementStart(23, "div", 12)(24, "a", 13);
|
|
294
|
+
i0.ɵɵlistener("click", function CompositionSettingsComponent_Template_a_click_24_listener() { ctx.cancel(); return false; });
|
|
295
|
+
i0.ɵɵtext(25);
|
|
296
|
+
i0.ɵɵpipe(26, "translate");
|
|
297
|
+
i0.ɵɵelementEnd();
|
|
298
|
+
i0.ɵɵelementStart(27, "button", 14);
|
|
299
|
+
i0.ɵɵlistener("click", function CompositionSettingsComponent_Template_button_click_27_listener() { return ctx.ok(); });
|
|
300
|
+
i0.ɵɵtext(28);
|
|
301
|
+
i0.ɵɵpipe(29, "translate");
|
|
302
|
+
i0.ɵɵelementEnd()();
|
|
303
|
+
} if (rf & 2) {
|
|
304
|
+
i0.ɵɵadvance(2);
|
|
305
|
+
i0.ɵɵtextInterpolate(ctx.composition.name);
|
|
306
|
+
i0.ɵɵadvance(7);
|
|
307
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(10, 11, "designer.timeline.composition-name"));
|
|
308
|
+
i0.ɵɵadvance(3);
|
|
309
|
+
i0.ɵɵproperty("ngModel", ctx.composition.name)("typeahead", ctx.existingCompositionNames);
|
|
310
|
+
i0.ɵɵadvance(3);
|
|
311
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(16, 13, "designer.timeline.composition-sync-type"));
|
|
312
|
+
i0.ɵɵadvance(3);
|
|
313
|
+
i0.ɵɵproperty("ngModel", ctx.composition.syncType);
|
|
314
|
+
i0.ɵɵadvance(2);
|
|
315
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(21, 15, "designer.timeline.composition-sync-type-audio"));
|
|
316
|
+
i0.ɵɵadvance(2);
|
|
317
|
+
i0.ɵɵproperty("ngIf", ctx.composition.syncType == "audio");
|
|
318
|
+
i0.ɵɵadvance(3);
|
|
319
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 17, "designer.misc.cancel"), " ");
|
|
320
|
+
i0.ɵɵadvance(2);
|
|
321
|
+
i0.ɵɵproperty("disabled", ctx.uploading);
|
|
322
|
+
i0.ɵɵadvance();
|
|
323
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(29, 19, "designer.misc.ok"));
|
|
324
|
+
} }, dependencies: [i9.NgForOf, i9.NgIf, i10.NgSelectOption, i10.ɵNgSelectMultipleOption, i10.DefaultValueAccessor, i10.SelectControlValueAccessor, i10.NgControlStatus, i10.NgModel, i11.TypeaheadDirective, i12.DropzoneComponent, i4.TranslatePipe, i13.ArraySortPipe] }); }
|
|
325
|
+
}
|
|
326
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompositionSettingsComponent, [{
|
|
327
|
+
type: Component,
|
|
328
|
+
args: [{ selector: 'lib-app-composition-settings', template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ composition.name }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.composition-name' | translate }}</label>\n <div class=\"col-lg-8 d-flex\">\n <input\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"composition.name\"\n (ngModelChange)=\"composition.name = $event\"\n [typeahead]=\"existingCompositionNames\"\n />\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.composition-sync-type' | translate }}</label>\n <div class=\"col-lg-8 d-flex\">\n <select class=\"custom-select\" [ngModel]=\"composition.syncType\" (ngModelChange)=\"composition.syncType = $event\">\n <!-- TODO -->\n <!-- <option value=\"none\">{{ 'designer.timeline.composition-sync-type-none' | translate }}</option> -->\n <option value=\"audio\">{{ 'designer.timeline.composition-sync-type-audio' | translate }}</option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"composition.syncType == 'audio'\" class=\"row\">\n <div class=\"px-3 w-100\">\n <!-- Selected file -->\n <div class=\"card border-secondary mb-3\">\n <div class=\"card-body\">\n <!-- No file selected -->\n <div *ngIf=\"!composition.audioFileName\">\n {{ 'designer.timeline.composition-no-file-selected' | translate }}\n </div>\n\n <!-- A file is selected -->\n <div *ngIf=\"composition.audioFileName\">\n {{ composition.audioFileName }}\n </div>\n </div>\n </div>\n\n <!-- Choose file -->\n <ul *ngIf=\"configService.enableMediaLibrary\" class=\"nav nav-tabs mb-3\" id=\"myTab\" role=\"tablist\">\n <li class=\"nav-item\">\n <a class=\"nav-link active\" id=\"upload-tab\" data-toggle=\"tab\" href=\"#upload\" role=\"tab\">\n <i class=\"fa fa-upload\" aria-hidden=\"true\"></i>\n {{ 'designer.timeline.composition-file-upload' | translate }}\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" id=\"media-library-tab\" data-toggle=\"tab\" href=\"#media-library\" role=\"tab\">\n <i class=\"fa fa-folder-o\" aria-hidden=\"true\"></i>\n {{ 'designer.timeline.composition-file-library' | translate }}\n </a>\n </li>\n </ul>\n\n <div class=\"tab-content\" id=\"myTabContent\">\n <!-- Upload -->\n <div class=\"tab-pane fade show active\" id=\"upload\" role=\"tabpanel\">\n <!-- Dropzone -->\n <dropzone\n [config]=\"dropzoneConfig\"\n [useDropzoneClass]=\"'false'\"\n [message]=\"uploadMessage\"\n (error)=\"onUploadError($event)\"\n (success)=\"onUploadSuccess($event)\"\n (queuecomplete)=\"onQueueComplete($event)\"\n (addedfile)=\"onAddedFile($event)\"\n ></dropzone>\n </div>\n\n <!-- Media library -->\n <div class=\"tab-pane fade\" id=\"media-library\" role=\"tabpanel\">\n <input\n type=\"text\"\n class=\"form-control input-block mb-3\"\n id=\"searchFileList\"\n placeholder=\"{{ 'designer.misc.search' | translate }}\"\n (input)=\"filterExistingFiles($event.target.value)\"\n />\n\n <div class=\"card border-secondary\" style=\"height: 200px; overflow-y: scroll\">\n <div class=\"card-body p-0\">\n <div class=\"list-group list-group-flush\">\n <a\n *ngFor=\"let existingFile of filteredExistingFiles | sort: 'name'\"\n class=\"list-group-item\"\n [class.active]=\"composition.audioFileName == existingFile\"\n href=\"#\"\n (click)=\"selectExistingFile(existingFile); (false)\"\n >\n <div class=\"row\">\n <div class=\"col-auto my-auto flex-grow text-break-word\">\n {{ existingFile }}\n </div>\n\n <div class=\"col-auto my-auto pl-0 text-danger float-right\" (click)=\"deleteFile(existingFile); (false)\">\n <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </div>\n </div>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n {{ 'designer.misc.cancel' | translate }}\n </a>\n <button [disabled]=\"uploading\" type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n" }]
|
|
329
|
+
}], () => [{ type: i1.BsModalRef }, { type: i2.TimelineService }, { type: i3.ConfigService }, { type: i4.TranslateService }, { type: i5.HttpClient }, { type: i6.WarningDialogService }, { type: i7.ToastrService }, { type: i8.ProjectService }], { handleKeyboardEvent: [{
|
|
330
|
+
type: HostListener,
|
|
331
|
+
args: ['document:keydown.enter', ['$event']]
|
|
332
|
+
}] }); })();
|
|
333
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompositionSettingsComponent, { className: "CompositionSettingsComponent" }); })();
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRpb24tc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduZXIvc3JjL2xpYi90aW1lbGluZS9jb21wb3NpdGlvbi1zZXR0aW5ncy9jb21wb3NpdGlvbi1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3RpbWVsaW5lL2NvbXBvc2l0aW9uLXNldHRpbmdzL2NvbXBvc2l0aW9uLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztJQ3lCbkUsMkJBQXdDO0lBQ3RDLFlBQ0Y7O0lBQUEsaUJBQU07O0lBREosY0FDRjtJQURFLHVHQUNGOzs7SUFHQSwyQkFBdUM7SUFD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b3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IERyb3B6b25lQ29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnbmd4LWRyb3B6b25lLXdyYXBwZXInO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tcG9zaXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9zaXRpb24nO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFRpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpbWVsaW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2FybmluZ0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93YXJuaW5nLWRpYWxvZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1jb21wb3NpdGlvbi1zZXR0aW5ncycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wb3NpdGlvbi1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbXBvc2l0aW9uLXNldHRpbmdzLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9zaXRpb25TZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbXBvc2l0aW9uOiBDb21wb3NpdGlvbjtcbiAgZXhpc3RpbmdDb21wb3NpdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyBvbkNsb3NlOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHB1YmxpYyBkcm9wem9uZUNvbmZpZzogRHJvcHpvbmVDb25maWdJbnRlcmZhY2U7XG4gIHB1YmxpYyB1cGxvYWRNZXNzYWdlOiBzdHJpbmc7XG5cbiAgcHVibGljIGV4aXN0aW5nRmlsZXM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBmaWx0ZXJlZEV4aXN0aW5nRmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgcHVibGljIHVwbG9hZGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgdGltZWxpbmVTZXJ2aWNlOiBUaW1lbGluZVNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHdhcm5pbmdEaWFsb2dTZXJ2aWNlOiBXYXJuaW5nRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHByb2plY3RJZCA9IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5pZCA/IHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5pZCA6ICcnO1xuICAgIHRoaXMuZHJvcHpvbmVDb25maWcgPSB7XG4gICAgICB1cmw6IHRoaXMuY29uZmlnU2VydmljZS5yZXN0VXJsICsgJ2ZpbGUvdXBsb2FkP2NvbXBvc2l0aW9uVXVpZD0nICsgdGhpcy5jb21wb3NpdGlvbi51dWlkICsgJyZwcm9qZWN0SWQ9JyArIHByb2plY3RJZCxcbiAgICAgIGFkZFJlbW92ZUxpbmtzOiBmYWxzZSxcbiAgICAgIG1heEZpbGVzaXplOiAxMDAgLyogMTAwIE1CICovLFxuICAgICAgYWNjZXB0ZWRGaWxlczogJ2F1ZGlvLyonLFxuICAgICAgdGltZW91dDogMCxcbiAgICAgIHBhcmFsbGVsVXBsb2FkczogMSxcbiAgICAgIHByZXZpZXdUZW1wbGF0ZTogYFxuICAgICAgPGRpdiBjbGFzcz1cImR6LXByZXZpZXcgZHotZmlsZS1wcmV2aWV3XCI+XG4gICAgICAgIDwhLS0gVGhlIGF0dGFjaG1lbnQgZGV0YWlscyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImR6LWRldGFpbHNcIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnRcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZpbGUtb1wiPjwvaT4gPHNwYW4gZGF0YS1kei1uYW1lPjwvc3Bhbj4gPHNtYWxsPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwgbGFiZWwtZGVmYXVsdCBmaWxlLXNpemVcIiBkYXRhLWR6LXNpemU+PC9zcGFuPjwvc21hbGw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS1kaXYgY2xhc3M9XCJtdC01XCI+XG4gICAgICAgICAgPHNwYW4gZGF0YS1kei1lcnJvcm1lc3NhZ2U+PC9zcGFuPlxuICAgICAgICA8L2Rpdi0tPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcyBtdC00IG1iLTFcIiBzdHlsZT1cImhlaWdodDogMTBweFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXN0cmlwZWQgcHJvZ3Jlc3MtYmFyLWFuaW1hdGVkXCJcbiAgICAgICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiIHN0eWxlPVwid2lkdGg6MCU7XCIgZGF0YS1kei11cGxvYWRwcm9ncmVzcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIGAsXG4gICAgfTtcblxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgLmdldCgnZGVzaWduZXIubWlzYy5kcm9wem9uZS1tZXNzYWdlJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBsb2FkTWVzc2FnZSA9ICc8aDMgY2xhc3M9XCJtYi0wXCI+PGkgY2xhc3M9XCJmYSBmYS1jbG91ZC11cGxvYWRcIj48L2k+PC9oMz4nICsgcmVzdWx0O1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5sb2FkRmlsZXMoKTtcblxuICAgIGlmICh0aGlzLnRpbWVsaW5lU2VydmljZS5leHRlcm5hbENvbXBvc2l0aW9uc0F2YWlsYWJsZSkge1xuICAgICAgdGhpcy50aW1lbGluZVNlcnZpY2UuZ2V0RXh0ZXJuYWxDb21wb3NpdGlvbk5hbWVzKCkuc3Vic2NyaWJlKChjb21wb3NpdGlvbk5hbWVzKSA9PiB7XG4gICAgICAgIHRoaXMuZXhpc3RpbmdDb21wb3NpdGlvbk5hbWVzID0gY29tcG9zaXRpb25OYW1lcztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9rKCkge1xuICAgIHRoaXMub25DbG9zZS5uZXh0KDEpO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5vbkNsb3NlLm5leHQoMik7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9rKCk7XG4gIH1cblxuICBwcml2YXRlIGdldE5hbWVGcm9tRmlsZShkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRhLm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGxvYWRGaWxlcygpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnU2VydmljZS5lbmFibGVNZWRpYUxpYnJhcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmh0dHBcbiAgICAgIC5nZXQoJ2ZpbGUvbGlzdCcpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogb2JqZWN0W10pID0+IHtcbiAgICAgICAgICB0aGlzLmV4aXN0aW5nRmlsZXMgPSBbXTtcblxuICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiByZXNwb25zZSkge1xuICAgICAgICAgICAgLy8gb25seSBsb2FkIGF1ZGlvIGZpbGVzXG4gICAgICAgICAgICBpZiAoKGZpbGUgYXMgYW55KS5hdWRpb0ZpbGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5leGlzdGluZ0ZpbGVzLnB1c2godGhpcy5nZXROYW1lRnJvbUZpbGUoKGZpbGUgYXMgYW55KS5hdWRpb0ZpbGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmZpbHRlckV4aXN0aW5nRmlsZXMoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblVwbG9hZEVycm9yKGFyZ3M6IGFueSkge1xuICAgIGNvbnN0IG1zZyA9ICdkZXNpZ25lci5taXNjLnRvYXN0LXVwbG9hZC1lcnJvcic7XG4gICAgY29uc3QgdGl0bGUgPSAnZGVzaWduZXIubWlzYy50b2FzdC11cGxvYWQtZXJyb3ItdGl0bGUnO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW21zZywgdGl0bGVdKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLmVycm9yKHJlc3VsdFttc2ddICsgYXJnc1sxXSwgcmVzdWx0W3RpdGxlXSwgeyB0aW1lT3V0OiAwLCBleHRlbmRlZFRpbWVPdXQ6IDAsIGVuYWJsZUh0bWw6IHRydWUgfSk7XG4gICAgICAvLyBIaWRlIHRoZSBwcmV2aWV3IGVsZW1lbnRcbiAgICAgIGFyZ3NbMF0ucHJldmlld0VsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblVwbG9hZFN1Y2Nlc3MoYXJnczogYW55KSB7XG4gICAgdGhpcy5sb2FkRmlsZXMoKTtcblxuICAgIC8vIGFsbG93IHRvIGd1ZXNzIHRoZSBicG0gb2YgdGhlIG5ld2x5IHVwbG9hZGVkIGZpbGVcbiAgICB0aGlzLmNvbXBvc2l0aW9uLnRlbXBvR3Vlc3NlZCA9IGZhbHNlO1xuXG4gICAgLy8gaGlkZSB0aGUgcHJldmlldyBlbGVtZW50XG4gICAgYXJnc1swXS5wcmV2aWV3RWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuXG4gICAgLy8gc2VsZWN0IHRoaXMgZmlsZVxuICAgIHRoaXMuY29tcG9zaXRpb24uYXVkaW9GaWxlTmFtZSA9IGFyZ3NbMF0ubmFtZTtcblxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuZW5hYmxlTWVkaWFMaWJyYXJ5KSB7XG4gICAgICAvLyB0aGUgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZCB0byB0aGUgbWVkaWEgbGlicmFyeVxuICAgICAgdGhpcy5jb21wb3NpdGlvbi5hdWRpb0ZpbGVJbkxpYnJhcnkgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblF1ZXVlQ29tcGxldGUoYXJnczogYW55KSB7XG4gICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFkZGVkRmlsZShhcmdzOiBhbnkpIHtcbiAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gIH1cblxuICAvLyBGaWx0ZXIgdGhlIGV4aXN0aW5nIGZpbGVzXG4gIGZpbHRlckV4aXN0aW5nRmlsZXMoc2VhcmNoVmFsdWU/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXNlYXJjaFZhbHVlKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkRXhpc3RpbmdGaWxlcyA9IHRoaXMuZXhpc3RpbmdGaWxlcztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlcmVkRXhpc3RpbmdGaWxlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHRoaXMuZXhpc3RpbmdGaWxlcykge1xuICAgICAgaWYgKGZpbGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkRXhpc3RpbmdGaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEV4aXN0aW5nRmlsZShleGlzdGluZ0ZpbGU6IHN0cmluZykge1xuICAgIHRoaXMuY29tcG9zaXRpb24uYXVkaW9GaWxlTmFtZSA9IGV4aXN0aW5nRmlsZTtcblxuICAgIC8vIHRoZSBmaWxlIGhhcyBiZWVuIHNlbGVjdGVkIGZyb20gdGhlIG1lZGlhIGxpYnJhcnlcbiAgICB0aGlzLmNvbXBvc2l0aW9uLmF1ZGlvRmlsZUluTGlicmFyeSA9IHRydWU7XG4gIH1cblxuICBkZWxldGVGaWxlKGV4aXN0aW5nRmlsZTogc3RyaW5nKSB7XG4gICAgdGhpcy53YXJuaW5nRGlhbG9nU2VydmljZVxuICAgICAgLnNob3coJ2Rlc2lnbmVyLnRpbWVsaW5lLndhcm5pbmctZGVsZXRlLWZpbGUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgIC5wb3N0KCdmaWxlL2RlbGV0ZT9uYW1lPScgKyBleGlzdGluZ0ZpbGUgKyAnJnR5cGU9QVVESU8nLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRGaWxlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZSBwdWxsLWxlZnRcIj57eyBjb21wb3NpdGlvbi5uYW1lIH19PC9oND5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZSBwdWxsLXJpZ2h0XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+XG4gICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy00IGNvbC1mb3JtLWxhYmVsXCI+e3sgJ2Rlc2lnbmVyLnRpbWVsaW5lLmNvbXBvc2l0aW9uLW5hbWUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggZC1mbGV4XCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFtuZ01vZGVsXT1cImNvbXBvc2l0aW9uLm5hbWVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjb21wb3NpdGlvbi5uYW1lID0gJGV2ZW50XCJcbiAgICAgICAgW3R5cGVhaGVhZF09XCJleGlzdGluZ0NvbXBvc2l0aW9uTmFtZXNcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTQgY29sLWZvcm0tbGFiZWxcIj57eyAnZGVzaWduZXIudGltZWxpbmUuY29tcG9zaXRpb24tc3luYy10eXBlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1sZy04IGQtZmxleFwiPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cImN1c3RvbS1zZWxlY3RcIiBbbmdNb2RlbF09XCJjb21wb3NpdGlvbi5zeW5jVHlwZVwiIChuZ01vZGVsQ2hhbmdlKT1cImNvbXBvc2l0aW9uLnN5bmNUeXBlID0gJGV2ZW50XCI+XG4gICAgICAgIDwhLS0gVE9ETyAtLT5cbiAgICAgICAgPCEtLSA8b3B0aW9uIHZhbHVlPVwibm9uZVwiPnt7ICdkZXNpZ25lci50aW1lbGluZS5jb21wb3NpdGlvbi1zeW5jLXR5cGUtbm9uZScgfCB0cmFuc2xhdGUgfX08L29wdGlvbj4gLS0+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJhdWRpb1wiPnt7ICdkZXNpZ25lci50aW1lbGluZS5jb21wb3NpdGlvbi1zeW5jLXR5cGUtYXVkaW8nIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImNvbXBvc2l0aW9uLnN5bmNUeXBlID09ICdhdWRpbydcIiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJweC0zIHctMTAwXCI+XG4gICAgICA8IS0tIFNlbGVjdGVkIGZpbGUgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItc2Vjb25kYXJ5IG1iLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgIDwhLS0gTm8gZmlsZSBzZWxlY3RlZCAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNvbXBvc2l0aW9uLmF1ZGlvRmlsZU5hbWVcIj5cbiAgICAgICAgICAgIHt7ICdkZXNpZ25lci50aW1lbGluZS5jb21wb3NpdGlvbi1uby1maWxlLXNlbGVjdGVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBBIGZpbGUgaXMgc2VsZWN0ZWQgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbXBvc2l0aW9uLmF1ZGlvRmlsZU5hbWVcIj5cbiAgICAgICAgICAgIHt7IGNvbXBvc2l0aW9uLmF1ZGlvRmlsZU5hbWUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDaG9vc2UgZmlsZSAtLT5cbiAgICAgIDx1bCAqbmdJZj1cImNvbmZpZ1NlcnZpY2UuZW5hYmxlTWVkaWFMaWJyYXJ5XCIgY2xhc3M9XCJuYXYgbmF2LXRhYnMgbWItM1wiIGlkPVwibXlUYWJcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiPlxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmsgYWN0aXZlXCIgaWQ9XCJ1cGxvYWQtdGFiXCIgZGF0YS10b2dnbGU9XCJ0YWJcIiBocmVmPVwiI3VwbG9hZFwiIHJvbGU9XCJ0YWJcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdXBsb2FkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAge3sgJ2Rlc2lnbmVyLnRpbWVsaW5lLmNvbXBvc2l0aW9uLWZpbGUtdXBsb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIj5cbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgaWQ9XCJtZWRpYS1saWJyYXJ5LXRhYlwiIGRhdGEtdG9nZ2xlPVwidGFiXCIgaHJlZj1cIiNtZWRpYS1saWJyYXJ5XCIgcm9sZT1cInRhYlwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1mb2xkZXItb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIHt7ICdkZXNpZ25lci50aW1lbGluZS5jb21wb3NpdGlvbi1maWxlLWxpYnJhcnknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgaWQ9XCJteVRhYkNvbnRlbnRcIj5cbiAgICAgICAgPCEtLSBVcGxvYWQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZSBmYWRlIHNob3cgYWN0aXZlXCIgaWQ9XCJ1cGxvYWRcIiByb2xlPVwidGFicGFuZWxcIj5cbiAgICAgICAgICA8IS0tIERyb3B6b25lIC0tPlxuICAgICAgICAgIDxkcm9wem9uZVxuICAgICAgICAgICAgW2NvbmZpZ109XCJkcm9wem9uZUNvbmZpZ1wiXG4gICAgICAgICAgICBbdXNlRHJvcHpvbmVDbGFzc109XCInZmFsc2UnXCJcbiAgICAgICAgICAgIFttZXNzYWdlXT1cInVwbG9hZE1lc3NhZ2VcIlxuICAgICAgICAgICAgKGVycm9yKT1cIm9uVXBsb2FkRXJyb3IoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc3VjY2Vzcyk9XCJvblVwbG9hZFN1Y2Nlc3MoJGV2ZW50KVwiXG4gICAgICAgICAgICAocXVldWVjb21wbGV0ZSk9XCJvblF1ZXVlQ29tcGxldGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYWRkZWRmaWxlKT1cIm9uQWRkZWRGaWxlKCRldmVudClcIlxuICAgICAgICAgID48L2Ryb3B6b25lPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIE1lZGlhIGxpYnJhcnkgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItcGFuZSBmYWRlXCIgaWQ9XCJtZWRpYS1saWJyYXJ5XCIgcm9sZT1cInRhYnBhbmVsXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBpbnB1dC1ibG9jayBtYi0zXCJcbiAgICAgICAgICAgIGlkPVwic2VhcmNoRmlsZUxpc3RcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZGVzaWduZXIubWlzYy5zZWFyY2gnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJFeGlzdGluZ0ZpbGVzKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLXNlY29uZGFyeVwiIHN0eWxlPVwiaGVpZ2h0OiAyMDBweDsgb3ZlcmZsb3cteTogc2Nyb2xsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBleGlzdGluZ0ZpbGUgb2YgZmlsdGVyZWRFeGlzdGluZ0ZpbGVzIHwgc29ydDogJ25hbWUnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY29tcG9zaXRpb24uYXVkaW9GaWxlTmFtZSA9PSBleGlzdGluZ0ZpbGVcIlxuICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEV4aXN0aW5nRmlsZShleGlzdGluZ0ZpbGUpOyAoZmFsc2UpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byBteS1hdXRvIGZsZXgtZ3JvdyB0ZXh0LWJyZWFrLXdvcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBleGlzdGluZ0ZpbGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG8gcGwtMCB0ZXh0LWRhbmdlciBmbG9hdC1yaWdodFwiIChjbGljayk9XCJkZWxldGVGaWxlKGV4aXN0aW5nRmlsZSk7IChmYWxzZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICA8YSBjbGFzcz1cIm1yLTMgbXktYXV0b1wiIGhyZWY9XCIjXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwoKTsgKGZhbHNlKVwiPlxuICAgIHt7ICdkZXNpZ25lci5taXNjLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9hPlxuICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ1cGxvYWRpbmdcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib2soKVwiPnt7ICdkZXNpZ25lci5taXNjLm9rJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|