@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)) {