@cloudscape-design/components-themeable 3.0.1330 → 3.0.1331

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.
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "9ef475158bf1a6dcf2f1e318d73c5cecd52610ee"
2
+ "commit": "fcf95ed76c7260846f3bb09da02414f4f8f649dc"
3
3
  }
@@ -1,6 +1,6 @@
1
1
 
2
2
  // Build environment
3
- $awsui-commit-hash: "9ef47515";
3
+ $awsui-commit-hash: "fcf95ed7";
4
4
  // Manually managed CSS-variables
5
5
  $maxContentWidth: --awsui-max-content-width-z17rmd;
6
6
  $minContentWidth: --awsui-min-content-width-z17rmd;
@@ -3981,5 +3981,5 @@
3981
3981
  }
3982
3982
  }
3983
3983
  :root {
3984
- --awsui-version-info-9ef47515: true;
3984
+ --awsui-version-info-fcf95ed7: true;
3985
3985
  }
@@ -1,6 +1,6 @@
1
1
  export var PACKAGE_SOURCE = "components";
2
- export var PACKAGE_VERSION = "3.0.0 (9ef47515)";
3
- export var GIT_SHA = "9ef47515";
2
+ export var PACKAGE_VERSION = "3.0.0 (fcf95ed7)";
3
+ export var GIT_SHA = "fcf95ed7";
4
4
  export var THEME = "open-source-visual-refresh";
5
5
  export var SYSTEM = "core";
6
6
  export var ALWAYS_VISUAL_REFRESH = true;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "PACKAGE_SOURCE": "components",
3
- "PACKAGE_VERSION": "3.0.0 (9ef47515)",
4
- "GIT_SHA": "9ef47515",
3
+ "PACKAGE_VERSION": "3.0.0 (fcf95ed7)",
4
+ "GIT_SHA": "fcf95ed7",
5
5
  "THEME": "default",
6
6
  "SYSTEM": "core",
7
7
  "ALWAYS_VISUAL_REFRESH": false,
@@ -1 +1 @@
1
- {"version":3,"file":"format-date-localized.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-localized.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,GACP,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,UAyCA"}
1
+ {"version":3,"file":"format-date-localized.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-localized.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,GACP,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,UAyCA"}
@@ -2,6 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { isValid, parseISO } from 'date-fns';
4
4
  import { formatTimeOffsetLocalized } from './format-time-offset';
5
+ import { getDateTimeFormat } from './intl-date-time-format-cache';
5
6
  export default function formatDateLocalized({ date: isoDate, hideTimeOffset, isDateOnly, isMonthOnly, timeOffset, locale, }) {
6
7
  let date = parseISO(isoDate);
7
8
  // if the date is not ISO formatted, fallback to built-in date parsing
@@ -9,13 +10,13 @@ export default function formatDateLocalized({ date: isoDate, hideTimeOffset, isD
9
10
  date = new Date(isoDate);
10
11
  }
11
12
  if (isMonthOnly) {
12
- const formattedMonthDate = new Intl.DateTimeFormat(locale, {
13
+ const formattedMonthDate = getDateTimeFormat(locale, {
13
14
  month: 'long',
14
15
  year: 'numeric',
15
16
  }).format(date);
16
17
  return formattedMonthDate;
17
18
  }
18
- const formattedDate = new Intl.DateTimeFormat(locale, {
19
+ const formattedDate = getDateTimeFormat(locale, {
19
20
  month: 'long',
20
21
  year: 'numeric',
21
22
  day: 'numeric',
@@ -23,7 +24,7 @@ export default function formatDateLocalized({ date: isoDate, hideTimeOffset, isD
23
24
  if (isDateOnly) {
24
25
  return formattedDate;
25
26
  }
26
- const formattedTime = new Intl.DateTimeFormat(locale, {
27
+ const formattedTime = getDateTimeFormat(locale, {
27
28
  hour: '2-digit',
28
29
  hourCycle: 'h23',
29
30
  minute: '2-digit',
@@ -1 +1 @@
1
- {"version":3,"file":"format-date-localized.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-localized.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,GAQP;IACC,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,sEAAsE;IACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACzD,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QACpD,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QACpD,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,MAAM,iBAAiB,GAAG,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;IAEvF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3E,OAAO,iBAAiB,GAAG,GAAG,GAAG,mBAAmB,CAAC;AACvD,CAAC;AAED,kFAAkF;AAClF,MAAM,iCAAiC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEnE,SAAS,oBAAoB,CAAC,MAAe;IAC3C,OAAO,MAAM,IAAI,iCAAiC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isValid, parseISO } from 'date-fns';\n\nimport { formatTimeOffsetLocalized } from './format-time-offset';\n\nexport default function formatDateLocalized({\n date: isoDate,\n hideTimeOffset,\n isDateOnly,\n isMonthOnly,\n timeOffset,\n locale,\n}: {\n date: string;\n hideTimeOffset?: boolean;\n isMonthOnly: boolean;\n isDateOnly: boolean;\n timeOffset?: number;\n locale?: string;\n}) {\n let date = parseISO(isoDate);\n // if the date is not ISO formatted, fallback to built-in date parsing\n if (!isValid(date)) {\n date = new Date(isoDate);\n }\n\n if (isMonthOnly) {\n const formattedMonthDate = new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n }).format(date);\n\n return formattedMonthDate;\n }\n\n const formattedDate = new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n }).format(date);\n\n if (isDateOnly) {\n return formattedDate;\n }\n\n const formattedTime = new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n hourCycle: 'h23',\n minute: '2-digit',\n second: '2-digit',\n }).format(date);\n\n const formattedDateTime = formattedDate + getDateTimeSeparator(locale) + formattedTime;\n\n if (hideTimeOffset) {\n return formattedDateTime;\n }\n\n const formattedTimeOffset = formatTimeOffsetLocalized(isoDate, timeOffset);\n return formattedDateTime + ' ' + formattedTimeOffset;\n}\n\n// Languages in which date and time are separated just with a space, without comma\nconst languagesWithoutDateTimeSeparator = ['ja', 'zh-CN', 'zh-TW'];\n\nfunction getDateTimeSeparator(locale?: string) {\n return locale && languagesWithoutDateTimeSeparator.includes(locale) ? ' ' : ', ';\n}\n"]}
1
+ {"version":3,"file":"format-date-localized.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-localized.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,GAQP;IACC,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,sEAAsE;IACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,EAAE;YACnD,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,EAAE;QAC9C,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,EAAE;QAC9C,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,MAAM,iBAAiB,GAAG,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;IAEvF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3E,OAAO,iBAAiB,GAAG,GAAG,GAAG,mBAAmB,CAAC;AACvD,CAAC;AAED,kFAAkF;AAClF,MAAM,iCAAiC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEnE,SAAS,oBAAoB,CAAC,MAAe;IAC3C,OAAO,MAAM,IAAI,iCAAiC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isValid, parseISO } from 'date-fns';\n\nimport { formatTimeOffsetLocalized } from './format-time-offset';\nimport { getDateTimeFormat } from './intl-date-time-format-cache';\n\nexport default function formatDateLocalized({\n date: isoDate,\n hideTimeOffset,\n isDateOnly,\n isMonthOnly,\n timeOffset,\n locale,\n}: {\n date: string;\n hideTimeOffset?: boolean;\n isMonthOnly: boolean;\n isDateOnly: boolean;\n timeOffset?: number;\n locale?: string;\n}) {\n let date = parseISO(isoDate);\n // if the date is not ISO formatted, fallback to built-in date parsing\n if (!isValid(date)) {\n date = new Date(isoDate);\n }\n\n if (isMonthOnly) {\n const formattedMonthDate = getDateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n }).format(date);\n\n return formattedMonthDate;\n }\n\n const formattedDate = getDateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n }).format(date);\n\n if (isDateOnly) {\n return formattedDate;\n }\n\n const formattedTime = getDateTimeFormat(locale, {\n hour: '2-digit',\n hourCycle: 'h23',\n minute: '2-digit',\n second: '2-digit',\n }).format(date);\n\n const formattedDateTime = formattedDate + getDateTimeSeparator(locale) + formattedTime;\n\n if (hideTimeOffset) {\n return formattedDateTime;\n }\n\n const formattedTimeOffset = formatTimeOffsetLocalized(isoDate, timeOffset);\n return formattedDateTime + ' ' + formattedTimeOffset;\n}\n\n// Languages in which date and time are separated just with a space, without comma\nconst languagesWithoutDateTimeSeparator = ['ja', 'zh-CN', 'zh-TW'];\n\nfunction getDateTimeSeparator(locale?: string) {\n return locale && languagesWithoutDateTimeSeparator.includes(locale) ? ' ' : ', ';\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function getDateTimeFormat(locale: string | undefined, options: Intl.DateTimeFormatOptions): Intl.DateTimeFormat;
2
+ //# sourceMappingURL=intl-date-time-format-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intl-date-time-format-cache.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/intl-date-time-format-cache.ts"],"names":[],"mappings":"AAUA,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,IAAI,CAAC,qBAAqB,GAClC,IAAI,CAAC,cAAc,CAWrB"}
@@ -0,0 +1,27 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // Constructing Intl.DateTimeFormat is expensive (the browser parses locale data and
4
+ // resolves options), so we cache instances keyed by locale and options for reuse.
5
+ // No eviction: the number of unique locale/option combinations in an application is
6
+ // small and bounded.
7
+ const formatterCache = new Map();
8
+ export function getDateTimeFormat(locale, options) {
9
+ const cacheKey = createCacheKey(locale, options);
10
+ const cached = formatterCache.get(cacheKey);
11
+ if (cached) {
12
+ return cached;
13
+ }
14
+ const formatter = new Intl.DateTimeFormat(locale, options);
15
+ formatterCache.set(cacheKey, formatter);
16
+ return formatter;
17
+ }
18
+ // Options are sorted by key so the cache hits regardless of property order.
19
+ function createCacheKey(locale, options) {
20
+ const localeKey = locale !== null && locale !== void 0 ? locale : '';
21
+ const optionsKey = Object.keys(options)
22
+ .sort()
23
+ .map(key => `${key}:${options[key]}`)
24
+ .join(',');
25
+ return `${localeKey}|${optionsKey}`;
26
+ }
27
+ //# sourceMappingURL=intl-date-time-format-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intl-date-time-format-cache.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/intl-date-time-format-cache.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,oFAAoF;AACpF,kFAAkF;AAElF,oFAAoF;AACpF,qBAAqB;AACrB,MAAM,cAAc,GAAG,IAAI,GAAG,EAA+B,CAAC;AAE9D,MAAM,UAAU,iBAAiB,CAC/B,MAA0B,EAC1B,OAAmC;IAEnC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4EAA4E;AAC5E,SAAS,cAAc,CAAC,MAA0B,EAAE,OAAmC;IACrF,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SACpC,IAAI,EAAE;SACN,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,GAAuC,CAAC,EAAE,CAAC;SACxE,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;AACtC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// Constructing Intl.DateTimeFormat is expensive (the browser parses locale data and\n// resolves options), so we cache instances keyed by locale and options for reuse.\n\n// No eviction: the number of unique locale/option combinations in an application is\n// small and bounded.\nconst formatterCache = new Map<string, Intl.DateTimeFormat>();\n\nexport function getDateTimeFormat(\n locale: string | undefined,\n options: Intl.DateTimeFormatOptions\n): Intl.DateTimeFormat {\n const cacheKey = createCacheKey(locale, options);\n const cached = formatterCache.get(cacheKey);\n\n if (cached) {\n return cached;\n }\n\n const formatter = new Intl.DateTimeFormat(locale, options);\n formatterCache.set(cacheKey, formatter);\n return formatter;\n}\n\n// Options are sorted by key so the cache hits regardless of property order.\nfunction createCacheKey(locale: string | undefined, options: Intl.DateTimeFormatOptions): string {\n const localeKey = locale ?? '';\n const optionsKey = Object.keys(options)\n .sort()\n .map(key => `${key}:${options[key as keyof Intl.DateTimeFormatOptions]}`)\n .join(',');\n return `${localeKey}|${optionsKey}`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"names":[],"mappings":"AA2CA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,cAAc,CAAC;AA6CzE,eAAO,MAAM,sBAAsB,EAW9B,mBAAmB,CAAC;AAEzB,QAAA,MAAM,aAAa,EAwvBd,mBAAmB,CAAC;AAEzB,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"names":[],"mappings":"AA2CA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,cAAc,CAAC;AA6CzE,eAAO,MAAM,sBAAsB,EAW9B,mBAAmB,CAAC;AAEzB,QAAA,MAAM,aAAa,EA0vBd,mBAAmB,CAAC;AAEzB,eAAe,aAAa,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import React, { useCallback, useImperativeHandle, useRef } from 'react';
3
+ import React, { useCallback, useImperativeHandle, useMemo, useRef } from 'react';
4
4
  import clsx from 'clsx';
5
5
  import { useContainerQuery } from '@cloudscape-design/component-toolkit';
6
6
  import { useMergeRefs, warnOnce } from '@cloudscape-design/component-toolkit/internal';
@@ -180,11 +180,7 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
180
180
  const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);
181
181
  const { moveFocusDown, moveFocusUp, moveFocus } = useSelectionFocusMove(selectionType, allItems.length);
182
182
  const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });
183
- const visibleColumnDefinitions = getVisibleColumnDefinitions({
184
- columnDefinitions,
185
- columnDisplay,
186
- visibleColumns,
187
- });
183
+ const visibleColumnDefinitions = useMemo(() => getVisibleColumnDefinitions({ columnDefinitions, columnDisplay, visibleColumns }), [columnDefinitions, columnDisplay, visibleColumns]);
188
184
  const visibleColumnIds = visibleColumnDefinitions.map((col, idx) => getColumnKey(col, idx).toString());
189
185
  const { groupColumnMap, ...columnGroupsLayout } = useColumnGroups(columnDefinitions, visibleColumnIds, groupDefinitions, columnDisplay);
190
186
  const selectionProps = {
@@ -243,17 +239,20 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
243
239
  const setHeaderRef = useCallback((id) => {
244
240
  headerIdRef.current = id;
245
241
  }, []);
246
- const visibleColumnWidthsWithSelection = [];
247
- const visibleColumnIdsWithSelection = [];
248
- if (hasSelection) {
249
- visibleColumnWidthsWithSelection.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });
250
- visibleColumnIdsWithSelection.push(selectionColumnId);
251
- }
252
- for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {
253
- const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);
254
- visibleColumnWidthsWithSelection.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });
255
- visibleColumnIdsWithSelection.push(columnId);
256
- }
242
+ const { visibleColumnWidthsWithSelection, visibleColumnIdsWithSelection } = useMemo(() => {
243
+ const widths = [];
244
+ const ids = [];
245
+ if (hasSelection) {
246
+ widths.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });
247
+ ids.push(selectionColumnId);
248
+ }
249
+ for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {
250
+ const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);
251
+ widths.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });
252
+ ids.push(columnId);
253
+ }
254
+ return { visibleColumnWidthsWithSelection: widths, visibleColumnIdsWithSelection: ids };
255
+ }, [hasSelection, visibleColumnDefinitions]);
257
256
  const stickyState = useStickyColumns({
258
257
  visibleColumns: visibleColumnIdsWithSelection,
259
258
  stickyColumnsFirst: ((_a = stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.first) !== null && _a !== void 0 ? _a : 0) + ((stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.first) && hasSelection ? 1 : 0),
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useImperativeHandle, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport { useMergeRefs, warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport {\n GeneratedAnalyticsMetadataFragment,\n getAnalyticsMetadataAttribute,\n} from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalContainer, { InternalContainerProps } from '../container/internal';\nimport { useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport { getAnalyticsMetadataProps, getBaseProps } from '../internal/base-component';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport { CollectionLabelContext } from '../internal/context/collection-label-context';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport {\n FilterRef,\n HeaderRef,\n PaginationRef,\n PreferencesRef,\n TableComponentsContextProvider,\n} from '../internal/context/table-component-context';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport useMouseDownTarget from '../internal/hooks/use-mouse-down-target';\nimport { usePerformanceMarks } from '../internal/hooks/use-performance-marks';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { useScrollSync } from '../internal/hooks/use-scroll-sync';\nimport { useTableInteractionMetrics } from '../internal/hooks/use-table-interaction-metrics';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { isDevelopment } from '../internal/is-development';\nimport { SomeRequired } from '../internal/types';\nimport InternalLiveRegion from '../live-region/internal';\nimport { GeneratedAnalyticsMetadataTableComponent } from './analytics-metadata/interfaces';\nimport { TableBodyCell } from './body-cell';\nimport { TableColGroup } from './column-groups/col-group';\nimport { useColumnGroups } from './column-groups/use-column-groups';\nimport { checkColumnWidths } from './column-widths-utils';\nimport { useExpandableTableProps } from './expandable-rows/expandable-rows-utils';\nimport { TableForwardRefType, TableProps, TableRow } from './interfaces';\nimport { NoDataCell } from './no-data-cell';\nimport { getLoaderContent } from './progressive-loading/items-loader';\nimport { TableLoaderCell } from './progressive-loading/loader-cell';\nimport { useProgressiveLoadingProps } from './progressive-loading/progressive-loading-utils';\nimport { ResizeTracker } from './resizer';\nimport { focusMarkers, useSelection, useSelectionFocusMove } from './selection';\nimport { TableBodySelectionCell } from './selection/selection-cell';\nimport { useGroupSelection } from './selection/use-group-selection';\nimport { SkeletonRows } from './skeleton-rows';\nimport { useStickyColumns } from './sticky-columns';\nimport StickyHeader, { StickyHeaderRef } from './sticky-header';\nimport { StickyScrollbar } from './sticky-scrollbar';\nimport {\n getTableRoleProps,\n getTableRowRoleProps,\n getTableWrapperRoleProps,\n GridNavigationProvider,\n TableRole,\n} from './table-role';\nimport Thead, { TheadProps } from './thead';\nimport ToolsHeader from './tools-header';\nimport { useCellEditing } from './use-cell-editing';\nimport { ColumnWidthDefinition, ColumnWidthsProvider, DEFAULT_COLUMN_WIDTH } from './use-column-widths';\nimport { usePreventStickyClickScroll } from './use-prevent-sticky-click-scroll';\nimport { useRowEvents } from './use-row-events';\nimport useTableFocusNavigation from './use-table-focus-navigation';\nimport { checkSortingState, getColumnKey, getItemKey, getVisibleColumnDefinitions, toContainerVariant } from './utils';\n\nimport buttonStyles from '../button/styles.css.js';\nimport headerStyles from '../header/styles.css.js';\nimport styles from './styles.css.js';\n\nconst GRID_NAVIGATION_PAGE_SIZE = 10;\nconst SELECTION_COLUMN_WIDTH = 54;\nconst selectionColumnId = Symbol('selection-column-id');\n\ntype InternalTableProps<T> = SomeRequired<\n TableProps<T>,\n 'items' | 'selectedItems' | 'variant' | 'firstIndex' | 'cellVerticalAlign'\n> &\n InternalBaseComponentProps & {\n __funnelSubStepProps?: InternalContainerProps['__funnelSubStepProps'];\n };\n\nexport const InternalTableAsSubstep = React.forwardRef(\n <T,>(props: InternalTableProps<T>, ref: React.Ref<TableProps.Ref>) => {\n const { funnelSubStepProps } = useFunnelSubStep();\n\n const tableProps: InternalTableProps<T> = {\n ...props,\n __funnelSubStepProps: funnelSubStepProps,\n };\n\n return <InternalTable {...tableProps} ref={ref} />;\n }\n) as TableForwardRefType;\n\nconst InternalTable = React.forwardRef(\n <T,>(\n {\n header,\n footer,\n empty,\n filter,\n pagination,\n preferences,\n items,\n columnDefinitions,\n groupDefinitions,\n trackBy,\n loading,\n loadingText,\n skeleton,\n selectionType: externalSelectionType,\n selectedItems,\n isItemDisabled,\n ariaLabels,\n onSelectionChange,\n onSortingChange,\n sortingColumn,\n sortingDescending,\n sortingDisabled,\n visibleColumns,\n stickyHeader,\n stickyHeaderVerticalOffset,\n onRowClick,\n onRowContextMenu,\n wrapLines,\n stripedRows,\n contentDensity,\n submitEdit,\n onEditCancel,\n resizableColumns,\n onColumnWidthsChange,\n variant,\n __internalRootRef,\n totalItemsCount,\n firstIndex,\n renderAriaLive,\n stickyColumns,\n columnDisplay,\n enableKeyboardNavigation,\n expandableRows: externalExpandableRows,\n getLoadingStatus,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n renderLoaderEmpty,\n renderLoaderCounter,\n cellVerticalAlign,\n __funnelSubStepProps,\n ...rest\n }: InternalTableProps<T>,\n ref: React.Ref<TableProps.Ref>\n ) => {\n // Keyboard navigation defaults to `true` for tables with expandable rows.\n if (externalExpandableRows && enableKeyboardNavigation === undefined) {\n enableKeyboardNavigation = true;\n }\n\n const baseProps = getBaseProps(rest);\n\n const prevStickyHeader = usePrevious(stickyHeader);\n if (prevStickyHeader !== undefined && !!stickyHeader !== !!prevStickyHeader) {\n warnOnce(\n 'Table',\n `\\`stickyHeader\\` has changed from \"${prevStickyHeader}\" to \"${stickyHeader}\". It is not recommended to change the value of this property during the component lifecycle. Please set it to either \"true\" or \"false\" unconditionally.`\n );\n }\n\n const isMobile = useMobile();\n\n const expandableRows = useExpandableTableProps({\n items,\n expandableRows: externalExpandableRows,\n trackBy,\n ariaLabels,\n });\n const { allItems, isExpandable } = expandableRows;\n const { allRows } = useProgressiveLoadingProps({ getLoadingStatus, expandableRows });\n const selectionType = expandableRows.hasGroupSelection ? ('group' as const) : externalSelectionType;\n\n const [containerWidth, wrapperMeasureRef] = useContainerQuery<number>(rect => rect.borderBoxWidth);\n const wrapperMeasureRefObject = useRef(null);\n const wrapperMeasureMergedRef = useMergeRefs(wrapperMeasureRef, wrapperMeasureRefObject);\n\n const [tableWidth, tableMeasureRef] = useContainerQuery<number>(rect => rect.borderBoxWidth);\n const tableRefObject = useRef(null);\n\n const secondaryWrapperRef = React.useRef<HTMLDivElement>(null);\n const theadRef = useRef<HTMLTableRowElement>(null);\n const stickyHeaderRef = React.useRef<StickyHeaderRef>(null);\n const scrollbarRef = React.useRef<HTMLDivElement>(null);\n const { cancelEdit, ...cellEditing } = useCellEditing({ onCancel: onEditCancel, onSubmit: submitEdit });\n const paginationRef = useRef<PaginationRef>({});\n const filterRef = useRef<FilterRef>({});\n const preferencesRef = useRef<PreferencesRef>({});\n const headerRef = useRef<HeaderRef>({});\n /* istanbul ignore next: performance marks do not work in JSDOM */\n const getHeaderText = () =>\n toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(`.${headerStyles['heading-text']}`)\n ?.innerText ?? toolsHeaderPerformanceMarkRef.current?.innerText;\n const getPatternIdentifier = () => {\n const hasActions = !!toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(\n `.${headerStyles.actions} .${buttonStyles.button}`\n );\n\n if (hasActions) {\n return 'table-with-actions';\n }\n\n return '';\n };\n\n const performanceMarkAttributes = usePerformanceMarks(\n 'table',\n () => !loading,\n tableRefObject,\n () => ({\n loading: loading ?? false,\n header: getHeaderText(),\n }),\n [loading]\n );\n\n const analyticsMetadata = getAnalyticsMetadataProps(rest);\n const interactionMetadata = () => {\n const filterData = filterRef.current;\n const paginationData = paginationRef.current;\n return JSON.stringify({\n filterData,\n paginationData,\n sortingColumn: sortingColumn?.sortingField,\n sortingOrder: sortingColumn ? (sortingDescending ? 'Descending' : 'Ascending') : undefined,\n });\n };\n const getComponentConfiguration = () => {\n const headerData = headerRef.current;\n const filterData = filterRef.current;\n const paginationData = paginationRef.current;\n const preferencesData = preferencesRef.current;\n\n return {\n variant,\n flowType: rest.analyticsMetadata?.flowType,\n resourceType: rest.analyticsMetadata?.resourceType,\n instanceIdentifier: analyticsMetadata?.instanceIdentifier,\n taskName: analyticsMetadata?.instanceIdentifier ?? getHeaderText(),\n uxTaskName: getHeaderText(),\n patternIdentifier: getPatternIdentifier(),\n sortedBy: {\n columnId: sortingColumn?.sortingField,\n sortingOrder: sortingColumn ? (sortingDescending ? 'desc' : 'asc') : undefined,\n },\n filtered: filterData?.filtered ?? null,\n filteredBy: filterData?.filteredBy ?? [],\n filteredCount: filterData?.filterCount ?? null,\n totalNumberOfResources: headerData?.totalCount ?? null,\n tablePreferences: {\n visibleColumns: preferencesData?.visibleColumns ?? [],\n resourcesPerPage: preferencesData?.pageSize ?? null,\n },\n pagination: {\n currentPageIndex: paginationData?.currentPageIndex ?? 0,\n totalNumberOfPages: paginationData?.openEnd ? null : (paginationData?.totalPageCount ?? null),\n openEnd: Boolean(paginationData?.openEnd),\n },\n resourcesSelected: selectedItems?.length > 0,\n };\n };\n\n const { setLastUserAction, tableInteractionAttributes } = useTableInteractionMetrics({\n elementRef: tableRefObject,\n loading,\n items,\n instanceIdentifier: analyticsMetadata?.instanceIdentifier,\n itemCount: items.length,\n getComponentIdentifier: getHeaderText,\n getComponentConfiguration,\n interactionMetadata,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToTop: stickyHeaderRef.current?.scrollToTop || (() => undefined),\n cancelEdit,\n }),\n [cancelEdit]\n );\n\n const wrapperRefObject = useRef<HTMLDivElement>(null);\n const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);\n\n const { moveFocusDown, moveFocusUp, moveFocus } = useSelectionFocusMove(selectionType, allItems.length);\n const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });\n\n const visibleColumnDefinitions = getVisibleColumnDefinitions({\n columnDefinitions,\n columnDisplay,\n visibleColumns,\n });\n\n const visibleColumnIds = visibleColumnDefinitions.map((col, idx) => getColumnKey(col, idx).toString());\n\n const { groupColumnMap, ...columnGroupsLayout } = useColumnGroups(\n columnDefinitions,\n visibleColumnIds,\n groupDefinitions,\n columnDisplay\n );\n\n const selectionProps = {\n items: allItems,\n rootItems: items,\n trackBy,\n selectedItems,\n totalItemsCount,\n selectionType,\n isItemDisabled,\n onSelectionChange,\n ariaLabels: {\n ...ariaLabels,\n // `selectionGroupLabel` should not be part of the selection control, it is already part of the selection column header.\n selectionGroupLabel: undefined,\n },\n loading,\n expandableRows,\n getLoadingStatus,\n setLastUserAction,\n };\n const normalSelection = useSelection(selectionProps);\n const groupSelection = useGroupSelection(selectionProps);\n const selection = selectionType === 'group' ? groupSelection : normalSelection;\n const isRowSelected = (row: TableRow<T>) => {\n if (row.type === 'data') {\n return selection.isItemSelected(row.item);\n }\n if (selectionType !== 'group') {\n return false;\n }\n // Group loader is selected when its parent is selected.\n return !row.item ? expandableRows.groupSelection.inverted : selection.isItemSelected(row.item);\n };\n\n if (isDevelopment) {\n if (resizableColumns) {\n checkColumnWidths(columnDefinitions);\n }\n if (sortingColumn?.sortingComparator) {\n checkSortingState(columnDefinitions, sortingColumn.sortingComparator);\n }\n }\n\n const isVisualRefresh = useVisualRefresh();\n const computedVariant = isVisualRefresh\n ? variant\n : ['embedded', 'full-page'].indexOf(variant) > -1\n ? 'container'\n : variant;\n const hasHeader = !!(header || filter || pagination || preferences);\n const hasSelection = !!selectionType;\n const hasFooterPagination = isMobile && variant === 'full-page' && !!pagination;\n const hasFooter = !!footer || hasFooterPagination;\n\n const headerIdRef = useRef<string | undefined>(undefined);\n const isLabelledByHeader = !ariaLabels?.tableLabel && !!header;\n const ariaLabelledby = isLabelledByHeader && headerIdRef.current ? headerIdRef.current : undefined;\n const setHeaderRef = useCallback((id: string) => {\n headerIdRef.current = id;\n }, []);\n\n const visibleColumnWidthsWithSelection: ColumnWidthDefinition[] = [];\n const visibleColumnIdsWithSelection: PropertyKey[] = [];\n if (hasSelection) {\n visibleColumnWidthsWithSelection.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });\n visibleColumnIdsWithSelection.push(selectionColumnId);\n }\n for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {\n const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);\n visibleColumnWidthsWithSelection.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });\n visibleColumnIdsWithSelection.push(columnId);\n }\n\n const stickyState = useStickyColumns({\n visibleColumns: visibleColumnIdsWithSelection,\n stickyColumnsFirst: (stickyColumns?.first ?? 0) + (stickyColumns?.first && hasSelection ? 1 : 0),\n stickyColumnsLast: stickyColumns?.last || 0,\n });\n\n const hasStickyColumns = !!((stickyColumns?.first ?? 0) + (stickyColumns?.last ?? 0) > 0);\n const hasEditableCells = !!columnDefinitions.find(col => col.editConfig);\n\n let tableRole: TableRole = 'table';\n if (isExpandable) {\n tableRole = 'treegrid';\n } else if (enableKeyboardNavigation) {\n tableRole = 'grid';\n } else if (hasEditableCells) {\n tableRole = 'grid-default';\n }\n\n const theadProps: TheadProps = {\n selectionType,\n getSelectAllProps: selection.getSelectAllProps,\n columnDefinitions: visibleColumnDefinitions,\n groupDefinitions,\n columnGroupsLayout,\n variant: computedVariant,\n tableVariant: computedVariant,\n wrapLines,\n resizableColumns,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n onSortingChange,\n onFocusMove: moveFocus,\n onResizeFinish(newWidth) {\n const widthsDetail = columnDefinitions.map(\n (column, index) =>\n newWidth.get(getColumnKey(column, index)) || (column.width as number) || DEFAULT_COLUMN_WIDTH\n );\n const widthsChanged = widthsDetail.some((width, index) => columnDefinitions[index].width !== width);\n if (widthsChanged) {\n fireNonCancelableEvent(onColumnWidthsChange, { widths: widthsDetail });\n }\n },\n singleSelectionHeaderAriaLabel: ariaLabels?.selectionGroupLabel,\n resizerRoleDescription: ariaLabels?.resizerRoleDescription,\n resizerTooltipText: ariaLabels?.resizerTooltipText,\n stripedRows,\n stickyState,\n stickyColumnsFirst: stickyColumns?.first ?? 0,\n stickyColumnsLast: stickyColumns?.last ?? 0,\n selectionColumnId,\n tableRole,\n isExpandable,\n setLastUserAction,\n };\n\n usePreventStickyClickScroll(wrapperRefObject);\n\n const wrapperRef = useMergeRefs(wrapperRefObject, stickyState.refs.wrapper);\n const tableRef = useMergeRefs(tableMeasureRef, tableRefObject, stickyState.refs.table);\n\n const wrapperProps = getTableWrapperRoleProps({\n tableRole,\n isScrollable: !!(tableWidth && containerWidth && tableWidth > containerWidth),\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledby,\n });\n\n const getMouseDownTarget = useMouseDownTarget();\n\n useTableFocusNavigation({\n enableKeyboardNavigation,\n selectionType,\n tableRoot: tableRefObject,\n columnDefinitions: visibleColumnDefinitions,\n numRows: allRows?.length,\n });\n const toolsHeaderPerformanceMarkRef = useRef<HTMLDivElement>(null);\n // If is mobile, we take into consideration the AppLayout's mobile bar and we subtract the tools wrapper height so only the table header is sticky\n const [toolsHeaderHeight, toolsHeaderWrapperMeasureRef] = useContainerQuery(rect => rect.borderBoxHeight);\n const toolsHeaderWrapper = useMergeRefs(toolsHeaderPerformanceMarkRef, toolsHeaderWrapperMeasureRef);\n\n const colIndexOffset = selectionType ? 1 : 0;\n const totalColumnsCount = visibleColumnDefinitions.length + colIndexOffset;\n const headerRowCount = columnGroupsLayout?.rows.length || 1;\n\n return (\n <LinkDefaultVariantContext.Provider value={{ defaultVariant: 'primary' }}>\n <TableComponentsContextProvider value={{ paginationRef, filterRef, preferencesRef, headerRef }}>\n <ColumnWidthsProvider\n visibleColumns={visibleColumnWidthsWithSelection}\n resizableColumns={resizableColumns}\n containerRef={wrapperMeasureRefObject}\n groupColumnMap={groupColumnMap}\n >\n <InternalContainer\n {...baseProps}\n {...tableInteractionAttributes}\n __internalRootRef={__internalRootRef}\n className={clsx(baseProps.className, styles.root)}\n __funnelSubStepProps={__funnelSubStepProps}\n __fullPage={variant === 'full-page'}\n header={\n <>\n {hasHeader && (\n <div>\n <div\n ref={toolsHeaderWrapper}\n className={clsx(styles['header-controls'], styles[`variant-${computedVariant}`])}\n >\n <CollectionLabelContext.Provider value={{ assignId: setHeaderRef }}>\n <ToolsHeader\n header={header}\n filter={filter}\n pagination={pagination}\n preferences={preferences}\n setLastUserAction={setLastUserAction}\n />\n </CollectionLabelContext.Provider>\n </div>\n </div>\n )}\n {stickyHeader && (\n <StickyHeader\n ref={stickyHeaderRef}\n variant={computedVariant}\n theadProps={theadProps}\n wrapperRef={wrapperRefObject}\n theadRef={theadRef}\n secondaryWrapperRef={secondaryWrapperRef}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n tableHasHeader={hasHeader}\n contentDensity={contentDensity}\n tableRole={tableRole}\n hasGroupedColumns={!!columnGroupsLayout && columnGroupsLayout.rows.length > 1}\n columnDefinitions={visibleColumnDefinitions}\n hasSelection={hasSelection}\n />\n )}\n </>\n }\n disableHeaderPaddings={true}\n disableContentPaddings={true}\n disableFooterPaddings={true}\n variant={toContainerVariant(computedVariant)}\n __disableFooterDivider={true}\n __disableStickyMobile={false}\n footer={\n hasFooter ? (\n <div className={clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`])}>\n <div className={clsx(styles.footer, hasFooterPagination && styles['footer-with-pagination'])}>\n {footer && <span>{footer}</span>}\n {hasFooterPagination && <div className={styles['footer-pagination']}>{pagination}</div>}\n </div>\n </div>\n ) : null\n }\n __stickyHeader={stickyHeader}\n __mobileStickyOffset={toolsHeaderHeight ?? 0}\n __stickyOffset={stickyHeaderVerticalOffset}\n {...focusMarkers.root}\n >\n <div\n ref={wrapperRef}\n className={clsx(styles.wrapper, styles[`variant-${computedVariant}`], {\n [styles['has-footer']]: hasFooter,\n [styles['has-header']]: hasHeader,\n })}\n style={stickyState.style.wrapper}\n onScroll={handleScroll}\n {...wrapperProps}\n >\n <div className={styles['wrapper-content-measure']} ref={wrapperMeasureMergedRef}></div>\n {!!renderAriaLive && !!firstIndex && !loading && (\n <InternalLiveRegion hidden={true} tagName=\"span\">\n <span>\n {renderAriaLive({\n firstIndex,\n lastIndex: firstIndex + items.length - 1,\n visibleItemsCount: allItems.length,\n totalItemsCount,\n })}\n </span>\n </InternalLiveRegion>\n )}\n <GridNavigationProvider\n keyboardNavigation={!!enableKeyboardNavigation}\n pageSize={GRID_NAVIGATION_PAGE_SIZE}\n getTable={() => tableRefObject.current}\n >\n <table\n {...performanceMarkAttributes}\n ref={tableRef}\n className={clsx(\n styles.table,\n resizableColumns && styles['table-layout-fixed'],\n columnGroupsLayout && columnGroupsLayout.rows.length > 1 && styles['has-grouped-header'],\n contentDensity === 'compact' && getVisualContextClassname('compact-table')\n )}\n {...getTableRoleProps({\n tableRole,\n totalItemsCount,\n totalColumnsCount: totalColumnsCount,\n headerRowCount,\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledby,\n })}\n >\n {resizableColumns && columnGroupsLayout && columnGroupsLayout.rows.length > 1 && (\n <TableColGroup visibleColumnDefinitions={visibleColumnDefinitions} hasSelection={hasSelection} />\n )}\n <Thead\n ref={theadRef}\n hidden={stickyHeader}\n onFocusedComponentChange={focusId => stickyHeaderRef.current?.setFocus(focusId)}\n {...theadProps}\n />\n <tbody>\n {skeleton && allItems.length === 0 && loading ? (\n <SkeletonRows\n count={skeleton.totalRows}\n hasDataRows={false}\n totalColumnsCount={totalColumnsCount}\n loadingText={loadingText}\n hasSelection={hasSelection}\n hasFooter={hasFooter}\n stickyState={stickyState}\n tableRole={tableRole}\n ariaLabels={ariaLabels}\n cellVerticalAlign={cellVerticalAlign}\n computedVariant={computedVariant}\n visibleColumnDefinitions={visibleColumnDefinitions}\n wrapLines={wrapLines}\n resizableColumns={resizableColumns}\n colIndexOffset={colIndexOffset}\n />\n ) : !skeleton && (loading || allItems.length === 0) ? (\n <tr>\n <NoDataCell\n totalColumnsCount={totalColumnsCount}\n hasFooter={hasFooter}\n loading={loading}\n loadingText={loadingText}\n empty={empty}\n tableRef={tableRefObject}\n containerRef={wrapperMeasureRefObject}\n />\n </tr>\n ) : (\n allRows.map((row, rowIndex) => {\n const isFirstRow = rowIndex === 0;\n const hasSkeletonBelow =\n loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0;\n const isLastDataRow = rowIndex === allRows.length - 1;\n const isLastRow = isLastDataRow && !hasSkeletonBelow;\n const rowExpandableProps =\n row.type === 'data' ? expandableRows.getExpandableItemProps(row.item) : undefined;\n const rowRoleProps = getTableRowRoleProps({\n tableRole,\n firstIndex,\n rowIndex,\n headerRowCount,\n level: row.type === 'loader' ? row.level : undefined,\n ...rowExpandableProps,\n });\n const getTableItemKey = (item: T) => getItemKey(trackBy, item, rowIndex);\n const sharedCellProps = {\n isFirstRow,\n isLastRow,\n isSelected: hasSelection && isRowSelected(row),\n isPrevSelected: hasSelection && !isFirstRow && isRowSelected(allRows[rowIndex - 1]),\n isNextSelected: hasSelection && !isLastDataRow && isRowSelected(allRows[rowIndex + 1]),\n isEvenRow: rowIndex % 2 === 0,\n stripedRows,\n hasSelection,\n hasFooter,\n stickyState,\n tableRole,\n };\n if (row.type === 'data') {\n const rowId = `${getTableItemKey(row.item)}`;\n return (\n <tr\n key={rowId}\n className={clsx(styles.row, sharedCellProps.isSelected && styles['row-selected'])}\n onFocus={({ currentTarget }) => {\n // When an element inside table row receives focus we want to adjust the scroll.\n // However, that behavior is unwanted when the focus is received as result of a click\n // as it causes the click to never reach the target element.\n if (!currentTarget.contains(getMouseDownTarget())) {\n stickyHeaderRef.current?.scrollToRow(currentTarget);\n }\n }}\n {...focusMarkers.item}\n onClick={onRowClickHandler && onRowClickHandler.bind(null, rowIndex, row.item)}\n onContextMenu={\n onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, row.item)\n }\n {...rowRoleProps}\n >\n {selection.getItemSelectionProps && (\n <TableBodySelectionCell\n {...sharedCellProps}\n columnId={selectionColumnId}\n selectionControlProps={{\n ...selection.getItemSelectionProps(row.item),\n onFocusDown: moveFocusDown,\n onFocusUp: moveFocusUp,\n rowIndex,\n itemKey: rowId,\n }}\n verticalAlign={cellVerticalAlign}\n tableVariant={computedVariant}\n />\n )}\n\n {visibleColumnDefinitions.map((column, colIndex) => {\n const colId = `${getColumnKey(column, colIndex)}`;\n const cellId = { row: rowId, col: colId };\n const isEditing = cellEditing.checkEditing(cellId);\n const successfulEdit = cellEditing.checkLastSuccessfulEdit(cellId);\n const isEditable = !!column.editConfig && !cellEditing.isLoading;\n const cellExpandableProps =\n isExpandable && colIndex === 0 ? rowExpandableProps : undefined;\n const counter = column.counter?.({\n item: row.item,\n itemsCount: rowExpandableProps?.itemsCount,\n selectedItemsCount: rowExpandableProps?.selectedItemsCount,\n });\n\n const analyticsMetadata: GeneratedAnalyticsMetadataFragment = {\n component: {\n innerContext: {\n position: `${rowIndex + 1},${colIndex + 1}`,\n columnId: column.id ? `${column.id}` : '',\n columnLabel: {\n selector: `table thead tr th:nth-child(${colIndex + (selectionType ? 2 : 1)})`,\n root: 'component',\n },\n item: rowId,\n } as GeneratedAnalyticsMetadataTableComponent['innerContext'],\n },\n };\n\n return (\n <TableBodyCell\n key={colId}\n {...sharedCellProps}\n resizableStyle={{\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n }}\n ariaLabels={ariaLabels}\n column={column}\n item={row.item}\n wrapLines={wrapLines}\n isEditable={isEditable}\n isEditing={isEditing}\n isRowHeader={column.isRowHeader}\n successfulEdit={successfulEdit}\n resizableColumns={resizableColumns}\n onEditStart={() => cellEditing.startEdit(cellId)}\n onEditEnd={editCancelled => cellEditing.completeEdit(cellId, editCancelled)}\n submitEdit={cellEditing.submitEdit}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n verticalAlign={column.verticalAlign ?? cellVerticalAlign}\n tableVariant={computedVariant}\n counter={counter}\n {...cellExpandableProps}\n {...getAnalyticsMetadataAttribute(analyticsMetadata)}\n />\n );\n })}\n </tr>\n );\n }\n const loaderSelectionProps =\n selection.getLoaderSelectionProps && selection.getLoaderSelectionProps(row.item);\n const rowSelection = selectionType === 'group' ? loaderSelectionProps : undefined;\n const loaderContent = getLoaderContent({\n item: row.item,\n loadingStatus: row.status,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n renderLoaderEmpty,\n });\n const loaderCounter = renderLoaderCounter?.({\n item: row.item,\n loadingStatus: row.status,\n selected: !!rowSelection?.checked,\n });\n return (\n loaderContent && (\n <tr\n key={(row.item ? getTableItemKey(row.item) : 'root-' + rowIndex) + '-' + row.from}\n className={styles.row}\n {...rowRoleProps}\n >\n {selectionType ? (\n <TableBodySelectionCell\n {...sharedCellProps}\n columnId={selectionColumnId}\n verticalAlign={cellVerticalAlign}\n tableVariant={computedVariant}\n selectionControlProps={selectionType === 'group' ? loaderSelectionProps : undefined}\n isSelected={selectionType === 'group' && !!loaderSelectionProps?.checked}\n />\n ) : null}\n {visibleColumnDefinitions.map((column, colIndex) => (\n <TableLoaderCell\n key={getColumnKey(column, colIndex)}\n {...sharedCellProps}\n wrapLines={false}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n isSelected={selectionType === 'group' && !!loaderSelectionProps?.checked}\n isRowHeader={colIndex === 0}\n level={row.level}\n item={row.item}\n trackBy={trackBy}\n counter={loaderCounter}\n >\n {loaderContent}\n </TableLoaderCell>\n ))}\n </tr>\n )\n );\n })\n )}\n {loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0 && (\n <SkeletonRows\n count={skeleton.totalRows - allItems.length}\n hasDataRows={true}\n totalColumnsCount={totalColumnsCount}\n loadingText={loadingText}\n hasSelection={hasSelection}\n hasFooter={hasFooter}\n stickyState={stickyState}\n tableRole={tableRole}\n ariaLabels={ariaLabels}\n cellVerticalAlign={cellVerticalAlign}\n computedVariant={computedVariant}\n visibleColumnDefinitions={visibleColumnDefinitions}\n wrapLines={wrapLines}\n resizableColumns={resizableColumns}\n colIndexOffset={colIndexOffset}\n />\n )}\n </tbody>\n </table>\n </GridNavigationProvider>\n\n {resizableColumns && <ResizeTracker />}\n </div>\n\n <StickyScrollbar\n ref={scrollbarRef}\n wrapperRef={wrapperRefObject}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n hasStickyColumns={hasStickyColumns}\n />\n </InternalContainer>\n </ColumnWidthsProvider>\n </TableComponentsContextProvider>\n </LinkDefaultVariantContext.Provider>\n );\n }\n) as TableForwardRefType;\n\nexport default InternalTable;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useImperativeHandle, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport { useMergeRefs, warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport {\n GeneratedAnalyticsMetadataFragment,\n getAnalyticsMetadataAttribute,\n} from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalContainer, { InternalContainerProps } from '../container/internal';\nimport { useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport { getAnalyticsMetadataProps, getBaseProps } from '../internal/base-component';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport { CollectionLabelContext } from '../internal/context/collection-label-context';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport {\n FilterRef,\n HeaderRef,\n PaginationRef,\n PreferencesRef,\n TableComponentsContextProvider,\n} from '../internal/context/table-component-context';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport useMouseDownTarget from '../internal/hooks/use-mouse-down-target';\nimport { usePerformanceMarks } from '../internal/hooks/use-performance-marks';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { useScrollSync } from '../internal/hooks/use-scroll-sync';\nimport { useTableInteractionMetrics } from '../internal/hooks/use-table-interaction-metrics';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { isDevelopment } from '../internal/is-development';\nimport { SomeRequired } from '../internal/types';\nimport InternalLiveRegion from '../live-region/internal';\nimport { GeneratedAnalyticsMetadataTableComponent } from './analytics-metadata/interfaces';\nimport { TableBodyCell } from './body-cell';\nimport { TableColGroup } from './column-groups/col-group';\nimport { useColumnGroups } from './column-groups/use-column-groups';\nimport { checkColumnWidths } from './column-widths-utils';\nimport { useExpandableTableProps } from './expandable-rows/expandable-rows-utils';\nimport { TableForwardRefType, TableProps, TableRow } from './interfaces';\nimport { NoDataCell } from './no-data-cell';\nimport { getLoaderContent } from './progressive-loading/items-loader';\nimport { TableLoaderCell } from './progressive-loading/loader-cell';\nimport { useProgressiveLoadingProps } from './progressive-loading/progressive-loading-utils';\nimport { ResizeTracker } from './resizer';\nimport { focusMarkers, useSelection, useSelectionFocusMove } from './selection';\nimport { TableBodySelectionCell } from './selection/selection-cell';\nimport { useGroupSelection } from './selection/use-group-selection';\nimport { SkeletonRows } from './skeleton-rows';\nimport { useStickyColumns } from './sticky-columns';\nimport StickyHeader, { StickyHeaderRef } from './sticky-header';\nimport { StickyScrollbar } from './sticky-scrollbar';\nimport {\n getTableRoleProps,\n getTableRowRoleProps,\n getTableWrapperRoleProps,\n GridNavigationProvider,\n TableRole,\n} from './table-role';\nimport Thead, { TheadProps } from './thead';\nimport ToolsHeader from './tools-header';\nimport { useCellEditing } from './use-cell-editing';\nimport { ColumnWidthDefinition, ColumnWidthsProvider, DEFAULT_COLUMN_WIDTH } from './use-column-widths';\nimport { usePreventStickyClickScroll } from './use-prevent-sticky-click-scroll';\nimport { useRowEvents } from './use-row-events';\nimport useTableFocusNavigation from './use-table-focus-navigation';\nimport { checkSortingState, getColumnKey, getItemKey, getVisibleColumnDefinitions, toContainerVariant } from './utils';\n\nimport buttonStyles from '../button/styles.css.js';\nimport headerStyles from '../header/styles.css.js';\nimport styles from './styles.css.js';\n\nconst GRID_NAVIGATION_PAGE_SIZE = 10;\nconst SELECTION_COLUMN_WIDTH = 54;\nconst selectionColumnId = Symbol('selection-column-id');\n\ntype InternalTableProps<T> = SomeRequired<\n TableProps<T>,\n 'items' | 'selectedItems' | 'variant' | 'firstIndex' | 'cellVerticalAlign'\n> &\n InternalBaseComponentProps & {\n __funnelSubStepProps?: InternalContainerProps['__funnelSubStepProps'];\n };\n\nexport const InternalTableAsSubstep = React.forwardRef(\n <T,>(props: InternalTableProps<T>, ref: React.Ref<TableProps.Ref>) => {\n const { funnelSubStepProps } = useFunnelSubStep();\n\n const tableProps: InternalTableProps<T> = {\n ...props,\n __funnelSubStepProps: funnelSubStepProps,\n };\n\n return <InternalTable {...tableProps} ref={ref} />;\n }\n) as TableForwardRefType;\n\nconst InternalTable = React.forwardRef(\n <T,>(\n {\n header,\n footer,\n empty,\n filter,\n pagination,\n preferences,\n items,\n columnDefinitions,\n groupDefinitions,\n trackBy,\n loading,\n loadingText,\n skeleton,\n selectionType: externalSelectionType,\n selectedItems,\n isItemDisabled,\n ariaLabels,\n onSelectionChange,\n onSortingChange,\n sortingColumn,\n sortingDescending,\n sortingDisabled,\n visibleColumns,\n stickyHeader,\n stickyHeaderVerticalOffset,\n onRowClick,\n onRowContextMenu,\n wrapLines,\n stripedRows,\n contentDensity,\n submitEdit,\n onEditCancel,\n resizableColumns,\n onColumnWidthsChange,\n variant,\n __internalRootRef,\n totalItemsCount,\n firstIndex,\n renderAriaLive,\n stickyColumns,\n columnDisplay,\n enableKeyboardNavigation,\n expandableRows: externalExpandableRows,\n getLoadingStatus,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n renderLoaderEmpty,\n renderLoaderCounter,\n cellVerticalAlign,\n __funnelSubStepProps,\n ...rest\n }: InternalTableProps<T>,\n ref: React.Ref<TableProps.Ref>\n ) => {\n // Keyboard navigation defaults to `true` for tables with expandable rows.\n if (externalExpandableRows && enableKeyboardNavigation === undefined) {\n enableKeyboardNavigation = true;\n }\n\n const baseProps = getBaseProps(rest);\n\n const prevStickyHeader = usePrevious(stickyHeader);\n if (prevStickyHeader !== undefined && !!stickyHeader !== !!prevStickyHeader) {\n warnOnce(\n 'Table',\n `\\`stickyHeader\\` has changed from \"${prevStickyHeader}\" to \"${stickyHeader}\". It is not recommended to change the value of this property during the component lifecycle. Please set it to either \"true\" or \"false\" unconditionally.`\n );\n }\n\n const isMobile = useMobile();\n\n const expandableRows = useExpandableTableProps({\n items,\n expandableRows: externalExpandableRows,\n trackBy,\n ariaLabels,\n });\n const { allItems, isExpandable } = expandableRows;\n const { allRows } = useProgressiveLoadingProps({ getLoadingStatus, expandableRows });\n const selectionType = expandableRows.hasGroupSelection ? ('group' as const) : externalSelectionType;\n\n const [containerWidth, wrapperMeasureRef] = useContainerQuery<number>(rect => rect.borderBoxWidth);\n const wrapperMeasureRefObject = useRef(null);\n const wrapperMeasureMergedRef = useMergeRefs(wrapperMeasureRef, wrapperMeasureRefObject);\n\n const [tableWidth, tableMeasureRef] = useContainerQuery<number>(rect => rect.borderBoxWidth);\n const tableRefObject = useRef(null);\n\n const secondaryWrapperRef = React.useRef<HTMLDivElement>(null);\n const theadRef = useRef<HTMLTableRowElement>(null);\n const stickyHeaderRef = React.useRef<StickyHeaderRef>(null);\n const scrollbarRef = React.useRef<HTMLDivElement>(null);\n const { cancelEdit, ...cellEditing } = useCellEditing({ onCancel: onEditCancel, onSubmit: submitEdit });\n const paginationRef = useRef<PaginationRef>({});\n const filterRef = useRef<FilterRef>({});\n const preferencesRef = useRef<PreferencesRef>({});\n const headerRef = useRef<HeaderRef>({});\n /* istanbul ignore next: performance marks do not work in JSDOM */\n const getHeaderText = () =>\n toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(`.${headerStyles['heading-text']}`)\n ?.innerText ?? toolsHeaderPerformanceMarkRef.current?.innerText;\n const getPatternIdentifier = () => {\n const hasActions = !!toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(\n `.${headerStyles.actions} .${buttonStyles.button}`\n );\n\n if (hasActions) {\n return 'table-with-actions';\n }\n\n return '';\n };\n\n const performanceMarkAttributes = usePerformanceMarks(\n 'table',\n () => !loading,\n tableRefObject,\n () => ({\n loading: loading ?? false,\n header: getHeaderText(),\n }),\n [loading]\n );\n\n const analyticsMetadata = getAnalyticsMetadataProps(rest);\n const interactionMetadata = () => {\n const filterData = filterRef.current;\n const paginationData = paginationRef.current;\n return JSON.stringify({\n filterData,\n paginationData,\n sortingColumn: sortingColumn?.sortingField,\n sortingOrder: sortingColumn ? (sortingDescending ? 'Descending' : 'Ascending') : undefined,\n });\n };\n const getComponentConfiguration = () => {\n const headerData = headerRef.current;\n const filterData = filterRef.current;\n const paginationData = paginationRef.current;\n const preferencesData = preferencesRef.current;\n\n return {\n variant,\n flowType: rest.analyticsMetadata?.flowType,\n resourceType: rest.analyticsMetadata?.resourceType,\n instanceIdentifier: analyticsMetadata?.instanceIdentifier,\n taskName: analyticsMetadata?.instanceIdentifier ?? getHeaderText(),\n uxTaskName: getHeaderText(),\n patternIdentifier: getPatternIdentifier(),\n sortedBy: {\n columnId: sortingColumn?.sortingField,\n sortingOrder: sortingColumn ? (sortingDescending ? 'desc' : 'asc') : undefined,\n },\n filtered: filterData?.filtered ?? null,\n filteredBy: filterData?.filteredBy ?? [],\n filteredCount: filterData?.filterCount ?? null,\n totalNumberOfResources: headerData?.totalCount ?? null,\n tablePreferences: {\n visibleColumns: preferencesData?.visibleColumns ?? [],\n resourcesPerPage: preferencesData?.pageSize ?? null,\n },\n pagination: {\n currentPageIndex: paginationData?.currentPageIndex ?? 0,\n totalNumberOfPages: paginationData?.openEnd ? null : (paginationData?.totalPageCount ?? null),\n openEnd: Boolean(paginationData?.openEnd),\n },\n resourcesSelected: selectedItems?.length > 0,\n };\n };\n\n const { setLastUserAction, tableInteractionAttributes } = useTableInteractionMetrics({\n elementRef: tableRefObject,\n loading,\n items,\n instanceIdentifier: analyticsMetadata?.instanceIdentifier,\n itemCount: items.length,\n getComponentIdentifier: getHeaderText,\n getComponentConfiguration,\n interactionMetadata,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToTop: stickyHeaderRef.current?.scrollToTop || (() => undefined),\n cancelEdit,\n }),\n [cancelEdit]\n );\n\n const wrapperRefObject = useRef<HTMLDivElement>(null);\n const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);\n\n const { moveFocusDown, moveFocusUp, moveFocus } = useSelectionFocusMove(selectionType, allItems.length);\n const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });\n\n const visibleColumnDefinitions = useMemo(\n () => getVisibleColumnDefinitions({ columnDefinitions, columnDisplay, visibleColumns }),\n [columnDefinitions, columnDisplay, visibleColumns]\n );\n\n const visibleColumnIds = visibleColumnDefinitions.map((col, idx) => getColumnKey(col, idx).toString());\n\n const { groupColumnMap, ...columnGroupsLayout } = useColumnGroups(\n columnDefinitions,\n visibleColumnIds,\n groupDefinitions,\n columnDisplay\n );\n\n const selectionProps = {\n items: allItems,\n rootItems: items,\n trackBy,\n selectedItems,\n totalItemsCount,\n selectionType,\n isItemDisabled,\n onSelectionChange,\n ariaLabels: {\n ...ariaLabels,\n // `selectionGroupLabel` should not be part of the selection control, it is already part of the selection column header.\n selectionGroupLabel: undefined,\n },\n loading,\n expandableRows,\n getLoadingStatus,\n setLastUserAction,\n };\n const normalSelection = useSelection(selectionProps);\n const groupSelection = useGroupSelection(selectionProps);\n const selection = selectionType === 'group' ? groupSelection : normalSelection;\n const isRowSelected = (row: TableRow<T>) => {\n if (row.type === 'data') {\n return selection.isItemSelected(row.item);\n }\n if (selectionType !== 'group') {\n return false;\n }\n // Group loader is selected when its parent is selected.\n return !row.item ? expandableRows.groupSelection.inverted : selection.isItemSelected(row.item);\n };\n\n if (isDevelopment) {\n if (resizableColumns) {\n checkColumnWidths(columnDefinitions);\n }\n if (sortingColumn?.sortingComparator) {\n checkSortingState(columnDefinitions, sortingColumn.sortingComparator);\n }\n }\n\n const isVisualRefresh = useVisualRefresh();\n const computedVariant = isVisualRefresh\n ? variant\n : ['embedded', 'full-page'].indexOf(variant) > -1\n ? 'container'\n : variant;\n const hasHeader = !!(header || filter || pagination || preferences);\n const hasSelection = !!selectionType;\n const hasFooterPagination = isMobile && variant === 'full-page' && !!pagination;\n const hasFooter = !!footer || hasFooterPagination;\n\n const headerIdRef = useRef<string | undefined>(undefined);\n const isLabelledByHeader = !ariaLabels?.tableLabel && !!header;\n const ariaLabelledby = isLabelledByHeader && headerIdRef.current ? headerIdRef.current : undefined;\n const setHeaderRef = useCallback((id: string) => {\n headerIdRef.current = id;\n }, []);\n\n const { visibleColumnWidthsWithSelection, visibleColumnIdsWithSelection } = useMemo(() => {\n const widths: ColumnWidthDefinition[] = [];\n const ids: PropertyKey[] = [];\n if (hasSelection) {\n widths.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });\n ids.push(selectionColumnId);\n }\n for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {\n const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);\n widths.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });\n ids.push(columnId);\n }\n return { visibleColumnWidthsWithSelection: widths, visibleColumnIdsWithSelection: ids };\n }, [hasSelection, visibleColumnDefinitions]);\n\n const stickyState = useStickyColumns({\n visibleColumns: visibleColumnIdsWithSelection,\n stickyColumnsFirst: (stickyColumns?.first ?? 0) + (stickyColumns?.first && hasSelection ? 1 : 0),\n stickyColumnsLast: stickyColumns?.last || 0,\n });\n\n const hasStickyColumns = !!((stickyColumns?.first ?? 0) + (stickyColumns?.last ?? 0) > 0);\n const hasEditableCells = !!columnDefinitions.find(col => col.editConfig);\n\n let tableRole: TableRole = 'table';\n if (isExpandable) {\n tableRole = 'treegrid';\n } else if (enableKeyboardNavigation) {\n tableRole = 'grid';\n } else if (hasEditableCells) {\n tableRole = 'grid-default';\n }\n\n const theadProps: TheadProps = {\n selectionType,\n getSelectAllProps: selection.getSelectAllProps,\n columnDefinitions: visibleColumnDefinitions,\n groupDefinitions,\n columnGroupsLayout,\n variant: computedVariant,\n tableVariant: computedVariant,\n wrapLines,\n resizableColumns,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n onSortingChange,\n onFocusMove: moveFocus,\n onResizeFinish(newWidth) {\n const widthsDetail = columnDefinitions.map(\n (column, index) =>\n newWidth.get(getColumnKey(column, index)) || (column.width as number) || DEFAULT_COLUMN_WIDTH\n );\n const widthsChanged = widthsDetail.some((width, index) => columnDefinitions[index].width !== width);\n if (widthsChanged) {\n fireNonCancelableEvent(onColumnWidthsChange, { widths: widthsDetail });\n }\n },\n singleSelectionHeaderAriaLabel: ariaLabels?.selectionGroupLabel,\n resizerRoleDescription: ariaLabels?.resizerRoleDescription,\n resizerTooltipText: ariaLabels?.resizerTooltipText,\n stripedRows,\n stickyState,\n stickyColumnsFirst: stickyColumns?.first ?? 0,\n stickyColumnsLast: stickyColumns?.last ?? 0,\n selectionColumnId,\n tableRole,\n isExpandable,\n setLastUserAction,\n };\n\n usePreventStickyClickScroll(wrapperRefObject);\n\n const wrapperRef = useMergeRefs(wrapperRefObject, stickyState.refs.wrapper);\n const tableRef = useMergeRefs(tableMeasureRef, tableRefObject, stickyState.refs.table);\n\n const wrapperProps = getTableWrapperRoleProps({\n tableRole,\n isScrollable: !!(tableWidth && containerWidth && tableWidth > containerWidth),\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledby,\n });\n\n const getMouseDownTarget = useMouseDownTarget();\n\n useTableFocusNavigation({\n enableKeyboardNavigation,\n selectionType,\n tableRoot: tableRefObject,\n columnDefinitions: visibleColumnDefinitions,\n numRows: allRows?.length,\n });\n const toolsHeaderPerformanceMarkRef = useRef<HTMLDivElement>(null);\n // If is mobile, we take into consideration the AppLayout's mobile bar and we subtract the tools wrapper height so only the table header is sticky\n const [toolsHeaderHeight, toolsHeaderWrapperMeasureRef] = useContainerQuery(rect => rect.borderBoxHeight);\n const toolsHeaderWrapper = useMergeRefs(toolsHeaderPerformanceMarkRef, toolsHeaderWrapperMeasureRef);\n\n const colIndexOffset = selectionType ? 1 : 0;\n const totalColumnsCount = visibleColumnDefinitions.length + colIndexOffset;\n const headerRowCount = columnGroupsLayout?.rows.length || 1;\n\n return (\n <LinkDefaultVariantContext.Provider value={{ defaultVariant: 'primary' }}>\n <TableComponentsContextProvider value={{ paginationRef, filterRef, preferencesRef, headerRef }}>\n <ColumnWidthsProvider\n visibleColumns={visibleColumnWidthsWithSelection}\n resizableColumns={resizableColumns}\n containerRef={wrapperMeasureRefObject}\n groupColumnMap={groupColumnMap}\n >\n <InternalContainer\n {...baseProps}\n {...tableInteractionAttributes}\n __internalRootRef={__internalRootRef}\n className={clsx(baseProps.className, styles.root)}\n __funnelSubStepProps={__funnelSubStepProps}\n __fullPage={variant === 'full-page'}\n header={\n <>\n {hasHeader && (\n <div>\n <div\n ref={toolsHeaderWrapper}\n className={clsx(styles['header-controls'], styles[`variant-${computedVariant}`])}\n >\n <CollectionLabelContext.Provider value={{ assignId: setHeaderRef }}>\n <ToolsHeader\n header={header}\n filter={filter}\n pagination={pagination}\n preferences={preferences}\n setLastUserAction={setLastUserAction}\n />\n </CollectionLabelContext.Provider>\n </div>\n </div>\n )}\n {stickyHeader && (\n <StickyHeader\n ref={stickyHeaderRef}\n variant={computedVariant}\n theadProps={theadProps}\n wrapperRef={wrapperRefObject}\n theadRef={theadRef}\n secondaryWrapperRef={secondaryWrapperRef}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n tableHasHeader={hasHeader}\n contentDensity={contentDensity}\n tableRole={tableRole}\n hasGroupedColumns={!!columnGroupsLayout && columnGroupsLayout.rows.length > 1}\n columnDefinitions={visibleColumnDefinitions}\n hasSelection={hasSelection}\n />\n )}\n </>\n }\n disableHeaderPaddings={true}\n disableContentPaddings={true}\n disableFooterPaddings={true}\n variant={toContainerVariant(computedVariant)}\n __disableFooterDivider={true}\n __disableStickyMobile={false}\n footer={\n hasFooter ? (\n <div className={clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`])}>\n <div className={clsx(styles.footer, hasFooterPagination && styles['footer-with-pagination'])}>\n {footer && <span>{footer}</span>}\n {hasFooterPagination && <div className={styles['footer-pagination']}>{pagination}</div>}\n </div>\n </div>\n ) : null\n }\n __stickyHeader={stickyHeader}\n __mobileStickyOffset={toolsHeaderHeight ?? 0}\n __stickyOffset={stickyHeaderVerticalOffset}\n {...focusMarkers.root}\n >\n <div\n ref={wrapperRef}\n className={clsx(styles.wrapper, styles[`variant-${computedVariant}`], {\n [styles['has-footer']]: hasFooter,\n [styles['has-header']]: hasHeader,\n })}\n style={stickyState.style.wrapper}\n onScroll={handleScroll}\n {...wrapperProps}\n >\n <div className={styles['wrapper-content-measure']} ref={wrapperMeasureMergedRef}></div>\n {!!renderAriaLive && !!firstIndex && !loading && (\n <InternalLiveRegion hidden={true} tagName=\"span\">\n <span>\n {renderAriaLive({\n firstIndex,\n lastIndex: firstIndex + items.length - 1,\n visibleItemsCount: allItems.length,\n totalItemsCount,\n })}\n </span>\n </InternalLiveRegion>\n )}\n <GridNavigationProvider\n keyboardNavigation={!!enableKeyboardNavigation}\n pageSize={GRID_NAVIGATION_PAGE_SIZE}\n getTable={() => tableRefObject.current}\n >\n <table\n {...performanceMarkAttributes}\n ref={tableRef}\n className={clsx(\n styles.table,\n resizableColumns && styles['table-layout-fixed'],\n columnGroupsLayout && columnGroupsLayout.rows.length > 1 && styles['has-grouped-header'],\n contentDensity === 'compact' && getVisualContextClassname('compact-table')\n )}\n {...getTableRoleProps({\n tableRole,\n totalItemsCount,\n totalColumnsCount: totalColumnsCount,\n headerRowCount,\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledby,\n })}\n >\n {resizableColumns && columnGroupsLayout && columnGroupsLayout.rows.length > 1 && (\n <TableColGroup visibleColumnDefinitions={visibleColumnDefinitions} hasSelection={hasSelection} />\n )}\n <Thead\n ref={theadRef}\n hidden={stickyHeader}\n onFocusedComponentChange={focusId => stickyHeaderRef.current?.setFocus(focusId)}\n {...theadProps}\n />\n <tbody>\n {skeleton && allItems.length === 0 && loading ? (\n <SkeletonRows\n count={skeleton.totalRows}\n hasDataRows={false}\n totalColumnsCount={totalColumnsCount}\n loadingText={loadingText}\n hasSelection={hasSelection}\n hasFooter={hasFooter}\n stickyState={stickyState}\n tableRole={tableRole}\n ariaLabels={ariaLabels}\n cellVerticalAlign={cellVerticalAlign}\n computedVariant={computedVariant}\n visibleColumnDefinitions={visibleColumnDefinitions}\n wrapLines={wrapLines}\n resizableColumns={resizableColumns}\n colIndexOffset={colIndexOffset}\n />\n ) : !skeleton && (loading || allItems.length === 0) ? (\n <tr>\n <NoDataCell\n totalColumnsCount={totalColumnsCount}\n hasFooter={hasFooter}\n loading={loading}\n loadingText={loadingText}\n empty={empty}\n tableRef={tableRefObject}\n containerRef={wrapperMeasureRefObject}\n />\n </tr>\n ) : (\n allRows.map((row, rowIndex) => {\n const isFirstRow = rowIndex === 0;\n const hasSkeletonBelow =\n loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0;\n const isLastDataRow = rowIndex === allRows.length - 1;\n const isLastRow = isLastDataRow && !hasSkeletonBelow;\n const rowExpandableProps =\n row.type === 'data' ? expandableRows.getExpandableItemProps(row.item) : undefined;\n const rowRoleProps = getTableRowRoleProps({\n tableRole,\n firstIndex,\n rowIndex,\n headerRowCount,\n level: row.type === 'loader' ? row.level : undefined,\n ...rowExpandableProps,\n });\n const getTableItemKey = (item: T) => getItemKey(trackBy, item, rowIndex);\n const sharedCellProps = {\n isFirstRow,\n isLastRow,\n isSelected: hasSelection && isRowSelected(row),\n isPrevSelected: hasSelection && !isFirstRow && isRowSelected(allRows[rowIndex - 1]),\n isNextSelected: hasSelection && !isLastDataRow && isRowSelected(allRows[rowIndex + 1]),\n isEvenRow: rowIndex % 2 === 0,\n stripedRows,\n hasSelection,\n hasFooter,\n stickyState,\n tableRole,\n };\n if (row.type === 'data') {\n const rowId = `${getTableItemKey(row.item)}`;\n return (\n <tr\n key={rowId}\n className={clsx(styles.row, sharedCellProps.isSelected && styles['row-selected'])}\n onFocus={({ currentTarget }) => {\n // When an element inside table row receives focus we want to adjust the scroll.\n // However, that behavior is unwanted when the focus is received as result of a click\n // as it causes the click to never reach the target element.\n if (!currentTarget.contains(getMouseDownTarget())) {\n stickyHeaderRef.current?.scrollToRow(currentTarget);\n }\n }}\n {...focusMarkers.item}\n onClick={onRowClickHandler && onRowClickHandler.bind(null, rowIndex, row.item)}\n onContextMenu={\n onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, row.item)\n }\n {...rowRoleProps}\n >\n {selection.getItemSelectionProps && (\n <TableBodySelectionCell\n {...sharedCellProps}\n columnId={selectionColumnId}\n selectionControlProps={{\n ...selection.getItemSelectionProps(row.item),\n onFocusDown: moveFocusDown,\n onFocusUp: moveFocusUp,\n rowIndex,\n itemKey: rowId,\n }}\n verticalAlign={cellVerticalAlign}\n tableVariant={computedVariant}\n />\n )}\n\n {visibleColumnDefinitions.map((column, colIndex) => {\n const colId = `${getColumnKey(column, colIndex)}`;\n const cellId = { row: rowId, col: colId };\n const isEditing = cellEditing.checkEditing(cellId);\n const successfulEdit = cellEditing.checkLastSuccessfulEdit(cellId);\n const isEditable = !!column.editConfig && !cellEditing.isLoading;\n const cellExpandableProps =\n isExpandable && colIndex === 0 ? rowExpandableProps : undefined;\n const counter = column.counter?.({\n item: row.item,\n itemsCount: rowExpandableProps?.itemsCount,\n selectedItemsCount: rowExpandableProps?.selectedItemsCount,\n });\n\n const analyticsMetadata: GeneratedAnalyticsMetadataFragment = {\n component: {\n innerContext: {\n position: `${rowIndex + 1},${colIndex + 1}`,\n columnId: column.id ? `${column.id}` : '',\n columnLabel: {\n selector: `table thead tr th:nth-child(${colIndex + (selectionType ? 2 : 1)})`,\n root: 'component',\n },\n item: rowId,\n } as GeneratedAnalyticsMetadataTableComponent['innerContext'],\n },\n };\n\n return (\n <TableBodyCell\n key={colId}\n {...sharedCellProps}\n resizableStyle={{\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n }}\n ariaLabels={ariaLabels}\n column={column}\n item={row.item}\n wrapLines={wrapLines}\n isEditable={isEditable}\n isEditing={isEditing}\n isRowHeader={column.isRowHeader}\n successfulEdit={successfulEdit}\n resizableColumns={resizableColumns}\n onEditStart={() => cellEditing.startEdit(cellId)}\n onEditEnd={editCancelled => cellEditing.completeEdit(cellId, editCancelled)}\n submitEdit={cellEditing.submitEdit}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n verticalAlign={column.verticalAlign ?? cellVerticalAlign}\n tableVariant={computedVariant}\n counter={counter}\n {...cellExpandableProps}\n {...getAnalyticsMetadataAttribute(analyticsMetadata)}\n />\n );\n })}\n </tr>\n );\n }\n const loaderSelectionProps =\n selection.getLoaderSelectionProps && selection.getLoaderSelectionProps(row.item);\n const rowSelection = selectionType === 'group' ? loaderSelectionProps : undefined;\n const loaderContent = getLoaderContent({\n item: row.item,\n loadingStatus: row.status,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n renderLoaderEmpty,\n });\n const loaderCounter = renderLoaderCounter?.({\n item: row.item,\n loadingStatus: row.status,\n selected: !!rowSelection?.checked,\n });\n return (\n loaderContent && (\n <tr\n key={(row.item ? getTableItemKey(row.item) : 'root-' + rowIndex) + '-' + row.from}\n className={styles.row}\n {...rowRoleProps}\n >\n {selectionType ? (\n <TableBodySelectionCell\n {...sharedCellProps}\n columnId={selectionColumnId}\n verticalAlign={cellVerticalAlign}\n tableVariant={computedVariant}\n selectionControlProps={selectionType === 'group' ? loaderSelectionProps : undefined}\n isSelected={selectionType === 'group' && !!loaderSelectionProps?.checked}\n />\n ) : null}\n {visibleColumnDefinitions.map((column, colIndex) => (\n <TableLoaderCell\n key={getColumnKey(column, colIndex)}\n {...sharedCellProps}\n wrapLines={false}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n isSelected={selectionType === 'group' && !!loaderSelectionProps?.checked}\n isRowHeader={colIndex === 0}\n level={row.level}\n item={row.item}\n trackBy={trackBy}\n counter={loaderCounter}\n >\n {loaderContent}\n </TableLoaderCell>\n ))}\n </tr>\n )\n );\n })\n )}\n {loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0 && (\n <SkeletonRows\n count={skeleton.totalRows - allItems.length}\n hasDataRows={true}\n totalColumnsCount={totalColumnsCount}\n loadingText={loadingText}\n hasSelection={hasSelection}\n hasFooter={hasFooter}\n stickyState={stickyState}\n tableRole={tableRole}\n ariaLabels={ariaLabels}\n cellVerticalAlign={cellVerticalAlign}\n computedVariant={computedVariant}\n visibleColumnDefinitions={visibleColumnDefinitions}\n wrapLines={wrapLines}\n resizableColumns={resizableColumns}\n colIndexOffset={colIndexOffset}\n />\n )}\n </tbody>\n </table>\n </GridNavigationProvider>\n\n {resizableColumns && <ResizeTracker />}\n </div>\n\n <StickyScrollbar\n ref={scrollbarRef}\n wrapperRef={wrapperRefObject}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n hasStickyColumns={hasStickyColumns}\n />\n </InternalContainer>\n </ColumnWidthsProvider>\n </TableComponentsContextProvider>\n </LinkDefaultVariantContext.Provider>\n );\n }\n) as TableForwardRefType;\n\nexport default InternalTable;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-column-widths.d.ts","sourceRoot":"","sources":["../../../src/table/use-column-widths.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiE,MAAM,OAAO,CAAC;AAKtF,OAAO,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAE3E,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,EAAE,EAAE,WAAW,CAAC;CACjB;AA8CD,UAAU,aAAa;IACrB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAAC;IAC1E,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;IACpF,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;CACnE;AAED,QAAA,MAAM,aAAa,8BAOjB,CAAC;AAEH,UAAU,kBAAkB;IAC1B,cAAc,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE,kBAAkB,eAgLpB;AAED,wBAAgB,eAAe,kBAE9B"}
1
+ {"version":3,"file":"use-column-widths.d.ts","sourceRoot":"","sources":["../../../src/table/use-column-widths.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiE,MAAM,OAAO,CAAC;AAKtF,OAAO,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAE3E,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,EAAE,EAAE,WAAW,CAAC;CACjB;AA8CD,UAAU,aAAa;IACrB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAAC;IAC1E,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;IACpF,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;CACnE;AAED,QAAA,MAAM,aAAa,8BAOjB,CAAC;AAEH,UAAU,kBAAkB;IAC1B,cAAc,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE,kBAAkB,eAsMpB;AAED,wBAAgB,eAAe,kBAE9B"}
@@ -104,6 +104,15 @@ export function ColumnWidthsProvider({ visibleColumns, resizableColumns, contain
104
104
  maxWidth: !resizableColumns ? column.maxWidth : undefined,
105
105
  };
106
106
  };
107
+ // Mirrors the current primary cell widths onto the sticky header copies.
108
+ const syncStickyColumnWidths = useStableCallback(() => {
109
+ for (const { id } of visibleColumns) {
110
+ const element = stickyCellsRef.current.get(id);
111
+ if (element) {
112
+ setElementWidths(element, getColumnStyles(true, id));
113
+ }
114
+ }
115
+ });
107
116
  // Imperatively sets width style for a cell avoiding React state.
108
117
  // This allows setting the style as soon container's size change is observed.
109
118
  const updateColumnWidths = useStableCallback(() => {
@@ -130,13 +139,24 @@ export function ColumnWidthsProvider({ visibleColumns, resizableColumns, contain
130
139
  }
131
140
  }
132
141
  // Sticky column widths must always be synchronized regardless of columnWidths state.
133
- for (const { id } of visibleColumns) {
134
- const element = stickyCellsRef.current.get(id);
135
- if (element) {
136
- setElementWidths(element, getColumnStyles(true, id));
137
- }
138
- }
142
+ syncStickyColumnWidths();
139
143
  });
144
+ // Re-syncs the sticky header copies when the primary cells change width without a
145
+ // corresponding change to the column definitions. This happens with auto-layout
146
+ // columns whose widths depend on the rendered content (e.g. paginating or filtering).
147
+ // Fixed-width and resizable columns don't resize on data changes, so this stays idle.
148
+ // The effect re-observes when the set of visible columns changes, since that swaps
149
+ // the underlying cell elements.
150
+ useEffect(() => {
151
+ if (typeof ResizeObserver === 'undefined') {
152
+ return;
153
+ }
154
+ const observer = new ResizeObserver(() => syncStickyColumnWidths());
155
+ for (const element of cellsRef.current.values()) {
156
+ observer.observe(element);
157
+ }
158
+ return () => observer.disconnect();
159
+ }, [syncStickyColumnWidths, visibleColumns]);
140
160
  // Observes container size and requests an update to the last cell width as it depends on the container's width.
141
161
  useResizeObserver(containerRef, ({ contentBoxWidth: containerWidth }) => {
142
162
  containerWidthRef.current = containerWidth;
@@ -1 +1 @@
1
- {"version":3,"file":"use-column-widths.js","sourceRoot":"","sources":["../../../src/table/use-column-widths.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, { createContext, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useResizeObserver, useStableCallback } from '@cloudscape-design/component-toolkit/internal';\nimport { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ColumnWidthStyle, setElementWidths } from './column-widths-utils';\n\nexport const DEFAULT_COLUMN_WIDTH = 120;\n\nexport interface ColumnWidthDefinition extends ColumnWidthStyle {\n id: PropertyKey;\n}\n\nfunction readWidths(\n getCell: (columnId: PropertyKey) => null | HTMLElement,\n visibleColumns: readonly ColumnWidthDefinition[]\n) {\n const result = new Map<PropertyKey, number>();\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n let width = (column.width as number) || 0;\n const minWidth = (column.minWidth as number) || width || DEFAULT_COLUMN_WIDTH;\n if (\n !width && // read width from the DOM if it is missing in the config\n index !== visibleColumns.length - 1 // skip reading for the last column, because it expands to fully fit the container\n ) {\n const colEl = getCell(column.id);\n width = colEl ? getLogicalBoundingClientRect(colEl).inlineSize : DEFAULT_COLUMN_WIDTH;\n }\n result.set(column.id, Math.max(width, minWidth));\n }\n return result;\n}\n\nfunction updateWidths(\n visibleColumns: readonly ColumnWidthDefinition[],\n oldWidths: Map<PropertyKey, number>,\n newWidth: number,\n columnId: PropertyKey\n): Map<PropertyKey, number> {\n const column = visibleColumns.find(column => column.id === columnId);\n let minWidth = DEFAULT_COLUMN_WIDTH;\n if (typeof column?.width === 'number' && column.width < DEFAULT_COLUMN_WIDTH) {\n minWidth = column?.width;\n }\n if (typeof column?.minWidth === 'number') {\n minWidth = column?.minWidth;\n }\n newWidth = Math.max(newWidth, minWidth);\n if (oldWidths.get(columnId) === newWidth) {\n return oldWidths;\n }\n const newWidths = new Map(oldWidths);\n newWidths.set(columnId, newWidth);\n return newWidths;\n}\n\ninterface WidthsContext {\n getColumnStyles(sticky: boolean, columnId: PropertyKey): ColumnWidthStyle;\n columnWidths: Map<PropertyKey, number>;\n updateColumn: (columnId: PropertyKey, newWidth: number) => void;\n updateGroup: (groupId: PropertyKey, newWidth: number) => void;\n setCell: (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => void;\n setCol: (columnId: PropertyKey, node: null | HTMLElement) => void;\n}\n\nconst WidthsContext = createContext<WidthsContext>({\n getColumnStyles: () => ({}),\n columnWidths: new Map(),\n updateColumn: () => {},\n updateGroup: () => {},\n setCell: () => {},\n setCol: () => {},\n});\n\ninterface WidthProviderProps {\n visibleColumns: readonly ColumnWidthDefinition[];\n resizableColumns: boolean | undefined;\n containerRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n groupColumnMap?: Map<string, string[]>;\n}\n\nexport function ColumnWidthsProvider({\n visibleColumns,\n resizableColumns,\n containerRef,\n groupColumnMap,\n children,\n}: WidthProviderProps) {\n const visibleColumnsRef = useRef<PropertyKey[] | null>(null);\n const containerWidthRef = useRef(0);\n const [columnWidths, setColumnWidths] = useState<null | Map<PropertyKey, number>>(null);\n\n const cellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const stickyCellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const colsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const hasColElements = useRef(false);\n const getCell = (columnId: PropertyKey): null | HTMLElement => cellsRef.current.get(columnId) ?? null;\n const setCell = (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => {\n const ref = sticky ? stickyCellsRef : cellsRef;\n if (node) {\n ref.current.set(columnId, node);\n } else {\n ref.current.delete(columnId);\n }\n };\n const setCol = (columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n colsRef.current.set(columnId, node);\n hasColElements.current = true;\n } else {\n colsRef.current.delete(columnId);\n hasColElements.current = colsRef.current.size > 0;\n }\n };\n\n const getColumnStyles = (sticky: boolean, columnId: PropertyKey): ColumnWidthStyle => {\n const column = visibleColumns.find(col => col.id === columnId);\n\n if (sticky) {\n // For sticky headers, mirror the primary cell's width.\n // Try DOM measurement first (handles columns not in visibleColumns like selection).\n const measured = cellsRef.current.get(columnId)?.getBoundingClientRect().width;\n /* istanbul ignore next: getBoundingClientRect returns 0 in JSDOM */\n if (measured) {\n return { width: measured };\n }\n return { width: columnWidths?.get(columnId) ?? column?.width };\n }\n\n if (!column) {\n return {};\n }\n\n if (resizableColumns && columnWidths) {\n const isLastColumn = column.id === visibleColumns[visibleColumns.length - 1]?.id;\n const totalWidth = visibleColumns.reduce(\n (sum, { id }) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH),\n 0\n );\n if (isLastColumn && containerWidthRef.current > totalWidth) {\n return { width: 'auto', minWidth: column.minWidth };\n }\n return { width: columnWidths.get(column.id), minWidth: column.minWidth };\n }\n\n return {\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: !resizableColumns ? column.maxWidth : undefined,\n };\n };\n\n // Imperatively sets width style for a cell avoiding React state.\n // This allows setting the style as soon container's size change is observed.\n const updateColumnWidths = useStableCallback(() => {\n // When col elements exist (grouped columns), apply widths to <col> elements.\n // With table-layout:fixed, <col> widths control the actual column widths.\n if (hasColElements.current) {\n for (const { id } of visibleColumns) {\n const colElement = colsRef.current.get(id);\n if (colElement) {\n setElementWidths(colElement, getColumnStyles(false, id));\n }\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n } else {\n for (const { id } of visibleColumns) {\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n }\n\n // Sticky column widths must always be synchronized regardless of columnWidths state.\n for (const { id } of visibleColumns) {\n const element = stickyCellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(true, id));\n }\n }\n });\n\n // Observes container size and requests an update to the last cell width as it depends on the container's width.\n useResizeObserver(containerRef, ({ contentBoxWidth: containerWidth }) => {\n containerWidthRef.current = containerWidth;\n requestAnimationFrame(() => updateColumnWidths());\n });\n\n // The widths of the dynamically added columns (after the first render) if not set explicitly\n // will default to the DEFAULT_COLUMN_WIDTH.\n useEffect(() => {\n updateColumnWidths();\n\n if (!resizableColumns) {\n return;\n }\n let updated = false;\n const newColumnWidths = new Map(columnWidths);\n const lastVisible = visibleColumnsRef.current;\n if (lastVisible) {\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n if (!columnWidths?.get(column.id) && lastVisible.indexOf(column.id) === -1) {\n updated = true;\n const width = (column.width as number) || DEFAULT_COLUMN_WIDTH;\n const minWidth = (column.minWidth as number) || width;\n newColumnWidths.set(column.id, Math.max(width, minWidth));\n }\n }\n if (updated) {\n setColumnWidths(newColumnWidths);\n }\n }\n visibleColumnsRef.current = visibleColumns.map(column => column.id);\n }, [columnWidths, resizableColumns, visibleColumns, updateColumnWidths]);\n\n // Read the actual column widths after the first render to employ the browser defaults for\n // those columns without explicit width.\n useEffect(() => {\n if (!resizableColumns) {\n return;\n }\n setColumnWidths(() => readWidths(getCell, visibleColumns));\n // This code is intended to run only at the first render and should not re-run when table props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function updateColumn(columnId: PropertyKey, newWidth: number) {\n setColumnWidths(columnWidths => updateWidths(visibleColumns, columnWidths ?? new Map(), newWidth, columnId));\n }\n\n function updateGroup(groupId: PropertyKey, newGroupWidth: number) {\n if (!columnWidths || !groupColumnMap) {\n return;\n }\n\n const columnIds = groupColumnMap.get(String(groupId)) ?? [];\n const rightmostColumn = columnIds[columnIds.length - 1];\n if (!rightmostColumn) {\n return;\n }\n\n let currentGroupWidth = 0;\n for (const id of columnIds) {\n currentGroupWidth += columnWidths.get(id) || DEFAULT_COLUMN_WIDTH;\n }\n\n const delta = newGroupWidth - currentGroupWidth;\n const currentColumnWidth = columnWidths.get(rightmostColumn) || DEFAULT_COLUMN_WIDTH;\n updateColumn(rightmostColumn, currentColumnWidth + delta);\n }\n\n return (\n <WidthsContext.Provider\n value={{ getColumnStyles, columnWidths: columnWidths ?? new Map(), updateColumn, updateGroup, setCell, setCol }}\n >\n {children}\n </WidthsContext.Provider>\n );\n}\n\nexport function useColumnWidths() {\n return useContext(WidthsContext);\n}\n"]}
1
+ {"version":3,"file":"use-column-widths.js","sourceRoot":"","sources":["../../../src/table/use-column-widths.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, { createContext, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useResizeObserver, useStableCallback } from '@cloudscape-design/component-toolkit/internal';\nimport { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ColumnWidthStyle, setElementWidths } from './column-widths-utils';\n\nexport const DEFAULT_COLUMN_WIDTH = 120;\n\nexport interface ColumnWidthDefinition extends ColumnWidthStyle {\n id: PropertyKey;\n}\n\nfunction readWidths(\n getCell: (columnId: PropertyKey) => null | HTMLElement,\n visibleColumns: readonly ColumnWidthDefinition[]\n) {\n const result = new Map<PropertyKey, number>();\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n let width = (column.width as number) || 0;\n const minWidth = (column.minWidth as number) || width || DEFAULT_COLUMN_WIDTH;\n if (\n !width && // read width from the DOM if it is missing in the config\n index !== visibleColumns.length - 1 // skip reading for the last column, because it expands to fully fit the container\n ) {\n const colEl = getCell(column.id);\n width = colEl ? getLogicalBoundingClientRect(colEl).inlineSize : DEFAULT_COLUMN_WIDTH;\n }\n result.set(column.id, Math.max(width, minWidth));\n }\n return result;\n}\n\nfunction updateWidths(\n visibleColumns: readonly ColumnWidthDefinition[],\n oldWidths: Map<PropertyKey, number>,\n newWidth: number,\n columnId: PropertyKey\n): Map<PropertyKey, number> {\n const column = visibleColumns.find(column => column.id === columnId);\n let minWidth = DEFAULT_COLUMN_WIDTH;\n if (typeof column?.width === 'number' && column.width < DEFAULT_COLUMN_WIDTH) {\n minWidth = column?.width;\n }\n if (typeof column?.minWidth === 'number') {\n minWidth = column?.minWidth;\n }\n newWidth = Math.max(newWidth, minWidth);\n if (oldWidths.get(columnId) === newWidth) {\n return oldWidths;\n }\n const newWidths = new Map(oldWidths);\n newWidths.set(columnId, newWidth);\n return newWidths;\n}\n\ninterface WidthsContext {\n getColumnStyles(sticky: boolean, columnId: PropertyKey): ColumnWidthStyle;\n columnWidths: Map<PropertyKey, number>;\n updateColumn: (columnId: PropertyKey, newWidth: number) => void;\n updateGroup: (groupId: PropertyKey, newWidth: number) => void;\n setCell: (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => void;\n setCol: (columnId: PropertyKey, node: null | HTMLElement) => void;\n}\n\nconst WidthsContext = createContext<WidthsContext>({\n getColumnStyles: () => ({}),\n columnWidths: new Map(),\n updateColumn: () => {},\n updateGroup: () => {},\n setCell: () => {},\n setCol: () => {},\n});\n\ninterface WidthProviderProps {\n visibleColumns: readonly ColumnWidthDefinition[];\n resizableColumns: boolean | undefined;\n containerRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n groupColumnMap?: Map<string, string[]>;\n}\n\nexport function ColumnWidthsProvider({\n visibleColumns,\n resizableColumns,\n containerRef,\n groupColumnMap,\n children,\n}: WidthProviderProps) {\n const visibleColumnsRef = useRef<PropertyKey[] | null>(null);\n const containerWidthRef = useRef(0);\n const [columnWidths, setColumnWidths] = useState<null | Map<PropertyKey, number>>(null);\n\n const cellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const stickyCellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const colsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const hasColElements = useRef(false);\n const getCell = (columnId: PropertyKey): null | HTMLElement => cellsRef.current.get(columnId) ?? null;\n const setCell = (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => {\n const ref = sticky ? stickyCellsRef : cellsRef;\n if (node) {\n ref.current.set(columnId, node);\n } else {\n ref.current.delete(columnId);\n }\n };\n const setCol = (columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n colsRef.current.set(columnId, node);\n hasColElements.current = true;\n } else {\n colsRef.current.delete(columnId);\n hasColElements.current = colsRef.current.size > 0;\n }\n };\n\n const getColumnStyles = (sticky: boolean, columnId: PropertyKey): ColumnWidthStyle => {\n const column = visibleColumns.find(col => col.id === columnId);\n\n if (sticky) {\n // For sticky headers, mirror the primary cell's width.\n // Try DOM measurement first (handles columns not in visibleColumns like selection).\n const measured = cellsRef.current.get(columnId)?.getBoundingClientRect().width;\n /* istanbul ignore next: getBoundingClientRect returns 0 in JSDOM */\n if (measured) {\n return { width: measured };\n }\n return { width: columnWidths?.get(columnId) ?? column?.width };\n }\n\n if (!column) {\n return {};\n }\n\n if (resizableColumns && columnWidths) {\n const isLastColumn = column.id === visibleColumns[visibleColumns.length - 1]?.id;\n const totalWidth = visibleColumns.reduce(\n (sum, { id }) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH),\n 0\n );\n if (isLastColumn && containerWidthRef.current > totalWidth) {\n return { width: 'auto', minWidth: column.minWidth };\n }\n return { width: columnWidths.get(column.id), minWidth: column.minWidth };\n }\n\n return {\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: !resizableColumns ? column.maxWidth : undefined,\n };\n };\n\n // Mirrors the current primary cell widths onto the sticky header copies.\n const syncStickyColumnWidths = useStableCallback(() => {\n for (const { id } of visibleColumns) {\n const element = stickyCellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(true, id));\n }\n }\n });\n\n // Imperatively sets width style for a cell avoiding React state.\n // This allows setting the style as soon container's size change is observed.\n const updateColumnWidths = useStableCallback(() => {\n // When col elements exist (grouped columns), apply widths to <col> elements.\n // With table-layout:fixed, <col> widths control the actual column widths.\n if (hasColElements.current) {\n for (const { id } of visibleColumns) {\n const colElement = colsRef.current.get(id);\n if (colElement) {\n setElementWidths(colElement, getColumnStyles(false, id));\n }\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n } else {\n for (const { id } of visibleColumns) {\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n }\n\n // Sticky column widths must always be synchronized regardless of columnWidths state.\n syncStickyColumnWidths();\n });\n\n // Re-syncs the sticky header copies when the primary cells change width without a\n // corresponding change to the column definitions. This happens with auto-layout\n // columns whose widths depend on the rendered content (e.g. paginating or filtering).\n // Fixed-width and resizable columns don't resize on data changes, so this stays idle.\n // The effect re-observes when the set of visible columns changes, since that swaps\n // the underlying cell elements.\n useEffect(() => {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => syncStickyColumnWidths());\n for (const element of cellsRef.current.values()) {\n observer.observe(element);\n }\n return () => observer.disconnect();\n }, [syncStickyColumnWidths, visibleColumns]);\n\n // Observes container size and requests an update to the last cell width as it depends on the container's width.\n useResizeObserver(containerRef, ({ contentBoxWidth: containerWidth }) => {\n containerWidthRef.current = containerWidth;\n requestAnimationFrame(() => updateColumnWidths());\n });\n\n // The widths of the dynamically added columns (after the first render) if not set explicitly\n // will default to the DEFAULT_COLUMN_WIDTH.\n useEffect(() => {\n updateColumnWidths();\n\n if (!resizableColumns) {\n return;\n }\n let updated = false;\n const newColumnWidths = new Map(columnWidths);\n const lastVisible = visibleColumnsRef.current;\n if (lastVisible) {\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n if (!columnWidths?.get(column.id) && lastVisible.indexOf(column.id) === -1) {\n updated = true;\n const width = (column.width as number) || DEFAULT_COLUMN_WIDTH;\n const minWidth = (column.minWidth as number) || width;\n newColumnWidths.set(column.id, Math.max(width, minWidth));\n }\n }\n if (updated) {\n setColumnWidths(newColumnWidths);\n }\n }\n visibleColumnsRef.current = visibleColumns.map(column => column.id);\n }, [columnWidths, resizableColumns, visibleColumns, updateColumnWidths]);\n\n // Read the actual column widths after the first render to employ the browser defaults for\n // those columns without explicit width.\n useEffect(() => {\n if (!resizableColumns) {\n return;\n }\n setColumnWidths(() => readWidths(getCell, visibleColumns));\n // This code is intended to run only at the first render and should not re-run when table props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function updateColumn(columnId: PropertyKey, newWidth: number) {\n setColumnWidths(columnWidths => updateWidths(visibleColumns, columnWidths ?? new Map(), newWidth, columnId));\n }\n\n function updateGroup(groupId: PropertyKey, newGroupWidth: number) {\n if (!columnWidths || !groupColumnMap) {\n return;\n }\n\n const columnIds = groupColumnMap.get(String(groupId)) ?? [];\n const rightmostColumn = columnIds[columnIds.length - 1];\n if (!rightmostColumn) {\n return;\n }\n\n let currentGroupWidth = 0;\n for (const id of columnIds) {\n currentGroupWidth += columnWidths.get(id) || DEFAULT_COLUMN_WIDTH;\n }\n\n const delta = newGroupWidth - currentGroupWidth;\n const currentColumnWidth = columnWidths.get(rightmostColumn) || DEFAULT_COLUMN_WIDTH;\n updateColumn(rightmostColumn, currentColumnWidth + delta);\n }\n\n return (\n <WidthsContext.Provider\n value={{ getColumnStyles, columnWidths: columnWidths ?? new Map(), updateColumn, updateGroup, setCell, setCol }}\n >\n {children}\n </WidthsContext.Provider>\n );\n}\n\nexport function useColumnWidths() {\n return useContext(WidthsContext);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudscape-design/components-themeable",
3
- "version": "3.0.1330",
3
+ "version": "3.0.1331",
4
4
  "files": [
5
5
  "lib"
6
6
  ],