@cloudscape-design/board-components 3.0.52 → 3.0.54

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.
Files changed (144) hide show
  1. package/board/index.js +1 -0
  2. package/board/index.js.map +1 -0
  3. package/board/interfaces.js +1 -0
  4. package/board/interfaces.js.map +1 -0
  5. package/board/internal.js +1 -0
  6. package/board/internal.js.map +1 -0
  7. package/board/placeholder.js +1 -0
  8. package/board/placeholder.js.map +1 -0
  9. package/board/transition.js +1 -0
  10. package/board/transition.js.map +1 -0
  11. package/board/utils/announcements.js +1 -0
  12. package/board/utils/announcements.js.map +1 -0
  13. package/board/utils/create-transforms.js +1 -0
  14. package/board/utils/create-transforms.js.map +1 -0
  15. package/board/utils/events.js +1 -0
  16. package/board/utils/events.js.map +1 -0
  17. package/board/utils/get-hovered-rect.js +1 -0
  18. package/board/utils/get-hovered-rect.js.map +1 -0
  19. package/board/utils/layout.js +1 -0
  20. package/board/utils/layout.js.map +1 -0
  21. package/board/utils/path.js +1 -0
  22. package/board/utils/path.js.map +1 -0
  23. package/board-item/header.js +1 -0
  24. package/board-item/header.js.map +1 -0
  25. package/board-item/index.js +4 -1
  26. package/board-item/index.js.map +1 -0
  27. package/board-item/interfaces.js +1 -0
  28. package/board-item/interfaces.js.map +1 -0
  29. package/board-item/internal.js +1 -0
  30. package/board-item/internal.js.map +1 -0
  31. package/index.js +1 -0
  32. package/index.js.map +1 -0
  33. package/internal/base-component/get-data-attributes.js +1 -0
  34. package/internal/base-component/get-data-attributes.js.map +1 -0
  35. package/internal/base-component/use-base-component.d.ts +2 -1
  36. package/internal/base-component/use-base-component.js +4 -3
  37. package/internal/base-component/use-base-component.js.map +1 -0
  38. package/internal/base-component/use-telemetry.d.ts +2 -1
  39. package/internal/base-component/use-telemetry.js +3 -2
  40. package/internal/base-component/use-telemetry.js.map +1 -0
  41. package/internal/base-component/use-visual-refresh.js +1 -0
  42. package/internal/base-component/use-visual-refresh.js.map +1 -0
  43. package/internal/breakpoints.js +1 -0
  44. package/internal/breakpoints.js.map +1 -0
  45. package/internal/constants.js +1 -0
  46. package/internal/constants.js.map +1 -0
  47. package/internal/debug-tools/converters.js +1 -0
  48. package/internal/debug-tools/converters.js.map +1 -0
  49. package/internal/debug-tools/generators.js +1 -0
  50. package/internal/debug-tools/generators.js.map +1 -0
  51. package/internal/debug-tools/index.js +1 -0
  52. package/internal/debug-tools/index.js.map +1 -0
  53. package/internal/debug-tools/interfaces.js +1 -0
  54. package/internal/debug-tools/interfaces.js.map +1 -0
  55. package/internal/debug-tools/parsers.js +1 -0
  56. package/internal/debug-tools/parsers.js.map +1 -0
  57. package/internal/dnd-controller/__mocks__/controller.js +1 -0
  58. package/internal/dnd-controller/__mocks__/controller.js.map +1 -0
  59. package/internal/dnd-controller/controller.js +1 -0
  60. package/internal/dnd-controller/controller.js.map +1 -0
  61. package/internal/dnd-controller/event-emitter.js +1 -0
  62. package/internal/dnd-controller/event-emitter.js.map +1 -0
  63. package/internal/dnd-controller/get-hovered-droppables.js +1 -0
  64. package/internal/dnd-controller/get-hovered-droppables.js.map +1 -0
  65. package/internal/drag-handle/index.js +1 -0
  66. package/internal/drag-handle/index.js.map +1 -0
  67. package/internal/environment.js +1 -1
  68. package/internal/environment.json +1 -1
  69. package/internal/global-drag-state-styles/index.js +1 -0
  70. package/internal/global-drag-state-styles/index.js.map +1 -0
  71. package/internal/grid/grid.js +1 -0
  72. package/internal/grid/grid.js.map +1 -0
  73. package/internal/grid/index.js +1 -0
  74. package/internal/grid/index.js.map +1 -0
  75. package/internal/grid/interfaces.js +1 -0
  76. package/internal/grid/interfaces.js.map +1 -0
  77. package/internal/grid/item.js +1 -0
  78. package/internal/grid/item.js.map +1 -0
  79. package/internal/handle/index.js +1 -0
  80. package/internal/handle/index.js.map +1 -0
  81. package/internal/interfaces.js +1 -0
  82. package/internal/interfaces.js.map +1 -0
  83. package/internal/item-container/get-collision-rect.js +1 -0
  84. package/internal/item-container/get-collision-rect.js.map +1 -0
  85. package/internal/item-container/get-next-droppable.js +1 -0
  86. package/internal/item-container/get-next-droppable.js.map +1 -0
  87. package/internal/item-container/index.js +1 -0
  88. package/internal/item-container/index.js.map +1 -0
  89. package/internal/layout-engine/engine-cache.js +1 -0
  90. package/internal/layout-engine/engine-cache.js.map +1 -0
  91. package/internal/layout-engine/engine-solution.js +1 -0
  92. package/internal/layout-engine/engine-solution.js.map +1 -0
  93. package/internal/layout-engine/engine-state.js +1 -0
  94. package/internal/layout-engine/engine-state.js.map +1 -0
  95. package/internal/layout-engine/engine-step.js +1 -0
  96. package/internal/layout-engine/engine-step.js.map +1 -0
  97. package/internal/layout-engine/engine.js +1 -0
  98. package/internal/layout-engine/engine.js.map +1 -0
  99. package/internal/layout-engine/grid.js +1 -0
  100. package/internal/layout-engine/grid.js.map +1 -0
  101. package/internal/layout-engine/interfaces.js +1 -0
  102. package/internal/layout-engine/interfaces.js.map +1 -0
  103. package/internal/layout-engine/utils.js +1 -0
  104. package/internal/layout-engine/utils.js.map +1 -0
  105. package/internal/live-region/index.js +1 -0
  106. package/internal/live-region/index.js.map +1 -0
  107. package/internal/manifest.json +1 -1
  108. package/internal/resize-handle/index.js +1 -0
  109. package/internal/resize-handle/index.js.map +1 -0
  110. package/internal/screenreader-grid-navigation/index.js +1 -0
  111. package/internal/screenreader-grid-navigation/index.js.map +1 -0
  112. package/internal/screenreader-only/index.js +1 -0
  113. package/internal/screenreader-only/index.js.map +1 -0
  114. package/internal/utils/apply-display-name.js +1 -0
  115. package/internal/utils/apply-display-name.js.map +1 -0
  116. package/internal/utils/coordinates.js +1 -0
  117. package/internal/utils/coordinates.js.map +1 -0
  118. package/internal/utils/events.js +1 -0
  119. package/internal/utils/events.js.map +1 -0
  120. package/internal/utils/layout.js +1 -0
  121. package/internal/utils/layout.js.map +1 -0
  122. package/internal/utils/position.js +1 -0
  123. package/internal/utils/position.js.map +1 -0
  124. package/internal/utils/rects.js +1 -0
  125. package/internal/utils/rects.js.map +1 -0
  126. package/internal/utils/screen.js +1 -0
  127. package/internal/utils/screen.js.map +1 -0
  128. package/internal/utils/throttle.js +1 -0
  129. package/internal/utils/throttle.js.map +1 -0
  130. package/internal/utils/use-auto-scroll.js +1 -0
  131. package/internal/utils/use-auto-scroll.js.map +1 -0
  132. package/internal/utils/use-last-interaction.js +1 -0
  133. package/internal/utils/use-last-interaction.js.map +1 -0
  134. package/internal/utils/use-merge-refs.js +1 -0
  135. package/internal/utils/use-merge-refs.js.map +1 -0
  136. package/internal/utils/zip-arrays.js +1 -0
  137. package/internal/utils/zip-arrays.js.map +1 -0
  138. package/items-palette/index.js +1 -0
  139. package/items-palette/index.js.map +1 -0
  140. package/items-palette/interfaces.js +1 -0
  141. package/items-palette/interfaces.js.map +1 -0
  142. package/items-palette/internal.js +1 -0
  143. package/items-palette/internal.js.map +1 -0
  144. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/internal/layout-engine/utils.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, GridLayoutItem } from \"../interfaces\";\nimport { Position } from \"../utils/position\";\nimport { CommittedMove } from \"./interfaces\";\n\nexport interface Rect {\n left: number;\n right: number;\n top: number;\n bottom: number;\n}\n\nexport function sortGridItems(items: GridLayoutItem[]): readonly GridLayoutItem[] {\n return items.sort((a, b) => (b.y - a.y === 0 ? b.x - a.x : b.y - a.y));\n}\n\nexport function normalizeMovePath(origin: Position, path: readonly Position[]): readonly Position[] {\n path = normalizePathOrigin(origin, path);\n\n // Store last visited indexes per position.\n const positionToLastIndex = new Map<string, number>();\n for (let index = 0; index < path.length; index++) {\n positionToLastIndex.set(`${path[index].x}:${path[index].y}`, index);\n }\n\n // Compose path from last visited indices only.\n const normalizedPath: Position[] = [];\n let index = 0;\n while (index < path.length) {\n const lastVisitedIndex = positionToLastIndex.get(`${path[index].x}:${path[index].y}`)!;\n normalizedPath.push(path[lastVisitedIndex]);\n index = lastVisitedIndex + 1;\n }\n\n return normalizePathSteps(origin, normalizedPath);\n}\n\nexport function normalizeResizePath(origin: Position, path: readonly Position[]): readonly Position[] {\n path = normalizePathOrigin(origin, path);\n\n if (path.length === 0) {\n return [];\n }\n\n const normalizedPath: Position[] = [path[path.length - 1]];\n for (let stepIndex = path.length - 2; stepIndex >= 0; stepIndex--) {\n const prev = normalizedPath[normalizedPath.length - 1];\n const current = path[stepIndex];\n if (current.x < prev.x || current.y < prev.y) {\n normalizedPath.push(current);\n }\n }\n normalizedPath.reverse();\n\n return normalizePathSteps(origin, normalizedPath);\n}\n\nexport function createMove(\n type: CommittedMove[\"type\"],\n item: GridLayoutItem,\n next: Position,\n score = 0\n): CommittedMove {\n const distanceX = type === \"RESIZE\" ? next.x - item.width : next.x - item.x;\n const distanceY = type === \"RESIZE\" ? next.y - item.height : next.y - item.y;\n return {\n type,\n itemId: item.id,\n x: type !== \"RESIZE\" ? next.x : item.x,\n y: type !== \"RESIZE\" ? next.y : item.y,\n width: type === \"RESIZE\" ? next.x : item.width,\n height: type === \"RESIZE\" ? next.y : item.height,\n direction: distanceX > 0 ? \"right\" : distanceX < 0 ? \"left\" : distanceY < 0 ? \"up\" : \"down\",\n distanceX,\n distanceY,\n score,\n };\n}\n\nexport function getMoveOriginalRect(move: CommittedMove): Rect {\n return {\n left: move.x - move.distanceX,\n right: move.x - move.distanceX + move.width - 1,\n top: move.y - move.distanceY,\n bottom: move.y - move.distanceY + move.height - 1,\n };\n}\n\nexport function getMoveRect(move: CommittedMove): Rect {\n return {\n left: move.x,\n right: move.x + move.width - 1,\n top: move.y,\n bottom: move.y + move.height - 1,\n };\n}\n\nexport function checkItemsIntersection(i1: GridLayoutItem, i2: GridLayoutItem): boolean {\n if (i1.id === i2.id) {\n return false;\n }\n return (\n i1.x <= i2.x + i2.width - 1 &&\n i2.x <= i1.x + i1.width - 1 &&\n i1.y <= i2.y + i2.height - 1 &&\n i2.y <= i1.y + i1.height - 1\n );\n}\n\nexport function checkOppositeDirections(d1: Direction, d2: Direction): boolean {\n return (\n (d1 === \"down\" && d2 === \"up\") ||\n (d1 === \"up\" && d2 === \"down\") ||\n (d1 === \"left\" && d2 === \"right\") ||\n (d1 === \"right\" && d2 === \"left\")\n );\n}\n\n// Removes path prefixes that return to the original location.\nfunction normalizePathOrigin(origin: Position, path: readonly Position[]): readonly Position[] {\n let lastOriginIndex = -1;\n for (let i = 0; i < path.length; i++) {\n if (path[i].x === origin.x && path[i].y === origin.y) {\n lastOriginIndex = i;\n }\n }\n return path.slice(lastOriginIndex + 1);\n}\n\n// Ensures path only includes single-length steps.\nfunction normalizePathSteps(origin: Position, path: readonly Position[]): readonly Position[] {\n const normalizedPath: Position[] = [];\n\n let prevX = origin.x;\n let prevY = origin.y;\n\n for (const step of path) {\n const vx = Math.sign(step.x - prevX);\n const vy = Math.sign(step.y - prevY);\n\n for (let x = prevX, y = prevY; x !== step.x || y !== step.y; ) {\n if (x !== step.x) {\n x += vx;\n } else {\n y += vy;\n }\n normalizedPath.push(new Position({ x, y }));\n }\n\n prevX = step.x;\n prevY = step.y;\n }\n\n return normalizedPath;\n}\n"]}
@@ -83,3 +83,4 @@ function LiveRegion({ assertive = false, delay = 10, visible = false, children,
83
83
  function extractInnerText(node) {
84
84
  return (node.innerText || "").replace(/\s+/g, " ").trim();
85
85
  }
86
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/live-region/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,gBAA2C,MAAM,sBAAsB,CAAC;AAW/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAe,IAAI,CAAC,UAAU,CAAC,CAAC;AAEhC,SAAS,UAAU,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAmB;IAC7G,MAAM,SAAS,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAEhD;;;;;;;;MAQE;IACF,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,gBAAgB;YACvB,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE;gBAC1C,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC1D,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAI,aAAa,KAAK,aAAa,EAAE;oBACnC,gEAAgE;oBAChE,2DAA2D;oBAC3D,sDAAsD;oBACtD,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;iBAC7C;aACF;QACH,CAAC;QAED,IAAI,SAA+C,CAAC;QACpD,IAAI,KAAK,EAAE;YACT,SAAS,GAAG,UAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;SACjD;aAAM;YACL,gBAAgB,EAAE,CAAC;SACpB;QAED,OAAO,GAAG,EAAE;YACV,IAAI,SAAS,EAAE;gBACb,YAAY,CAAC,SAAS,CAAC,CAAC;aACzB;QACH,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,8BACG,OAAO,IAAI,eAAM,GAAG,EAAE,SAAS,YAAG,QAAQ,GAAQ,EAEnD,MAAC,gBAAgB,OAAK,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,aAC5D,CAAC,OAAO,IAAI,CACX,eAAM,GAAG,EAAE,SAAS,iBAAc,MAAM,YACrC,QAAQ,GACJ,CACR,EAED,eAAM,GAAG,EAAE,SAAS,iBAAc,MAAM,eAAY,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,GAAS,IAC9E,IAClB,CACJ,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,oGAAoG;AACpG,0FAA0F;AAC1F,SAAS,gBAAgB,CAAC,IAAiB;IACzC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { memo, useEffect, useRef } from \"react\";\nimport ScreenreaderOnly, { ScreenreaderOnlyProps } from \"../screenreader-only\";\n\n// The code is copied from https://github.com/cloudscape-design/components/blob/main/src/internal/components/live-region/index.tsx\n\nexport interface LiveRegionProps extends ScreenreaderOnlyProps {\n assertive?: boolean;\n delay?: number;\n visible?: boolean;\n children: React.ReactNode;\n}\n\n/**\n * The live region is hidden in the layout, but visible for screen readers.\n * It's purpose it to announce changes e.g. when custom navigation logic is used.\n *\n * The way live region works differently in different browsers and screen readers and\n * it is recommended to manually test every new implementation.\n *\n * If you notice there are different words being merged together,\n * check if there are text nodes not being wrapped in elements, like:\n * <LiveRegion>\n * {title}\n * <span><Details /></span>\n * </LiveRegion>\n *\n * To fix, wrap \"title\" in an element:\n * <LiveRegion>\n * <span>{title}</span>\n * <span><Details /></span>\n * </LiveRegion>\n *\n * Or create a single text node if possible:\n * <LiveRegion>\n * {`${title} ${details}`}\n * </LiveRegion>\n *\n * The live region is always atomic, because non-atomic regions can be treated by screen readers\n * differently and produce unexpected results. To imitate non-atomic announcements simply use\n * multiple live regions:\n * <>\n * <LiveRegion>{title}</LiveRegion>\n * <LiveRegion><Details /></LiveRegion>\n * </>\n */\nexport default memo(LiveRegion);\n\nfunction LiveRegion({ assertive = false, delay = 10, visible = false, children, ...restProps }: LiveRegionProps) {\n const sourceRef = useRef<HTMLSpanElement>(null);\n const targetRef = useRef<HTMLSpanElement>(null);\n\n /*\n When React state changes, React often produces too many DOM updates, causing NVDA to\n issue many announcements for the same logical event (See https://github.com/nvaccess/nvda/issues/7996).\n The code below imitates a debouncing, scheduling a callback every time new React state\n update is detected. When a callback resolves, it copies content from a muted element\n to the live region, which is recognized by screen readers as an update.\n If the use case requires no announcement to be ignored, use delay = 0, but ensure it\n does not impact the performance. If it does, prefer using a string as children prop.\n */\n useEffect(() => {\n function updateLiveRegion() {\n if (targetRef.current && sourceRef.current) {\n const sourceContent = extractInnerText(sourceRef.current);\n const targetContent = extractInnerText(targetRef.current);\n if (targetContent !== sourceContent) {\n // The aria-atomic does not work properly in Voice Over, causing\n // certain parts of the content to be ignored. To fix that,\n // we assign the source text content as a single node.\n targetRef.current.innerText = sourceContent;\n }\n }\n }\n\n let timeoutId: null | ReturnType<typeof setTimeout>;\n if (delay) {\n timeoutId = setTimeout(updateLiveRegion, delay);\n } else {\n updateLiveRegion();\n }\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n });\n\n return (\n <>\n {visible && <span ref={sourceRef}>{children}</span>}\n\n <ScreenreaderOnly {...restProps} className={restProps.className}>\n {!visible && (\n <span ref={sourceRef} aria-hidden=\"true\">\n {children}\n </span>\n )}\n\n <span ref={targetRef} aria-atomic=\"true\" aria-live={assertive ? \"assertive\" : \"polite\"}></span>\n </ScreenreaderOnly>\n </>\n );\n}\n\n// This only extracts text content from the node including all its children which is enough for now.\n// To make it more powerful, it is possible to create a more sophisticated extractor with respect to\n// ARIA properties to ignore aria-hidden nodes and read ARIA labels from the live content.\nfunction extractInnerText(node: HTMLElement) {\n return (node.innerText || \"\").replace(/\\s+/g, \" \").trim();\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "d5dd6dcc1629ae93134d934bf8ba648fb4b2d594"
2
+ "commit": "61525529ce60b79fcbf4328e87f15e3fc01f394d"
3
3
  }
@@ -8,3 +8,4 @@ import styles from "./styles.css.js";
8
8
  export default function ResizeHandle({ ariaLabelledBy, ariaDescribedBy, onPointerDown, onKeyDown, isActive, }) {
9
9
  return (_jsx(Handle, { className: clsx(styles.handle, isActive && styles.active), "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, onPointerDown: onPointerDown, onKeyDown: onKeyDown, children: _jsx(Icon, { name: "resize-area" }) }));
10
10
  }
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/resize-handle/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,oCAAoC,CAAC;AACtD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAUrC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,cAAc,EACd,eAAe,EACf,aAAa,EACb,SAAS,EACT,QAAQ,GACU;IAClB,OAAO,CACL,KAAC,MAAM,IACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,qBACxC,cAAc,sBACb,eAAe,EACjC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,YAEpB,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,GAAG,GACpB,CACV,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport Icon from \"@cloudscape-design/components/icon\";\nimport clsx from \"clsx\";\nimport { KeyboardEvent, PointerEvent } from \"react\";\nimport Handle from \"../handle\";\nimport styles from \"./styles.css.js\";\n\nexport interface ResizeHandleProps {\n ariaLabelledBy: string;\n ariaDescribedBy: string;\n onPointerDown: (event: PointerEvent) => void;\n onKeyDown: (event: KeyboardEvent) => void;\n isActive: boolean;\n}\n\nexport default function ResizeHandle({\n ariaLabelledBy,\n ariaDescribedBy,\n onPointerDown,\n onKeyDown,\n isActive,\n}: ResizeHandleProps) {\n return (\n <Handle\n className={clsx(styles.handle, isActive && styles.active)}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n >\n <Icon name=\"resize-area\" />\n </Handle>\n );\n}\n"]}
@@ -40,3 +40,4 @@ export function ScreenReaderGridNavigation({ items, itemsLayout, ariaLabel, aria
40
40
  }
41
41
  return (_jsxs("div", { role: "navigation", "aria-labelledby": tableId, "aria-describedby": ariaDescription ? navigationDescriptionId : undefined, className: className, children: [_jsx("table", { id: tableId, role: "grid", "aria-label": ariaLabel, "aria-describedby": ariaDescription ? navigationDescriptionId : undefined, children: _jsx("tbody", { children: layout.map((row, rowIndex) => (_jsx("tr", { role: "row", children: row.map((itemId, cellIndex) => (_jsx("td", { role: "gridcell", children: itemId ? (_jsx("button", { tabIndex: -1, onClick: () => itemId && onActivateItem(itemId), onFocus: () => setIsNavigationFocused(true), onBlur: () => setIsNavigationFocused(false), children: itemAriaLabel(getItem(itemId)) })) : (itemAriaLabel(getItem(itemId))) }, cellIndex))) }, rowIndex))) }) }), ariaDescription && _jsx(ScreenreaderOnly, { id: navigationDescriptionId, children: ariaDescription })] }));
42
42
  }
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/screenreader-grid-navigation/index.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\n\nimport { useId, useMemo, useState } from \"react\";\nimport { GridLayout, ItemId } from \"../interfaces\";\nimport ScreenreaderOnly from \"../screenreader-only\";\n\nimport styles from \"./styles.css.js\";\n\nexport interface ScreenReaderGridNavigationProps<Item> {\n items: readonly Item[];\n itemsLayout: GridLayout;\n ariaLabel: string;\n ariaDescription?: string;\n itemAriaLabel: (item: null | Item) => string;\n onActivateItem: (itemId: ItemId) => void;\n}\n\n/**\n * The component provides a native screen-reader grid navigation for board items.\n * A separate navigation component is used because the navigation requires a table or table-like\n * DOM structure while the board uses CSS grid.\n *\n * The screen-reader navigation component is hidden and don't have a tab stop, however, it can be focused\n * programmatically or with a screen-reader. When focused with a screen-reader the component becomes visible\n * so that it can be clicked (e.g. the VO can imitate clicks on the elements under VO cursor with VO+Space).\n */\nexport function ScreenReaderGridNavigation<Item extends { id: string }>({\n items,\n itemsLayout,\n ariaLabel,\n ariaDescription,\n itemAriaLabel,\n onActivateItem,\n}: ScreenReaderGridNavigationProps<Item>) {\n const [isNavigationFocused, setIsNavigationFocused] = useState(false);\n const className = isNavigationFocused\n ? styles[\"screen-reader-navigation-visible\"]\n : styles[\"screen-reader-navigation-hidden\"];\n\n const tableId = useId();\n const navigationDescriptionId = useId();\n\n const getItem = useMemo(() => {\n const itemById = new Map(items.map((it) => [it.id, it]));\n return (id: null | ItemId) => (id ? itemById.get(id) ?? null : null);\n }, [items]);\n\n const layout: (null | ItemId)[][] = [];\n\n function makeNewRow() {\n layout.push([...Array(itemsLayout.columns)].map(() => null));\n }\n\n for (const item of itemsLayout.items) {\n for (let y = item.y; y < item.y + item.height; y++) {\n while (layout.length <= y) {\n makeNewRow();\n }\n for (let x = item.x; x < item.x + item.width; x++) {\n layout[y][x] = item.id;\n }\n }\n }\n\n return (\n <div\n role=\"navigation\"\n aria-labelledby={tableId}\n aria-describedby={ariaDescription ? navigationDescriptionId : undefined}\n className={className}\n >\n <table\n id={tableId}\n role=\"grid\"\n aria-label={ariaLabel}\n aria-describedby={ariaDescription ? navigationDescriptionId : undefined}\n >\n <tbody>\n {layout.map((row, rowIndex) => (\n <tr role=\"row\" key={rowIndex}>\n {row.map((itemId, cellIndex) => (\n <td role=\"gridcell\" key={cellIndex}>\n {itemId ? (\n <button\n tabIndex={-1}\n onClick={() => itemId && onActivateItem(itemId)}\n onFocus={() => setIsNavigationFocused(true)}\n onBlur={() => setIsNavigationFocused(false)}\n >\n {itemAriaLabel(getItem(itemId))}\n </button>\n ) : (\n itemAriaLabel(getItem(itemId))\n )}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n\n {ariaDescription && <ScreenreaderOnly id={navigationDescriptionId}>{ariaDescription}</ScreenreaderOnly>}\n </div>\n );\n}\n"]}
@@ -21,3 +21,4 @@ import styles from "./styles.css.js";
21
21
  export default function ScreenreaderOnly(props) {
22
22
  return _jsx("span", { ...props, className: clsx(styles.root, props.className) });
23
23
  }
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/screenreader-only/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,wIAAwI;AAExI,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAQrC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAA4B;IACnE,OAAO,kBAAU,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,GAAI,CAAC;AAC5E,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// The code is copied from https://github.com/cloudscape-design/components/blob/main/src/internal/components/screenreader-only/index.tsx\n\nimport clsx from \"clsx\";\nimport styles from \"./styles.css.js\";\n\nexport interface ScreenreaderOnlyProps {\n id?: string;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * Makes content now shown on a screen but still announced by screen-reader users.\n * The component is suitable when the aria-label cannot be used, e.g. to avoid elements being announced as \"blank\".\n *\n * To exclude screenreader-only content use `:not(.${screenreaderOnlyStyles.root})` selector, for example:\n *\n * ```\n * import screenreaderOnlyStyles from '~internal/components/screenreader-only/styles.css.js'\n *\n * let visibleContent = wrapper.find(`${styles.label}`).find(`:not(.${screenreaderOnlyStyles.root})`).getElement().textContent\n *\n * let screenreaderContent = wrapper.find(`${styles.label}`).find(`.${screenreaderOnlyStyles.root}`).getElement().textContent\n * ```\n */\nexport default function ScreenreaderOnly(props: ScreenreaderOnlyProps) {\n return <span {...props} className={clsx(styles.root, props.className)} />;\n}\n"]}
@@ -3,3 +3,4 @@
3
3
  export function applyDisplayName(component, displayName) {
4
4
  component.displayName = displayName;
5
5
  }
6
+ //# sourceMappingURL=apply-display-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-display-name.js","sourceRoot":"","sources":["../../../../src/internal/utils/apply-display-name.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,MAAM,UAAU,gBAAgB,CAAI,SAAY,EAAE,WAAmB;IAClE,SAAiB,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/C,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function applyDisplayName<T>(component: T, displayName: string): void {\n (component as any).displayName = displayName;\n}\n"]}
@@ -18,3 +18,4 @@ export class Coordinates {
18
18
  this.y = y;
19
19
  }
20
20
  }
21
+ //# sourceMappingURL=coordinates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinates.js","sourceRoot":"","sources":["../../../../src/internal/utils/coordinates.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAItC,MAAM,OAAO,WAAW;IAOtB,MAAM,CAAC,SAAS,CAAC,KAAgD;QAC/D,OAAO,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAoB,EAAE,KAAkB;QAC1D,OAAO,IAAI,WAAW,CAAC;YACrB,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1D,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,YAAY,EAAE,CAAC,EAAE,CAAC,EAA4B;QAjBrC,WAAM,GAAG,aAAa,CAAC;QAGvB,YAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACzB,YAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAchC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;CACF","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PointerEvent as ReactPointerEvent } from \"react\";\n\nexport class Coordinates {\n readonly __type = \"Coordinates\";\n readonly x: number;\n readonly y: number;\n readonly scrollX = window.scrollX;\n readonly scrollY = window.scrollY;\n\n static fromEvent(event: PointerEvent | ReactPointerEvent<unknown>): Coordinates {\n return new Coordinates({ x: event.clientX, y: event.clientY });\n }\n\n static cursorOffset(current: Coordinates, start: Coordinates): Coordinates {\n return new Coordinates({\n x: current.x - start.x + (current.scrollX - start.scrollX),\n y: current.y - start.y + (current.scrollY - start.scrollY),\n });\n }\n\n constructor({ x, y }: { x: number; y: number }) {\n this.x = x;\n this.y = y;\n }\n}\n"]}
@@ -16,3 +16,4 @@ class CustomEventStub {
16
16
  export function createCustomEvent(detail) {
17
17
  return new CustomEventStub(detail);
18
18
  }
19
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/internal/utils/events.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAKtC,MAAM,eAAe;IAGnB,YAAmB,SAAmB,IAAI;QAAvB,WAAM,GAAN,MAAM,CAAiB;QAF1C,qBAAgB,GAAG,KAAK,CAAC;QACzB,iBAAY,GAAG,KAAK,CAAC;IACwB,CAAC;IAE9C,cAAc;QACZ,OAAO;IACT,CAAC;IAED,eAAe;QACb,OAAO;IACT,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAS,MAAc;IACtD,OAAO,IAAI,eAAe,CAAC,MAAM,CAAwB,CAAC;AAC5D,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// our events are not cancelable even though `CustomEvent` may seem to allow this\nexport type NonCancelableEventHandler<Detail> = (event: CustomEvent<Detail>) => void;\n\nclass CustomEventStub<T> {\n defaultPrevented = false;\n cancelBubble = false;\n constructor(public detail: T | null = null) {}\n\n preventDefault() {\n // noop\n }\n\n stopPropagation() {\n // noop\n }\n}\n\nexport function createCustomEvent<Detail>(detail: Detail): CustomEvent<Detail> {\n return new CustomEventStub(detail) as CustomEvent<Detail>;\n}\n"]}
@@ -124,3 +124,4 @@ function itemComparator(a, b) {
124
124
  }
125
125
  return a.x > b.x ? 1 : -1;
126
126
  }
127
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../src/internal/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 { MIN_COL_SPAN, MIN_ROW_SPAN } from \"../constants\";\nimport { BoardItemDefinition, GridLayout, GridLayoutItem, ItemId } from \"../interfaces\";\n\ntype Item<D = unknown> = BoardItemDefinition<D>;\n\n/**\n * The function produces grid layout from board items and given number of columns.\n * The positional data is taken from the items when available or the default placement is used otherwise.\n */\nexport function interpretItems(items: readonly Item[], columns: number): GridLayout {\n const layoutItems: GridLayoutItem[] = [];\n const columnHeights = Array(columns).fill(0);\n\n function getColumnSpan(item: Item): number {\n const minColumnSpan = getMinColumnSpan(item, columns);\n const columnSpan = item.columnSpan ?? getDefaultColumnSpan(item, columns);\n return Math.min(columns, Math.max(minColumnSpan, columnSpan));\n }\n\n function getRowSpan(item: Item): number {\n const minRowSpan = getMinRowSpan(item);\n const rowSpan = item.rowSpan ?? getDefaultRowSpan(item);\n return Math.max(minRowSpan, rowSpan);\n }\n\n function getColumnOffset(item: Item, currentOffset: number): number {\n const columnSpan = getColumnSpan(item);\n const rowSpan = getRowSpan(item);\n const columnOffset = item.columnOffset?.[columns] ?? findOptimalColumnOffset(currentOffset, columnSpan, rowSpan);\n return columnOffset + columnSpan <= columns ? columnOffset : 0;\n }\n\n function findOptimalColumnOffset(currentColumnOffset: number, columnSpan: number, rowSpan: number): number {\n for (let colOffset = currentColumnOffset; colOffset + columnSpan <= columns; colOffset++) {\n if (getRowOffset(colOffset, columnSpan) + rowSpan <= getRowOffset(0, columns)) {\n return colOffset;\n }\n }\n for (let colOffset = 0; colOffset + columnSpan <= columns; colOffset++) {\n if (getRowOffset(colOffset, columnSpan) + rowSpan <= getRowOffset(0, columns)) {\n return colOffset;\n }\n }\n return currentColumnOffset;\n }\n\n function getRowOffset(columnOffset: number, columnSpan: number) {\n let rowOffset = 0;\n for (let col = columnOffset; col < columnOffset + columnSpan; col++) {\n rowOffset = Math.max(rowOffset, columnHeights[col]);\n }\n return rowOffset;\n }\n\n for (let index = 0, columnOffset = 0, rowOffset = 0; index < items.length; index++, rowOffset = 0) {\n const columnSpan = getColumnSpan(items[index]);\n const rowSpan = getRowSpan(items[index]);\n columnOffset = getColumnOffset(items[index], columnOffset);\n rowOffset = getRowOffset(columnOffset, columnSpan);\n\n layoutItems.push({ id: items[index].id, width: columnSpan, height: rowSpan, x: columnOffset, y: rowOffset });\n\n for (let col = columnOffset; col < columnOffset + columnSpan; col++) {\n columnHeights[col] = rowOffset + rowSpan;\n }\n\n columnOffset += columnSpan;\n }\n\n layoutItems.sort(itemComparator);\n\n return { items: layoutItems, columns, rows: getRowOffset(0, columns) };\n}\n\n/**\n * The function produces new items from the current state and updated grid layout.\n * The positional data for the given number of columns is preserved as is while the other layouts are partially invalidated.\n */\nexport function transformItems<D>(\n sourceItems: readonly BoardItemDefinition<D>[],\n gridLayout: GridLayout,\n resizeTarget: null | ItemId\n): readonly BoardItemDefinition<D>[] {\n const itemById = new Map(sourceItems.map((item) => [item.id, item]));\n const getItem = (itemId: ItemId) => {\n const item = itemById.get(itemId);\n if (!item) {\n throw new Error(\"Invariant violation: no matching source item found.\");\n }\n return item;\n };\n\n const sortedLayout = gridLayout.items.slice().sort(itemComparator);\n\n const items: BoardItemDefinition<D>[] = [];\n\n let changeFromIndex = sortedLayout.findIndex(({ id }, index) => id !== sourceItems[index].id || id === resizeTarget);\n changeFromIndex = changeFromIndex !== -1 ? changeFromIndex : sortedLayout.length;\n\n for (let index = 0; index < sortedLayout.length; index++) {\n const { id, x, width, height } = sortedLayout[index];\n\n const item = { ...getItem(id) };\n\n if (index >= changeFromIndex) {\n item.columnOffset = undefined;\n }\n item.columnOffset = { ...item.columnOffset, [gridLayout.columns]: x };\n\n if (item.id === resizeTarget) {\n item.columnSpan = width;\n item.rowSpan = height;\n }\n\n items.push(item);\n }\n\n return items;\n}\n\nexport function createPlaceholdersLayout(rows: number, columns: number): GridLayout {\n const layoutItems: GridLayoutItem[] = [];\n\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < columns; col++) {\n layoutItems.push({ id: `awsui-placeholder-${row}-${col}`, x: col, y: row, width: 1, height: 1 });\n }\n }\n\n return { items: layoutItems, columns, rows };\n}\n\nexport function getMinColumnSpan(item: Item, columns: number) {\n return Math.min(columns, Math.max(MIN_COL_SPAN, item.definition?.minColumnSpan ?? 0));\n}\n\nexport function getDefaultColumnSpan(item: Item, columns: number) {\n return Math.min(columns, Math.max(getMinColumnSpan(item, columns), item.definition?.defaultColumnSpan ?? 0));\n}\n\nexport function getMinRowSpan(item: Item) {\n return Math.max(MIN_ROW_SPAN, item.definition?.minRowSpan ?? 0);\n}\n\nexport function getDefaultRowSpan(item: Item) {\n return Math.max(getMinRowSpan(item), item.definition?.defaultRowSpan ?? 0);\n}\n\nfunction itemComparator(a: GridLayoutItem, b: GridLayoutItem) {\n if (a.y !== b.y) {\n return a.y > b.y ? 1 : -1;\n }\n return a.x > b.x ? 1 : -1;\n}\n"]}
@@ -7,3 +7,4 @@ export class Position {
7
7
  this.y = y;
8
8
  }
9
9
  }
10
+ //# sourceMappingURL=position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../../../../src/internal/utils/position.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,MAAM,OAAO,QAAQ;IAKnB,YAAY,EAAE,CAAC,EAAE,CAAC,EAA4B;QAJrC,WAAM,GAAG,UAAU,CAAC;QAK3B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;CACF","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport class Position {\n readonly __type = \"Position\";\n readonly x: number;\n readonly y: number;\n\n constructor({ x, y }: { x: number; y: number }) {\n this.x = x;\n this.y = y;\n }\n}\n"]}
@@ -74,3 +74,4 @@ export function getClosestNeighbor(target, sources, direction) {
74
74
  return getFirst(sources.filter((rect) => rect.top >= target.bottom).sort((r1, r2) => r1.top - r2.top || horizontalDiff(r1, r2)));
75
75
  }
76
76
  }
77
+ //# sourceMappingURL=rects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rects.js","sourceRoot":"","sources":["../../../../src/internal/utils/rects.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, Rect } from \"../interfaces\";\n\nexport function isInside(rect: Rect, bounds: Rect) {\n return (\n rect.top >= bounds.top && rect.left >= bounds.left && rect.right <= bounds.right && rect.bottom <= bounds.bottom\n );\n}\n\nexport function isIntersecting(rect1: Rect, rect2: Rect) {\n return getIntersectionArea(rect1, rect2) > 0;\n}\n\nexport function getIntersectionArea(rect1: Rect, rect2: Rect) {\n let horizontalIntersectionLength = 0;\n if (rect2.left <= rect1.left && rect1.left <= rect2.right) {\n horizontalIntersectionLength = Math.min(rect1.right, rect2.right) - rect1.left;\n } else if (rect2.left <= rect1.right && rect1.right <= rect2.right) {\n horizontalIntersectionLength = rect1.right - Math.max(rect1.left, rect2.left);\n } else if (rect1.left <= rect2.left && rect2.left <= rect1.right) {\n horizontalIntersectionLength = Math.min(rect1.right, rect2.right) - rect2.left;\n } else if (rect1.left <= rect2.right && rect2.right <= rect1.right) {\n horizontalIntersectionLength = rect2.right - Math.max(rect1.left, rect2.left);\n }\n\n let verticalIntersectionLength = 0;\n if (rect2.top <= rect1.top && rect1.top <= rect2.bottom) {\n verticalIntersectionLength = Math.min(rect1.bottom, rect2.bottom) - rect1.top;\n } else if (rect2.top <= rect1.bottom && rect1.bottom <= rect2.bottom) {\n verticalIntersectionLength = rect1.bottom - Math.max(rect1.top, rect2.top);\n } else if (rect1.top <= rect2.top && rect2.top <= rect1.bottom) {\n verticalIntersectionLength = Math.min(rect1.bottom, rect2.bottom) - rect2.top;\n } else if (rect1.top <= rect2.bottom && rect2.bottom <= rect1.bottom) {\n verticalIntersectionLength = rect2.bottom - Math.max(rect1.top, rect2.top);\n }\n\n return horizontalIntersectionLength * verticalIntersectionLength;\n}\n\nexport function getGridPlacement(target: Rect, grid: readonly Rect[]): Rect {\n function getMinDistance(min: number, current: number, collision: number) {\n const minDistance = Math.abs(min - collision);\n const currentDistance = Math.abs(current - collision);\n return currentDistance < minDistance ? current : min;\n }\n\n let placement = {\n top: Number.POSITIVE_INFINITY,\n left: Number.POSITIVE_INFINITY,\n right: Number.POSITIVE_INFINITY,\n bottom: Number.POSITIVE_INFINITY,\n };\n\n for (const rect of grid) {\n if (isIntersecting(rect, target)) {\n placement = {\n top: getMinDistance(placement.top, rect.top, target.top),\n left: getMinDistance(placement.left, rect.left, target.left),\n right: getMinDistance(placement.right, rect.right, target.right),\n bottom: getMinDistance(placement.bottom, rect.bottom, target.bottom),\n };\n }\n }\n\n return placement;\n}\n\nexport function getClosestNeighbor(target: Rect, sources: readonly Rect[], direction: Direction): null | Rect {\n const getFirst = (rects: Rect[]) => rects[0] ?? null;\n const verticalDiff = (r1: Rect, r2: Rect) => Math.abs(r1.top - target.top) - Math.abs(r2.top - target.top);\n const horizontalDiff = (r1: Rect, r2: Rect) => Math.abs(r1.left - target.left) - Math.abs(r2.left - target.left);\n\n switch (direction) {\n case \"left\":\n return getFirst(\n sources.filter((rect) => rect.right <= target.left).sort((r1, r2) => r2.left - r1.left || verticalDiff(r1, r2))\n );\n case \"right\":\n return getFirst(\n sources.filter((rect) => rect.left >= target.right).sort((r1, r2) => r1.left - r2.left || verticalDiff(r1, r2))\n );\n case \"up\":\n return getFirst(\n sources.filter((rect) => rect.bottom <= target.top).sort((r1, r2) => r2.top - r1.top || horizontalDiff(r1, r2))\n );\n case \"down\":\n return getFirst(\n sources.filter((rect) => rect.top >= target.bottom).sort((r1, r2) => r1.top - r2.top || horizontalDiff(r1, r2))\n );\n }\n}\n"]}
@@ -15,3 +15,4 @@ export function getNormalizedElementRect(element) {
15
15
  height: height,
16
16
  };
17
17
  }
18
+ //# sourceMappingURL=screen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../../../src/internal/utils/screen.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,MAAM,UAAU,wBAAwB,CAAC,OAAoB;IAC3D,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,WAAY,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,WAAY,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;IAChF,OAAO;QACL,CAAC,EAAE,CAAC,GAAG,OAAO;QACd,IAAI,EAAE,IAAI,GAAG,OAAO;QACpB,KAAK,EAAE,KAAK,GAAG,OAAO;QACtB,CAAC,EAAE,CAAC,GAAG,OAAO;QACd,GAAG,EAAE,GAAG,GAAG,OAAO;QAClB,MAAM,EAAE,MAAM,GAAG,OAAO;QACxB,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,MAAM;KACJ,CAAC;AACf,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function getNormalizedElementRect(element: HTMLElement): DOMRect {\n const { x, y, left, right, top, bottom, width, height } = element.getBoundingClientRect();\n const xOffset = element.ownerDocument.defaultView!.pageXOffset - window.scrollX;\n const yOffset = element.ownerDocument.defaultView!.pageYOffset - window.scrollY;\n return {\n x: x + xOffset,\n left: left + xOffset,\n right: right + xOffset,\n y: y + yOffset,\n top: top + yOffset,\n bottom: bottom + yOffset,\n width: width,\n height: height,\n } as DOMRect;\n}\n"]}
@@ -51,3 +51,4 @@ export function throttle(func, delay) {
51
51
  };
52
52
  return throttled;
53
53
  }
54
+ //# sourceMappingURL=throttle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../../../src/internal/utils/throttle.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAStC,MAAM,UAAU,QAAQ,CAAkC,IAAO,EAAE,KAAa;IAC9E,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,OAAO,GAAoC,IAAI,CAAC;IACpD,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,OAAO,GAAkB,IAAI,CAAC;IAElC,qDAAqD;IACrD,SAAS,WAAW;QAClB,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI,EAAE;YACrE,OAAO;SACR;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,UAAU,GAAG,cAAc,IAAI,KAAK,CAAC;QAE1D,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,cAAc,GAAG,UAAU,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,GAAG,IAAI,CAAC;SAChB;aAAM;YACL,UAAU,EAAE,CAAC;SACd;IACH,CAAC;IAED,SAAS,UAAU;QACjB,IAAI,OAAO,EAAE;YACX,oBAAoB,CAAC,OAAO,CAAC,CAAC;SAC/B;QACD,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,kDAAkD;IAClD,SAAS,SAAS,CAAY,GAAG,IAAS;QACxC,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3B,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACxB;aAAM;YACL,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC/B,UAAU,EAAE,CAAC;SACd;IACH,CAAC;IAED,kEAAkE;IAClE,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;QACtB,IAAI,OAAO,EAAE;YACX,oBAAoB,CAAC,OAAO,CAAC,CAAC;SAC/B;QACD,OAAO,GAAG,IAAI,CAAC;QACf,cAAc,GAAG,IAAI,CAAC;QACtB,OAAO,GAAG,IAAI,CAAC;QACf,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// The code is copied from https://github.com/cloudscape-design/components/blob/main/src/internal/utils/throttle.ts\n\nexport interface ThrottledFunction<F extends (...args: any) => any> {\n (...args: Parameters<F>): void;\n cancel(): void;\n}\n\nexport function throttle<F extends (...args: any) => any>(func: F, delay: number): ThrottledFunction<F> {\n let cancelled = false;\n let pending: null | { this: any; args: any } = null;\n let lastInvokeTime: null | number = null;\n let timerId: null | number = null;\n\n // Runs on every animation frame until timer stopped.\n function pendingFunc() {\n if (cancelled === true || pending === null || lastInvokeTime === null) {\n return;\n }\n\n const invokeTime = Date.now();\n const shouldInvoke = invokeTime - lastInvokeTime >= delay;\n\n if (shouldInvoke) {\n func.apply(pending.this, pending.args);\n lastInvokeTime = invokeTime;\n pending = null;\n timerId = null;\n } else {\n startTimer();\n }\n }\n\n function startTimer() {\n if (timerId) {\n cancelAnimationFrame(timerId);\n }\n timerId = requestAnimationFrame(pendingFunc);\n }\n\n // Decorated client function with delay mechanism.\n function throttled(this: any, ...args: any) {\n if (lastInvokeTime === null) {\n lastInvokeTime = Date.now();\n func.apply(this, args);\n } else {\n pending = { this: this, args };\n startTimer();\n }\n }\n\n // Prevents delayed function from execution when no longer needed.\n throttled.cancel = () => {\n if (timerId) {\n cancelAnimationFrame(timerId);\n }\n pending = null;\n lastInvokeTime = null;\n timerId = null;\n cancelled = true;\n };\n\n return throttled;\n}\n"]}
@@ -61,3 +61,4 @@ export function useAutoScroll() {
61
61
  }, [getLastInteraction]);
62
62
  return { addPointerEventHandlers, removePointerEventHandlers, scheduleActiveElementScrollIntoView };
63
63
  }
64
+ //# sourceMappingURL=use-auto-scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-auto-scroll.js","sourceRoot":"","sources":["../../../../src/internal/utils/use-auto-scroll.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAyB,MAAM,CAAC,CAAC;IACzF,MAAM,sBAAsB,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAClF,MAAM,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;IAEhD,gFAAgF;IAChF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,KAAK,MAAM,EAAE;YAC/B,OAAO;SACR;QACD,MAAM,SAAS,GAAG,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,IAAI,KAAoC,CAAC;QAEzC,SAAS,UAAU;YACjB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxC,UAAU,EAAE,CAAC;YACf,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;QACD,UAAU,EAAE,CAAC;QAEb,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAmB,EAAE,EAAE;QACxD,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,GAAG,gBAAgB,EAAE;YACzD,mBAAmB,CAAC,MAAM,CAAC,CAAC;SAC7B;aAAM,IAAI,KAAK,CAAC,OAAO,GAAG,gBAAgB,EAAE;YAC3C,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAC3B;aAAM;YACL,mBAAmB,CAAC,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,uBAAuB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/C,IAAI,kBAAkB,EAAE,KAAK,SAAS,EAAE;YACtC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACtD,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;SACnD;IACH,CAAC,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAErD,MAAM,0BAA0B,GAAG,WAAW,CAAC,GAAG,EAAE;QAClD,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACzD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjC,MAAM,mCAAmC,GAAG,WAAW,CACrD,CAAC,KAAa,EAAE,EAAE;QAChB,sBAAsB,CAAC,OAAO,IAAI,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE/E,MAAM,wBAAwB,GAAG,QAAQ,CAAC,aAAa,CAAC;QAExD,sBAAsB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;;YAC/C,IACE,QAAQ,CAAC,aAAa;gBACtB,QAAQ,CAAC,aAAa,KAAK,wBAAwB;gBACnD,kBAAkB,EAAE,KAAK,UAAU,EACnC;gBACA,MAAA,MAAA,QAAQ,CAAC,aAAa,EAAC,cAAc,mDAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;aACnF;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,EACD,CAAC,kBAAkB,CAAC,CACrB,CAAC;IAEF,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,mCAAmC,EAAE,CAAC;AACtG,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useLastInteraction } from \"./use-last-interaction\";\n\nexport function useAutoScroll() {\n const [activeAutoScroll, setActiveAutoScroll] = useState<\"up\" | \"down\" | \"none\">(\"none\");\n const scrollIntoViewTimerRef = useRef<null | ReturnType<typeof setTimeout>>(null);\n const getLastInteraction = useLastInteraction();\n\n // Scroll window repeatedly if activeAutoScroll=\"up\" or activeAutoScroll=\"down\".\n useEffect(() => {\n if (activeAutoScroll === \"none\") {\n return;\n }\n const direction = activeAutoScroll === \"up\" ? -1 : 1;\n\n let timer: ReturnType<typeof setTimeout>;\n\n function scrollLoop() {\n timer = setTimeout(() => {\n window.scrollBy({ top: direction * 5 });\n scrollLoop();\n }, 10);\n }\n scrollLoop();\n\n return () => clearTimeout(timer);\n }, [activeAutoScroll]);\n\n const onPointerMove = useCallback((event: PointerEvent) => {\n const autoScrollMargin = 50;\n if (event.clientY > window.innerHeight - autoScrollMargin) {\n setActiveAutoScroll(\"down\");\n } else if (event.clientY < autoScrollMargin) {\n setActiveAutoScroll(\"up\");\n } else {\n setActiveAutoScroll(\"none\");\n }\n }, []);\n\n const onPointerUp = useCallback(() => {\n setActiveAutoScroll(\"none\");\n }, []);\n\n const addPointerEventHandlers = useCallback(() => {\n if (getLastInteraction() === \"pointer\") {\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", onPointerUp);\n }\n }, [getLastInteraction, onPointerMove, onPointerUp]);\n\n const removePointerEventHandlers = useCallback(() => {\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", onPointerUp);\n }, [onPointerMove, onPointerUp]);\n\n const scheduleActiveElementScrollIntoView = useCallback(\n (delay: number) => {\n scrollIntoViewTimerRef.current && clearTimeout(scrollIntoViewTimerRef.current);\n\n const activeElementBeforeDelay = document.activeElement;\n\n scrollIntoViewTimerRef.current = setTimeout(() => {\n if (\n document.activeElement &&\n document.activeElement === activeElementBeforeDelay &&\n getLastInteraction() === \"keyboard\"\n ) {\n document.activeElement.scrollIntoView?.({ behavior: \"smooth\", block: \"nearest\" });\n }\n }, delay);\n },\n [getLastInteraction]\n );\n\n return { addPointerEventHandlers, removePointerEventHandlers, scheduleActiveElementScrollIntoView };\n}\n"]}
@@ -20,3 +20,4 @@ export function useLastInteraction() {
20
20
  const getLastEvent = useCallback(() => lastInteractionRef.current, []);
21
21
  return getLastEvent;
22
22
  }
23
+ //# sourceMappingURL=use-last-interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-last-interaction.js","sourceRoot":"","sources":["../../../../src/internal/utils/use-last-interaction.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,UAAU,kBAAkB;IAChC,MAAM,kBAAkB,GAAG,MAAM,CAAyB,SAAS,CAAC,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,kBAAkB,CAAC,OAAO,GAAG,SAAS,CAAC;QACzC,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,kBAAkB,CAAC,OAAO,GAAG,UAAU,CAAC;QAC1C,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE9C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEvE,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\nexport function useLastInteraction() {\n const lastInteractionRef = useRef<\"pointer\" | \"keyboard\">(\"pointer\");\n\n useEffect(() => {\n const onPointerDown = () => {\n lastInteractionRef.current = \"pointer\";\n };\n const onKeyDown = () => {\n lastInteractionRef.current = \"keyboard\";\n };\n\n window.addEventListener(\"pointerdown\", onPointerDown);\n window.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n window.removeEventListener(\"pointerdown\", onPointerDown);\n window.removeEventListener(\"keydown\", onKeyDown);\n };\n }, []);\n\n const getLastEvent = useCallback(() => lastInteractionRef.current, []);\n\n return getLastEvent;\n}\n"]}
@@ -27,3 +27,4 @@ export function useMergeRefs(...refs) {
27
27
  // eslint-disable-next-line react-hooks/exhaustive-deps
28
28
  }, refs);
29
29
  }
30
+ //# sourceMappingURL=use-merge-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-merge-refs.js","sourceRoot":"","sources":["../../../../src/internal/utils/use-merge-refs.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAiC,OAAO,EAAE,MAAM,OAAO,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,GAAG,IAAwE;IACtG,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAC;SACb;QACD,OAAO,CAAC,KAAU,EAAE,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnB,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;oBAC7B,GAAG,CAAC,KAAK,CAAC,CAAC;iBACZ;qBAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;oBAC3C,GAA6B,CAAC,OAAO,GAAG,KAAK,CAAC;iBAChD;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,gEAAgE;QAChE,uDAAuD;IACzD,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { MutableRefObject, RefCallback, useMemo } from \"react\";\n\n/**\n * useMergeRefs merges multiple refs into a single ref callback.\n *\n * For example:\n * const mergedRef = useMergeRefs(ref1, ref2, ref3)\n * <div ref={refs}>...</div>\n */\nexport function useMergeRefs(...refs: Array<RefCallback<any> | MutableRefObject<any> | null | undefined>) {\n return useMemo(() => {\n if (refs.every((ref) => ref === null || ref === undefined)) {\n return null;\n }\n return (value: any) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as MutableRefObject<any>).current = value;\n }\n });\n };\n // ESLint expects an array literal which we can not provide here\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n"]}
@@ -6,3 +6,4 @@ export function zipTwoArrays(a, b) {
6
6
  return [a[idx], b[idx]];
7
7
  });
8
8
  }
9
+ //# sourceMappingURL=zip-arrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-arrays.js","sourceRoot":"","sources":["../../../../src/internal/utils/zip-arrays.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,MAAM,UAAU,YAAY,CAAO,CAAe,EAAE,CAAe;IACjE,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAC5B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function zipTwoArrays<A, B>(a: readonly A[], b: readonly B[]): readonly [A, B][] {\n const longest = a.length >= b.length ? a : b;\n return longest.map((_, idx) => {\n return [a[idx], b[idx]];\n });\n}\n"]}
@@ -9,3 +9,4 @@ export default function ItemsPalette(props) {
9
9
  return _jsx(InternalItemsPalette, { ...props, ...baseComponentProps });
10
10
  }
11
11
  applyDisplayName(ItemsPalette, "ItemsPalette");
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/items-palette/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,gBAAgB,MAAM,+CAA+C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIlD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAW,KAAkC;IAC/E,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC5D,OAAO,KAAC,oBAAoB,OAAK,KAAK,KAAM,kBAAkB,GAAI,CAAC;AACrE,CAAC;AAED,gBAAgB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport useBaseComponent from \"../internal/base-component/use-base-component\";\nimport { applyDisplayName } from \"../internal/utils/apply-display-name\";\nimport type { ItemsPaletteProps } from \"./interfaces\";\nimport { InternalItemsPalette } from \"./internal\";\n\nexport type { ItemsPaletteProps };\n\nexport default function ItemsPalette<DataType>(props: ItemsPaletteProps<DataType>) {\n const baseComponentProps = useBaseComponent(\"ItemsPalette\");\n return <InternalItemsPalette {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(ItemsPalette, \"ItemsPalette\");\n"]}
@@ -1,3 +1,4 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  export {};
4
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/items-palette/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 { BoardItemDefinitionBase, DataFallbackType } from \"../internal/interfaces\";\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 ItemsPaletteProps<D = DataFallbackType> {\n /**\n * Specifies the items displayed in the palette. The content of each item is controlled by the `renderItem` property.\n *\n * The ItemsPaletteProps.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 (in a 4 column layout). It can't be less than one. Defaults to one.\n * * `definition.defaultRowSpan` (number) - 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) - the number or columns the item will take (in a 4 column layout) when inserted to the board. It can't be less than `definition.minColumnSpan`.\n * * `data` (D) - optional item data which can include the specific configurations of an item, such as its title.\n */\n items: ReadonlyArray<ItemsPaletteProps.Item<D>>;\n\n /**\n * Specifies a function to render content for a palette item. The return value must include board item component.\n *\n * The function takes the item and its associated context (ItemsPaletteProps.ItemContext) that include:\n * * `showPreview` (boolean) - a flag that indicates if the item's content needs to be rendered in preview mode.\n */\n renderItem: (item: ItemsPaletteProps.Item<D>, context: ItemsPaletteProps.ItemContext) => JSX.Element;\n\n /**\n * An object containing all the necessary localized strings required by the component.\n *\n * Live announcements:\n * * `liveAnnouncementDndStarted` (string) - live announcement string to indicate start of DnD.\n * * `liveAnnouncementDndDiscarded` (string) - live announcement string to indicate discard of DnD.\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.\n */\n i18nStrings: ItemsPaletteProps.I18nStrings<D>;\n}\n\nexport namespace ItemsPaletteProps {\n export type Item<D = DataFallbackType> = BoardItemDefinitionBase<D>;\n\n export interface ItemContext {\n showPreview: boolean;\n }\n\n export interface I18nStrings<D> {\n liveAnnouncementDndStarted: string;\n liveAnnouncementDndDiscarded: string;\n navigationAriaLabel: string;\n navigationAriaDescription?: string;\n navigationItemAriaLabel: (item: ItemsPaletteProps.Item<D>) => string;\n }\n}\n"]}
@@ -70,3 +70,4 @@ export function InternalItemsPalette({ items, renderItem, i18nStrings, __interna
70
70
  return { width, minWidth: width, maxWidth: width, height, minHeight: height, maxHeight: height };
71
71
  }, children: (hasDropTarget) => renderItem(item, { showPreview: hasDropTarget }) }, item.id))) }) }), _jsx(LiveRegion, { children: announcement })] }));
72
72
  }
73
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/items-palette/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 SpaceBetween from \"@cloudscape-design/components/space-between\";\nimport { useRef, useState } from \"react\";\nimport { getDataAttributes } from \"../internal/base-component/get-data-attributes\";\nimport { InternalBaseComponentProps } from \"../internal/base-component/use-base-component\";\nimport { useDragSubscription } from \"../internal/dnd-controller/controller\";\nimport { ItemId } from \"../internal/interfaces\";\nimport { ItemContainer, ItemContainerRef } from \"../internal/item-container\";\nimport LiveRegion from \"../internal/live-region\";\nimport { ScreenReaderGridNavigation } from \"../internal/screenreader-grid-navigation\";\nimport { ItemsPaletteProps } from \"./interfaces\";\nimport styles from \"./styles.css.js\";\n\nexport function InternalItemsPalette<D>({\n items,\n renderItem,\n i18nStrings,\n __internalRootRef,\n ...rest\n}: ItemsPaletteProps<D> & InternalBaseComponentProps) {\n const paletteRef = useRef<HTMLDivElement>(null);\n const itemContainerRef = useRef<{ [id: ItemId]: ItemContainerRef }>({});\n const [dropState, setDropState] = useState<{ id: string }>();\n const [announcement, setAnnouncement] = useState(\"\");\n\n function focusItem(itemId: ItemId) {\n itemContainerRef.current[itemId].focusDragHandle();\n }\n\n useDragSubscription(\"start\", ({ draggableItem: { id } }) => {\n setDropState({ id });\n\n // Announce only if the target item belongs to the palette.\n if (items.some((it) => it.id === id)) {\n setAnnouncement(i18nStrings.liveAnnouncementDndStarted);\n } else {\n setAnnouncement(\"\");\n }\n });\n\n useDragSubscription(\"update\", ({ draggableItem: { id } }) => {\n setDropState({ id });\n });\n\n useDragSubscription(\"submit\", () => {\n setDropState(undefined);\n\n // Announce only if the target item belongs to the palette.\n if (dropState && items.some((it) => it.id === dropState.id)) {\n setAnnouncement(i18nStrings.liveAnnouncementDndDiscarded);\n }\n });\n\n useDragSubscription(\"discard\", () => {\n setDropState(undefined);\n\n // Announce only if the target item belongs to the palette.\n if (items.some((it) => it.id === dropState?.id)) {\n setAnnouncement(i18nStrings.liveAnnouncementDndDiscarded);\n }\n });\n\n useDragSubscription(\"acquire\", ({ draggableItem }) => {\n // \"Disconnect\" target item from the palette if borrowed.\n if (items.some((it) => it.id === draggableItem.id)) {\n setDropState(undefined);\n }\n });\n\n const itemsLayout = {\n items: items.map((it, index) => ({ id: it.id, x: 0, y: index, width: 1, height: 1 })),\n columns: 1,\n rows: items.length,\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={(item) => i18nStrings.navigationItemAriaLabel(item!)}\n onActivateItem={focusItem}\n />\n\n <div ref={paletteRef} className={styles.root}>\n <SpaceBetween size=\"l\">\n {items.map((item) => (\n <ItemContainer\n ref={(elem) => {\n if (elem) {\n itemContainerRef.current[item.id] = elem;\n } else {\n delete itemContainerRef.current[item.id];\n }\n }}\n key={item.id}\n item={item}\n placed={false}\n acquired={false}\n transform={undefined}\n inTransition={false}\n getItemSize={(dropContext) => {\n if (!dropContext) {\n throw new Error(\"Invariant violation: cannot query palette item size with no drop context.\");\n }\n const { width, height } = dropContext.scale(item);\n return { width, minWidth: width, maxWidth: width, height, minHeight: height, maxHeight: height };\n }}\n >\n {(hasDropTarget) => renderItem(item, { showPreview: hasDropTarget })}\n </ItemContainer>\n ))}\n </SpaceBetween>\n </div>\n\n <LiveRegion>{announcement}</LiveRegion>\n </div>\n );\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudscape-design/board-components",
3
- "version": "3.0.52",
3
+ "version": "3.0.54",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/cloudscape-design/board-components.git"