VueWorkshopCrafting = ({
template: VueWorkshopCraftingTemp,
props: ['day', 'workshop'],
setup(props){
const { ref, computed, reactive, inject, toRef } = Vue;
const cycles = inject('cycles', Array(7).fill(null))
const editState = inject('editState', null)
const cycle = toRef(cycles, props.day)
const combination = computed(()=>{
return cycle.value?.current[props.workshop]
})
const root = ref(null)
const onClickEdit = ()=>{
if(!editState) return
if(editState.activeElement === root.value){
editState.activeElement = null
} else {
editState.activeElement = root.value
}
editState.activeCycle = props.day
editState.activeWorkshop = props.workshop
editState.selected = [...cycle.value.current[props.workshop]]
}
const canEdit = computed(()=>{
return editState.activeElement === null || (editState.activeCycle !== props.day && editState.activeWorkshop !== props.workshop)
})
const onClickDelete = ()=>{
cycle.value.current[props.workshop] = []
editState.activeElement = null
}
const onClickBack = ()=>{
cycle.value.current[props.workshop] = cycle.value.current[props.workshop].slice(0, cycle.value.current[props.workshop].length-1)
editState.selected = [...cycle.value.current[props.workshop]]
}
const canBack = computed(()=>{
return cycle.value.current[props.workshop].length > 0
})
const onClickCopyLeft = ()=>{
if (props.workshop-1 < 0) return
cycle.value.current[props.workshop-1] = [...cycle.value.current[props.workshop]]
}
const onClickCopyRight = ()=>{
if (props.workshop+1 > 2) return
cycle.value.current[props.workshop+1] = [...cycle.value.current[props.workshop]]
}
const canCopyLeft = computed(()=>{
return props.workshop > 0
})
const canCopyRight = computed(()=>{
return props.workshop < 2
})
return {
combination,
onClickDelete,
onClickBack,
canBack,
onClickCopyLeft,
onClickCopyRight,
canCopyLeft,
canCopyRight,
onClickEdit,
canEdit,
root,
}
}
})