useCopyMirrorStore.js 1.55 KB
import { defineStore } from 'pinia';
import { reactive, ref, watch } from 'vue';

import ORIGINIMAGE from '@/views/assets/images/functional-toolbar/copy/origin.png';
import XYIMAGE from '@/views/assets/images/functional-toolbar/copy/xy.png';
import YZIMAGE from '@/views/assets/images/functional-toolbar/copy/yz.png';
import XZIMAGE from '@/views/assets/images/functional-toolbar/copy/xz.png';

import { useEditorStore } from '@/views/stores/useEditorStore';

export const useCopyMirrorStore = defineStore('copymirror', () => {
    const editorStore = useEditorStore();
    const { setCopyMirrorTypes, setCopyMirrorDuplicateValues, applyCopyMirror } = editorStore;

    const items = reactive([
        {
            key: 'origin',
            image: ORIGINIMAGE
        },
        {
            key: 'xy',
            image: XYIMAGE
        },
        {
            key: 'yz',
            image: YZIMAGE
        },
        {
            key: 'xz',
            image: XZIMAGE
        }
    ]);
    const selecteditem = ref('origin');

    const duplicateNumber = ref(1);

    const setSelectedItem = (val) => {
        selecteditem.value = val;
        setCopyMirrorTypes(val);
    };

    const setValues = (val) => {
        setCopyMirrorDuplicateValues(val);
    };

    const apply = () => {
        applyCopyMirror();
    };

    watch(
        () => duplicateNumber.value,
        () => {
            setValues(duplicateNumber.value);
        }
    );

    return {
        items,
        selecteditem,
        duplicateNumber,
        setSelectedItem,
        apply
    };
});