useSlicingSliderStore.js 984 Bytes
import { defineStore } from 'pinia';
import { ref, watch } from 'vue';

export const useSlicingSliderStore = defineStore('slicing-slider', () => {
    const maximum = ref(200);
    const minimum = ref(0);
    const value = ref([0, 200]);
    const unit = ref('mm');

    const setRange = (max, min) => {
        maximum.value = max;
        minimum.value = min;
    };

    const setValue = (val) => {
        value.value = val;
    };

    watch(
        () => maximum.value,
        () => {
            value.value =
                maximum.value > minimum.value ? [minimum.value, maximum.value] : [maximum.value, minimum.value];
        }
    );

    watch(
        () => minimum.value,
        () => {
            value.value =
                maximum.value > minimum.value ? [minimum.value, maximum.value] : [maximum.value, minimum.value];
        }
    );
    return {
        maximum,
        minimum,
        value,
        unit,
        setValue,
        setRange
    };
});