@cloudscape-design/components 3.0.352 → 3.0.354

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 (108) hide show
  1. package/alert/index.d.ts +3 -2
  2. package/alert/index.d.ts.map +1 -1
  3. package/alert/index.js +4 -3
  4. package/alert/index.js.map +1 -1
  5. package/alert/interfaces.d.ts +6 -0
  6. package/alert/interfaces.d.ts.map +1 -1
  7. package/alert/interfaces.js.map +1 -1
  8. package/alert/internal.d.ts +5 -5
  9. package/alert/internal.d.ts.map +1 -1
  10. package/alert/internal.js +22 -14
  11. package/alert/internal.js.map +1 -1
  12. package/alert/styles.css.js +24 -19
  13. package/alert/styles.scoped.css +72 -35
  14. package/alert/styles.selectors.js +24 -19
  15. package/app-layout/visual-refresh/background.d.ts.map +1 -1
  16. package/app-layout/visual-refresh/background.js +2 -2
  17. package/app-layout/visual-refresh/background.js.map +1 -1
  18. package/app-layout/visual-refresh/context.d.ts +2 -1
  19. package/app-layout/visual-refresh/context.d.ts.map +1 -1
  20. package/app-layout/visual-refresh/context.js +9 -11
  21. package/app-layout/visual-refresh/context.js.map +1 -1
  22. package/app-layout/visual-refresh/layout.d.ts.map +1 -1
  23. package/app-layout/visual-refresh/layout.js +3 -11
  24. package/app-layout/visual-refresh/layout.js.map +1 -1
  25. package/app-layout/visual-refresh/use-background-overlap.d.ts +16 -0
  26. package/app-layout/visual-refresh/use-background-overlap.d.ts.map +1 -0
  27. package/app-layout/visual-refresh/use-background-overlap.js +41 -0
  28. package/app-layout/visual-refresh/use-background-overlap.js.map +1 -0
  29. package/attribute-editor/styles.css.js +14 -14
  30. package/attribute-editor/styles.scoped.css +28 -29
  31. package/attribute-editor/styles.selectors.js +14 -14
  32. package/breadcrumb-group/item/styles.css.js +9 -9
  33. package/breadcrumb-group/item/styles.scoped.css +19 -19
  34. package/breadcrumb-group/item/styles.selectors.js +9 -9
  35. package/cards/index.d.ts.map +1 -1
  36. package/cards/index.js +9 -7
  37. package/cards/index.js.map +1 -1
  38. package/help-panel/index.d.ts.map +1 -1
  39. package/help-panel/index.js +3 -1
  40. package/help-panel/index.js.map +1 -1
  41. package/help-panel/styles.css.js +4 -4
  42. package/help-panel/styles.scoped.css +67 -68
  43. package/help-panel/styles.selectors.js +4 -4
  44. package/internal/base-component/styles.scoped.css +0 -8
  45. package/internal/context/link-default-variant-context.d.ts +6 -0
  46. package/internal/context/link-default-variant-context.d.ts.map +1 -0
  47. package/internal/context/link-default-variant-context.js +7 -0
  48. package/internal/context/link-default-variant-context.js.map +1 -0
  49. package/internal/environment.js +1 -1
  50. package/internal/environment.json +1 -1
  51. package/internal/generated/theming/index.cjs +0 -40
  52. package/internal/generated/theming/index.js +0 -40
  53. package/internal/hooks/container-queries/use-resize-observer.d.ts.map +1 -1
  54. package/internal/hooks/container-queries/use-resize-observer.js +1 -9
  55. package/internal/hooks/container-queries/use-resize-observer.js.map +1 -1
  56. package/internal/hooks/container-queries/utils.d.ts +4 -0
  57. package/internal/hooks/container-queries/utils.d.ts.map +1 -0
  58. package/internal/hooks/container-queries/utils.js +10 -0
  59. package/internal/hooks/container-queries/utils.js.map +1 -0
  60. package/internal/hooks/use-dynamic-overlap/index.d.ts +1 -1
  61. package/internal/hooks/use-dynamic-overlap/index.d.ts.map +1 -1
  62. package/internal/hooks/use-dynamic-overlap/index.js +11 -5
  63. package/internal/hooks/use-dynamic-overlap/index.js.map +1 -1
  64. package/internal/manifest.json +1 -1
  65. package/link/index.d.ts.map +1 -1
  66. package/link/index.js +2 -2
  67. package/link/index.js.map +1 -1
  68. package/link/interfaces.d.ts +7 -0
  69. package/link/interfaces.d.ts.map +1 -1
  70. package/link/interfaces.js.map +1 -1
  71. package/link/internal.d.ts.map +1 -1
  72. package/link/internal.js +4 -1
  73. package/link/internal.js.map +1 -1
  74. package/link/styles.css.js +20 -20
  75. package/link/styles.scoped.css +79 -78
  76. package/link/styles.selectors.js +20 -20
  77. package/package.json +1 -1
  78. package/popover/internal.d.ts.map +1 -1
  79. package/popover/internal.js +3 -1
  80. package/popover/internal.js.map +1 -1
  81. package/table/internal.d.ts.map +1 -1
  82. package/table/internal.js +58 -56
  83. package/table/internal.js.map +1 -1
  84. package/table/sticky-columns/index.d.ts +2 -1
  85. package/table/sticky-columns/index.d.ts.map +1 -1
  86. package/table/sticky-columns/index.js +1 -1
  87. package/table/sticky-columns/index.js.map +1 -1
  88. package/table/sticky-columns/interfaces.d.ts +31 -0
  89. package/table/sticky-columns/interfaces.d.ts.map +1 -0
  90. package/table/sticky-columns/interfaces.js +4 -0
  91. package/table/sticky-columns/interfaces.js.map +1 -0
  92. package/table/sticky-columns/use-sticky-columns.d.ts +1 -25
  93. package/table/sticky-columns/use-sticky-columns.d.ts.map +1 -1
  94. package/table/sticky-columns/use-sticky-columns.js +18 -51
  95. package/table/sticky-columns/use-sticky-columns.js.map +1 -1
  96. package/table/sticky-columns/utils.d.ts +5 -0
  97. package/table/sticky-columns/utils.d.ts.map +1 -0
  98. package/table/sticky-columns/utils.js +42 -0
  99. package/table/sticky-columns/utils.js.map +1 -0
  100. package/text-content/styles.css.js +1 -1
  101. package/text-content/styles.scoped.css +68 -70
  102. package/text-content/styles.selectors.js +1 -1
  103. package/tutorial-panel/components/tutorial-detail-view/congratulation-screen.js +1 -1
  104. package/tutorial-panel/components/tutorial-detail-view/congratulation-screen.js.map +1 -1
  105. package/tutorial-panel/components/tutorial-list/index.js +1 -1
  106. package/tutorial-panel/components/tutorial-list/index.js.map +1 -1
  107. package/wizard/wizard-navigation.js +1 -1
  108. package/wizard/wizard-navigation.js.map +1 -1
@@ -5,6 +5,7 @@ import AsyncStore from '../../area-chart/async-store';
5
5
  import { useStableEventHandler } from '../../internal/hooks/use-stable-event-handler';
6
6
  import { useResizeObserver } from '../../internal/hooks/container-queries';
7
7
  import clsx from 'clsx';
8
+ import { isCellStatesEqual, isWrapperStatesEqual, updateCellOffsets } from './utils';
8
9
  // We allow the table to have a minimum of 148px of available space besides the sum of the widths of the sticky columns
9
10
  // This value is an UX recommendation and is approximately 1/3 of our smallest breakpoint (465px)
10
11
  const MINIMUM_SCROLLABLE_SPACE = 148;
@@ -79,7 +80,6 @@ export function useStickyColumns({ visibleColumns, stickyColumnsFirst, stickyCol
79
80
  }
80
81
  }, []);
81
82
  return {
82
- isEnabled: hasStickyColumns,
83
83
  store,
84
84
  style: {
85
85
  // Provide wrapper styles as props so that a re-render won't cause invalidation.
@@ -90,19 +90,17 @@ export function useStickyColumns({ visibleColumns, stickyColumnsFirst, stickyCol
90
90
  }
91
91
  export function useStickyCellStyles({ stickyColumns, columnId, getClassName, }) {
92
92
  var _a;
93
- const cellRef = useRef(null);
94
93
  const setCell = stickyColumns.refs.cell;
95
94
  // unsubscribeRef to hold the function to unsubscribe from the store's updates
96
95
  const unsubscribeRef = useRef(null);
97
96
  // refCallback updates the cell ref and sets up the store subscription
98
- const refCallback = useCallback(node => {
97
+ const refCallback = useCallback(cellElement => {
99
98
  if (unsubscribeRef.current) {
100
99
  // Unsubscribe before we do any updates to avoid leaving any subscriptions hanging
101
100
  unsubscribeRef.current();
102
101
  }
103
102
  // Update cellRef and the store's state to point to the new DOM node
104
- cellRef.current = node;
105
- setCell(columnId, node);
103
+ setCell(columnId, cellElement);
106
104
  // Update cell styles imperatively to avoid unnecessary re-renders.
107
105
  const selector = (state) => state.cellState[columnId];
108
106
  const updateCellStyles = (state, prev) => {
@@ -110,7 +108,6 @@ export function useStickyCellStyles({ stickyColumns, columnId, getClassName, })
110
108
  return;
111
109
  }
112
110
  const className = getClassName(state);
113
- const cellElement = cellRef.current;
114
111
  if (cellElement) {
115
112
  Object.keys(className).forEach(key => {
116
113
  if (className[key]) {
@@ -126,7 +123,7 @@ export function useStickyCellStyles({ stickyColumns, columnId, getClassName, })
126
123
  };
127
124
  // If the node is not null (i.e., the table cell is being mounted or updated, not unmounted),
128
125
  // set up a new subscription to the store's updates
129
- if (node) {
126
+ if (cellElement) {
130
127
  unsubscribeRef.current = stickyColumns.store.subscribe(selector, (newState, prevState) => {
131
128
  updateCellStyles(selector(newState), selector(prevState));
132
129
  });
@@ -143,25 +140,14 @@ export function useStickyCellStyles({ stickyColumns, columnId, getClassName, })
143
140
  style: (_a = cellStyles === null || cellStyles === void 0 ? void 0 : cellStyles.offset) !== null && _a !== void 0 ? _a : undefined,
144
141
  };
145
142
  }
146
- function isCellStatesEqual(s1, s2) {
147
- if (s1 && s2) {
148
- return (s1.padLeft === s2.padLeft &&
149
- s1.lastLeft === s2.lastLeft &&
150
- s1.lastRight === s2.lastRight &&
151
- s1.offset.left === s2.offset.left &&
152
- s1.offset.right === s2.offset.right);
153
- }
154
- return s1 === s2;
155
- }
156
- function isWrapperStatesEqual(s1, s2) {
157
- return s1.scrollPaddingLeft === s2.scrollPaddingLeft && s1.scrollPaddingRight === s2.scrollPaddingRight;
158
- }
159
143
  export default class StickyColumnsStore extends AsyncStore {
160
144
  constructor() {
161
145
  super({ cellState: {}, wrapperState: { scrollPaddingLeft: 0, scrollPaddingRight: 0 } });
162
- this.cellOffsets = new Map();
163
- this.stickyWidthLeft = 0;
164
- this.stickyWidthRight = 0;
146
+ this.cellOffsets = {
147
+ offsets: new Map(),
148
+ stickyWidthLeft: 0,
149
+ stickyWidthRight: 0,
150
+ };
165
151
  this.isStuckToTheLeft = false;
166
152
  this.isStuckToTheRight = false;
167
153
  this.padLeft = false;
@@ -184,8 +170,8 @@ export default class StickyColumnsStore extends AsyncStore {
184
170
  }
185
171
  // Determine the offset of the sticky column using the `cellOffsets` state object
186
172
  const isFirstColumn = index === 0;
187
- const stickyColumnOffsetLeft = (_b = (_a = this.cellOffsets.get(columnId)) === null || _a === void 0 ? void 0 : _a.first) !== null && _b !== void 0 ? _b : 0;
188
- const stickyColumnOffsetRight = (_d = (_c = this.cellOffsets.get(columnId)) === null || _c === void 0 ? void 0 : _c.last) !== null && _d !== void 0 ? _d : 0;
173
+ const stickyColumnOffsetLeft = (_b = (_a = this.cellOffsets.offsets.get(columnId)) === null || _a === void 0 ? void 0 : _a.first) !== null && _b !== void 0 ? _b : 0;
174
+ const stickyColumnOffsetRight = (_d = (_c = this.cellOffsets.offsets.get(columnId)) === null || _c === void 0 ? void 0 : _c.last) !== null && _d !== void 0 ? _d : 0;
189
175
  acc[columnId] = {
190
176
  padLeft: isFirstColumn && this.padLeft,
191
177
  lastLeft: this.isStuckToTheLeft && lastLeftStickyColumnIndex === index,
@@ -199,29 +185,7 @@ export default class StickyColumnsStore extends AsyncStore {
199
185
  }, {});
200
186
  };
201
187
  this.updateCellOffsets = (props) => {
202
- var _a, _b, _c, _d, _e, _f;
203
- const firstColumnsWidths = [];
204
- for (let i = 0; i < props.visibleColumns.length; i++) {
205
- const element = props.cells[props.visibleColumns[i]];
206
- const cellWidth = (_a = element.getBoundingClientRect().width) !== null && _a !== void 0 ? _a : 0;
207
- firstColumnsWidths[i] = ((_b = firstColumnsWidths[i - 1]) !== null && _b !== void 0 ? _b : 0) + cellWidth;
208
- }
209
- const lastColumnsWidths = [];
210
- for (let i = props.visibleColumns.length - 1; i >= 0; i--) {
211
- const element = props.cells[props.visibleColumns[i]];
212
- const cellWidth = (_c = element.getBoundingClientRect().width) !== null && _c !== void 0 ? _c : 0;
213
- lastColumnsWidths[i] = ((_d = lastColumnsWidths[i + 1]) !== null && _d !== void 0 ? _d : 0) + cellWidth;
214
- }
215
- lastColumnsWidths.reverse();
216
- this.stickyWidthLeft = (_e = firstColumnsWidths[props.stickyColumnsFirst - 1]) !== null && _e !== void 0 ? _e : 0;
217
- this.stickyWidthRight = (_f = lastColumnsWidths[props.stickyColumnsLast - 1]) !== null && _f !== void 0 ? _f : 0;
218
- this.cellOffsets = props.visibleColumns.reduce((map, columnId, columnIndex) => {
219
- var _a, _b;
220
- return map.set(columnId, {
221
- first: (_a = firstColumnsWidths[columnIndex - 1]) !== null && _a !== void 0 ? _a : 0,
222
- last: (_b = lastColumnsWidths[props.visibleColumns.length - 1 - columnIndex - 1]) !== null && _b !== void 0 ? _b : 0,
223
- });
224
- }, new Map());
188
+ this.cellOffsets = updateCellOffsets(props.cells, props);
225
189
  };
226
190
  this.isEnabled = (props) => {
227
191
  const noStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast === 0;
@@ -234,7 +198,7 @@ export default class StickyColumnsStore extends AsyncStore {
234
198
  if (!isWrapperScrollable) {
235
199
  return false;
236
200
  }
237
- const totalStickySpace = this.stickyWidthLeft + this.stickyWidthRight;
201
+ const totalStickySpace = this.cellOffsets.stickyWidthLeft + this.cellOffsets.stickyWidthRight;
238
202
  const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;
239
203
  const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;
240
204
  const hasEnoughScrollableSpace = totalStickySpace + MINIMUM_SCROLLABLE_SPACE + tablePaddingLeft + tablePaddingRight < wrapperWidth;
@@ -246,13 +210,16 @@ export default class StickyColumnsStore extends AsyncStore {
246
210
  }
247
211
  updateCellStyles(props) {
248
212
  const hasStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast > 0;
249
- const hadStickyColumns = this.cellOffsets.size > 0;
213
+ const hadStickyColumns = this.cellOffsets.offsets.size > 0;
250
214
  if (hasStickyColumns || hadStickyColumns) {
251
215
  this.updateScroll(props);
252
216
  this.updateCellOffsets(props);
253
217
  this.set(() => ({
254
218
  cellState: this.generateCellStyles(props),
255
- wrapperState: { scrollPaddingLeft: this.stickyWidthLeft, scrollPaddingRight: this.stickyWidthRight },
219
+ wrapperState: {
220
+ scrollPaddingLeft: this.cellOffsets.stickyWidthLeft,
221
+ scrollPaddingRight: this.cellOffsets.stickyWidthRight,
222
+ },
256
223
  }));
257
224
  }
258
225
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-sticky-columns.js","sourceRoot":"lib/default/","sources":["table/sticky-columns/use-sticky-columns.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 React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport AsyncStore from '../../area-chart/async-store';\nimport { useStableEventHandler } from '../../internal/hooks/use-stable-event-handler';\nimport { useResizeObserver } from '../../internal/hooks/container-queries';\nimport clsx from 'clsx';\n\n// We allow the table to have a minimum of 148px of available space besides the sum of the widths of the sticky columns\n// This value is an UX recommendation and is approximately 1/3 of our smallest breakpoint (465px)\nconst MINIMUM_SCROLLABLE_SPACE = 148;\n\ninterface StickyColumnsProps {\n visibleColumns: readonly PropertyKey[];\n stickyColumnsFirst: number;\n stickyColumnsLast: number;\n}\n\nexport interface StickyColumnsModel {\n isEnabled: boolean;\n store: StickyColumnsStore;\n style: {\n wrapper?: React.CSSProperties;\n };\n refs: {\n table: React.RefCallback<HTMLElement>;\n wrapper: React.RefCallback<HTMLElement>;\n cell: (columnId: PropertyKey, node: null | HTMLElement) => void;\n };\n}\n\nexport interface StickyColumnsState {\n cellState: Record<PropertyKey, null | StickyColumnsCellState>;\n wrapperState: StickyColumnsWrapperState;\n}\n\n// Cell state is used to apply respective styles and offsets to sticky cells.\nexport interface StickyColumnsCellState {\n padLeft: boolean;\n lastLeft: boolean;\n lastRight: boolean;\n offset: { left?: number; right?: number };\n}\n\n// Scroll padding is applied to table's wrapper so that the table scrolls when focus goes behind sticky column.\nexport interface StickyColumnsWrapperState {\n scrollPaddingLeft: number;\n scrollPaddingRight: number;\n}\n\nexport function useStickyColumns({\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n}: StickyColumnsProps): StickyColumnsModel {\n const store = useMemo(() => new StickyColumnsStore(), []);\n const wrapperRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n const tableRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n const cellsRef = useRef<Record<PropertyKey, HTMLElement>>({});\n\n const hasStickyColumns = stickyColumnsFirst + stickyColumnsLast > 0;\n\n const updateStickyStyles = useStableEventHandler(() => {\n if (wrapperRef.current && tableRef.current) {\n store.updateCellStyles({\n wrapper: wrapperRef.current,\n table: tableRef.current,\n cells: cellsRef.current,\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n });\n }\n });\n\n useResizeObserver(wrapperRef, updateStickyStyles);\n\n useResizeObserver(tableRef, updateStickyStyles);\n\n useEffect(() => {\n if (wrapperRef.current && tableRef.current) {\n store.updateCellStyles({\n wrapper: wrapperRef.current,\n table: tableRef.current,\n cells: cellsRef.current,\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n });\n }\n }, [store, stickyColumnsFirst, stickyColumnsLast, visibleColumns]);\n\n // Update wrapper styles imperatively to avoid unnecessary re-renders.\n useEffect(() => {\n if (!hasStickyColumns) {\n return;\n }\n\n const selector = (state: StickyColumnsState) => state.wrapperState;\n\n const updateWrapperStyles = (state: StickyColumnsWrapperState, prev: StickyColumnsWrapperState) => {\n if (isWrapperStatesEqual(state, prev)) {\n return;\n }\n\n if (wrapperRef.current) {\n wrapperRef.current.style.scrollPaddingLeft = state.scrollPaddingLeft + 'px';\n wrapperRef.current.style.scrollPaddingRight = state.scrollPaddingRight + 'px';\n }\n };\n\n const unsubscribe = store.subscribe(selector, (newState, prevState) =>\n updateWrapperStyles(selector(newState), selector(prevState))\n );\n return unsubscribe;\n }, [store, hasStickyColumns]);\n\n const setWrapper = useCallback(\n (node: null | HTMLElement) => {\n if (wrapperRef.current) {\n wrapperRef.current.removeEventListener('scroll', updateStickyStyles);\n }\n if (node && hasStickyColumns) {\n node.addEventListener('scroll', updateStickyStyles);\n }\n wrapperRef.current = node;\n },\n [hasStickyColumns, updateStickyStyles]\n );\n\n const setTable = useCallback((node: null | HTMLElement) => {\n tableRef.current = node;\n }, []);\n\n const setCell = useCallback((columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n cellsRef.current[columnId] = node;\n } else {\n delete cellsRef.current[columnId];\n }\n }, []);\n\n return {\n isEnabled: hasStickyColumns,\n store,\n style: {\n // Provide wrapper styles as props so that a re-render won't cause invalidation.\n wrapper: hasStickyColumns ? { ...store.get().wrapperState } : undefined,\n },\n refs: { wrapper: setWrapper, table: setTable, cell: setCell },\n };\n}\n\ninterface UseStickyCellStylesProps {\n stickyColumns: StickyColumnsModel;\n columnId: PropertyKey;\n getClassName: (styles: null | StickyColumnsCellState) => Record<string, boolean>;\n}\n\ninterface StickyCellStyles {\n ref: React.RefCallback<HTMLElement>;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function useStickyCellStyles({\n stickyColumns,\n columnId,\n getClassName,\n}: UseStickyCellStylesProps): StickyCellStyles {\n const cellRef = useRef<HTMLElement>(null) as React.MutableRefObject<HTMLElement>;\n const setCell = stickyColumns.refs.cell;\n\n // unsubscribeRef to hold the function to unsubscribe from the store's updates\n const unsubscribeRef = useRef<null | (() => void)>(null);\n\n // refCallback updates the cell ref and sets up the store subscription\n const refCallback = useCallback(\n node => {\n if (unsubscribeRef.current) {\n // Unsubscribe before we do any updates to avoid leaving any subscriptions hanging\n unsubscribeRef.current();\n }\n\n // Update cellRef and the store's state to point to the new DOM node\n cellRef.current = node;\n setCell(columnId, node);\n\n // Update cell styles imperatively to avoid unnecessary re-renders.\n const selector = (state: StickyColumnsState) => state.cellState[columnId];\n\n const updateCellStyles = (state: null | StickyColumnsCellState, prev: null | StickyColumnsCellState) => {\n if (isCellStatesEqual(state, prev)) {\n return;\n }\n\n const className = getClassName(state);\n const cellElement = cellRef.current;\n if (cellElement) {\n Object.keys(className).forEach(key => {\n if (className[key]) {\n cellElement.classList.add(key);\n } else {\n cellElement.classList.remove(key);\n }\n });\n cellElement.style.left = state?.offset.left !== undefined ? `${state.offset.left}px` : '';\n cellElement.style.right = state?.offset.right !== undefined ? `${state.offset.right}px` : '';\n }\n };\n\n // If the node is not null (i.e., the table cell is being mounted or updated, not unmounted),\n // set up a new subscription to the store's updates\n if (node) {\n unsubscribeRef.current = stickyColumns.store.subscribe(selector, (newState, prevState) => {\n updateCellStyles(selector(newState), selector(prevState));\n });\n }\n },\n\n // getClassName is expected to be pure\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [columnId, setCell, stickyColumns.store]\n );\n\n // Provide cell styles as props so that a re-render won't cause invalidation.\n const cellStyles = stickyColumns.store.get().cellState[columnId];\n return {\n ref: refCallback,\n className: cellStyles ? clsx(getClassName(cellStyles)) : undefined,\n style: cellStyles?.offset ?? undefined,\n };\n}\n\nfunction isCellStatesEqual(s1: null | StickyColumnsCellState, s2: null | StickyColumnsCellState): boolean {\n if (s1 && s2) {\n return (\n s1.padLeft === s2.padLeft &&\n s1.lastLeft === s2.lastLeft &&\n s1.lastRight === s2.lastRight &&\n s1.offset.left === s2.offset.left &&\n s1.offset.right === s2.offset.right\n );\n }\n return s1 === s2;\n}\n\nfunction isWrapperStatesEqual(s1: StickyColumnsWrapperState, s2: StickyColumnsWrapperState): boolean {\n return s1.scrollPaddingLeft === s2.scrollPaddingLeft && s1.scrollPaddingRight === s2.scrollPaddingRight;\n}\n\ninterface UpdateCellStylesProps {\n wrapper: HTMLElement;\n table: HTMLElement;\n cells: Record<PropertyKey, HTMLElement>;\n visibleColumns: readonly PropertyKey[];\n stickyColumnsFirst: number;\n stickyColumnsLast: number;\n}\n\nexport default class StickyColumnsStore extends AsyncStore<StickyColumnsState> {\n private cellOffsets = new Map<PropertyKey, { first: number; last: number }>();\n private stickyWidthLeft = 0;\n private stickyWidthRight = 0;\n private isStuckToTheLeft = false;\n private isStuckToTheRight = false;\n private padLeft = false;\n\n constructor() {\n super({ cellState: {}, wrapperState: { scrollPaddingLeft: 0, scrollPaddingRight: 0 } });\n }\n\n public updateCellStyles(props: UpdateCellStylesProps) {\n const hasStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast > 0;\n const hadStickyColumns = this.cellOffsets.size > 0;\n\n if (hasStickyColumns || hadStickyColumns) {\n this.updateScroll(props);\n this.updateCellOffsets(props);\n this.set(() => ({\n cellState: this.generateCellStyles(props),\n wrapperState: { scrollPaddingLeft: this.stickyWidthLeft, scrollPaddingRight: this.stickyWidthRight },\n }));\n }\n }\n\n private updateScroll(props: UpdateCellStylesProps) {\n const wrapperScrollLeft = props.wrapper.scrollLeft;\n const wrapperScrollWidth = props.wrapper.scrollWidth;\n const wrapperClientWidth = props.wrapper.clientWidth;\n const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;\n const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;\n\n this.isStuckToTheLeft = wrapperScrollLeft > tablePaddingLeft;\n\n // Math.ceil() is used here to address an edge-case in certain browsers, where they return non-integer wrapperScrollLeft values\n // which are lower than expected (sub-pixel difference), resulting in the table always being in the \"stuck to the right\" state\n this.isStuckToTheRight = Math.ceil(wrapperScrollLeft) < wrapperScrollWidth - wrapperClientWidth - tablePaddingRight;\n\n this.padLeft = tablePaddingLeft !== 0 && this.isStuckToTheLeft;\n }\n\n private generateCellStyles = (props: UpdateCellStylesProps): Record<PropertyKey, null | StickyColumnsCellState> => {\n const isEnabled = this.isEnabled(props);\n const lastLeftStickyColumnIndex = props.stickyColumnsFirst - 1;\n const lastRightStickyColumnIndex = props.visibleColumns.length - props.stickyColumnsLast;\n\n return props.visibleColumns.reduce((acc, columnId, index) => {\n let stickySide = 'non-sticky';\n if (index < props.stickyColumnsFirst) {\n stickySide = 'left';\n } else if (index >= props.visibleColumns.length - props.stickyColumnsLast) {\n stickySide = 'right';\n }\n\n if (!isEnabled || stickySide === 'non-sticky') {\n acc[columnId] = null;\n return acc;\n }\n\n // Determine the offset of the sticky column using the `cellOffsets` state object\n const isFirstColumn = index === 0;\n const stickyColumnOffsetLeft = this.cellOffsets.get(columnId)?.first ?? 0;\n const stickyColumnOffsetRight = this.cellOffsets.get(columnId)?.last ?? 0;\n\n acc[columnId] = {\n padLeft: isFirstColumn && this.padLeft,\n lastLeft: this.isStuckToTheLeft && lastLeftStickyColumnIndex === index,\n lastRight: this.isStuckToTheRight && lastRightStickyColumnIndex === index,\n offset: {\n left: stickySide === 'left' ? stickyColumnOffsetLeft : undefined,\n right: stickySide === 'right' ? stickyColumnOffsetRight : undefined,\n },\n };\n return acc;\n }, {} as Record<PropertyKey, null | StickyColumnsCellState>);\n };\n\n private updateCellOffsets = (props: UpdateCellStylesProps): void => {\n const firstColumnsWidths: number[] = [];\n for (let i = 0; i < props.visibleColumns.length; i++) {\n const element = props.cells[props.visibleColumns[i]];\n const cellWidth = element.getBoundingClientRect().width ?? 0;\n firstColumnsWidths[i] = (firstColumnsWidths[i - 1] ?? 0) + cellWidth;\n }\n\n const lastColumnsWidths: number[] = [];\n for (let i = props.visibleColumns.length - 1; i >= 0; i--) {\n const element = props.cells[props.visibleColumns[i]];\n const cellWidth = element.getBoundingClientRect().width ?? 0;\n lastColumnsWidths[i] = (lastColumnsWidths[i + 1] ?? 0) + cellWidth;\n }\n lastColumnsWidths.reverse();\n\n this.stickyWidthLeft = firstColumnsWidths[props.stickyColumnsFirst - 1] ?? 0;\n this.stickyWidthRight = lastColumnsWidths[props.stickyColumnsLast - 1] ?? 0;\n this.cellOffsets = props.visibleColumns.reduce(\n (map, columnId, columnIndex) =>\n map.set(columnId, {\n first: firstColumnsWidths[columnIndex - 1] ?? 0,\n last: lastColumnsWidths[props.visibleColumns.length - 1 - columnIndex - 1] ?? 0,\n }),\n new Map()\n );\n };\n\n private isEnabled = (props: UpdateCellStylesProps): boolean => {\n const noStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast === 0;\n if (noStickyColumns) {\n return false;\n }\n\n const wrapperWidth = props.wrapper.getBoundingClientRect().width;\n const tableWidth = props.table.getBoundingClientRect().width;\n const isWrapperScrollable = tableWidth > wrapperWidth;\n if (!isWrapperScrollable) {\n return false;\n }\n\n const totalStickySpace = this.stickyWidthLeft + this.stickyWidthRight;\n const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;\n const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;\n const hasEnoughScrollableSpace =\n totalStickySpace + MINIMUM_SCROLLABLE_SPACE + tablePaddingLeft + tablePaddingRight < wrapperWidth;\n if (!hasEnoughScrollableSpace) {\n return false;\n }\n\n return true;\n };\n}\n"]}
1
+ {"version":3,"file":"use-sticky-columns.js","sourceRoot":"lib/default/","sources":["table/sticky-columns/use-sticky-columns.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 React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport AsyncStore from '../../area-chart/async-store';\nimport { useStableEventHandler } from '../../internal/hooks/use-stable-event-handler';\nimport { useResizeObserver } from '../../internal/hooks/container-queries';\nimport clsx from 'clsx';\nimport {\n CellOffsets,\n StickyColumnsCellState,\n StickyColumnsProps,\n StickyColumnsState,\n StickyColumnsWrapperState,\n} from './interfaces';\nimport { isCellStatesEqual, isWrapperStatesEqual, updateCellOffsets } from './utils';\n\n// We allow the table to have a minimum of 148px of available space besides the sum of the widths of the sticky columns\n// This value is an UX recommendation and is approximately 1/3 of our smallest breakpoint (465px)\nconst MINIMUM_SCROLLABLE_SPACE = 148;\n\nexport interface StickyColumnsModel {\n store: StickyColumnsStore;\n style: {\n wrapper?: React.CSSProperties;\n };\n refs: {\n table: React.RefCallback<HTMLElement>;\n wrapper: React.RefCallback<HTMLElement>;\n cell: (columnId: PropertyKey, node: null | HTMLElement) => void;\n };\n}\n\nexport function useStickyColumns({\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n}: StickyColumnsProps): StickyColumnsModel {\n const store = useMemo(() => new StickyColumnsStore(), []);\n const wrapperRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n const tableRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n const cellsRef = useRef<Record<PropertyKey, HTMLElement>>({});\n\n const hasStickyColumns = stickyColumnsFirst + stickyColumnsLast > 0;\n\n const updateStickyStyles = useStableEventHandler(() => {\n if (wrapperRef.current && tableRef.current) {\n store.updateCellStyles({\n wrapper: wrapperRef.current,\n table: tableRef.current,\n cells: cellsRef.current,\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n });\n }\n });\n\n useResizeObserver(wrapperRef, updateStickyStyles);\n\n useResizeObserver(tableRef, updateStickyStyles);\n\n useEffect(() => {\n if (wrapperRef.current && tableRef.current) {\n store.updateCellStyles({\n wrapper: wrapperRef.current,\n table: tableRef.current,\n cells: cellsRef.current,\n visibleColumns,\n stickyColumnsFirst,\n stickyColumnsLast,\n });\n }\n }, [store, stickyColumnsFirst, stickyColumnsLast, visibleColumns]);\n\n // Update wrapper styles imperatively to avoid unnecessary re-renders.\n useEffect(() => {\n if (!hasStickyColumns) {\n return;\n }\n\n const selector = (state: StickyColumnsState) => state.wrapperState;\n\n const updateWrapperStyles = (state: StickyColumnsWrapperState, prev: StickyColumnsWrapperState) => {\n if (isWrapperStatesEqual(state, prev)) {\n return;\n }\n\n if (wrapperRef.current) {\n wrapperRef.current.style.scrollPaddingLeft = state.scrollPaddingLeft + 'px';\n wrapperRef.current.style.scrollPaddingRight = state.scrollPaddingRight + 'px';\n }\n };\n\n const unsubscribe = store.subscribe(selector, (newState, prevState) =>\n updateWrapperStyles(selector(newState), selector(prevState))\n );\n return unsubscribe;\n }, [store, hasStickyColumns]);\n\n const setWrapper = useCallback(\n (node: null | HTMLElement) => {\n if (wrapperRef.current) {\n wrapperRef.current.removeEventListener('scroll', updateStickyStyles);\n }\n if (node && hasStickyColumns) {\n node.addEventListener('scroll', updateStickyStyles);\n }\n wrapperRef.current = node;\n },\n [hasStickyColumns, updateStickyStyles]\n );\n\n const setTable = useCallback((node: null | HTMLElement) => {\n tableRef.current = node;\n }, []);\n\n const setCell = useCallback((columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n cellsRef.current[columnId] = node;\n } else {\n delete cellsRef.current[columnId];\n }\n }, []);\n\n return {\n store,\n style: {\n // Provide wrapper styles as props so that a re-render won't cause invalidation.\n wrapper: hasStickyColumns ? { ...store.get().wrapperState } : undefined,\n },\n refs: { wrapper: setWrapper, table: setTable, cell: setCell },\n };\n}\n\ninterface UseStickyCellStylesProps {\n stickyColumns: StickyColumnsModel;\n columnId: PropertyKey;\n getClassName: (styles: null | StickyColumnsCellState) => Record<string, boolean>;\n}\n\ninterface StickyCellStyles {\n ref: React.RefCallback<HTMLElement>;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function useStickyCellStyles({\n stickyColumns,\n columnId,\n getClassName,\n}: UseStickyCellStylesProps): StickyCellStyles {\n const setCell = stickyColumns.refs.cell;\n\n // unsubscribeRef to hold the function to unsubscribe from the store's updates\n const unsubscribeRef = useRef<null | (() => void)>(null);\n\n // refCallback updates the cell ref and sets up the store subscription\n const refCallback = useCallback(\n cellElement => {\n if (unsubscribeRef.current) {\n // Unsubscribe before we do any updates to avoid leaving any subscriptions hanging\n unsubscribeRef.current();\n }\n\n // Update cellRef and the store's state to point to the new DOM node\n setCell(columnId, cellElement);\n\n // Update cell styles imperatively to avoid unnecessary re-renders.\n const selector = (state: StickyColumnsState) => state.cellState[columnId];\n\n const updateCellStyles = (state: null | StickyColumnsCellState, prev: null | StickyColumnsCellState) => {\n if (isCellStatesEqual(state, prev)) {\n return;\n }\n\n const className = getClassName(state);\n if (cellElement) {\n Object.keys(className).forEach(key => {\n if (className[key]) {\n cellElement.classList.add(key);\n } else {\n cellElement.classList.remove(key);\n }\n });\n cellElement.style.left = state?.offset.left !== undefined ? `${state.offset.left}px` : '';\n cellElement.style.right = state?.offset.right !== undefined ? `${state.offset.right}px` : '';\n }\n };\n\n // If the node is not null (i.e., the table cell is being mounted or updated, not unmounted),\n // set up a new subscription to the store's updates\n if (cellElement) {\n unsubscribeRef.current = stickyColumns.store.subscribe(selector, (newState, prevState) => {\n updateCellStyles(selector(newState), selector(prevState));\n });\n }\n },\n\n // getClassName is expected to be pure\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [columnId, setCell, stickyColumns.store]\n );\n\n // Provide cell styles as props so that a re-render won't cause invalidation.\n const cellStyles = stickyColumns.store.get().cellState[columnId];\n return {\n ref: refCallback,\n className: cellStyles ? clsx(getClassName(cellStyles)) : undefined,\n style: cellStyles?.offset ?? undefined,\n };\n}\n\ninterface UpdateCellStylesProps {\n wrapper: HTMLElement;\n table: HTMLElement;\n cells: Record<PropertyKey, HTMLElement>;\n visibleColumns: readonly PropertyKey[];\n stickyColumnsFirst: number;\n stickyColumnsLast: number;\n}\n\nexport default class StickyColumnsStore extends AsyncStore<StickyColumnsState> {\n private cellOffsets: CellOffsets = {\n offsets: new Map(),\n stickyWidthLeft: 0,\n stickyWidthRight: 0,\n };\n private isStuckToTheLeft = false;\n private isStuckToTheRight = false;\n private padLeft = false;\n\n constructor() {\n super({ cellState: {}, wrapperState: { scrollPaddingLeft: 0, scrollPaddingRight: 0 } });\n }\n\n public updateCellStyles(props: UpdateCellStylesProps) {\n const hasStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast > 0;\n const hadStickyColumns = this.cellOffsets.offsets.size > 0;\n\n if (hasStickyColumns || hadStickyColumns) {\n this.updateScroll(props);\n this.updateCellOffsets(props);\n this.set(() => ({\n cellState: this.generateCellStyles(props),\n wrapperState: {\n scrollPaddingLeft: this.cellOffsets.stickyWidthLeft,\n scrollPaddingRight: this.cellOffsets.stickyWidthRight,\n },\n }));\n }\n }\n\n private updateScroll(props: UpdateCellStylesProps) {\n const wrapperScrollLeft = props.wrapper.scrollLeft;\n const wrapperScrollWidth = props.wrapper.scrollWidth;\n const wrapperClientWidth = props.wrapper.clientWidth;\n const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;\n const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;\n\n this.isStuckToTheLeft = wrapperScrollLeft > tablePaddingLeft;\n\n // Math.ceil() is used here to address an edge-case in certain browsers, where they return non-integer wrapperScrollLeft values\n // which are lower than expected (sub-pixel difference), resulting in the table always being in the \"stuck to the right\" state\n this.isStuckToTheRight = Math.ceil(wrapperScrollLeft) < wrapperScrollWidth - wrapperClientWidth - tablePaddingRight;\n\n this.padLeft = tablePaddingLeft !== 0 && this.isStuckToTheLeft;\n }\n\n private generateCellStyles = (props: UpdateCellStylesProps): Record<PropertyKey, null | StickyColumnsCellState> => {\n const isEnabled = this.isEnabled(props);\n const lastLeftStickyColumnIndex = props.stickyColumnsFirst - 1;\n const lastRightStickyColumnIndex = props.visibleColumns.length - props.stickyColumnsLast;\n\n return props.visibleColumns.reduce((acc, columnId, index) => {\n let stickySide = 'non-sticky';\n if (index < props.stickyColumnsFirst) {\n stickySide = 'left';\n } else if (index >= props.visibleColumns.length - props.stickyColumnsLast) {\n stickySide = 'right';\n }\n\n if (!isEnabled || stickySide === 'non-sticky') {\n acc[columnId] = null;\n return acc;\n }\n\n // Determine the offset of the sticky column using the `cellOffsets` state object\n const isFirstColumn = index === 0;\n const stickyColumnOffsetLeft = this.cellOffsets.offsets.get(columnId)?.first ?? 0;\n const stickyColumnOffsetRight = this.cellOffsets.offsets.get(columnId)?.last ?? 0;\n\n acc[columnId] = {\n padLeft: isFirstColumn && this.padLeft,\n lastLeft: this.isStuckToTheLeft && lastLeftStickyColumnIndex === index,\n lastRight: this.isStuckToTheRight && lastRightStickyColumnIndex === index,\n offset: {\n left: stickySide === 'left' ? stickyColumnOffsetLeft : undefined,\n right: stickySide === 'right' ? stickyColumnOffsetRight : undefined,\n },\n };\n return acc;\n }, {} as Record<PropertyKey, null | StickyColumnsCellState>);\n };\n\n private updateCellOffsets = (props: UpdateCellStylesProps): void => {\n this.cellOffsets = updateCellOffsets(props.cells, props);\n };\n\n private isEnabled = (props: UpdateCellStylesProps): boolean => {\n const noStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast === 0;\n if (noStickyColumns) {\n return false;\n }\n\n const wrapperWidth = props.wrapper.getBoundingClientRect().width;\n const tableWidth = props.table.getBoundingClientRect().width;\n const isWrapperScrollable = tableWidth > wrapperWidth;\n if (!isWrapperScrollable) {\n return false;\n }\n\n const totalStickySpace = this.cellOffsets.stickyWidthLeft + this.cellOffsets.stickyWidthRight;\n const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;\n const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;\n const hasEnoughScrollableSpace =\n totalStickySpace + MINIMUM_SCROLLABLE_SPACE + tablePaddingLeft + tablePaddingRight < wrapperWidth;\n if (!hasEnoughScrollableSpace) {\n return false;\n }\n\n return true;\n };\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { CellOffsets, StickyColumnsCellState, StickyColumnsProps, StickyColumnsWrapperState } from './interfaces';
2
+ export declare function isCellStatesEqual(s1: null | StickyColumnsCellState, s2: null | StickyColumnsCellState): boolean;
3
+ export declare function isWrapperStatesEqual(s1: StickyColumnsWrapperState, s2: StickyColumnsWrapperState): boolean;
4
+ export declare function updateCellOffsets(cells: Record<PropertyKey, HTMLElement>, props: StickyColumnsProps): CellOffsets;
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"lib/default/","sources":["table/sticky-columns/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAElH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,IAAI,GAAG,sBAAsB,EAAE,EAAE,EAAE,IAAI,GAAG,sBAAsB,GAAG,OAAO,CAW/G;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,yBAAyB,EAAE,EAAE,EAAE,yBAAyB,GAAG,OAAO,CAE1G;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,kBAAkB,GAAG,WAAW,CA6BjH"}
@@ -0,0 +1,42 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export function isCellStatesEqual(s1, s2) {
4
+ if (s1 && s2) {
5
+ return (s1.padLeft === s2.padLeft &&
6
+ s1.lastLeft === s2.lastLeft &&
7
+ s1.lastRight === s2.lastRight &&
8
+ s1.offset.left === s2.offset.left &&
9
+ s1.offset.right === s2.offset.right);
10
+ }
11
+ return s1 === s2;
12
+ }
13
+ export function isWrapperStatesEqual(s1, s2) {
14
+ return s1.scrollPaddingLeft === s2.scrollPaddingLeft && s1.scrollPaddingRight === s2.scrollPaddingRight;
15
+ }
16
+ export function updateCellOffsets(cells, props) {
17
+ var _a, _b, _c, _d, _e, _f;
18
+ const totalColumns = props.visibleColumns.length;
19
+ const firstColumnsWidths = [];
20
+ for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsFirst); i++) {
21
+ const element = cells[props.visibleColumns[i]];
22
+ const cellWidth = (_a = element.getBoundingClientRect().width) !== null && _a !== void 0 ? _a : 0;
23
+ firstColumnsWidths[i] = ((_b = firstColumnsWidths[i - 1]) !== null && _b !== void 0 ? _b : 0) + cellWidth;
24
+ }
25
+ const lastColumnsWidths = [];
26
+ for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsLast); i++) {
27
+ const element = cells[props.visibleColumns[totalColumns - 1 - i]];
28
+ const cellWidth = (_c = element.getBoundingClientRect().width) !== null && _c !== void 0 ? _c : 0;
29
+ lastColumnsWidths[i] = ((_d = lastColumnsWidths[i - 1]) !== null && _d !== void 0 ? _d : 0) + cellWidth;
30
+ }
31
+ const stickyWidthLeft = (_e = firstColumnsWidths[props.stickyColumnsFirst - 1]) !== null && _e !== void 0 ? _e : 0;
32
+ const stickyWidthRight = (_f = lastColumnsWidths[props.stickyColumnsLast - 1]) !== null && _f !== void 0 ? _f : 0;
33
+ const offsets = props.visibleColumns.reduce((map, columnId, columnIndex) => {
34
+ var _a, _b;
35
+ return map.set(columnId, {
36
+ first: (_a = firstColumnsWidths[columnIndex - 1]) !== null && _a !== void 0 ? _a : 0,
37
+ last: (_b = lastColumnsWidths[totalColumns - 1 - columnIndex - 1]) !== null && _b !== void 0 ? _b : 0,
38
+ });
39
+ }, new Map());
40
+ return { offsets, stickyWidthLeft, stickyWidthRight };
41
+ }
42
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"lib/default/","sources":["table/sticky-columns/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { CellOffsets, StickyColumnsCellState, StickyColumnsProps, StickyColumnsWrapperState } from './interfaces';\n\nexport function isCellStatesEqual(s1: null | StickyColumnsCellState, s2: null | StickyColumnsCellState): boolean {\n if (s1 && s2) {\n return (\n s1.padLeft === s2.padLeft &&\n s1.lastLeft === s2.lastLeft &&\n s1.lastRight === s2.lastRight &&\n s1.offset.left === s2.offset.left &&\n s1.offset.right === s2.offset.right\n );\n }\n return s1 === s2;\n}\n\nexport function isWrapperStatesEqual(s1: StickyColumnsWrapperState, s2: StickyColumnsWrapperState): boolean {\n return s1.scrollPaddingLeft === s2.scrollPaddingLeft && s1.scrollPaddingRight === s2.scrollPaddingRight;\n}\n\nexport function updateCellOffsets(cells: Record<PropertyKey, HTMLElement>, props: StickyColumnsProps): CellOffsets {\n const totalColumns = props.visibleColumns.length;\n\n const firstColumnsWidths: number[] = [];\n for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsFirst); i++) {\n const element = cells[props.visibleColumns[i]];\n const cellWidth = element.getBoundingClientRect().width ?? 0;\n firstColumnsWidths[i] = (firstColumnsWidths[i - 1] ?? 0) + cellWidth;\n }\n\n const lastColumnsWidths: number[] = [];\n for (let i = 0; i < Math.min(totalColumns, props.stickyColumnsLast); i++) {\n const element = cells[props.visibleColumns[totalColumns - 1 - i]];\n const cellWidth = element.getBoundingClientRect().width ?? 0;\n lastColumnsWidths[i] = (lastColumnsWidths[i - 1] ?? 0) + cellWidth;\n }\n\n const stickyWidthLeft = firstColumnsWidths[props.stickyColumnsFirst - 1] ?? 0;\n const stickyWidthRight = lastColumnsWidths[props.stickyColumnsLast - 1] ?? 0;\n const offsets = props.visibleColumns.reduce(\n (map, columnId, columnIndex) =>\n map.set(columnId, {\n first: firstColumnsWidths[columnIndex - 1] ?? 0,\n last: lastColumnsWidths[totalColumns - 1 - columnIndex - 1] ?? 0,\n }),\n new Map()\n );\n\n return { offsets, stickyWidthLeft, stickyWidthRight };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "text-content": "awsui_text-content_6absk_zjs8c_94"
4
+ "text-content": "awsui_text-content_6absk_14chd_94"
5
5
  };
6
6
 
@@ -91,7 +91,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
91
91
  SPDX-License-Identifier: Apache-2.0
92
92
  */
93
93
  /* stylelint-disable @cloudscape-design/no-implicit-descendant, selector-max-type */
94
- .awsui_text-content_6absk_zjs8c_94:not(#\9) {
94
+ .awsui_text-content_6absk_14chd_94:not(#\9) {
95
95
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
96
96
  border-collapse: separate;
97
97
  border-spacing: 0;
@@ -131,26 +131,26 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
131
131
  /* stylelint-disable no-descending-specificity */
132
132
  /* stylelint-enable no-descending-specificity */
133
133
  }
134
- .awsui_text-content_6absk_zjs8c_94 h1:not(#\9),
135
- .awsui_text-content_6absk_zjs8c_94 h2:not(#\9),
136
- .awsui_text-content_6absk_zjs8c_94 h3:not(#\9),
137
- .awsui_text-content_6absk_zjs8c_94 h4:not(#\9),
138
- .awsui_text-content_6absk_zjs8c_94 h5:not(#\9),
139
- .awsui_text-content_6absk_zjs8c_94 p:not(#\9) {
134
+ .awsui_text-content_6absk_14chd_94 h1:not(#\9),
135
+ .awsui_text-content_6absk_14chd_94 h2:not(#\9),
136
+ .awsui_text-content_6absk_14chd_94 h3:not(#\9),
137
+ .awsui_text-content_6absk_14chd_94 h4:not(#\9),
138
+ .awsui_text-content_6absk_14chd_94 h5:not(#\9),
139
+ .awsui_text-content_6absk_14chd_94 p:not(#\9) {
140
140
  font-family: inherit;
141
141
  font-weight: normal;
142
142
  text-decoration: none;
143
143
  margin: 0;
144
144
  padding: var(--space-xxs-p8yyaw, 4px) 0;
145
145
  }
146
- .awsui_text-content_6absk_zjs8c_94 h1:not(#\9),
147
- .awsui_text-content_6absk_zjs8c_94 h2:not(#\9),
148
- .awsui_text-content_6absk_zjs8c_94 h3:not(#\9),
149
- .awsui_text-content_6absk_zjs8c_94 h4:not(#\9),
150
- .awsui_text-content_6absk_zjs8c_94 h5:not(#\9) {
146
+ .awsui_text-content_6absk_14chd_94 h1:not(#\9),
147
+ .awsui_text-content_6absk_14chd_94 h2:not(#\9),
148
+ .awsui_text-content_6absk_14chd_94 h3:not(#\9),
149
+ .awsui_text-content_6absk_14chd_94 h4:not(#\9),
150
+ .awsui_text-content_6absk_14chd_94 h5:not(#\9) {
151
151
  color: var(--color-text-heading-default-rtslvy, #000716);
152
152
  }
153
- .awsui_text-content_6absk_zjs8c_94 h1:not(#\9) {
153
+ .awsui_text-content_6absk_14chd_94 h1:not(#\9) {
154
154
  font-size: var(--font-heading-xl-size-h632xk, 24px);
155
155
  line-height: var(--font-heading-xl-line-height-qs40h8, 30px);
156
156
  letter-spacing: var(--font-heading-xl-letter-spacing-6telo5, -0.02em);
@@ -158,7 +158,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
158
158
  -webkit-font-smoothing: var(--font-smoothing-webkit-m8nc84, antialiased);
159
159
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-foywby, grayscale);
160
160
  }
161
- .awsui_text-content_6absk_zjs8c_94 h2:not(#\9) {
161
+ .awsui_text-content_6absk_14chd_94 h2:not(#\9) {
162
162
  font-size: var(--font-heading-l-size-hknb7q, 20px);
163
163
  line-height: var(--font-heading-l-line-height-thvd8z, 24px);
164
164
  letter-spacing: var(--font-heading-l-letter-spacing-r9otw4, -0.015em);
@@ -166,7 +166,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
166
166
  -webkit-font-smoothing: var(--font-smoothing-webkit-m8nc84, antialiased);
167
167
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-foywby, grayscale);
168
168
  }
169
- .awsui_text-content_6absk_zjs8c_94 h3:not(#\9) {
169
+ .awsui_text-content_6absk_14chd_94 h3:not(#\9) {
170
170
  font-size: var(--font-heading-m-size-ytqm4n, 18px);
171
171
  line-height: var(--font-heading-m-line-height-bk6bii, 22px);
172
172
  letter-spacing: var(--font-heading-m-letter-spacing-fefyfv, -0.01em);
@@ -174,7 +174,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
174
174
  -webkit-font-smoothing: var(--font-smoothing-webkit-m8nc84, antialiased);
175
175
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-foywby, grayscale);
176
176
  }
177
- .awsui_text-content_6absk_zjs8c_94 h4:not(#\9) {
177
+ .awsui_text-content_6absk_14chd_94 h4:not(#\9) {
178
178
  font-size: var(--font-heading-s-size-5q52fl, 16px);
179
179
  line-height: var(--font-heading-s-line-height-w6crw0, 20px);
180
180
  letter-spacing: var(--font-heading-s-letter-spacing-ebpsb6, -0.005em);
@@ -182,118 +182,116 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
182
182
  -webkit-font-smoothing: var(--font-smoothing-webkit-m8nc84, antialiased);
183
183
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-foywby, grayscale);
184
184
  }
185
- .awsui_text-content_6absk_zjs8c_94 h5:not(#\9) {
185
+ .awsui_text-content_6absk_14chd_94 h5:not(#\9) {
186
186
  font-size: var(--font-heading-xs-size-d24gfe, 14px);
187
187
  line-height: var(--font-heading-xs-line-height-gyxcvc, 18px);
188
188
  font-weight: var(--font-heading-xs-weight-dcgvdt, 700);
189
189
  -webkit-font-smoothing: var(--font-smoothing-webkit-m8nc84, antialiased);
190
190
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-foywby, grayscale);
191
191
  }
192
- .awsui_text-content_6absk_zjs8c_94 b:not(#\9),
193
- .awsui_text-content_6absk_zjs8c_94 strong:not(#\9) {
192
+ .awsui_text-content_6absk_14chd_94 b:not(#\9),
193
+ .awsui_text-content_6absk_14chd_94 strong:not(#\9) {
194
194
  font-weight: 700;
195
195
  }
196
- .awsui_text-content_6absk_zjs8c_94 p:not(#\9) {
196
+ .awsui_text-content_6absk_14chd_94 p:not(#\9) {
197
197
  font-size: var(--font-body-m-size-dhtyxm, 14px);
198
198
  line-height: var(--font-body-m-line-height-5wv9x1, 20px);
199
199
  color: inherit;
200
200
  }
201
- .awsui_text-content_6absk_zjs8c_94 small:not(#\9) {
201
+ .awsui_text-content_6absk_14chd_94 small:not(#\9) {
202
202
  display: inline-block;
203
203
  font-size: var(--font-body-s-size-8339kg, 12px);
204
204
  line-height: var(--font-body-s-line-height-uztvf6, 16px);
205
205
  letter-spacing: var(--font-body-s-letter-spacing-4obhmb, 0.005em);
206
206
  color: var(--color-text-small-zfvvfc, #5f6b7a);
207
207
  }
208
- .awsui_text-content_6absk_zjs8c_94 small a:not(#\9) {
208
+ .awsui_text-content_6absk_14chd_94 small a:not(#\9) {
209
209
  font-size: inherit;
210
210
  color: var(--color-text-link-default-latg1a, #0972d3);
211
- font-weight: var(--font-link-primary-weight-k726vk, "inherit");
212
- letter-spacing: var(--font-link-primary-letter-spacing-uqaf5f, "inherit");
213
- -webkit-text-decoration: var(--font-link-primary-decoration-cp88s8, underline);
214
- text-decoration: var(--font-link-primary-decoration-cp88s8, underline);
211
+ font-weight: inherit;
212
+ letter-spacing: normal;
213
+ text-decoration: underline;
215
214
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
216
- text-decoration-color: var(--color-text-link-primary-underline-gvxbge, #0972d3);
215
+ text-decoration-color: currentColor;
217
216
  transition-property: color, -webkit-text-decoration;
218
217
  transition-property: color, text-decoration;
219
218
  transition-property: color, text-decoration, -webkit-text-decoration;
220
219
  transition-duration: var(--motion-duration-refresh-only-medium-nf6485, 165ms);
221
220
  }
222
221
  @media (prefers-reduced-motion: reduce) {
223
- .awsui_text-content_6absk_zjs8c_94 small a:not(#\9) {
222
+ .awsui_text-content_6absk_14chd_94 small a:not(#\9) {
224
223
  animation: none;
225
224
  transition: none;
226
225
  }
227
226
  }
228
- .awsui-motion-disabled .awsui_text-content_6absk_zjs8c_94 small a:not(#\9), .awsui-mode-entering .awsui_text-content_6absk_zjs8c_94 small a:not(#\9) {
227
+ .awsui-motion-disabled .awsui_text-content_6absk_14chd_94 small a:not(#\9), .awsui-mode-entering .awsui_text-content_6absk_14chd_94 small a:not(#\9) {
229
228
  animation: none;
230
229
  transition: none;
231
230
  }
232
- .awsui_text-content_6absk_zjs8c_94 small a:not(#\9):hover {
231
+ .awsui_text-content_6absk_14chd_94 small a:not(#\9):hover {
233
232
  cursor: pointer;
234
233
  color: var(--color-text-link-hover-8j6p14, #033160);
235
234
  }
236
- .awsui_text-content_6absk_zjs8c_94 small a:not(#\9):focus {
235
+ .awsui_text-content_6absk_14chd_94 small a:not(#\9):focus {
237
236
  outline: none;
238
237
  }
239
- .awsui_text-content_6absk_zjs8c_94 small a:not(#\9):active {
238
+ .awsui_text-content_6absk_14chd_94 small a:not(#\9):active {
240
239
  color: var(--color-text-link-hover-8j6p14, #033160);
241
240
  }
242
- .awsui_text-content_6absk_zjs8c_94 small a:not(#\9):active, .awsui_text-content_6absk_zjs8c_94 small a:not(#\9):focus, .awsui_text-content_6absk_zjs8c_94 small a:not(#\9):hover {
241
+ .awsui_text-content_6absk_14chd_94 small a:not(#\9):active, .awsui_text-content_6absk_14chd_94 small a:not(#\9):focus, .awsui_text-content_6absk_14chd_94 small a:not(#\9):hover {
243
242
  text-decoration: underline;
244
243
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
245
244
  text-decoration-color: currentColor;
246
245
  }
247
- .awsui_text-content_6absk_zjs8c_94 code:not(#\9),
248
- .awsui_text-content_6absk_zjs8c_94 pre:not(#\9),
249
- .awsui_text-content_6absk_zjs8c_94 samp:not(#\9) {
246
+ .awsui_text-content_6absk_14chd_94 code:not(#\9),
247
+ .awsui_text-content_6absk_14chd_94 pre:not(#\9),
248
+ .awsui_text-content_6absk_14chd_94 samp:not(#\9) {
250
249
  font-family: var(--font-family-monospace-bftdwf, Monaco, Menlo, Consolas, "Courier Prime", Courier, "Courier New", monospace);
251
250
  background: transparent;
252
251
  }
253
- .awsui_text-content_6absk_zjs8c_94 code:not(#\9) {
252
+ .awsui_text-content_6absk_14chd_94 code:not(#\9) {
254
253
  font-size: var(--font-body-s-size-8339kg, 12px);
255
254
  line-height: var(--font-body-s-line-height-uztvf6, 16px);
256
255
  letter-spacing: var(--font-body-s-letter-spacing-4obhmb, 0.005em);
257
256
  }
258
- .awsui_text-content_6absk_zjs8c_94 a:not(#\9) {
257
+ .awsui_text-content_6absk_14chd_94 a:not(#\9) {
259
258
  color: var(--color-text-link-default-latg1a, #0972d3);
260
- font-weight: var(--font-link-primary-weight-k726vk, "inherit");
261
- letter-spacing: var(--font-link-primary-letter-spacing-uqaf5f, "inherit");
262
- -webkit-text-decoration: var(--font-link-primary-decoration-cp88s8, underline);
263
- text-decoration: var(--font-link-primary-decoration-cp88s8, underline);
259
+ font-weight: inherit;
260
+ letter-spacing: normal;
261
+ text-decoration: underline;
264
262
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
265
- text-decoration-color: var(--color-text-link-primary-underline-gvxbge, #0972d3);
263
+ text-decoration-color: currentColor;
266
264
  transition-property: color, -webkit-text-decoration;
267
265
  transition-property: color, text-decoration;
268
266
  transition-property: color, text-decoration, -webkit-text-decoration;
269
267
  transition-duration: var(--motion-duration-refresh-only-medium-nf6485, 165ms);
270
268
  }
271
269
  @media (prefers-reduced-motion: reduce) {
272
- .awsui_text-content_6absk_zjs8c_94 a:not(#\9) {
270
+ .awsui_text-content_6absk_14chd_94 a:not(#\9) {
273
271
  animation: none;
274
272
  transition: none;
275
273
  }
276
274
  }
277
- .awsui-motion-disabled .awsui_text-content_6absk_zjs8c_94 a:not(#\9), .awsui-mode-entering .awsui_text-content_6absk_zjs8c_94 a:not(#\9) {
275
+ .awsui-motion-disabled .awsui_text-content_6absk_14chd_94 a:not(#\9), .awsui-mode-entering .awsui_text-content_6absk_14chd_94 a:not(#\9) {
278
276
  animation: none;
279
277
  transition: none;
280
278
  }
281
- .awsui_text-content_6absk_zjs8c_94 a:not(#\9):hover {
279
+ .awsui_text-content_6absk_14chd_94 a:not(#\9):hover {
282
280
  cursor: pointer;
283
281
  color: var(--color-text-link-hover-8j6p14, #033160);
284
282
  }
285
- .awsui_text-content_6absk_zjs8c_94 a:not(#\9):focus {
283
+ .awsui_text-content_6absk_14chd_94 a:not(#\9):focus {
286
284
  outline: none;
287
285
  }
288
- .awsui_text-content_6absk_zjs8c_94 a:not(#\9):active {
286
+ .awsui_text-content_6absk_14chd_94 a:not(#\9):active {
289
287
  color: var(--color-text-link-hover-8j6p14, #033160);
290
288
  }
291
- .awsui_text-content_6absk_zjs8c_94 a:not(#\9):active, .awsui_text-content_6absk_zjs8c_94 a:not(#\9):focus, .awsui_text-content_6absk_zjs8c_94 a:not(#\9):hover {
289
+ .awsui_text-content_6absk_14chd_94 a:not(#\9):active, .awsui_text-content_6absk_14chd_94 a:not(#\9):focus, .awsui_text-content_6absk_14chd_94 a:not(#\9):hover {
292
290
  text-decoration: underline;
293
291
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
294
292
  text-decoration-color: currentColor;
295
293
  }
296
- .awsui_text-content_6absk_zjs8c_94 a:not(#\9):focus {
294
+ .awsui_text-content_6absk_14chd_94 a:not(#\9):focus {
297
295
  outline: thin dotted;
298
296
  outline: var(--border-link-focus-ring-outline-kkfop6, 0);
299
297
  outline-offset: 2px;
@@ -301,31 +299,31 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
301
299
  border-radius: var(--border-radius-control-default-focus-ring-u8zbsz, 4px);
302
300
  box-shadow: 0 0 0 var(--border-link-focus-ring-shadow-spread-v8hkrl, 2px) var(--color-border-item-focused-b2ntyl, #0972d3);
303
301
  }
304
- .awsui_text-content_6absk_zjs8c_94 ul:not(#\9),
305
- .awsui_text-content_6absk_zjs8c_94 ol:not(#\9) {
302
+ .awsui_text-content_6absk_14chd_94 ul:not(#\9),
303
+ .awsui_text-content_6absk_14chd_94 ol:not(#\9) {
306
304
  padding-left: var(--space-l-t419sm, 20px);
307
305
  margin: var(--space-scaled-xs-26e2du, 8px) 0;
308
306
  list-style-position: outside;
309
307
  }
310
- .awsui_text-content_6absk_zjs8c_94 ul + ul:not(#\9),
311
- .awsui_text-content_6absk_zjs8c_94 ul + ol:not(#\9),
312
- .awsui_text-content_6absk_zjs8c_94 ul > li + ul:not(#\9),
313
- .awsui_text-content_6absk_zjs8c_94 ul > li + li:not(#\9),
314
- .awsui_text-content_6absk_zjs8c_94 ul > li + ol:not(#\9),
315
- .awsui_text-content_6absk_zjs8c_94 ul > li > ul:not(#\9),
316
- .awsui_text-content_6absk_zjs8c_94 ul > li > ol:not(#\9),
317
- .awsui_text-content_6absk_zjs8c_94 ol + ul:not(#\9),
318
- .awsui_text-content_6absk_zjs8c_94 ol + ol:not(#\9),
319
- .awsui_text-content_6absk_zjs8c_94 ol > li + ul:not(#\9),
320
- .awsui_text-content_6absk_zjs8c_94 ol > li + li:not(#\9),
321
- .awsui_text-content_6absk_zjs8c_94 ol > li + ol:not(#\9),
322
- .awsui_text-content_6absk_zjs8c_94 ol > li > ul:not(#\9),
323
- .awsui_text-content_6absk_zjs8c_94 ol > li > ol:not(#\9) {
308
+ .awsui_text-content_6absk_14chd_94 ul + ul:not(#\9),
309
+ .awsui_text-content_6absk_14chd_94 ul + ol:not(#\9),
310
+ .awsui_text-content_6absk_14chd_94 ul > li + ul:not(#\9),
311
+ .awsui_text-content_6absk_14chd_94 ul > li + li:not(#\9),
312
+ .awsui_text-content_6absk_14chd_94 ul > li + ol:not(#\9),
313
+ .awsui_text-content_6absk_14chd_94 ul > li > ul:not(#\9),
314
+ .awsui_text-content_6absk_14chd_94 ul > li > ol:not(#\9),
315
+ .awsui_text-content_6absk_14chd_94 ol + ul:not(#\9),
316
+ .awsui_text-content_6absk_14chd_94 ol + ol:not(#\9),
317
+ .awsui_text-content_6absk_14chd_94 ol > li + ul:not(#\9),
318
+ .awsui_text-content_6absk_14chd_94 ol > li + li:not(#\9),
319
+ .awsui_text-content_6absk_14chd_94 ol > li + ol:not(#\9),
320
+ .awsui_text-content_6absk_14chd_94 ol > li > ul:not(#\9),
321
+ .awsui_text-content_6absk_14chd_94 ol > li > ol:not(#\9) {
324
322
  padding-top: var(--space-scaled-xxs-7597g1, 4px);
325
323
  }
326
- .awsui_text-content_6absk_zjs8c_94 ul > li > ul:not(#\9),
327
- .awsui_text-content_6absk_zjs8c_94 ul > li > ol:not(#\9),
328
- .awsui_text-content_6absk_zjs8c_94 ol > li > ul:not(#\9),
329
- .awsui_text-content_6absk_zjs8c_94 ol > li > ol:not(#\9) {
324
+ .awsui_text-content_6absk_14chd_94 ul > li > ul:not(#\9),
325
+ .awsui_text-content_6absk_14chd_94 ul > li > ol:not(#\9),
326
+ .awsui_text-content_6absk_14chd_94 ol > li > ul:not(#\9),
327
+ .awsui_text-content_6absk_14chd_94 ol > li > ol:not(#\9) {
330
328
  margin: 0;
331
329
  }
@@ -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
- "text-content": "awsui_text-content_6absk_zjs8c_94"
5
+ "text-content": "awsui_text-content_6absk_14chd_94"
6
6
  };
7
7