UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

37 lines 6.2 kB
import { InjectionToken } from '@angular/core'; 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 = new InjectionToken(ngDevMode ? 'TUI_TILES_REORDER' : '', { factory: () => tuiTilesSwap, }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMudG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvdGlsZXMvdGlsZXMudG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFRN0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUF1QixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUU7SUFDOUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xELE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUM7SUFDeEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUM7SUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFaEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFaEMsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUF1QixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUU7SUFDL0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xELE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUM7SUFDeEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUM7SUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRW5FLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzNELEtBQUssSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUM7S0FDSjtTQUFNO1FBQ0gsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1QztLQUNKO0lBRUQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFdEMsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQy9DLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDcEM7SUFDSSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWTtDQUM5QixDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IHR5cGUgVHVpUmVvcmRlckZ1bmN0aW9uID0gKFxuICAgIG9yZGVyOiBNYXA8bnVtYmVyLCBudW1iZXI+LFxuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAgIG5ld0luZGV4OiBudW1iZXIsXG4pID0+IE1hcDxudW1iZXIsIG51bWJlcj47XG5cbmV4cG9ydCBjb25zdCB0dWlUaWxlc1N3YXA6IFR1aVJlb3JkZXJGdW5jdGlvbiA9IChvcmRlciwgY3VycmVudEluZGV4LCBuZXdJbmRleCkgPT4ge1xuICAgIGlmICghb3JkZXIuaGFzKGN1cnJlbnRJbmRleCkgfHwgIW9yZGVyLmhhcyhuZXdJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgIH1cblxuICAgIGNvbnN0IGRyYWdnZWQgPSBvcmRlci5nZXQoY3VycmVudEluZGV4KSA/PyBjdXJyZW50SW5kZXg7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gb3JkZXIuZ2V0KG5ld0luZGV4KSA/PyBuZXdJbmRleDtcbiAgICBjb25zdCBuZXdPcmRlciA9IG5ldyBNYXAob3JkZXIpO1xuXG4gICAgbmV3T3JkZXIuc2V0KGN1cnJlbnRJbmRleCwgcGxhY2VtZW50KTtcbiAgICBuZXdPcmRlci5zZXQobmV3SW5kZXgsIGRyYWdnZWQpO1xuXG4gICAgcmV0dXJuIG5ld09yZGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IHR1aVRpbGVzU2hpZnQ6IFR1aVJlb3JkZXJGdW5jdGlvbiA9IChvcmRlciwgY3VycmVudEluZGV4LCBuZXdJbmRleCkgPT4ge1xuICAgIGlmICghb3JkZXIuaGFzKGN1cnJlbnRJbmRleCkgfHwgIW9yZGVyLmhhcyhuZXdJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIG9yZGVyO1xuICAgIH1cblxuICAgIGNvbnN0IGRyYWdnZWQgPSBvcmRlci5nZXQoY3VycmVudEluZGV4KSA/PyBjdXJyZW50SW5kZXg7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gb3JkZXIuZ2V0KG5ld0luZGV4KSA/PyBuZXdJbmRleDtcbiAgICBjb25zdCBuZXdPcmRlciA9IG5ldyBNYXAob3JkZXIpO1xuICAgIGNvbnN0IGZsaXBwZWQgPSBuZXcgTWFwKEFycmF5LmZyb20ob3JkZXIpLm1hcCgoW2EsIGJdKSA9PiBbYiwgYV0pKTtcblxuICAgIGlmICgocGxhY2VtZW50IC0gZHJhZ2dlZCkgLyBNYXRoLmFicyhwbGFjZW1lbnQgLSBkcmFnZ2VkKSA+IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHBsYWNlbWVudDsgaSA+IGRyYWdnZWQ7IGktLSkge1xuICAgICAgICAgICAgbmV3T3JkZXIuc2V0KGZsaXBwZWQuZ2V0KGkpID8/IGksIGkgLSAxKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBwbGFjZW1lbnQ7IGkgPCBkcmFnZ2VkOyBpKyspIHtcbiAgICAgICAgICAgIG5ld09yZGVyLnNldChmbGlwcGVkLmdldChpKSA/PyBpLCBpICsgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXdPcmRlci5zZXQoY3VycmVudEluZGV4LCBwbGFjZW1lbnQpO1xuXG4gICAgcmV0dXJuIG5ld09yZGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IFRVSV9USUxFU19SRU9SREVSID0gbmV3IEluamVjdGlvblRva2VuPFR1aVJlb3JkZXJGdW5jdGlvbj4oXG4gICAgbmdEZXZNb2RlID8gJ1RVSV9USUxFU19SRU9SREVSJyA6ICcnLFxuICAgIHtcbiAgICAgICAgZmFjdG9yeTogKCkgPT4gdHVpVGlsZXNTd2FwLFxuICAgIH0sXG4pO1xuIl19