import { getCurrentInstance, ref, unref } from 'vue';
|
import { getRowIdentity } from '../util.mjs';
|
|
function useCurrent(watcherData) {
|
const instance = getCurrentInstance();
|
const _currentRowKey = ref(null);
|
const currentRow = ref(null);
|
const setCurrentRowKey = (key) => {
|
instance.store.assertRowKey();
|
_currentRowKey.value = key;
|
setCurrentRowByKey(key);
|
};
|
const restoreCurrentRowKey = () => {
|
_currentRowKey.value = null;
|
};
|
const setCurrentRowByKey = (key) => {
|
const { data, rowKey } = watcherData;
|
let _currentRow = null;
|
if (rowKey.value) {
|
_currentRow = (unref(data) || []).find((item) => getRowIdentity(item, rowKey.value) === key);
|
}
|
currentRow.value = _currentRow;
|
instance.emit("current-change", currentRow.value, null);
|
};
|
const updateCurrentRow = (_currentRow) => {
|
const oldCurrentRow = currentRow.value;
|
if (_currentRow && _currentRow !== oldCurrentRow) {
|
currentRow.value = _currentRow;
|
instance.emit("current-change", currentRow.value, oldCurrentRow);
|
return;
|
}
|
if (!_currentRow && oldCurrentRow) {
|
currentRow.value = null;
|
instance.emit("current-change", null, oldCurrentRow);
|
}
|
};
|
const updateCurrentRowData = () => {
|
const rowKey = watcherData.rowKey.value;
|
const data = watcherData.data.value || [];
|
const oldCurrentRow = currentRow.value;
|
if (!data.includes(oldCurrentRow) && oldCurrentRow) {
|
if (rowKey) {
|
const currentRowKey = getRowIdentity(oldCurrentRow, rowKey);
|
setCurrentRowByKey(currentRowKey);
|
} else {
|
currentRow.value = null;
|
}
|
if (currentRow.value === null) {
|
instance.emit("current-change", null, oldCurrentRow);
|
}
|
} else if (_currentRowKey.value) {
|
setCurrentRowByKey(_currentRowKey.value);
|
restoreCurrentRowKey();
|
}
|
};
|
return {
|
setCurrentRowKey,
|
restoreCurrentRowKey,
|
setCurrentRowByKey,
|
updateCurrentRow,
|
updateCurrentRowData,
|
states: {
|
_currentRowKey,
|
currentRow
|
}
|
};
|
}
|
|
export { useCurrent as default };
|
//# sourceMappingURL=current.mjs.map
|