| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { getCurrentInstance, ref, unref } from 'vue';
- import { isNull } from 'lodash-unified';
- 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) => {
- var _a;
- const { data, rowKey } = watcherData;
- let _currentRow = null;
- if (rowKey.value) {
- _currentRow = (_a = (unref(data) || []).find((item) => getRowIdentity(item, rowKey.value) === key)) != null ? _a : null;
- }
- currentRow.value = _currentRow != null ? _currentRow : null;
- 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 (oldCurrentRow && !data.includes(oldCurrentRow)) {
- if (rowKey) {
- const currentRowKey = getRowIdentity(oldCurrentRow, rowKey);
- setCurrentRowByKey(currentRowKey);
- } else {
- currentRow.value = null;
- }
- if (isNull(currentRow.value)) {
- 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
|