53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
import Checkbox from 'src/components/checkbox/checkbox.vue'
|
|
import Setting from './setting.js'
|
|
|
|
export default {
|
|
...Setting,
|
|
data() {
|
|
return {
|
|
newValue: '',
|
|
}
|
|
},
|
|
components: {
|
|
...Setting.components,
|
|
Checkbox,
|
|
},
|
|
props: {
|
|
...Setting.props,
|
|
},
|
|
computed: {
|
|
...Setting.computed,
|
|
isSeparate() {
|
|
// [[a1, b1], [a2, b2]] vs [a, b]
|
|
return Array.isArray(this.visibleState[0])
|
|
},
|
|
normalizedState() {
|
|
if (this.isSeparate) {
|
|
return this.visibleState.map((y) => y.map((x) => Number(x) || 0))
|
|
} else {
|
|
return [this.visibleState.map((x) => Number(x) || 0)]
|
|
}
|
|
},
|
|
},
|
|
methods: {
|
|
...Setting.methods,
|
|
getValue({ event, side, index, eventType }) {
|
|
if (eventType === 'edit') {
|
|
const value = Number(event.target.value)
|
|
if (Number.isNaN(value)) return this.visibleState
|
|
|
|
const newVal = [...this.normalizedState.map((x) => [...x])]
|
|
newVal[side][index] = value
|
|
return newVal
|
|
}
|
|
|
|
if (eventType === 'toggleMode') {
|
|
if (event === 'split') {
|
|
return [this.normalizedState[0], this.normalizedState[0]]
|
|
} else if (event === 'join') {
|
|
return [this.normalizedState[0]]
|
|
}
|
|
}
|
|
},
|
|
},
|
|
}
|