@cloudscape-design/board-components 3.0.60 → 3.0.62

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 (58) hide show
  1. package/board/internal.js +12 -7
  2. package/board/internal.js.map +1 -1
  3. package/board/styles.css.js +5 -5
  4. package/board/styles.scoped.css +10 -8
  5. package/board/styles.selectors.js +5 -5
  6. package/board/transition.d.ts +3 -1
  7. package/board/transition.js +32 -24
  8. package/board/transition.js.map +1 -1
  9. package/board-item/styles.css.js +11 -11
  10. package/board-item/styles.scoped.css +27 -26
  11. package/board-item/styles.selectors.js +11 -11
  12. package/internal/drag-handle/styles.css.js +2 -2
  13. package/internal/drag-handle/styles.scoped.css +9 -9
  14. package/internal/drag-handle/styles.selectors.js +2 -2
  15. package/internal/environment.js +1 -1
  16. package/internal/environment.json +1 -1
  17. package/internal/global-drag-state-styles/styles.css.js +3 -3
  18. package/internal/global-drag-state-styles/styles.scoped.css +6 -3
  19. package/internal/global-drag-state-styles/styles.selectors.js +3 -3
  20. package/internal/grid/grid.d.ts +1 -1
  21. package/internal/grid/grid.js +5 -2
  22. package/internal/grid/grid.js.map +1 -1
  23. package/internal/grid/interfaces.d.ts +1 -0
  24. package/internal/grid/interfaces.js.map +1 -1
  25. package/internal/handle/styles.css.js +1 -1
  26. package/internal/handle/styles.scoped.css +4 -3
  27. package/internal/handle/styles.selectors.js +1 -1
  28. package/internal/item-container/get-next-droppable.d.ts +6 -1
  29. package/internal/item-container/get-next-droppable.js +7 -2
  30. package/internal/item-container/get-next-droppable.js.map +1 -1
  31. package/internal/item-container/index.d.ts +1 -0
  32. package/internal/item-container/index.js +30 -17
  33. package/internal/item-container/index.js.map +1 -1
  34. package/internal/item-container/styles.css.js +7 -7
  35. package/internal/item-container/styles.scoped.css +8 -8
  36. package/internal/item-container/styles.selectors.js +7 -7
  37. package/internal/manifest.json +1 -1
  38. package/internal/resize-handle/styles.css.js +2 -2
  39. package/internal/resize-handle/styles.scoped.css +11 -8
  40. package/internal/resize-handle/styles.selectors.js +2 -2
  41. package/internal/screenreader-grid-navigation/styles.css.js +2 -2
  42. package/internal/screenreader-grid-navigation/styles.scoped.css +4 -3
  43. package/internal/screenreader-grid-navigation/styles.selectors.js +2 -2
  44. package/internal/screenreader-only/styles.css.js +1 -1
  45. package/internal/screenreader-only/styles.scoped.css +3 -3
  46. package/internal/screenreader-only/styles.selectors.js +1 -1
  47. package/internal/utils/coordinates.d.ts +3 -1
  48. package/internal/utils/coordinates.js +5 -2
  49. package/internal/utils/coordinates.js.map +1 -1
  50. package/internal/utils/rects.d.ts +6 -1
  51. package/internal/utils/rects.js +7 -1
  52. package/internal/utils/rects.js.map +1 -1
  53. package/internal/utils/screen.d.ts +8 -1
  54. package/internal/utils/screen.js +8 -9
  55. package/internal/utils/screen.js.map +1 -1
  56. package/items-palette/internal.js +3 -1
  57. package/items-palette/internal.js.map +1 -1
  58. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "handle": "awsui_handle_19hnz_10d4k_1",
5
- "active": "awsui_active_19hnz_10d4k_5"
4
+ "handle": "awsui_handle_19hnz_1bypk_1",
5
+ "active": "awsui_active_19hnz_1bypk_8"
6
6
  };
7
7
 
@@ -1,26 +1,29 @@
1
- .awsui_handle_19hnz_10d4k_1:not(#\9) {
1
+ .awsui_handle_19hnz_1bypk_1:not(#\9) {
2
2
  cursor: nwse-resize;
3
3
  }
4
+ .awsui_handle_19hnz_1bypk_1:not(#\9):dir(rtl) {
5
+ cursor: nesw-resize;
6
+ }
4
7
 
5
- .awsui_handle_19hnz_10d4k_1:not(#\9):not(.awsui_active_19hnz_10d4k_5):focus-visible {
8
+ .awsui_handle_19hnz_1bypk_1:not(#\9):not(.awsui_active_19hnz_1bypk_8):focus-visible {
6
9
  position: relative;
7
10
  box-sizing: border-box;
8
11
  outline: 2px dotted transparent;
9
12
  outline-offset: 3px;
10
13
  }
11
- .awsui_handle_19hnz_10d4k_1:not(#\9):not(.awsui_active_19hnz_10d4k_5):focus-visible::before {
14
+ .awsui_handle_19hnz_1bypk_1:not(#\9):not(.awsui_active_19hnz_1bypk_8):focus-visible::before {
12
15
  content: " ";
13
16
  display: block;
14
17
  position: absolute;
15
18
  box-sizing: border-box;
16
- left: calc(-1 * 4px);
17
- top: calc(-1 * 4px);
18
- width: calc(100% + 2 * 4px);
19
- height: calc(100% + 2 * 4px);
19
+ inset-inline-start: calc(-1 * 4px);
20
+ inset-block-start: calc(-1 * 4px);
21
+ inline-size: calc(100% + 2 * 4px);
22
+ block-size: calc(100% + 2 * 4px);
20
23
  border-radius: var(--border-radius-control-default-focus-ring-u8zbsz, 4px);
21
24
  border: 2px solid var(--color-border-item-focused-b2ntyl, #0972d3);
22
25
  }
23
26
 
24
- .awsui_active_19hnz_10d4k_5:not(#\9) {
27
+ .awsui_active_19hnz_1bypk_8:not(#\9) {
25
28
  outline: none;
26
29
  }
@@ -2,7 +2,7 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "handle": "awsui_handle_19hnz_10d4k_1",
6
- "active": "awsui_active_19hnz_10d4k_5"
5
+ "handle": "awsui_handle_19hnz_1bypk_1",
6
+ "active": "awsui_active_19hnz_1bypk_8"
7
7
  };
8
8
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "screen-reader-navigation-hidden": "awsui_screen-reader-navigation-hidden_1wuib_pl8f7_1",
5
- "screen-reader-navigation-visible": "awsui_screen-reader-navigation-visible_1wuib_pl8f7_6"
4
+ "screen-reader-navigation-hidden": "awsui_screen-reader-navigation-hidden_1wuib_1u63w_1",
5
+ "screen-reader-navigation-visible": "awsui_screen-reader-navigation-visible_1wuib_1u63w_6"
6
6
  };
7
7
 
@@ -1,12 +1,13 @@
1
- .awsui_screen-reader-navigation-hidden_1wuib_pl8f7_1:not(#\9) {
1
+ .awsui_screen-reader-navigation-hidden_1wuib_1u63w_1:not(#\9) {
2
2
  position: absolute !important;
3
3
  clip-path: circle(0);
4
4
  }
5
5
 
6
- .awsui_screen-reader-navigation-visible_1wuib_pl8f7_6:not(#\9) {
6
+ .awsui_screen-reader-navigation-visible_1wuib_1u63w_6:not(#\9) {
7
7
  position: fixed;
8
8
  background: white;
9
- padding: 8px;
9
+ padding-block: 8px;
10
+ padding-inline: 8px;
10
11
  border: 1px solid black;
11
12
  z-index: 10001;
12
13
  }
@@ -2,7 +2,7 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "screen-reader-navigation-hidden": "awsui_screen-reader-navigation-hidden_1wuib_pl8f7_1",
6
- "screen-reader-navigation-visible": "awsui_screen-reader-navigation-visible_1wuib_pl8f7_6"
5
+ "screen-reader-navigation-hidden": "awsui_screen-reader-navigation-hidden_1wuib_1u63w_1",
6
+ "screen-reader-navigation-visible": "awsui_screen-reader-navigation-visible_1wuib_1u63w_6"
7
7
  };
8
8
 
@@ -1,6 +1,6 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_3gfu1_3yy3l_5"
4
+ "root": "awsui_root_3gfu1_3lgbu_5"
5
5
  };
6
6
 
@@ -2,8 +2,8 @@
2
2
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- .awsui_root_3gfu1_3yy3l_5:not(#\9) {
5
+ .awsui_root_3gfu1_3lgbu_5:not(#\9) {
6
6
  position: absolute !important;
7
- top: -9999px !important;
8
- left: -9999px !important;
7
+ inset-block-start: -9999px !important;
8
+ inset-inline-start: -9999px !important;
9
9
  }
@@ -2,6 +2,6 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_3gfu1_3yy3l_5"
5
+ "root": "awsui_root_3gfu1_3lgbu_5"
6
6
  };
7
7
 
@@ -5,7 +5,9 @@ export declare class Coordinates {
5
5
  readonly y: number;
6
6
  readonly scrollX: number;
7
7
  readonly scrollY: number;
8
- static fromEvent(event: PointerEvent | ReactPointerEvent<unknown>): Coordinates;
8
+ static fromEvent(event: PointerEvent | ReactPointerEvent<unknown>, { isRtl }: {
9
+ isRtl: boolean;
10
+ }): Coordinates;
9
11
  static cursorOffset(current: Coordinates, start: Coordinates): Coordinates;
10
12
  constructor({ x, y }: {
11
13
  x: number;
@@ -1,8 +1,11 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
+ import { getLogicalClientX } from "@cloudscape-design/component-toolkit/internal";
3
4
  export class Coordinates {
4
- static fromEvent(event) {
5
- return new Coordinates({ x: event.clientX, y: event.clientY });
5
+ static fromEvent(event, { isRtl }) {
6
+ const clientX = getLogicalClientX(event, isRtl);
7
+ const clientY = event.clientY;
8
+ return new Coordinates({ x: clientX, y: clientY });
6
9
  }
7
10
  static cursorOffset(current, start) {
8
11
  return new Coordinates({
@@ -1 +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"]}
1
+ {"version":3,"file":"coordinates.js","sourceRoot":"","sources":["../../../../src/internal/utils/coordinates.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAGlF,MAAM,OAAO,WAAW;IAOtB,MAAM,CAAC,SAAS,CAAC,KAAgD,EAAE,EAAE,KAAK,EAAsB;QAC9F,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,OAAO,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,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;QAnBrC,WAAM,GAAG,aAAa,CAAC;QAGvB,YAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACzB,YAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAgBhC,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 { getLogicalClientX } from \"@cloudscape-design/component-toolkit/internal\";\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>, { isRtl }: { isRtl: boolean }): Coordinates {\n const clientX = getLogicalClientX(event, isRtl);\n const clientY = event.clientY;\n return new Coordinates({ x: clientX, y: 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"]}
@@ -3,4 +3,9 @@ export declare function isInside(rect: Rect, bounds: Rect): boolean;
3
3
  export declare function isIntersecting(rect1: Rect, rect2: Rect): boolean;
4
4
  export declare function getIntersectionArea(rect1: Rect, rect2: Rect): number;
5
5
  export declare function getGridPlacement(target: Rect, grid: readonly Rect[]): Rect;
6
- export declare function getClosestNeighbor(target: Rect, sources: readonly Rect[], direction: Direction): null | Rect;
6
+ export declare function getClosestNeighbor({ target, sources, direction, isRtl, }: {
7
+ target: Rect;
8
+ sources: readonly Rect[];
9
+ direction: Direction;
10
+ isRtl: boolean;
11
+ }): null | Rect;
@@ -59,10 +59,16 @@ export function getGridPlacement(target, grid) {
59
59
  }
60
60
  return placement;
61
61
  }
62
- export function getClosestNeighbor(target, sources, direction) {
62
+ export function getClosestNeighbor({ target, sources, direction, isRtl, }) {
63
63
  const getFirst = (rects) => { var _a; return (_a = rects[0]) !== null && _a !== void 0 ? _a : null; };
64
64
  const verticalDiff = (r1, r2) => Math.abs(r1.top - target.top) - Math.abs(r2.top - target.top);
65
65
  const horizontalDiff = (r1, r2) => Math.abs(r1.left - target.left) - Math.abs(r2.left - target.left);
66
+ if (isRtl && direction === "left") {
67
+ direction = "right";
68
+ }
69
+ else if (isRtl && direction === "right") {
70
+ direction = "left";
71
+ }
66
72
  switch (direction) {
67
73
  case "left":
68
74
  return getFirst(sources.filter((rect) => rect.right <= target.left).sort((r1, r2) => r2.left - r1.left || verticalDiff(r1, r2)));
@@ -1 +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"]}
1
+ {"version":3,"file":"rects.js","sourceRoot":"","sources":["../../../../src/internal/utils/rects.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAItC,MAAM,UAAU,QAAQ,CAAC,IAAU,EAAE,MAAY;IAC/C,OAAO,CACL,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CACjH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAW,EAAE,KAAW;IACrD,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAW,EAAE,KAAW;IAC1D,IAAI,4BAA4B,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;QACzD,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;KAChF;SAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;QAClE,4BAA4B,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KAC/E;SAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;QAChE,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;KAChF;SAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;QAClE,4BAA4B,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KAC/E;IAED,IAAI,0BAA0B,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;QACvD,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;KAC/E;SAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;QACpE,0BAA0B,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;KAC5E;SAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;QAC9D,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;KAC/E;SAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;QACpE,0BAA0B,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;KAC5E;IAED,OAAO,4BAA4B,GAAG,0BAA0B,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAY,EAAE,IAAqB;IAClE,SAAS,cAAc,CAAC,GAAW,EAAE,OAAe,EAAE,SAAiB;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACtD,OAAO,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,CAAC;IAED,IAAI,SAAS,GAAG;QACd,GAAG,EAAE,MAAM,CAAC,iBAAiB;QAC7B,IAAI,EAAE,MAAM,CAAC,iBAAiB;QAC9B,KAAK,EAAE,MAAM,CAAC,iBAAiB;QAC/B,MAAM,EAAE,MAAM,CAAC,iBAAiB;KACjC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YAChC,SAAS,GAAG;gBACV,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;gBACxD,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBAChE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;aACrE,CAAC;SACH;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,GAMN;IACC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAA,EAAA,CAAC;IACrD,MAAM,YAAY,GAAG,CAAC,EAAQ,EAAE,EAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3G,MAAM,cAAc,GAAG,CAAC,EAAQ,EAAE,EAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAEjH,IAAI,KAAK,IAAI,SAAS,KAAK,MAAM,EAAE;QACjC,SAAS,GAAG,OAAO,CAAC;KACrB;SAAM,IAAI,KAAK,IAAI,SAAS,KAAK,OAAO,EAAE;QACzC,SAAS,GAAG,MAAM,CAAC;KACpB;IAED,QAAQ,SAAS,EAAE;QACjB,KAAK,MAAM;YACT,OAAO,QAAQ,CACb,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAChH,CAAC;QACJ,KAAK,OAAO;YACV,OAAO,QAAQ,CACb,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAChH,CAAC;QACJ,KAAK,IAAI;YACP,OAAO,QAAQ,CACb,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAChH,CAAC;QACJ,KAAK,MAAM;YACT,OAAO,QAAQ,CACb,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAChH,CAAC;KACL;AACH,CAAC","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({\n target,\n sources,\n direction,\n isRtl,\n}: {\n target: Rect;\n sources: readonly Rect[];\n direction: Direction;\n isRtl: boolean;\n}): 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 if (isRtl && direction === \"left\") {\n direction = \"right\";\n } else if (isRtl && direction === \"right\") {\n direction = \"left\";\n }\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"]}
@@ -1 +1,8 @@
1
- export declare function getNormalizedElementRect(element: HTMLElement): DOMRect;
1
+ export declare function getNormalizedElementRect(element: HTMLElement): {
2
+ left: number;
3
+ right: number;
4
+ top: number;
5
+ bottom: number;
6
+ width: number;
7
+ height: number;
8
+ };
@@ -1,18 +1,17 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
+ import { getLogicalBoundingClientRect } from "@cloudscape-design/component-toolkit/internal";
3
4
  export function getNormalizedElementRect(element) {
4
- const { x, y, left, right, top, bottom, width, height } = element.getBoundingClientRect();
5
+ const { insetInlineStart, insetInlineEnd, insetBlockStart, insetBlockEnd, inlineSize, blockSize } = getLogicalBoundingClientRect(element);
5
6
  const xOffset = element.ownerDocument.defaultView.pageXOffset - window.scrollX;
6
7
  const yOffset = element.ownerDocument.defaultView.pageYOffset - window.scrollY;
7
8
  return {
8
- x: x + xOffset,
9
- left: left + xOffset,
10
- right: right + xOffset,
11
- y: y + yOffset,
12
- top: top + yOffset,
13
- bottom: bottom + yOffset,
14
- width: width,
15
- height: height,
9
+ left: insetInlineStart + xOffset,
10
+ right: insetInlineEnd + xOffset,
11
+ top: insetBlockStart + yOffset,
12
+ bottom: insetBlockEnd + yOffset,
13
+ width: inlineSize,
14
+ height: blockSize,
16
15
  };
17
16
  }
18
17
  //# sourceMappingURL=screen.js.map
@@ -1 +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"]}
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../../../src/internal/utils/screen.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAE7F,MAAM,UAAU,wBAAwB,CAAC,OAAoB;IAQ3D,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,GAC/F,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACxC,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,IAAI,EAAE,gBAAgB,GAAG,OAAO;QAChC,KAAK,EAAE,cAAc,GAAG,OAAO;QAC/B,GAAG,EAAE,eAAe,GAAG,OAAO;QAC9B,MAAM,EAAE,aAAa,GAAG,OAAO;QAC/B,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getLogicalBoundingClientRect } from \"@cloudscape-design/component-toolkit/internal\";\n\nexport function getNormalizedElementRect(element: HTMLElement): {\n left: number;\n right: number;\n top: number;\n bottom: number;\n width: number;\n height: number;\n} {\n const { insetInlineStart, insetInlineEnd, insetBlockStart, insetBlockEnd, inlineSize, blockSize } =\n getLogicalBoundingClientRect(element);\n const xOffset = element.ownerDocument.defaultView!.pageXOffset - window.scrollX;\n const yOffset = element.ownerDocument.defaultView!.pageYOffset - window.scrollY;\n return {\n left: insetInlineStart + xOffset,\n right: insetInlineEnd + xOffset,\n top: insetBlockStart + yOffset,\n bottom: insetBlockEnd + yOffset,\n width: inlineSize,\n height: blockSize,\n };\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  // SPDX-License-Identifier: Apache-2.0
4
+ import { getIsRtl } from "@cloudscape-design/component-toolkit/internal";
4
5
  import SpaceBetween from "@cloudscape-design/components/space-between";
5
6
  import { useRef, useState } from "react";
6
7
  import { getDataAttributes } from "../internal/base-component/get-data-attributes";
@@ -14,6 +15,7 @@ export function InternalItemsPalette({ items, renderItem, i18nStrings, __interna
14
15
  const itemContainerRef = useRef({});
15
16
  const [dropState, setDropState] = useState();
16
17
  const [announcement, setAnnouncement] = useState("");
18
+ const isRtl = () => getIsRtl(paletteRef.current);
17
19
  function focusItem(itemId) {
18
20
  itemContainerRef.current[itemId].focusDragHandle();
19
21
  }
@@ -68,6 +70,6 @@ export function InternalItemsPalette({ items, renderItem, i18nStrings, __interna
68
70
  }
69
71
  const { width, height } = dropContext.scale(item);
70
72
  return { width, minWidth: width, maxWidth: width, height, minHeight: height, maxHeight: height };
71
- }, children: (hasDropTarget) => renderItem(item, { showPreview: hasDropTarget }) }, item.id))) }) }), _jsx(LiveRegion, { children: announcement })] }));
73
+ }, isRtl: isRtl, children: (hasDropTarget) => renderItem(item, { showPreview: hasDropTarget }) }, item.id))) }) }), _jsx(LiveRegion, { children: announcement })] }));
72
74
  }
73
75
  //# sourceMappingURL=internal.js.map
@@ -1 +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"]}
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 { getIsRtl } from \"@cloudscape-design/component-toolkit/internal\";\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 const isRtl = () => getIsRtl(paletteRef.current);\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 isRtl={isRtl}\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.60",
3
+ "version": "3.0.62",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/cloudscape-design/board-components.git"