index.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <div :class="{ focusAM: focusAM }" class="animation-layout">
  3. <Left v-model:focus="focusAM" class="animation-left" />
  4. <Right v-if="focusAM" :am="focusAM" class="animation-right" />
  5. <Bottom v-if="focusAM" :am="focusAM" class="animation-toolbar" />
  6. </div>
  7. </template>
  8. <script lang="ts" setup>
  9. import Left from "./left.vue";
  10. import Right from "./right.vue";
  11. import Bottom from "./bottom/bottom.vue";
  12. import router from "@/router";
  13. import { enterEdit } from "@/store";
  14. import { useViewStack } from "@/hook";
  15. import {
  16. AnimationModel,
  17. autoSaveAnimationModel,
  18. initAnimationActions,
  19. initialAnimationModels,
  20. } from "@/store/animation";
  21. import { ref } from "vue";
  22. enterEdit(() => router.back());
  23. initialAnimationModels();
  24. initAnimationActions();
  25. useViewStack(autoSaveAnimationModel);
  26. const focusAM = ref<AnimationModel>();
  27. </script>
  28. <style lang="scss" scoped>
  29. .animation-layout {
  30. --bottom-height: 0px;
  31. &.focusAM {
  32. --bottom-height: 225px;
  33. }
  34. }
  35. .animation-left {
  36. height: calc(100vh - var(--bottom-height));
  37. position: absolute;
  38. width: var(--left-pano-width);
  39. }
  40. .animation-right {
  41. height: calc(100vh - var(--bottom-height));
  42. padding-top: 0;
  43. position: absolute;
  44. right: 0;
  45. top: 0;
  46. }
  47. .animation-toolbar {
  48. height: var(--bottom-height);
  49. width: 100vw;
  50. display: block;
  51. }
  52. </style>