import type { Active, DragEndEvent } from "@dnd-kit/core";
import { DndContext, KeyboardSensor, MeasuringStrategy, PointerSensor, useSensor, useSensors } from "@dnd-kit/core";
import { SortableContext, sortableKeyboardCoordinates } from "@dnd-kit/sortable";
import React, { useMemo, useState } from "react";
import SortableItem from "./Item";
import Overlay from "./Overlay";

const ArrayMove = (array: any[], from: number, to: number) => {
  const newArray = [...array];
  const startIndex = to < 0 ? newArray.length + to : to;
  const item = newArray.splice(from, 1)[0];
  newArray.splice(startIndex, 0, item);
  return newArray;
};

export interface BaseItem {
  id: string;
}

interface Props<T extends BaseItem> {
  items: T[];
  update(changeItems: T[]): void;
  render(item: T): React.JSX.Element;
}

const measuringConfig = {
  droppable: {
    strategy: MeasuringStrategy.Always,
  },
};
export const GripIcon = (props: React.SVGProps<SVGSVGElement>) => (
  <svg {...props} width="232" height="17" viewBox="0 0 232 17" xmlns="http://www.w3.org/2000/svg">
    <path d="M3.25 10.125C4.0788 10.125 4.87366 10.4542 5.45971 11.0403C6.04576 11.6263 6.375 12.4212 6.375 13.25C6.375 14.0788 6.04576 14.8737 5.45971 15.4597C4.87366 16.0458 4.0788 16.375 3.25 16.375C2.4212 16.375 1.62634 16.0458 1.04029 15.4597C0.45424 14.8737 0.125 14.0788 0.125 13.25C0.125 12.4212 0.45424 11.6263 1.04029 11.0403C1.62634 10.4542 2.4212 10.125 3.25 10.125ZM3.25 0.75C4.0788 0.75 4.87366 1.07924 5.45971 1.66529C6.04576 2.25134 6.375 3.0462 6.375 3.875C6.375 4.7038 6.04576 5.49866 5.45971 6.08471C4.87366 6.67076 4.0788 7 3.25 7C2.4212 7 1.62634 6.67076 1.04029 6.08471C0.45424 5.49866 0.125 4.7038 0.125 3.875C0.125 3.0462 0.45424 2.25134 1.04029 1.66529C1.62634 1.07924 2.4212 0.75 3.25 0.75ZM12.625 10.125C13.4538 10.125 14.2487 10.4542 14.8347 11.0403C15.4208 11.6263 15.75 12.4212 15.75 13.25C15.75 14.0788 15.4208 14.8737 14.8347 15.4597C14.2487 16.0458 13.4538 16.375 12.625 16.375C11.7962 16.375 11.0013 16.0458 10.4153 15.4597C9.82924 14.8737 9.5 14.0788 9.5 13.25C9.5 12.4212 9.82924 11.6263 10.4153 11.0403C11.0013 10.4542 11.7962 10.125 12.625 10.125ZM12.625 0.75C13.4538 0.75 14.2487 1.07924 14.8347 1.66529C15.4208 2.25134 15.75 3.0462 15.75 3.875C15.75 4.7038 15.4208 5.49866 14.8347 6.08471C14.2487 6.67076 13.4538 7 12.625 7C11.7962 7 11.0013 6.67076 10.4153 6.08471C9.82924 5.49866 9.5 4.7038 9.5 3.875C9.5 3.0462 9.82924 2.25134 10.4153 1.66529C11.0013 1.07924 11.7962 0.75 12.625 0.75ZM22 10.125C22.8288 10.125 23.6237 10.4542 24.2097 11.0403C24.7958 11.6263 25.125 12.4212 25.125 13.25C25.125 14.0788 24.7958 14.8737 24.2097 15.4597C23.6237 16.0458 22.8288 16.375 22 16.375C21.1712 16.375 20.3763 16.0458 19.7903 15.4597C19.2042 14.8737 18.875 14.0788 18.875 13.25C18.875 12.4212 19.2042 11.6263 19.7903 11.0403C20.3763 10.4542 21.1712 10.125 22 10.125ZM22 0.75C22.8288 0.75 23.6237 1.07924 24.2097 1.66529C24.7958 2.25134 25.125 3.0462 25.125 3.875C25.125 4.7038 24.7958 5.49866 24.2097 6.08471C23.6237 6.67076 22.8288 7 22 7C21.1712 7 20.3763 6.67076 19.7903 6.08471C19.2042 5.49866 18.875 4.7038 18.875 3.875C18.875 3.0462 19.2042 2.25134 19.7903 1.66529C20.3763 1.07924 21.1712 0.75 22 0.75ZM31.375 10.125C32.2038 10.125 32.9987 10.4542 33.5847 11.0403C34.1708 11.6263 34.5 12.4212 34.5 13.25C34.5 14.0788 34.1708 14.8737 33.5847 15.4597C32.9987 16.0458 32.2038 16.375 31.375 16.375C30.5462 16.375 29.7513 16.0458 29.1653 15.4597C28.5792 14.8737 28.25 14.0788 28.25 13.25C28.25 12.4212 28.5792 11.6263 29.1653 11.0403C29.7513 10.4542 30.5462 10.125 31.375 10.125ZM31.375 0.75C32.2038 0.75 32.9987 1.07924 33.5847 1.66529C34.1708 2.25134 34.5 3.0462 34.5 3.875C34.5 4.7038 34.1708 5.49866 33.5847 6.08471C32.9987 6.67076 32.2038 7 31.375 7C30.5462 7 29.7513 6.67076 29.1653 6.08471C28.5792 5.49866 28.25 4.7038 28.25 3.875C28.25 3.0462 28.5792 2.25134 29.1653 1.66529C29.7513 1.07924 30.5462 0.75 31.375 0.75ZM40.75 10.125C41.5788 10.125 42.3737 10.4542 42.9597 11.0403C43.5458 11.6263 43.875 12.4212 43.875 13.25C43.875 14.0788 43.5458 14.8737 42.9597 15.4597C42.3737 16.0458 41.5788 16.375 40.75 16.375C39.9212 16.375 39.1263 16.0458 38.5403 15.4597C37.9542 14.8737 37.625 14.0788 37.625 13.25C37.625 12.4212 37.9542 11.6263 38.5403 11.0403C39.1263 10.4542 39.9212 10.125 40.75 10.125ZM40.75 0.75C41.5788 0.75 42.3737 1.07924 42.9597 1.66529C43.5458 2.25134 43.875 3.0462 43.875 3.875C43.875 4.7038 43.5458 5.49866 42.9597 6.08471C42.3737 6.67076 41.5788 7 40.75 7C39.9212 7 39.1263 6.67076 38.5403 6.08471C37.9542 5.49866 37.625 4.7038 37.625 3.875C37.625 3.0462 37.9542 2.25134 38.5403 1.66529C39.1263 1.07924 39.9212 0.75 40.75 0.75Z" />
    <path d="M50.25 10.125C51.0788 10.125 51.8737 10.4542 52.4597 11.0403C53.0458 11.6263 53.375 12.4212 53.375 13.25C53.375 14.0788 53.0458 14.8737 52.4597 15.4597C51.8737 16.0458 51.0788 16.375 50.25 16.375C49.4212 16.375 48.6263 16.0458 48.0403 15.4597C47.4542 14.8737 47.125 14.0788 47.125 13.25C47.125 12.4212 47.4542 11.6263 48.0403 11.0403C48.6263 10.4542 49.4212 10.125 50.25 10.125ZM50.25 0.75C51.0788 0.75 51.8737 1.07924 52.4597 1.66529C53.0458 2.25134 53.375 3.0462 53.375 3.875C53.375 4.7038 53.0458 5.49866 52.4597 6.08471C51.8737 6.67076 51.0788 7 50.25 7C49.4212 7 48.6263 6.67076 48.0403 6.08471C47.4542 5.49866 47.125 4.7038 47.125 3.875C47.125 3.0462 47.4542 2.25134 48.0403 1.66529C48.6263 1.07924 49.4212 0.75 50.25 0.75ZM59.625 10.125C60.4538 10.125 61.2487 10.4542 61.8347 11.0403C62.4208 11.6263 62.75 12.4212 62.75 13.25C62.75 14.0788 62.4208 14.8737 61.8347 15.4597C61.2487 16.0458 60.4538 16.375 59.625 16.375C58.7962 16.375 58.0013 16.0458 57.4153 15.4597C56.8292 14.8737 56.5 14.0788 56.5 13.25C56.5 12.4212 56.8292 11.6263 57.4153 11.0403C58.0013 10.4542 58.7962 10.125 59.625 10.125ZM59.625 0.75C60.4538 0.75 61.2487 1.07924 61.8347 1.66529C62.4208 2.25134 62.75 3.0462 62.75 3.875C62.75 4.7038 62.4208 5.49866 61.8347 6.08471C61.2487 6.67076 60.4538 7 59.625 7C58.7962 7 58.0013 6.67076 57.4153 6.08471C56.8292 5.49866 56.5 4.7038 56.5 3.875C56.5 3.0462 56.8292 2.25134 57.4153 1.66529C58.0013 1.07924 58.7962 0.75 59.625 0.75ZM69 10.125C69.8288 10.125 70.6237 10.4542 71.2097 11.0403C71.7958 11.6263 72.125 12.4212 72.125 13.25C72.125 14.0788 71.7958 14.8737 71.2097 15.4597C70.6237 16.0458 69.8288 16.375 69 16.375C68.1712 16.375 67.3763 16.0458 66.7903 15.4597C66.2042 14.8737 65.875 14.0788 65.875 13.25C65.875 12.4212 66.2042 11.6263 66.7903 11.0403C67.3763 10.4542 68.1712 10.125 69 10.125ZM69 0.75C69.8288 0.75 70.6237 1.07924 71.2097 1.66529C71.7958 2.25134 72.125 3.0462 72.125 3.875C72.125 4.7038 71.7958 5.49866 71.2097 6.08471C70.6237 6.67076 69.8288 7 69 7C68.1712 7 67.3763 6.67076 66.7903 6.08471C66.2042 5.49866 65.875 4.7038 65.875 3.875C65.875 3.0462 66.2042 2.25134 66.7903 1.66529C67.3763 1.07924 68.1712 0.75 69 0.75ZM78.375 10.125C79.2038 10.125 79.9987 10.4542 80.5847 11.0403C81.1708 11.6263 81.5 12.4212 81.5 13.25C81.5 14.0788 81.1708 14.8737 80.5847 15.4597C79.9987 16.0458 79.2038 16.375 78.375 16.375C77.5462 16.375 76.7513 16.0458 76.1653 15.4597C75.5792 14.8737 75.25 14.0788 75.25 13.25C75.25 12.4212 75.5792 11.6263 76.1653 11.0403C76.7513 10.4542 77.5462 10.125 78.375 10.125ZM78.375 0.75C79.2038 0.75 79.9987 1.07924 80.5847 1.66529C81.1708 2.25134 81.5 3.0462 81.5 3.875C81.5 4.7038 81.1708 5.49866 80.5847 6.08471C79.9987 6.67076 79.2038 7 78.375 7C77.5462 7 76.7513 6.67076 76.1653 6.08471C75.5792 5.49866 75.25 4.7038 75.25 3.875C75.25 3.0462 75.5792 2.25134 76.1653 1.66529C76.7513 1.07924 77.5462 0.75 78.375 0.75ZM87.75 10.125C88.5788 10.125 89.3737 10.4542 89.9597 11.0403C90.5458 11.6263 90.875 12.4212 90.875 13.25C90.875 14.0788 90.5458 14.8737 89.9597 15.4597C89.3737 16.0458 88.5788 16.375 87.75 16.375C86.9212 16.375 86.1263 16.0458 85.5403 15.4597C84.9542 14.8737 84.625 14.0788 84.625 13.25C84.625 12.4212 84.9542 11.6263 85.5403 11.0403C86.1263 10.4542 86.9212 10.125 87.75 10.125ZM87.75 0.75C88.5788 0.75 89.3737 1.07924 89.9597 1.66529C90.5458 2.25134 90.875 3.0462 90.875 3.875C90.875 4.7038 90.5458 5.49866 89.9597 6.08471C89.3737 6.67076 88.5788 7 87.75 7C86.9212 7 86.1263 6.67076 85.5403 6.08471C84.9542 5.49866 84.625 4.7038 84.625 3.875C84.625 3.0462 84.9542 2.25134 85.5403 1.66529C86.1263 1.07924 86.9212 0.75 87.75 0.75Z" />
    <path d="M97.25 10.125C98.0788 10.125 98.8737 10.4542 99.4597 11.0403C100.046 11.6263 100.375 12.4212 100.375 13.25C100.375 14.0788 100.046 14.8737 99.4597 15.4597C98.8737 16.0458 98.0788 16.375 97.25 16.375C96.4212 16.375 95.6263 16.0458 95.0403 15.4597C94.4542 14.8737 94.125 14.0788 94.125 13.25C94.125 12.4212 94.4542 11.6263 95.0403 11.0403C95.6263 10.4542 96.4212 10.125 97.25 10.125ZM97.25 0.75C98.0788 0.75 98.8737 1.07924 99.4597 1.66529C100.046 2.25134 100.375 3.0462 100.375 3.875C100.375 4.7038 100.046 5.49866 99.4597 6.08471C98.8737 6.67076 98.0788 7 97.25 7C96.4212 7 95.6263 6.67076 95.0403 6.08471C94.4542 5.49866 94.125 4.7038 94.125 3.875C94.125 3.0462 94.4542 2.25134 95.0403 1.66529C95.6263 1.07924 96.4212 0.75 97.25 0.75ZM106.625 10.125C107.454 10.125 108.249 10.4542 108.835 11.0403C109.421 11.6263 109.75 12.4212 109.75 13.25C109.75 14.0788 109.421 14.8737 108.835 15.4597C108.249 16.0458 107.454 16.375 106.625 16.375C105.796 16.375 105.001 16.0458 104.415 15.4597C103.829 14.8737 103.5 14.0788 103.5 13.25C103.5 12.4212 103.829 11.6263 104.415 11.0403C105.001 10.4542 105.796 10.125 106.625 10.125ZM106.625 0.75C107.454 0.75 108.249 1.07924 108.835 1.66529C109.421 2.25134 109.75 3.0462 109.75 3.875C109.75 4.7038 109.421 5.49866 108.835 6.08471C108.249 6.67076 107.454 7 106.625 7C105.796 7 105.001 6.67076 104.415 6.08471C103.829 5.49866 103.5 4.7038 103.5 3.875C103.5 3.0462 103.829 2.25134 104.415 1.66529C105.001 1.07924 105.796 0.75 106.625 0.75ZM116 10.125C116.829 10.125 117.624 10.4542 118.21 11.0403C118.796 11.6263 119.125 12.4212 119.125 13.25C119.125 14.0788 118.796 14.8737 118.21 15.4597C117.624 16.0458 116.829 16.375 116 16.375C115.171 16.375 114.376 16.0458 113.79 15.4597C113.204 14.8737 112.875 14.0788 112.875 13.25C112.875 12.4212 113.204 11.6263 113.79 11.0403C114.376 10.4542 115.171 10.125 116 10.125ZM116 0.75C116.829 0.75 117.624 1.07924 118.21 1.66529C118.796 2.25134 119.125 3.0462 119.125 3.875C119.125 4.7038 118.796 5.49866 118.21 6.08471C117.624 6.67076 116.829 7 116 7C115.171 7 114.376 6.67076 113.79 6.08471C113.204 5.49866 112.875 4.7038 112.875 3.875C112.875 3.0462 113.204 2.25134 113.79 1.66529C114.376 1.07924 115.171 0.75 116 0.75ZM125.375 10.125C126.204 10.125 126.999 10.4542 127.585 11.0403C128.171 11.6263 128.5 12.4212 128.5 13.25C128.5 14.0788 128.171 14.8737 127.585 15.4597C126.999 16.0458 126.204 16.375 125.375 16.375C124.546 16.375 123.751 16.0458 123.165 15.4597C122.579 14.8737 122.25 14.0788 122.25 13.25C122.25 12.4212 122.579 11.6263 123.165 11.0403C123.751 10.4542 124.546 10.125 125.375 10.125ZM125.375 0.75C126.204 0.75 126.999 1.07924 127.585 1.66529C128.171 2.25134 128.5 3.0462 128.5 3.875C128.5 4.7038 128.171 5.49866 127.585 6.08471C126.999 6.67076 126.204 7 125.375 7C124.546 7 123.751 6.67076 123.165 6.08471C122.579 5.49866 122.25 4.7038 122.25 3.875C122.25 3.0462 122.579 2.25134 123.165 1.66529C123.751 1.07924 124.546 0.75 125.375 0.75ZM134.75 10.125C135.579 10.125 136.374 10.4542 136.96 11.0403C137.546 11.6263 137.875 12.4212 137.875 13.25C137.875 14.0788 137.546 14.8737 136.96 15.4597C136.374 16.0458 135.579 16.375 134.75 16.375C133.921 16.375 133.126 16.0458 132.54 15.4597C131.954 14.8737 131.625 14.0788 131.625 13.25C131.625 12.4212 131.954 11.6263 132.54 11.0403C133.126 10.4542 133.921 10.125 134.75 10.125ZM134.75 0.75C135.579 0.75 136.374 1.07924 136.96 1.66529C137.546 2.25134 137.875 3.0462 137.875 3.875C137.875 4.7038 137.546 5.49866 136.96 6.08471C136.374 6.67076 135.579 7 134.75 7C133.921 7 133.126 6.67076 132.54 6.08471C131.954 5.49866 131.625 4.7038 131.625 3.875C131.625 3.0462 131.954 2.25134 132.54 1.66529C133.126 1.07924 133.921 0.75 134.75 0.75Z" />
    <path d="M144.25 10.125C145.079 10.125 145.874 10.4542 146.46 11.0403C147.046 11.6263 147.375 12.4212 147.375 13.25C147.375 14.0788 147.046 14.8737 146.46 15.4597C145.874 16.0458 145.079 16.375 144.25 16.375C143.421 16.375 142.626 16.0458 142.04 15.4597C141.454 14.8737 141.125 14.0788 141.125 13.25C141.125 12.4212 141.454 11.6263 142.04 11.0403C142.626 10.4542 143.421 10.125 144.25 10.125ZM144.25 0.75C145.079 0.75 145.874 1.07924 146.46 1.66529C147.046 2.25134 147.375 3.0462 147.375 3.875C147.375 4.7038 147.046 5.49866 146.46 6.08471C145.874 6.67076 145.079 7 144.25 7C143.421 7 142.626 6.67076 142.04 6.08471C141.454 5.49866 141.125 4.7038 141.125 3.875C141.125 3.0462 141.454 2.25134 142.04 1.66529C142.626 1.07924 143.421 0.75 144.25 0.75ZM153.625 10.125C154.454 10.125 155.249 10.4542 155.835 11.0403C156.421 11.6263 156.75 12.4212 156.75 13.25C156.75 14.0788 156.421 14.8737 155.835 15.4597C155.249 16.0458 154.454 16.375 153.625 16.375C152.796 16.375 152.001 16.0458 151.415 15.4597C150.829 14.8737 150.5 14.0788 150.5 13.25C150.5 12.4212 150.829 11.6263 151.415 11.0403C152.001 10.4542 152.796 10.125 153.625 10.125ZM153.625 0.75C154.454 0.75 155.249 1.07924 155.835 1.66529C156.421 2.25134 156.75 3.0462 156.75 3.875C156.75 4.7038 156.421 5.49866 155.835 6.08471C155.249 6.67076 154.454 7 153.625 7C152.796 7 152.001 6.67076 151.415 6.08471C150.829 5.49866 150.5 4.7038 150.5 3.875C150.5 3.0462 150.829 2.25134 151.415 1.66529C152.001 1.07924 152.796 0.75 153.625 0.75ZM163 10.125C163.829 10.125 164.624 10.4542 165.21 11.0403C165.796 11.6263 166.125 12.4212 166.125 13.25C166.125 14.0788 165.796 14.8737 165.21 15.4597C164.624 16.0458 163.829 16.375 163 16.375C162.171 16.375 161.376 16.0458 160.79 15.4597C160.204 14.8737 159.875 14.0788 159.875 13.25C159.875 12.4212 160.204 11.6263 160.79 11.0403C161.376 10.4542 162.171 10.125 163 10.125ZM163 0.75C163.829 0.75 164.624 1.07924 165.21 1.66529C165.796 2.25134 166.125 3.0462 166.125 3.875C166.125 4.7038 165.796 5.49866 165.21 6.08471C164.624 6.67076 163.829 7 163 7C162.171 7 161.376 6.67076 160.79 6.08471C160.204 5.49866 159.875 4.7038 159.875 3.875C159.875 3.0462 160.204 2.25134 160.79 1.66529C161.376 1.07924 162.171 0.75 163 0.75ZM172.375 10.125C173.204 10.125 173.999 10.4542 174.585 11.0403C175.171 11.6263 175.5 12.4212 175.5 13.25C175.5 14.0788 175.171 14.8737 174.585 15.4597C173.999 16.0458 173.204 16.375 172.375 16.375C171.546 16.375 170.751 16.0458 170.165 15.4597C169.579 14.8737 169.25 14.0788 169.25 13.25C169.25 12.4212 169.579 11.6263 170.165 11.0403C170.751 10.4542 171.546 10.125 172.375 10.125ZM172.375 0.75C173.204 0.75 173.999 1.07924 174.585 1.66529C175.171 2.25134 175.5 3.0462 175.5 3.875C175.5 4.7038 175.171 5.49866 174.585 6.08471C173.999 6.67076 173.204 7 172.375 7C171.546 7 170.751 6.67076 170.165 6.08471C169.579 5.49866 169.25 4.7038 169.25 3.875C169.25 3.0462 169.579 2.25134 170.165 1.66529C170.751 1.07924 171.546 0.75 172.375 0.75ZM181.75 10.125C182.579 10.125 183.374 10.4542 183.96 11.0403C184.546 11.6263 184.875 12.4212 184.875 13.25C184.875 14.0788 184.546 14.8737 183.96 15.4597C183.374 16.0458 182.579 16.375 181.75 16.375C180.921 16.375 180.126 16.0458 179.54 15.4597C178.954 14.8737 178.625 14.0788 178.625 13.25C178.625 12.4212 178.954 11.6263 179.54 11.0403C180.126 10.4542 180.921 10.125 181.75 10.125ZM181.75 0.75C182.579 0.75 183.374 1.07924 183.96 1.66529C184.546 2.25134 184.875 3.0462 184.875 3.875C184.875 4.7038 184.546 5.49866 183.96 6.08471C183.374 6.67076 182.579 7 181.75 7C180.921 7 180.126 6.67076 179.54 6.08471C178.954 5.49866 178.625 4.7038 178.625 3.875C178.625 3.0462 178.954 2.25134 179.54 1.66529C180.126 1.07924 180.921 0.75 181.75 0.75Z" />
    <path d="M191.25 10.125C192.079 10.125 192.874 10.4542 193.46 11.0403C194.046 11.6263 194.375 12.4212 194.375 13.25C194.375 14.0788 194.046 14.8737 193.46 15.4597C192.874 16.0458 192.079 16.375 191.25 16.375C190.421 16.375 189.626 16.0458 189.04 15.4597C188.454 14.8737 188.125 14.0788 188.125 13.25C188.125 12.4212 188.454 11.6263 189.04 11.0403C189.626 10.4542 190.421 10.125 191.25 10.125ZM191.25 0.75C192.079 0.75 192.874 1.07924 193.46 1.66529C194.046 2.25134 194.375 3.0462 194.375 3.875C194.375 4.7038 194.046 5.49866 193.46 6.08471C192.874 6.67076 192.079 7 191.25 7C190.421 7 189.626 6.67076 189.04 6.08471C188.454 5.49866 188.125 4.7038 188.125 3.875C188.125 3.0462 188.454 2.25134 189.04 1.66529C189.626 1.07924 190.421 0.75 191.25 0.75ZM200.625 10.125C201.454 10.125 202.249 10.4542 202.835 11.0403C203.421 11.6263 203.75 12.4212 203.75 13.25C203.75 14.0788 203.421 14.8737 202.835 15.4597C202.249 16.0458 201.454 16.375 200.625 16.375C199.796 16.375 199.001 16.0458 198.415 15.4597C197.829 14.8737 197.5 14.0788 197.5 13.25C197.5 12.4212 197.829 11.6263 198.415 11.0403C199.001 10.4542 199.796 10.125 200.625 10.125ZM200.625 0.75C201.454 0.75 202.249 1.07924 202.835 1.66529C203.421 2.25134 203.75 3.0462 203.75 3.875C203.75 4.7038 203.421 5.49866 202.835 6.08471C202.249 6.67076 201.454 7 200.625 7C199.796 7 199.001 6.67076 198.415 6.08471C197.829 5.49866 197.5 4.7038 197.5 3.875C197.5 3.0462 197.829 2.25134 198.415 1.66529C199.001 1.07924 199.796 0.75 200.625 0.75ZM210 10.125C210.829 10.125 211.624 10.4542 212.21 11.0403C212.796 11.6263 213.125 12.4212 213.125 13.25C213.125 14.0788 212.796 14.8737 212.21 15.4597C211.624 16.0458 210.829 16.375 210 16.375C209.171 16.375 208.376 16.0458 207.79 15.4597C207.204 14.8737 206.875 14.0788 206.875 13.25C206.875 12.4212 207.204 11.6263 207.79 11.0403C208.376 10.4542 209.171 10.125 210 10.125ZM210 0.75C210.829 0.75 211.624 1.07924 212.21 1.66529C212.796 2.25134 213.125 3.0462 213.125 3.875C213.125 4.7038 212.796 5.49866 212.21 6.08471C211.624 6.67076 210.829 7 210 7C209.171 7 208.376 6.67076 207.79 6.08471C207.204 5.49866 206.875 4.7038 206.875 3.875C206.875 3.0462 207.204 2.25134 207.79 1.66529C208.376 1.07924 209.171 0.75 210 0.75ZM219.375 10.125C220.204 10.125 220.999 10.4542 221.585 11.0403C222.171 11.6263 222.5 12.4212 222.5 13.25C222.5 14.0788 222.171 14.8737 221.585 15.4597C220.999 16.0458 220.204 16.375 219.375 16.375C218.546 16.375 217.751 16.0458 217.165 15.4597C216.579 14.8737 216.25 14.0788 216.25 13.25C216.25 12.4212 216.579 11.6263 217.165 11.0403C217.751 10.4542 218.546 10.125 219.375 10.125ZM219.375 0.75C220.204 0.75 220.999 1.07924 221.585 1.66529C222.171 2.25134 222.5 3.0462 222.5 3.875C222.5 4.7038 222.171 5.49866 221.585 6.08471C220.999 6.67076 220.204 7 219.375 7C218.546 7 217.751 6.67076 217.165 6.08471C216.579 5.49866 216.25 4.7038 216.25 3.875C216.25 3.0462 216.579 2.25134 217.165 1.66529C217.751 1.07924 218.546 0.75 219.375 0.75ZM228.75 10.125C229.579 10.125 230.374 10.4542 230.96 11.0403C231.546 11.6263 231.875 12.4212 231.875 13.25C231.875 14.0788 231.546 14.8737 230.96 15.4597C230.374 16.0458 229.579 16.375 228.75 16.375C227.921 16.375 227.126 16.0458 226.54 15.4597C225.954 14.8737 225.625 14.0788 225.625 13.25C225.625 12.4212 225.954 11.6263 226.54 11.0403C227.126 10.4542 227.921 10.125 228.75 10.125ZM228.75 0.75C229.579 0.75 230.374 1.07924 230.96 1.66529C231.546 2.25134 231.875 3.0462 231.875 3.875C231.875 4.7038 231.546 5.49866 230.96 6.08471C230.374 6.67076 229.579 7 228.75 7C227.921 7 227.126 6.67076 226.54 6.08471C225.954 5.49866 225.625 4.7038 225.625 3.875C225.625 3.0462 225.954 2.25134 226.54 1.66529C227.126 1.07924 227.921 0.75 228.75 0.75Z" />
  </svg>
);

export const GripIconVertical = (props: React.SVGProps<SVGSVGElement>) => (
  <svg {...props} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 232">
    <path d="M9.375 228.625C9.375 227.796 9.70424 227.001 10.2903 226.415C10.8763 225.829 11.6712 225.5 12.5 225.5C13.3288 225.5 14.1237 225.829 14.7097 226.415C15.2958 227.001 15.625 227.796 15.625 228.625C15.625 229.454 15.2958 230.249 14.7097 230.835C14.1237 231.421 13.3288 231.75 12.5 231.75C11.6712 231.75 10.8763 231.421 10.2903 230.835C9.70424 230.249 9.375 229.454 9.375 228.625ZM0 228.625C0 227.796 0.329241 227.001 0.915292 226.415C1.50134 225.829 2.2962 225.5 3.125 225.5C3.9538 225.5 4.74866 225.829 5.33471 226.415C5.92076 227.001 6.25 227.796 6.25 228.625C6.25 229.454 5.92076 230.249 5.33471 230.835C4.74866 231.421 3.9538 231.75 3.125 231.75C2.2962 231.75 1.50134 231.421 0.915292 230.835C0.329241 230.249 0 229.454 0 228.625ZM9.375 219.25C9.375 218.421 9.70424 217.626 10.2903 217.04C10.8763 216.454 11.6712 216.125 12.5 216.125C13.3288 216.125 14.1237 216.454 14.7097 217.04C15.2958 217.626 15.625 218.421 15.625 219.25C15.625 220.079 15.2958 220.874 14.7097 221.46C14.1237 222.046 13.3288 222.375 12.5 222.375C11.6712 222.375 10.8763 222.046 10.2903 221.46C9.70424 220.874 9.375 220.079 9.375 219.25ZM0 219.25C0 218.421 0.329241 217.626 0.915292 217.04C1.50134 216.454 2.2962 216.125 3.125 216.125C3.9538 216.125 4.74866 216.454 5.33471 217.04C5.92076 217.626 6.25 218.421 6.25 219.25C6.25 220.079 5.92076 220.874 5.33471 221.46C4.74866 222.046 3.9538 222.375 3.125 222.375C2.2962 222.375 1.50134 222.046 0.915292 221.46C0.329241 220.874 0 220.079 0 219.25ZM9.375 209.875C9.375 209.046 9.70424 208.251 10.2903 207.665C10.8763 207.079 11.6712 206.75 12.5 206.75C13.3288 206.75 14.1237 207.079 14.7097 207.665C15.2958 208.251 15.625 209.046 15.625 209.875C15.625 210.704 15.2958 211.499 14.7097 212.085C14.1237 212.671 13.3288 213 12.5 213C11.6712 213 10.8763 212.671 10.2903 212.085C9.70424 211.499 9.375 210.704 9.375 209.875ZM0 209.875C0 209.046 0.329241 208.251 0.915292 207.665C1.50134 207.079 2.2962 206.75 3.125 206.75C3.9538 206.75 4.74866 207.079 5.33471 207.665C5.92076 208.251 6.25 209.046 6.25 209.875C6.25 210.704 5.92076 211.499 5.33471 212.085C4.74866 212.671 3.9538 213 3.125 213C2.2962 213 1.50134 212.671 0.915292 212.085C0.329241 211.499 0 210.704 0 209.875ZM9.375 200.5C9.375 199.671 9.70424 198.876 10.2903 198.29C10.8763 197.704 11.6712 197.375 12.5 197.375C13.3288 197.375 14.1237 197.704 14.7097 198.29C15.2958 198.876 15.625 199.671 15.625 200.5C15.625 201.329 15.2958 202.124 14.7097 202.71C14.1237 203.296 13.3288 203.625 12.5 203.625C11.6712 203.625 10.8763 203.296 10.2903 202.71C9.70424 202.124 9.375 201.329 9.375 200.5ZM0 200.5C0 199.671 0.329241 198.876 0.915292 198.29C1.50134 197.704 2.2962 197.375 3.125 197.375C3.9538 197.375 4.74866 197.704 5.33471 198.29C5.92076 198.876 6.25 199.671 6.25 200.5C6.25 201.329 5.92076 202.124 5.33471 202.71C4.74866 203.296 3.9538 203.625 3.125 203.625C2.2962 203.625 1.50134 203.296 0.915292 202.71C0.329241 202.124 0 201.329 0 200.5ZM9.375 191.125C9.375 190.296 9.70424 189.501 10.2903 188.915C10.8763 188.329 11.6712 188 12.5 188C13.3288 188 14.1237 188.329 14.7097 188.915C15.2958 189.501 15.625 190.296 15.625 191.125C15.625 191.954 15.2958 192.749 14.7097 193.335C14.1237 193.921 13.3288 194.25 12.5 194.25C11.6712 194.25 10.8763 193.921 10.2903 193.335C9.70424 192.749 9.375 191.954 9.375 191.125ZM0 191.125C0 190.296 0.329241 189.501 0.915292 188.915C1.50134 188.329 2.2962 188 3.125 188C3.9538 188 4.74866 188.329 5.33471 188.915C5.92076 189.501 6.25 190.296 6.25 191.125C6.25 191.954 5.92076 192.749 5.33471 193.335C4.74866 193.921 3.9538 194.25 3.125 194.25C2.2962 194.25 1.50134 193.921 0.915292 193.335C0.329241 192.749 0 191.954 0 191.125Z" />
    <path d="M9.375 181.625C9.375 180.796 9.70424 180.001 10.2903 179.415C10.8763 178.829 11.6712 178.5 12.5 178.5C13.3288 178.5 14.1237 178.829 14.7097 179.415C15.2958 180.001 15.625 180.796 15.625 181.625C15.625 182.454 15.2958 183.249 14.7097 183.835C14.1237 184.421 13.3288 184.75 12.5 184.75C11.6712 184.75 10.8763 184.421 10.2903 183.835C9.70424 183.249 9.375 182.454 9.375 181.625ZM0 181.625C0 180.796 0.329241 180.001 0.915292 179.415C1.50134 178.829 2.2962 178.5 3.125 178.5C3.9538 178.5 4.74866 178.829 5.33471 179.415C5.92076 180.001 6.25 180.796 6.25 181.625C6.25 182.454 5.92076 183.249 5.33471 183.835C4.74866 184.421 3.9538 184.75 3.125 184.75C2.2962 184.75 1.50134 184.421 0.915292 183.835C0.329241 183.249 0 182.454 0 181.625ZM9.375 172.25C9.375 171.421 9.70424 170.626 10.2903 170.04C10.8763 169.454 11.6712 169.125 12.5 169.125C13.3288 169.125 14.1237 169.454 14.7097 170.04C15.2958 170.626 15.625 171.421 15.625 172.25C15.625 173.079 15.2958 173.874 14.7097 174.46C14.1237 175.046 13.3288 175.375 12.5 175.375C11.6712 175.375 10.8763 175.046 10.2903 174.46C9.70424 173.874 9.375 173.079 9.375 172.25ZM0 172.25C0 171.421 0.329241 170.626 0.915292 170.04C1.50134 169.454 2.2962 169.125 3.125 169.125C3.9538 169.125 4.74866 169.454 5.33471 170.04C5.92076 170.626 6.25 171.421 6.25 172.25C6.25 173.079 5.92076 173.874 5.33471 174.46C4.74866 175.046 3.9538 175.375 3.125 175.375C2.2962 175.375 1.50134 175.046 0.915292 174.46C0.329241 173.874 0 173.079 0 172.25ZM9.375 162.875C9.375 162.046 9.70424 161.251 10.2903 160.665C10.8763 160.079 11.6712 159.75 12.5 159.75C13.3288 159.75 14.1237 160.079 14.7097 160.665C15.2958 161.251 15.625 162.046 15.625 162.875C15.625 163.704 15.2958 164.499 14.7097 165.085C14.1237 165.671 13.3288 166 12.5 166C11.6712 166 10.8763 165.671 10.2903 165.085C9.70424 164.499 9.375 163.704 9.375 162.875ZM0 162.875C0 162.046 0.329241 161.251 0.915292 160.665C1.50134 160.079 2.2962 159.75 3.125 159.75C3.9538 159.75 4.74866 160.079 5.33471 160.665C5.92076 161.251 6.25 162.046 6.25 162.875C6.25 163.704 5.92076 164.499 5.33471 165.085C4.74866 165.671 3.9538 166 3.125 166C2.2962 166 1.50134 165.671 0.915292 165.085C0.329241 164.499 0 163.704 0 162.875ZM9.375 153.5C9.375 152.671 9.70424 151.876 10.2903 151.29C10.8763 150.704 11.6712 150.375 12.5 150.375C13.3288 150.375 14.1237 150.704 14.7097 151.29C15.2958 151.876 15.625 152.671 15.625 153.5C15.625 154.329 15.2958 155.124 14.7097 155.71C14.1237 156.296 13.3288 156.625 12.5 156.625C11.6712 156.625 10.8763 156.296 10.2903 155.71C9.70424 155.124 9.375 154.329 9.375 153.5ZM0 153.5C0 152.671 0.329241 151.876 0.915292 151.29C1.50134 150.704 2.2962 150.375 3.125 150.375C3.9538 150.375 4.74866 150.704 5.33471 151.29C5.92076 151.876 6.25 152.671 6.25 153.5C6.25 154.329 5.92076 155.124 5.33471 155.71C4.74866 156.296 3.9538 156.625 3.125 156.625C2.2962 156.625 1.50134 156.296 0.915292 155.71C0.329241 155.124 0 154.329 0 153.5ZM9.375 144.125C9.375 143.296 9.70424 142.501 10.2903 141.915C10.8763 141.329 11.6712 141 12.5 141C13.3288 141 14.1237 141.329 14.7097 141.915C15.2958 142.501 15.625 143.296 15.625 144.125C15.625 144.954 15.2958 145.749 14.7097 146.335C14.1237 146.921 13.3288 147.25 12.5 147.25C11.6712 147.25 10.8763 146.921 10.2903 146.335C9.70424 145.749 9.375 144.954 9.375 144.125ZM0 144.125C0 143.296 0.329241 142.501 0.915292 141.915C1.50134 141.329 2.2962 141 3.125 141C3.9538 141 4.74866 141.329 5.33471 141.915C5.92076 142.501 6.25 143.296 6.25 144.125C6.25 144.954 5.92076 145.749 5.33471 146.335C4.74866 146.921 3.9538 147.25 3.125 147.25C2.2962 147.25 1.50134 146.921 0.915292 146.335C0.329241 145.749 0 144.954 0 144.125Z" />
    <path d="M9.375 134.625C9.375 133.796 9.70424 133.001 10.2903 132.415C10.8763 131.829 11.6712 131.5 12.5 131.5C13.3288 131.5 14.1237 131.829 14.7097 132.415C15.2958 133.001 15.625 133.796 15.625 134.625C15.625 135.454 15.2958 136.249 14.7097 136.835C14.1237 137.421 13.3288 137.75 12.5 137.75C11.6712 137.75 10.8763 137.421 10.2903 136.835C9.70424 136.249 9.375 135.454 9.375 134.625ZM0 134.625C0 133.796 0.329241 133.001 0.915292 132.415C1.50134 131.829 2.2962 131.5 3.125 131.5C3.9538 131.5 4.74866 131.829 5.33471 132.415C5.92076 133.001 6.25 133.796 6.25 134.625C6.25 135.454 5.92076 136.249 5.33471 136.835C4.74866 137.421 3.9538 137.75 3.125 137.75C2.2962 137.75 1.50134 137.421 0.915292 136.835C0.329241 136.249 0 135.454 0 134.625ZM9.375 125.25C9.375 124.421 9.70424 123.626 10.2903 123.04C10.8763 122.454 11.6712 122.125 12.5 122.125C13.3288 122.125 14.1237 122.454 14.7097 123.04C15.2958 123.626 15.625 124.421 15.625 125.25C15.625 126.079 15.2958 126.874 14.7097 127.46C14.1237 128.046 13.3288 128.375 12.5 128.375C11.6712 128.375 10.8763 128.046 10.2903 127.46C9.70424 126.874 9.375 126.079 9.375 125.25ZM0 125.25C0 124.421 0.329241 123.626 0.915292 123.04C1.50134 122.454 2.2962 122.125 3.125 122.125C3.9538 122.125 4.74866 122.454 5.33471 123.04C5.92076 123.626 6.25 124.421 6.25 125.25C6.25 126.079 5.92076 126.874 5.33471 127.46C4.74866 128.046 3.9538 128.375 3.125 128.375C2.2962 128.375 1.50134 128.046 0.915292 127.46C0.329241 126.874 0 126.079 0 125.25ZM9.375 115.875C9.375 115.046 9.70424 114.251 10.2903 113.665C10.8763 113.079 11.6712 112.75 12.5 112.75C13.3288 112.75 14.1237 113.079 14.7097 113.665C15.2958 114.251 15.625 115.046 15.625 115.875C15.625 116.704 15.2958 117.499 14.7097 118.085C14.1237 118.671 13.3288 119 12.5 119C11.6712 119 10.8763 118.671 10.2903 118.085C9.70424 117.499 9.375 116.704 9.375 115.875ZM0 115.875C0 115.046 0.329241 114.251 0.915292 113.665C1.50134 113.079 2.2962 112.75 3.125 112.75C3.9538 112.75 4.74866 113.079 5.33471 113.665C5.92076 114.251 6.25 115.046 6.25 115.875C6.25 116.704 5.92076 117.499 5.33471 118.085C4.74866 118.671 3.9538 119 3.125 119C2.2962 119 1.50134 118.671 0.915292 118.085C0.329241 117.499 0 116.704 0 115.875ZM9.375 106.5C9.375 105.671 9.70424 104.876 10.2903 104.29C10.8763 103.704 11.6712 103.375 12.5 103.375C13.3288 103.375 14.1237 103.704 14.7097 104.29C15.2958 104.876 15.625 105.671 15.625 106.5C15.625 107.329 15.2958 108.124 14.7097 108.71C14.1237 109.296 13.3288 109.625 12.5 109.625C11.6712 109.625 10.8763 109.296 10.2903 108.71C9.70424 108.124 9.375 107.329 9.375 106.5ZM0 106.5C0 105.671 0.329241 104.876 0.915292 104.29C1.50134 103.704 2.2962 103.375 3.125 103.375C3.9538 103.375 4.74866 103.704 5.33471 104.29C5.92076 104.876 6.25 105.671 6.25 106.5C6.25 107.329 5.92076 108.124 5.33471 108.71C4.74866 109.296 3.9538 109.625 3.125 109.625C2.2962 109.625 1.50134 109.296 0.915292 108.71C0.329241 108.124 0 107.329 0 106.5ZM9.375 97.125C9.375 96.2962 9.70424 95.5013 10.2903 94.9153C10.8763 94.3292 11.6712 94 12.5 94C13.3288 94 14.1237 94.3292 14.7097 94.9153C15.2958 95.5013 15.625 96.2962 15.625 97.125C15.625 97.9538 15.2958 98.7487 14.7097 99.3347C14.1237 99.9208 13.3288 100.25 12.5 100.25C11.6712 100.25 10.8763 99.9208 10.2903 99.3347C9.70424 98.7487 9.375 97.9538 9.375 97.125ZM0 97.125C0 96.2962 0.329241 95.5013 0.915292 94.9153C1.50134 94.3292 2.2962 94 3.125 94C3.9538 94 4.74866 94.3292 5.33471 94.9153C5.92076 95.5013 6.25 96.2962 6.25 97.125C6.25 97.9538 5.92076 98.7487 5.33471 99.3347C4.74866 99.9208 3.9538 100.25 3.125 100.25C2.2962 100.25 1.50134 99.9208 0.915292 99.3347C0.329241 98.7487 0 97.9538 0 97.125Z" />
    <path d="M9.375 87.625C9.375 86.7962 9.70424 86.0013 10.2903 85.4153C10.8763 84.8292 11.6712 84.5 12.5 84.5C13.3288 84.5 14.1237 84.8292 14.7097 85.4153C15.2958 86.0013 15.625 86.7962 15.625 87.625C15.625 88.4538 15.2958 89.2487 14.7097 89.8347C14.1237 90.4208 13.3288 90.75 12.5 90.75C11.6712 90.75 10.8763 90.4208 10.2903 89.8347C9.70424 89.2487 9.375 88.4538 9.375 87.625ZM0 87.625C0 86.7962 0.329241 86.0013 0.915292 85.4153C1.50134 84.8292 2.2962 84.5 3.125 84.5C3.9538 84.5 4.74866 84.8292 5.33471 85.4153C5.92076 86.0013 6.25 86.7962 6.25 87.625C6.25 88.4538 5.92076 89.2487 5.33471 89.8347C4.74866 90.4208 3.9538 90.75 3.125 90.75C2.2962 90.75 1.50134 90.4208 0.915292 89.8347C0.329241 89.2487 0 88.4538 0 87.625ZM9.375 78.25C9.375 77.4212 9.70424 76.6263 10.2903 76.0403C10.8763 75.4542 11.6712 75.125 12.5 75.125C13.3288 75.125 14.1237 75.4542 14.7097 76.0403C15.2958 76.6263 15.625 77.4212 15.625 78.25C15.625 79.0788 15.2958 79.8737 14.7097 80.4597C14.1237 81.0458 13.3288 81.375 12.5 81.375C11.6712 81.375 10.8763 81.0458 10.2903 80.4597C9.70424 79.8737 9.375 79.0788 9.375 78.25ZM0 78.25C0 77.4212 0.329241 76.6263 0.915292 76.0403C1.50134 75.4542 2.2962 75.125 3.125 75.125C3.9538 75.125 4.74866 75.4542 5.33471 76.0403C5.92076 76.6263 6.25 77.4212 6.25 78.25C6.25 79.0788 5.92076 79.8737 5.33471 80.4597C4.74866 81.0458 3.9538 81.375 3.125 81.375C2.2962 81.375 1.50134 81.0458 0.915292 80.4597C0.329241 79.8737 0 79.0788 0 78.25ZM9.375 68.875C9.375 68.0462 9.70424 67.2513 10.2903 66.6653C10.8763 66.0792 11.6712 65.75 12.5 65.75C13.3288 65.75 14.1237 66.0792 14.7097 66.6653C15.2958 67.2513 15.625 68.0462 15.625 68.875C15.625 69.7038 15.2958 70.4987 14.7097 71.0847C14.1237 71.6708 13.3288 72 12.5 72C11.6712 72 10.8763 71.6708 10.2903 71.0847C9.70424 70.4987 9.375 69.7038 9.375 68.875ZM0 68.875C0 68.0462 0.329241 67.2513 0.915292 66.6653C1.50134 66.0792 2.2962 65.75 3.125 65.75C3.9538 65.75 4.74866 66.0792 5.33471 66.6653C5.92076 67.2513 6.25 68.0462 6.25 68.875C6.25 69.7038 5.92076 70.4987 5.33471 71.0847C4.74866 71.6708 3.9538 72 3.125 72C2.2962 72 1.50134 71.6708 0.915292 71.0847C0.329241 70.4987 0 69.7038 0 68.875ZM9.375 59.5C9.375 58.6712 9.70424 57.8763 10.2903 57.2903C10.8763 56.7042 11.6712 56.375 12.5 56.375C13.3288 56.375 14.1237 56.7042 14.7097 57.2903C15.2958 57.8763 15.625 58.6712 15.625 59.5C15.625 60.3288 15.2958 61.1237 14.7097 61.7097C14.1237 62.2958 13.3288 62.625 12.5 62.625C11.6712 62.625 10.8763 62.2958 10.2903 61.7097C9.70424 61.1237 9.375 60.3288 9.375 59.5ZM0 59.5C0 58.6712 0.329241 57.8763 0.915292 57.2903C1.50134 56.7042 2.2962 56.375 3.125 56.375C3.9538 56.375 4.74866 56.7042 5.33471 57.2903C5.92076 57.8763 6.25 58.6712 6.25 59.5C6.25 60.3288 5.92076 61.1237 5.33471 61.7097C4.74866 62.2958 3.9538 62.625 3.125 62.625C2.2962 62.625 1.50134 62.2958 0.915292 61.7097C0.329241 61.1237 0 60.3288 0 59.5ZM9.375 50.125C9.375 49.2962 9.70424 48.5013 10.2903 47.9153C10.8763 47.3292 11.6712 47 12.5 47C13.3288 47 14.1237 47.3292 14.7097 47.9153C15.2958 48.5013 15.625 49.2962 15.625 50.125C15.625 50.9538 15.2958 51.7487 14.7097 52.3347C14.1237 52.9208 13.3288 53.25 12.5 53.25C11.6712 53.25 10.8763 52.9208 10.2903 52.3347C9.70424 51.7487 9.375 50.9538 9.375 50.125ZM0 50.125C0 49.2962 0.329241 48.5013 0.915292 47.9153C1.50134 47.3292 2.2962 47 3.125 47C3.9538 47 4.74866 47.3292 5.33471 47.9153C5.92076 48.5013 6.25 49.2962 6.25 50.125C6.25 50.9538 5.92076 51.7487 5.33471 52.3347C4.74866 52.9208 3.9538 53.25 3.125 53.25C2.2962 53.25 1.50134 52.9208 0.915292 52.3347C0.329241 51.7487 0 50.9538 0 50.125Z" />
    <path d="M9.375 40.625C9.375 39.7962 9.70424 39.0013 10.2903 38.4153C10.8763 37.8292 11.6712 37.5 12.5 37.5C13.3288 37.5 14.1237 37.8292 14.7097 38.4153C15.2958 39.0013 15.625 39.7962 15.625 40.625C15.625 41.4538 15.2958 42.2487 14.7097 42.8347C14.1237 43.4208 13.3288 43.75 12.5 43.75C11.6712 43.75 10.8763 43.4208 10.2903 42.8347C9.70424 42.2487 9.375 41.4538 9.375 40.625ZM0 40.625C0 39.7962 0.329241 39.0013 0.915292 38.4153C1.50134 37.8292 2.2962 37.5 3.125 37.5C3.9538 37.5 4.74866 37.8292 5.33471 38.4153C5.92076 39.0013 6.25 39.7962 6.25 40.625C6.25 41.4538 5.92076 42.2487 5.33471 42.8347C4.74866 43.4208 3.9538 43.75 3.125 43.75C2.2962 43.75 1.50134 43.4208 0.915292 42.8347C0.329241 42.2487 0 41.4538 0 40.625ZM9.375 31.25C9.375 30.4212 9.70424 29.6263 10.2903 29.0403C10.8763 28.4542 11.6712 28.125 12.5 28.125C13.3288 28.125 14.1237 28.4542 14.7097 29.0403C15.2958 29.6263 15.625 30.4212 15.625 31.25C15.625 32.0788 15.2958 32.8737 14.7097 33.4597C14.1237 34.0458 13.3288 34.375 12.5 34.375C11.6712 34.375 10.8763 34.0458 10.2903 33.4597C9.70424 32.8737 9.375 32.0788 9.375 31.25ZM0 31.25C0 30.4212 0.329241 29.6263 0.915292 29.0403C1.50134 28.4542 2.2962 28.125 3.125 28.125C3.9538 28.125 4.74866 28.4542 5.33471 29.0403C5.92076 29.6263 6.25 30.4212 6.25 31.25C6.25 32.0788 5.92076 32.8737 5.33471 33.4597C4.74866 34.0458 3.9538 34.375 3.125 34.375C2.2962 34.375 1.50134 34.0458 0.915292 33.4597C0.329241 32.8737 0 32.0788 0 31.25ZM9.375 21.875C9.375 21.0462 9.70424 20.2513 10.2903 19.6653C10.8763 19.0792 11.6712 18.75 12.5 18.75C13.3288 18.75 14.1237 19.0792 14.7097 19.6653C15.2958 20.2513 15.625 21.0462 15.625 21.875C15.625 22.7038 15.2958 23.4987 14.7097 24.0847C14.1237 24.6708 13.3288 25 12.5 25C11.6712 25 10.8763 24.6708 10.2903 24.0847C9.70424 23.4987 9.375 22.7038 9.375 21.875ZM0 21.875C0 21.0462 0.329241 20.2513 0.915292 19.6653C1.50134 19.0792 2.2962 18.75 3.125 18.75C3.9538 18.75 4.74866 19.0792 5.33471 19.6653C5.92076 20.2513 6.25 21.0462 6.25 21.875C6.25 22.7038 5.92076 23.4987 5.33471 24.0847C4.74866 24.6708 3.9538 25 3.125 25C2.2962 25 1.50134 24.6708 0.915292 24.0847C0.329241 23.4987 0 22.7038 0 21.875ZM9.375 12.5C9.375 11.6712 9.70424 10.8763 10.2903 10.2903C10.8763 9.70425 11.6712 9.375 12.5 9.375C13.3288 9.375 14.1237 9.70425 14.7097 10.2903C15.2958 10.8763 15.625 11.6712 15.625 12.5C15.625 13.3288 15.2958 14.1237 14.7097 14.7097C14.1237 15.2958 13.3288 15.625 12.5 15.625C11.6712 15.625 10.8763 15.2958 10.2903 14.7097C9.70424 14.1237 9.375 13.3288 9.375 12.5ZM0 12.5C0 11.6712 0.329241 10.8763 0.915292 10.2903C1.50134 9.70425 2.2962 9.375 3.125 9.375C3.9538 9.375 4.74866 9.70425 5.33471 10.2903C5.92076 10.8763 6.25 11.6712 6.25 12.5C6.25 13.3288 5.92076 14.1237 5.33471 14.7097C4.74866 15.2958 3.9538 15.625 3.125 15.625C2.2962 15.625 1.50134 15.2958 0.915292 14.7097C0.329241 14.1237 0 13.3288 0 12.5ZM9.375 3.125C9.375 2.2962 9.70424 1.50135 10.2903 0.915298C10.8763 0.329247 11.6712 0 12.5 0C13.3288 0 14.1237 0.329247 14.7097 0.915298C15.2958 1.50135 15.625 2.2962 15.625 3.125C15.625 3.9538 15.2958 4.74865 14.7097 5.3347C14.1237 5.92075 13.3288 6.25 12.5 6.25C11.6712 6.25 10.8763 5.92075 10.2903 5.3347C9.70424 4.74865 9.375 3.9538 9.375 3.125ZM0 3.125C0 2.2962 0.329241 1.50135 0.915292 0.915298C1.50134 0.329247 2.2962 0 3.125 0C3.9538 0 4.74866 0.329247 5.33471 0.915298C5.92076 1.50135 6.25 2.2962 6.25 3.125C6.25 3.9538 5.92076 4.74865 5.33471 5.3347C4.74866 5.92075 3.9538 6.25 3.125 6.25C2.2962 6.25 1.50134 5.92075 0.915292 5.3347C0.329241 4.74865 0 3.9538 0 3.125Z" />
  </svg>
);
export function ATHOSCards<T extends BaseItem>(props: React.HTMLAttributes<HTMLDivElement> & Props<T>) {
  const { items, update, render } = props;
  const [active, setActive] = useState<Active | null>(null);

  const activeItem = useMemo(() => items.find((item) => item.id === active?.id), [active, items]);
  const sensors = useSensors(
    useSensor(PointerSensor),
    useSensor(KeyboardSensor, {
      coordinateGetter: sortableKeyboardCoordinates,
    })
  );
  const onDragStart = ({ active }: { active: Active }) => {
    setActive(active);
  };
  const onDragEnd = ({ active, over }: DragEndEvent) => {
    if (over && active.id !== over?.id) {
      const activeIndex = items.findIndex(({ id }) => id === active.id);
      const overIndex = items.findIndex(({ id }) => id === over.id);

      update(ArrayMove(items, activeIndex, overIndex));
    }
    setActive(null);
  };
  const onDragCancel = () => {
    setActive(null);
  };

  return (
    <DndContext measuring={measuringConfig} sensors={sensors} onDragStart={onDragStart} onDragEnd={onDragEnd} onDragCancel={onDragCancel}>
      <SortableContext items={items}>
        <div {...props}>
          {items.map((item) => (
            <React.Fragment key={item.id}>
              <SortableItem items={items} update={update} id={item.id}>
                {render(item)}
              </SortableItem>
            </React.Fragment>
          ))}
        </div>
      </SortableContext>
      <Overlay activeItem={activeItem as any} renderItem={render} />
    </DndContext>
  );
}
