@sanity/orderable-document-list

2.0.212.0.22
dist/index.js
~dist/index.jsModified
+104−76
Index: package/dist/index.js
===================================================================
--- package/dist/index.js
+++ package/dist/index.js
@@ -2,15 +2,15 @@
 import { DocumentStatus, DocumentVersionsStatusIndicator, Preview, PreviewCard, defineField, getPublishedId, getVersionFromId, isDraftId, isPublishedId, isVersionId, useClient, useDocumentVersionInfo, useDocumentVersions, usePerspective, useSchema } from "sanity";
 import { LexoRank } from "lexorank";
 import { GenerateIcon } from "@sanity/icons/Generate";
 import { SortIcon } from "@sanity/icons/Sort";
-import { createContext, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useState } from "react";
-import { usePaneRouter } from "sanity/structure";
 import { c } from "react/compiler-runtime";
+import { createContext, useContext, useEffect, useImperativeHandle, useState } from "react";
 import { AvatarCounter, Box, Button, Card, Container, Flex, Spinner, Stack, Text } from "@sanity/ui";
 import { useToast } from "@sanity/ui/toast";
 import { Feedback, useListeningQuery } from "sanity-plugin-utils";
 import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
+import { usePaneRouter } from "sanity/structure";
 import { ChevronDownIcon } from "@sanity/icons/ChevronDown";
 import { ChevronUpIcon } from "@sanity/icons/ChevronUp";
 import { DragHandleIcon } from "@sanity/icons/DragHandle";
 import { Tooltip } from "@sanity/ui/tooltip";
@@ -236,24 +236,32 @@
 	if (isGhosting) return "transparent";
 	if (isDragging || isSelected) return "primary";
 	if (isDuplicate) return "caution";
 };
-function DraggableList({ data, listIsUpdating, setListIsUpdating }) {
-	let toast = useToast(), { groupIndex, routerPanesState } = usePaneRouter(), currentDoc = routerPanesState[groupIndex + 1]?.[0]?.id || !1, [orderedData, setOrderedData] = useState(data), displayedData = listIsUpdating ? orderedData : data, [draggingId, setDraggingId] = useState(""), [selectedIds, setSelectedIds] = useState(currentDoc ? [currentDoc] : []), clearSelected = useCallback(() => setSelectedIds([]), [setSelectedIds]), handleSelect = useCallback((clickedId, index, nativeEvent) => {
-		let isSelected = selectedIds.includes(clickedId), selectMultiple = nativeEvent.shiftKey, selectAdditional = navigator.appVersion.indexOf("Win") === -1 ? nativeEvent.metaKey : nativeEvent.ctrlKey, updatedIds = [];
+function DraggableList(t0) {
+	let $ = c(39), { data, listIsUpdating, setListIsUpdating } = t0, toast = useToast(), { groupIndex, routerPanesState } = usePaneRouter(), currentDoc = routerPanesState[groupIndex + 1]?.[0]?.id || !1, [orderedData, setOrderedData] = useState(data), displayedData = listIsUpdating ? orderedData : data, [draggingId, setDraggingId] = useState(""), t1;
+	$[0] === currentDoc ? t1 = $[1] : (t1 = currentDoc ? [currentDoc] : [], $[0] = currentDoc, $[1] = t1);
+	let [selectedIds, setSelectedIds] = useState(t1), t2;
+	$[2] === Symbol.for("react.memo_cache_sentinel") ? (t2 = () => setSelectedIds([]), $[2] = t2) : t2 = $[2];
+	let clearSelected = t2, t3;
+	$[3] !== displayedData || $[4] !== selectedIds ? (t3 = (clickedId, index, nativeEvent) => {
+		let isSelected = selectedIds.includes(clickedId), selectMultiple = nativeEvent.shiftKey, selectAdditional = navigator.appVersion.indexOf("Win") === -1 ? nativeEvent.metaKey : nativeEvent.ctrlKey, updatedIds;
 		if (!selectMultiple && !selectAdditional) return setSelectedIds([clickedId]);
 		if (selectMultiple && nativeEvent.preventDefault(), selectMultiple && !isSelected) {
-			let lastSelectedId = selectedIds[selectedIds.length - 1] ?? clickedId, lastSelectedIndex = displayedData.findIndex((item) => item._id === lastSelectedId), firstSelected = index < lastSelectedIndex ? index : lastSelectedIndex, lastSelected = index > lastSelectedIndex ? index : lastSelectedIndex, betweenIds = displayedData.filter((_, itemIndex) => itemIndex > firstSelected && itemIndex < lastSelected).map((item_0) => item_0._id);
+			let lastSelectedId = selectedIds[selectedIds.length - 1] ?? clickedId, lastSelectedIndex = displayedData.findIndex((item) => item._id === lastSelectedId), firstSelected = index < lastSelectedIndex ? index : lastSelectedIndex, lastSelected = index > lastSelectedIndex ? index : lastSelectedIndex, betweenIds = displayedData.filter((_, itemIndex) => itemIndex > firstSelected && itemIndex < lastSelected).map(_temp$3);
 			updatedIds = [
 				...selectedIds,
 				...betweenIds,
 				clickedId
 			];
 		} else updatedIds = isSelected ? selectedIds.filter((id) => id !== clickedId) : [...selectedIds, clickedId];
 		return setSelectedIds(updatedIds);
-	}, [displayedData, selectedIds]), client = useSanityClient(), transactPatches = useCallback(async (patches, message) => {
+	}, $[3] = displayedData, $[4] = selectedIds, $[5] = t3) : t3 = $[5];
+	let handleSelect = t3, client = useSanityClient(), t4;
+	$[6] !== client || $[7] !== setListIsUpdating || $[8] !== toast ? (t4 = async (patches, message) => {
 		let transaction = client.transaction();
-		patches.forEach(([docId, ops]) => {
+		patches.forEach((t5) => {
+			let [docId, ops] = t5;
 			transaction.patch(docId, ops);
 		});
 		try {
 			let updated = await transaction.commit({
@@ -270,14 +278,11 @@
 				title: "Reordering failed",
 				status: "error"
 			});
 		}
-	}, [
-		client,
-		clearSelected,
-		setListIsUpdating,
-		toast
-	]), handleDragEnd = useCallback((result, entities) => {
+	}, $[6] = client, $[7] = setListIsUpdating, $[8] = toast, $[9] = t4) : t4 = $[9];
+	let transactPatches = t4, t5;
+	$[10] !== selectedIds || $[11] !== setListIsUpdating || $[12] !== transactPatches ? (t5 = (result, entities) => {
 		setDraggingId("");
 		let { source, destination, draggableId } = result ?? {};
 		if (source?.index === destination?.index || !entities.length || !draggableId || !source || !destination) return;
 		let effectedIds = selectedIds.length > 0 ? selectedIds : [draggableId];
@@ -289,16 +294,16 @@
 			source,
 			destination
 		});
 		newOrder.length > 0 && setOrderedData(newOrder), patches_0.length > 0 && transactPatches(patches_0, message_0);
-	}, [
-		selectedIds,
-		transactPatches,
-		setListIsUpdating
-	]), handleDragStart = useCallback((start) => {
+	}, $[10] = selectedIds, $[11] = setListIsUpdating, $[12] = transactPatches, $[13] = t5) : t5 = $[13];
+	let handleDragEnd = t5, t6;
+	$[14] === selectedIds ? t6 = $[15] : (t6 = (start) => {
 		let id_0 = start.draggableId;
 		selectedIds.includes(id_0) || clearSelected(), setDraggingId(id_0);
-	}, [selectedIds, clearSelected]), incrementIndex = useCallback((shiftFrom, shiftTo, id_1, entities_0) => handleDragEnd({
+	}, $[14] = selectedIds, $[15] = t6);
+	let handleDragStart = t6, t7;
+	$[16] === handleDragEnd ? t7 = $[17] : (t7 = (shiftFrom, shiftTo, id_1, entities_0) => handleDragEnd({
 		draggableId: id_1,
 		source: {
 			droppableId: "documentSortZone",
 			index: shiftFrom
@@ -306,70 +311,93 @@
 		destination: {
 			droppableId: "documentSortZone",
 			index: shiftTo
 		}
-	}, entities_0), [handleDragEnd]), onWindowKeyDown = useCallback((event) => {
+	}, entities_0), $[16] = handleDragEnd, $[17] = t7);
+	let incrementIndex = t7, t8;
+	$[18] === Symbol.for("react.memo_cache_sentinel") ? (t8 = (event) => {
 		event.key === "Escape" && clearSelected();
-	}, [clearSelected]);
-	useEffect(() => (window.addEventListener("keydown", onWindowKeyDown), () => {
+	}, $[18] = t8) : t8 = $[18];
+	let onWindowKeyDown = t8, t10, t9;
+	$[19] === Symbol.for("react.memo_cache_sentinel") ? (t9 = () => (window.addEventListener("keydown", onWindowKeyDown), () => {
 		window.removeEventListener("keydown", onWindowKeyDown);
-	}), [onWindowKeyDown]);
-	let duplicateOrders = useMemo(() => {
-		if (displayedData.length === 0) return [];
-		let orderField = displayedData.map((item_1) => item_1[ORDER_FIELD_NAME]);
-		return orderField.filter((item_2, index_0) => orderField.indexOf(item_2) !== index_0);
-	}, [displayedData]), onDragEnd = useCallback((result_1) => handleDragEnd(result_1, displayedData), [displayedData, handleDragEnd]);
-	return /* @__PURE__ */ jsx(DragDropContext, {
-		onDragStart: handleDragStart,
-		onDragEnd,
-		children: /* @__PURE__ */ jsx(Droppable, {
-			droppableId: "documentSortZone",
-			children: (provided) => /* @__PURE__ */ jsxs("div", {
-				...provided.droppableProps,
-				ref: provided.innerRef,
-				children: [displayedData.map((item_3, index_1) => /* @__PURE__ */ jsx(Draggable, {
-					draggableId: item_3._id,
-					index: index_1,
-					children: (innerProvided, innerSnapshot) => {
-						let isSelected_0 = selectedIds.includes(item_3._id), isDragging = innerSnapshot.isDragging, isGhosting = !!(!isDragging && draggingId && isSelected_0), isUpdating = listIsUpdating && isSelected_0, isDisabled = !item_3[ORDER_FIELD_NAME], isDuplicate = duplicateOrders.includes(item_3[ORDER_FIELD_NAME]), tone = cardTone({
-							isDuplicate,
-							isGhosting,
-							isDragging,
-							isSelected: isSelected_0
-						}), selectedCount = selectedIds.length, dragBadge = isDragging && selectedCount > 1 ? selectedCount : !1;
-						return /* @__PURE__ */ jsx("div", {
-							ref: innerProvided.innerRef,
-							...innerProvided.draggableProps,
-							...innerProvided.dragHandleProps,
-							style: isDisabled ? {
-								opacity: .2,
-								pointerEvents: "none"
-							} : getItemStyle(innerProvided.draggableProps.style, isUpdating),
-							children: /* @__PURE__ */ jsx(Box, {
-								paddingBottom: 1,
-								children: /* @__PURE__ */ jsx(Card, {
-									tone,
-									shadow: isDragging ? 2 : void 0,
-									radius: 2,
-									onClick: (e) => handleSelect(item_3._id, index_1, e.nativeEvent),
-									children: /* @__PURE__ */ jsx(Document, {
-										doc: item_3,
-										entities: displayedData,
-										increment: incrementIndex,
-										index: index_1,
-										isFirst: index_1 === 0,
-										isLast: index_1 === displayedData.length - 1,
-										dragBadge
-									})
+	}), t10 = [onWindowKeyDown], $[19] = t10, $[20] = t9) : (t10 = $[19], t9 = $[20]), useEffect(t9, t10);
+	let t11;
+	bb0: {
+		if (displayedData.length === 0) {
+			let t12;
+			$[21] === Symbol.for("react.memo_cache_sentinel") ? (t12 = [], $[21] = t12) : t12 = $[21], t11 = t12;
+			break bb0;
+		}
+		let t12;
+		if ($[22] !== displayedData) {
+			let orderField = displayedData.map(_temp2$1);
+			t12 = orderField.filter((item_2, index_0) => orderField.indexOf(item_2) !== index_0), $[22] = displayedData, $[23] = t12;
+		} else t12 = $[23];
+		t11 = t12;
+	}
+	let duplicateOrders = t11, t12;
+	$[24] !== displayedData || $[25] !== handleDragEnd ? (t12 = (result_1) => handleDragEnd(result_1, displayedData), $[24] = displayedData, $[25] = handleDragEnd, $[26] = t12) : t12 = $[26];
+	let onDragEnd = t12, t13;
+	$[27] !== displayedData || $[28] !== draggingId || $[29] !== duplicateOrders || $[30] !== handleSelect || $[31] !== incrementIndex || $[32] !== listIsUpdating || $[33] !== selectedIds ? (t13 = /* @__PURE__ */ jsx(Droppable, {
+		droppableId: "documentSortZone",
+		children: (provided) => /* @__PURE__ */ jsxs("div", {
+			...provided.droppableProps,
+			ref: provided.innerRef,
+			children: [displayedData.map((item_3, index_1) => /* @__PURE__ */ jsx(Draggable, {
+				draggableId: item_3._id,
+				index: index_1,
+				children: (innerProvided, innerSnapshot) => {
+					let isSelected_0 = selectedIds.includes(item_3._id), isDragging = innerSnapshot.isDragging, isGhosting = !!(!isDragging && draggingId && isSelected_0), isUpdating = listIsUpdating && isSelected_0, isDisabled = !item_3[ORDER_FIELD_NAME], isDuplicate = duplicateOrders.includes(item_3[ORDER_FIELD_NAME]), tone = cardTone({
+						isDuplicate,
+						isGhosting,
+						isDragging,
+						isSelected: isSelected_0
+					}), selectedCount = selectedIds.length, dragBadge = isDragging && selectedCount > 1 ? selectedCount : !1;
+					return /* @__PURE__ */ jsx("div", {
+						ref: innerProvided.innerRef,
+						...innerProvided.draggableProps,
+						...innerProvided.dragHandleProps,
+						style: isDisabled ? {
+							opacity: .2,
+							pointerEvents: "none"
+						} : getItemStyle(innerProvided.draggableProps.style, isUpdating),
+						children: /* @__PURE__ */ jsx(Box, {
+							paddingBottom: 1,
+							children: /* @__PURE__ */ jsx(Card, {
+								tone,
+								shadow: isDragging ? 2 : void 0,
+								radius: 2,
+								onClick: (e) => handleSelect(item_3._id, index_1, e.nativeEvent),
+								children: /* @__PURE__ */ jsx(Document, {
+									doc: item_3,
+									entities: displayedData,
+									increment: incrementIndex,
+									index: index_1,
+									isFirst: index_1 === 0,
+									isLast: index_1 === displayedData.length - 1,
+									dragBadge
 								})
 							})
-						});
-					}
-				}, `${item_3._id}-${item_3[ORDER_FIELD_NAME]}`)), provided.placeholder]
-			})
+						})
+					});
+				}
+			}, `${item_3._id}-${item_3[ORDER_FIELD_NAME]}`)), provided.placeholder]
 		})
-	});
+	}), $[27] = displayedData, $[28] = draggingId, $[29] = duplicateOrders, $[30] = handleSelect, $[31] = incrementIndex, $[32] = listIsUpdating, $[33] = selectedIds, $[34] = t13) : t13 = $[34];
+	let t14;
+	return $[35] !== handleDragStart || $[36] !== onDragEnd || $[37] !== t13 ? (t14 = /* @__PURE__ */ jsx(DragDropContext, {
+		onDragStart: handleDragStart,
+		onDragEnd,
+		children: t13
+	}), $[35] = handleDragStart, $[36] = onDragEnd, $[37] = t13, $[38] = t14) : t14 = $[38], t14;
 }
+function _temp2$1(item_1) {
+	return item_1[ORDER_FIELD_NAME];
+}
+function _temp$3(item_0) {
+	return item_0._id;
+}
 const isVersionForCurrentPerspective = (document, perspectiveName, publishedId) => document._id && isVersionId(document._id) && getVersionFromId(document._id) === perspectiveName && getPublishedId(document._id) === publishedId, getFilteredDedupedDocs = (documents, perspectiveName) => {
 	let flatDocuments = documents.flat(), dedupedDocuments = [];
 	for (let cur of flatDocuments) if (cur._id) {
 		if (isVersionId(cur._id)) {