@taiga-ui/kit
Version:
Taiga UI Angular main components kit
35 lines • 5.94 kB
JavaScript
import { tuiCreateToken } from '@taiga-ui/cdk/utils/miscellaneous';
export const tuiTilesSwap = (order, currentIndex, newIndex) => {
if (!order.has(currentIndex) || !order.has(newIndex)) {
return order;
}
const dragged = order.get(currentIndex) ?? currentIndex;
const placement = order.get(newIndex) ?? newIndex;
const newOrder = new Map(order);
newOrder.set(currentIndex, placement);
newOrder.set(newIndex, dragged);
return newOrder;
};
export const tuiTilesShift = (order, currentIndex, newIndex) => {
if (!order.has(currentIndex) || !order.has(newIndex)) {
return order;
}
const dragged = order.get(currentIndex) ?? currentIndex;
const placement = order.get(newIndex) ?? newIndex;
const newOrder = new Map(order);
const flipped = new Map(Array.from(order).map(([a, b]) => [b, a]));
if ((placement - dragged) / Math.abs(placement - dragged) > 0) {
for (let i = placement; i > dragged; i--) {
newOrder.set(flipped.get(i) ?? i, i - 1);
}
}
else {
for (let i = placement; i < dragged; i++) {
newOrder.set(flipped.get(i) ?? i, i + 1);
}
}
newOrder.set(currentIndex, placement);
return newOrder;
};
export const TUI_TILES_REORDER = tuiCreateToken(tuiTilesSwap);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMudG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvdGlsZXMvdGlsZXMudG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQVFqRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXVCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUM5RSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDbEQsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLFlBQVksQ0FBQztJQUN4RCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVoQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVoQyxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQXVCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUMvRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDbEQsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLFlBQVksQ0FBQztJQUN4RCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkUsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDM0QsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1QztLQUNKO1NBQU07UUFDSCxLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzVDO0tBQ0o7SUFFRCxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUV0QyxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQXFCLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0dWlDcmVhdGVUb2tlbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcblxuZXhwb3J0IHR5cGUgVHVpUmVvcmRlckZ1bmN0aW9uID0gKFxuICAgIG9yZGVyOiBNYXA8bnVtYmVyLCBudW1iZXI+LFxuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAgIG5ld0luZGV4OiBudW1iZXIsXG4pID0+IE1hcDxudW1iZXIsIG51bWJlcj47XG5cbmV4cG9ydCBjb25zdCB0dWlUaWxlc1N3YXA6IFR1aVJlb3JkZXJGdW5jdGlvbiA9IChvcmRlciwgY3VycmVudEluZGV4LCBuZXdJbmRleCkgPT4ge1xuICAgIGlmICghb3JkZXIuaGFzKGN1cnJlbnRJbmRleCkgfHwgIW9yZGVyLmhhcyhuZXdJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgIH1cblxuICAgIGNvbnN0IGRyYWdnZWQgPSBvcmRlci5nZXQoY3VycmVudEluZGV4KSA/PyBjdXJyZW50SW5kZXg7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gb3JkZXIuZ2V0KG5ld0luZGV4KSA/PyBuZXdJbmRleDtcbiAgICBjb25zdCBuZXdPcmRlciA9IG5ldyBNYXAob3JkZXIpO1xuXG4gICAgbmV3T3JkZXIuc2V0KGN1cnJlbnRJbmRleCwgcGxhY2VtZW50KTtcbiAgICBuZXdPcmRlci5zZXQobmV3SW5kZXgsIGRyYWdnZWQpO1xuXG4gICAgcmV0dXJuIG5ld09yZGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IHR1aVRpbGVzU2hpZnQ6IFR1aVJlb3JkZXJGdW5jdGlvbiA9IChvcmRlciwgY3VycmVudEluZGV4LCBuZXdJbmRleCkgPT4ge1xuICAgIGlmICghb3JkZXIuaGFzKGN1cnJlbnRJbmRleCkgfHwgIW9yZGVyLmhhcyhuZXdJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgIH1cblxuICAgIGNvbnN0IGRyYWdnZWQgPSBvcmRlci5nZXQoY3VycmVudEluZGV4KSA/PyBjdXJyZW50SW5kZXg7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gb3JkZXIuZ2V0KG5ld0luZGV4KSA/PyBuZXdJbmRleDtcbiAgICBjb25zdCBuZXdPcmRlciA9IG5ldyBNYXAob3JkZXIpO1xuICAgIGNvbnN0IGZsaXBwZWQgPSBuZXcgTWFwKEFycmF5LmZyb20ob3JkZXIpLm1hcCgoW2EsIGJdKSA9PiBbYiwgYV0pKTtcblxuICAgIGlmICgocGxhY2VtZW50IC0gZHJhZ2dlZCkgLyBNYXRoLmFicyhwbGFjZW1lbnQgLSBkcmFnZ2VkKSA+IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHBsYWNlbWVudDsgaSA+IGRyYWdnZWQ7IGktLSkge1xuICAgICAgICAgICAgbmV3T3JkZXIuc2V0KGZsaXBwZWQuZ2V0KGkpID8/IGksIGkgLSAxKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBwbGFjZW1lbnQ7IGkgPCBkcmFnZ2VkOyBpKyspIHtcbiAgICAgICAgICAgIG5ld09yZGVyLnNldChmbGlwcGVkLmdldChpKSA/PyBpLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXdPcmRlci5zZXQoY3VycmVudEluZGV4LCBwbGFjZW1lbnQpO1xuXG4gICAgcmV0dXJuIG5ld09yZGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IFRVSV9USUxFU19SRU9SREVSID0gdHVpQ3JlYXRlVG9rZW48VHVpUmVvcmRlckZ1bmN0aW9uPih0dWlUaWxlc1N3YXApO1xuIl19