@cloudscape-design/board-components 3.0.51 → 3.0.53
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/index.js +1 -0
- package/board/index.js.map +1 -0
- package/board/interfaces.js +1 -0
- package/board/interfaces.js.map +1 -0
- package/board/internal.js +1 -0
- package/board/internal.js.map +1 -0
- package/board/placeholder.js +1 -0
- package/board/placeholder.js.map +1 -0
- package/board/transition.js +1 -0
- package/board/transition.js.map +1 -0
- package/board/utils/announcements.js +1 -0
- package/board/utils/announcements.js.map +1 -0
- package/board/utils/create-transforms.js +1 -0
- package/board/utils/create-transforms.js.map +1 -0
- package/board/utils/events.js +1 -0
- package/board/utils/events.js.map +1 -0
- package/board/utils/get-hovered-rect.js +1 -0
- package/board/utils/get-hovered-rect.js.map +1 -0
- package/board/utils/layout.js +1 -0
- package/board/utils/layout.js.map +1 -0
- package/board/utils/path.js +1 -0
- package/board/utils/path.js.map +1 -0
- package/board-item/header.js +1 -0
- package/board-item/header.js.map +1 -0
- package/board-item/index.js +1 -0
- package/board-item/index.js.map +1 -0
- package/board-item/interfaces.js +1 -0
- package/board-item/interfaces.js.map +1 -0
- package/board-item/internal.js +1 -0
- package/board-item/internal.js.map +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -0
- package/internal/base-component/get-data-attributes.js +1 -0
- package/internal/base-component/get-data-attributes.js.map +1 -0
- package/internal/base-component/use-base-component.js +1 -0
- package/internal/base-component/use-base-component.js.map +1 -0
- package/internal/base-component/use-telemetry.js +1 -0
- package/internal/base-component/use-telemetry.js.map +1 -0
- package/internal/base-component/use-visual-refresh.js +1 -0
- package/internal/base-component/use-visual-refresh.js.map +1 -0
- package/internal/breakpoints.js +1 -0
- package/internal/breakpoints.js.map +1 -0
- package/internal/constants.js +1 -0
- package/internal/constants.js.map +1 -0
- package/internal/debug-tools/converters.js +1 -0
- package/internal/debug-tools/converters.js.map +1 -0
- package/internal/debug-tools/generators.js +1 -0
- package/internal/debug-tools/generators.js.map +1 -0
- package/internal/debug-tools/index.js +1 -0
- package/internal/debug-tools/index.js.map +1 -0
- package/internal/debug-tools/interfaces.js +1 -0
- package/internal/debug-tools/interfaces.js.map +1 -0
- package/internal/debug-tools/parsers.js +1 -0
- package/internal/debug-tools/parsers.js.map +1 -0
- package/internal/dnd-controller/__mocks__/controller.js +1 -0
- package/internal/dnd-controller/__mocks__/controller.js.map +1 -0
- package/internal/dnd-controller/controller.js +1 -0
- package/internal/dnd-controller/controller.js.map +1 -0
- package/internal/dnd-controller/event-emitter.js +1 -0
- package/internal/dnd-controller/event-emitter.js.map +1 -0
- package/internal/dnd-controller/get-hovered-droppables.js +1 -0
- package/internal/dnd-controller/get-hovered-droppables.js.map +1 -0
- package/internal/drag-handle/index.js +1 -0
- package/internal/drag-handle/index.js.map +1 -0
- package/internal/environment.js +1 -1
- package/internal/environment.json +1 -1
- package/internal/global-drag-state-styles/index.js +1 -0
- package/internal/global-drag-state-styles/index.js.map +1 -0
- package/internal/grid/grid.js +1 -0
- package/internal/grid/grid.js.map +1 -0
- package/internal/grid/index.js +1 -0
- package/internal/grid/index.js.map +1 -0
- package/internal/grid/interfaces.js +1 -0
- package/internal/grid/interfaces.js.map +1 -0
- package/internal/grid/item.js +1 -0
- package/internal/grid/item.js.map +1 -0
- package/internal/handle/index.js +1 -0
- package/internal/handle/index.js.map +1 -0
- package/internal/interfaces.js +1 -0
- package/internal/interfaces.js.map +1 -0
- package/internal/item-container/get-collision-rect.js +1 -0
- package/internal/item-container/get-collision-rect.js.map +1 -0
- package/internal/item-container/get-next-droppable.js +1 -0
- package/internal/item-container/get-next-droppable.js.map +1 -0
- package/internal/item-container/index.js +1 -0
- package/internal/item-container/index.js.map +1 -0
- package/internal/layout-engine/engine-cache.js +1 -0
- package/internal/layout-engine/engine-cache.js.map +1 -0
- package/internal/layout-engine/engine-solution.js +1 -0
- package/internal/layout-engine/engine-solution.js.map +1 -0
- package/internal/layout-engine/engine-state.js +1 -0
- package/internal/layout-engine/engine-state.js.map +1 -0
- package/internal/layout-engine/engine-step.js +1 -0
- package/internal/layout-engine/engine-step.js.map +1 -0
- package/internal/layout-engine/engine.js +1 -0
- package/internal/layout-engine/engine.js.map +1 -0
- package/internal/layout-engine/grid.js +1 -0
- package/internal/layout-engine/grid.js.map +1 -0
- package/internal/layout-engine/interfaces.js +1 -0
- package/internal/layout-engine/interfaces.js.map +1 -0
- package/internal/layout-engine/utils.js +1 -0
- package/internal/layout-engine/utils.js.map +1 -0
- package/internal/live-region/index.js +1 -0
- package/internal/live-region/index.js.map +1 -0
- package/internal/manifest.json +1 -1
- package/internal/resize-handle/index.js +1 -0
- package/internal/resize-handle/index.js.map +1 -0
- package/internal/screenreader-grid-navigation/index.js +1 -0
- package/internal/screenreader-grid-navigation/index.js.map +1 -0
- package/internal/screenreader-only/index.js +1 -0
- package/internal/screenreader-only/index.js.map +1 -0
- package/internal/utils/apply-display-name.js +1 -0
- package/internal/utils/apply-display-name.js.map +1 -0
- package/internal/utils/coordinates.js +1 -0
- package/internal/utils/coordinates.js.map +1 -0
- package/internal/utils/events.js +1 -0
- package/internal/utils/events.js.map +1 -0
- package/internal/utils/layout.js +1 -0
- package/internal/utils/layout.js.map +1 -0
- package/internal/utils/position.js +1 -0
- package/internal/utils/position.js.map +1 -0
- package/internal/utils/rects.js +1 -0
- package/internal/utils/rects.js.map +1 -0
- package/internal/utils/screen.js +1 -0
- package/internal/utils/screen.js.map +1 -0
- package/internal/utils/throttle.js +1 -0
- package/internal/utils/throttle.js.map +1 -0
- package/internal/utils/use-auto-scroll.js +1 -0
- package/internal/utils/use-auto-scroll.js.map +1 -0
- package/internal/utils/use-last-interaction.js +1 -0
- package/internal/utils/use-last-interaction.js.map +1 -0
- package/internal/utils/use-merge-refs.js +1 -0
- package/internal/utils/use-merge-refs.js.map +1 -0
- package/internal/utils/zip-arrays.js +1 -0
- package/internal/utils/zip-arrays.js.map +1 -0
- package/items-palette/index.js +1 -0
- package/items-palette/index.js.map +1 -0
- package/items-palette/interfaces.js +1 -0
- package/items-palette/interfaces.js.map +1 -0
- package/items-palette/internal.js +1 -0
- package/items-palette/internal.js.map +1 -0
- package/package.json +32 -1
package/board/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/board/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,gBAAgB,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,CAAC,OAAO,UAAU,KAAK,CAAW,KAA2B;IACjE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,KAAC,aAAa,OAAK,KAAK,KAAM,kBAAkB,GAAI,CAAC;AAC9D,CAAC;AAED,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport useBaseComponent from \"../internal/base-component/use-base-component\";\nimport { applyDisplayName } from \"../internal/utils/apply-display-name\";\nimport type { BoardProps } from \"./interfaces\";\nimport { InternalBoard } from \"./internal\";\n\nexport type { BoardProps };\n\nexport default function Board<DataType>(props: BoardProps<DataType>) {\n const baseComponentProps = useBaseComponent(\"Board\");\n return <InternalBoard {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(Board, \"Board\");\n"]}
|
package/board/interfaces.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/board/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ReactNode } from \"react\";\nimport { InteractionType, Operation } from \"../internal/dnd-controller/controller\";\nimport {\n BoardItemDefinition,\n BoardItemDefinitionBase,\n DataFallbackType,\n Direction,\n GridLayout,\n GridLayoutItem,\n ItemId,\n Rect,\n} from \"../internal/interfaces\";\nimport { LayoutEngine } from \"../internal/layout-engine/engine\";\nimport { LayoutShift } from \"../internal/layout-engine/interfaces\";\nimport { NonCancelableEventHandler } from \"../internal/utils/events\";\nimport { Position } from \"../internal/utils/position\";\n\n/*\n Note:\n The component does not provide handling of items state (loading, error, loaded).\n It is the responsibility of the client to control it and provide the necessary\n ARIA-live announcements.\n*/\n\nexport interface BoardProps<D = DataFallbackType> {\n /**\n * Specifies the items displayed in the board. Each item includes its position on the board and\n * optional data. The content of an item is controlled by the `renderItem` property.\n *\n * The BoardProps.Item includes:\n * * `id` (string) - the unique item identifier. The IDs of any two items in a page must be different.\n * * `definition.minRowSpan` (number, optional) - the minimal number of rows the item is allowed to take. It can't be less than two. Defaults to two.\n * * `definition.minColumnSpan` (number, optional) - the minimal number of columns the item is allowed to take. It can't be less than one. Defaults to one.\n * * `definition.defaultRowSpan` (number, optional) - the number or rows the item will take when inserted to the board. It can't be less than `definition.minRowSpan`.\n * * `definition.defaultColumnSpan` (number, optional) - the number or columns the item will take when inserted in the board. It can't be less than `definition.minColumnSpan`.\n * * `columnOffset` (mapping, optional) - the item's offset from the first column (per layout) starting from zero. The value is updated by `onItemsChange` after an update is committed.\n * * `rowSpan` (number, optional) - the item's vertical size starting from two. The value is updated by `onItemsChange` after an update is committed.\n * * `columnSpan` (number, optional) - the item's horizontal size starting from one. The value is updated by `onItemsChange` after an update is committed.\n * * `data` (D) - optional item data which can include the specific configurations of an item, such as its title.\n */\n items: ReadonlyArray<BoardProps.Item<D>>;\n\n /**\n * Specifies a function to render content for board items. The return value must include board item component.\n *\n * The function takes the item and its associated actions (BoardProps.ItemActions) that include:\n * * `removeItem(): void` - the callback to issue the item's removal. Once issued, the `onItemsChange` will fire to update the state.\n */\n renderItem: (item: BoardProps.Item<D>, actions: BoardProps.ItemActions) => JSX.Element;\n\n /**\n * An object containing all the necessary localized strings required by the component.\n *\n * Live announcements:\n * * `liveAnnouncementDndStarted(BoardProps.DndOperationType): string` - the function to create a live announcement string to indicate start of DnD (\"reorder\", \"resize\" or \"insert\").\n * * `liveAnnouncementDndItemReordered(BoardProps.DndReorderState<D>): string` - the function to create a live announcement string to indicate when DnD reorder is performed.\n * * `liveAnnouncementDndItemResized(BoardProps.DndResizeState<D>): string` - the function to create a live announcement string to indicate when DnD resize is performed.\n * * `liveAnnouncementDndItemInserted(BoardProps.DndInsertState<D>): string` - the function to create a live announcement string to indicate when DnD insert is performed.\n * * `liveAnnouncementDndDiscarded(BoardProps.DndOperationType): string` - the function to create a live announcement string to indicate commit of DnD (\"reorder\", \"resize\" or \"insert\").\n * * `liveAnnouncementDndCommitted(BoardProps.DndOperationType): string` - the function to create a live announcement string to indicate discard of DnD (\"reorder\", \"resize\" or \"insert\").\n * * `liveAnnouncementItemRemoved(BoardProps.OperationStateRemove<D>): string` - the function to create a live announcement string to indicate when item is removed.\n *\n * Navigation labels:\n * * `navigationAriaLabel` (string) - the ARIA label for the accessible board navigation element.\n * * `navigationAriaDescription` (string, optional) - the ARIA description for the accessible board navigation element.\n * * `navigationItemAriaLabel(null | BoardProps.Item<D>): string` - the function to create the ARIA label for a navigation board item or an empty slot.\n */\n i18nStrings: BoardProps.I18nStrings<D>;\n\n /**\n * Called when a user modifies the size or position of board items.\n *\n * The change detail has the following properties:\n *\n * * `items`: (readonly Item<D>[]) - the updated items array.\n * * `addedItem`: (Item<D>, optional) - the item that was added as part of the update, if applicable.\n * * `removedItem`: (Item<D>, optional) - the item that was removed as part of the update, if applicable.\n * * `resizedItem`: (Item<D>, optional) - the item that was resized as part of the update, if applicable.\n * * `movedItem`: (Item<D>, optional) - the item that was moved as part of the update, if applicable.\n */\n onItemsChange: NonCancelableEventHandler<BoardProps.ItemsChangeDetail<D>>;\n\n /**\n * Rendered when the `items` array is empty.\n *\n * When items are loading the slot can be used to render the loading indicator.\n */\n empty: ReactNode;\n}\n\nexport namespace BoardProps {\n export type Item<D = DataFallbackType> = BoardItemDefinition<D>;\n\n export interface ItemActions {\n removeItem(): void;\n }\n\n export interface ItemsChangeDetail<D = DataFallbackType> {\n items: ReadonlyArray<Item<D>>;\n movedItem?: Item<D>;\n resizedItem?: Item<D>;\n addedItem?: Item<D>;\n removedItem?: Item<D>;\n }\n\n export interface I18nStrings<D> {\n liveAnnouncementDndStarted: (operationType: DndOperationType) => string;\n liveAnnouncementDndItemReordered: (operation: DndReorderState<D>) => string;\n liveAnnouncementDndItemResized: (operation: DndResizeState<D>) => string;\n liveAnnouncementDndItemInserted: (operation: DndInsertState<D>) => string;\n liveAnnouncementDndCommitted: (operationType: DndOperationType) => string;\n liveAnnouncementDndDiscarded: (operationType: DndOperationType) => string;\n liveAnnouncementItemRemoved: (operation: ItemRemovedState<D>) => string;\n navigationAriaLabel: string;\n navigationAriaDescription?: string;\n navigationItemAriaLabel: (item: null | BoardProps.Item<D>) => string;\n }\n\n export type DndOperationType = \"reorder\" | \"resize\" | \"insert\";\n\n export interface ItemPlacement {\n x: number;\n y: number;\n width: number;\n height: number;\n }\n\n export interface DndReorderState<D> {\n item: Item<D>;\n placement: ItemPlacement;\n direction: \"horizontal\" | \"vertical\";\n conflicts: readonly Item<D>[];\n disturbed: readonly Item<D>[];\n }\n\n export interface DndInsertState<D> {\n item: Item<D>;\n placement: ItemPlacement;\n conflicts: readonly Item<D>[];\n disturbed: readonly Item<D>[];\n }\n\n export interface DndResizeState<D> {\n item: Item<D>;\n placement: ItemPlacement;\n direction: \"horizontal\" | \"vertical\";\n isMinimalColumnsReached: boolean;\n isMinimalRowsReached: boolean;\n conflicts: readonly Item<D>[];\n disturbed: readonly Item<D>[];\n }\n\n export interface ItemRemovedState<D> {\n item: Item<D>;\n disturbed: readonly Item<D>[];\n }\n}\n\nexport interface Transition<D> {\n operation: Operation;\n interactionType: InteractionType;\n itemsLayout: GridLayout;\n layoutEngine: LayoutEngine;\n insertionDirection: null | Direction;\n draggableItem: BoardItemDefinitionBase<D>;\n draggableRect: Rect;\n acquiredItem: null | BoardItemDefinitionBase<D>;\n collisionIds: Set<ItemId>;\n layoutShift: null | LayoutShift;\n path: readonly Position[];\n acquiredItemElement?: ReactNode;\n}\n\nexport interface RemoveTransition<D> {\n items: readonly BoardProps.Item<D>[];\n removedItem: BoardItemDefinitionBase<D>;\n layoutShift: LayoutShift;\n}\n\nexport type TransitionAnnouncement =\n | DndStartedAnnouncement\n | DndActionAnnouncement\n | DndCommittedAnnouncement\n | DndDiscardedAnnouncement\n | ItemRemovedAnnouncement;\n\nexport interface DndStartedAnnouncement {\n type: \"dnd-started\";\n item: BoardItemDefinitionBase<unknown>;\n operation: Operation;\n}\nexport interface DndActionAnnouncement {\n type: \"dnd-action\";\n item: BoardItemDefinitionBase<unknown>;\n operation: Operation;\n placement: Omit<GridLayoutItem, \"id\">;\n direction: null | Direction;\n conflicts: Set<ItemId>;\n disturbed: Set<ItemId>;\n}\nexport interface DndCommittedAnnouncement {\n type: \"dnd-committed\";\n item: BoardItemDefinitionBase<unknown>;\n operation: Operation;\n}\nexport interface DndDiscardedAnnouncement {\n type: \"dnd-discarded\";\n item: BoardItemDefinitionBase<unknown>;\n operation: Operation;\n}\nexport interface ItemRemovedAnnouncement {\n type: \"item-removed\";\n item: BoardItemDefinitionBase<unknown>;\n disturbed: Set<ItemId>;\n}\n"]}
|
package/board/internal.js
CHANGED
|
@@ -0,0 +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 clsx from \"clsx\";\nimport { ReactNode, useEffect, useRef } from \"react\";\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 { ScreenReaderGridNavigation } from \"../internal/screenreader-grid-navigation\";\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 { useMergeRefs } from \"../internal/utils/use-merge-refs\";\n\nimport { BoardProps } from \"./interfaces\";\nimport Placeholder from \"./placeholder\";\nimport styles from \"./styles.css.js\";\nimport { selectTransitionRows, useTransition } from \"./transition\";\nimport { announcementToString } from \"./utils/announcements\";\nimport { createTransforms } from \"./utils/create-transforms\";\nimport { createItemsChangeEvent } from \"./utils/events\";\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 useGlobalDragStateStyles();\n\n const autoScrollHandlers = useAutoScroll();\n\n const [transitionState, dispatch] = useTransition<D>();\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 focusNextRenderIndexRef = useRef<null | number>(null);\n const focusNextRenderIdRef = useRef<null | ItemId>(null);\n useEffect(() => {\n const focusTarget = focusNextRenderIdRef.current ?? items[focusNextRenderIndexRef.current ?? -1]?.id;\n if (focusTarget) {\n itemContainerRef.current[focusTarget].focusDragHandle();\n }\n focusNextRenderIndexRef.current = null;\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 focusNextRenderIndexRef.current = nextIndexToFocus;\n onItemsChange(createItemsChangeEvent(items, removeTransition.layoutShift));\n }, TRANSITION_DURATION_MS);\n\n return () => clearTimeout(timeoutId);\n }, [removeTransition, items, onItemsChange]);\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 return (\n boardContains(document.elementFromPoint(rect.left, rect.top)) ||\n boardContains(document.elementFromPoint(rect.right, rect.top)) ||\n boardContains(document.elementFromPoint(rect.right, rect.bottom)) ||\n boardContains(document.elementFromPoint(rect.left, rect.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.addPointerEventHandlers();\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.removePointerEventHandlers();\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.removePointerEventHandlers();\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\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 focusItem(itemId: ItemId) {\n itemContainerRef.current[itemId].focusDragHandle();\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 <ScreenReaderGridNavigation\n items={items}\n itemsLayout={itemsLayout}\n ariaLabel={i18nStrings.navigationAriaLabel}\n ariaDescription={i18nStrings.navigationAriaDescription}\n itemAriaLabel={i18nStrings.navigationItemAriaLabel}\n onActivateItem={focusItem}\n />\n\n <div ref={containerRef} className={clsx(styles.root, { [styles.empty]: rows === 0 })}>\n {rows > 0 ? (\n <Grid columns={itemsLayout.columns} layout={[...placeholdersLayout.items, ...itemsLayout.items]}>\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 >\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"]}
|
package/board/placeholder.js
CHANGED
|
@@ -22,3 +22,4 @@ export default function Placeholder({ id, state, gridContext, columns }) {
|
|
|
22
22
|
useDroppable({ itemId: id, context: dropTargetContext, getElement: () => ref.current });
|
|
23
23
|
return _jsx("div", { ref: ref, className: clsx(styles.placeholder, styles[`placeholder--${state}`]) });
|
|
24
24
|
}
|
|
25
|
+
//# sourceMappingURL=placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../src/board/placeholder.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAGrE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAWrC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAoB;IACvF,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEzC,MAAM,iBAAiB,GAAG;QACxB,KAAK,EAAE,CAAC,IAAsC,EAAE,IAAwC,EAAE,EAAE;;YAC1F,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,mCAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,mCAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACvD,OAAO;gBACL,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAClC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC;aACtC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAQ,EAAE,CAAC,CAAC;IAEzF,OAAO,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,GAAI,CAAC;AACjG,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from \"clsx\";\nimport { useRef } from \"react\";\nimport { useDroppable } from \"../internal/dnd-controller/controller\";\nimport { GridContext } from \"../internal/grid/interfaces\";\nimport { BoardItemDefinitionBase } from \"../internal/interfaces\";\nimport { getDefaultColumnSpan, getDefaultRowSpan } from \"../internal/utils/layout\";\nimport styles from \"./styles.css.js\";\n\nexport type PlaceholderState = \"default\" | \"active\" | \"hover\";\n\nexport interface PlaceholderProps {\n id: string;\n state: PlaceholderState;\n gridContext: GridContext;\n columns: number;\n}\n\nexport default function Placeholder({ id, state, gridContext, columns }: PlaceholderProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n const dropTargetContext = {\n scale: (item: BoardItemDefinitionBase<unknown>, size?: { width: number; height: number }) => {\n const width = size?.width ?? getDefaultColumnSpan(item, columns);\n const height = size?.height ?? getDefaultRowSpan(item);\n return {\n width: gridContext.getWidth(width),\n height: gridContext.getHeight(height),\n };\n },\n };\n\n useDroppable({ itemId: id, context: dropTargetContext, getElement: () => ref.current! });\n\n return <div ref={ref} className={clsx(styles.placeholder, styles[`placeholder--${state}`])} />;\n}\n"]}
|
package/board/transition.js
CHANGED
|
@@ -0,0 +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\";\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>(): [TransitionState<D>, Dispatch<Action<D>>] {\n return useReducer(transitionReducer<D>, { transition: null, removeTransition: null, announcement: null });\n}\n\nexport function selectTransitionRows<D>(state: TransitionState<D>) {\n return state.transition ? getLayoutRows(state.transition) : 0;\n}\n\nfunction transitionReducer<D>(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);\n case \"acquire-item\":\n return acquireTransitionItem(state, action);\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): 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, \"left\");\n case \"right\":\n return updateManualItemTransition(transition, \"right\");\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 = layoutElement.getBoundingClientRect();\n const itemRect = transition.draggableRect;\n const offset = new Coordinates({ x: itemRect.left - layoutRect.x, y: itemRect.top - layoutRect.y });\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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"announcements.js","sourceRoot":"","sources":["../../../../src/board/utils/announcements.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\n\nimport { Direction, ItemId } from \"../../internal/interfaces\";\nimport { getMinColumnSpan, getMinRowSpan } from \"../../internal/utils/layout\";\nimport {\n BoardProps,\n DndActionAnnouncement,\n ItemRemovedAnnouncement,\n Transition,\n TransitionAnnouncement,\n} from \"../interfaces\";\n\n/**\n * Creates an announcement object describing the last user move.\n */\nexport function createOperationAnnouncement<D>(\n transition: Transition<D>,\n direction: null | Direction\n): null | DndActionAnnouncement {\n const { operation, layoutShift, itemsLayout } = transition;\n const targetItem = itemsLayout.items.find((it) => it.id === transition.draggableItem.id) ?? null;\n\n if (!layoutShift) {\n return null;\n }\n\n const firstMove = layoutShift.moves[0];\n const targetId = firstMove?.itemId ?? targetItem?.id;\n if (!targetId) {\n return null;\n }\n\n const itemMoves = layoutShift.moves.filter((m) => m.itemId === targetId);\n const lastItemMove = itemMoves[itemMoves.length - 1];\n const placement = lastItemMove ?? targetItem;\n\n const conflicts = new Set(layoutShift.conflicts);\n\n const disturbed = new Set(layoutShift.moves.map((move) => move.itemId));\n disturbed.delete(targetId);\n\n return {\n type: \"dnd-action\",\n item: transition.draggableItem,\n operation,\n placement: {\n x: placement.x,\n y: placement.y,\n width: placement.width,\n height: placement.height,\n },\n direction,\n conflicts,\n disturbed,\n };\n}\n\n/**\n * Applies i18nStrings to the announcement object to produce a string for the live region.\n */\nexport function announcementToString<D>(\n announcement: TransitionAnnouncement,\n items: readonly BoardProps.Item<D>[],\n i18nStrings: BoardProps.I18nStrings<D>,\n columns: number\n): string {\n if (!announcement) {\n return \"\";\n }\n const item = announcement.item as BoardProps.Item<D>;\n\n const toItem = (id: ItemId) => items.find((it) => it?.id === id)!;\n const formatDirection = (direction: null | Direction) => {\n if (!direction) {\n return null;\n }\n return direction === \"left\" || direction === \"right\" ? \"horizontal\" : \"vertical\";\n };\n\n function createDndActionAnnouncement(announcement: DndActionAnnouncement) {\n const placement = announcement.placement;\n const direction = formatDirection(announcement.direction);\n const conflicts = [...announcement.conflicts].map(toItem);\n const disturbed = [...announcement.disturbed].map(toItem);\n\n switch (announcement.operation) {\n case \"reorder\":\n return i18nStrings.liveAnnouncementDndItemReordered({\n item,\n placement,\n direction: direction!,\n conflicts,\n disturbed,\n });\n case \"resize\":\n return i18nStrings.liveAnnouncementDndItemResized({\n item,\n placement,\n direction: direction!,\n isMinimalColumnsReached: placement.width === getMinColumnSpan(item, columns),\n isMinimalRowsReached: placement.height === getMinRowSpan(item),\n conflicts,\n disturbed,\n });\n case \"insert\":\n return i18nStrings.liveAnnouncementDndItemInserted({ item, placement, conflicts, disturbed });\n }\n }\n\n function createItemRemovedAnnouncement(announcement: ItemRemovedAnnouncement) {\n return i18nStrings.liveAnnouncementItemRemoved({ item, disturbed: [...announcement.disturbed].map(toItem) });\n }\n\n switch (announcement.type) {\n case \"dnd-started\":\n return i18nStrings.liveAnnouncementDndStarted(announcement.operation);\n case \"dnd-action\":\n return createDndActionAnnouncement(announcement);\n case \"dnd-committed\":\n return i18nStrings.liveAnnouncementDndCommitted(announcement.operation);\n case \"dnd-discarded\":\n return i18nStrings.liveAnnouncementDndDiscarded(announcement.operation);\n case \"item-removed\":\n return createItemRemovedAnnouncement(announcement);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-transforms.js","sourceRoot":"","sources":["../../../../src/board/utils/create-transforms.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,KAA+B,EAAE,WAAwB;IAC1G,MAAM,UAAU,GAA8B,EAAE,CAAC;IAEjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1B,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC9C;aAAM,IAAI,IAAI,EAAE;YACf,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;gBACpB,IAAI,EAAE,MAAM;gBACZ,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC5C,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC5C,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBACvC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3C,CAAC;SACH;KACF;IAED,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { GridContext } from \"../../internal/grid/interfaces\";\nimport { GridLayout, ItemId, Transform } from \"../../internal/interfaces\";\nimport { CommittedMove } from \"../../internal/layout-engine/interfaces\";\n\n/**\n * Creates a mapping of between items and transforms to be applied while in transition.\n */\nexport function createTransforms(grid: GridLayout, moves: readonly CommittedMove[], gridContext: GridContext) {\n const transforms: Record<ItemId, Transform> = {};\n\n for (const move of moves) {\n const item = grid.items.find((prev) => prev.id === move.itemId);\n\n if (move.type === \"REMOVE\") {\n transforms[move.itemId] = { type: \"remove\" };\n } else if (item) {\n transforms[item.id] = {\n type: \"move\",\n x: gridContext.getColOffset(move.x - item.x),\n y: gridContext.getRowOffset(move.y - item.y),\n width: gridContext.getWidth(move.width),\n height: gridContext.getHeight(move.height),\n };\n }\n }\n\n return transforms;\n}\n"]}
|
package/board/utils/events.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/board/utils/events.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAGtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,UAAU,sBAAsB,CACpC,KAAoC,EACpC,WAAwB;;IAExB,MAAM,YAAY,GAAG,MAAA,MAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,0CAAE,MAAM,mCAAI,IAAI,CAAC;IAC9F,MAAM,UAAU,GAAG,MAAA,MAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,0CAAE,MAAM,mCAAI,IAAI,CAAC;IAC1F,MAAM,YAAY,GAAG,MAAA,MAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,0CAAE,MAAM,mCAAI,IAAI,CAAC;IAC9F,MAAM,YAAY,GAAG,MAAA,MAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,0CAAE,MAAM,mCAAI,IAAI,CAAC;IAE9F,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,YAAY,CAAC,CAAC;IAEvF,OAAO,iBAAiB,CAAC;QACvB,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC;QACxD,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC;QACvD,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC;QAC1D,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;KACnF,CAAC,CAAC;AACL,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { LayoutShift } from \"../../internal/layout-engine/interfaces\";\nimport { createCustomEvent } from \"../../internal/utils/events\";\nimport { transformItems } from \"../../internal/utils/layout\";\nimport { BoardProps } from \"../interfaces\";\n\nexport function createItemsChangeEvent<D>(\n items: readonly BoardProps.Item<D>[],\n layoutShift: LayoutShift\n): CustomEvent<BoardProps.ItemsChangeDetail<D>> {\n const insertTarget = layoutShift.moves.find((move) => move.type === \"INSERT\")?.itemId ?? null;\n const moveTarget = layoutShift.moves.find((move) => move.type === \"MOVE\")?.itemId ?? null;\n const removeTarget = layoutShift.moves.find((move) => move.type === \"REMOVE\")?.itemId ?? null;\n const resizeTarget = layoutShift.moves.find((move) => move.type === \"RESIZE\")?.itemId ?? null;\n\n const newItems = transformItems(items, layoutShift.next, resizeTarget ?? insertTarget);\n\n return createCustomEvent({\n items: newItems,\n addedItem: newItems.find((it) => it.id === insertTarget),\n removedItem: items.find((it) => it.id === removeTarget),\n resizedItem: newItems.find((it) => it.id === resizeTarget),\n movedItem: !insertTarget ? newItems.find((it) => it.id === moveTarget) : undefined,\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-hovered-rect.js","sourceRoot":"","sources":["../../../../src/board/utils/get-hovered-rect.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAItC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,aAAgC,EAAE,YAAuC;IACtG,MAAM,mBAAmB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC,CAAC;IAC9F,OAAO,mBAAmB,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QACpB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACtC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC7D,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;KAC3D,CAAC,EACF;QACE,GAAG,EAAE,MAAM,CAAC,iBAAiB;QAC7B,IAAI,EAAE,MAAM,CAAC,iBAAiB;QAC9B,MAAM,EAAE,MAAM,CAAC,iBAAiB;QAChC,KAAK,EAAE,MAAM,CAAC,iBAAiB;KAChC,CACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GridLayoutItem, ItemId } from \"../../internal/interfaces\";\n\n/**\n * Creates a minimal hovered rectangle (in grid units) that contains all collided placeholders.\n */\nexport function getHoveredRect(collisionsIds: readonly ItemId[], placeholders: readonly GridLayoutItem[]) {\n const hoveredPlaceholders = collisionsIds.map((id) => placeholders.find((p) => p.id === id)!);\n return hoveredPlaceholders.reduce(\n (rect, collision) => ({\n top: Math.min(rect.top, collision.y),\n left: Math.min(rect.left, collision.x),\n bottom: Math.max(rect.bottom, collision.y + collision.height),\n right: Math.max(rect.right, collision.x + collision.width),\n }),\n {\n top: Number.POSITIVE_INFINITY,\n left: Number.POSITIVE_INFINITY,\n bottom: Number.NEGATIVE_INFINITY,\n right: Number.NEGATIVE_INFINITY,\n }\n );\n}\n"]}
|
package/board/utils/layout.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../src/board/utils/layout.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\n\nimport { Direction } from \"../../internal/interfaces\";\nimport { LayoutShift } from \"../../internal/layout-engine/interfaces\";\nimport { Coordinates } from \"../../internal/utils/coordinates\";\nimport { createPlaceholdersLayout, getDefaultColumnSpan, getDefaultRowSpan } from \"../../internal/utils/layout\";\nimport { Position } from \"../../internal/utils/position\";\nimport { Transition } from \"../interfaces\";\nimport { normalizeInsertionPath } from \"./path\";\n\nexport function getLayoutColumns<D>(transition: Transition<D>) {\n return transition.itemsLayout.columns;\n}\n\n// The rows can be overridden during transition to create more drop targets at the bottom.\nexport function getLayoutRows<D>(transition: Transition<D>) {\n const layout = transition.layoutShift?.next ?? transition.itemsLayout;\n\n const layoutItem = layout.items.find((it) => it.id === transition.draggableItem.id);\n const itemHeight = layoutItem?.height ?? getDefaultRowSpan(transition.draggableItem);\n // Add extra row for resize when already at the bottom.\n if (transition.operation === \"resize\") {\n return Math.max(layout.rows, layoutItem ? layoutItem.y + layoutItem.height + 1 : 0);\n }\n // Add extra row(s) for reorder/insert based on item's height.\n else {\n return Math.max(layout.rows, transition.itemsLayout.rows + itemHeight);\n }\n}\n\nexport function getLayoutPlaceholders<D>(transition: Transition<D>) {\n const rows = getLayoutRows(transition);\n const columns = getLayoutColumns(transition);\n return createPlaceholdersLayout(rows, columns);\n}\n\n/**\n * Retrieves direction from where the inserting item comes.\n */\nexport function getInsertionDirection(cursorOffset: Coordinates): Direction {\n if (cursorOffset.x < 0) {\n return \"right\";\n }\n if (cursorOffset.x > 0) {\n return \"left\";\n }\n if (cursorOffset.y < 0) {\n return \"down\";\n }\n if (cursorOffset.y > 0) {\n return \"up\";\n }\n return \"right\";\n}\n\n/**\n * Applies transition operation (reorder/move/insert) and retrieves an object that describes the updated\n * layout and the moves to be made including and not including items float to top.\n *\n * The layout shift w/o refloat is used for rendering and w/ refloat is used for live announcements.\n */\nexport function getLayoutShift<D>(\n transition: Transition<D>,\n path: readonly Position[],\n insertionDirection?: Direction\n): null | LayoutShift {\n if (path.length === 0) {\n return null;\n }\n\n const width = getDefaultColumnSpan(transition.draggableItem, getLayoutColumns(transition));\n const height = getDefaultRowSpan(transition.draggableItem);\n const rows = getLayoutRows(transition);\n const columns = getLayoutColumns(transition);\n\n switch (transition.operation) {\n case \"resize\":\n return transition.layoutEngine.resize({ itemId: transition.draggableItem.id, path });\n case \"reorder\":\n return transition.layoutEngine.move({ itemId: transition.draggableItem.id, path });\n case \"insert\":\n return transition.layoutEngine.insert({\n itemId: transition.draggableItem.id,\n width,\n height,\n path: normalizeInsertionPath(path, insertionDirection ?? \"right\", columns, rows),\n });\n }\n}\n"]}
|
package/board/utils/path.js
CHANGED
|
@@ -0,0 +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"]}
|
package/board-item/header.js
CHANGED
|
@@ -8,3 +8,4 @@ export default function WidgetContainerHeader({ handle, children, settings }) {
|
|
|
8
8
|
const isVisualRefresh = useVisualRefresh();
|
|
9
9
|
return (_jsxs("div", { className: clsx(styles.header, isVisualRefresh && styles.refresh), children: [_jsx("div", { className: clsx(styles.fixed, styles.handle), children: handle }), _jsx("div", { className: clsx(styles.flexible, styles["header-content"]), children: children }), settings ? _jsx("div", { className: clsx(styles.fixed, styles.settings), children: settings }) : null] }));
|
|
10
10
|
}
|
|
11
|
+
//# sourceMappingURL=header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/board-item/header.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAQrC,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAA8B;IACtG,MAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;IAC3C,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC,aACpE,cAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,YAAG,MAAM,GAAO,EACjE,cAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,YAAG,QAAQ,GAAO,EAChF,QAAQ,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAG,QAAQ,GAAO,CAAC,CAAC,CAAC,IAAI,IACpF,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from \"clsx\";\nimport { ReactNode } from \"react\";\nimport { useVisualRefresh } from \"../internal/base-component/use-visual-refresh.js\";\nimport styles from \"./styles.css.js\";\n\nexport interface WidgetContainerHeaderProps {\n handle: ReactNode;\n children?: ReactNode;\n settings?: ReactNode;\n}\n\nexport default function WidgetContainerHeader({ handle, children, settings }: WidgetContainerHeaderProps) {\n const isVisualRefresh = useVisualRefresh();\n return (\n <div className={clsx(styles.header, isVisualRefresh && styles.refresh)}>\n <div className={clsx(styles.fixed, styles.handle)}>{handle}</div>\n <div className={clsx(styles.flexible, styles[\"header-content\"])}>{children}</div>\n {settings ? <div className={clsx(styles.fixed, styles.settings)}>{settings}</div> : null}\n </div>\n );\n}\n"]}
|
package/board-item/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/board-item/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,gBAAgB,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,KAAqB;IACrD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACzD,OAAO,KAAC,iBAAiB,OAAK,KAAK,KAAM,kBAAkB,GAAI,CAAC;AAClE,CAAC;AAED,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport useBaseComponent from \"../internal/base-component/use-base-component\";\nimport { applyDisplayName } from \"../internal/utils/apply-display-name\";\nimport type { BoardItemProps } from \"./interfaces\";\nimport { InternalBoardItem } from \"./internal\";\n\nexport { BoardItemProps };\n\nexport default function BoardItem(props: BoardItemProps) {\n const baseComponentProps = useBaseComponent(\"BoardItem\");\n return <InternalBoardItem {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(BoardItem, \"BoardItem\");\n"]}
|
package/board-item/interfaces.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/board-item/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ReactNode } from \"react\";\n\nexport interface BoardItemProps {\n /**\n * Heading element of the item. Use the [header component](/components/header/).\n */\n header?: ReactNode;\n\n /**\n * Main content of the item.\n */\n children?: ReactNode;\n\n /**\n * Determines whether the main content of the item has padding. If `true`, removes the default padding\n * from the content area.\n */\n disableContentPaddings?: boolean;\n\n /**\n * Footer of the item.\n */\n footer?: ReactNode;\n\n /**\n * Additional slot next to the heading. Use it to render an overflow actions menu in the form of a button dropdown.\n */\n settings?: ReactNode;\n\n /**\n * An object containing all the necessary localized strings required by the component.\n *\n * ARIA labels:\n * * `dragHandleAriaLabel` (string) - the ARIA label for the drag handle.\n * * `dragHandleAriaDescription` (string, optional) - the ARIA description for the drag handle.\n * * `resizeHandleAriaLabel` (string) - the ARIA label for the resize handle.\n * * `resizeHandleAriaDescription` (string, optional) - the ARIA description for the resize handle.\n */\n i18nStrings: BoardItemProps.I18nStrings;\n}\n\nexport namespace BoardItemProps {\n export interface I18nStrings {\n dragHandleAriaLabel: string;\n dragHandleAriaDescription?: string;\n resizeHandleAriaLabel: string;\n resizeHandleAriaDescription?: string;\n }\n}\n"]}
|
package/board-item/internal.js
CHANGED
|
@@ -19,3 +19,4 @@ export function InternalBoardItem({ children, header, settings, disableContentPa
|
|
|
19
19
|
const resizeHandleAriaDescribedBy = useId();
|
|
20
20
|
return (_jsxs("div", { ref: __internalRootRef, className: styles.root, ...getDataAttributes(rest), children: [_jsx(Container, { fitHeight: true, disableHeaderPaddings: true, header: _jsx(WidgetContainerHeader, { handle: _jsx(DragHandle, { ref: dragHandle.ref, ariaLabelledBy: dragHandleAriaLabelledBy, ariaDescribedBy: dragHandleAriaDescribedBy, onPointerDown: dragHandle.onPointerDown, onKeyDown: dragHandle.onKeyDown, isActive: dragHandle.isActive }), settings: settings, children: header }), footer: footer, disableContentPaddings: disableContentPaddings, className: clsx(styles["container-override"], isActive && styles.active), children: children }), resizeHandle && (_jsx("div", { className: styles.resizer, children: _jsx(ResizeHandle, { ariaLabelledBy: resizeHandleAriaLabelledBy, ariaDescribedBy: resizeHandleAriaDescribedBy, onPointerDown: resizeHandle.onPointerDown, onKeyDown: resizeHandle.onKeyDown, isActive: resizeHandle.isActive }) })), _jsx(ScreenreaderOnly, { id: dragHandleAriaLabelledBy, children: i18nStrings.dragHandleAriaLabel }), _jsx(ScreenreaderOnly, { id: dragHandleAriaDescribedBy, children: i18nStrings.dragHandleAriaDescription }), _jsx(ScreenreaderOnly, { id: resizeHandleAriaLabelledBy, children: i18nStrings.resizeHandleAriaLabel }), _jsx(ScreenreaderOnly, { id: resizeHandleAriaDescribedBy, children: i18nStrings.resizeHandleAriaDescription })] }));
|
|
21
21
|
}
|
|
22
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/board-item/internal.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,SAAS,MAAM,yCAAyC,CAAC;AAChE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAEnF,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,qBAAqB,MAAM,UAAU,CAAC;AAE7C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,sBAAsB,EACtB,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,GAAG,IAAI,EACqC;IAC5C,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;IAEhE,MAAM,wBAAwB,GAAG,KAAK,EAAE,CAAC;IACzC,MAAM,yBAAyB,GAAG,KAAK,EAAE,CAAC;IAE1C,MAAM,0BAA0B,GAAG,KAAK,EAAE,CAAC;IAC3C,MAAM,2BAA2B,GAAG,KAAK,EAAE,CAAC;IAE5C,OAAO,CACL,eAAK,GAAG,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,KAAM,iBAAiB,CAAC,IAAI,CAAC,aAC9E,KAAC,SAAS,IACR,SAAS,EAAE,IAAI,EACf,qBAAqB,EAAE,IAAI,EAC3B,MAAM,EACJ,KAAC,qBAAqB,IACpB,MAAM,EACJ,KAAC,UAAU,IACT,GAAG,EAAE,UAAU,CAAC,GAAG,EACnB,cAAc,EAAE,wBAAwB,EACxC,eAAe,EAAE,yBAAyB,EAC1C,aAAa,EAAE,UAAU,CAAC,aAAa,EACvC,SAAS,EAAE,UAAU,CAAC,SAAS,EAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ,GAC7B,EAEJ,QAAQ,EAAE,QAAQ,YAEjB,MAAM,GACe,EAE1B,MAAM,EAAE,MAAM,EACd,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,YAEvE,QAAQ,GACC,EACX,YAAY,IAAI,CACf,cAAK,SAAS,EAAE,MAAM,CAAC,OAAO,YAC5B,KAAC,YAAY,IACX,cAAc,EAAE,0BAA0B,EAC1C,eAAe,EAAE,2BAA2B,EAC5C,aAAa,EAAE,YAAY,CAAC,aAAa,EACzC,SAAS,EAAE,YAAY,CAAC,SAAS,EACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ,GAC/B,GACE,CACP,EAED,KAAC,gBAAgB,IAAC,EAAE,EAAE,wBAAwB,YAAG,WAAW,CAAC,mBAAmB,GAAoB,EACpG,KAAC,gBAAgB,IAAC,EAAE,EAAE,yBAAyB,YAAG,WAAW,CAAC,yBAAyB,GAAoB,EAE3G,KAAC,gBAAgB,IAAC,EAAE,EAAE,0BAA0B,YAAG,WAAW,CAAC,qBAAqB,GAAoB,EACxG,KAAC,gBAAgB,IAAC,EAAE,EAAE,2BAA2B,YAAG,WAAW,CAAC,2BAA2B,GAAoB,IAC3G,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport Container from \"@cloudscape-design/components/container\";\nimport clsx from \"clsx\";\nimport { useId } from \"react\";\nimport { getDataAttributes } from \"../internal/base-component/get-data-attributes\";\nimport { InternalBaseComponentProps } from \"../internal/base-component/use-base-component\";\nimport DragHandle from \"../internal/drag-handle\";\nimport { useItemContext } from \"../internal/item-container\";\nimport ResizeHandle from \"../internal/resize-handle\";\nimport ScreenreaderOnly from \"../internal/screenreader-only\";\nimport WidgetContainerHeader from \"./header\";\nimport type { BoardItemProps } from \"./interfaces\";\nimport styles from \"./styles.css.js\";\n\nexport function InternalBoardItem({\n children,\n header,\n settings,\n disableContentPaddings,\n footer,\n i18nStrings,\n __internalRootRef,\n ...rest\n}: BoardItemProps & InternalBaseComponentProps) {\n const { dragHandle, resizeHandle, isActive } = useItemContext();\n\n const dragHandleAriaLabelledBy = useId();\n const dragHandleAriaDescribedBy = useId();\n\n const resizeHandleAriaLabelledBy = useId();\n const resizeHandleAriaDescribedBy = useId();\n\n return (\n <div ref={__internalRootRef} className={styles.root} {...getDataAttributes(rest)}>\n <Container\n fitHeight={true}\n disableHeaderPaddings={true}\n header={\n <WidgetContainerHeader\n handle={\n <DragHandle\n ref={dragHandle.ref}\n ariaLabelledBy={dragHandleAriaLabelledBy}\n ariaDescribedBy={dragHandleAriaDescribedBy}\n onPointerDown={dragHandle.onPointerDown}\n onKeyDown={dragHandle.onKeyDown}\n isActive={dragHandle.isActive}\n />\n }\n settings={settings}\n >\n {header}\n </WidgetContainerHeader>\n }\n footer={footer}\n disableContentPaddings={disableContentPaddings}\n className={clsx(styles[\"container-override\"], isActive && styles.active)}\n >\n {children}\n </Container>\n {resizeHandle && (\n <div className={styles.resizer}>\n <ResizeHandle\n ariaLabelledBy={resizeHandleAriaLabelledBy}\n ariaDescribedBy={resizeHandleAriaDescribedBy}\n onPointerDown={resizeHandle.onPointerDown}\n onKeyDown={resizeHandle.onKeyDown}\n isActive={resizeHandle.isActive}\n />\n </div>\n )}\n\n <ScreenreaderOnly id={dragHandleAriaLabelledBy}>{i18nStrings.dragHandleAriaLabel}</ScreenreaderOnly>\n <ScreenreaderOnly id={dragHandleAriaDescribedBy}>{i18nStrings.dragHandleAriaDescription}</ScreenreaderOnly>\n\n <ScreenreaderOnly id={resizeHandleAriaLabelledBy}>{i18nStrings.resizeHandleAriaLabel}</ScreenreaderOnly>\n <ScreenreaderOnly id={resizeHandleAriaDescribedBy}>{i18nStrings.resizeHandleAriaDescription}</ScreenreaderOnly>\n </div>\n );\n}\n"]}
|
package/index.js
CHANGED
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport { default as Board } from \"./board\";\nexport type { BoardProps } from \"./board\";\n\nexport { default as ItemsPalette } from \"./items-palette\";\nexport type { ItemsPaletteProps } from \"./items-palette\";\n\nexport { default as BoardItem } from \"./board-item\";\nexport type { BoardItemProps } from \"./board-item\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-data-attributes.js","sourceRoot":"","sources":["../../../../src/internal/base-component/get-data-attributes.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function getDataAttributes(props: Record<string, string>) {\n const result: Record<string, any> = {};\n Object.keys(props).forEach((prop) => {\n if (prop.startsWith(\"data-\")) {\n result[prop] = props[prop];\n }\n });\n return result;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-base-component.js","sourceRoot":"","sources":["../../../../src/internal/base-component/use-base-component.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAExG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,iBAAiB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAMnD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAU,aAAqB;IACrE,YAAY,CAAC,aAAa,CAAC,CAAC;IAC5B,MAAM,UAAU,GAAG,oBAAoB,CAAI,aAAa,EAAE,eAAe,CAAC,CAAC;IAC3E,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC3C,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { initAwsUiVersions, useComponentMetadata } from \"@cloudscape-design/component-toolkit/internal\";\nimport { MutableRefObject } from \"react\";\nimport { PACKAGE_SOURCE, PACKAGE_VERSION } from \"../environment\";\nimport { useTelemetry } from \"./use-telemetry\";\n\ninitAwsUiVersions(PACKAGE_SOURCE, PACKAGE_VERSION);\n\nexport interface InternalBaseComponentProps {\n __internalRootRef?: MutableRefObject<any> | null;\n}\n\n/**\n * This hook is used for components which are exported to customers. The returned __internalRootRef needs to be\n * attached to the (internal) component's root DOM node. The hook takes care of attaching the metadata to this\n * root DOM node and emits the telemetry for this component.\n */\nexport default function useBaseComponent<T = any>(componentName: string) {\n useTelemetry(componentName);\n const elementRef = useComponentMetadata<T>(componentName, PACKAGE_VERSION);\n return { __internalRootRef: elementRef };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-telemetry.js","sourceRoot":"","sources":["../../../../src/internal/base-component/use-telemetry.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,UAAU,YAAY,CAAC,aAAqB;IAChD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAChD,mBAAmB,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;AAChH,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useComponentMetrics } from \"@cloudscape-design/component-toolkit/internal\";\nimport { PACKAGE_SOURCE, PACKAGE_VERSION, THEME } from \"../environment\";\nimport { useVisualRefresh } from \"./use-visual-refresh\";\n\nexport function useTelemetry(componentName: string) {\n const theme = useVisualRefresh() ? \"vr\" : THEME;\n useComponentMetrics(componentName, { packageSource: PACKAGE_SOURCE, packageVersion: PACKAGE_VERSION, theme });\n}\n"]}
|
|
@@ -3,3 +3,4 @@
|
|
|
3
3
|
import { useRuntimeVisualRefresh } from "@cloudscape-design/component-toolkit/internal";
|
|
4
4
|
import { ALWAYS_VISUAL_REFRESH } from "../environment";
|
|
5
5
|
export const useVisualRefresh = ALWAYS_VISUAL_REFRESH ? () => true : useRuntimeVisualRefresh;
|
|
6
|
+
//# sourceMappingURL=use-visual-refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-visual-refresh.js","sourceRoot":"","sources":["../../../../src/internal/base-component/use-visual-refresh.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useRuntimeVisualRefresh } from \"@cloudscape-design/component-toolkit/internal\";\nimport { ALWAYS_VISUAL_REFRESH } from \"../environment\";\n\nexport const useVisualRefresh = ALWAYS_VISUAL_REFRESH ? () => true : useRuntimeVisualRefresh;\n"]}
|
package/internal/breakpoints.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.js","sourceRoot":"","sources":["../../../src/internal/breakpoints.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/D,IAAI,KAAK,CAAC,eAAe,GAAG,GAAG,EAAE;YAC/B,OAAO,CAAC,CAAC;SACV;QACD,IAAI,KAAK,CAAC,eAAe,GAAG,GAAG,EAAE;YAC/B,OAAO,CAAC,CAAC;SACV;QACD,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,EAAE;YAChC,OAAO,CAAC,CAAC;SACV;QACD,OAAO,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,CAAC,EAAE,iBAAiB,CAAU,CAAC;AACpD,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContainerQuery } from \"@cloudscape-design/component-toolkit\";\n\nexport function useContainerColumns() {\n const [columns, containerQueryRef] = useContainerQuery((entry) => {\n if (entry.contentBoxWidth < 688) {\n return 1;\n }\n if (entry.contentBoxWidth < 912) {\n return 2;\n }\n if (entry.contentBoxWidth < 2100) {\n return 4;\n }\n return 6;\n }, []);\n\n return [columns ?? 0, containerQueryRef] as const;\n}\n"]}
|
package/internal/constants.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/internal/constants.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const MIN_ROW_SPAN = 2;\n\nexport const MIN_COL_SPAN = 1;\n\nexport const TRANSITION_DURATION_MS = 200;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converters.js","sourceRoot":"","sources":["../../../../src/internal/debug-tools/converters.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAKtC,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,EAAc;IACrD,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACzB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aACjD;YAED,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;gBAC/E,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACrD;SACF;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAA8B;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GridLayout } from \"../interfaces\";\nimport { GridMatrix } from \"./interfaces\";\n\nexport function toMatrix({ items, columns }: GridLayout): GridMatrix {\n const matrix: GridMatrix = [];\n\n for (const item of items) {\n for (let y = item.y; y < item.y + item.height; y++) {\n while (matrix.length <= y) {\n matrix.push([...Array(columns)].map(() => \" \"));\n }\n\n for (let x = item.x; x < item.x + item.width; x++) {\n const newValue = matrix[y][x] === \" \" ? item.id : matrix[y][x] + \"/\" + item.id;\n matrix[y][x] = newValue.split(\"/\").sort().join(\"/\");\n }\n }\n }\n\n return matrix;\n}\n\nexport function toString(input: GridLayout | GridMatrix): string {\n const matrix = Array.isArray(input) ? input : toMatrix(input);\n return matrix.map((row) => row.join(\"\\t\")).join(\"\\n\");\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../../src/internal/debug-tools/generators.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\n\nimport { Direction, GridLayout, GridLayoutItem } from \"../interfaces\";\nimport { InsertCommand, MoveCommand, ResizeCommand } from \"../layout-engine/interfaces\";\nimport { Position } from \"../utils/position\";\nimport { toMatrix } from \".\";\n\nexport type GenerateMoveType = \"any\" | \"vertical\" | \"horizontal\";\n\nexport interface GenerateGridOptions {\n width?: number;\n totalItems?: number;\n averageItemWidth?: number;\n averageItemHeight?: number;\n}\n\nexport interface GenerateGridResizeOptions {\n maxWidthIncrement?: number;\n maxWidthDecrement?: number;\n maxHeightIncrement?: number;\n maxHeightDecrement?: number;\n}\n\nexport interface GenerateGridInsertOptions {\n maxWidth?: number;\n maxHeight?: number;\n}\n\nconst LETTER_INDICES = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\nexport function generateGrid(options?: GenerateGridOptions): GridLayout {\n const width = options?.width ?? 6;\n const totalItems = options?.totalItems ?? 20;\n const averageItemWidth = options?.averageItemWidth ?? 1.44;\n const averageItemHeight = options?.averageItemHeight ?? 1.44;\n\n const allowance = {\n horizontal: Math.floor(totalItems * (averageItemWidth - 1)),\n vertical: Math.floor(totalItems * (averageItemHeight - 1)),\n };\n\n const items: GridLayoutItem[] = [...Array(totalItems)].map((_, index) => ({\n id: getGridItemId(index),\n width: 1,\n height: 1,\n y: 0,\n x: 0,\n }));\n\n let selectedAllowance: \"horizontal\" | \"vertical\" = \"horizontal\";\n while (allowance.horizontal > 0 || allowance.vertical > 0) {\n if (allowance.horizontal === 0) {\n selectedAllowance = \"vertical\";\n } else if (allowance.vertical === 0) {\n selectedAllowance = \"horizontal\";\n } else {\n selectedAllowance = selectedAllowance === \"horizontal\" ? \"vertical\" : \"horizontal\";\n }\n\n const index = getRandomIndex(items);\n\n if (selectedAllowance === \"horizontal\") {\n items[index].width = Math.min(width - items[index].x, items[index].width + 1);\n for (let i = 0; i < items[index].height; i++) {\n allowance.horizontal--;\n }\n } else {\n items[index].height++;\n for (let i = 0; i < items[index].width; i++) {\n allowance.vertical--;\n }\n }\n }\n\n const grid: string[][] = [];\n\n for (const item of items) {\n item.x = getRandomOffset(width, item.width);\n\n for (let y = 0; y < grid.length; y++) {\n for (let x = item.x; x < item.x + item.width; x++) {\n if (grid[y][x].trim()) {\n item.y = y + 1;\n break;\n }\n }\n }\n\n for (let y = item.y; y < item.y + item.height; y++) {\n while (grid.length <= y) {\n grid.push([...Array(width)].map(() => \" \"));\n }\n\n for (let x = item.x; x < item.x + item.width; x++) {\n grid[y][x] = item.id;\n }\n }\n }\n\n items.sort((a, b) => (b.y - a.y === 0 ? b.x - a.x : b.y - a.y));\n\n return { items, columns: width, rows: grid.length };\n}\n\nexport function generateMove(grid: GridLayout, type: GenerateMoveType = \"any\"): MoveCommand {\n const textGrid = toMatrix(grid);\n const moveTarget = grid.items[getRandomIndex(grid.items)];\n\n const affordance: [Direction, number][] = [];\n\n if (moveTarget.y > 0) {\n affordance.push([\"up\", moveTarget.y]);\n }\n if (moveTarget.y + moveTarget.height <= textGrid.length) {\n affordance.push([\"down\", 1 + textGrid.length - (moveTarget.y + moveTarget.height)]);\n }\n if (moveTarget.x > 0) {\n affordance.push([\"left\", moveTarget.x]);\n }\n if (moveTarget.x + moveTarget.width < textGrid[0].length) {\n affordance.push([\"right\", textGrid[0].length - (moveTarget.x + moveTarget.width)]);\n }\n\n function swap(type: \"vertical\" | \"horizontal\" | \"any\"): Position {\n const verticalAffordance = affordance.filter(([direction]) => direction === \"up\" || direction === \"down\");\n const horizontalAffordance = affordance.filter(([direction]) => direction === \"left\" || direction === \"right\");\n const chosenAffordance =\n type === \"any\" ? affordance : type === \"vertical\" ? verticalAffordance : horizontalAffordance;\n\n if (chosenAffordance.length === 0) {\n throw new Error(\"Move is not possible\");\n }\n\n const [direction, maxDistance] = chosenAffordance[getRandomIndex(chosenAffordance)];\n const distance = 1 + Math.floor(Math.random() * maxDistance);\n switch (direction) {\n case \"up\":\n return new Position({ y: moveTarget.y - distance, x: moveTarget.x });\n case \"down\":\n return new Position({ y: moveTarget.y + distance, x: moveTarget.x });\n case \"left\":\n return new Position({ y: moveTarget.y, x: moveTarget.x - distance });\n case \"right\":\n return new Position({ y: moveTarget.y, x: moveTarget.x + distance });\n }\n }\n\n function replace(): Position {\n const verticalAffordance = affordance.filter(([direction]) => direction === \"up\" || direction === \"down\");\n const horizontalAffordance = affordance.filter(([direction]) => direction === \"left\" || direction === \"right\");\n\n if (horizontalAffordance.length === 0) {\n throw new Error(\"Move is not possible\");\n }\n\n const [directionVertical, maxDistanceVertical] = verticalAffordance[getRandomIndex(verticalAffordance)];\n const distanceVertical = 1 + Math.floor(Math.random() * maxDistanceVertical);\n\n const [directionHorizontal, maxDistanceHorizontal] = horizontalAffordance[getRandomIndex(horizontalAffordance)];\n const distanceHorizontal = 1 + Math.floor(Math.random() * maxDistanceHorizontal);\n\n switch (`${directionVertical}-${directionHorizontal}`) {\n case \"top-left\":\n return new Position({\n y: moveTarget.y - distanceVertical,\n x: moveTarget.x - distanceHorizontal,\n });\n case \"top-right\":\n return new Position({\n y: moveTarget.y - distanceVertical,\n x: moveTarget.x + distanceHorizontal,\n });\n case \"bottom-left\":\n return new Position({\n y: moveTarget.y + distanceVertical,\n x: moveTarget.x - distanceHorizontal,\n });\n case \"bottom-right\":\n return new Position({\n y: moveTarget.y + distanceVertical,\n x: moveTarget.x + distanceHorizontal,\n });\n }\n\n return new Position({ y: moveTarget.y, x: moveTarget.x });\n }\n\n const position = (() => {\n let repeatCounter = 0;\n while (repeatCounter < 10) {\n try {\n repeatCounter++;\n\n switch (type) {\n case \"vertical\":\n return swap(\"vertical\");\n case \"horizontal\":\n return swap(\"horizontal\");\n case \"any\":\n return Math.random() > 0.5 ? swap(\"any\") : replace();\n }\n } catch {\n // noop\n }\n }\n\n throw new Error(\"Move is not possible\");\n })();\n\n const path = generateRandomPath(new Position({ y: moveTarget.y, x: moveTarget.x }), position);\n\n return { itemId: moveTarget.id, path };\n}\n\nexport function generateResize(grid: GridLayout, options?: GenerateGridResizeOptions): ResizeCommand {\n const maxWidthIncrement = options?.maxHeightIncrement ?? grid.columns - 1;\n const maxWidthDecrement = options?.maxHeightDecrement ?? grid.columns - 1;\n const maxHeightIncrement = options?.maxHeightIncrement ?? Math.floor((grid.items.length - 1) % 2) + 1;\n const maxHeightDecrement = options?.maxHeightDecrement ?? Math.floor((grid.items.length - 1) % 2) + 1;\n\n const resizeTarget = grid.items[getRandomIndex(grid.items)];\n\n let maxWidthDelta = getRandomDirection();\n if (maxWidthDelta === 1 && maxWidthIncrement) {\n maxWidthDelta *= maxWidthIncrement;\n } else if (maxWidthDelta === -1 && maxWidthDecrement) {\n maxWidthDelta *= maxWidthDecrement;\n } else if (maxWidthIncrement) {\n maxWidthDelta = maxWidthIncrement;\n } else {\n maxWidthDelta = -maxWidthDecrement;\n }\n if (resizeTarget.width + maxWidthDelta < 1) {\n maxWidthDelta = -(resizeTarget.width - 1);\n } else if (resizeTarget.x + resizeTarget.width + maxWidthDelta >= grid.columns) {\n maxWidthDelta = grid.columns - (resizeTarget.x + resizeTarget.width);\n }\n const widthDelta = Math.sign(maxWidthDelta) * getRandomInt(0, Math.abs(maxWidthDelta) + 1);\n\n let maxHeightDelta = getRandomDirection();\n if (maxHeightDelta === 1 && maxHeightIncrement) {\n maxHeightDelta *= maxHeightIncrement;\n } else if (maxHeightDelta === -1 && maxHeightDecrement) {\n maxHeightDelta *= maxHeightDecrement;\n } else if (maxHeightIncrement) {\n maxHeightDelta = maxHeightIncrement;\n } else {\n maxHeightDelta = -maxHeightDecrement;\n }\n if (resizeTarget.height + maxHeightDelta < 1) {\n maxHeightDelta = -(resizeTarget.height - 1);\n }\n const heightDelta = Math.sign(maxHeightDelta) * getRandomInt(0, Math.abs(maxHeightDelta) + 1);\n\n const path = generateRandomPath(\n new Position({ x: resizeTarget.x + resizeTarget.width, y: resizeTarget.y + resizeTarget.height }),\n new Position({\n x: resizeTarget.x + resizeTarget.width + widthDelta,\n y: resizeTarget.y + resizeTarget.height + heightDelta,\n })\n );\n\n return { itemId: resizeTarget.id, path };\n}\n\nexport function generateInsert(grid: GridLayout, insertId = \"X\", options?: GenerateGridInsertOptions): InsertCommand {\n const maxWidth = options?.maxWidth ?? grid.columns;\n const maxHeight = options?.maxHeight ?? Math.floor(grid.items.length / 2) + 1;\n\n const textGrid = toMatrix(grid);\n\n const y = getRandomIndex(textGrid);\n const x = getRandomIndex(textGrid[y]);\n const width = getRandomInt(1, Math.max(1, maxWidth + 1 - x));\n const height = getRandomInt(1, maxHeight + 1);\n\n return { itemId: insertId, width, height, path: [new Position({ x, y })] };\n}\n\nexport function generateRandomPath(from: Position, to: Position): Position[] {\n const path = [];\n const directions: [\"y\", \"x\"] = [\"y\", \"x\"];\n\n const last = { ...from };\n while (last.y !== to.y || last.x !== to.x) {\n let direction = directions[getRandomIndex(directions)];\n if (last.y === to.y) {\n direction = \"x\";\n }\n if (last.x === to.x) {\n direction = \"y\";\n }\n last[direction] += to[direction] > from[direction] ? 1 : -1;\n path.push({ ...last });\n }\n\n return path;\n}\n\nfunction getRandomIndex(array: readonly unknown[]): number {\n return Math.floor(Math.random() * array.length);\n}\n\nfunction getRandomOffset(gridWidth: number, itemWidth: number): number {\n return Math.floor(Math.random() * (1 + gridWidth - itemWidth));\n}\n\nfunction getRandomDirection(): number {\n return Math.random() > 0.5 ? 1 : -1;\n}\n\nfunction getRandomInt(from: number, until: number): number {\n return Math.floor(Math.random() * (until - from)) + from;\n}\n\nfunction getGridItemId(index: number): string {\n const letter = LETTER_INDICES[index % LETTER_INDICES.length];\n const letterIndex = Math.floor(index / LETTER_INDICES.length);\n return letter + (letterIndex === 0 ? \"\" : letterIndex);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/debug-tools/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Use debug tools for tests, test pages and experiments.\n *\n * Do not use them for source code.\n */\n\nexport { toMatrix, toString } from \"./converters\";\nexport { generateGrid, generateMove, generateResize, generateInsert, generateRandomPath } from \"./generators\";\nexport { fromMatrix, fromTextPath } from \"./parsers\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/internal/debug-tools/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { ItemId } from \"../interfaces\";\n\nexport type GridMatrix = ItemId[][];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../../src/internal/debug-tools/parsers.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAItC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,MAAM,cAAc,GAAG,4BAA4B,CAAC;AAEpD,MAAM,UAAU,UAAU,CAAC,MAAkB;;IAC3C,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAE3D,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;gBACpB,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1B,SAAS;iBACV;gBAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBAClB,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oBAE/C,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACzD,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE;4BAC3B,CAAC,EAAE,CAAC;4BACJ,IAAI,CAAC,KAAK,EAAE,CAAC;yBACd;6BAAM;4BACL,MAAM;yBACP;qBACF;oBAED,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACtD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;4BAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;yBACf;6BAAM;4BACL,MAAM;yBACP;qBACF;oBAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACf;aACF;SACF;KACF;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAA,MAAA,MAAM,CAAC,CAAC,CAAC,0CAAE,MAAM,mCAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACzE,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAgC;IAC7E,cAAc;IACd,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7C,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CACpH,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;KAC7D;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;KACpE;IACD,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IAE7B,0CAA0C;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;AACnH,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GridLayout } from \"../interfaces\";\nimport { GridLayoutItem, ItemId } from \"../interfaces\";\nimport { Position } from \"../utils/position\";\nimport { GridMatrix } from \"./interfaces\";\n\nconst LETTER_INDICES = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\nexport function fromMatrix(matrix: GridMatrix): GridLayout {\n const items: GridLayoutItem[] = [];\n const added = new Set<ItemId>();\n\n for (let y = 0; y < matrix.length; y++) {\n for (let x = 0; x < matrix[y].length; x++) {\n const ids = matrix[y][x].split(\"/\").map((id) => id.trim());\n\n for (const id of ids) {\n if (id.trim().length === 0) {\n continue;\n }\n\n if (!added.has(id)) {\n const item = { id, y, x, width: 1, height: 1 };\n\n for (let itemX = x + 1; itemX < matrix[y].length; itemX++) {\n if (matrix[y][itemX] === id) {\n x++;\n item.width++;\n } else {\n break;\n }\n }\n\n for (let itemY = y + 1; itemY < matrix.length; itemY++) {\n if (matrix[itemY][x] === id) {\n item.height++;\n } else {\n break;\n }\n }\n\n items.push(item);\n added.add(id);\n }\n }\n }\n }\n\n return { items, columns: matrix[0]?.length ?? 0, rows: matrix.length };\n}\n\n// Path is defined like \"A1 A2 B2 C2\" where A-C is a column index (A-based) and 1-2 is a row index (1-based).\nexport function fromTextPath(textPath: string, gridArg: GridLayout | GridMatrix) {\n // Parse path.\n const positions = textPath.split(\" \").filter(Boolean);\n const [start, ...rest] = positions.map((pos) => {\n const x = LETTER_INDICES.indexOf(pos[0]);\n const y = parseInt(pos.slice(1)) - 1;\n return { y, x };\n });\n\n // Find move target.\n const grid = Array.isArray(gridArg) ? fromMatrix(gridArg) : gridArg;\n const targets = grid.items.filter(\n (item) => item.y <= start.y && start.y < item.y + item.height && item.x <= start.x && start.x < item.x + item.width\n );\n if (targets.length === 0) {\n throw new Error(\"No move target corresponding given path.\");\n }\n if (targets.length > 1) {\n throw new Error(\"Multiple move targets corresponding given path.\");\n }\n const [moveTarget] = targets;\n\n // Adjust path to target's top-left point.\n const yOffset = start.y - moveTarget.y;\n const xOffset = start.x - moveTarget.x;\n return { itemId: moveTarget.id, path: rest.map(({ y, x }) => new Position({ y: y - yOffset, x: x - xOffset })) };\n}\n"]}
|