38 lines
1 KiB
JavaScript
38 lines
1 KiB
JavaScript
import { defineStore, storeToRefs } from 'pinia';
|
|
import { ref, computed, watch } from 'vue';
|
|
import { usePageStore } from './page';
|
|
import { useDialogStore } from './dialog';
|
|
|
|
export const useVirtualSampleStore = defineStore('virtual-sample', () => {
|
|
const { page } = storeToRefs(usePageStore());
|
|
const { openedFile } = storeToRefs(useDialogStore());
|
|
|
|
const isCompareModeEnabled = ref(false);
|
|
const currentFile = ref(null);
|
|
const isLoopAnimationEnabled = ref(false);
|
|
const isDownloadTriggered = ref(false);
|
|
|
|
const step = computed(() => {
|
|
return page.value.steps.find((step) => step.id === 'virtualSample');
|
|
});
|
|
|
|
const activeTab = computed(() =>
|
|
step.value.files.dynamic ? 'dynamic' : 'static'
|
|
);
|
|
|
|
const allVariations = computed(() =>
|
|
Object.values(step.value.files?.dynamic).flat(1)
|
|
);
|
|
|
|
watch(activeTab, () => (currentFile.value = null));
|
|
|
|
return {
|
|
activeTab,
|
|
currentFile,
|
|
step,
|
|
allVariations,
|
|
isLoopAnimationEnabled,
|
|
isCompareModeEnabled,
|
|
isDownloadTriggered,
|
|
};
|
|
});
|