@cloudscape-design/board-components 3.0.118 → 3.0.120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/board/internal.js CHANGED
@@ -128,10 +128,8 @@ export function InternalBoard({ items, renderItem, onItemsChange, empty, i18nStr
128
128
  useDragSubscription("submit", () => {
129
129
  dispatch({ type: "submit" });
130
130
  autoScrollHandlers.stop();
131
- if (!transition) {
132
- throw new Error("Invariant violation: no transition.");
133
- }
134
- if (!transition.layoutShift ||
131
+ if (!transition ||
132
+ !transition.layoutShift ||
135
133
  transition.layoutShift.conflicts.length > 0 ||
136
134
  transition.layoutShift.moves.length === 0) {
137
135
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/board/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ReactNode, useEffect, useRef } from \"react\";\nimport { usePrevious } from \"@dnd-kit/utilities\";\nimport clsx from \"clsx\";\n\nimport { getIsRtl, useMergeRefs } from \"@cloudscape-design/component-toolkit/internal\";\n\nimport { getDataAttributes } from \"../internal/base-component/get-data-attributes\";\nimport { InternalBaseComponentProps } from \"../internal/base-component/use-base-component\";\nimport { useContainerColumns } from \"../internal/breakpoints\";\nimport { TRANSITION_DURATION_MS } from \"../internal/constants\";\nimport { useDragSubscription } from \"../internal/dnd-controller/controller\";\nimport { useGlobalDragStateStyles } from \"../internal/global-drag-state-styles\";\nimport Grid from \"../internal/grid\";\nimport { BoardItemDefinition, BoardItemDefinitionBase, Direction, ItemId, Rect } from \"../internal/interfaces\";\nimport { ItemContainer, ItemContainerRef } from \"../internal/item-container\";\nimport LiveRegion from \"../internal/live-region\";\nimport {\n createPlaceholdersLayout,\n getDefaultColumnSpan,\n getDefaultRowSpan,\n getMinColumnSpan,\n getMinRowSpan,\n interpretItems,\n} from \"../internal/utils/layout\";\nimport { Position } from \"../internal/utils/position\";\nimport { useAutoScroll } from \"../internal/utils/use-auto-scroll\";\nimport { BoardProps } from \"./interfaces\";\nimport Placeholder from \"./placeholder\";\nimport { selectTransitionRows, useTransition } from \"./transition\";\nimport { announcementToString } from \"./utils/announcements\";\nimport { createTransforms } from \"./utils/create-transforms\";\nimport { createItemsChangeEvent } from \"./utils/events\";\n\nimport styles from \"./styles.css.js\";\n\nexport function InternalBoard<D>({\n items,\n renderItem,\n onItemsChange,\n empty,\n i18nStrings,\n __internalRootRef,\n ...rest\n}: BoardProps<D> & InternalBaseComponentProps) {\n const containerAccessRef = useRef<HTMLDivElement>(null);\n const [currentColumns, containerQueryRef] = useContainerColumns();\n const containerRef = useMergeRefs(containerAccessRef, containerQueryRef);\n const itemContainerRef = useRef<{ [id: ItemId]: ItemContainerRef }>({});\n\n const isRtl = () => getIsRtl(containerAccessRef.current);\n\n useGlobalDragStateStyles();\n\n const autoScrollHandlers = useAutoScroll();\n\n const [transitionState, dispatch] = useTransition<D>({ isRtl });\n const transition = transitionState.transition;\n const removeTransition = transitionState.removeTransition;\n const transitionAnnouncement = transitionState.announcement;\n const acquiredItem = transition?.acquiredItem ?? null;\n const acquiredItemElement = transition?.acquiredItemElement;\n\n // Using cached columns from transition to ensure no unexpected changes in the process.\n const columns = transition ? transition.itemsLayout.columns : currentColumns;\n\n // Use previous items while remove transition is in progress.\n items = removeTransition?.items ?? items;\n\n // The acquired item is the one being inserting at the moment but not submitted yet.\n // It needs to be included to the layout to be a part of layout shifts and rendering.\n items = acquiredItem ? [...items, acquiredItem] : items;\n const itemsLayout = interpretItems(items, columns);\n\n const layoutItemById = new Map(itemsLayout.items.map((item) => [item.id, item]));\n const layoutItemIndexById = new Map(itemsLayout.items.map((item, index) => [item.id, index]));\n\n // Items and layout items must maintain the same order visually, in the DOM and in the data\n // to ensure on-change events and tab order work as expected.\n items = [...items].sort((a, b) => (layoutItemIndexById.get(a.id) ?? -1) - (layoutItemIndexById.get(b.id) ?? -1));\n\n // When an item gets acquired or removed the focus needs to be dispatched on the next render.\n const focusNextRenderIdRef = useRef<null | ItemId>(null);\n useEffect(() => {\n const focusTarget = focusNextRenderIdRef.current;\n if (focusTarget) {\n itemContainerRef.current[focusTarget].focusDragHandle();\n }\n focusNextRenderIdRef.current = null;\n });\n\n // Submit scheduled removal after a delay to let animations play.\n useEffect(() => {\n if (!removeTransition) {\n return;\n }\n\n const timeoutId = setTimeout(() => {\n dispatch({ type: \"submit\" });\n\n const removedItemIndex = items.findIndex((it) => it.id === removeTransition.removedItem.id);\n const nextIndexToFocus = removedItemIndex !== items.length - 1 ? removedItemIndex : items.length - 2;\n const newItems = createItemsChangeEvent(items, removeTransition.layoutShift);\n const itemIdToFocus = newItems.detail.items[nextIndexToFocus]?.id;\n\n if (itemIdToFocus) {\n itemContainerRef.current[itemIdToFocus].focusDragHandle();\n }\n onItemsChange(newItems);\n }, TRANSITION_DURATION_MS);\n\n return () => clearTimeout(timeoutId);\n }, [removeTransition, items, onItemsChange]);\n\n // When item is inserting with the keyboard it keeps rendering by the palette and upon submission\n // it starts rendering by the board. This transitions might lead to the focus being lost from the item's drag handle.\n // The below code refocuses the drag handle when detecting the acquired item is no longer used.\n const acquiredItemId = usePrevious(acquiredItem?.id);\n const previousAcquiredItemElement = usePrevious(acquiredItemElement);\n useEffect(() => {\n if (acquiredItemId && previousAcquiredItemElement && !acquiredItemElement) {\n itemContainerRef.current[acquiredItemId]?.focusDragHandle();\n }\n }, [acquiredItemId, previousAcquiredItemElement, acquiredItemElement]);\n\n const rows = selectTransitionRows(transitionState) || itemsLayout.rows;\n const placeholdersLayout = createPlaceholdersLayout(rows, itemsLayout.columns);\n\n function isElementOverBoard(rect: Rect) {\n const board = containerAccessRef.current!;\n const boardContains = (target: null | Element) => board === target || board.contains(target);\n const left = !isRtl() ? rect.left : document.documentElement.clientWidth - rect.left;\n const right = !isRtl() ? rect.right : document.documentElement.clientWidth - rect.right;\n const { top, bottom } = rect;\n return (\n boardContains(document.elementFromPoint(left, top)) ||\n boardContains(document.elementFromPoint(right, top)) ||\n boardContains(document.elementFromPoint(right, bottom)) ||\n boardContains(document.elementFromPoint(left, bottom))\n );\n }\n\n useDragSubscription(\"start\", ({ operation, interactionType, draggableItem, collisionRect, collisionIds }) => {\n dispatch({\n type: \"init\",\n operation,\n interactionType,\n itemsLayout,\n // TODO: resolve any\n // The code only works assuming the board can take any draggable.\n // If draggables can be of different types a check of some sort is required here.\n draggableItem: draggableItem as BoardItemDefinitionBase<any>,\n draggableRect: collisionRect,\n collisionIds: interactionType === \"pointer\" && isElementOverBoard(collisionRect) ? collisionIds : [],\n });\n\n autoScrollHandlers.run();\n });\n\n useDragSubscription(\"update\", ({ interactionType, collisionIds, positionOffset, collisionRect }) => {\n dispatch({\n type: \"update-with-pointer\",\n collisionIds: interactionType === \"pointer\" && isElementOverBoard(collisionRect) ? collisionIds : [],\n positionOffset,\n draggableRect: collisionRect,\n });\n });\n\n useDragSubscription(\"submit\", () => {\n dispatch({ type: \"submit\" });\n\n autoScrollHandlers.stop();\n\n if (!transition) {\n throw new Error(\"Invariant violation: no transition.\");\n }\n if (\n !transition.layoutShift ||\n transition.layoutShift.conflicts.length > 0 ||\n transition.layoutShift.moves.length === 0\n ) {\n return null;\n }\n\n // Commit new layout for insert case.\n if (transition.operation === \"insert\") {\n onItemsChange(createItemsChangeEvent([...items, transition.draggableItem], transition.layoutShift));\n }\n // Commit new layout for reorder/resize case.\n else {\n onItemsChange(createItemsChangeEvent(items, transition.layoutShift));\n }\n });\n\n useDragSubscription(\"discard\", () => {\n dispatch({ type: \"discard\" });\n\n autoScrollHandlers.stop();\n });\n\n useDragSubscription(\"acquire\", ({ droppableId, draggableItem, renderAcquiredItem }) => {\n const placeholder = placeholdersLayout.items.find((it) => it.id === droppableId);\n\n // If missing then it does not belong to this board.\n if (!placeholder) {\n return;\n }\n\n dispatch({\n type: \"acquire-item\",\n position: new Position({ x: placeholder.x, y: placeholder.y }),\n layoutElement: containerAccessRef.current!,\n acquiredItemElement: renderAcquiredItem(),\n });\n focusNextRenderIdRef.current = draggableItem.id;\n });\n\n const removeItemAction = (removedItem: BoardItemDefinition<D>) => {\n dispatch({ type: \"init-remove\", items, itemsLayout, removedItem });\n };\n\n function onItemMove(direction: Direction) {\n if (transition) {\n dispatch({ type: \"update-with-keyboard\", direction });\n autoScrollHandlers.scheduleActiveElementScrollIntoView(TRANSITION_DURATION_MS);\n }\n }\n\n const announcement = transitionAnnouncement\n ? announcementToString(transitionAnnouncement, items, i18nStrings, itemsLayout.columns)\n : \"\";\n\n return (\n <div ref={__internalRootRef} {...getDataAttributes(rest)}>\n <div ref={containerRef} className={clsx(styles.root, { [styles.empty]: rows === 0 })}>\n {rows > 0 ? (\n <Grid\n isRtl={isRtl}\n columns={itemsLayout.columns}\n layout={[...placeholdersLayout.items, ...itemsLayout.items]}\n >\n {(gridContext) => {\n const layoutShift = transition?.layoutShift ?? removeTransition?.layoutShift;\n const transforms = layoutShift ? createTransforms(itemsLayout, layoutShift.moves, gridContext) : {};\n\n // Exclude drag target from transforms.\n if (transition && transition.interactionType === \"pointer\") {\n delete transforms[transition.draggableItem.id];\n }\n\n const children: ReactNode[] = [];\n\n /* Placeholders are rendered even when there is no transition to support the first collisions check. */\n placeholdersLayout.items.forEach((placeholder) =>\n children.push(\n <Placeholder\n key={placeholder.id}\n id={placeholder.id}\n state={transition ? (transition.collisionIds?.has(placeholder.id) ? \"hover\" : \"active\") : \"default\"}\n gridContext={gridContext}\n columns={itemsLayout.columns}\n />,\n ),\n );\n\n items.forEach((item) => {\n const layoutItem = layoutItemById.get(item.id);\n const isResizing = transition?.operation === \"resize\" && transition?.draggableItem.id === item.id;\n\n const itemSize = layoutItem ?? {\n width: getDefaultColumnSpan(item, itemsLayout.columns),\n height: getDefaultRowSpan(item),\n };\n\n const itemMaxSize =\n isResizing && layoutItem ? { width: itemsLayout.columns - layoutItem.x, height: 999 } : itemSize;\n\n children.push(\n <ItemContainer\n key={item.id}\n ref={(elem) => {\n if (elem) {\n itemContainerRef.current[item.id] = elem;\n } else {\n delete itemContainerRef.current[item.id];\n }\n }}\n item={item}\n transform={transforms[item.id]}\n inTransition={!!transition || !!removeTransition}\n placed={item.id !== acquiredItem?.id}\n acquired={item.id === acquiredItem?.id}\n getItemSize={() => ({\n width: gridContext.getWidth(itemSize.width),\n minWidth: gridContext.getWidth(getMinColumnSpan(item, itemsLayout.columns)),\n maxWidth: gridContext.getWidth(itemMaxSize.width),\n height: gridContext.getHeight(itemSize.height),\n minHeight: gridContext.getHeight(getMinRowSpan(item)),\n maxHeight: gridContext.getHeight(itemMaxSize.height),\n })}\n onKeyMove={onItemMove}\n isRtl={isRtl}\n >\n {item.id === acquiredItem?.id && acquiredItemElement\n ? () => acquiredItemElement\n : () => renderItem(item, { removeItem: () => removeItemAction(item) })}\n </ItemContainer>,\n );\n });\n\n return children;\n }}\n </Grid>\n ) : (\n empty\n )}\n </div>\n\n <LiveRegion>{announcement}</LiveRegion>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/board/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ReactNode, useEffect, useRef } from \"react\";\nimport { usePrevious } from \"@dnd-kit/utilities\";\nimport clsx from \"clsx\";\n\nimport { getIsRtl, useMergeRefs } from \"@cloudscape-design/component-toolkit/internal\";\n\nimport { getDataAttributes } from \"../internal/base-component/get-data-attributes\";\nimport { InternalBaseComponentProps } from \"../internal/base-component/use-base-component\";\nimport { useContainerColumns } from \"../internal/breakpoints\";\nimport { TRANSITION_DURATION_MS } from \"../internal/constants\";\nimport { useDragSubscription } from \"../internal/dnd-controller/controller\";\nimport { useGlobalDragStateStyles } from \"../internal/global-drag-state-styles\";\nimport Grid from \"../internal/grid\";\nimport { BoardItemDefinition, BoardItemDefinitionBase, Direction, ItemId, Rect } from \"../internal/interfaces\";\nimport { ItemContainer, ItemContainerRef } from \"../internal/item-container\";\nimport LiveRegion from \"../internal/live-region\";\nimport {\n createPlaceholdersLayout,\n getDefaultColumnSpan,\n getDefaultRowSpan,\n getMinColumnSpan,\n getMinRowSpan,\n interpretItems,\n} from \"../internal/utils/layout\";\nimport { Position } from \"../internal/utils/position\";\nimport { useAutoScroll } from \"../internal/utils/use-auto-scroll\";\nimport { BoardProps } from \"./interfaces\";\nimport Placeholder from \"./placeholder\";\nimport { selectTransitionRows, useTransition } from \"./transition\";\nimport { announcementToString } from \"./utils/announcements\";\nimport { createTransforms } from \"./utils/create-transforms\";\nimport { createItemsChangeEvent } from \"./utils/events\";\n\nimport styles from \"./styles.css.js\";\n\nexport function InternalBoard<D>({\n items,\n renderItem,\n onItemsChange,\n empty,\n i18nStrings,\n __internalRootRef,\n ...rest\n}: BoardProps<D> & InternalBaseComponentProps) {\n const containerAccessRef = useRef<HTMLDivElement>(null);\n const [currentColumns, containerQueryRef] = useContainerColumns();\n const containerRef = useMergeRefs(containerAccessRef, containerQueryRef);\n const itemContainerRef = useRef<{ [id: ItemId]: ItemContainerRef }>({});\n\n const isRtl = () => getIsRtl(containerAccessRef.current);\n\n useGlobalDragStateStyles();\n\n const autoScrollHandlers = useAutoScroll();\n\n const [transitionState, dispatch] = useTransition<D>({ isRtl });\n const transition = transitionState.transition;\n const removeTransition = transitionState.removeTransition;\n const transitionAnnouncement = transitionState.announcement;\n const acquiredItem = transition?.acquiredItem ?? null;\n const acquiredItemElement = transition?.acquiredItemElement;\n\n // Using cached columns from transition to ensure no unexpected changes in the process.\n const columns = transition ? transition.itemsLayout.columns : currentColumns;\n\n // Use previous items while remove transition is in progress.\n items = removeTransition?.items ?? items;\n\n // The acquired item is the one being inserting at the moment but not submitted yet.\n // It needs to be included to the layout to be a part of layout shifts and rendering.\n items = acquiredItem ? [...items, acquiredItem] : items;\n const itemsLayout = interpretItems(items, columns);\n\n const layoutItemById = new Map(itemsLayout.items.map((item) => [item.id, item]));\n const layoutItemIndexById = new Map(itemsLayout.items.map((item, index) => [item.id, index]));\n\n // Items and layout items must maintain the same order visually, in the DOM and in the data\n // to ensure on-change events and tab order work as expected.\n items = [...items].sort((a, b) => (layoutItemIndexById.get(a.id) ?? -1) - (layoutItemIndexById.get(b.id) ?? -1));\n\n // When an item gets acquired or removed the focus needs to be dispatched on the next render.\n const focusNextRenderIdRef = useRef<null | ItemId>(null);\n useEffect(() => {\n const focusTarget = focusNextRenderIdRef.current;\n if (focusTarget) {\n itemContainerRef.current[focusTarget].focusDragHandle();\n }\n focusNextRenderIdRef.current = null;\n });\n\n // Submit scheduled removal after a delay to let animations play.\n useEffect(() => {\n if (!removeTransition) {\n return;\n }\n\n const timeoutId = setTimeout(() => {\n dispatch({ type: \"submit\" });\n\n const removedItemIndex = items.findIndex((it) => it.id === removeTransition.removedItem.id);\n const nextIndexToFocus = removedItemIndex !== items.length - 1 ? removedItemIndex : items.length - 2;\n const newItems = createItemsChangeEvent(items, removeTransition.layoutShift);\n const itemIdToFocus = newItems.detail.items[nextIndexToFocus]?.id;\n\n if (itemIdToFocus) {\n itemContainerRef.current[itemIdToFocus].focusDragHandle();\n }\n onItemsChange(newItems);\n }, TRANSITION_DURATION_MS);\n\n return () => clearTimeout(timeoutId);\n }, [removeTransition, items, onItemsChange]);\n\n // When item is inserting with the keyboard it keeps rendering by the palette and upon submission\n // it starts rendering by the board. This transitions might lead to the focus being lost from the item's drag handle.\n // The below code refocuses the drag handle when detecting the acquired item is no longer used.\n const acquiredItemId = usePrevious(acquiredItem?.id);\n const previousAcquiredItemElement = usePrevious(acquiredItemElement);\n useEffect(() => {\n if (acquiredItemId && previousAcquiredItemElement && !acquiredItemElement) {\n itemContainerRef.current[acquiredItemId]?.focusDragHandle();\n }\n }, [acquiredItemId, previousAcquiredItemElement, acquiredItemElement]);\n\n const rows = selectTransitionRows(transitionState) || itemsLayout.rows;\n const placeholdersLayout = createPlaceholdersLayout(rows, itemsLayout.columns);\n\n function isElementOverBoard(rect: Rect) {\n const board = containerAccessRef.current!;\n const boardContains = (target: null | Element) => board === target || board.contains(target);\n const left = !isRtl() ? rect.left : document.documentElement.clientWidth - rect.left;\n const right = !isRtl() ? rect.right : document.documentElement.clientWidth - rect.right;\n const { top, bottom } = rect;\n return (\n boardContains(document.elementFromPoint(left, top)) ||\n boardContains(document.elementFromPoint(right, top)) ||\n boardContains(document.elementFromPoint(right, bottom)) ||\n boardContains(document.elementFromPoint(left, bottom))\n );\n }\n\n useDragSubscription(\"start\", ({ operation, interactionType, draggableItem, collisionRect, collisionIds }) => {\n dispatch({\n type: \"init\",\n operation,\n interactionType,\n itemsLayout,\n // TODO: resolve any\n // The code only works assuming the board can take any draggable.\n // If draggables can be of different types a check of some sort is required here.\n draggableItem: draggableItem as BoardItemDefinitionBase<any>,\n draggableRect: collisionRect,\n collisionIds: interactionType === \"pointer\" && isElementOverBoard(collisionRect) ? collisionIds : [],\n });\n\n autoScrollHandlers.run();\n });\n\n useDragSubscription(\"update\", ({ interactionType, collisionIds, positionOffset, collisionRect }) => {\n dispatch({\n type: \"update-with-pointer\",\n collisionIds: interactionType === \"pointer\" && isElementOverBoard(collisionRect) ? collisionIds : [],\n positionOffset,\n draggableRect: collisionRect,\n });\n });\n\n useDragSubscription(\"submit\", () => {\n dispatch({ type: \"submit\" });\n\n autoScrollHandlers.stop();\n\n if (\n !transition ||\n !transition.layoutShift ||\n transition.layoutShift.conflicts.length > 0 ||\n transition.layoutShift.moves.length === 0\n ) {\n return null;\n }\n\n // Commit new layout for insert case.\n if (transition.operation === \"insert\") {\n onItemsChange(createItemsChangeEvent([...items, transition.draggableItem], transition.layoutShift));\n }\n // Commit new layout for reorder/resize case.\n else {\n onItemsChange(createItemsChangeEvent(items, transition.layoutShift));\n }\n });\n\n useDragSubscription(\"discard\", () => {\n dispatch({ type: \"discard\" });\n\n autoScrollHandlers.stop();\n });\n\n useDragSubscription(\"acquire\", ({ droppableId, draggableItem, renderAcquiredItem }) => {\n const placeholder = placeholdersLayout.items.find((it) => it.id === droppableId);\n\n // If missing then it does not belong to this board.\n if (!placeholder) {\n return;\n }\n\n dispatch({\n type: \"acquire-item\",\n position: new Position({ x: placeholder.x, y: placeholder.y }),\n layoutElement: containerAccessRef.current!,\n acquiredItemElement: renderAcquiredItem(),\n });\n focusNextRenderIdRef.current = draggableItem.id;\n });\n\n const removeItemAction = (removedItem: BoardItemDefinition<D>) => {\n dispatch({ type: \"init-remove\", items, itemsLayout, removedItem });\n };\n\n function onItemMove(direction: Direction) {\n if (transition) {\n dispatch({ type: \"update-with-keyboard\", direction });\n autoScrollHandlers.scheduleActiveElementScrollIntoView(TRANSITION_DURATION_MS);\n }\n }\n\n const announcement = transitionAnnouncement\n ? announcementToString(transitionAnnouncement, items, i18nStrings, itemsLayout.columns)\n : \"\";\n\n return (\n <div ref={__internalRootRef} {...getDataAttributes(rest)}>\n <div ref={containerRef} className={clsx(styles.root, { [styles.empty]: rows === 0 })}>\n {rows > 0 ? (\n <Grid\n isRtl={isRtl}\n columns={itemsLayout.columns}\n layout={[...placeholdersLayout.items, ...itemsLayout.items]}\n >\n {(gridContext) => {\n const layoutShift = transition?.layoutShift ?? removeTransition?.layoutShift;\n const transforms = layoutShift ? createTransforms(itemsLayout, layoutShift.moves, gridContext) : {};\n\n // Exclude drag target from transforms.\n if (transition && transition.interactionType === \"pointer\") {\n delete transforms[transition.draggableItem.id];\n }\n\n const children: ReactNode[] = [];\n\n /* Placeholders are rendered even when there is no transition to support the first collisions check. */\n placeholdersLayout.items.forEach((placeholder) =>\n children.push(\n <Placeholder\n key={placeholder.id}\n id={placeholder.id}\n state={transition ? (transition.collisionIds?.has(placeholder.id) ? \"hover\" : \"active\") : \"default\"}\n gridContext={gridContext}\n columns={itemsLayout.columns}\n />,\n ),\n );\n\n items.forEach((item) => {\n const layoutItem = layoutItemById.get(item.id);\n const isResizing = transition?.operation === \"resize\" && transition?.draggableItem.id === item.id;\n\n const itemSize = layoutItem ?? {\n width: getDefaultColumnSpan(item, itemsLayout.columns),\n height: getDefaultRowSpan(item),\n };\n\n const itemMaxSize =\n isResizing && layoutItem ? { width: itemsLayout.columns - layoutItem.x, height: 999 } : itemSize;\n\n children.push(\n <ItemContainer\n key={item.id}\n ref={(elem) => {\n if (elem) {\n itemContainerRef.current[item.id] = elem;\n } else {\n delete itemContainerRef.current[item.id];\n }\n }}\n item={item}\n transform={transforms[item.id]}\n inTransition={!!transition || !!removeTransition}\n placed={item.id !== acquiredItem?.id}\n acquired={item.id === acquiredItem?.id}\n getItemSize={() => ({\n width: gridContext.getWidth(itemSize.width),\n minWidth: gridContext.getWidth(getMinColumnSpan(item, itemsLayout.columns)),\n maxWidth: gridContext.getWidth(itemMaxSize.width),\n height: gridContext.getHeight(itemSize.height),\n minHeight: gridContext.getHeight(getMinRowSpan(item)),\n maxHeight: gridContext.getHeight(itemMaxSize.height),\n })}\n onKeyMove={onItemMove}\n isRtl={isRtl}\n >\n {item.id === acquiredItem?.id && acquiredItemElement\n ? () => acquiredItemElement\n : () => renderItem(item, { removeItem: () => removeItemAction(item) })}\n </ItemContainer>,\n );\n });\n\n return children;\n }}\n </Grid>\n ) : (\n empty\n )}\n </div>\n\n <LiveRegion>{announcement}</LiveRegion>\n </div>\n );\n}\n"]}
@@ -92,7 +92,7 @@ function submitTransition(state) {
92
92
  };
93
93
  }
94
94
  if (!transition) {
95
- throw new Error("Invariant violation: no transition.");
95
+ return { transition: null, removeTransition: null, announcement: null };
96
96
  }
97
97
  const { operation, itemsLayout, draggableItem: item, acquiredItem } = transition;
98
98
  const itemBelongsToBoard = item.id === (acquiredItem === null || acquiredItem === void 0 ? void 0 : acquiredItem.id) || itemsLayout.items.some((it) => it.id === item.id);
@@ -111,10 +111,10 @@ function submitTransition(state) {
111
111
  function discardTransition(state) {
112
112
  const { transition, removeTransition } = state;
113
113
  if (removeTransition) {
114
- throw new Error("Can't discard remove transition.");
114
+ throw new Error("Invariant violation: can't discard remove transition.");
115
115
  }
116
116
  if (!transition) {
117
- throw new Error("Invariant violation: no transition.");
117
+ return { transition: null, removeTransition: null, announcement: null };
118
118
  }
119
119
  const { operation, itemsLayout, draggableItem: item, acquiredItem } = transition;
120
120
  const itemBelongsToBoard = item.id === (acquiredItem === null || acquiredItem === void 0 ? void 0 : acquiredItem.id) || itemsLayout.items.some((it) => it.id === item.id);
@@ -128,7 +128,7 @@ function updateTransitionWithPointerEvent(state, { collisionIds, positionOffset,
128
128
  var _a, _b, _c;
129
129
  const { transition } = state;
130
130
  if (!transition) {
131
- throw new Error("Invariant violation: no transition.");
131
+ return { transition: null, removeTransition: null, announcement: null };
132
132
  }
133
133
  const layout = (_b = (_a = transition.layoutShift) === null || _a === void 0 ? void 0 : _a.next) !== null && _b !== void 0 ? _b : transition.itemsLayout;
134
134
  const layoutItem = layout.items.find((it) => it.id === transition.draggableItem.id);
@@ -171,7 +171,7 @@ function updateTransitionWithPointerEvent(state, { collisionIds, positionOffset,
171
171
  function updateTransitionWithKeyboardEvent(state, { direction }, { isRtl }) {
172
172
  const { transition } = state;
173
173
  if (!transition) {
174
- throw new Error("Invariant violation: no transition.");
174
+ return { transition: null, removeTransition: null, announcement: null };
175
175
  }
176
176
  const updateManualItemTransition = (transition, direction) => {
177
177
  var _a, _b;
@@ -218,7 +218,7 @@ function updateTransitionWithKeyboardEvent(state, { direction }, { isRtl }) {
218
218
  function acquireTransitionItem(state, { position, layoutElement, acquiredItemElement }) {
219
219
  const { transition } = state;
220
220
  if (!transition) {
221
- throw new Error("Invariant violation: no transition.");
221
+ return { transition: null, removeTransition: null, announcement: null };
222
222
  }
223
223
  const { columns } = transition.itemsLayout;
224
224
  const layoutRect = getLogicalBoundingClientRect(layoutElement);
@@ -1 +1 @@
1
- {"version":3,"file":"transition.js","sourceRoot":"","sources":["../../../src/board/transition.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Dispatch, ReactNode, useReducer } from \"react\";\n\nimport { getLogicalBoundingClientRect } from \"@cloudscape-design/component-toolkit/internal\";\n\nimport { InteractionType, Operation } from \"../internal/dnd-controller/controller\";\nimport { BoardItemDefinitionBase, Direction, GridLayout, ItemId, Rect } from \"../internal/interfaces\";\nimport { LayoutEngine } from \"../internal/layout-engine/engine\";\nimport { Coordinates } from \"../internal/utils/coordinates\";\nimport { getDefaultColumnSpan, getDefaultRowSpan, getMinColumnSpan, getMinRowSpan } from \"../internal/utils/layout\";\nimport { Position } from \"../internal/utils/position\";\nimport { BoardProps, RemoveTransition, Transition, TransitionAnnouncement } from \"./interfaces\";\nimport { createOperationAnnouncement } from \"./utils/announcements\";\nimport { getHoveredRect } from \"./utils/get-hovered-rect\";\nimport { getInsertionDirection, getLayoutPlaceholders, getLayoutRows, getLayoutShift } from \"./utils/layout\";\nimport { appendMovePath, appendResizePath } from \"./utils/path\";\n\nexport interface TransitionState<D> {\n transition: null | Transition<D>;\n removeTransition: null | RemoveTransition<D>;\n announcement: null | TransitionAnnouncement;\n}\n\nexport type Action<D> =\n | InitAction<D>\n | InitRemoveAction<D>\n | SubmitAction\n | DiscardAction\n | UpdateWithPointerAction\n | UpdateWithKeyboardAction\n | AcquireItemAction;\n\ninterface InitAction<D> {\n type: \"init\";\n operation: Operation;\n interactionType: InteractionType;\n itemsLayout: GridLayout;\n draggableItem: BoardItemDefinitionBase<D>;\n draggableRect: Rect;\n collisionIds: readonly ItemId[];\n}\ninterface InitRemoveAction<D> {\n type: \"init-remove\";\n items: readonly BoardProps.Item<D>[];\n removedItem: BoardItemDefinitionBase<D>;\n itemsLayout: GridLayout;\n}\ninterface SubmitAction {\n type: \"submit\";\n}\ninterface DiscardAction {\n type: \"discard\";\n}\ninterface UpdateWithPointerAction {\n type: \"update-with-pointer\";\n collisionIds: readonly ItemId[];\n positionOffset: Coordinates;\n draggableRect: Rect;\n}\ninterface UpdateWithKeyboardAction {\n type: \"update-with-keyboard\";\n direction: Direction;\n}\ninterface AcquireItemAction {\n type: \"acquire-item\";\n position: Position;\n layoutElement: HTMLElement;\n acquiredItemElement?: ReactNode;\n}\n\nexport function useTransition<D>({ isRtl }: { isRtl: () => boolean }): [TransitionState<D>, Dispatch<Action<D>>] {\n return useReducer(createTransitionReducer<D>({ isRtl }), {\n transition: null,\n removeTransition: null,\n announcement: null,\n });\n}\n\nexport function selectTransitionRows<D>(state: TransitionState<D>) {\n return state.transition ? getLayoutRows(state.transition) : 0;\n}\n\nfunction createTransitionReducer<D>({ isRtl }: { isRtl: () => boolean }) {\n return function transitionReducer(state: TransitionState<D>, action: Action<D>): TransitionState<D> {\n switch (action.type) {\n case \"init\":\n return initTransition(action);\n case \"init-remove\":\n return initRemoveTransition(action);\n case \"submit\":\n return submitTransition(state);\n case \"discard\":\n return discardTransition(state);\n case \"update-with-pointer\":\n return updateTransitionWithPointerEvent(state, action);\n case \"update-with-keyboard\":\n return updateTransitionWithKeyboardEvent(state, action, { isRtl });\n case \"acquire-item\":\n return acquireTransitionItem(state, action);\n }\n };\n}\n\nfunction initTransition<D>({\n operation,\n interactionType,\n itemsLayout,\n draggableItem,\n draggableRect,\n collisionIds,\n}: InitAction<D>): TransitionState<D> {\n const transition: Transition<D> = {\n operation,\n interactionType,\n itemsLayout,\n layoutEngine: new LayoutEngine(itemsLayout),\n insertionDirection: null,\n draggableItem,\n draggableRect,\n acquiredItem: null,\n collisionIds: new Set(),\n layoutShift: null,\n path: [],\n };\n\n const placeholdersLayout = getLayoutPlaceholders(transition);\n\n const layoutItem = itemsLayout.items.find((it) => it.id === draggableItem.id);\n\n let path: Position[] = [];\n if (interactionType === \"pointer\" || operation === \"insert\") {\n const collisionRect = getHoveredRect(collisionIds, placeholdersLayout.items);\n const appendPath = operation === \"resize\" ? appendResizePath : appendMovePath;\n path = layoutItem ? appendPath([], collisionRect) : [];\n } else if (layoutItem) {\n path =\n operation === \"resize\"\n ? [new Position({ x: layoutItem.x + layoutItem.width, y: layoutItem.y + layoutItem.height })]\n : [new Position({ x: layoutItem.x, y: layoutItem.y })];\n }\n\n return {\n transition: { ...transition, path },\n removeTransition: null,\n announcement: layoutItem ? { type: \"dnd-started\", item: draggableItem, operation } : null,\n };\n}\n\nfunction initRemoveTransition<D>({ items, removedItem, itemsLayout }: InitRemoveAction<D>): TransitionState<D> {\n const layoutShift = new LayoutEngine(itemsLayout).remove(removedItem.id);\n const removeTransition: RemoveTransition<D> = { items, removedItem, layoutShift };\n return { transition: null, removeTransition, announcement: null };\n}\n\nfunction submitTransition<D>(state: TransitionState<D>): TransitionState<D> {\n const { transition, removeTransition } = state;\n\n if (removeTransition) {\n const disturbed = new Set(removeTransition.layoutShift.moves.map((move) => move.itemId));\n disturbed.delete(removeTransition.removedItem.id);\n return {\n transition: null,\n removeTransition: null,\n announcement: { type: \"item-removed\", item: removeTransition.removedItem, disturbed },\n };\n }\n\n if (!transition) {\n throw new Error(\"Invariant violation: no transition.\");\n }\n\n const { operation, itemsLayout, draggableItem: item, acquiredItem } = transition;\n const itemBelongsToBoard = item.id === acquiredItem?.id || itemsLayout.items.some((it) => it.id === item.id);\n\n return transition.layoutShift?.conflicts.length === 0\n ? {\n transition: null,\n removeTransition: null,\n announcement: itemBelongsToBoard ? { type: \"dnd-committed\", item, operation } : null,\n }\n : {\n transition: null,\n removeTransition: null,\n announcement: itemBelongsToBoard ? { type: \"dnd-discarded\", item, operation } : null,\n };\n}\n\nfunction discardTransition<D>(state: TransitionState<D>): TransitionState<D> {\n const { transition, removeTransition } = state;\n\n if (removeTransition) {\n throw new Error(\"Can't discard remove transition.\");\n }\n\n if (!transition) {\n throw new Error(\"Invariant violation: no transition.\");\n }\n\n const { operation, itemsLayout, draggableItem: item, acquiredItem } = transition;\n const itemBelongsToBoard = item.id === acquiredItem?.id || itemsLayout.items.some((it) => it.id === item.id);\n\n return {\n transition: null,\n removeTransition: null,\n announcement: itemBelongsToBoard ? { type: \"dnd-discarded\", item, operation } : null,\n };\n}\n\nfunction updateTransitionWithPointerEvent<D>(\n state: TransitionState<D>,\n { collisionIds, positionOffset, draggableRect }: UpdateWithPointerAction,\n): TransitionState<D> {\n const { transition } = state;\n\n if (!transition) {\n throw new Error(\"Invariant violation: no transition.\");\n }\n\n const layout = transition.layoutShift?.next ?? transition.itemsLayout;\n const layoutItem = layout.items.find((it) => it.id === transition.draggableItem.id);\n const itemWidth = layoutItem ? layoutItem.width : getDefaultColumnSpan(transition.draggableItem, layout.columns);\n const itemHeight = layoutItem ? layoutItem.height : getDefaultRowSpan(transition.draggableItem);\n const itemSize = itemWidth * itemHeight;\n\n const isOutOfBoundaries =\n transition.operation !== \"resize\" ? collisionIds.length < itemSize : collisionIds.length === 0;\n\n if (isOutOfBoundaries) {\n return {\n transition: {\n ...transition,\n draggableRect,\n collisionIds: new Set(),\n layoutShift: null,\n insertionDirection: null,\n },\n removeTransition: null,\n announcement: null,\n };\n }\n\n const placeholdersLayout = getLayoutPlaceholders(transition);\n const collisionRect = getHoveredRect(collisionIds, placeholdersLayout.items);\n const appendPath = transition.operation === \"resize\" ? appendResizePath : appendMovePath;\n const path = appendPath(transition.path, collisionRect);\n\n const insertionDirection = transition.insertionDirection ?? getInsertionDirection(positionOffset);\n const layoutShift = getLayoutShift(transition, path, insertionDirection);\n\n return {\n transition: {\n ...transition,\n draggableRect,\n collisionIds: new Set(collisionIds),\n layoutShift,\n path,\n insertionDirection,\n },\n removeTransition: null,\n announcement: null,\n };\n}\n\nfunction updateTransitionWithKeyboardEvent<D>(\n state: TransitionState<D>,\n { direction }: UpdateWithKeyboardAction,\n { isRtl }: { isRtl: () => boolean },\n): TransitionState<D> {\n const { transition } = state;\n\n if (!transition) {\n throw new Error(\"Invariant violation: no transition.\");\n }\n\n const updateManualItemTransition = (transition: Transition<D>, direction: Direction): TransitionState<D> => {\n const xDelta = direction === \"left\" ? -1 : direction === \"right\" ? 1 : 0;\n const yDelta = direction === \"up\" ? -1 : direction === \"down\" ? 1 : 0;\n const lastPosition = transition.path[transition.path.length - 1];\n const nextPosition = new Position({ x: lastPosition.x + xDelta, y: lastPosition.y + yDelta });\n const nextPath = [...transition.path, nextPosition];\n\n // Check resizing below min size.\n const layout = transition.layoutShift?.next ?? transition.itemsLayout;\n const layoutItem = layout.items.find((it) => it.id === transition.draggableItem.id);\n const minWidth = getMinColumnSpan(transition.draggableItem, transition.itemsLayout.columns);\n const minHeight = getMinRowSpan(transition.draggableItem);\n if (\n transition.operation === \"resize\" &&\n layoutItem &&\n (layoutItem.width + xDelta < minWidth || layoutItem.height + yDelta < minHeight)\n ) {\n return state;\n }\n\n try {\n const layoutShift = getLayoutShift(transition, nextPath);\n const nextTransition = { ...transition, layoutShift, path: nextPath };\n return {\n transition: nextTransition,\n removeTransition: null,\n announcement: createOperationAnnouncement(nextTransition, direction),\n };\n } catch (e) {\n // Can't create next layout because the next path is out of bounds.\n return state;\n }\n };\n\n switch (direction) {\n case \"left\":\n return updateManualItemTransition(transition, !isRtl() ? \"left\" : \"right\");\n case \"right\":\n return updateManualItemTransition(transition, !isRtl() ? \"right\" : \"left\");\n case \"up\":\n return updateManualItemTransition(transition, \"up\");\n case \"down\":\n return updateManualItemTransition(transition, \"down\");\n }\n}\n\nfunction acquireTransitionItem<D>(\n state: TransitionState<D>,\n { position, layoutElement, acquiredItemElement }: AcquireItemAction,\n): TransitionState<D> {\n const { transition } = state;\n\n if (!transition) {\n throw new Error(\"Invariant violation: no transition.\");\n }\n\n const { columns } = transition.itemsLayout;\n\n const layoutRect = getLogicalBoundingClientRect(layoutElement);\n const itemRect = transition.draggableRect;\n const coordinatesX = itemRect.left - layoutRect.insetInlineStart;\n const offset = new Coordinates({ x: coordinatesX, y: itemRect.top - layoutRect.insetBlockStart });\n const insertionDirection = getInsertionDirection(offset);\n\n // Update original insertion position if the item can't fit into the layout by width.\n const width = getDefaultColumnSpan(transition.draggableItem, columns);\n position = new Position({ x: Math.min(columns - width, position.x), y: position.y });\n\n const path = [...transition.path, position];\n\n const layoutShift = getLayoutShift(transition, path, insertionDirection);\n\n // The columnOffset, columnSpan and rowSpan are of no use as of being overridden by the layout shift.\n const acquiredItem = { ...transition.draggableItem, columnOffset: 0, columnSpan: 1, rowSpan: 1 };\n\n const nextTransition: Transition<D> = {\n ...transition,\n collisionIds: new Set(),\n layoutShift,\n path,\n acquiredItem,\n acquiredItemElement,\n };\n return {\n transition: nextTransition,\n removeTransition: null,\n announcement: createOperationAnnouncement(nextTransition, null),\n };\n}\n"]}
1
+ {"version":3,"file":"transition.js","sourceRoot":"","sources":["../../../src/board/transition.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Dispatch, ReactNode, useReducer } from \"react\";\n\nimport { getLogicalBoundingClientRect } from \"@cloudscape-design/component-toolkit/internal\";\n\nimport { InteractionType, Operation } from \"../internal/dnd-controller/controller\";\nimport { BoardItemDefinitionBase, Direction, GridLayout, ItemId, Rect } from \"../internal/interfaces\";\nimport { LayoutEngine } from \"../internal/layout-engine/engine\";\nimport { Coordinates } from \"../internal/utils/coordinates\";\nimport { getDefaultColumnSpan, getDefaultRowSpan, getMinColumnSpan, getMinRowSpan } from \"../internal/utils/layout\";\nimport { Position } from \"../internal/utils/position\";\nimport { BoardProps, RemoveTransition, Transition, TransitionAnnouncement } from \"./interfaces\";\nimport { createOperationAnnouncement } from \"./utils/announcements\";\nimport { getHoveredRect } from \"./utils/get-hovered-rect\";\nimport { getInsertionDirection, getLayoutPlaceholders, getLayoutRows, getLayoutShift } from \"./utils/layout\";\nimport { appendMovePath, appendResizePath } from \"./utils/path\";\n\nexport interface TransitionState<D> {\n transition: null | Transition<D>;\n removeTransition: null | RemoveTransition<D>;\n announcement: null | TransitionAnnouncement;\n}\n\nexport type Action<D> =\n | InitAction<D>\n | InitRemoveAction<D>\n | SubmitAction\n | DiscardAction\n | UpdateWithPointerAction\n | UpdateWithKeyboardAction\n | AcquireItemAction;\n\ninterface InitAction<D> {\n type: \"init\";\n operation: Operation;\n interactionType: InteractionType;\n itemsLayout: GridLayout;\n draggableItem: BoardItemDefinitionBase<D>;\n draggableRect: Rect;\n collisionIds: readonly ItemId[];\n}\ninterface InitRemoveAction<D> {\n type: \"init-remove\";\n items: readonly BoardProps.Item<D>[];\n removedItem: BoardItemDefinitionBase<D>;\n itemsLayout: GridLayout;\n}\ninterface SubmitAction {\n type: \"submit\";\n}\ninterface DiscardAction {\n type: \"discard\";\n}\ninterface UpdateWithPointerAction {\n type: \"update-with-pointer\";\n collisionIds: readonly ItemId[];\n positionOffset: Coordinates;\n draggableRect: Rect;\n}\ninterface UpdateWithKeyboardAction {\n type: \"update-with-keyboard\";\n direction: Direction;\n}\ninterface AcquireItemAction {\n type: \"acquire-item\";\n position: Position;\n layoutElement: HTMLElement;\n acquiredItemElement?: ReactNode;\n}\n\nexport function useTransition<D>({ isRtl }: { isRtl: () => boolean }): [TransitionState<D>, Dispatch<Action<D>>] {\n return useReducer(createTransitionReducer<D>({ isRtl }), {\n transition: null,\n removeTransition: null,\n announcement: null,\n });\n}\n\nexport function selectTransitionRows<D>(state: TransitionState<D>) {\n return state.transition ? getLayoutRows(state.transition) : 0;\n}\n\nfunction createTransitionReducer<D>({ isRtl }: { isRtl: () => boolean }) {\n return function transitionReducer(state: TransitionState<D>, action: Action<D>): TransitionState<D> {\n switch (action.type) {\n case \"init\":\n return initTransition(action);\n case \"init-remove\":\n return initRemoveTransition(action);\n case \"submit\":\n return submitTransition(state);\n case \"discard\":\n return discardTransition(state);\n case \"update-with-pointer\":\n return updateTransitionWithPointerEvent(state, action);\n case \"update-with-keyboard\":\n return updateTransitionWithKeyboardEvent(state, action, { isRtl });\n case \"acquire-item\":\n return acquireTransitionItem(state, action);\n }\n };\n}\n\nfunction initTransition<D>({\n operation,\n interactionType,\n itemsLayout,\n draggableItem,\n draggableRect,\n collisionIds,\n}: InitAction<D>): TransitionState<D> {\n const transition: Transition<D> = {\n operation,\n interactionType,\n itemsLayout,\n layoutEngine: new LayoutEngine(itemsLayout),\n insertionDirection: null,\n draggableItem,\n draggableRect,\n acquiredItem: null,\n collisionIds: new Set(),\n layoutShift: null,\n path: [],\n };\n\n const placeholdersLayout = getLayoutPlaceholders(transition);\n\n const layoutItem = itemsLayout.items.find((it) => it.id === draggableItem.id);\n\n let path: Position[] = [];\n if (interactionType === \"pointer\" || operation === \"insert\") {\n const collisionRect = getHoveredRect(collisionIds, placeholdersLayout.items);\n const appendPath = operation === \"resize\" ? appendResizePath : appendMovePath;\n path = layoutItem ? appendPath([], collisionRect) : [];\n } else if (layoutItem) {\n path =\n operation === \"resize\"\n ? [new Position({ x: layoutItem.x + layoutItem.width, y: layoutItem.y + layoutItem.height })]\n : [new Position({ x: layoutItem.x, y: layoutItem.y })];\n }\n\n return {\n transition: { ...transition, path },\n removeTransition: null,\n announcement: layoutItem ? { type: \"dnd-started\", item: draggableItem, operation } : null,\n };\n}\n\nfunction initRemoveTransition<D>({ items, removedItem, itemsLayout }: InitRemoveAction<D>): TransitionState<D> {\n const layoutShift = new LayoutEngine(itemsLayout).remove(removedItem.id);\n const removeTransition: RemoveTransition<D> = { items, removedItem, layoutShift };\n return { transition: null, removeTransition, announcement: null };\n}\n\nfunction submitTransition<D>(state: TransitionState<D>): TransitionState<D> {\n const { transition, removeTransition } = state;\n\n if (removeTransition) {\n const disturbed = new Set(removeTransition.layoutShift.moves.map((move) => move.itemId));\n disturbed.delete(removeTransition.removedItem.id);\n return {\n transition: null,\n removeTransition: null,\n announcement: { type: \"item-removed\", item: removeTransition.removedItem, disturbed },\n };\n }\n\n if (!transition) {\n return { transition: null, removeTransition: null, announcement: null };\n }\n\n const { operation, itemsLayout, draggableItem: item, acquiredItem } = transition;\n const itemBelongsToBoard = item.id === acquiredItem?.id || itemsLayout.items.some((it) => it.id === item.id);\n return transition.layoutShift?.conflicts.length === 0\n ? {\n transition: null,\n removeTransition: null,\n announcement: itemBelongsToBoard ? { type: \"dnd-committed\", item, operation } : null,\n }\n : {\n transition: null,\n removeTransition: null,\n announcement: itemBelongsToBoard ? { type: \"dnd-discarded\", item, operation } : null,\n };\n}\n\nfunction discardTransition<D>(state: TransitionState<D>): TransitionState<D> {\n const { transition, removeTransition } = state;\n\n if (removeTransition) {\n throw new Error(\"Invariant violation: can't discard remove transition.\");\n }\n\n if (!transition) {\n return { transition: null, removeTransition: null, announcement: null };\n }\n\n const { operation, itemsLayout, draggableItem: item, acquiredItem } = transition;\n const itemBelongsToBoard = item.id === acquiredItem?.id || itemsLayout.items.some((it) => it.id === item.id);\n return {\n transition: null,\n removeTransition: null,\n announcement: itemBelongsToBoard ? { type: \"dnd-discarded\", item, operation } : null,\n };\n}\n\nfunction updateTransitionWithPointerEvent<D>(\n state: TransitionState<D>,\n { collisionIds, positionOffset, draggableRect }: UpdateWithPointerAction,\n): TransitionState<D> {\n const { transition } = state;\n\n if (!transition) {\n return { transition: null, removeTransition: null, announcement: null };\n }\n\n const layout = transition.layoutShift?.next ?? transition.itemsLayout;\n const layoutItem = layout.items.find((it) => it.id === transition.draggableItem.id);\n const itemWidth = layoutItem ? layoutItem.width : getDefaultColumnSpan(transition.draggableItem, layout.columns);\n const itemHeight = layoutItem ? layoutItem.height : getDefaultRowSpan(transition.draggableItem);\n const itemSize = itemWidth * itemHeight;\n\n const isOutOfBoundaries =\n transition.operation !== \"resize\" ? collisionIds.length < itemSize : collisionIds.length === 0;\n\n if (isOutOfBoundaries) {\n return {\n transition: {\n ...transition,\n draggableRect,\n collisionIds: new Set(),\n layoutShift: null,\n insertionDirection: null,\n },\n removeTransition: null,\n announcement: null,\n };\n }\n\n const placeholdersLayout = getLayoutPlaceholders(transition);\n const collisionRect = getHoveredRect(collisionIds, placeholdersLayout.items);\n const appendPath = transition.operation === \"resize\" ? appendResizePath : appendMovePath;\n const path = appendPath(transition.path, collisionRect);\n\n const insertionDirection = transition.insertionDirection ?? getInsertionDirection(positionOffset);\n const layoutShift = getLayoutShift(transition, path, insertionDirection);\n\n return {\n transition: {\n ...transition,\n draggableRect,\n collisionIds: new Set(collisionIds),\n layoutShift,\n path,\n insertionDirection,\n },\n removeTransition: null,\n announcement: null,\n };\n}\n\nfunction updateTransitionWithKeyboardEvent<D>(\n state: TransitionState<D>,\n { direction }: UpdateWithKeyboardAction,\n { isRtl }: { isRtl: () => boolean },\n): TransitionState<D> {\n const { transition } = state;\n\n if (!transition) {\n return { transition: null, removeTransition: null, announcement: null };\n }\n\n const updateManualItemTransition = (transition: Transition<D>, direction: Direction): TransitionState<D> => {\n const xDelta = direction === \"left\" ? -1 : direction === \"right\" ? 1 : 0;\n const yDelta = direction === \"up\" ? -1 : direction === \"down\" ? 1 : 0;\n const lastPosition = transition.path[transition.path.length - 1];\n const nextPosition = new Position({ x: lastPosition.x + xDelta, y: lastPosition.y + yDelta });\n const nextPath = [...transition.path, nextPosition];\n\n // Check resizing below min size.\n const layout = transition.layoutShift?.next ?? transition.itemsLayout;\n const layoutItem = layout.items.find((it) => it.id === transition.draggableItem.id);\n const minWidth = getMinColumnSpan(transition.draggableItem, transition.itemsLayout.columns);\n const minHeight = getMinRowSpan(transition.draggableItem);\n if (\n transition.operation === \"resize\" &&\n layoutItem &&\n (layoutItem.width + xDelta < minWidth || layoutItem.height + yDelta < minHeight)\n ) {\n return state;\n }\n\n try {\n const layoutShift = getLayoutShift(transition, nextPath);\n const nextTransition = { ...transition, layoutShift, path: nextPath };\n return {\n transition: nextTransition,\n removeTransition: null,\n announcement: createOperationAnnouncement(nextTransition, direction),\n };\n } catch (e) {\n // Can't create next layout because the next path is out of bounds.\n return state;\n }\n };\n\n switch (direction) {\n case \"left\":\n return updateManualItemTransition(transition, !isRtl() ? \"left\" : \"right\");\n case \"right\":\n return updateManualItemTransition(transition, !isRtl() ? \"right\" : \"left\");\n case \"up\":\n return updateManualItemTransition(transition, \"up\");\n case \"down\":\n return updateManualItemTransition(transition, \"down\");\n }\n}\n\nfunction acquireTransitionItem<D>(\n state: TransitionState<D>,\n { position, layoutElement, acquiredItemElement }: AcquireItemAction,\n): TransitionState<D> {\n const { transition } = state;\n\n if (!transition) {\n return { transition: null, removeTransition: null, announcement: null };\n }\n\n const { columns } = transition.itemsLayout;\n\n const layoutRect = getLogicalBoundingClientRect(layoutElement);\n const itemRect = transition.draggableRect;\n const coordinatesX = itemRect.left - layoutRect.insetInlineStart;\n const offset = new Coordinates({ x: coordinatesX, y: itemRect.top - layoutRect.insetBlockStart });\n const insertionDirection = getInsertionDirection(offset);\n\n // Update original insertion position if the item can't fit into the layout by width.\n const width = getDefaultColumnSpan(transition.draggableItem, columns);\n position = new Position({ x: Math.min(columns - width, position.x), y: position.y });\n\n const path = [...transition.path, position];\n\n const layoutShift = getLayoutShift(transition, path, insertionDirection);\n\n // The columnOffset, columnSpan and rowSpan are of no use as of being overridden by the layout shift.\n const acquiredItem = { ...transition.draggableItem, columnOffset: 0, columnSpan: 1, rowSpan: 1 };\n\n const nextTransition: Transition<D> = {\n ...transition,\n collisionIds: new Set(),\n layoutShift,\n path,\n acquiredItem,\n acquiredItemElement,\n };\n return {\n transition: nextTransition,\n removeTransition: null,\n announcement: createOperationAnnouncement(nextTransition, null),\n };\n}\n"]}
@@ -59,7 +59,7 @@ function appendPath(prevPath, nextPosition) {
59
59
  let safetyCounter = 0;
60
60
  while (x !== nextPosition.x || y !== nextPosition.y) {
61
61
  if (++safetyCounter === 100) {
62
- throw new Error("Infinite loop in appendPath.");
62
+ throw new Error("Invariant violation: infinite loop in appendPath.");
63
63
  }
64
64
  if (x !== nextPosition.x) {
65
65
  x += vx;
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../../../../src/board/utils/path.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Direction } from \"../../internal/interfaces\";\nimport { Rect } from \"../../internal/interfaces\";\nimport { Position } from \"../../internal/utils/position\";\n\n/**\n * The insertion operation is similar to reorder yet the first path entry is treated differently.\n * The normalization removes leading path entries if on the same edge to optimize UX.\n */\nexport function normalizeInsertionPath(\n path: readonly Position[],\n insertionDirection: Direction,\n columns: number,\n rows: number,\n): Position[] {\n let edgeIndex = -1;\n for (let i = 0; i < path.length; i++) {\n switch (insertionDirection) {\n case \"left\": {\n if (path[i].x === 0) {\n edgeIndex = i;\n }\n break;\n }\n case \"right\": {\n if (path[i].x === columns - 1) {\n edgeIndex = i;\n }\n break;\n }\n case \"up\": {\n if (path[i].y === 0) {\n edgeIndex = i;\n }\n break;\n }\n case \"down\": {\n if (path[i].y === rows - 1) {\n edgeIndex = i;\n }\n break;\n }\n }\n }\n return path.slice(edgeIndex);\n}\n\nexport function appendMovePath(prevPath: readonly Position[], collisionRect: Rect): Position[] {\n return appendPath(prevPath, new Position({ x: collisionRect.left, y: collisionRect.top }));\n}\n\nexport function appendResizePath(prevPath: readonly Position[], collisionRect: Rect): Position[] {\n return appendPath(prevPath, new Position({ x: collisionRect.right, y: collisionRect.bottom }));\n}\n\n/**\n * The operation path must be strictly incremental (each dx + dy == 1). However, the actual collisions\n * data can have gaps due to pointer events throttling or other factors.\n *\n * The function produces next path from previous path and the target position by incrementally adding steps.\n */\nfunction appendPath(prevPath: readonly Position[], nextPosition: Position): Position[] {\n const path: Array<Position> = [...prevPath];\n const lastPosition = prevPath[prevPath.length - 1];\n\n if (!lastPosition) {\n return [nextPosition];\n }\n\n const vx = Math.sign(nextPosition.x - lastPosition.x);\n const vy = Math.sign(nextPosition.y - lastPosition.y);\n\n let { x, y } = lastPosition;\n let safetyCounter = 0;\n\n while (x !== nextPosition.x || y !== nextPosition.y) {\n if (++safetyCounter === 100) {\n throw new Error(\"Infinite loop in appendPath.\");\n }\n if (x !== nextPosition.x) {\n x += vx;\n } else {\n y += vy;\n }\n path.push(new Position({ x, y }));\n }\n\n return path;\n}\n"]}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../../../src/board/utils/path.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Direction } from \"../../internal/interfaces\";\nimport { Rect } from \"../../internal/interfaces\";\nimport { Position } from \"../../internal/utils/position\";\n\n/**\n * The insertion operation is similar to reorder yet the first path entry is treated differently.\n * The normalization removes leading path entries if on the same edge to optimize UX.\n */\nexport function normalizeInsertionPath(\n path: readonly Position[],\n insertionDirection: Direction,\n columns: number,\n rows: number,\n): Position[] {\n let edgeIndex = -1;\n for (let i = 0; i < path.length; i++) {\n switch (insertionDirection) {\n case \"left\": {\n if (path[i].x === 0) {\n edgeIndex = i;\n }\n break;\n }\n case \"right\": {\n if (path[i].x === columns - 1) {\n edgeIndex = i;\n }\n break;\n }\n case \"up\": {\n if (path[i].y === 0) {\n edgeIndex = i;\n }\n break;\n }\n case \"down\": {\n if (path[i].y === rows - 1) {\n edgeIndex = i;\n }\n break;\n }\n }\n }\n return path.slice(edgeIndex);\n}\n\nexport function appendMovePath(prevPath: readonly Position[], collisionRect: Rect): Position[] {\n return appendPath(prevPath, new Position({ x: collisionRect.left, y: collisionRect.top }));\n}\n\nexport function appendResizePath(prevPath: readonly Position[], collisionRect: Rect): Position[] {\n return appendPath(prevPath, new Position({ x: collisionRect.right, y: collisionRect.bottom }));\n}\n\n/**\n * The operation path must be strictly incremental (each dx + dy == 1). However, the actual collisions\n * data can have gaps due to pointer events throttling or other factors.\n *\n * The function produces next path from previous path and the target position by incrementally adding steps.\n */\nfunction appendPath(prevPath: readonly Position[], nextPosition: Position): Position[] {\n const path: Array<Position> = [...prevPath];\n const lastPosition = prevPath[prevPath.length - 1];\n\n if (!lastPosition) {\n return [nextPosition];\n }\n\n const vx = Math.sign(nextPosition.x - lastPosition.x);\n const vy = Math.sign(nextPosition.y - lastPosition.y);\n\n let { x, y } = lastPosition;\n let safetyCounter = 0;\n\n while (x !== nextPosition.x || y !== nextPosition.y) {\n if (++safetyCounter === 100) {\n throw new Error(\"Invariant violation: infinite loop in appendPath.\");\n }\n if (x !== nextPosition.x) {\n x += vx;\n } else {\n y += vy;\n }\n path.push(new Position({ x, y }));\n }\n\n return path;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  export interface Parameter {
2
2
  name: string;
3
- typeName?: string;
3
+ typeName: string;
4
4
  description?: string;
5
5
  flags: {
6
6
  isOptional?: boolean;
@@ -13,7 +13,7 @@ interface TypeArgument {
13
13
  export interface TestUtilMethod {
14
14
  name: string;
15
15
  description?: string;
16
- returnType?: {
16
+ returnType: {
17
17
  name: string;
18
18
  isNullable: boolean;
19
19
  typeArguments?: Array<TypeArgument>;
@@ -18,13 +18,15 @@ class DragAndDropController extends EventEmitter {
18
18
  */
19
19
  start(transition) {
20
20
  this.transition = { ...transition };
21
- this.emit("start", this.getDragAndDropData(transition.startCoordinates));
21
+ this.emit("start", this.getDragAndDropData(transition, transition.startCoordinates));
22
22
  }
23
23
  /**
24
24
  * Updates current transition with given coordinates and issues an "update" event.
25
25
  */
26
26
  update(coordinates) {
27
- this.emit("update", this.getDragAndDropData(coordinates));
27
+ if (this.transition) {
28
+ this.emit("update", this.getDragAndDropData(this.transition, coordinates));
29
+ }
28
30
  }
29
31
  /**
30
32
  * Removes transition and issues a "submit" event.
@@ -44,10 +46,9 @@ class DragAndDropController extends EventEmitter {
44
46
  * Issues an "acquire" event to notify the current transition draggable is acquired by the given droppable.
45
47
  */
46
48
  acquire(droppableId, renderAcquiredItem) {
47
- if (!this.transition) {
48
- throw new Error("Invariant violation: no transition present for acquire.");
49
+ if (this.transition) {
50
+ this.emit("acquire", { droppableId, draggableItem: this.transition.draggableItem, renderAcquiredItem });
49
51
  }
50
- this.emit("acquire", { droppableId, draggableItem: this.transition.draggableItem, renderAcquiredItem });
51
52
  }
52
53
  /**
53
54
  * Registers a droppable used for collisions check, acquire, and dropTarget provision.
@@ -67,14 +68,11 @@ class DragAndDropController extends EventEmitter {
67
68
  getDroppables() {
68
69
  return [...this.droppables.entries()];
69
70
  }
70
- getDragAndDropData(coordinates) {
71
- if (!this.transition) {
72
- throw new Error("Invariant violation: no transition present for interaction.");
73
- }
74
- const positionOffset = Coordinates.cursorOffset(coordinates, this.transition.startCoordinates);
75
- const collisionRect = this.getCollisionRect(this.transition, coordinates);
71
+ getDragAndDropData(transition, coordinates) {
72
+ const positionOffset = Coordinates.cursorOffset(coordinates, transition.startCoordinates);
73
+ const collisionRect = this.getCollisionRect(transition, coordinates);
76
74
  const { collisionIds, dropTarget } = this.getCollisions(collisionRect);
77
- return { ...this.transition, positionOffset, coordinates, collisionRect, collisionIds, dropTarget };
75
+ return { ...transition, positionOffset, coordinates, collisionRect, collisionIds, dropTarget };
78
76
  }
79
77
  getCollisionRect(transition, coordinates) {
80
78
  const originalCollisionRect = transition.getCollisionRect(transition.operation, coordinates, null);
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../src/internal/dnd-controller/controller.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAGlF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAwDhE,MAAM,qBAAsB,SAAQ,YAA+B;IAAnE;;QACU,eAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC1C,eAAU,GAAsB,IAAI,CAAC;IAgG/C,CAAC;IA9FC;;;;OAIG;IACI,KAAK,CAAC,UAAsB;QACjC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAwB;QACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,WAAmB,EAAE,kBAAmC;QACrE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;SAC5E;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,EAAU,EAAE,OAA0B,EAAE,OAAoB;QAC9E,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,EAAU;QAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAEO,kBAAkB,CAAC,WAAwB;QACjD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;SAChF;QACD,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC/F,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IACtG,CAAC;IAEO,gBAAgB,CAAC,UAAsB,EAAE,WAAwB;QACvE,MAAM,qBAAqB,GAAG,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QACnG,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACpF,CAAC;IAEO,aAAa,CAAC,aAAmB;QACvC,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,iBAAiB,GAA4B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9G,MAAM,YAAY,GAAG,oBAAoB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAC5E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SAC3C;QAED,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QACD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACnE,CAAC;CACF;AAED,oEAAoE;AACpE,MAAM,UAAU,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAE/C,MAAM,UAAU,mBAAmB,CAAoC,KAAQ,EAAE,OAA6B;IAC5G,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,aAAa,EACb,gBAAgB,GAIjB;IACC,OAAO;QACL,KAAK,CAAC,SAAoB,EAAE,eAAgC,EAAE,gBAA6B;YACzF,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,gBAAgB,CAAC,WAAwB;YACvC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QACD,gBAAgB;YACd,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;QACD,iBAAiB;YACf,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,WAAmB,EAAE,kBAAmC;YAC9D,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACtD,CAAC;QACD,aAAa;YACX,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,UAAU,GAKX;IACC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACvD,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACpC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ReactNode, useEffect } from \"react\";\n\nimport { useStableCallback } from \"@cloudscape-design/component-toolkit/internal\";\n\nimport { BoardItemDefinitionBase, ItemId, Rect } from \"../interfaces\";\nimport { Coordinates } from \"../utils/coordinates\";\nimport { EventEmitter } from \"./event-emitter\";\nimport { getHoveredDroppables } from \"./get-hovered-droppables\";\n\ntype Item = BoardItemDefinitionBase<unknown>;\n\nexport type Operation = \"reorder\" | \"resize\" | \"insert\";\n\nexport type InteractionType = \"pointer\" | \"keyboard\";\n\n/**\n * Represents the relations between droppables and draggables.\n *\n * The `scale` function transforms draggable's width/height in relative units\n * to the absolute width/height in pixels the droppable expects.\n */\nexport interface DropTargetContext {\n scale: (item: Item, size?: { width: number; height: number }) => { width: number; height: number };\n}\n\nexport interface DragAndDropData {\n operation: Operation;\n interactionType: InteractionType;\n draggableItem: Item;\n collisionRect: Rect;\n positionOffset: Coordinates;\n coordinates: Coordinates;\n collisionIds: ItemId[];\n dropTarget: null | DropTargetContext;\n}\n\nexport interface Droppable {\n element: HTMLElement;\n context: DropTargetContext;\n}\n\nexport interface AcquireData {\n droppableId: ItemId;\n draggableItem: Item;\n renderAcquiredItem: () => ReactNode;\n}\n\nexport interface DragAndDropEvents {\n start: (data: DragAndDropData) => void;\n update: (data: DragAndDropData) => void;\n submit: () => void;\n discard: () => void;\n acquire: (data: AcquireData) => void;\n}\n\ninterface Transition {\n operation: Operation;\n interactionType: InteractionType;\n draggableItem: Item;\n getCollisionRect: (operation: Operation, coordinates: Coordinates, dropTarget: null | DropTargetContext) => Rect;\n startCoordinates: Coordinates;\n}\n\nclass DragAndDropController extends EventEmitter<DragAndDropEvents> {\n private droppables = new Map<ItemId, Droppable>();\n private transition: null | Transition = null;\n\n /**\n * Inits a drag transition and issues a \"start\" event.\n *\n * The method overrides the previous transition if exists (w/o a cancellation event)!\n */\n public start(transition: Transition) {\n this.transition = { ...transition };\n this.emit(\"start\", this.getDragAndDropData(transition.startCoordinates));\n }\n\n /**\n * Updates current transition with given coordinates and issues an \"update\" event.\n */\n public update(coordinates: Coordinates) {\n this.emit(\"update\", this.getDragAndDropData(coordinates));\n }\n\n /**\n * Removes transition and issues a \"submit\" event.\n */\n public submit() {\n this.emit(\"submit\");\n this.transition = null;\n }\n\n /**\n * Removes transition and issues a \"discard\" event.\n */\n public discard() {\n this.emit(\"discard\");\n this.transition = null;\n }\n\n /**\n * Issues an \"acquire\" event to notify the current transition draggable is acquired by the given droppable.\n */\n public acquire(droppableId: ItemId, renderAcquiredItem: () => ReactNode) {\n if (!this.transition) {\n throw new Error(\"Invariant violation: no transition present for acquire.\");\n }\n this.emit(\"acquire\", { droppableId, draggableItem: this.transition.draggableItem, renderAcquiredItem });\n }\n\n /**\n * Registers a droppable used for collisions check, acquire, and dropTarget provision.\n */\n public addDroppable(id: ItemId, context: DropTargetContext, element: HTMLElement) {\n this.droppables.set(id, { element, context });\n }\n\n /**\n * Un-registers the droppable - use it when component unmounts.\n */\n public removeDroppable(id: ItemId) {\n this.droppables.delete(id);\n }\n\n /**\n * Retrieves all registered droppables to run a manual match against.\n */\n public getDroppables() {\n return [...this.droppables.entries()];\n }\n\n private getDragAndDropData(coordinates: Coordinates): DragAndDropData {\n if (!this.transition) {\n throw new Error(\"Invariant violation: no transition present for interaction.\");\n }\n const positionOffset = Coordinates.cursorOffset(coordinates, this.transition.startCoordinates);\n const collisionRect = this.getCollisionRect(this.transition, coordinates);\n const { collisionIds, dropTarget } = this.getCollisions(collisionRect);\n return { ...this.transition, positionOffset, coordinates, collisionRect, collisionIds, dropTarget };\n }\n\n private getCollisionRect(transition: Transition, coordinates: Coordinates) {\n const originalCollisionRect = transition.getCollisionRect(transition.operation, coordinates, null);\n const { dropTarget } = this.getCollisions(originalCollisionRect);\n return transition.getCollisionRect(transition.operation, coordinates, dropTarget);\n }\n\n private getCollisions(collisionRect: Rect) {\n const droppableEntries = [...this.droppables.entries()];\n const droppableElements: [ItemId, HTMLElement][] = droppableEntries.map(([id, entry]) => [id, entry.element]);\n const collisionIds = getHoveredDroppables(collisionRect, droppableElements);\n if (collisionIds.length === 0) {\n return { collisionIds, dropTarget: null };\n }\n\n const matchedDroppable = droppableEntries.find(([id]) => id === collisionIds[0]);\n if (!matchedDroppable) {\n throw new Error(\"Invariant violation: no droppable matches collision.\");\n }\n return { collisionIds, dropTarget: matchedDroppable[1].context };\n }\n}\n\n// Controller is a singleton and is shared between all d&d elements.\nconst controller = new DragAndDropController();\n\nexport function useDragSubscription<K extends keyof DragAndDropEvents>(event: K, handler: DragAndDropEvents[K]) {\n const stableHandler = useStableCallback(handler);\n useEffect(() => controller.on(event, stableHandler), [event, stableHandler]);\n}\n\nexport function useDraggable({\n draggableItem,\n getCollisionRect,\n}: {\n draggableItem: Item;\n getCollisionRect: (operation: Operation, coordinates: Coordinates, dropTarget: null | DropTargetContext) => Rect;\n}) {\n return {\n start(operation: Operation, interactionType: InteractionType, startCoordinates: Coordinates) {\n controller.start({ operation, interactionType, draggableItem, getCollisionRect, startCoordinates });\n },\n updateTransition(coordinates: Coordinates) {\n controller.update(coordinates);\n },\n submitTransition() {\n controller.submit();\n },\n discardTransition() {\n controller.discard();\n },\n acquire(droppableId: ItemId, renderAcquiredItem: () => ReactNode) {\n controller.acquire(droppableId, renderAcquiredItem);\n },\n getDroppables() {\n return controller.getDroppables();\n },\n };\n}\n\nexport function useDroppable({\n itemId,\n context,\n getElement,\n}: {\n itemId: ItemId;\n context: DropTargetContext;\n getElement: () => HTMLElement;\n}) {\n useEffect(() => {\n controller.addDroppable(itemId, context, getElement());\n return () => controller.removeDroppable(itemId);\n }, [itemId, context, getElement]);\n}\n"]}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../src/internal/dnd-controller/controller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ReactNode, useEffect } from \"react\";\n\nimport { useStableCallback } from \"@cloudscape-design/component-toolkit/internal\";\n\nimport { BoardItemDefinitionBase, ItemId, Rect } from \"../interfaces\";\nimport { Coordinates } from \"../utils/coordinates\";\nimport { EventEmitter } from \"./event-emitter\";\nimport { getHoveredDroppables } from \"./get-hovered-droppables\";\n\ntype Item = BoardItemDefinitionBase<unknown>;\n\nexport type Operation = \"reorder\" | \"resize\" | \"insert\";\n\nexport type InteractionType = \"pointer\" | \"keyboard\";\n\n/**\n * Represents the relations between droppables and draggables.\n *\n * The `scale` function transforms draggable's width/height in relative units\n * to the absolute width/height in pixels the droppable expects.\n */\nexport interface DropTargetContext {\n scale: (item: Item, size?: { width: number; height: number }) => { width: number; height: number };\n}\n\nexport interface DragAndDropData {\n operation: Operation;\n interactionType: InteractionType;\n draggableItem: Item;\n collisionRect: Rect;\n positionOffset: Coordinates;\n coordinates: Coordinates;\n collisionIds: ItemId[];\n dropTarget: null | DropTargetContext;\n}\n\nexport interface Droppable {\n element: HTMLElement;\n context: DropTargetContext;\n}\n\nexport interface AcquireData {\n droppableId: ItemId;\n draggableItem: Item;\n renderAcquiredItem: () => ReactNode;\n}\n\nexport interface DragAndDropEvents {\n start: (data: DragAndDropData) => void;\n update: (data: DragAndDropData) => void;\n submit: () => void;\n discard: () => void;\n acquire: (data: AcquireData) => void;\n}\n\ninterface Transition {\n operation: Operation;\n interactionType: InteractionType;\n draggableItem: Item;\n getCollisionRect: (operation: Operation, coordinates: Coordinates, dropTarget: null | DropTargetContext) => Rect;\n startCoordinates: Coordinates;\n}\n\nclass DragAndDropController extends EventEmitter<DragAndDropEvents> {\n private droppables = new Map<ItemId, Droppable>();\n private transition: null | Transition = null;\n\n /**\n * Inits a drag transition and issues a \"start\" event.\n *\n * The method overrides the previous transition if exists (w/o a cancellation event)!\n */\n public start(transition: Transition) {\n this.transition = { ...transition };\n this.emit(\"start\", this.getDragAndDropData(transition, transition.startCoordinates));\n }\n\n /**\n * Updates current transition with given coordinates and issues an \"update\" event.\n */\n public update(coordinates: Coordinates) {\n if (this.transition) {\n this.emit(\"update\", this.getDragAndDropData(this.transition, coordinates));\n }\n }\n\n /**\n * Removes transition and issues a \"submit\" event.\n */\n public submit() {\n this.emit(\"submit\");\n this.transition = null;\n }\n\n /**\n * Removes transition and issues a \"discard\" event.\n */\n public discard() {\n this.emit(\"discard\");\n this.transition = null;\n }\n\n /**\n * Issues an \"acquire\" event to notify the current transition draggable is acquired by the given droppable.\n */\n public acquire(droppableId: ItemId, renderAcquiredItem: () => ReactNode) {\n if (this.transition) {\n this.emit(\"acquire\", { droppableId, draggableItem: this.transition.draggableItem, renderAcquiredItem });\n }\n }\n\n /**\n * Registers a droppable used for collisions check, acquire, and dropTarget provision.\n */\n public addDroppable(id: ItemId, context: DropTargetContext, element: HTMLElement) {\n this.droppables.set(id, { element, context });\n }\n\n /**\n * Un-registers the droppable - use it when component unmounts.\n */\n public removeDroppable(id: ItemId) {\n this.droppables.delete(id);\n }\n\n /**\n * Retrieves all registered droppables to run a manual match against.\n */\n public getDroppables() {\n return [...this.droppables.entries()];\n }\n\n private getDragAndDropData(transition: Transition, coordinates: Coordinates): DragAndDropData {\n const positionOffset = Coordinates.cursorOffset(coordinates, transition.startCoordinates);\n const collisionRect = this.getCollisionRect(transition, coordinates);\n const { collisionIds, dropTarget } = this.getCollisions(collisionRect);\n return { ...transition, positionOffset, coordinates, collisionRect, collisionIds, dropTarget };\n }\n\n private getCollisionRect(transition: Transition, coordinates: Coordinates) {\n const originalCollisionRect = transition.getCollisionRect(transition.operation, coordinates, null);\n const { dropTarget } = this.getCollisions(originalCollisionRect);\n return transition.getCollisionRect(transition.operation, coordinates, dropTarget);\n }\n\n private getCollisions(collisionRect: Rect) {\n const droppableEntries = [...this.droppables.entries()];\n const droppableElements: [ItemId, HTMLElement][] = droppableEntries.map(([id, entry]) => [id, entry.element]);\n const collisionIds = getHoveredDroppables(collisionRect, droppableElements);\n if (collisionIds.length === 0) {\n return { collisionIds, dropTarget: null };\n }\n const matchedDroppable = droppableEntries.find(([id]) => id === collisionIds[0]);\n if (!matchedDroppable) {\n throw new Error(\"Invariant violation: no droppable matches collision.\");\n }\n return { collisionIds, dropTarget: matchedDroppable[1].context };\n }\n}\n\n// Controller is a singleton and is shared between all d&d elements.\nconst controller = new DragAndDropController();\n\nexport function useDragSubscription<K extends keyof DragAndDropEvents>(event: K, handler: DragAndDropEvents[K]) {\n const stableHandler = useStableCallback(handler);\n useEffect(() => controller.on(event, stableHandler), [event, stableHandler]);\n}\n\nexport function useDraggable({\n draggableItem,\n getCollisionRect,\n}: {\n draggableItem: Item;\n getCollisionRect: (operation: Operation, coordinates: Coordinates, dropTarget: null | DropTargetContext) => Rect;\n}) {\n return {\n start(operation: Operation, interactionType: InteractionType, startCoordinates: Coordinates) {\n controller.start({ operation, interactionType, draggableItem, getCollisionRect, startCoordinates });\n },\n updateTransition(coordinates: Coordinates) {\n controller.update(coordinates);\n },\n submitTransition() {\n controller.submit();\n },\n discardTransition() {\n controller.discard();\n },\n acquire(droppableId: ItemId, renderAcquiredItem: () => ReactNode) {\n controller.acquire(droppableId, renderAcquiredItem);\n },\n getDroppables() {\n return controller.getDroppables();\n },\n };\n}\n\nexport function useDroppable({\n itemId,\n context,\n getElement,\n}: {\n itemId: ItemId;\n context: DropTargetContext;\n getElement: () => HTMLElement;\n}) {\n useEffect(() => {\n controller.addDroppable(itemId, context, getElement());\n return () => controller.removeDroppable(itemId);\n }, [itemId, context, getElement]);\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  export var PACKAGE_SOURCE = "board-components";
2
- export var PACKAGE_VERSION = "3.0.0 (448b9f78)";
2
+ export var PACKAGE_VERSION = "3.0.0 (39ee3c2b)";
3
3
  export var THEME = "open-source-visual-refresh";
4
4
  export var ALWAYS_VISUAL_REFRESH = true;
5
5
  export var SYSTEM = "console";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "PACKAGE_SOURCE": "board-components",
3
- "PACKAGE_VERSION": "3.0.0 (448b9f78)",
3
+ "PACKAGE_VERSION": "3.0.0 (39ee3c2b)",
4
4
  "THEME": "open-source-visual-refresh",
5
5
  "ALWAYS_VISUAL_REFRESH": true,
6
6
  "SYSTEM": "console"
@@ -330,6 +330,7 @@ export const colorBorderButtonNormalHover: string;
330
330
  export const colorTextButtonIconDisabled: string;
331
331
  export const colorBorderButtonPrimaryDisabled: string;
332
332
  export const colorTextButtonPrimaryDisabled: string;
333
+ export const colorItemSelected: string;
333
334
  export const colorBorderCalendarGrid: string;
334
335
  export const colorBorderCalendarGridSelectedFocusRing: string;
335
336
  export const colorBorderCellShaded: string;
@@ -330,6 +330,7 @@ export var colorBorderButtonNormalHover = "var(--color-border-button-normal-hove
330
330
  export var colorTextButtonIconDisabled = "var(--color-text-button-icon-disabled-nnofkn, #8c8c94)";
331
331
  export var colorBorderButtonPrimaryDisabled = "var(--color-border-button-primary-disabled-b5p1ji, #ebebf0)";
332
332
  export var colorTextButtonPrimaryDisabled = "var(--color-text-button-primary-disabled-q79gms, #8c8c94)";
333
+ export var colorItemSelected = "var(--color-item-selected-72rnwy, #006ce0)";
333
334
  export var colorBorderCalendarGrid = "var(--color-border-calendar-grid-67r4w4, transparent)";
334
335
  export var colorBorderCalendarGridSelectedFocusRing = "var(--color-border-calendar-grid-selected-focus-ring-jk1fb0, #f9f9fa)";
335
336
  export var colorBorderCellShaded = "var(--color-border-cell-shaded-0ipazf, #dedee3)";