@cloudscape-design/components-themeable 3.0.1083 → 3.0.1085

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 (122) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/app-layout/constants.scss +2 -0
  3. package/lib/internal/scss/app-layout/runtime-drawer/styles.scss +4 -0
  4. package/lib/internal/scss/app-layout/test-classes/styles.scss +3 -1
  5. package/lib/internal/scss/app-layout/visual-refresh-toolbar/drawer/styles.scss +155 -1
  6. package/lib/internal/scss/app-layout/visual-refresh-toolbar/skeleton/styles.scss +27 -4
  7. package/lib/internal/scss/app-layout/visual-refresh-toolbar/toolbar/styles.scss +107 -12
  8. package/lib/internal/scss/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.scss +31 -21
  9. package/lib/internal/scss/internal/components/panel-resize-handle/styles.scss +2 -1
  10. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  11. package/lib/internal/template/app-layout/interfaces.d.ts +1 -0
  12. package/lib/internal/template/app-layout/interfaces.d.ts.map +1 -1
  13. package/lib/internal/template/app-layout/interfaces.js.map +1 -1
  14. package/lib/internal/template/app-layout/runtime-drawer/index.d.ts +9 -0
  15. package/lib/internal/template/app-layout/runtime-drawer/index.d.ts.map +1 -1
  16. package/lib/internal/template/app-layout/runtime-drawer/index.js +32 -3
  17. package/lib/internal/template/app-layout/runtime-drawer/index.js.map +1 -1
  18. package/lib/internal/template/app-layout/runtime-drawer/styles.css.js +2 -1
  19. package/lib/internal/template/app-layout/runtime-drawer/styles.scoped.css +5 -1
  20. package/lib/internal/template/app-layout/runtime-drawer/styles.selectors.js +2 -1
  21. package/lib/internal/template/app-layout/test-classes/styles.css.js +26 -24
  22. package/lib/internal/template/app-layout/test-classes/styles.scoped.css +26 -24
  23. package/lib/internal/template/app-layout/test-classes/styles.selectors.js +26 -24
  24. package/lib/internal/template/app-layout/utils/interfaces.d.ts +1 -1
  25. package/lib/internal/template/app-layout/utils/interfaces.d.ts.map +1 -1
  26. package/lib/internal/template/app-layout/utils/interfaces.js.map +1 -1
  27. package/lib/internal/template/app-layout/utils/use-ai-drawer.d.ts +27 -0
  28. package/lib/internal/template/app-layout/utils/use-ai-drawer.d.ts.map +1 -0
  29. package/lib/internal/template/app-layout/utils/use-ai-drawer.js +104 -0
  30. package/lib/internal/template/app-layout/utils/use-ai-drawer.js.map +1 -0
  31. package/lib/internal/template/app-layout/utils/use-keyboard-events.js +8 -8
  32. package/lib/internal/template/app-layout/utils/use-keyboard-events.js.map +1 -1
  33. package/lib/internal/template/app-layout/utils/use-pointer-events.d.ts.map +1 -1
  34. package/lib/internal/template/app-layout/utils/use-pointer-events.js +8 -0
  35. package/lib/internal/template/app-layout/utils/use-pointer-events.js.map +1 -1
  36. package/lib/internal/template/app-layout/visual-refresh-toolbar/compute-layout.d.ts +3 -1
  37. package/lib/internal/template/app-layout/visual-refresh-toolbar/compute-layout.d.ts.map +1 -1
  38. package/lib/internal/template/app-layout/visual-refresh-toolbar/compute-layout.js +6 -2
  39. package/lib/internal/template/app-layout/visual-refresh-toolbar/compute-layout.js.map +1 -1
  40. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.d.ts +31 -0
  41. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.d.ts.map +1 -0
  42. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js +81 -0
  43. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js.map +1 -0
  44. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-drawer.d.ts.map +1 -1
  45. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-drawer.js +2 -2
  46. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/global-drawer.js.map +1 -1
  47. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +24 -17
  48. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +228 -35
  49. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +24 -17
  50. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/use-resize.d.ts +2 -1
  51. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/use-resize.d.ts.map +1 -1
  52. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/use-resize.js +2 -2
  53. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/use-resize.js.map +1 -1
  54. package/lib/internal/template/app-layout/visual-refresh-toolbar/interfaces.d.ts +12 -0
  55. package/lib/internal/template/app-layout/visual-refresh-toolbar/interfaces.d.ts.map +1 -1
  56. package/lib/internal/template/app-layout/visual-refresh-toolbar/interfaces.js.map +1 -1
  57. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +25 -23
  58. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +56 -44
  59. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +25 -23
  60. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/interfaces.d.ts +2 -0
  61. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/interfaces.d.ts.map +1 -1
  62. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/interfaces.js.map +1 -1
  63. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/props-merger.d.ts.map +1 -1
  64. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/props-merger.js +8 -1
  65. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/props-merger.js.map +1 -1
  66. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-app-layout.d.ts.map +1 -1
  67. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-app-layout.js +24 -3
  68. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-app-layout.js.map +1 -1
  69. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-skeleton-slots-attributes.d.ts.map +1 -1
  70. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-skeleton-slots-attributes.js +3 -1
  71. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-skeleton-slots-attributes.js.map +1 -1
  72. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.d.ts +4 -0
  73. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.d.ts.map +1 -1
  74. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.js +28 -4
  75. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.js.map +1 -1
  76. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.css.js +15 -12
  77. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.scoped.css +126 -24
  78. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.selectors.js +15 -12
  79. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts +2 -0
  80. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
  81. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +3 -3
  82. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  83. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.css.js +7 -5
  84. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.scoped.css +30 -22
  85. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.selectors.js +7 -5
  86. package/lib/internal/template/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.d.ts.map +1 -1
  87. package/lib/internal/template/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.js +23 -3
  88. package/lib/internal/template/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.js.map +1 -1
  89. package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
  90. package/lib/internal/template/internal/components/panel-resize-handle/index.d.ts +2 -1
  91. package/lib/internal/template/internal/components/panel-resize-handle/index.d.ts.map +1 -1
  92. package/lib/internal/template/internal/components/panel-resize-handle/index.js +18 -8
  93. package/lib/internal/template/internal/components/panel-resize-handle/index.js.map +1 -1
  94. package/lib/internal/template/internal/components/panel-resize-handle/styles.css.js +3 -2
  95. package/lib/internal/template/internal/components/panel-resize-handle/styles.scoped.css +7 -6
  96. package/lib/internal/template/internal/components/panel-resize-handle/styles.selectors.js +3 -2
  97. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.d.ts +0 -2
  98. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.d.ts.map +1 -1
  99. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.js +4 -35
  100. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.js.map +1 -1
  101. package/lib/internal/template/internal/environment.js +2 -2
  102. package/lib/internal/template/internal/environment.json +2 -2
  103. package/lib/internal/template/internal/plugins/widget/interfaces.d.ts +59 -0
  104. package/lib/internal/template/internal/plugins/widget/interfaces.d.ts.map +1 -0
  105. package/lib/internal/template/internal/plugins/widget/interfaces.js +2 -0
  106. package/lib/internal/template/internal/plugins/widget/interfaces.js.map +1 -0
  107. package/lib/internal/template/internal/plugins/widget/internal.d.ts +21 -0
  108. package/lib/internal/template/internal/plugins/widget/internal.d.ts.map +1 -0
  109. package/lib/internal/template/internal/plugins/widget/internal.js +55 -0
  110. package/lib/internal/template/internal/plugins/widget/internal.js.map +1 -0
  111. package/lib/internal/template/internal/plugins/widget.d.ts +3 -0
  112. package/lib/internal/template/internal/plugins/widget.d.ts.map +1 -0
  113. package/lib/internal/template/internal/plugins/widget.js +5 -0
  114. package/lib/internal/template/internal/plugins/widget.js.map +1 -0
  115. package/lib/internal/template/internal/types.d.ts +4 -0
  116. package/lib/internal/template/internal/types.d.ts.map +1 -1
  117. package/lib/internal/template/internal/types.js +8 -1
  118. package/lib/internal/template/internal/types.js.map +1 -1
  119. package/lib/internal/template/s3-resource-selector/s3-modal/index.d.ts.map +1 -1
  120. package/lib/internal/template/s3-resource-selector/s3-modal/index.js +1 -4
  121. package/lib/internal/template/s3-resource-selector/s3-modal/index.js.map +1 -1
  122. package/package.json +1 -1
@@ -30,16 +30,45 @@ function RuntimeDrawerWrapper({ mountContent, unmountContent, id }) {
30
30
  }, [isVisible]);
31
31
  return React.createElement("div", { ref: ref, className: styles['runtime-content-wrapper'], "data-awsui-runtime-drawer-root-id": id });
32
32
  }
33
- const mapRuntimeConfigToDrawer = (runtimeConfig) => {
33
+ function RuntimeDrawerHeader({ mountHeader, unmountHeader }) {
34
+ const ref = useRef(null);
35
+ useEffect(() => {
36
+ const container = ref.current;
37
+ mountHeader === null || mountHeader === void 0 ? void 0 : mountHeader(container);
38
+ return () => {
39
+ unmountHeader === null || unmountHeader === void 0 ? void 0 : unmountHeader(container);
40
+ };
41
+ // eslint-disable-next-line react-hooks/exhaustive-deps
42
+ }, []);
43
+ return React.createElement("div", { className: styles['runtime-header-wrapper'], ref: ref });
44
+ }
45
+ export const mapRuntimeConfigToDrawer = (runtimeConfig) => {
34
46
  var _a;
35
47
  const { mountContent, unmountContent, trigger } = runtimeConfig, runtimeDrawer = __rest(runtimeConfig, ["mountContent", "unmountContent", "trigger"]);
36
48
  return Object.assign(Object.assign({}, runtimeDrawer), { ariaLabels: Object.assign({ drawerName: (_a = runtimeDrawer.ariaLabels.content) !== null && _a !== void 0 ? _a : '' }, runtimeDrawer.ariaLabels), trigger: trigger
37
- ? {
49
+ ? Object.assign({}, (trigger.iconSvg && {
38
50
  iconSvg: (
39
51
  // eslint-disable-next-line react/no-danger
40
52
  React.createElement("span", { dangerouslySetInnerHTML: { __html: trigger.iconSvg } })),
53
+ })) : undefined, content: (React.createElement(RuntimeDrawerWrapper, { key: runtimeDrawer.id, mountContent: mountContent, unmountContent: unmountContent, id: runtimeDrawer.id })), onResize: event => {
54
+ fireNonCancelableEvent(runtimeDrawer.onResize, { size: event.detail.size, id: runtimeDrawer.id });
55
+ } });
56
+ };
57
+ export const mapRuntimeConfigToAiDrawer = (runtimeConfig) => {
58
+ var _a;
59
+ const { mountContent, unmountContent, trigger } = runtimeConfig, runtimeDrawer = __rest(runtimeConfig, ["mountContent", "unmountContent", "trigger"]);
60
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, runtimeDrawer), { ariaLabels: Object.assign({ drawerName: (_a = runtimeDrawer.ariaLabels.content) !== null && _a !== void 0 ? _a : '' }, runtimeDrawer.ariaLabels), trigger: trigger
61
+ ? {
62
+ customIcon: (trigger === null || trigger === void 0 ? void 0 : trigger.customIcon) ? (
63
+ // eslint-disable-next-line react/no-danger
64
+ React.createElement("span", { style: { lineHeight: 0 }, dangerouslySetInnerHTML: { __html: trigger.customIcon } })) : undefined,
65
+ iconSvg: trigger.iconSvg ? (
66
+ // eslint-disable-next-line react/no-danger
67
+ React.createElement("span", { dangerouslySetInnerHTML: { __html: trigger.iconSvg } })) : undefined,
41
68
  }
42
- : undefined, content: (React.createElement(RuntimeDrawerWrapper, { key: runtimeDrawer.id, mountContent: mountContent, unmountContent: unmountContent, id: runtimeDrawer.id })), onResize: event => {
69
+ : undefined, content: (React.createElement(RuntimeDrawerWrapper, { key: runtimeDrawer.id, mountContent: mountContent, unmountContent: unmountContent, id: runtimeDrawer.id })) }), (runtimeDrawer.mountHeader && {
70
+ header: (React.createElement(RuntimeDrawerHeader, { mountHeader: runtimeDrawer.mountHeader, unmountHeader: runtimeDrawer.unmountHeader })),
71
+ })), { onResize: event => {
43
72
  fireNonCancelableEvent(runtimeDrawer.onResize, { size: event.detail.size, id: runtimeDrawer.id });
44
73
  } });
45
74
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app-layout/runtime-drawer/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\nimport React, { useContext, useEffect, useRef } from 'react';\n\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../../internal/events';\nimport {\n DrawerConfig as RuntimeDrawerConfig,\n DrawerStateChangeParams,\n} from '../../internal/plugins/controllers/drawers';\nimport { sortByPriority } from '../../internal/plugins/helpers/utils';\nimport { AppLayoutProps } from '../interfaces';\nimport { ActiveDrawersContext } from '../utils/visibility-context';\n\nimport styles from './styles.css.js';\n\nexport interface RuntimeDrawer extends AppLayoutProps.Drawer {\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n}\n\nexport interface DrawersLayout {\n global: Array<RuntimeDrawer>;\n localBefore: Array<RuntimeDrawer>;\n localAfter: Array<RuntimeDrawer>;\n}\n\ntype VisibilityCallback = (isVisible: boolean) => void;\n\ninterface RuntimeContentWrapperProps {\n id?: string;\n mountContent: RuntimeDrawerConfig['mountContent'];\n unmountContent: RuntimeDrawerConfig['unmountContent'];\n}\n\nfunction RuntimeDrawerWrapper({ mountContent, unmountContent, id }: RuntimeContentWrapperProps) {\n const ref = useRef<HTMLDivElement>(null);\n const visibilityChangeCallback = useRef<VisibilityCallback | null>(null);\n const activeDrawersIds = useContext(ActiveDrawersContext);\n const isVisible = !!id && activeDrawersIds.includes(id);\n\n useEffect(() => {\n const container = ref.current!;\n mountContent(container, {\n onVisibilityChange: cb => {\n visibilityChangeCallback.current = cb;\n },\n });\n return () => {\n unmountContent(container);\n visibilityChangeCallback.current = null;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n visibilityChangeCallback.current?.(isVisible);\n }, [isVisible]);\n\n return <div ref={ref} className={styles['runtime-content-wrapper']} data-awsui-runtime-drawer-root-id={id}></div>;\n}\n\nconst mapRuntimeConfigToDrawer = (\n runtimeConfig: RuntimeDrawerConfig\n): AppLayoutProps.Drawer & {\n orderPriority?: number;\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n} => {\n const { mountContent, unmountContent, trigger, ...runtimeDrawer } = runtimeConfig;\n\n return {\n ...runtimeDrawer,\n ariaLabels: { drawerName: runtimeDrawer.ariaLabels.content ?? '', ...runtimeDrawer.ariaLabels },\n trigger: trigger\n ? {\n iconSvg: (\n // eslint-disable-next-line react/no-danger\n <span dangerouslySetInnerHTML={{ __html: trigger.iconSvg }} />\n ),\n }\n : undefined,\n content: (\n <RuntimeDrawerWrapper\n key={runtimeDrawer.id}\n mountContent={mountContent}\n unmountContent={unmountContent}\n id={runtimeDrawer.id}\n />\n ),\n onResize: event => {\n fireNonCancelableEvent(runtimeDrawer.onResize, { size: event.detail.size, id: runtimeDrawer.id });\n },\n };\n};\n\nexport function convertRuntimeDrawers(\n localDrawers: Array<RuntimeDrawerConfig>,\n globalDrawers: Array<RuntimeDrawerConfig>\n): DrawersLayout {\n const converted = localDrawers.map(mapRuntimeConfigToDrawer);\n const sorted = sortByPriority(converted);\n return {\n global: sortByPriority(globalDrawers.map(mapRuntimeConfigToDrawer)),\n localBefore: sorted.filter(item => (item.orderPriority ?? 0) > 0),\n localAfter: sorted.filter(item => (item.orderPriority ?? 0) <= 0),\n };\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app-layout/runtime-drawer/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\nimport React, { useContext, useEffect, useRef } from 'react';\n\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../../internal/events';\nimport {\n DrawerConfig as RuntimeDrawerConfig,\n DrawerStateChangeParams,\n} from '../../internal/plugins/controllers/drawers';\nimport { sortByPriority } from '../../internal/plugins/helpers/utils';\nimport { DrawerPayload as RuntimeAiDrawerConfig } from '../../internal/plugins/widget/interfaces';\nimport { AppLayoutProps } from '../interfaces';\nimport { ActiveDrawersContext } from '../utils/visibility-context';\n\nimport styles from './styles.css.js';\n\nexport interface RuntimeDrawer extends AppLayoutProps.Drawer {\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n}\n\nexport interface DrawersLayout {\n global: Array<RuntimeDrawer>;\n localBefore: Array<RuntimeDrawer>;\n localAfter: Array<RuntimeDrawer>;\n}\n\ntype VisibilityCallback = (isVisible: boolean) => void;\n\ninterface RuntimeContentWrapperProps {\n id?: string;\n mountContent: RuntimeDrawerConfig['mountContent'];\n unmountContent: RuntimeDrawerConfig['unmountContent'];\n}\n\nfunction RuntimeDrawerWrapper({ mountContent, unmountContent, id }: RuntimeContentWrapperProps) {\n const ref = useRef<HTMLDivElement>(null);\n const visibilityChangeCallback = useRef<VisibilityCallback | null>(null);\n const activeDrawersIds = useContext(ActiveDrawersContext);\n const isVisible = !!id && activeDrawersIds.includes(id);\n\n useEffect(() => {\n const container = ref.current!;\n mountContent(container, {\n onVisibilityChange: cb => {\n visibilityChangeCallback.current = cb;\n },\n });\n return () => {\n unmountContent(container);\n visibilityChangeCallback.current = null;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n visibilityChangeCallback.current?.(isVisible);\n }, [isVisible]);\n\n return <div ref={ref} className={styles['runtime-content-wrapper']} data-awsui-runtime-drawer-root-id={id}></div>;\n}\n\ninterface RuntimeContentHeaderProps {\n mountHeader: (container: HTMLElement) => void;\n unmountHeader?: (container: HTMLElement) => void;\n}\n\nfunction RuntimeDrawerHeader({ mountHeader, unmountHeader }: RuntimeContentHeaderProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const container = ref.current!;\n mountHeader?.(container);\n return () => {\n unmountHeader?.(container);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return <div className={styles['runtime-header-wrapper']} ref={ref} />;\n}\n\nexport const mapRuntimeConfigToDrawer = (\n runtimeConfig: RuntimeDrawerConfig\n): AppLayoutProps.Drawer & {\n orderPriority?: number;\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n} => {\n const { mountContent, unmountContent, trigger, ...runtimeDrawer } = runtimeConfig;\n\n return {\n ...runtimeDrawer,\n ariaLabels: { drawerName: runtimeDrawer.ariaLabels.content ?? '', ...runtimeDrawer.ariaLabels },\n trigger: trigger\n ? {\n ...(trigger.iconSvg && {\n iconSvg: (\n // eslint-disable-next-line react/no-danger\n <span dangerouslySetInnerHTML={{ __html: trigger.iconSvg }} />\n ),\n }),\n }\n : undefined,\n content: (\n <RuntimeDrawerWrapper\n key={runtimeDrawer.id}\n mountContent={mountContent}\n unmountContent={unmountContent}\n id={runtimeDrawer.id}\n />\n ),\n onResize: event => {\n fireNonCancelableEvent(runtimeDrawer.onResize, { size: event.detail.size, id: runtimeDrawer.id });\n },\n };\n};\n\nexport const mapRuntimeConfigToAiDrawer = (\n runtimeConfig: RuntimeAiDrawerConfig\n): AppLayoutProps.Drawer & {\n orderPriority?: number;\n onToggle?: NonCancelableEventHandler<DrawerStateChangeParams>;\n} => {\n const { mountContent, unmountContent, trigger, ...runtimeDrawer } = runtimeConfig;\n\n return {\n ...runtimeDrawer,\n ariaLabels: { drawerName: runtimeDrawer.ariaLabels.content ?? '', ...runtimeDrawer.ariaLabels },\n trigger: trigger\n ? {\n customIcon: trigger?.customIcon ? (\n // eslint-disable-next-line react/no-danger\n <span style={{ lineHeight: 0 }} dangerouslySetInnerHTML={{ __html: trigger.customIcon }} />\n ) : undefined,\n iconSvg: trigger.iconSvg ? (\n // eslint-disable-next-line react/no-danger\n <span dangerouslySetInnerHTML={{ __html: trigger.iconSvg }} />\n ) : undefined,\n }\n : undefined,\n content: (\n <RuntimeDrawerWrapper\n key={runtimeDrawer.id}\n mountContent={mountContent}\n unmountContent={unmountContent}\n id={runtimeDrawer.id}\n />\n ),\n ...(runtimeDrawer.mountHeader && {\n header: (\n <RuntimeDrawerHeader mountHeader={runtimeDrawer.mountHeader} unmountHeader={runtimeDrawer.unmountHeader} />\n ),\n }),\n onResize: event => {\n fireNonCancelableEvent(runtimeDrawer.onResize, { size: event.detail.size, id: runtimeDrawer.id });\n },\n };\n};\n\nexport function convertRuntimeDrawers(\n localDrawers: Array<RuntimeDrawerConfig>,\n globalDrawers: Array<RuntimeDrawerConfig>\n): DrawersLayout {\n const converted = localDrawers.map(mapRuntimeConfigToDrawer);\n const sorted = sortByPriority(converted);\n return {\n global: sortByPriority(globalDrawers.map(mapRuntimeConfigToDrawer)),\n localBefore: sorted.filter(item => (item.orderPriority ?? 0) > 0),\n localAfter: sorted.filter(item => (item.orderPriority ?? 0) <= 0),\n };\n}\n"]}
@@ -1,6 +1,7 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "runtime-content-wrapper": "awsui_runtime-content-wrapper_14m8x_1m9bu_5"
4
+ "runtime-content-wrapper": "awsui_runtime-content-wrapper_14m8x_spfr5_5",
5
+ "runtime-header-wrapper": "awsui_runtime-header-wrapper_14m8x_spfr5_9"
5
6
  };
6
7
 
@@ -2,6 +2,10 @@
2
2
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- .awsui_runtime-content-wrapper_14m8x_1m9bu_5:not(#\9) {
5
+ .awsui_runtime-content-wrapper_14m8x_spfr5_5:not(#\9) {
6
+ display: contents;
7
+ }
8
+
9
+ .awsui_runtime-header-wrapper_14m8x_spfr5_9:not(#\9) {
6
10
  display: contents;
7
11
  }
@@ -2,6 +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
- "runtime-content-wrapper": "awsui_runtime-content-wrapper_14m8x_1m9bu_5"
5
+ "runtime-content-wrapper": "awsui_runtime-content-wrapper_14m8x_spfr5_5",
6
+ "runtime-header-wrapper": "awsui_runtime-header-wrapper_14m8x_spfr5_9"
6
7
  };
7
8
 
@@ -1,29 +1,31 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_1fj9k_jfqbk_5",
5
- "navigation": "awsui_navigation_1fj9k_jfqbk_6",
6
- "navigation-toggle": "awsui_navigation-toggle_1fj9k_jfqbk_7",
7
- "navigation-close": "awsui_navigation-close_1fj9k_jfqbk_8",
8
- "content": "awsui_content_1fj9k_jfqbk_9",
9
- "notifications": "awsui_notifications_1fj9k_jfqbk_10",
10
- "breadcrumbs": "awsui_breadcrumbs_1fj9k_jfqbk_11",
11
- "tools": "awsui_tools_1fj9k_jfqbk_12",
12
- "tools-close": "awsui_tools-close_1fj9k_jfqbk_13",
13
- "tools-toggle": "awsui_tools-toggle_1fj9k_jfqbk_14",
14
- "drawer-closed": "awsui_drawer-closed_1fj9k_jfqbk_15",
15
- "mobile-bar": "awsui_mobile-bar_1fj9k_jfqbk_16",
16
- "disable-body-scroll-root": "awsui_disable-body-scroll-root_1fj9k_jfqbk_17",
17
- "drawers-trigger": "awsui_drawers-trigger_1fj9k_jfqbk_18",
18
- "drawers-trigger-global": "awsui_drawers-trigger-global_1fj9k_jfqbk_19",
19
- "drawers-trigger-with-badge": "awsui_drawers-trigger-with-badge_1fj9k_jfqbk_20",
20
- "active-drawer": "awsui_active-drawer_1fj9k_jfqbk_21",
21
- "active-drawer-close-button": "awsui_active-drawer-close-button_1fj9k_jfqbk_22",
22
- "overflow-menu": "awsui_overflow-menu_1fj9k_jfqbk_23",
23
- "drawers-slider": "awsui_drawers-slider_1fj9k_jfqbk_24",
24
- "toolbar": "awsui_toolbar_1fj9k_jfqbk_25",
25
- "trigger-wrapper-tooltip-visible": "awsui_trigger-wrapper-tooltip-visible_1fj9k_jfqbk_26",
26
- "trigger-tooltip": "awsui_trigger-tooltip_1fj9k_jfqbk_27",
27
- "active-drawer-expanded-mode-button": "awsui_active-drawer-expanded-mode-button_1fj9k_jfqbk_28"
4
+ "root": "awsui_root_1fj9k_q6akd_5",
5
+ "navigation": "awsui_navigation_1fj9k_q6akd_6",
6
+ "navigation-toggle": "awsui_navigation-toggle_1fj9k_q6akd_7",
7
+ "navigation-close": "awsui_navigation-close_1fj9k_q6akd_8",
8
+ "content": "awsui_content_1fj9k_q6akd_9",
9
+ "notifications": "awsui_notifications_1fj9k_q6akd_10",
10
+ "breadcrumbs": "awsui_breadcrumbs_1fj9k_q6akd_11",
11
+ "tools": "awsui_tools_1fj9k_q6akd_12",
12
+ "tools-close": "awsui_tools-close_1fj9k_q6akd_13",
13
+ "tools-toggle": "awsui_tools-toggle_1fj9k_q6akd_14",
14
+ "drawer-closed": "awsui_drawer-closed_1fj9k_q6akd_15",
15
+ "mobile-bar": "awsui_mobile-bar_1fj9k_q6akd_16",
16
+ "disable-body-scroll-root": "awsui_disable-body-scroll-root_1fj9k_q6akd_17",
17
+ "drawers-trigger": "awsui_drawers-trigger_1fj9k_q6akd_18",
18
+ "drawers-trigger-global": "awsui_drawers-trigger-global_1fj9k_q6akd_19",
19
+ "drawers-trigger-with-badge": "awsui_drawers-trigger-with-badge_1fj9k_q6akd_20",
20
+ "active-drawer": "awsui_active-drawer_1fj9k_q6akd_21",
21
+ "active-drawer-close-button": "awsui_active-drawer-close-button_1fj9k_q6akd_22",
22
+ "overflow-menu": "awsui_overflow-menu_1fj9k_q6akd_23",
23
+ "drawers-slider": "awsui_drawers-slider_1fj9k_q6akd_24",
24
+ "toolbar": "awsui_toolbar_1fj9k_q6akd_25",
25
+ "trigger-wrapper-tooltip-visible": "awsui_trigger-wrapper-tooltip-visible_1fj9k_q6akd_26",
26
+ "trigger-tooltip": "awsui_trigger-tooltip_1fj9k_q6akd_27",
27
+ "active-drawer-expanded-mode-button": "awsui_active-drawer-expanded-mode-button_1fj9k_q6akd_28",
28
+ "ai-drawer-toggle": "awsui_ai-drawer-toggle_1fj9k_q6akd_29",
29
+ "active-ai-drawer-leave-expanded-mode-custom-button": "awsui_active-ai-drawer-leave-expanded-mode-custom-button_1fj9k_q6akd_30"
28
30
  };
29
31
 
@@ -2,29 +2,31 @@
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_1fj9k_jfqbk_5:not(#\9),
6
- .awsui_navigation_1fj9k_jfqbk_6:not(#\9),
7
- .awsui_navigation-toggle_1fj9k_jfqbk_7:not(#\9),
8
- .awsui_navigation-close_1fj9k_jfqbk_8:not(#\9),
9
- .awsui_content_1fj9k_jfqbk_9:not(#\9),
10
- .awsui_notifications_1fj9k_jfqbk_10:not(#\9),
11
- .awsui_breadcrumbs_1fj9k_jfqbk_11:not(#\9),
12
- .awsui_tools_1fj9k_jfqbk_12:not(#\9),
13
- .awsui_tools-close_1fj9k_jfqbk_13:not(#\9),
14
- .awsui_tools-toggle_1fj9k_jfqbk_14:not(#\9),
15
- .awsui_drawer-closed_1fj9k_jfqbk_15:not(#\9),
16
- .awsui_mobile-bar_1fj9k_jfqbk_16:not(#\9),
17
- .awsui_disable-body-scroll-root_1fj9k_jfqbk_17:not(#\9),
18
- .awsui_drawers-trigger_1fj9k_jfqbk_18:not(#\9),
19
- .awsui_drawers-trigger-global_1fj9k_jfqbk_19:not(#\9),
20
- .awsui_drawers-trigger-with-badge_1fj9k_jfqbk_20:not(#\9),
21
- .awsui_active-drawer_1fj9k_jfqbk_21:not(#\9),
22
- .awsui_active-drawer-close-button_1fj9k_jfqbk_22:not(#\9),
23
- .awsui_overflow-menu_1fj9k_jfqbk_23:not(#\9),
24
- .awsui_drawers-slider_1fj9k_jfqbk_24:not(#\9),
25
- .awsui_toolbar_1fj9k_jfqbk_25:not(#\9),
26
- .awsui_trigger-wrapper-tooltip-visible_1fj9k_jfqbk_26:not(#\9),
27
- .awsui_trigger-tooltip_1fj9k_jfqbk_27:not(#\9),
28
- .awsui_active-drawer-expanded-mode-button_1fj9k_jfqbk_28:not(#\9) {
5
+ .awsui_root_1fj9k_q6akd_5:not(#\9),
6
+ .awsui_navigation_1fj9k_q6akd_6:not(#\9),
7
+ .awsui_navigation-toggle_1fj9k_q6akd_7:not(#\9),
8
+ .awsui_navigation-close_1fj9k_q6akd_8:not(#\9),
9
+ .awsui_content_1fj9k_q6akd_9:not(#\9),
10
+ .awsui_notifications_1fj9k_q6akd_10:not(#\9),
11
+ .awsui_breadcrumbs_1fj9k_q6akd_11:not(#\9),
12
+ .awsui_tools_1fj9k_q6akd_12:not(#\9),
13
+ .awsui_tools-close_1fj9k_q6akd_13:not(#\9),
14
+ .awsui_tools-toggle_1fj9k_q6akd_14:not(#\9),
15
+ .awsui_drawer-closed_1fj9k_q6akd_15:not(#\9),
16
+ .awsui_mobile-bar_1fj9k_q6akd_16:not(#\9),
17
+ .awsui_disable-body-scroll-root_1fj9k_q6akd_17:not(#\9),
18
+ .awsui_drawers-trigger_1fj9k_q6akd_18:not(#\9),
19
+ .awsui_drawers-trigger-global_1fj9k_q6akd_19:not(#\9),
20
+ .awsui_drawers-trigger-with-badge_1fj9k_q6akd_20:not(#\9),
21
+ .awsui_active-drawer_1fj9k_q6akd_21:not(#\9),
22
+ .awsui_active-drawer-close-button_1fj9k_q6akd_22:not(#\9),
23
+ .awsui_overflow-menu_1fj9k_q6akd_23:not(#\9),
24
+ .awsui_drawers-slider_1fj9k_q6akd_24:not(#\9),
25
+ .awsui_toolbar_1fj9k_q6akd_25:not(#\9),
26
+ .awsui_trigger-wrapper-tooltip-visible_1fj9k_q6akd_26:not(#\9),
27
+ .awsui_trigger-tooltip_1fj9k_q6akd_27:not(#\9),
28
+ .awsui_active-drawer-expanded-mode-button_1fj9k_q6akd_28:not(#\9),
29
+ .awsui_ai-drawer-toggle_1fj9k_q6akd_29:not(#\9),
30
+ .awsui_active-ai-drawer-leave-expanded-mode-custom-button_1fj9k_q6akd_30:not(#\9) {
29
31
  /* used in test-utils */
30
32
  }
@@ -2,29 +2,31 @@
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_1fj9k_jfqbk_5",
6
- "navigation": "awsui_navigation_1fj9k_jfqbk_6",
7
- "navigation-toggle": "awsui_navigation-toggle_1fj9k_jfqbk_7",
8
- "navigation-close": "awsui_navigation-close_1fj9k_jfqbk_8",
9
- "content": "awsui_content_1fj9k_jfqbk_9",
10
- "notifications": "awsui_notifications_1fj9k_jfqbk_10",
11
- "breadcrumbs": "awsui_breadcrumbs_1fj9k_jfqbk_11",
12
- "tools": "awsui_tools_1fj9k_jfqbk_12",
13
- "tools-close": "awsui_tools-close_1fj9k_jfqbk_13",
14
- "tools-toggle": "awsui_tools-toggle_1fj9k_jfqbk_14",
15
- "drawer-closed": "awsui_drawer-closed_1fj9k_jfqbk_15",
16
- "mobile-bar": "awsui_mobile-bar_1fj9k_jfqbk_16",
17
- "disable-body-scroll-root": "awsui_disable-body-scroll-root_1fj9k_jfqbk_17",
18
- "drawers-trigger": "awsui_drawers-trigger_1fj9k_jfqbk_18",
19
- "drawers-trigger-global": "awsui_drawers-trigger-global_1fj9k_jfqbk_19",
20
- "drawers-trigger-with-badge": "awsui_drawers-trigger-with-badge_1fj9k_jfqbk_20",
21
- "active-drawer": "awsui_active-drawer_1fj9k_jfqbk_21",
22
- "active-drawer-close-button": "awsui_active-drawer-close-button_1fj9k_jfqbk_22",
23
- "overflow-menu": "awsui_overflow-menu_1fj9k_jfqbk_23",
24
- "drawers-slider": "awsui_drawers-slider_1fj9k_jfqbk_24",
25
- "toolbar": "awsui_toolbar_1fj9k_jfqbk_25",
26
- "trigger-wrapper-tooltip-visible": "awsui_trigger-wrapper-tooltip-visible_1fj9k_jfqbk_26",
27
- "trigger-tooltip": "awsui_trigger-tooltip_1fj9k_jfqbk_27",
28
- "active-drawer-expanded-mode-button": "awsui_active-drawer-expanded-mode-button_1fj9k_jfqbk_28"
5
+ "root": "awsui_root_1fj9k_q6akd_5",
6
+ "navigation": "awsui_navigation_1fj9k_q6akd_6",
7
+ "navigation-toggle": "awsui_navigation-toggle_1fj9k_q6akd_7",
8
+ "navigation-close": "awsui_navigation-close_1fj9k_q6akd_8",
9
+ "content": "awsui_content_1fj9k_q6akd_9",
10
+ "notifications": "awsui_notifications_1fj9k_q6akd_10",
11
+ "breadcrumbs": "awsui_breadcrumbs_1fj9k_q6akd_11",
12
+ "tools": "awsui_tools_1fj9k_q6akd_12",
13
+ "tools-close": "awsui_tools-close_1fj9k_q6akd_13",
14
+ "tools-toggle": "awsui_tools-toggle_1fj9k_q6akd_14",
15
+ "drawer-closed": "awsui_drawer-closed_1fj9k_q6akd_15",
16
+ "mobile-bar": "awsui_mobile-bar_1fj9k_q6akd_16",
17
+ "disable-body-scroll-root": "awsui_disable-body-scroll-root_1fj9k_q6akd_17",
18
+ "drawers-trigger": "awsui_drawers-trigger_1fj9k_q6akd_18",
19
+ "drawers-trigger-global": "awsui_drawers-trigger-global_1fj9k_q6akd_19",
20
+ "drawers-trigger-with-badge": "awsui_drawers-trigger-with-badge_1fj9k_q6akd_20",
21
+ "active-drawer": "awsui_active-drawer_1fj9k_q6akd_21",
22
+ "active-drawer-close-button": "awsui_active-drawer-close-button_1fj9k_q6akd_22",
23
+ "overflow-menu": "awsui_overflow-menu_1fj9k_q6akd_23",
24
+ "drawers-slider": "awsui_drawers-slider_1fj9k_q6akd_24",
25
+ "toolbar": "awsui_toolbar_1fj9k_q6akd_25",
26
+ "trigger-wrapper-tooltip-visible": "awsui_trigger-wrapper-tooltip-visible_1fj9k_q6akd_26",
27
+ "trigger-tooltip": "awsui_trigger-tooltip_1fj9k_q6akd_27",
28
+ "active-drawer-expanded-mode-button": "awsui_active-drawer-expanded-mode-button_1fj9k_q6akd_28",
29
+ "ai-drawer-toggle": "awsui_ai-drawer-toggle_1fj9k_q6akd_29",
30
+ "active-ai-drawer-leave-expanded-mode-custom-button": "awsui_active-ai-drawer-leave-expanded-mode-custom-button_1fj9k_q6akd_30"
29
31
  };
30
32
 
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  export interface SizeControlProps {
3
- position: 'side' | 'bottom';
3
+ position: 'side-start' | 'side' | 'bottom';
4
4
  panelRef?: React.RefObject<HTMLDivElement>;
5
5
  handleRef?: React.RefObject<HTMLDivElement>;
6
6
  onResize: (newSize: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/utils/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/utils/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/app-layout/utils/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nexport interface SizeControlProps {\n position: 'side' | 'bottom';\n panelRef?: React.RefObject<HTMLDivElement>;\n handleRef?: React.RefObject<HTMLDivElement>;\n onResize: (newSize: number) => void;\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/app-layout/utils/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nexport interface SizeControlProps {\n position: 'side-start' | 'side' | 'bottom';\n panelRef?: React.RefObject<HTMLDivElement>;\n handleRef?: React.RefObject<HTMLDivElement>;\n onResize: (newSize: number) => void;\n}\n"]}
@@ -0,0 +1,27 @@
1
+ export interface OnChangeParams {
2
+ initiatedByUserAction: boolean;
3
+ }
4
+ export declare const MIN_DRAWER_SIZE = 290;
5
+ interface UseDrawersProps {
6
+ isEnabled: boolean;
7
+ onAiDrawerFocus: () => void;
8
+ expandedDrawerId: string | null;
9
+ setExpandedDrawerId: (value: string | null) => void;
10
+ }
11
+ export declare function useAiDrawer({ isEnabled, onAiDrawerFocus, expandedDrawerId, setExpandedDrawerId }: UseDrawersProps): {
12
+ aiDrawer: (import("..").AppLayoutProps.Drawer & {
13
+ orderPriority?: number | undefined;
14
+ onToggle?: import("../../internal/events").NonCancelableEventHandler<import("../../internal/plugins/controllers/drawers").DrawerStateChangeParams> | undefined;
15
+ }) | null;
16
+ onActiveAiDrawerChange: (newDrawerId: string | null, { initiatedByUserAction }?: OnChangeParams) => void;
17
+ activeAiDrawer: (import("..").AppLayoutProps.Drawer & {
18
+ orderPriority?: number | undefined;
19
+ onToggle?: import("../../internal/events").NonCancelableEventHandler<import("../../internal/plugins/controllers/drawers").DrawerStateChangeParams> | undefined;
20
+ }) | null;
21
+ activeAiDrawerId: string | null;
22
+ activeAiDrawerSize: number;
23
+ minAiDrawerSize: number;
24
+ onActiveAiDrawerResize: (size: number) => void;
25
+ };
26
+ export {};
27
+ //# sourceMappingURL=use-ai-drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ai-drawer.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/utils/use-ai-drawer.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,cAAc;IAC7B,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAsED,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,UAAU,eAAe;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACrD;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,eAAe;;;;;0CAUjG,MAAM,GAAG,IAAI,8BACC,cAAc;;;;;;;;mCAPL,MAAM;EAwC7C"}
@@ -0,0 +1,104 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { useStableCallback } from '@cloudscape-design/component-toolkit/internal';
5
+ import { fireNonCancelableEvent } from '../../internal/events';
6
+ import { metrics } from '../../internal/metrics';
7
+ import { getAppLayoutInitialState, registerAppLayoutHandler } from '../../internal/plugins/widget/internal';
8
+ import { assertNever } from '../../internal/types';
9
+ import { mapRuntimeConfigToAiDrawer } from '../runtime-drawer';
10
+ const DEFAULT_ON_CHANGE_PARAMS = { initiatedByUserAction: true };
11
+ function useRuntimeAiDrawer(isEnabled, activeAiDrawerId, onActiveAiDrawerChange, onActiveAiDrawerResize) {
12
+ const [aiDrawer, setAiDrawer] = useState(null);
13
+ const appLayoutMessageHandler = useStableCallback((event) => {
14
+ if (event.type === 'registerLeftDrawer') {
15
+ setAiDrawer(event.payload);
16
+ if (!aiDrawerWasOpenRef.current && event.payload.defaultActive) {
17
+ onAiDrawersChangeStable(event.payload.id, { initiatedByUserAction: false });
18
+ }
19
+ return;
20
+ }
21
+ if (aiDrawer && aiDrawer.id !== event.payload.id) {
22
+ metrics.sendOpsMetricObject('awsui-widget-drawer-incorrect-id', { oldId: aiDrawer === null || aiDrawer === void 0 ? void 0 : aiDrawer.id, newId: event.payload.id });
23
+ return;
24
+ }
25
+ switch (event.type) {
26
+ case 'updateDrawerConfig':
27
+ setAiDrawer(current => (current ? Object.assign(Object.assign({}, current), event.payload) : current));
28
+ break;
29
+ case 'openDrawer':
30
+ onActiveAiDrawerChangeStable(event.payload.id, { initiatedByUserAction: false });
31
+ break;
32
+ case 'closeDrawer':
33
+ onActiveAiDrawerChangeStable(null, { initiatedByUserAction: false });
34
+ break;
35
+ case 'resizeDrawer':
36
+ onActiveAiDrawerResizeStable(event.payload.size);
37
+ break;
38
+ /* istanbul ignore next: this code is not intended to be visited */
39
+ default:
40
+ assertNever(event);
41
+ }
42
+ });
43
+ const onAiDrawersChangeStable = useStableCallback(onActiveAiDrawerChange);
44
+ const onActiveAiDrawerResizeStable = useStableCallback(onActiveAiDrawerResize);
45
+ const onActiveAiDrawerChangeStable = useStableCallback(onActiveAiDrawerChange);
46
+ const aiDrawerWasOpenRef = useRef(false);
47
+ aiDrawerWasOpenRef.current = aiDrawerWasOpenRef.current || !!activeAiDrawerId;
48
+ useEffect(() => {
49
+ var _a;
50
+ if (!isEnabled) {
51
+ return;
52
+ }
53
+ const initialDrawerMessage = (_a = getAppLayoutInitialState()) === null || _a === void 0 ? void 0 : _a.find(message => message.type === 'registerLeftDrawer');
54
+ if (initialDrawerMessage && initialDrawerMessage.type === 'registerLeftDrawer') {
55
+ setAiDrawer(initialDrawerMessage.payload);
56
+ if (!aiDrawerWasOpenRef.current && initialDrawerMessage.payload.defaultActive) {
57
+ onAiDrawersChangeStable(initialDrawerMessage.payload.id, { initiatedByUserAction: false });
58
+ }
59
+ }
60
+ const unsubscribe = registerAppLayoutHandler(appLayoutMessageHandler);
61
+ return () => {
62
+ unsubscribe();
63
+ setAiDrawer(null);
64
+ };
65
+ }, [isEnabled, appLayoutMessageHandler, onAiDrawersChangeStable, onActiveAiDrawerResizeStable]);
66
+ return aiDrawer && mapRuntimeConfigToAiDrawer(aiDrawer);
67
+ }
68
+ export const MIN_DRAWER_SIZE = 290;
69
+ export function useAiDrawer({ isEnabled, onAiDrawerFocus, expandedDrawerId, setExpandedDrawerId }) {
70
+ var _a, _b;
71
+ const [activeAiDrawerId, setActiveAiDrawerId] = useState(null);
72
+ const [size, setSize] = useState(null);
73
+ function onActiveAiDrawerResize(size) {
74
+ setSize(size);
75
+ fireNonCancelableEvent(activeAiDrawer === null || activeAiDrawer === void 0 ? void 0 : activeAiDrawer.onResize, { id: activeAiDrawerId, size });
76
+ }
77
+ function onActiveAiDrawerChange(newDrawerId, { initiatedByUserAction } = DEFAULT_ON_CHANGE_PARAMS) {
78
+ setActiveAiDrawerId(newDrawerId);
79
+ if (newDrawerId) {
80
+ fireNonCancelableEvent(aiDrawer === null || aiDrawer === void 0 ? void 0 : aiDrawer.onToggle, { isOpen: true, initiatedByUserAction });
81
+ }
82
+ if (activeAiDrawerId) {
83
+ fireNonCancelableEvent(aiDrawer === null || aiDrawer === void 0 ? void 0 : aiDrawer.onToggle, { isOpen: false, initiatedByUserAction });
84
+ if (activeAiDrawerId === expandedDrawerId) {
85
+ setExpandedDrawerId === null || setExpandedDrawerId === void 0 ? void 0 : setExpandedDrawerId(null);
86
+ }
87
+ }
88
+ onAiDrawerFocus === null || onAiDrawerFocus === void 0 ? void 0 : onAiDrawerFocus();
89
+ }
90
+ const aiDrawer = useRuntimeAiDrawer(isEnabled, activeAiDrawerId, onActiveAiDrawerChange, onActiveAiDrawerResize);
91
+ const activeAiDrawer = activeAiDrawerId && activeAiDrawerId === (aiDrawer === null || aiDrawer === void 0 ? void 0 : aiDrawer.id) ? aiDrawer : null;
92
+ const activeAiDrawerSize = activeAiDrawerId ? ((_a = size !== null && size !== void 0 ? size : activeAiDrawer === null || activeAiDrawer === void 0 ? void 0 : activeAiDrawer.defaultSize) !== null && _a !== void 0 ? _a : MIN_DRAWER_SIZE) : 0;
93
+ const minAiDrawerSize = Math.min((_b = activeAiDrawer === null || activeAiDrawer === void 0 ? void 0 : activeAiDrawer.defaultSize) !== null && _b !== void 0 ? _b : MIN_DRAWER_SIZE, MIN_DRAWER_SIZE);
94
+ return {
95
+ aiDrawer,
96
+ onActiveAiDrawerChange,
97
+ activeAiDrawer,
98
+ activeAiDrawerId,
99
+ activeAiDrawerSize,
100
+ minAiDrawerSize,
101
+ onActiveAiDrawerResize,
102
+ };
103
+ }
104
+ //# sourceMappingURL=use-ai-drawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ai-drawer.js","sourceRoot":"","sources":["../../../../src/app-layout/utils/use-ai-drawer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useRef, useState } from 'react';\n\nimport { useStableCallback } from '@cloudscape-design/component-toolkit/internal';\n\nimport { fireNonCancelableEvent } from '../../internal/events';\nimport { metrics } from '../../internal/metrics';\nimport { AppLayoutMessage, DrawerPayload as RuntimeAiDrawerConfig } from '../../internal/plugins/widget/interfaces';\nimport { getAppLayoutInitialState, registerAppLayoutHandler } from '../../internal/plugins/widget/internal';\nimport { assertNever } from '../../internal/types';\nimport { mapRuntimeConfigToAiDrawer } from '../runtime-drawer';\n\nexport interface OnChangeParams {\n initiatedByUserAction: boolean;\n}\n\nconst DEFAULT_ON_CHANGE_PARAMS = { initiatedByUserAction: true };\n\nfunction useRuntimeAiDrawer(\n isEnabled: boolean,\n activeAiDrawerId: string | null,\n onActiveAiDrawerChange: (newDrawerId: string | null, { initiatedByUserAction }: OnChangeParams) => void,\n onActiveAiDrawerResize: (size: number) => void\n) {\n const [aiDrawer, setAiDrawer] = useState<RuntimeAiDrawerConfig | null>(null);\n const appLayoutMessageHandler = useStableCallback((event: AppLayoutMessage) => {\n if (event.type === 'registerLeftDrawer') {\n setAiDrawer(event.payload);\n if (!aiDrawerWasOpenRef.current && event.payload.defaultActive) {\n onAiDrawersChangeStable(event.payload.id, { initiatedByUserAction: false });\n }\n return;\n }\n if (aiDrawer && aiDrawer.id !== event.payload.id) {\n metrics.sendOpsMetricObject('awsui-widget-drawer-incorrect-id', { oldId: aiDrawer?.id, newId: event.payload.id });\n return;\n }\n switch (event.type) {\n case 'updateDrawerConfig':\n setAiDrawer(current => (current ? { ...current, ...event.payload } : current));\n break;\n case 'openDrawer':\n onActiveAiDrawerChangeStable(event.payload.id, { initiatedByUserAction: false });\n break;\n case 'closeDrawer':\n onActiveAiDrawerChangeStable(null, { initiatedByUserAction: false });\n break;\n case 'resizeDrawer':\n onActiveAiDrawerResizeStable(event.payload.size);\n break;\n /* istanbul ignore next: this code is not intended to be visited */\n default:\n assertNever(event);\n }\n });\n const onAiDrawersChangeStable = useStableCallback(onActiveAiDrawerChange);\n const onActiveAiDrawerResizeStable = useStableCallback(onActiveAiDrawerResize);\n const onActiveAiDrawerChangeStable = useStableCallback(onActiveAiDrawerChange);\n const aiDrawerWasOpenRef = useRef(false);\n aiDrawerWasOpenRef.current = aiDrawerWasOpenRef.current || !!activeAiDrawerId;\n\n useEffect(() => {\n if (!isEnabled) {\n return;\n }\n\n const initialDrawerMessage = getAppLayoutInitialState()?.find(message => message.type === 'registerLeftDrawer');\n if (initialDrawerMessage && initialDrawerMessage.type === 'registerLeftDrawer') {\n setAiDrawer(initialDrawerMessage.payload);\n if (!aiDrawerWasOpenRef.current && initialDrawerMessage.payload.defaultActive) {\n onAiDrawersChangeStable(initialDrawerMessage.payload.id, { initiatedByUserAction: false });\n }\n }\n\n const unsubscribe = registerAppLayoutHandler(appLayoutMessageHandler);\n return () => {\n unsubscribe();\n setAiDrawer(null);\n };\n }, [isEnabled, appLayoutMessageHandler, onAiDrawersChangeStable, onActiveAiDrawerResizeStable]);\n\n return aiDrawer && mapRuntimeConfigToAiDrawer(aiDrawer);\n}\n\nexport const MIN_DRAWER_SIZE = 290;\n\ninterface UseDrawersProps {\n isEnabled: boolean;\n onAiDrawerFocus: () => void;\n expandedDrawerId: string | null;\n setExpandedDrawerId: (value: string | null) => void;\n}\n\nexport function useAiDrawer({ isEnabled, onAiDrawerFocus, expandedDrawerId, setExpandedDrawerId }: UseDrawersProps) {\n const [activeAiDrawerId, setActiveAiDrawerId] = useState<string | null>(null);\n const [size, setSize] = useState<number | null>(null);\n\n function onActiveAiDrawerResize(size: number) {\n setSize(size);\n fireNonCancelableEvent(activeAiDrawer?.onResize, { id: activeAiDrawerId, size });\n }\n\n function onActiveAiDrawerChange(\n newDrawerId: string | null,\n { initiatedByUserAction }: OnChangeParams = DEFAULT_ON_CHANGE_PARAMS\n ) {\n setActiveAiDrawerId(newDrawerId);\n\n if (newDrawerId) {\n fireNonCancelableEvent(aiDrawer?.onToggle, { isOpen: true, initiatedByUserAction });\n }\n\n if (activeAiDrawerId) {\n fireNonCancelableEvent(aiDrawer?.onToggle, { isOpen: false, initiatedByUserAction });\n\n if (activeAiDrawerId === expandedDrawerId) {\n setExpandedDrawerId?.(null);\n }\n }\n\n onAiDrawerFocus?.();\n }\n\n const aiDrawer = useRuntimeAiDrawer(isEnabled, activeAiDrawerId, onActiveAiDrawerChange, onActiveAiDrawerResize);\n const activeAiDrawer = activeAiDrawerId && activeAiDrawerId === aiDrawer?.id ? aiDrawer : null;\n const activeAiDrawerSize = activeAiDrawerId ? (size ?? activeAiDrawer?.defaultSize ?? MIN_DRAWER_SIZE) : 0;\n const minAiDrawerSize = Math.min(activeAiDrawer?.defaultSize ?? MIN_DRAWER_SIZE, MIN_DRAWER_SIZE);\n\n return {\n aiDrawer,\n onActiveAiDrawerChange,\n activeAiDrawer,\n activeAiDrawerId,\n activeAiDrawerSize,\n minAiDrawerSize,\n onActiveAiDrawerResize,\n };\n}\n"]}
@@ -18,7 +18,7 @@ export const useKeyboardEvents = ({ position, onResize, panelRef }) => {
18
18
  onDirectionClick: (direction) => {
19
19
  let currentSize;
20
20
  const { panelHeight, panelWidth } = getCurrentSize(panelRef);
21
- if (position === 'side') {
21
+ if (['side', 'side-start'].includes(position)) {
22
22
  currentSize = panelWidth;
23
23
  }
24
24
  else {
@@ -29,11 +29,11 @@ export const useKeyboardEvents = ({ position, onResize, panelRef }) => {
29
29
  switch (direction) {
30
30
  case 'block-start':
31
31
  case 'inline-start':
32
- singleStepUp();
32
+ position === 'side-start' ? singleStepDown() : singleStepUp();
33
33
  break;
34
34
  case 'block-end':
35
35
  case 'inline-end':
36
- singleStepDown();
36
+ position === 'side-start' ? singleStepUp() : singleStepDown();
37
37
  break;
38
38
  }
39
39
  },
@@ -41,7 +41,7 @@ export const useKeyboardEvents = ({ position, onResize, panelRef }) => {
41
41
  let currentSize;
42
42
  let maxSize;
43
43
  const { panelHeight, panelWidth } = getCurrentSize(panelRef);
44
- if (position === 'side') {
44
+ if (['side', 'side-start'].includes(position)) {
45
45
  currentSize = panelWidth;
46
46
  // don't need the exact max size as it's constrained in the set size function
47
47
  maxSize = window.innerWidth;
@@ -58,16 +58,16 @@ export const useKeyboardEvents = ({ position, onResize, panelRef }) => {
58
58
  const multipleStepDown = () => onResize(currentSize - KEYBOARD_MULTIPLE_STEPS_SIZE);
59
59
  handleKey(event, {
60
60
  onBlockStart: () => {
61
- position === 'bottom' ? singleStepUp() : singleStepDown();
61
+ ['bottom', 'side-start'].includes(position) ? singleStepUp() : singleStepDown();
62
62
  },
63
63
  onBlockEnd: () => {
64
- position === 'bottom' ? singleStepDown() : singleStepUp();
64
+ ['bottom', 'side-start'].includes(position) ? singleStepDown() : singleStepUp();
65
65
  },
66
66
  onInlineEnd: () => {
67
- position === 'bottom' ? singleStepUp() : singleStepDown();
67
+ ['bottom', 'side-start'].includes(position) ? singleStepUp() : singleStepDown();
68
68
  },
69
69
  onInlineStart: () => {
70
- position === 'bottom' ? singleStepDown() : singleStepUp();
70
+ ['bottom', 'side-start'].includes(position) ? singleStepDown() : singleStepUp();
71
71
  },
72
72
  onPageDown: () => multipleStepDown(),
73
73
  onPageUp: () => multipleStepUp(),
@@ -1 +1 @@
1
- {"version":3,"file":"use-keyboard-events.js","sourceRoot":"","sources":["../../../../src/app-layout/utils/use-keyboard-events.ts"],"names":[],"mappings":"AAKA,OAAO,SAAS,MAAM,iCAAiC,CAAC;AAGxD,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,MAAM,cAAc,GAAG,CAAC,QAA0C,EAAE,EAAE;IACpE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;QAClC,OAAO;YACL,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,CAAC;SACd,CAAC;KACH;IAED,OAAO;QACL,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY;QAC1C,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW;KACzC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAoB,EAAE,EAAE;IACtF,OAAO;QACL,gBAAgB,EAAE,CAAC,SAAoB,EAAE,EAAE;YACzC,IAAI,WAAmB,CAAC;YAExB,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE7D,IAAI,QAAQ,KAAK,MAAM,EAAE;gBACvB,WAAW,GAAG,UAAU,CAAC;aAC1B;iBAAM;gBACL,WAAW,GAAG,WAAW,CAAC;aAC3B;YAED,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,yBAAyB,CAAC,CAAC;YAC7E,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,yBAAyB,CAAC,CAAC;YAE/E,QAAQ,SAAS,EAAE;gBACjB,KAAK,aAAa,CAAC;gBACnB,KAAK,cAAc;oBACjB,YAAY,EAAE,CAAC;oBACf,MAAM;gBACR,KAAK,WAAW,CAAC;gBACjB,KAAK,YAAY;oBACf,cAAc,EAAE,CAAC;oBACjB,MAAM;aACT;QACH,CAAC;QAED,SAAS,EAAE,CAAC,KAAuC,EAAE,EAAE;YACrD,IAAI,WAAmB,CAAC;YACxB,IAAI,OAAe,CAAC;YAEpB,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE7D,IAAI,QAAQ,KAAK,MAAM,EAAE;gBACvB,WAAW,GAAG,UAAU,CAAC;gBACzB,6EAA6E;gBAC7E,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;aAC7B;iBAAM;gBACL,WAAW,GAAG,WAAW,CAAC;gBAC1B,6EAA6E;gBAC7E,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;aAC9B;YAED,IAAI,cAAc,GAAG,IAAI,CAAC;YAE1B,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,yBAAyB,CAAC,CAAC;YAC7E,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,yBAAyB,CAAC,CAAC;YAC/E,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,4BAA4B,CAAC,CAAC;YAClF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,4BAA4B,CAAC,CAAC;YAEpF,SAAS,CAAC,KAAK,EAAE;gBACf,YAAY,EAAE,GAAG,EAAE;oBACjB,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBAC5D,CAAC;gBACD,UAAU,EAAE,GAAG,EAAE;oBACf,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;gBAC5D,CAAC;gBACD,WAAW,EAAE,GAAG,EAAE;oBAChB,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBAC5D,CAAC;gBACD,aAAa,EAAE,GAAG,EAAE;oBAClB,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;gBAC5D,CAAC;gBACD,UAAU,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE;gBACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE;gBAChC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC/B,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxB,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC;aAC1C,CAAC,CAAC;YAEH,IAAI,cAAc,EAAE;gBAClB,KAAK,CAAC,cAAc,EAAE,CAAC;aACxB;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { Direction } from '../../internal/components/drag-handle-wrapper/interfaces';\nimport handleKey from '../../internal/utils/handle-key';\nimport { SizeControlProps } from './interfaces';\n\nconst KEYBOARD_SINGLE_STEP_SIZE = 10;\nconst KEYBOARD_MULTIPLE_STEPS_SIZE = 60;\n\nconst getCurrentSize = (panelRef?: React.RefObject<HTMLDivElement>) => {\n if (!panelRef || !panelRef.current) {\n return {\n panelHeight: 0,\n panelWidth: 0,\n };\n }\n\n return {\n panelHeight: panelRef.current.clientHeight,\n panelWidth: panelRef.current.clientWidth,\n };\n};\n\nexport const useKeyboardEvents = ({ position, onResize, panelRef }: SizeControlProps) => {\n return {\n onDirectionClick: (direction: Direction) => {\n let currentSize: number;\n\n const { panelHeight, panelWidth } = getCurrentSize(panelRef);\n\n if (position === 'side') {\n currentSize = panelWidth;\n } else {\n currentSize = panelHeight;\n }\n\n const singleStepUp = () => onResize(currentSize + KEYBOARD_SINGLE_STEP_SIZE);\n const singleStepDown = () => onResize(currentSize - KEYBOARD_SINGLE_STEP_SIZE);\n\n switch (direction) {\n case 'block-start':\n case 'inline-start':\n singleStepUp();\n break;\n case 'block-end':\n case 'inline-end':\n singleStepDown();\n break;\n }\n },\n\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => {\n let currentSize: number;\n let maxSize: number;\n\n const { panelHeight, panelWidth } = getCurrentSize(panelRef);\n\n if (position === 'side') {\n currentSize = panelWidth;\n // don't need the exact max size as it's constrained in the set size function\n maxSize = window.innerWidth;\n } else {\n currentSize = panelHeight;\n // don't need the exact max size as it's constrained in the set size function\n maxSize = window.innerHeight;\n }\n\n let isEventHandled = true;\n\n const singleStepUp = () => onResize(currentSize + KEYBOARD_SINGLE_STEP_SIZE);\n const singleStepDown = () => onResize(currentSize - KEYBOARD_SINGLE_STEP_SIZE);\n const multipleStepUp = () => onResize(currentSize + KEYBOARD_MULTIPLE_STEPS_SIZE);\n const multipleStepDown = () => onResize(currentSize - KEYBOARD_MULTIPLE_STEPS_SIZE);\n\n handleKey(event, {\n onBlockStart: () => {\n position === 'bottom' ? singleStepUp() : singleStepDown();\n },\n onBlockEnd: () => {\n position === 'bottom' ? singleStepDown() : singleStepUp();\n },\n onInlineEnd: () => {\n position === 'bottom' ? singleStepUp() : singleStepDown();\n },\n onInlineStart: () => {\n position === 'bottom' ? singleStepDown() : singleStepUp();\n },\n onPageDown: () => multipleStepDown(),\n onPageUp: () => multipleStepUp(),\n onHome: () => onResize(maxSize),\n onEnd: () => onResize(0),\n onDefault: () => (isEventHandled = false),\n });\n\n if (isEventHandled) {\n event.preventDefault();\n }\n },\n };\n};\n"]}
1
+ {"version":3,"file":"use-keyboard-events.js","sourceRoot":"","sources":["../../../../src/app-layout/utils/use-keyboard-events.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { Direction } from '../../internal/components/drag-handle-wrapper/interfaces';\nimport handleKey from '../../internal/utils/handle-key';\nimport { SizeControlProps } from './interfaces';\n\nconst KEYBOARD_SINGLE_STEP_SIZE = 10;\nconst KEYBOARD_MULTIPLE_STEPS_SIZE = 60;\n\nconst getCurrentSize = (panelRef?: React.RefObject<HTMLDivElement>) => {\n if (!panelRef || !panelRef.current) {\n return {\n panelHeight: 0,\n panelWidth: 0,\n };\n }\n\n return {\n panelHeight: panelRef.current.clientHeight,\n panelWidth: panelRef.current.clientWidth,\n };\n};\n\nexport const useKeyboardEvents = ({ position, onResize, panelRef }: SizeControlProps) => {\n return {\n onDirectionClick: (direction: Direction) => {\n let currentSize: number;\n\n const { panelHeight, panelWidth } = getCurrentSize(panelRef);\n\n if (['side', 'side-start'].includes(position)) {\n currentSize = panelWidth;\n } else {\n currentSize = panelHeight;\n }\n\n const singleStepUp = () => onResize(currentSize + KEYBOARD_SINGLE_STEP_SIZE);\n const singleStepDown = () => onResize(currentSize - KEYBOARD_SINGLE_STEP_SIZE);\n\n switch (direction) {\n case 'block-start':\n case 'inline-start':\n position === 'side-start' ? singleStepDown() : singleStepUp();\n break;\n case 'block-end':\n case 'inline-end':\n position === 'side-start' ? singleStepUp() : singleStepDown();\n break;\n }\n },\n\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => {\n let currentSize: number;\n let maxSize: number;\n\n const { panelHeight, panelWidth } = getCurrentSize(panelRef);\n\n if (['side', 'side-start'].includes(position)) {\n currentSize = panelWidth;\n // don't need the exact max size as it's constrained in the set size function\n maxSize = window.innerWidth;\n } else {\n currentSize = panelHeight;\n // don't need the exact max size as it's constrained in the set size function\n maxSize = window.innerHeight;\n }\n\n let isEventHandled = true;\n\n const singleStepUp = () => onResize(currentSize + KEYBOARD_SINGLE_STEP_SIZE);\n const singleStepDown = () => onResize(currentSize - KEYBOARD_SINGLE_STEP_SIZE);\n const multipleStepUp = () => onResize(currentSize + KEYBOARD_MULTIPLE_STEPS_SIZE);\n const multipleStepDown = () => onResize(currentSize - KEYBOARD_MULTIPLE_STEPS_SIZE);\n\n handleKey(event, {\n onBlockStart: () => {\n ['bottom', 'side-start'].includes(position) ? singleStepUp() : singleStepDown();\n },\n onBlockEnd: () => {\n ['bottom', 'side-start'].includes(position) ? singleStepDown() : singleStepUp();\n },\n onInlineEnd: () => {\n ['bottom', 'side-start'].includes(position) ? singleStepUp() : singleStepDown();\n },\n onInlineStart: () => {\n ['bottom', 'side-start'].includes(position) ? singleStepDown() : singleStepUp();\n },\n onPageDown: () => multipleStepDown(),\n onPageUp: () => multipleStepUp(),\n onHome: () => onResize(maxSize),\n onEnd: () => onResize(0),\n onDefault: () => (isEventHandled = false),\n });\n\n if (isEventHandled) {\n event.preventDefault();\n }\n },\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-pointer-events.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/utils/use-pointer-events.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD,eAAO,MAAM,gBAAgB,gDAAiD,gBAAgB,eAwD7F,CAAC"}
1
+ {"version":3,"file":"use-pointer-events.d.ts","sourceRoot":"","sources":["../../../../src/app-layout/utils/use-pointer-events.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD,eAAO,MAAM,gBAAgB,gDAAiD,gBAAgB,eAkE7F,CAAC"}
@@ -15,6 +15,14 @@ export const usePointerEvents = ({ position, panelRef, handleRef, onResize }) =>
15
15
  const width = getLogicalBoundingClientRect(panelRef.current).insetInlineEnd - mouseClientX + handleOffset;
16
16
  onResize(width);
17
17
  }
18
+ else if (position === 'side-start') {
19
+ const mouseClientX = getLogicalClientX(event, getIsRtl(panelRef.current)) || 0;
20
+ // The handle offset aligns the cursor with the middle of the resize handle.
21
+ const handleOffset = getLogicalBoundingClientRect(handleRef.current).inlineSize / 2;
22
+ const panelBoundingClientRect = getLogicalBoundingClientRect(panelRef.current);
23
+ const width = panelBoundingClientRect.insetInlineEnd + mouseClientX + handleOffset - panelBoundingClientRect.inlineSize;
24
+ onResize(width);
25
+ }
18
26
  else {
19
27
  const mouseClientY = event.clientY || 0;
20
28
  // The handle offset aligns the cursor with the middle of the resize handle.