UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

35 lines 5.94 kB
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