@taiga-ui/kit
Version:
Taiga UI Angular main components kit
37 lines • 6.2 kB
JavaScript
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