@react-spectrum/s2 3.0.0-nightly-58d96cace-250410 → 3.0.0-nightly-9723225d6-250413

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/Card.cjs +1 -1
  2. package/dist/Card.cjs.map +1 -1
  3. package/dist/Card.css.map +1 -1
  4. package/dist/Card.mjs +1 -1
  5. package/dist/Card.mjs.map +1 -1
  6. package/dist/ColorSwatchPicker.cjs +2 -2
  7. package/dist/ColorSwatchPicker.cjs.map +1 -1
  8. package/dist/ColorSwatchPicker.css.map +1 -1
  9. package/dist/ColorSwatchPicker.mjs +2 -2
  10. package/dist/ColorSwatchPicker.mjs.map +1 -1
  11. package/dist/Content.cjs +6 -6
  12. package/dist/Content.cjs.map +1 -1
  13. package/dist/Content.mjs +6 -6
  14. package/dist/Content.mjs.map +1 -1
  15. package/dist/TableView.cjs +28 -16
  16. package/dist/TableView.cjs.map +1 -1
  17. package/dist/TableView.css.map +1 -1
  18. package/dist/TableView.mjs +29 -17
  19. package/dist/TableView.mjs.map +1 -1
  20. package/dist/Toast.cjs +557 -0
  21. package/dist/Toast.cjs.map +1 -0
  22. package/dist/Toast.css +461 -0
  23. package/dist/Toast.css.map +1 -0
  24. package/dist/Toast.mjs +551 -0
  25. package/dist/Toast.mjs.map +1 -0
  26. package/dist/Toast_module.cjs +70 -0
  27. package/dist/Toast_module.cjs.map +1 -0
  28. package/dist/Toast_module.css +119 -0
  29. package/dist/Toast_module.css.map +1 -0
  30. package/dist/Toast_module.mjs +72 -0
  31. package/dist/Toast_module.mjs.map +1 -0
  32. package/dist/ar-AE.cjs +4 -1
  33. package/dist/ar-AE.cjs.map +1 -1
  34. package/dist/ar-AE.mjs +4 -1
  35. package/dist/ar-AE.mjs.map +1 -1
  36. package/dist/bg-BG.cjs +4 -1
  37. package/dist/bg-BG.cjs.map +1 -1
  38. package/dist/bg-BG.mjs +4 -1
  39. package/dist/bg-BG.mjs.map +1 -1
  40. package/dist/cs-CZ.cjs +4 -1
  41. package/dist/cs-CZ.cjs.map +1 -1
  42. package/dist/cs-CZ.mjs +4 -1
  43. package/dist/cs-CZ.mjs.map +1 -1
  44. package/dist/da-DK.cjs +4 -1
  45. package/dist/da-DK.cjs.map +1 -1
  46. package/dist/da-DK.mjs +4 -1
  47. package/dist/da-DK.mjs.map +1 -1
  48. package/dist/de-DE.cjs +4 -1
  49. package/dist/de-DE.cjs.map +1 -1
  50. package/dist/de-DE.mjs +4 -1
  51. package/dist/de-DE.mjs.map +1 -1
  52. package/dist/el-GR.cjs +4 -1
  53. package/dist/el-GR.cjs.map +1 -1
  54. package/dist/el-GR.mjs +4 -1
  55. package/dist/el-GR.mjs.map +1 -1
  56. package/dist/en-US.cjs +5 -1
  57. package/dist/en-US.cjs.map +1 -1
  58. package/dist/en-US.mjs +5 -1
  59. package/dist/en-US.mjs.map +1 -1
  60. package/dist/es-ES.cjs +4 -1
  61. package/dist/es-ES.cjs.map +1 -1
  62. package/dist/es-ES.mjs +4 -1
  63. package/dist/es-ES.mjs.map +1 -1
  64. package/dist/et-EE.cjs +4 -1
  65. package/dist/et-EE.cjs.map +1 -1
  66. package/dist/et-EE.mjs +4 -1
  67. package/dist/et-EE.mjs.map +1 -1
  68. package/dist/fi-FI.cjs +4 -1
  69. package/dist/fi-FI.cjs.map +1 -1
  70. package/dist/fi-FI.mjs +4 -1
  71. package/dist/fi-FI.mjs.map +1 -1
  72. package/dist/fr-FR.cjs +4 -1
  73. package/dist/fr-FR.cjs.map +1 -1
  74. package/dist/fr-FR.mjs +4 -1
  75. package/dist/fr-FR.mjs.map +1 -1
  76. package/dist/he-IL.cjs +4 -1
  77. package/dist/he-IL.cjs.map +1 -1
  78. package/dist/he-IL.mjs +4 -1
  79. package/dist/he-IL.mjs.map +1 -1
  80. package/dist/hr-HR.cjs +4 -1
  81. package/dist/hr-HR.cjs.map +1 -1
  82. package/dist/hr-HR.mjs +4 -1
  83. package/dist/hr-HR.mjs.map +1 -1
  84. package/dist/hu-HU.cjs +4 -1
  85. package/dist/hu-HU.cjs.map +1 -1
  86. package/dist/hu-HU.mjs +4 -1
  87. package/dist/hu-HU.mjs.map +1 -1
  88. package/dist/it-IT.cjs +4 -1
  89. package/dist/it-IT.cjs.map +1 -1
  90. package/dist/it-IT.mjs +4 -1
  91. package/dist/it-IT.mjs.map +1 -1
  92. package/dist/ja-JP.cjs +4 -1
  93. package/dist/ja-JP.cjs.map +1 -1
  94. package/dist/ja-JP.mjs +4 -1
  95. package/dist/ja-JP.mjs.map +1 -1
  96. package/dist/ko-KR.cjs +4 -1
  97. package/dist/ko-KR.cjs.map +1 -1
  98. package/dist/ko-KR.mjs +4 -1
  99. package/dist/ko-KR.mjs.map +1 -1
  100. package/dist/lt-LT.cjs +4 -1
  101. package/dist/lt-LT.cjs.map +1 -1
  102. package/dist/lt-LT.mjs +4 -1
  103. package/dist/lt-LT.mjs.map +1 -1
  104. package/dist/lv-LV.cjs +4 -1
  105. package/dist/lv-LV.cjs.map +1 -1
  106. package/dist/lv-LV.mjs +4 -1
  107. package/dist/lv-LV.mjs.map +1 -1
  108. package/dist/main.cjs +4 -0
  109. package/dist/main.cjs.map +1 -1
  110. package/dist/module.mjs +3 -1
  111. package/dist/module.mjs.map +1 -1
  112. package/dist/nb-NO.cjs +4 -1
  113. package/dist/nb-NO.cjs.map +1 -1
  114. package/dist/nb-NO.mjs +4 -1
  115. package/dist/nb-NO.mjs.map +1 -1
  116. package/dist/nl-NL.cjs +4 -1
  117. package/dist/nl-NL.cjs.map +1 -1
  118. package/dist/nl-NL.mjs +4 -1
  119. package/dist/nl-NL.mjs.map +1 -1
  120. package/dist/pl-PL.cjs +4 -1
  121. package/dist/pl-PL.cjs.map +1 -1
  122. package/dist/pl-PL.mjs +4 -1
  123. package/dist/pl-PL.mjs.map +1 -1
  124. package/dist/pt-BR.cjs +4 -1
  125. package/dist/pt-BR.cjs.map +1 -1
  126. package/dist/pt-BR.mjs +4 -1
  127. package/dist/pt-BR.mjs.map +1 -1
  128. package/dist/pt-PT.cjs +4 -1
  129. package/dist/pt-PT.cjs.map +1 -1
  130. package/dist/pt-PT.mjs +4 -1
  131. package/dist/pt-PT.mjs.map +1 -1
  132. package/dist/ro-RO.cjs +4 -1
  133. package/dist/ro-RO.cjs.map +1 -1
  134. package/dist/ro-RO.mjs +4 -1
  135. package/dist/ro-RO.mjs.map +1 -1
  136. package/dist/ru-RU.cjs +4 -1
  137. package/dist/ru-RU.cjs.map +1 -1
  138. package/dist/ru-RU.mjs +4 -1
  139. package/dist/ru-RU.mjs.map +1 -1
  140. package/dist/sk-SK.cjs +4 -1
  141. package/dist/sk-SK.cjs.map +1 -1
  142. package/dist/sk-SK.mjs +4 -1
  143. package/dist/sk-SK.mjs.map +1 -1
  144. package/dist/sl-SI.cjs +4 -1
  145. package/dist/sl-SI.cjs.map +1 -1
  146. package/dist/sl-SI.mjs +4 -1
  147. package/dist/sl-SI.mjs.map +1 -1
  148. package/dist/sr-SP.cjs +4 -1
  149. package/dist/sr-SP.cjs.map +1 -1
  150. package/dist/sr-SP.mjs +4 -1
  151. package/dist/sr-SP.mjs.map +1 -1
  152. package/dist/sv-SE.cjs +4 -1
  153. package/dist/sv-SE.cjs.map +1 -1
  154. package/dist/sv-SE.mjs +4 -1
  155. package/dist/sv-SE.mjs.map +1 -1
  156. package/dist/tr-TR.cjs +4 -1
  157. package/dist/tr-TR.cjs.map +1 -1
  158. package/dist/tr-TR.mjs +4 -1
  159. package/dist/tr-TR.mjs.map +1 -1
  160. package/dist/types.d.ts +47 -1
  161. package/dist/types.d.ts.map +1 -1
  162. package/dist/uk-UA.cjs +4 -1
  163. package/dist/uk-UA.cjs.map +1 -1
  164. package/dist/uk-UA.mjs +4 -1
  165. package/dist/uk-UA.mjs.map +1 -1
  166. package/dist/zh-CN.cjs +4 -1
  167. package/dist/zh-CN.cjs.map +1 -1
  168. package/dist/zh-CN.mjs +4 -1
  169. package/dist/zh-CN.mjs.map +1 -1
  170. package/dist/zh-TW.cjs +4 -1
  171. package/dist/zh-TW.cjs.map +1 -1
  172. package/dist/zh-TW.mjs +4 -1
  173. package/dist/zh-TW.mjs.map +1 -1
  174. package/package.json +20 -19
  175. package/src/Card.tsx +1 -1
  176. package/src/ColorSwatchPicker.tsx +2 -1
  177. package/src/Content.tsx +6 -6
  178. package/src/TableView.tsx +45 -29
  179. package/src/Toast.module.css +153 -0
  180. package/src/Toast.tsx +579 -0
  181. package/src/index.ts +2 -0
package/dist/Content.cjs CHANGED
@@ -44,7 +44,7 @@ const $6367bc87eb7d24ad$export$d688439359537581 = /*#__PURE__*/ (0, $bwC5I$react
44
44
  const $6367bc87eb7d24ad$export$a8a3e93435678ff9 = /*#__PURE__*/ (0, $bwC5I$react.forwardRef)(function Heading(props, ref) {
45
45
  [props, ref] = (0, $ac757a4c2bd72aee$exports.useSpectrumContextProps)(props, ref, $6367bc87eb7d24ad$export$d688439359537581);
46
46
  let domRef = (0, $bwC5I$reactspectrumutils.useDOMRef)(ref);
47
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
47
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
48
48
  if (isHidden) return null;
49
49
  return /*#__PURE__*/ (0, $bwC5I$reactjsxruntime.jsx)((0, $bwC5I$reactariacomponents.Heading), {
50
50
  ...otherProps,
@@ -58,7 +58,7 @@ const $6367bc87eb7d24ad$export$e0e4026c12a8bdbb = /*#__PURE__*/ (0, $bwC5I$react
58
58
  const $6367bc87eb7d24ad$export$8b251419efc915eb = /*#__PURE__*/ (0, $bwC5I$react.forwardRef)(function Header(props, ref) {
59
59
  [props, ref] = (0, $ac757a4c2bd72aee$exports.useSpectrumContextProps)(props, ref, $6367bc87eb7d24ad$export$e0e4026c12a8bdbb);
60
60
  let domRef = (0, $bwC5I$reactspectrumutils.useDOMRef)(ref);
61
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
61
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
62
62
  if (isHidden) return null;
63
63
  return /*#__PURE__*/ (0, $bwC5I$reactjsxruntime.jsx)((0, $bwC5I$reactariacomponents.Header), {
64
64
  ...otherProps,
@@ -72,7 +72,7 @@ const $6367bc87eb7d24ad$export$1cbdd774077931b4 = /*#__PURE__*/ (0, $bwC5I$react
72
72
  const $6367bc87eb7d24ad$export$7c6e2c02157bb7d2 = /*#__PURE__*/ (0, $bwC5I$react.forwardRef)(function Content(props, ref) {
73
73
  [props, ref] = (0, $ac757a4c2bd72aee$exports.useSpectrumContextProps)(props, ref, $6367bc87eb7d24ad$export$1cbdd774077931b4);
74
74
  let domRef = (0, $bwC5I$reactspectrumutils.useDOMRef)(ref);
75
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
75
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
76
76
  if (isHidden) return null;
77
77
  return /*#__PURE__*/ (0, $bwC5I$reactjsxruntime.jsx)("div", {
78
78
  ...otherProps,
@@ -86,7 +86,7 @@ const $6367bc87eb7d24ad$export$9afb8bc826b033ea = /*#__PURE__*/ (0, $bwC5I$react
86
86
  const $6367bc87eb7d24ad$export$5f1af8db9871e1d6 = /*#__PURE__*/ (0, $bwC5I$react.forwardRef)(function Text(props, ref) {
87
87
  [props, ref] = (0, $ac757a4c2bd72aee$exports.useSpectrumContextProps)(props, ref, $6367bc87eb7d24ad$export$9afb8bc826b033ea);
88
88
  let domRef = (0, $bwC5I$reactspectrumutils.useDOMRef)(ref);
89
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, children: children, ...otherProps } = props;
89
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, children: children, ...otherProps } = props;
90
90
  let racContext = (0, $bwC5I$react.useContext)((0, $bwC5I$reactariacomponents.TextContext));
91
91
  let isSkeleton = (0, $5eb75e0c130e0669$exports.useIsSkeleton)();
92
92
  [children, UNSAFE_style] = (0, $5eb75e0c130e0669$exports.useSkeletonText)(children, UNSAFE_style);
@@ -112,7 +112,7 @@ const $6367bc87eb7d24ad$export$744d98a3b8a94e1c = /*#__PURE__*/ (0, $bwC5I$react
112
112
  const $6367bc87eb7d24ad$export$16e4d70cc375e707 = /*#__PURE__*/ (0, $bwC5I$react.forwardRef)(function Keyboard(props, ref) {
113
113
  [props, ref] = (0, $ac757a4c2bd72aee$exports.useSpectrumContextProps)(props, ref, $6367bc87eb7d24ad$export$744d98a3b8a94e1c);
114
114
  let domRef = (0, $bwC5I$reactspectrumutils.useDOMRef)(ref);
115
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
115
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
116
116
  if (isHidden) return null;
117
117
  return /*#__PURE__*/ (0, $bwC5I$reactjsxruntime.jsx)((0, $bwC5I$reactariacomponents.Keyboard), {
118
118
  ...otherProps,
@@ -126,7 +126,7 @@ const $6367bc87eb7d24ad$export$5630640b68817ed6 = /*#__PURE__*/ (0, $bwC5I$react
126
126
  const $6367bc87eb7d24ad$export$a06f1c675e846f6f = /*#__PURE__*/ (0, $bwC5I$react.forwardRef)(function Footer(props, ref) {
127
127
  [props, ref] = (0, $ac757a4c2bd72aee$exports.useSpectrumContextProps)(props, ref, $6367bc87eb7d24ad$export$5630640b68817ed6);
128
128
  let domRef = (0, $bwC5I$reactspectrumutils.useDOMRef)(ref);
129
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
129
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
130
130
  if (isHidden) return null;
131
131
  return /*#__PURE__*/ (0, $bwC5I$reactjsxruntime.jsx)("footer", {
132
132
  ...otherProps,
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/s2/src/Content.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ContextValue, Keyboard as KeyboardAria, Header as RACHeader, Heading as RACHeading, TextContext as RACTextContext, SlotProps, Text as TextAria} from 'react-aria-components';\nimport {createContext, forwardRef, ReactNode, useContext} from 'react';\nimport {DOMRef, DOMRefValue} from '@react-types/shared';\nimport {inertValue} from '@react-aria/utils';\nimport {StyleString} from '../style/types';\nimport {UnsafeStyles} from './style-utils';\nimport {useDOMRef} from '@react-spectrum/utils';\nimport {useIsSkeleton, useSkeletonText} from './Skeleton';\nimport {useSpectrumContextProps} from './useSpectrumContextProps';\n\ninterface ContentProps extends UnsafeStyles, SlotProps {\n children: ReactNode,\n styles?: StyleString,\n isHidden?: boolean,\n id?: string\n}\n\ninterface HeadingProps extends ContentProps {\n level?: number\n}\n\nexport const HeadingContext = createContext<ContextValue<Partial<HeadingProps>, DOMRefValue<HTMLHeadingElement>>>(null);\n\nexport const Heading = forwardRef(// Wrapper around RAC Heading to unmount when hidden.\nfunction Heading(props: HeadingProps, ref: DOMRef<HTMLHeadingElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, HeadingContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n\n return (\n <RACHeading\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const HeaderContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue<HTMLElement>>>(null);\n\nexport const Header = forwardRef(function Header(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, HeaderContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n\n return (\n <RACHeader\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const ContentContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue<HTMLDivElement>>>(null);\n\nexport const Content = forwardRef(function Content(props: ContentProps, ref: DOMRef<HTMLDivElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, ContentContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <div\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const TextContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>(null);\n\nexport const Text = forwardRef(function Text(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, TextContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, children, ...otherProps} = props;\n let racContext = useContext(RACTextContext);\n let isSkeleton = useIsSkeleton();\n [children, UNSAFE_style] = useSkeletonText(children, UNSAFE_style);\n if (isHidden) {\n return null;\n }\n\n let text = (\n <TextAria\n {...otherProps}\n ref={domRef}\n // @ts-ignore - compatibility with React < 19\n inert={inertValue(isSkeleton)}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined}\n data-rsp-slot=\"text\">\n {children}\n </TextAria>\n );\n\n if (slot && racContext && 'slots' in racContext && !racContext.slots?.[slot]) {\n return <RACTextContext.Provider value={null}>{text}</RACTextContext.Provider>;\n }\n\n return text;\n});\n\nexport const KeyboardContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>({});\n\nexport const Keyboard = forwardRef(function Keyboard(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, KeyboardContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <KeyboardAria\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const FooterContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>({});\n\nexport const Footer = forwardRef(function Footer(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, FooterContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <footer\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n"],"names":[],"version":3,"file":"Content.cjs.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;AAuBM,MAAM,0DAAiB,CAAA,GAAA,0BAAY,EAAwE;AAE3G,MAAM,0DAAU,CAAA,GAAA,uBAAS,EAChC,SAAS,QAAQ,KAAmB,EAAE,GAA+B;IACnE,CAAC,OAAO,IAAI,GAAG,CAAA,GAAA,iDAAsB,EAAE,OAAO,KAAK;IACnD,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,oBAAC,mBAAmB,kBAAI,YAAY,UAAE,SAAS,cAAI,QAAQ,QAAE,IAAI,EAAE,GAAG,YAAW,GAAG;IACxF,IAAI,UACF,OAAO;IAGT,qBACE,gCAAC,CAAA,GAAA,kCAAS;QACP,GAAG,UAAU;QACd,KAAK;QACL,WAAW,mBAAmB;QAC9B,OAAO;QACP,MAAM,QAAQ;;AAEpB;AAEO,MAAM,0DAAgB,CAAA,GAAA,0BAAY,EAAiE;AAEnG,MAAM,0DAAS,CAAA,GAAA,uBAAS,EAAE,SAAS,OAAO,KAAmB,EAAE,GAAW;IAC/E,CAAC,OAAO,IAAI,GAAG,CAAA,GAAA,iDAAsB,EAAE,OAAO,KAAK;IACnD,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,oBAAC,mBAAmB,kBAAI,YAAY,UAAE,SAAS,cAAI,QAAQ,QAAE,IAAI,EAAE,GAAG,YAAW,GAAG;IACxF,IAAI,UACF,OAAO;IAGT,qBACE,gCAAC,CAAA,GAAA,iCAAQ;QACN,GAAG,UAAU;QACd,KAAK;QACL,WAAW,mBAAmB;QAC9B,OAAO;QACP,MAAM,QAAQ;;AAEpB;AAEO,MAAM,0DAAiB,CAAA,GAAA,0BAAY,EAAoE;AAEvG,MAAM,0DAAU,CAAA,GAAA,uBAAS,EAAE,SAAS,QAAQ,KAAmB,EAAE,GAA2B;IACjG,CAAC,OAAO,IAAI,GAAG,CAAA,GAAA,iDAAsB,EAAE,OAAO,KAAK;IACnD,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,oBAAC,mBAAmB,kBAAI,YAAY,UAAE,SAAS,cAAI,QAAQ,QAAE,IAAI,EAAE,GAAG,YAAW,GAAG;IACxF,IAAI,UACF,OAAO;IAET,qBACE,gCAAC;QACE,GAAG,UAAU;QACd,KAAK;QACL,WAAW,mBAAmB;QAC9B,OAAO;QACP,MAAM,QAAQ;;AAEpB;AAEO,MAAM,0DAAc,CAAA,GAAA,0BAAY,EAAoD;AAEpF,MAAM,0DAAO,CAAA,GAAA,uBAAS,EAAE,SAAS,KAAK,KAAmB,EAAE,GAAW;IAC3E,CAAC,OAAO,IAAI,GAAG,CAAA,GAAA,iDAAsB,EAAE,OAAO,KAAK;IACnD,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,oBAAC,mBAAmB,kBAAI,YAAY,UAAE,SAAS,cAAI,QAAQ,QAAE,IAAI,YAAE,QAAQ,EAAE,GAAG,YAAW,GAAG;IAClG,IAAI,aAAa,CAAA,GAAA,uBAAS,EAAE,CAAA,GAAA,sCAAa;IACzC,IAAI,aAAa,CAAA,GAAA,uCAAY;IAC7B,CAAC,UAAU,aAAa,GAAG,CAAA,GAAA,yCAAc,EAAE,UAAU;IACrD,IAAI,UACF,OAAO;IAGT,IAAI,qBACF,gCAAC,CAAA,GAAA,+BAAO;QACL,GAAG,UAAU;QACd,KAAK;QACL,6CAA6C;QAC7C,OAAO,CAAA,GAAA,gCAAS,EAAE;QAClB,WAAW,mBAAmB;QAC9B,OAAO;QACP,MAAM,QAAQ;QACd,iBAAc;kBACb;;IAIL,IAAI,QAAQ,cAAc,WAAW,cAAc,CAAC,WAAW,KAAK,EAAE,CAAC,KAAK,EAC1E,qBAAO,gCAAC,CAAA,GAAA,sCAAa,EAAE,QAAQ;QAAC,OAAO;kBAAO;;IAGhD,OAAO;AACT;AAEO,MAAM,0DAAkB,CAAA,GAAA,0BAAY,EAAoD,CAAC;AAEzF,MAAM,0DAAW,CAAA,GAAA,uBAAS,EAAE,SAAS,SAAS,KAAmB,EAAE,GAAW;IACnF,CAAC,OAAO,IAAI,GAAG,CAAA,GAAA,iDAAsB,EAAE,OAAO,KAAK;IACnD,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,oBAAC,mBAAmB,kBAAI,YAAY,UAAE,SAAS,cAAI,QAAQ,QAAE,IAAI,EAAE,GAAG,YAAW,GAAG;IACxF,IAAI,UACF,OAAO;IAET,qBACE,gCAAC,CAAA,GAAA,mCAAW;QACT,GAAG,UAAU;QACd,KAAK;QACL,WAAW,mBAAmB;QAC9B,OAAO;QACP,MAAM,QAAQ;;AAEpB;AAEO,MAAM,0DAAgB,CAAA,GAAA,0BAAY,EAAoD,CAAC;AAEvF,MAAM,0DAAS,CAAA,GAAA,uBAAS,EAAE,SAAS,OAAO,KAAmB,EAAE,GAAW;IAC/E,CAAC,OAAO,IAAI,GAAG,CAAA,GAAA,iDAAsB,EAAE,OAAO,KAAK;IACnD,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,oBAAC,mBAAmB,kBAAI,YAAY,UAAE,SAAS,cAAI,QAAQ,QAAE,IAAI,EAAE,GAAG,YAAW,GAAG;IACxF,IAAI,UACF,OAAO;IAET,qBACE,gCAAC;QACE,GAAG,UAAU;QACd,KAAK;QACL,WAAW,mBAAmB;QAC9B,OAAO;QACP,MAAM,QAAQ;;AAEpB","sources":["packages/@react-spectrum/s2/src/Content.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ContextValue, Keyboard as KeyboardAria, Header as RACHeader, Heading as RACHeading, TextContext as RACTextContext, SlotProps, Text as TextAria} from 'react-aria-components';\nimport {createContext, forwardRef, ReactNode, useContext} from 'react';\nimport {DOMRef, DOMRefValue} from '@react-types/shared';\nimport {inertValue} from '@react-aria/utils';\nimport {StyleString} from '../style/types';\nimport {UnsafeStyles} from './style-utils';\nimport {useDOMRef} from '@react-spectrum/utils';\nimport {useIsSkeleton, useSkeletonText} from './Skeleton';\nimport {useSpectrumContextProps} from './useSpectrumContextProps';\n\ninterface ContentProps extends UnsafeStyles, SlotProps {\n children: ReactNode,\n styles?: StyleString,\n isHidden?: boolean,\n id?: string\n}\n\ninterface HeadingProps extends ContentProps {\n level?: number\n}\n\nexport const HeadingContext = createContext<ContextValue<Partial<HeadingProps>, DOMRefValue<HTMLHeadingElement>>>(null);\n\nexport const Heading = forwardRef(// Wrapper around RAC Heading to unmount when hidden.\nfunction Heading(props: HeadingProps, ref: DOMRef<HTMLHeadingElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, HeadingContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n\n return (\n <RACHeading\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const HeaderContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue<HTMLElement>>>(null);\n\nexport const Header = forwardRef(function Header(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, HeaderContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n\n return (\n <RACHeader\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const ContentContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue<HTMLDivElement>>>(null);\n\nexport const Content = forwardRef(function Content(props: ContentProps, ref: DOMRef<HTMLDivElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, ContentContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <div\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const TextContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>(null);\n\nexport const Text = forwardRef(function Text(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, TextContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, children, ...otherProps} = props;\n let racContext = useContext(RACTextContext);\n let isSkeleton = useIsSkeleton();\n [children, UNSAFE_style] = useSkeletonText(children, UNSAFE_style);\n if (isHidden) {\n return null;\n }\n\n let text = (\n <TextAria\n {...otherProps}\n ref={domRef}\n // @ts-ignore - compatibility with React < 19\n inert={inertValue(isSkeleton)}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined}\n data-rsp-slot=\"text\">\n {children}\n </TextAria>\n );\n\n if (slot && racContext && 'slots' in racContext && !racContext.slots?.[slot]) {\n return <RACTextContext.Provider value={null}>{text}</RACTextContext.Provider>;\n }\n\n return text;\n});\n\nexport const KeyboardContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>({});\n\nexport const Keyboard = forwardRef(function Keyboard(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, KeyboardContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <KeyboardAria\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const FooterContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>({});\n\nexport const Footer = forwardRef(function Footer(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, FooterContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <footer\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n"],"names":[],"version":3,"file":"Content.cjs.map"}
package/dist/Content.mjs CHANGED
@@ -27,7 +27,7 @@ const $8e847109a6ab556d$export$d688439359537581 = /*#__PURE__*/ (0, $7TVeb$creat
27
27
  const $8e847109a6ab556d$export$a8a3e93435678ff9 = /*#__PURE__*/ (0, $7TVeb$forwardRef)(function Heading(props, ref) {
28
28
  [props, ref] = (0, $5ce63c423902f47d$export$764f6146fadd77f7)(props, ref, $8e847109a6ab556d$export$d688439359537581);
29
29
  let domRef = (0, $7TVeb$useDOMRef)(ref);
30
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
30
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
31
31
  if (isHidden) return null;
32
32
  return /*#__PURE__*/ (0, $7TVeb$jsx)((0, $7TVeb$Heading), {
33
33
  ...otherProps,
@@ -41,7 +41,7 @@ const $8e847109a6ab556d$export$e0e4026c12a8bdbb = /*#__PURE__*/ (0, $7TVeb$creat
41
41
  const $8e847109a6ab556d$export$8b251419efc915eb = /*#__PURE__*/ (0, $7TVeb$forwardRef)(function Header(props, ref) {
42
42
  [props, ref] = (0, $5ce63c423902f47d$export$764f6146fadd77f7)(props, ref, $8e847109a6ab556d$export$e0e4026c12a8bdbb);
43
43
  let domRef = (0, $7TVeb$useDOMRef)(ref);
44
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
44
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
45
45
  if (isHidden) return null;
46
46
  return /*#__PURE__*/ (0, $7TVeb$jsx)((0, $7TVeb$Header), {
47
47
  ...otherProps,
@@ -55,7 +55,7 @@ const $8e847109a6ab556d$export$1cbdd774077931b4 = /*#__PURE__*/ (0, $7TVeb$creat
55
55
  const $8e847109a6ab556d$export$7c6e2c02157bb7d2 = /*#__PURE__*/ (0, $7TVeb$forwardRef)(function Content(props, ref) {
56
56
  [props, ref] = (0, $5ce63c423902f47d$export$764f6146fadd77f7)(props, ref, $8e847109a6ab556d$export$1cbdd774077931b4);
57
57
  let domRef = (0, $7TVeb$useDOMRef)(ref);
58
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
58
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
59
59
  if (isHidden) return null;
60
60
  return /*#__PURE__*/ (0, $7TVeb$jsx)("div", {
61
61
  ...otherProps,
@@ -69,7 +69,7 @@ const $8e847109a6ab556d$export$9afb8bc826b033ea = /*#__PURE__*/ (0, $7TVeb$creat
69
69
  const $8e847109a6ab556d$export$5f1af8db9871e1d6 = /*#__PURE__*/ (0, $7TVeb$forwardRef)(function Text(props, ref) {
70
70
  [props, ref] = (0, $5ce63c423902f47d$export$764f6146fadd77f7)(props, ref, $8e847109a6ab556d$export$9afb8bc826b033ea);
71
71
  let domRef = (0, $7TVeb$useDOMRef)(ref);
72
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, children: children, ...otherProps } = props;
72
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, children: children, ...otherProps } = props;
73
73
  let racContext = (0, $7TVeb$useContext)((0, $7TVeb$TextContext));
74
74
  let isSkeleton = (0, $5ad421ec19460c48$export$4f8dc7555740235c)();
75
75
  [children, UNSAFE_style] = (0, $5ad421ec19460c48$export$a05a0b8a311cd65f)(children, UNSAFE_style);
@@ -95,7 +95,7 @@ const $8e847109a6ab556d$export$744d98a3b8a94e1c = /*#__PURE__*/ (0, $7TVeb$creat
95
95
  const $8e847109a6ab556d$export$16e4d70cc375e707 = /*#__PURE__*/ (0, $7TVeb$forwardRef)(function Keyboard(props, ref) {
96
96
  [props, ref] = (0, $5ce63c423902f47d$export$764f6146fadd77f7)(props, ref, $8e847109a6ab556d$export$744d98a3b8a94e1c);
97
97
  let domRef = (0, $7TVeb$useDOMRef)(ref);
98
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
98
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
99
99
  if (isHidden) return null;
100
100
  return /*#__PURE__*/ (0, $7TVeb$jsx)((0, $7TVeb$Keyboard), {
101
101
  ...otherProps,
@@ -109,7 +109,7 @@ const $8e847109a6ab556d$export$5630640b68817ed6 = /*#__PURE__*/ (0, $7TVeb$creat
109
109
  const $8e847109a6ab556d$export$a06f1c675e846f6f = /*#__PURE__*/ (0, $7TVeb$forwardRef)(function Footer(props, ref) {
110
110
  [props, ref] = (0, $5ce63c423902f47d$export$764f6146fadd77f7)(props, ref, $8e847109a6ab556d$export$5630640b68817ed6);
111
111
  let domRef = (0, $7TVeb$useDOMRef)(ref);
112
- let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles, isHidden: isHidden, slot: slot, ...otherProps } = props;
112
+ let { UNSAFE_className: UNSAFE_className = '', UNSAFE_style: UNSAFE_style, styles: styles = '', isHidden: isHidden, slot: slot, ...otherProps } = props;
113
113
  if (isHidden) return null;
114
114
  return /*#__PURE__*/ (0, $7TVeb$jsx)("footer", {
115
115
  ...otherProps,
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/s2/src/Content.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ContextValue, Keyboard as KeyboardAria, Header as RACHeader, Heading as RACHeading, TextContext as RACTextContext, SlotProps, Text as TextAria} from 'react-aria-components';\nimport {createContext, forwardRef, ReactNode, useContext} from 'react';\nimport {DOMRef, DOMRefValue} from '@react-types/shared';\nimport {inertValue} from '@react-aria/utils';\nimport {StyleString} from '../style/types';\nimport {UnsafeStyles} from './style-utils';\nimport {useDOMRef} from '@react-spectrum/utils';\nimport {useIsSkeleton, useSkeletonText} from './Skeleton';\nimport {useSpectrumContextProps} from './useSpectrumContextProps';\n\ninterface ContentProps extends UnsafeStyles, SlotProps {\n children: ReactNode,\n styles?: StyleString,\n isHidden?: boolean,\n id?: string\n}\n\ninterface HeadingProps extends ContentProps {\n level?: number\n}\n\nexport const HeadingContext = createContext<ContextValue<Partial<HeadingProps>, DOMRefValue<HTMLHeadingElement>>>(null);\n\nexport const Heading = forwardRef(// Wrapper around RAC Heading to unmount when hidden.\nfunction Heading(props: HeadingProps, ref: DOMRef<HTMLHeadingElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, HeadingContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n\n return (\n <RACHeading\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const HeaderContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue<HTMLElement>>>(null);\n\nexport const Header = forwardRef(function Header(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, HeaderContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n\n return (\n <RACHeader\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const ContentContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue<HTMLDivElement>>>(null);\n\nexport const Content = forwardRef(function Content(props: ContentProps, ref: DOMRef<HTMLDivElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, ContentContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <div\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const TextContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>(null);\n\nexport const Text = forwardRef(function Text(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, TextContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, children, ...otherProps} = props;\n let racContext = useContext(RACTextContext);\n let isSkeleton = useIsSkeleton();\n [children, UNSAFE_style] = useSkeletonText(children, UNSAFE_style);\n if (isHidden) {\n return null;\n }\n\n let text = (\n <TextAria\n {...otherProps}\n ref={domRef}\n // @ts-ignore - compatibility with React < 19\n inert={inertValue(isSkeleton)}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined}\n data-rsp-slot=\"text\">\n {children}\n </TextAria>\n );\n\n if (slot && racContext && 'slots' in racContext && !racContext.slots?.[slot]) {\n return <RACTextContext.Provider value={null}>{text}</RACTextContext.Provider>;\n }\n\n return text;\n});\n\nexport const KeyboardContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>({});\n\nexport const Keyboard = forwardRef(function Keyboard(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, KeyboardContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <KeyboardAria\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const FooterContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>({});\n\nexport const Footer = forwardRef(function Footer(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, FooterContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles, isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <footer\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n"],"names":[],"version":3,"file":"Content.mjs.map"}
1
+ {"mappings":"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","sources":["packages/@react-spectrum/s2/src/Content.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {ContextValue, Keyboard as KeyboardAria, Header as RACHeader, Heading as RACHeading, TextContext as RACTextContext, SlotProps, Text as TextAria} from 'react-aria-components';\nimport {createContext, forwardRef, ReactNode, useContext} from 'react';\nimport {DOMRef, DOMRefValue} from '@react-types/shared';\nimport {inertValue} from '@react-aria/utils';\nimport {StyleString} from '../style/types';\nimport {UnsafeStyles} from './style-utils';\nimport {useDOMRef} from '@react-spectrum/utils';\nimport {useIsSkeleton, useSkeletonText} from './Skeleton';\nimport {useSpectrumContextProps} from './useSpectrumContextProps';\n\ninterface ContentProps extends UnsafeStyles, SlotProps {\n children: ReactNode,\n styles?: StyleString,\n isHidden?: boolean,\n id?: string\n}\n\ninterface HeadingProps extends ContentProps {\n level?: number\n}\n\nexport const HeadingContext = createContext<ContextValue<Partial<HeadingProps>, DOMRefValue<HTMLHeadingElement>>>(null);\n\nexport const Heading = forwardRef(// Wrapper around RAC Heading to unmount when hidden.\nfunction Heading(props: HeadingProps, ref: DOMRef<HTMLHeadingElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, HeadingContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n\n return (\n <RACHeading\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const HeaderContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue<HTMLElement>>>(null);\n\nexport const Header = forwardRef(function Header(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, HeaderContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n\n return (\n <RACHeader\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const ContentContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue<HTMLDivElement>>>(null);\n\nexport const Content = forwardRef(function Content(props: ContentProps, ref: DOMRef<HTMLDivElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, ContentContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <div\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const TextContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>(null);\n\nexport const Text = forwardRef(function Text(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, TextContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, children, ...otherProps} = props;\n let racContext = useContext(RACTextContext);\n let isSkeleton = useIsSkeleton();\n [children, UNSAFE_style] = useSkeletonText(children, UNSAFE_style);\n if (isHidden) {\n return null;\n }\n\n let text = (\n <TextAria\n {...otherProps}\n ref={domRef}\n // @ts-ignore - compatibility with React < 19\n inert={inertValue(isSkeleton)}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined}\n data-rsp-slot=\"text\">\n {children}\n </TextAria>\n );\n\n if (slot && racContext && 'slots' in racContext && !racContext.slots?.[slot]) {\n return <RACTextContext.Provider value={null}>{text}</RACTextContext.Provider>;\n }\n\n return text;\n});\n\nexport const KeyboardContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>({});\n\nexport const Keyboard = forwardRef(function Keyboard(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, KeyboardContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <KeyboardAria\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n\nexport const FooterContext = createContext<ContextValue<Partial<ContentProps>, DOMRefValue>>({});\n\nexport const Footer = forwardRef(function Footer(props: ContentProps, ref: DOMRef) {\n [props, ref] = useSpectrumContextProps(props, ref, FooterContext);\n let domRef = useDOMRef(ref);\n let {UNSAFE_className = '', UNSAFE_style, styles = '', isHidden, slot, ...otherProps} = props;\n if (isHidden) {\n return null;\n }\n return (\n <footer\n {...otherProps}\n ref={domRef}\n className={UNSAFE_className + styles}\n style={UNSAFE_style}\n slot={slot || undefined} />\n );\n});\n"],"names":[],"version":3,"file":"Content.mjs.map"}
@@ -407,9 +407,9 @@ const $bed37377ec7a3a9e$var$columnStyles = function anonymous(props) {
407
407
  else if (props.isFocusVisible) rules += ' ao';
408
408
  else if (props.isHovered) rules += ' ao';
409
409
  else rules += ' an';
410
- if (props.isColumnResizable) rules += ' Ca';
410
+ if (props.isMenu) rules += ' Ca';
411
411
  else rules += ' Cf';
412
- if (props.isColumnResizable) rules += ' Da';
412
+ if (props.isMenu) rules += ' Da';
413
413
  else rules += ' Df';
414
414
  if (props.align === "end") rules += ' _kc';
415
415
  else if (props.align === "center") rules += ' _kb';
@@ -448,7 +448,7 @@ const $bed37377ec7a3a9e$var$columnStyles = function anonymous(props) {
448
448
  else rules += ' ua';
449
449
  rules += ' vb';
450
450
  rules += ' sa';
451
- if (props.isColumnResizable) rules += ' tb';
451
+ if (props.isMenu) rules += ' tb';
452
452
  else rules += ' ta';
453
453
  rules += ' wa';
454
454
  rules += ' _Ab';
@@ -458,7 +458,7 @@ const $bed37377ec7a3a9e$export$816b5d811295e6bc = /*#__PURE__*/ (0, $iLVc8$react
458
458
  let { isQuiet: isQuiet } = (0, $iLVc8$react.useContext)($bed37377ec7a3a9e$var$InternalTableContext);
459
459
  let { allowsResizing: allowsResizing, children: children, align: align = 'start' } = props;
460
460
  let domRef = (0, $iLVc8$reactspectrumutils.useDOMRef)(ref);
461
- let isColumnResizable = allowsResizing;
461
+ let isMenu = allowsResizing || !!props.UNSTABLE_menuItems;
462
462
  return /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)((0, $iLVc8$reactariacomponents.Column), {
463
463
  ...props,
464
464
  ref: domRef,
@@ -467,14 +467,16 @@ const $bed37377ec7a3a9e$export$816b5d811295e6bc = /*#__PURE__*/ (0, $iLVc8$react
467
467
  },
468
468
  className: (renderProps)=>$bed37377ec7a3a9e$var$columnStyles({
469
469
  ...renderProps,
470
- isColumnResizable: isColumnResizable,
470
+ isMenu: isMenu,
471
471
  align: align,
472
472
  isQuiet: isQuiet
473
473
  }),
474
474
  children: ({ allowsSorting: allowsSorting, sortDirection: sortDirection, isFocusVisible: isFocusVisible, sort: sort, startResize: startResize })=>/*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsxs)((0, $iLVc8$reactjsxruntime.Fragment), {
475
475
  children: [
476
476
  isFocusVisible && /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)($bed37377ec7a3a9e$var$CellFocusRing, {}),
477
- isColumnResizable ? /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)($bed37377ec7a3a9e$var$ResizableColumnContents, {
477
+ isMenu ? /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)($bed37377ec7a3a9e$var$ColumnWithMenu, {
478
+ isColumnResizable: allowsResizing,
479
+ menuItems: props.UNSTABLE_menuItems,
478
480
  allowsSorting: allowsSorting,
479
481
  sortDirection: sortDirection,
480
482
  sort: sort,
@@ -615,8 +617,8 @@ const $bed37377ec7a3a9e$var$resizerHandle = function anonymous(props) {
615
617
  const $bed37377ec7a3a9e$var$columnHeaderText = " __wb __xb _na _qb q-1wikn8b __a-3t1x _9-3t1y hF";
616
618
  const $bed37377ec7a3a9e$var$chevronIcon = " R-3hn0u yG ybH q-1wikn8b _9-3t1x -rwx0fg_e-b";
617
619
  const $bed37377ec7a3a9e$var$nubbin = " Va Ya W-avx9c1 l-1wikn8b k-1wikn8b e-14crvkh ea______a -rwx0fg_e-A -rwx0fg_e-a______b";
618
- function $bed37377ec7a3a9e$var$ResizableColumnContents(props) {
619
- let { allowsSorting: allowsSorting, sortDirection: sortDirection, sort: sort, startResize: startResize, children: children, align: align } = props;
620
+ function $bed37377ec7a3a9e$var$ColumnWithMenu(props) {
621
+ let { allowsSorting: allowsSorting, sortDirection: sortDirection, sort: sort, startResize: startResize, children: children, align: align, isColumnResizable: isColumnResizable, menuItems: menuItems } = props;
620
622
  let { setIsInResizeMode: setIsInResizeMode, isInResizeMode: isInResizeMode } = (0, $iLVc8$react.useContext)($bed37377ec7a3a9e$var$InternalTableContext);
621
623
  let stringFormatter = (0, $iLVc8$reactariai18n.useLocalizedStringFormatter)((0, ($parcel$interopDefault($4526404114e78c80$exports))), '@react-spectrum/s2');
622
624
  const onMenuSelect = (key)=>{
@@ -634,7 +636,8 @@ function $bed37377ec7a3a9e$var$ResizableColumnContents(props) {
634
636
  }
635
637
  };
636
638
  let items = (0, $iLVc8$react.useMemo)(()=>{
637
- let options = [
639
+ let options = [];
640
+ if (isColumnResizable) options = [
638
641
  {
639
642
  label: stringFormatter.format('table.resizeColumn'),
640
643
  id: 'resize'
@@ -654,7 +657,8 @@ function $bed37377ec7a3a9e$var$ResizableColumnContents(props) {
654
657
  return options;
655
658
  // eslint-disable-next-line react-hooks/exhaustive-deps
656
659
  }, [
657
- allowsSorting
660
+ allowsSorting,
661
+ isColumnResizable
658
662
  ]);
659
663
  let buttonAlignment = 'start';
660
664
  let menuAlign = 'start';
@@ -697,17 +701,25 @@ function $bed37377ec7a3a9e$var$ResizableColumnContents(props) {
697
701
  })
698
702
  ]
699
703
  }),
700
- /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)((0, $e741ea6b88ce4866$exports.Menu), {
704
+ /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsxs)((0, $e741ea6b88ce4866$exports.Menu), {
701
705
  onAction: onMenuSelect,
702
- items: items,
703
706
  styles: " q__s",
704
- children: (item)=>/*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)((0, $e741ea6b88ce4866$exports.MenuItem), {
705
- children: item?.label
706
- })
707
+ children: [
708
+ items.length > 0 && /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)((0, $e741ea6b88ce4866$exports.MenuSection), {
709
+ "aria-label": stringFormatter.format('table.standardColumnMenu'),
710
+ children: /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)((0, $iLVc8$reactariacomponents.Collection), {
711
+ items: items,
712
+ children: (item)=>/*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)((0, $e741ea6b88ce4866$exports.MenuItem), {
713
+ children: item?.label
714
+ })
715
+ })
716
+ }),
717
+ menuItems
718
+ ]
707
719
  })
708
720
  ]
709
721
  }),
710
- /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)("div", {
722
+ isColumnResizable && /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)("div", {
711
723
  "data-react-aria-prevent-focus": "true",
712
724
  children: /*#__PURE__*/ (0, $iLVc8$reactjsxruntime.jsx)((0, $iLVc8$reactariacomponents.ColumnResizer), {
713
725
  "data-react-aria-prevent-focus": "true",
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/s2/src/TableView.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n Button,\n CellRenderProps,\n Collection,\n ColumnRenderProps,\n ColumnResizer,\n ContextValue,\n Key,\n Provider,\n Cell as RACCell,\n CellProps as RACCellProps,\n CheckboxContext as RACCheckboxContext,\n Column as RACColumn,\n ColumnProps as RACColumnProps,\n Row as RACRow,\n RowProps as RACRowProps,\n Table as RACTable,\n TableBody as RACTableBody,\n TableBodyProps as RACTableBodyProps,\n TableHeader as RACTableHeader,\n TableHeaderProps as RACTableHeaderProps,\n TableProps as RACTableProps,\n Rect,\n ResizableTableContainer,\n RowRenderProps,\n TableBodyRenderProps,\n TableLayout,\n TableRenderProps,\n UNSTABLE_TableLoadingIndicator,\n useSlottedContext,\n useTableOptions,\n Virtualizer\n} from 'react-aria-components';\nimport {centerPadding, getAllowedOverrides, StylesPropWithHeight, UnsafeStyles} from './style-utils' with {type: 'macro'};\nimport {Checkbox} from './Checkbox';\nimport Chevron from '../ui-icons/Chevron';\nimport {colorMix, focusRing, fontRelative, lightDark, space, style} from '../style' with {type: 'macro'};\nimport {ColumnSize} from '@react-types/table';\nimport {DOMRef, DOMRefValue, forwardRefType, LoadingState, Node} from '@react-types/shared';\nimport {GridNode} from '@react-types/grid';\nimport {IconContext} from './Icon';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {LayoutNode} from '@react-stately/layout';\nimport {Menu, MenuItem, MenuTrigger} from './Menu';\nimport {mergeStyles} from '../style/runtime';\nimport Nubbin from '../ui-icons/S2_MoveHorizontalTableWidget.svg';\nimport {ProgressCircle} from './ProgressCircle';\nimport {raw} from '../style/style-macro' with {type: 'macro'};\nimport React, {createContext, forwardRef, ReactElement, ReactNode, useCallback, useContext, useMemo, useRef, useState} from 'react';\nimport SortDownArrow from '../s2wf-icons/S2_Icon_SortDown_20_N.svg';\nimport SortUpArrow from '../s2wf-icons/S2_Icon_SortUp_20_N.svg';\nimport {useActionBarContainer} from './ActionBar';\nimport {useDOMRef} from '@react-spectrum/utils';\nimport {useLoadMore} from '@react-aria/utils';\nimport {useLocalizedStringFormatter} from '@react-aria/i18n';\nimport {useScale} from './utils';\nimport {useSpectrumContextProps} from './useSpectrumContextProps';\nimport {VisuallyHidden} from 'react-aria';\n\ninterface S2TableProps {\n /** Whether the Table should be displayed with a quiet style. */\n isQuiet?: boolean,\n /**\n * Sets the amount of vertical padding within each cell.\n * @default 'regular'\n */\n density?: 'compact' | 'spacious' | 'regular',\n /**\n * Sets the overflow behavior for the cell contents.\n * @default 'truncate'\n */\n overflowMode?: 'wrap' | 'truncate',\n // TODO: will we contine with onAction or rename to onRowAction like it is in RAC?\n /** Handler that is called when a user performs an action on a row. */\n onAction?: (key: Key) => void,\n /**\n * Handler that is called when a user starts a column resize.\n */\n onResizeStart?: (widths: Map<Key, ColumnSize>) => void,\n /**\n * Handler that is called when a user performs a column resize.\n * Can be used with the width property on columns to put the column widths into\n * a controlled state.\n */\n onResize?: (widths: Map<Key, ColumnSize>) => void,\n /**\n * Handler that is called after a user performs a column resize.\n * Can be used to store the widths of columns for another future session.\n */\n onResizeEnd?: (widths: Map<Key, ColumnSize>) => void,\n /** The current loading state of the table. */\n loadingState?: LoadingState,\n /** Handler that is called when more items should be loaded, e.g. while scrolling near the bottom. */\n onLoadMore?: () => any,\n /** Provides the ActionBar to display when rows are selected in the TableView. */\n renderActionBar?: (selectedKeys: 'all' | Set<Key>) => ReactElement\n}\n\n// TODO: Note that loadMore and loadingState are now on the Table instead of on the TableBody\nexport interface TableViewProps extends Omit<RACTableProps, 'style' | 'disabledBehavior' | 'className' | 'onRowAction' | 'selectionBehavior' | 'onScroll' | 'onCellAction' | 'dragAndDropHooks'>, UnsafeStyles, S2TableProps {\n /** Spectrum-defined styles, returned by the `style()` macro. */\n styles?: StylesPropWithHeight\n}\n\nlet InternalTableContext = createContext<TableViewProps & {layout?: S2TableLayout<unknown>, setIsInResizeMode?:(val: boolean) => void, isInResizeMode?: boolean}>({});\n\nconst tableWrapper = style({\n minHeight: 0,\n minWidth: 0,\n display: 'flex',\n isolation: 'isolate',\n disableTapHighlight: true,\n position: 'relative',\n // Clip ActionBar animation.\n overflow: 'clip'\n});\n\nconst table = style<TableRenderProps & S2TableProps & {isCheckboxSelection?: boolean}>({\n width: 'full',\n userSelect: 'none',\n minHeight: 0,\n minWidth: 0,\n fontFamily: 'sans',\n fontWeight: 'normal',\n overflow: 'auto',\n backgroundColor: {\n default: 'gray-25',\n isQuiet: 'transparent',\n forcedColors: 'Background'\n },\n borderColor: 'gray-300',\n borderStyle: 'solid',\n borderWidth: {\n default: 1,\n isQuiet: 0\n },\n ...focusRing(),\n outlineOffset: -1, // Cover the border\n borderRadius: {\n default: '[6px]',\n isQuiet: 'none'\n },\n // Multiple browser bugs from scrollIntoView and scrollPadding:\n // Bug: Table doesn't scroll items into view perfectly in Chrome\n // https://issues.chromium.org/issues/365913982\n // Bug: Table scrolls to the left when navigating up/down through the checkboxes when body is scrolled to the right.\n // https://issues.chromium.org/issues/40067778\n // https://bugs.webkit.org/show_bug.cgi?id=272799\n // Base reproduction: https://codepen.io/lfdanlu/pen/zYVVGPW\n scrollPaddingTop: 32,\n scrollPaddingStart: {\n isCheckboxSelection: 40\n }\n}, getAllowedOverrides({height: true}));\n\n// component-height-100\nconst DEFAULT_HEADER_HEIGHT = {\n medium: 32,\n large: 40\n};\n\nconst ROW_HEIGHTS = {\n compact: {\n medium: 32, // table-row-height-medium-compact (aka component-height-100)\n large: 40\n },\n regular: {\n medium: 40, // table-row-height-medium-regular\n large: 50\n },\n spacious: {\n medium: 48, // table-row-height-medium-spacious\n large: 60\n }\n};\n\nexport class S2TableLayout<T> extends TableLayout<T> {\n protected isStickyColumn(node: GridNode<T>): boolean {\n return node.props.isSticky;\n }\n\n protected buildCollection(): LayoutNode[] {\n let [header, body] = super.buildCollection();\n let {children, layoutInfo} = body;\n // TableLayout's buildCollection always sets the body width to the max width between the header width, but\n // we want the body to be sticky and only as wide as the table so it is always in view if loading/empty\n if (children?.length === 0) {\n layoutInfo.rect.width = this.virtualizer!.visibleRect.width - 80;\n }\n\n return [\n header,\n body\n ];\n }\n\n protected buildLoader(node: Node<T>, x: number, y: number): LayoutNode {\n let layoutNode = super.buildLoader(node, x, y);\n let {layoutInfo} = layoutNode;\n layoutInfo.allowOverflow = true;\n layoutInfo.rect.width = this.virtualizer!.visibleRect.width;\n layoutInfo.isSticky = true;\n return layoutNode;\n }\n\n // y is the height of the headers\n protected buildBody(y: number): LayoutNode {\n let layoutNode = super.buildBody(y);\n let {children, layoutInfo} = layoutNode;\n // Needs overflow for sticky loader\n layoutInfo.allowOverflow = true;\n // If loading or empty, we'll want the body to be sticky and centered\n if (children?.length === 0) {\n layoutInfo.rect = new Rect(40, 40, this.virtualizer!.visibleRect.width - 80, this.virtualizer!.visibleRect.height - 80);\n layoutInfo.isSticky = true;\n }\n\n return {...layoutNode, layoutInfo};\n }\n\n protected buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let layoutNode = super.buildRow(node, x, y);\n layoutNode.layoutInfo.allowOverflow = true;\n // Needs overflow for sticky selection/drag cells\n return layoutNode;\n }\n\n protected buildTableHeader(): LayoutNode {\n let layoutNode = super.buildTableHeader();\n // Needs overflow for sticky selection/drag column\n layoutNode.layoutInfo.allowOverflow = true;\n return layoutNode;\n }\n\n protected buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let layoutNode = super.buildColumn(node, x, y);\n // Needs overflow for the resize handle\n layoutNode.layoutInfo.allowOverflow = true;\n return layoutNode;\n }\n}\n\nexport const TableContext = createContext<ContextValue<Partial<TableViewProps>, DOMRefValue<HTMLDivElement>>>(null);\n\n/**\n * Tables are containers for displaying information. They allow users to quickly scan, sort, compare, and take action on large amounts of data.\n */\nexport const TableView = forwardRef(function TableView(props: TableViewProps, ref: DOMRef<HTMLDivElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, TableContext);\n let {\n UNSAFE_style,\n UNSAFE_className,\n isQuiet = false,\n density = 'regular',\n overflowMode = 'truncate',\n styles,\n loadingState,\n onLoadMore,\n onResize: propsOnResize,\n onResizeStart: propsOnResizeStart,\n onResizeEnd: propsOnResizeEnd,\n onAction,\n ...otherProps\n } = props;\n\n let domRef = useDOMRef(ref);\n let scale = useScale();\n\n // Starts when the user selects resize from the menu, ends when resizing ends\n // used to control the visibility of the resizer Nubbin\n let [isInResizeMode, setIsInResizeMode] = useState(false);\n let onResizeStart = useCallback((widths) => {\n propsOnResizeStart?.(widths);\n }, [propsOnResizeStart]);\n let onResizeEnd = useCallback((widths) => {\n setIsInResizeMode(false);\n propsOnResizeEnd?.(widths);\n }, [propsOnResizeEnd, setIsInResizeMode]);\n\n let context = useMemo(() => ({\n isQuiet,\n density,\n overflowMode,\n loadingState,\n isInResizeMode,\n setIsInResizeMode\n }), [isQuiet, density, overflowMode, loadingState, isInResizeMode, setIsInResizeMode]);\n\n let isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n let scrollRef = useRef<HTMLElement | null>(null);\n let memoedLoadMoreProps = useMemo(() => ({\n isLoading: isLoading,\n onLoadMore\n }), [isLoading, onLoadMore]);\n useLoadMore(memoedLoadMoreProps, scrollRef);\n let isCheckboxSelection = props.selectionMode === 'multiple' || props.selectionMode === 'single';\n\n let {selectedKeys, onSelectionChange, actionBar, actionBarHeight} = useActionBarContainer({...props, scrollRef});\n\n return (\n <ResizableTableContainer\n // TODO: perhaps this ref should be attached to the RACTable but it expects a table type ref which isn't true in the virtualized case\n ref={domRef}\n onResize={propsOnResize}\n onResizeEnd={onResizeEnd}\n onResizeStart={onResizeStart}\n className={(UNSAFE_className || '') + mergeStyles(tableWrapper, styles)}\n style={UNSAFE_style}>\n <Virtualizer\n layout={S2TableLayout}\n layoutOptions={{\n rowHeight: overflowMode === 'wrap'\n ? undefined\n : ROW_HEIGHTS[density][scale],\n estimatedRowHeight: overflowMode === 'wrap'\n ? ROW_HEIGHTS[density][scale]\n : undefined,\n // No need for estimated headingHeight since the headers aren't affected by overflow mode: wrap\n headingHeight: DEFAULT_HEADER_HEIGHT[scale],\n loaderHeight: 60\n }}>\n <InternalTableContext.Provider value={context}>\n <RACTable\n ref={scrollRef as any}\n style={{\n // Fix webkit bug where scrollbars appear above the checkboxes/other table elements\n WebkitTransform: 'translateZ(0)',\n // Add padding at the bottom when the action bar is visible so users can scroll to the last items.\n // Also add scroll padding so navigating with the keyboard doesn't go behind the action bar.\n paddingBottom: actionBarHeight > 0 ? actionBarHeight + 8 : 0,\n scrollPaddingBottom: actionBarHeight > 0 ? actionBarHeight + 8 : 0\n }}\n className={renderProps => table({\n ...renderProps,\n isCheckboxSelection,\n isQuiet\n })}\n selectionBehavior=\"toggle\"\n onRowAction={onAction}\n {...otherProps}\n selectedKeys={selectedKeys}\n defaultSelectedKeys={undefined}\n onSelectionChange={onSelectionChange} />\n </InternalTableContext.Provider>\n </Virtualizer>\n {actionBar}\n </ResizableTableContainer>\n );\n});\n\nconst centeredWrapper = style({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 'full',\n height: 'full'\n});\n\nexport interface TableBodyProps<T> extends Omit<RACTableBodyProps<T>, 'style' | 'className' | 'dependencies'> {}\n\n/**\n * The body of a `<Table>`, containing the table rows.\n */\nexport const TableBody = /*#__PURE__*/ (forwardRef as forwardRefType)(function TableBody<T extends object>(props: TableBodyProps<T>, ref: DOMRef<HTMLDivElement>) {\n let {items, renderEmptyState, children} = props;\n let domRef = useDOMRef(ref);\n let {loadingState} = useContext(InternalTableContext);\n let emptyRender;\n let renderer = children;\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2');\n let loadMoreSpinner = (\n <UNSTABLE_TableLoadingIndicator className={style({height: 'full', width: 'full'})}>\n <div className={centeredWrapper}>\n <ProgressCircle\n isIndeterminate\n aria-label={stringFormatter.format('table.loadingMore')} />\n </div>\n </UNSTABLE_TableLoadingIndicator>\n );\n\n // If the user is rendering their rows in dynamic fashion, wrap their render function in Collection so we can inject\n // the loader. Otherwise it is a static renderer and thus we can simply add the table loader after\n // TODO: this assumes that the user isn't providing their children in some wrapper though and/or isn't doing a map of children\n // (though I guess they wouldn't provide items then so the check for this is still valid in the latter case)...\n if (typeof children === 'function' && items) {\n renderer = (\n <>\n <Collection items={items}>\n {children}\n </Collection>\n {loadingState === 'loadingMore' && loadMoreSpinner}\n </>\n );\n } else {\n renderer = (\n <>\n {children}\n {loadingState === 'loadingMore' && loadMoreSpinner}\n </>\n );\n }\n\n if (renderEmptyState != null && loadingState !== 'loading') {\n emptyRender = (props: TableBodyRenderProps) => (\n <div className={centeredWrapper}>\n {renderEmptyState(props)}\n </div>\n );\n } else if (loadingState === 'loading') {\n emptyRender = () => (\n <div className={centeredWrapper}>\n <ProgressCircle\n isIndeterminate\n aria-label={stringFormatter.format('table.loading')} />\n </div>\n );\n }\n\n return (\n <RACTableBody\n // @ts-ignore\n ref={domRef}\n className={style({height: 'full'})}\n {...props}\n renderEmptyState={emptyRender}\n dependencies={[loadingState]}>\n {renderer}\n </RACTableBody>\n );\n});\n\nconst cellFocus = {\n outlineStyle: {\n default: 'none',\n isFocusVisible: 'solid'\n },\n outlineOffset: -2,\n outlineWidth: 2,\n outlineColor: 'focus-ring',\n borderRadius: '[6px]'\n} as const;\n\nfunction CellFocusRing() {\n return <div role=\"presentation\" className={style({...cellFocus, position: 'absolute', inset: 0})({isFocusVisible: true})} />;\n}\n\nconst columnStyles = style({\n height: '[inherit]',\n boxSizing: 'border-box',\n color: {\n default: 'neutral',\n forcedColors: 'ButtonText'\n },\n paddingX: {\n default: 16,\n isColumnResizable: 0\n },\n textAlign: {\n align: {\n start: 'start',\n center: 'center',\n end: 'end'\n }\n },\n outlineStyle: 'none',\n position: 'relative',\n fontSize: 'control',\n fontFamily: 'sans',\n fontWeight: 'bold',\n display: 'flex',\n borderColor: {\n default: 'gray-300',\n forcedColors: 'ButtonBorder'\n },\n borderTopWidth: {\n default: 0,\n isQuiet: 1\n },\n borderBottomWidth: 1,\n borderStartWidth: 0,\n borderEndWidth: {\n default: 0,\n isColumnResizable: 1\n },\n borderStyle: 'solid',\n forcedColorAdjust: 'none'\n});\n\nexport interface ColumnProps extends RACColumnProps {\n /** Whether the column should render a divider between it and the next column. */\n showDivider?: boolean,\n /** Whether the column allows resizing. */\n allowsResizing?: boolean,\n /**\n * The alignment of the column's contents relative to its allotted width.\n * @default 'start'\n */\n align?: 'start' | 'center' | 'end',\n /** The content to render as the column header. */\n children: ReactNode\n}\n\n/**\n * A column within a `<Table>`.\n */\nexport const Column = forwardRef(function Column(props: ColumnProps, ref: DOMRef<HTMLDivElement>) {\n let {isQuiet} = useContext(InternalTableContext);\n let {allowsResizing, children, align = 'start'} = props;\n let domRef = useDOMRef(ref);\n let isColumnResizable = allowsResizing;\n\n return (\n <RACColumn {...props} ref={domRef} style={{borderInlineEndColor: 'transparent'}} className={renderProps => columnStyles({...renderProps, isColumnResizable, align, isQuiet})}>\n {({allowsSorting, sortDirection, isFocusVisible, sort, startResize}) => (\n <>\n {/* Note this is mainly for column's without a dropdown menu. If there is a dropdown menu, the button is styled to have a focus ring for simplicity\n (no need to juggle showing this focus ring if focus is on the menu button and not if it is on the resizer) */}\n {/* Separate absolutely positioned element because appyling the ring on the column directly via outline means the ring's required borderRadius will cause the bottom gray border to curve as well */}\n {isFocusVisible && <CellFocusRing />}\n {isColumnResizable ?\n (\n <ResizableColumnContents allowsSorting={allowsSorting} sortDirection={sortDirection} sort={sort} startResize={startResize} align={align}>\n {children}\n </ResizableColumnContents>\n ) : (\n <ColumnContents allowsSorting={allowsSorting} sortDirection={sortDirection}>\n {children}\n </ColumnContents>\n )\n }\n </>\n )}\n </RACColumn>\n );\n});\n\nconst columnContentWrapper = style({\n minWidth: 0,\n display: 'flex',\n alignItems: 'center',\n width: 'full'\n});\n\nconst sortIcon = style({\n size: fontRelative(16),\n flexShrink: 0,\n marginEnd: {\n default: 8,\n isButton: 'text-to-visual'\n },\n verticalAlign: {\n default: 'bottom',\n isButton: 0\n },\n '--iconPrimary': {\n type: 'fill',\n value: 'currentColor'\n }\n});\n\ninterface ColumnContentProps extends Pick<ColumnRenderProps, 'allowsSorting' | 'sortDirection'>, Pick<ColumnProps, 'children'> {}\n\nfunction ColumnContents(props: ColumnContentProps) {\n let {allowsSorting, sortDirection, children} = props;\n\n return (\n <div className={columnContentWrapper}>\n {allowsSorting && (\n <Provider\n values={[\n [IconContext, {\n styles: sortIcon({})\n }]\n ]}>\n {sortDirection != null && (\n sortDirection === 'ascending' ? <SortUpArrow /> : <SortDownArrow />\n )}\n </Provider>\n )}\n <span className={style({truncate: true, width: 'full'})}>\n {children}\n </span>\n </div>\n );\n}\n\nconst resizableMenuButtonWrapper = style({\n ...cellFocus,\n color: 'gray-800', // body-color\n width: 'full',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: {\n align: {\n default: 'start',\n center: 'center',\n end: 'end'\n }\n },\n // TODO: when align: end, the dropdown arrow is misaligned with the text, not sure how best to make the svg be flush with the end of the button other than modifying the\n // paddingEnd\n paddingX: 16,\n backgroundColor: 'transparent',\n borderStyle: 'none',\n fontSize: 'control',\n fontFamily: 'sans',\n fontWeight: 'bold'\n});\n\nconst resizerHandleContainer = style({\n display: {\n default: '--resizerDisplay',\n isResizing: 'block',\n isInResizeMode: 'block'\n },\n width: 12,\n height: 'full',\n position: 'absolute',\n top: 0,\n insetEnd: space(-6),\n cursor: {\n default: 'none',\n resizableDirection: {\n 'left': 'e-resize',\n 'right': 'w-resize',\n 'both': 'ew-resize'\n }\n }\n});\n\nconst resizerHandle = style({\n backgroundColor: {\n default: 'gray-300',\n isFocusVisible: lightDark('informative-900', 'informative-700'), // --spectrum-informative-background-color-default, can't use `informative` because that will use the focusVisible version\n isResizing: lightDark('informative-900', 'informative-700'),\n forcedColors: {\n default: 'Background',\n isHovered: 'ButtonBorder',\n isFocusVisible: 'Highlight',\n isResizing: 'Highlight'\n }\n },\n height: {\n default: 'full',\n isResizing: 'screen'\n },\n width: {\n default: 1,\n isResizing: 2\n },\n position: 'absolute',\n insetStart: space(6)\n});\n\nconst columnHeaderText = style({\n truncate: true,\n // Make it so the text doesn't completely disappear when column is resized to smallest width + both sort and chevron icon is rendered\n minWidth: fontRelative(16),\n flexGrow: 0,\n flexShrink: 1,\n flexBasis: 'auto'\n});\n\nconst chevronIcon = style({\n rotate: 90,\n marginStart: 'text-to-visual',\n minWidth: fontRelative(16),\n flexShrink: 0,\n '--iconPrimary': {\n type: 'fill',\n value: 'currentColor'\n }\n});\n\nconst nubbin = style({\n position: 'absolute',\n top: 0,\n insetStart: space(-1),\n size: fontRelative(16),\n fill: {\n default: lightDark('informative-900', 'informative-700'), // --spectrum-informative-background-color-default, can't use `informative` because that won't be the background color value\n forcedColors: 'Highlight'\n },\n '--iconPrimary': {\n type: 'fill',\n value: {\n default: 'white',\n forcedColors: 'HighlightText'\n }\n }\n});\n\ninterface ResizableColumnContentProps extends Pick<ColumnRenderProps, 'allowsSorting' | 'sort' | 'sortDirection' | 'startResize'>, Pick<ColumnProps, 'align' | 'children'> {}\n\nfunction ResizableColumnContents(props: ResizableColumnContentProps) {\n let {allowsSorting, sortDirection, sort, startResize, children, align} = props;\n let {setIsInResizeMode, isInResizeMode} = useContext(InternalTableContext);\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2');\n const onMenuSelect = (key) => {\n switch (key) {\n case 'sort-asc':\n sort('ascending');\n break;\n case 'sort-desc':\n sort('descending');\n break;\n case 'resize':\n setIsInResizeMode?.(true);\n startResize();\n break;\n }\n };\n\n let items = useMemo(() => {\n let options = [\n {\n label: stringFormatter.format('table.resizeColumn'),\n id: 'resize'\n }\n ];\n if (allowsSorting) {\n options = [\n {\n label: stringFormatter.format('table.sortAscending'),\n id: 'sort-asc'\n },\n {\n label: stringFormatter.format('table.sortDescending'),\n id: 'sort-desc'\n },\n ...options\n ];\n }\n return options;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allowsSorting]);\n\n let buttonAlignment = 'start';\n let menuAlign = 'start' as 'start' | 'end';\n if (align === 'center') {\n buttonAlignment = 'center';\n } else if (align === 'end') {\n buttonAlignment = 'end';\n menuAlign = 'end';\n }\n\n return (\n <>\n <MenuTrigger align={menuAlign}>\n <Button className={(renderProps) => resizableMenuButtonWrapper({...renderProps, align: buttonAlignment})}>\n {allowsSorting && (\n <Provider\n values={[\n [IconContext, {\n styles: sortIcon({isButton: true})\n }]\n ]}>\n {sortDirection != null && (\n sortDirection === 'ascending' ? <SortUpArrow /> : <SortDownArrow />\n )}\n </Provider>\n )}\n <div className={columnHeaderText}>\n {children}\n </div>\n <Chevron size=\"M\" className={chevronIcon} />\n </Button>\n <Menu onAction={onMenuSelect} items={items} styles={style({minWidth: 128})}>\n {(item) => <MenuItem>{item?.label}</MenuItem>}\n </Menu>\n </MenuTrigger>\n <div data-react-aria-prevent-focus=\"true\">\n <ColumnResizer data-react-aria-prevent-focus=\"true\" className={({resizableDirection, isResizing}) => resizerHandleContainer({resizableDirection, isResizing, isInResizeMode})}>\n {({isFocusVisible, isResizing}) => (\n <>\n <ResizerIndicator isInResizeMode={isInResizeMode} isFocusVisible={isFocusVisible} isResizing={isResizing} />\n {(isFocusVisible || isInResizeMode) && isResizing && <div className={nubbin}><Nubbin /></div>}\n </>\n )}\n </ColumnResizer>\n </div>\n </>\n );\n}\n\nfunction ResizerIndicator({isFocusVisible, isResizing, isInResizeMode}) {\n return (\n <div className={resizerHandle({isFocusVisible, isInResizeMode, isResizing})} />\n );\n}\n\nconst tableHeader = style({\n height: 'full',\n width: 'full',\n backgroundColor: 'gray-75',\n // Attempt to prevent 1px area where you can see scrolled cell content between the table outline and the table header\n marginTop: '[-1px]',\n '--resizerDisplay': {\n type: 'display',\n value: {\n default: 'none',\n isHovered: 'block'\n }\n }\n});\n\nconst selectAllCheckbox = style({\n marginStart: 16 // table-edge-to-content, same between mobile and desktop\n});\n\nconst selectAllCheckboxColumn = style({\n padding: 0,\n height: 'full',\n boxSizing: 'border-box',\n outlineStyle: 'none',\n position: 'relative',\n alignContent: 'center',\n borderColor: {\n default: 'gray-300',\n forcedColors: 'ButtonBorder'\n },\n borderXWidth: 0,\n borderTopWidth: {\n default: 0,\n isQuiet: 1\n },\n borderBottomWidth: 1,\n borderStyle: 'solid',\n backgroundColor: 'gray-75'\n});\n\nexport interface TableHeaderProps<T> extends Omit<RACTableHeaderProps<T>, 'style' | 'className' | 'dependencies' | 'onHoverChange' | 'onHoverStart' | 'onHoverEnd'> {}\n\n/**\n * A header within a `<Table>`, containing the table columns.\n */\nexport const TableHeader = /*#__PURE__*/ (forwardRef as forwardRefType)(function TableHeader<T extends object>({columns, children}: TableHeaderProps<T>, ref: DOMRef<HTMLDivElement>) {\n let scale = useScale();\n let {selectionBehavior, selectionMode} = useTableOptions();\n let {isQuiet} = useContext(InternalTableContext);\n let domRef = useDOMRef(ref);\n\n return (\n <RACTableHeader\n // @ts-ignore\n ref={domRef}\n className={tableHeader}>\n {/* Add extra columns for selection. */}\n {selectionBehavior === 'toggle' && (\n // Also isSticky prop is applied just for the layout, will decide what the RAC api should be later\n // @ts-ignore\n <RACColumn isSticky width={scale === 'medium' ? 40 : 52} minWidth={scale === 'medium' ? 40 : 52} className={selectAllCheckboxColumn({isQuiet})}>\n {({isFocusVisible}) => (\n <>\n {selectionMode === 'single' &&\n <>\n {isFocusVisible && <CellFocusRing />}\n <VisuallyHiddenSelectAllLabel />\n </>\n }\n {selectionMode === 'multiple' &&\n <Checkbox isEmphasized styles={selectAllCheckbox} slot=\"selection\" />\n }\n </>\n )}\n </RACColumn>\n )}\n <Collection items={columns}>\n {children}\n </Collection>\n </RACTableHeader>\n );\n});\n\nfunction VisuallyHiddenSelectAllLabel() {\n let checkboxProps = useSlottedContext(RACCheckboxContext, 'selection');\n\n return (\n <VisuallyHidden>{checkboxProps?.['aria-label']}</VisuallyHidden>\n );\n}\n\nconst commonCellStyles = {\n borderColor: 'transparent',\n borderBottomWidth: 1,\n borderTopWidth: 0,\n borderXWidth: 0,\n borderStyle: 'solid',\n position: 'relative',\n color: {\n default: 'gray-800',\n forcedColors: 'ButtonText'\n },\n outlineStyle: 'none',\n paddingX: 16 // table-edge-to-content\n} as const;\n\nconst cell = style<CellRenderProps & S2TableProps & {isDivider: boolean}>({\n ...commonCellStyles,\n color: 'neutral',\n paddingY: centerPadding(),\n minHeight: {\n default: 40,\n density: {\n compact: 32,\n spacious: 48\n }\n },\n boxSizing: 'border-box',\n height: 'full',\n width: 'full',\n fontSize: 'control',\n alignItems: 'center',\n display: 'flex',\n borderStyle: {\n default: 'none',\n isDivider: 'solid'\n },\n borderEndWidth: {\n default: 0,\n isDivider: 1\n },\n borderColor: {\n default: 'gray-300',\n forcedColors: 'ButtonBorder'\n }\n});\n\nconst stickyCell = {\n backgroundColor: 'gray-25'\n} as const;\n\nconst checkboxCellStyle = style({\n ...commonCellStyles,\n ...stickyCell,\n paddingStart: 16,\n alignContent: 'center',\n height: '[calc(100% - 1px)]',\n borderBottomWidth: 0,\n backgroundColor: '--rowBackgroundColor'\n});\n\nconst cellContent = style({\n truncate: true,\n whiteSpace: {\n default: 'nowrap',\n overflowMode: {\n wrap: 'normal'\n }\n },\n textAlign: {\n align: {\n start: 'start',\n center: 'center',\n end: 'end'\n }\n },\n width: 'full',\n isolation: 'isolate',\n padding: {\n default: 4,\n isSticky: 0\n },\n margin: {\n default: -4,\n isSticky: 0\n },\n backgroundColor: {\n default: 'transparent',\n isSticky: '--rowBackgroundColor'\n }\n});\n\nexport interface CellProps extends RACCellProps, Pick<ColumnProps, 'align' | 'showDivider'> {\n /** @private */\n isSticky?: boolean,\n /** The content to render as the cell children. */\n children: ReactNode\n}\n\n/**\n * A cell within a table row.\n */\nexport const Cell = forwardRef(function Cell(props: CellProps, ref: DOMRef<HTMLDivElement>) {\n let {children, isSticky, showDivider = false, align, textValue, ...otherProps} = props;\n let domRef = useDOMRef(ref);\n let tableVisualOptions = useContext(InternalTableContext);\n textValue ||= typeof children === 'string' ? children : undefined;\n\n return (\n <RACCell\n ref={domRef}\n // Also isSticky prop is applied just for the layout, will decide what the RAC api should be later\n // @ts-ignore\n isSticky={isSticky}\n className={renderProps => cell({\n ...renderProps,\n ...tableVisualOptions,\n isDivider: showDivider\n })}\n textValue={textValue}\n {...otherProps}>\n {({isFocusVisible}) => (\n <>\n {isFocusVisible && <CellFocusRing />}\n <span className={cellContent({...tableVisualOptions, isSticky, align: align || 'start'})}>{children}</span>\n </>\n )}\n </RACCell>\n );\n});\n\n// Use color-mix instead of transparency so sticky cells work correctly.\nconst selectedBackground = lightDark(colorMix('gray-25', 'informative-900', 10), colorMix('gray-25', 'informative-700', 10));\nconst selectedActiveBackground = lightDark(colorMix('gray-25', 'informative-900', 15), colorMix('gray-25', 'informative-700', 15));\nconst rowBackgroundColor = {\n default: {\n default: 'gray-25',\n isQuiet: '--s2-container-bg'\n },\n isFocusVisibleWithin: colorMix('gray-25', 'gray-900', 7), // table-row-hover-color\n isHovered: colorMix('gray-25', 'gray-900', 7), // table-row-hover-color\n isPressed: colorMix('gray-25', 'gray-900', 10), // table-row-hover-color\n isSelected: {\n default: selectedBackground, // table-selected-row-background-color, opacity /10\n isFocusVisibleWithin: selectedActiveBackground, // table-selected-row-background-color, opacity /15\n isHovered: selectedActiveBackground, // table-selected-row-background-color, opacity /15\n isPressed: selectedActiveBackground // table-selected-row-background-color, opacity /15\n },\n forcedColors: {\n default: 'Background'\n }\n} as const;\n\nconst row = style<RowRenderProps & S2TableProps>({\n height: 'full',\n position: 'relative',\n boxSizing: 'border-box',\n backgroundColor: '--rowBackgroundColor',\n '--rowBackgroundColor': {\n type: 'backgroundColor',\n value: rowBackgroundColor\n },\n '--rowFocusIndicatorColor': {\n type: 'outlineColor',\n value: {\n default: 'focus-ring',\n forcedColors: 'Highlight'\n }\n },\n // TODO: outline here is to emulate v3 forcedColors experience but runs into the same problem where the sticky column covers the outline\n // This doesn't quite work because it gets cut off by the checkbox cell background masking element, figure out another way. Could shrink the checkbox cell's content even more\n // and offset it by margin top but that messes up the checkbox centering a bit\n // outlineWidth: {\n // forcedColors: {\n // isFocusVisible: 2\n // }\n // },\n // outlineOffset: {\n // forcedColors: {\n // isFocusVisible: -1\n // }\n // },\n // outlineColor: {\n // forcedColors: {\n // isFocusVisible: 'ButtonBorder'\n // }\n // },\n // outlineStyle: {\n // default: 'none',\n // forcedColors: {\n // isFocusVisible: 'solid'\n // }\n // },\n outlineStyle: 'none',\n borderTopWidth: 0,\n borderBottomWidth: 1,\n borderStartWidth: 0,\n borderEndWidth: 0,\n borderStyle: 'solid',\n borderColor: {\n default: 'gray-300',\n forcedColors: 'ButtonBorder'\n },\n forcedColorAdjust: 'none'\n});\n\nexport interface RowProps<T> extends Pick<RACRowProps<T>, 'id' | 'columns' | 'children' | 'textValue'> {}\n\n/**\n * A row within a `<Table>`.\n */\nexport const Row = /*#__PURE__*/ (forwardRef as forwardRefType)(function Row<T extends object>({id, columns, children, ...otherProps}: RowProps<T>, ref: DOMRef<HTMLDivElement>) {\n let {selectionBehavior, selectionMode} = useTableOptions();\n let tableVisualOptions = useContext(InternalTableContext);\n let domRef = useDOMRef(ref);\n\n return (\n <RACRow\n // @ts-ignore\n ref={domRef}\n id={id}\n className={renderProps => row({\n ...renderProps,\n ...tableVisualOptions\n }) + (renderProps.isFocusVisible && ' ' + raw('&:before { content: \"\"; display: inline-block; position: sticky; inset-inline-start: 0; width: 3px; height: 100%; margin-inline-end: -3px; margin-block-end: 1px; z-index: 3; background-color: var(--rowFocusIndicatorColor)'))}\n {...otherProps}>\n {selectionMode !== 'none' && selectionBehavior === 'toggle' && (\n <Cell isSticky className={checkboxCellStyle}>\n <Checkbox isEmphasized slot=\"selection\" />\n </Cell>\n )}\n <Collection items={columns}>\n {children}\n </Collection>\n </RACRow>\n );\n});\n"],"names":[],"version":3,"file":"TableView.cjs.map"}
1
+ {"mappings":"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","sources":["packages/@react-spectrum/s2/src/TableView.tsx"],"sourcesContent":["/*\n * Copyright 2024 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n Button,\n CellRenderProps,\n Collection,\n ColumnRenderProps,\n ColumnResizer,\n ContextValue,\n Key,\n Provider,\n Cell as RACCell,\n CellProps as RACCellProps,\n CheckboxContext as RACCheckboxContext,\n Column as RACColumn,\n ColumnProps as RACColumnProps,\n Row as RACRow,\n RowProps as RACRowProps,\n Table as RACTable,\n TableBody as RACTableBody,\n TableBodyProps as RACTableBodyProps,\n TableHeader as RACTableHeader,\n TableHeaderProps as RACTableHeaderProps,\n TableProps as RACTableProps,\n Rect,\n ResizableTableContainer,\n RowRenderProps,\n TableBodyRenderProps,\n TableLayout,\n TableRenderProps,\n UNSTABLE_TableLoadingIndicator,\n useSlottedContext,\n useTableOptions,\n Virtualizer\n} from 'react-aria-components';\nimport {centerPadding, getAllowedOverrides, StylesPropWithHeight, UnsafeStyles} from './style-utils' with {type: 'macro'};\nimport {Checkbox} from './Checkbox';\nimport Chevron from '../ui-icons/Chevron';\nimport {colorMix, focusRing, fontRelative, lightDark, space, style} from '../style' with {type: 'macro'};\nimport {ColumnSize} from '@react-types/table';\nimport {DOMRef, DOMRefValue, forwardRefType, LoadingState, Node} from '@react-types/shared';\nimport {GridNode} from '@react-types/grid';\nimport {IconContext} from './Icon';\n// @ts-ignore\nimport intlMessages from '../intl/*.json';\nimport {LayoutNode} from '@react-stately/layout';\nimport {Menu, MenuItem, MenuSection, MenuTrigger} from './Menu';\nimport {mergeStyles} from '../style/runtime';\nimport Nubbin from '../ui-icons/S2_MoveHorizontalTableWidget.svg';\nimport {ProgressCircle} from './ProgressCircle';\nimport {raw} from '../style/style-macro' with {type: 'macro'};\nimport React, {createContext, forwardRef, ReactElement, ReactNode, useCallback, useContext, useMemo, useRef, useState} from 'react';\nimport SortDownArrow from '../s2wf-icons/S2_Icon_SortDown_20_N.svg';\nimport SortUpArrow from '../s2wf-icons/S2_Icon_SortUp_20_N.svg';\nimport {useActionBarContainer} from './ActionBar';\nimport {useDOMRef} from '@react-spectrum/utils';\nimport {useLoadMore} from '@react-aria/utils';\nimport {useLocalizedStringFormatter} from '@react-aria/i18n';\nimport {useScale} from './utils';\nimport {useSpectrumContextProps} from './useSpectrumContextProps';\nimport {VisuallyHidden} from 'react-aria';\n\ninterface S2TableProps {\n /** Whether the Table should be displayed with a quiet style. */\n isQuiet?: boolean,\n /**\n * Sets the amount of vertical padding within each cell.\n * @default 'regular'\n */\n density?: 'compact' | 'spacious' | 'regular',\n /**\n * Sets the overflow behavior for the cell contents.\n * @default 'truncate'\n */\n overflowMode?: 'wrap' | 'truncate',\n // TODO: will we contine with onAction or rename to onRowAction like it is in RAC?\n /** Handler that is called when a user performs an action on a row. */\n onAction?: (key: Key) => void,\n /**\n * Handler that is called when a user starts a column resize.\n */\n onResizeStart?: (widths: Map<Key, ColumnSize>) => void,\n /**\n * Handler that is called when a user performs a column resize.\n * Can be used with the width property on columns to put the column widths into\n * a controlled state.\n */\n onResize?: (widths: Map<Key, ColumnSize>) => void,\n /**\n * Handler that is called after a user performs a column resize.\n * Can be used to store the widths of columns for another future session.\n */\n onResizeEnd?: (widths: Map<Key, ColumnSize>) => void,\n /** The current loading state of the table. */\n loadingState?: LoadingState,\n /** Handler that is called when more items should be loaded, e.g. while scrolling near the bottom. */\n onLoadMore?: () => any,\n /** Provides the ActionBar to display when rows are selected in the TableView. */\n renderActionBar?: (selectedKeys: 'all' | Set<Key>) => ReactElement\n}\n\n// TODO: Note that loadMore and loadingState are now on the Table instead of on the TableBody\nexport interface TableViewProps extends Omit<RACTableProps, 'style' | 'disabledBehavior' | 'className' | 'onRowAction' | 'selectionBehavior' | 'onScroll' | 'onCellAction' | 'dragAndDropHooks'>, UnsafeStyles, S2TableProps {\n /** Spectrum-defined styles, returned by the `style()` macro. */\n styles?: StylesPropWithHeight\n}\n\nlet InternalTableContext = createContext<TableViewProps & {layout?: S2TableLayout<unknown>, setIsInResizeMode?:(val: boolean) => void, isInResizeMode?: boolean}>({});\n\nconst tableWrapper = style({\n minHeight: 0,\n minWidth: 0,\n display: 'flex',\n isolation: 'isolate',\n disableTapHighlight: true,\n position: 'relative',\n // Clip ActionBar animation.\n overflow: 'clip'\n});\n\nconst table = style<TableRenderProps & S2TableProps & {isCheckboxSelection?: boolean}>({\n width: 'full',\n userSelect: 'none',\n minHeight: 0,\n minWidth: 0,\n fontFamily: 'sans',\n fontWeight: 'normal',\n overflow: 'auto',\n backgroundColor: {\n default: 'gray-25',\n isQuiet: 'transparent',\n forcedColors: 'Background'\n },\n borderColor: 'gray-300',\n borderStyle: 'solid',\n borderWidth: {\n default: 1,\n isQuiet: 0\n },\n ...focusRing(),\n outlineOffset: -1, // Cover the border\n borderRadius: {\n default: '[6px]',\n isQuiet: 'none'\n },\n // Multiple browser bugs from scrollIntoView and scrollPadding:\n // Bug: Table doesn't scroll items into view perfectly in Chrome\n // https://issues.chromium.org/issues/365913982\n // Bug: Table scrolls to the left when navigating up/down through the checkboxes when body is scrolled to the right.\n // https://issues.chromium.org/issues/40067778\n // https://bugs.webkit.org/show_bug.cgi?id=272799\n // Base reproduction: https://codepen.io/lfdanlu/pen/zYVVGPW\n scrollPaddingTop: 32,\n scrollPaddingStart: {\n isCheckboxSelection: 40\n }\n}, getAllowedOverrides({height: true}));\n\n// component-height-100\nconst DEFAULT_HEADER_HEIGHT = {\n medium: 32,\n large: 40\n};\n\nconst ROW_HEIGHTS = {\n compact: {\n medium: 32, // table-row-height-medium-compact (aka component-height-100)\n large: 40\n },\n regular: {\n medium: 40, // table-row-height-medium-regular\n large: 50\n },\n spacious: {\n medium: 48, // table-row-height-medium-spacious\n large: 60\n }\n};\n\nexport class S2TableLayout<T> extends TableLayout<T> {\n protected isStickyColumn(node: GridNode<T>): boolean {\n return node.props.isSticky;\n }\n\n protected buildCollection(): LayoutNode[] {\n let [header, body] = super.buildCollection();\n let {children, layoutInfo} = body;\n // TableLayout's buildCollection always sets the body width to the max width between the header width, but\n // we want the body to be sticky and only as wide as the table so it is always in view if loading/empty\n if (children?.length === 0) {\n layoutInfo.rect.width = this.virtualizer!.visibleRect.width - 80;\n }\n\n return [\n header,\n body\n ];\n }\n\n protected buildLoader(node: Node<T>, x: number, y: number): LayoutNode {\n let layoutNode = super.buildLoader(node, x, y);\n let {layoutInfo} = layoutNode;\n layoutInfo.allowOverflow = true;\n layoutInfo.rect.width = this.virtualizer!.visibleRect.width;\n layoutInfo.isSticky = true;\n return layoutNode;\n }\n\n // y is the height of the headers\n protected buildBody(y: number): LayoutNode {\n let layoutNode = super.buildBody(y);\n let {children, layoutInfo} = layoutNode;\n // Needs overflow for sticky loader\n layoutInfo.allowOverflow = true;\n // If loading or empty, we'll want the body to be sticky and centered\n if (children?.length === 0) {\n layoutInfo.rect = new Rect(40, 40, this.virtualizer!.visibleRect.width - 80, this.virtualizer!.visibleRect.height - 80);\n layoutInfo.isSticky = true;\n }\n\n return {...layoutNode, layoutInfo};\n }\n\n protected buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let layoutNode = super.buildRow(node, x, y);\n layoutNode.layoutInfo.allowOverflow = true;\n // Needs overflow for sticky selection/drag cells\n return layoutNode;\n }\n\n protected buildTableHeader(): LayoutNode {\n let layoutNode = super.buildTableHeader();\n // Needs overflow for sticky selection/drag column\n layoutNode.layoutInfo.allowOverflow = true;\n return layoutNode;\n }\n\n protected buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let layoutNode = super.buildColumn(node, x, y);\n // Needs overflow for the resize handle\n layoutNode.layoutInfo.allowOverflow = true;\n return layoutNode;\n }\n}\n\nexport const TableContext = createContext<ContextValue<Partial<TableViewProps>, DOMRefValue<HTMLDivElement>>>(null);\n\n/**\n * Tables are containers for displaying information. They allow users to quickly scan, sort, compare, and take action on large amounts of data.\n */\nexport const TableView = forwardRef(function TableView(props: TableViewProps, ref: DOMRef<HTMLDivElement>) {\n [props, ref] = useSpectrumContextProps(props, ref, TableContext);\n let {\n UNSAFE_style,\n UNSAFE_className,\n isQuiet = false,\n density = 'regular',\n overflowMode = 'truncate',\n styles,\n loadingState,\n onLoadMore,\n onResize: propsOnResize,\n onResizeStart: propsOnResizeStart,\n onResizeEnd: propsOnResizeEnd,\n onAction,\n ...otherProps\n } = props;\n\n let domRef = useDOMRef(ref);\n let scale = useScale();\n\n // Starts when the user selects resize from the menu, ends when resizing ends\n // used to control the visibility of the resizer Nubbin\n let [isInResizeMode, setIsInResizeMode] = useState(false);\n let onResizeStart = useCallback((widths) => {\n propsOnResizeStart?.(widths);\n }, [propsOnResizeStart]);\n let onResizeEnd = useCallback((widths) => {\n setIsInResizeMode(false);\n propsOnResizeEnd?.(widths);\n }, [propsOnResizeEnd, setIsInResizeMode]);\n\n let context = useMemo(() => ({\n isQuiet,\n density,\n overflowMode,\n loadingState,\n isInResizeMode,\n setIsInResizeMode\n }), [isQuiet, density, overflowMode, loadingState, isInResizeMode, setIsInResizeMode]);\n\n let isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n let scrollRef = useRef<HTMLElement | null>(null);\n let memoedLoadMoreProps = useMemo(() => ({\n isLoading: isLoading,\n onLoadMore\n }), [isLoading, onLoadMore]);\n useLoadMore(memoedLoadMoreProps, scrollRef);\n let isCheckboxSelection = props.selectionMode === 'multiple' || props.selectionMode === 'single';\n\n let {selectedKeys, onSelectionChange, actionBar, actionBarHeight} = useActionBarContainer({...props, scrollRef});\n\n return (\n <ResizableTableContainer\n // TODO: perhaps this ref should be attached to the RACTable but it expects a table type ref which isn't true in the virtualized case\n ref={domRef}\n onResize={propsOnResize}\n onResizeEnd={onResizeEnd}\n onResizeStart={onResizeStart}\n className={(UNSAFE_className || '') + mergeStyles(tableWrapper, styles)}\n style={UNSAFE_style}>\n <Virtualizer\n layout={S2TableLayout}\n layoutOptions={{\n rowHeight: overflowMode === 'wrap'\n ? undefined\n : ROW_HEIGHTS[density][scale],\n estimatedRowHeight: overflowMode === 'wrap'\n ? ROW_HEIGHTS[density][scale]\n : undefined,\n // No need for estimated headingHeight since the headers aren't affected by overflow mode: wrap\n headingHeight: DEFAULT_HEADER_HEIGHT[scale],\n loaderHeight: 60\n }}>\n <InternalTableContext.Provider value={context}>\n <RACTable\n ref={scrollRef as any}\n style={{\n // Fix webkit bug where scrollbars appear above the checkboxes/other table elements\n WebkitTransform: 'translateZ(0)',\n // Add padding at the bottom when the action bar is visible so users can scroll to the last items.\n // Also add scroll padding so navigating with the keyboard doesn't go behind the action bar.\n paddingBottom: actionBarHeight > 0 ? actionBarHeight + 8 : 0,\n scrollPaddingBottom: actionBarHeight > 0 ? actionBarHeight + 8 : 0\n }}\n className={renderProps => table({\n ...renderProps,\n isCheckboxSelection,\n isQuiet\n })}\n selectionBehavior=\"toggle\"\n onRowAction={onAction}\n {...otherProps}\n selectedKeys={selectedKeys}\n defaultSelectedKeys={undefined}\n onSelectionChange={onSelectionChange} />\n </InternalTableContext.Provider>\n </Virtualizer>\n {actionBar}\n </ResizableTableContainer>\n );\n});\n\nconst centeredWrapper = style({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 'full',\n height: 'full'\n});\n\nexport interface TableBodyProps<T> extends Omit<RACTableBodyProps<T>, 'style' | 'className' | 'dependencies'> {}\n\n/**\n * The body of a `<Table>`, containing the table rows.\n */\nexport const TableBody = /*#__PURE__*/ (forwardRef as forwardRefType)(function TableBody<T extends object>(props: TableBodyProps<T>, ref: DOMRef<HTMLDivElement>) {\n let {items, renderEmptyState, children} = props;\n let domRef = useDOMRef(ref);\n let {loadingState} = useContext(InternalTableContext);\n let emptyRender;\n let renderer = children;\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2');\n let loadMoreSpinner = (\n <UNSTABLE_TableLoadingIndicator className={style({height: 'full', width: 'full'})}>\n <div className={centeredWrapper}>\n <ProgressCircle\n isIndeterminate\n aria-label={stringFormatter.format('table.loadingMore')} />\n </div>\n </UNSTABLE_TableLoadingIndicator>\n );\n\n // If the user is rendering their rows in dynamic fashion, wrap their render function in Collection so we can inject\n // the loader. Otherwise it is a static renderer and thus we can simply add the table loader after\n // TODO: this assumes that the user isn't providing their children in some wrapper though and/or isn't doing a map of children\n // (though I guess they wouldn't provide items then so the check for this is still valid in the latter case)...\n if (typeof children === 'function' && items) {\n renderer = (\n <>\n <Collection items={items}>\n {children}\n </Collection>\n {loadingState === 'loadingMore' && loadMoreSpinner}\n </>\n );\n } else {\n renderer = (\n <>\n {children}\n {loadingState === 'loadingMore' && loadMoreSpinner}\n </>\n );\n }\n\n if (renderEmptyState != null && loadingState !== 'loading') {\n emptyRender = (props: TableBodyRenderProps) => (\n <div className={centeredWrapper}>\n {renderEmptyState(props)}\n </div>\n );\n } else if (loadingState === 'loading') {\n emptyRender = () => (\n <div className={centeredWrapper}>\n <ProgressCircle\n isIndeterminate\n aria-label={stringFormatter.format('table.loading')} />\n </div>\n );\n }\n\n return (\n <RACTableBody\n // @ts-ignore\n ref={domRef}\n className={style({height: 'full'})}\n {...props}\n renderEmptyState={emptyRender}\n dependencies={[loadingState]}>\n {renderer}\n </RACTableBody>\n );\n});\n\nconst cellFocus = {\n outlineStyle: {\n default: 'none',\n isFocusVisible: 'solid'\n },\n outlineOffset: -2,\n outlineWidth: 2,\n outlineColor: 'focus-ring',\n borderRadius: '[6px]'\n} as const;\n\nfunction CellFocusRing() {\n return <div role=\"presentation\" className={style({...cellFocus, position: 'absolute', inset: 0})({isFocusVisible: true})} />;\n}\n\nconst columnStyles = style({\n height: '[inherit]',\n boxSizing: 'border-box',\n color: {\n default: 'neutral',\n forcedColors: 'ButtonText'\n },\n paddingX: {\n default: 16,\n isMenu: 0\n },\n textAlign: {\n align: {\n start: 'start',\n center: 'center',\n end: 'end'\n }\n },\n outlineStyle: 'none',\n position: 'relative',\n fontSize: 'control',\n fontFamily: 'sans',\n fontWeight: 'bold',\n display: 'flex',\n borderColor: {\n default: 'gray-300',\n forcedColors: 'ButtonBorder'\n },\n borderTopWidth: {\n default: 0,\n isQuiet: 1\n },\n borderBottomWidth: 1,\n borderStartWidth: 0,\n borderEndWidth: {\n default: 0,\n isMenu: 1\n },\n borderStyle: 'solid',\n forcedColorAdjust: 'none'\n});\n\nexport interface ColumnProps extends RACColumnProps {\n /** Whether the column should render a divider between it and the next column. */\n showDivider?: boolean,\n /** Whether the column allows resizing. */\n allowsResizing?: boolean,\n /**\n * The alignment of the column's contents relative to its allotted width.\n * @default 'start'\n */\n align?: 'start' | 'center' | 'end',\n /** The content to render as the column header. */\n children: ReactNode,\n /** Menu fragment to be rendered inside the column header's menu. */\n UNSTABLE_menuItems?: ReactNode\n}\n\n/**\n * A column within a `<Table>`.\n */\nexport const Column = forwardRef(function Column(props: ColumnProps, ref: DOMRef<HTMLDivElement>) {\n let {isQuiet} = useContext(InternalTableContext);\n let {allowsResizing, children, align = 'start'} = props;\n let domRef = useDOMRef(ref);\n let isMenu = allowsResizing || !!props.UNSTABLE_menuItems;\n\n\n return (\n <RACColumn {...props} ref={domRef} style={{borderInlineEndColor: 'transparent'}} className={renderProps => columnStyles({...renderProps, isMenu, align, isQuiet})}>\n {({allowsSorting, sortDirection, isFocusVisible, sort, startResize}) => (\n <>\n {/* Note this is mainly for column's without a dropdown menu. If there is a dropdown menu, the button is styled to have a focus ring for simplicity\n (no need to juggle showing this focus ring if focus is on the menu button and not if it is on the resizer) */}\n {/* Separate absolutely positioned element because appyling the ring on the column directly via outline means the ring's required borderRadius will cause the bottom gray border to curve as well */}\n {isFocusVisible && <CellFocusRing />}\n {isMenu ?\n (\n <ColumnWithMenu isColumnResizable={allowsResizing} menuItems={props.UNSTABLE_menuItems} allowsSorting={allowsSorting} sortDirection={sortDirection} sort={sort} startResize={startResize} align={align}>\n {children}\n </ColumnWithMenu>\n ) : (\n <ColumnContents allowsSorting={allowsSorting} sortDirection={sortDirection}>\n {children}\n </ColumnContents>\n )\n }\n </>\n )}\n </RACColumn>\n );\n});\n\nconst columnContentWrapper = style({\n minWidth: 0,\n display: 'flex',\n alignItems: 'center',\n width: 'full'\n});\n\nconst sortIcon = style({\n size: fontRelative(16),\n flexShrink: 0,\n marginEnd: {\n default: 8,\n isButton: 'text-to-visual'\n },\n verticalAlign: {\n default: 'bottom',\n isButton: 0\n },\n '--iconPrimary': {\n type: 'fill',\n value: 'currentColor'\n }\n});\n\ninterface ColumnContentProps extends Pick<ColumnRenderProps, 'allowsSorting' | 'sortDirection'>, Pick<ColumnProps, 'children'> {}\n\nfunction ColumnContents(props: ColumnContentProps) {\n let {allowsSorting, sortDirection, children} = props;\n\n return (\n <div className={columnContentWrapper}>\n {allowsSorting && (\n <Provider\n values={[\n [IconContext, {\n styles: sortIcon({})\n }]\n ]}>\n {sortDirection != null && (\n sortDirection === 'ascending' ? <SortUpArrow /> : <SortDownArrow />\n )}\n </Provider>\n )}\n <span className={style({truncate: true, width: 'full'})}>\n {children}\n </span>\n </div>\n );\n}\n\nconst resizableMenuButtonWrapper = style({\n ...cellFocus,\n color: 'gray-800', // body-color\n width: 'full',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: {\n align: {\n default: 'start',\n center: 'center',\n end: 'end'\n }\n },\n // TODO: when align: end, the dropdown arrow is misaligned with the text, not sure how best to make the svg be flush with the end of the button other than modifying the\n // paddingEnd\n paddingX: 16,\n backgroundColor: 'transparent',\n borderStyle: 'none',\n fontSize: 'control',\n fontFamily: 'sans',\n fontWeight: 'bold'\n});\n\nconst resizerHandleContainer = style({\n display: {\n default: '--resizerDisplay',\n isResizing: 'block',\n isInResizeMode: 'block'\n },\n width: 12,\n height: 'full',\n position: 'absolute',\n top: 0,\n insetEnd: space(-6),\n cursor: {\n default: 'none',\n resizableDirection: {\n 'left': 'e-resize',\n 'right': 'w-resize',\n 'both': 'ew-resize'\n }\n }\n});\n\nconst resizerHandle = style({\n backgroundColor: {\n default: 'gray-300',\n isFocusVisible: lightDark('informative-900', 'informative-700'), // --spectrum-informative-background-color-default, can't use `informative` because that will use the focusVisible version\n isResizing: lightDark('informative-900', 'informative-700'),\n forcedColors: {\n default: 'Background',\n isHovered: 'ButtonBorder',\n isFocusVisible: 'Highlight',\n isResizing: 'Highlight'\n }\n },\n height: {\n default: 'full',\n isResizing: 'screen'\n },\n width: {\n default: 1,\n isResizing: 2\n },\n position: 'absolute',\n insetStart: space(6)\n});\n\nconst columnHeaderText = style({\n truncate: true,\n // Make it so the text doesn't completely disappear when column is resized to smallest width + both sort and chevron icon is rendered\n minWidth: fontRelative(16),\n flexGrow: 0,\n flexShrink: 1,\n flexBasis: 'auto'\n});\n\nconst chevronIcon = style({\n rotate: 90,\n marginStart: 'text-to-visual',\n minWidth: fontRelative(16),\n flexShrink: 0,\n '--iconPrimary': {\n type: 'fill',\n value: 'currentColor'\n }\n});\n\nconst nubbin = style({\n position: 'absolute',\n top: 0,\n insetStart: space(-1),\n size: fontRelative(16),\n fill: {\n default: lightDark('informative-900', 'informative-700'), // --spectrum-informative-background-color-default, can't use `informative` because that won't be the background color value\n forcedColors: 'Highlight'\n },\n '--iconPrimary': {\n type: 'fill',\n value: {\n default: 'white',\n forcedColors: 'HighlightText'\n }\n }\n});\n\ninterface ColumnWithMenuProps extends Pick<ColumnRenderProps, 'allowsSorting' | 'sort' | 'sortDirection' | 'startResize'>, Pick<ColumnProps, 'align' | 'children'> {\n isColumnResizable?: boolean,\n menuItems?: ReactNode\n}\n\nfunction ColumnWithMenu(props: ColumnWithMenuProps) {\n let {allowsSorting, sortDirection, sort, startResize, children, align, isColumnResizable, menuItems} = props;\n let {setIsInResizeMode, isInResizeMode} = useContext(InternalTableContext);\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2');\n const onMenuSelect = (key) => {\n switch (key) {\n case 'sort-asc':\n sort('ascending');\n break;\n case 'sort-desc':\n sort('descending');\n break;\n case 'resize':\n setIsInResizeMode?.(true);\n startResize();\n break;\n }\n };\n\n let items = useMemo(() => {\n let options: Array<{label: string, id: string}> = [];\n if (isColumnResizable) {\n options = [{\n label: stringFormatter.format('table.resizeColumn'),\n id: 'resize'\n }];\n }\n if (allowsSorting) {\n options = [\n {\n label: stringFormatter.format('table.sortAscending'),\n id: 'sort-asc'\n },\n {\n label: stringFormatter.format('table.sortDescending'),\n id: 'sort-desc'\n },\n ...options\n ];\n }\n return options;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allowsSorting, isColumnResizable]);\n\n let buttonAlignment = 'start';\n let menuAlign = 'start' as 'start' | 'end';\n if (align === 'center') {\n buttonAlignment = 'center';\n } else if (align === 'end') {\n buttonAlignment = 'end';\n menuAlign = 'end';\n }\n\n return (\n <>\n <MenuTrigger align={menuAlign}>\n <Button className={(renderProps) => resizableMenuButtonWrapper({...renderProps, align: buttonAlignment})}>\n {allowsSorting && (\n <Provider\n values={[\n [IconContext, {\n styles: sortIcon({isButton: true})\n }]\n ]}>\n {sortDirection != null && (\n sortDirection === 'ascending' ? <SortUpArrow /> : <SortDownArrow />\n )}\n </Provider>\n )}\n <div className={columnHeaderText}>\n {children}\n </div>\n <Chevron size=\"M\" className={chevronIcon} />\n </Button>\n <Menu onAction={onMenuSelect} styles={style({minWidth: 128})}>\n {items.length > 0 && (\n <MenuSection aria-label={stringFormatter.format('table.standardColumnMenu')}>\n <Collection items={items}>\n {(item) => <MenuItem>{item?.label}</MenuItem>}\n </Collection>\n </MenuSection>\n )}\n {menuItems}\n </Menu>\n </MenuTrigger>\n {isColumnResizable && (\n <div data-react-aria-prevent-focus=\"true\">\n <ColumnResizer data-react-aria-prevent-focus=\"true\" className={({resizableDirection, isResizing}) => resizerHandleContainer({resizableDirection, isResizing, isInResizeMode})}>\n {({isFocusVisible, isResizing}) => (\n <>\n <ResizerIndicator isInResizeMode={isInResizeMode} isFocusVisible={isFocusVisible} isResizing={isResizing} />\n {(isFocusVisible || isInResizeMode) && isResizing && <div className={nubbin}><Nubbin /></div>}\n </>\n )}\n </ColumnResizer>\n </div>\n )}\n </>\n );\n}\n\nfunction ResizerIndicator({isFocusVisible, isResizing, isInResizeMode}) {\n return (\n <div className={resizerHandle({isFocusVisible, isInResizeMode, isResizing})} />\n );\n}\n\nconst tableHeader = style({\n height: 'full',\n width: 'full',\n backgroundColor: 'gray-75',\n // Attempt to prevent 1px area where you can see scrolled cell content between the table outline and the table header\n marginTop: '[-1px]',\n '--resizerDisplay': {\n type: 'display',\n value: {\n default: 'none',\n isHovered: 'block'\n }\n }\n});\n\nconst selectAllCheckbox = style({\n marginStart: 16 // table-edge-to-content, same between mobile and desktop\n});\n\nconst selectAllCheckboxColumn = style({\n padding: 0,\n height: 'full',\n boxSizing: 'border-box',\n outlineStyle: 'none',\n position: 'relative',\n alignContent: 'center',\n borderColor: {\n default: 'gray-300',\n forcedColors: 'ButtonBorder'\n },\n borderXWidth: 0,\n borderTopWidth: {\n default: 0,\n isQuiet: 1\n },\n borderBottomWidth: 1,\n borderStyle: 'solid',\n backgroundColor: 'gray-75'\n});\n\nexport interface TableHeaderProps<T> extends Omit<RACTableHeaderProps<T>, 'style' | 'className' | 'dependencies' | 'onHoverChange' | 'onHoverStart' | 'onHoverEnd'> {}\n\n/**\n * A header within a `<Table>`, containing the table columns.\n */\nexport const TableHeader = /*#__PURE__*/ (forwardRef as forwardRefType)(function TableHeader<T extends object>({columns, children}: TableHeaderProps<T>, ref: DOMRef<HTMLDivElement>) {\n let scale = useScale();\n let {selectionBehavior, selectionMode} = useTableOptions();\n let {isQuiet} = useContext(InternalTableContext);\n let domRef = useDOMRef(ref);\n\n return (\n <RACTableHeader\n // @ts-ignore\n ref={domRef}\n className={tableHeader}>\n {/* Add extra columns for selection. */}\n {selectionBehavior === 'toggle' && (\n // Also isSticky prop is applied just for the layout, will decide what the RAC api should be later\n // @ts-ignore\n <RACColumn isSticky width={scale === 'medium' ? 40 : 52} minWidth={scale === 'medium' ? 40 : 52} className={selectAllCheckboxColumn({isQuiet})}>\n {({isFocusVisible}) => (\n <>\n {selectionMode === 'single' &&\n <>\n {isFocusVisible && <CellFocusRing />}\n <VisuallyHiddenSelectAllLabel />\n </>\n }\n {selectionMode === 'multiple' &&\n <Checkbox isEmphasized styles={selectAllCheckbox} slot=\"selection\" />\n }\n </>\n )}\n </RACColumn>\n )}\n <Collection items={columns}>\n {children}\n </Collection>\n </RACTableHeader>\n );\n});\n\nfunction VisuallyHiddenSelectAllLabel() {\n let checkboxProps = useSlottedContext(RACCheckboxContext, 'selection');\n\n return (\n <VisuallyHidden>{checkboxProps?.['aria-label']}</VisuallyHidden>\n );\n}\n\nconst commonCellStyles = {\n borderColor: 'transparent',\n borderBottomWidth: 1,\n borderTopWidth: 0,\n borderXWidth: 0,\n borderStyle: 'solid',\n position: 'relative',\n color: {\n default: 'gray-800',\n forcedColors: 'ButtonText'\n },\n outlineStyle: 'none',\n paddingX: 16 // table-edge-to-content\n} as const;\n\nconst cell = style<CellRenderProps & S2TableProps & {isDivider: boolean}>({\n ...commonCellStyles,\n color: 'neutral',\n paddingY: centerPadding(),\n minHeight: {\n default: 40,\n density: {\n compact: 32,\n spacious: 48\n }\n },\n boxSizing: 'border-box',\n height: 'full',\n width: 'full',\n fontSize: 'control',\n alignItems: 'center',\n display: 'flex',\n borderStyle: {\n default: 'none',\n isDivider: 'solid'\n },\n borderEndWidth: {\n default: 0,\n isDivider: 1\n },\n borderColor: {\n default: 'gray-300',\n forcedColors: 'ButtonBorder'\n }\n});\n\nconst stickyCell = {\n backgroundColor: 'gray-25'\n} as const;\n\nconst checkboxCellStyle = style({\n ...commonCellStyles,\n ...stickyCell,\n paddingStart: 16,\n alignContent: 'center',\n height: '[calc(100% - 1px)]',\n borderBottomWidth: 0,\n backgroundColor: '--rowBackgroundColor'\n});\n\nconst cellContent = style({\n truncate: true,\n whiteSpace: {\n default: 'nowrap',\n overflowMode: {\n wrap: 'normal'\n }\n },\n textAlign: {\n align: {\n start: 'start',\n center: 'center',\n end: 'end'\n }\n },\n width: 'full',\n isolation: 'isolate',\n padding: {\n default: 4,\n isSticky: 0\n },\n margin: {\n default: -4,\n isSticky: 0\n },\n backgroundColor: {\n default: 'transparent',\n isSticky: '--rowBackgroundColor'\n }\n});\n\nexport interface CellProps extends RACCellProps, Pick<ColumnProps, 'align' | 'showDivider'> {\n /** @private */\n isSticky?: boolean,\n /** The content to render as the cell children. */\n children: ReactNode\n}\n\n/**\n * A cell within a table row.\n */\nexport const Cell = forwardRef(function Cell(props: CellProps, ref: DOMRef<HTMLDivElement>) {\n let {children, isSticky, showDivider = false, align, textValue, ...otherProps} = props;\n let domRef = useDOMRef(ref);\n let tableVisualOptions = useContext(InternalTableContext);\n textValue ||= typeof children === 'string' ? children : undefined;\n\n return (\n <RACCell\n ref={domRef}\n // Also isSticky prop is applied just for the layout, will decide what the RAC api should be later\n // @ts-ignore\n isSticky={isSticky}\n className={renderProps => cell({\n ...renderProps,\n ...tableVisualOptions,\n isDivider: showDivider\n })}\n textValue={textValue}\n {...otherProps}>\n {({isFocusVisible}) => (\n <>\n {isFocusVisible && <CellFocusRing />}\n <span className={cellContent({...tableVisualOptions, isSticky, align: align || 'start'})}>{children}</span>\n </>\n )}\n </RACCell>\n );\n});\n\n// Use color-mix instead of transparency so sticky cells work correctly.\nconst selectedBackground = lightDark(colorMix('gray-25', 'informative-900', 10), colorMix('gray-25', 'informative-700', 10));\nconst selectedActiveBackground = lightDark(colorMix('gray-25', 'informative-900', 15), colorMix('gray-25', 'informative-700', 15));\nconst rowBackgroundColor = {\n default: {\n default: 'gray-25',\n isQuiet: '--s2-container-bg'\n },\n isFocusVisibleWithin: colorMix('gray-25', 'gray-900', 7), // table-row-hover-color\n isHovered: colorMix('gray-25', 'gray-900', 7), // table-row-hover-color\n isPressed: colorMix('gray-25', 'gray-900', 10), // table-row-hover-color\n isSelected: {\n default: selectedBackground, // table-selected-row-background-color, opacity /10\n isFocusVisibleWithin: selectedActiveBackground, // table-selected-row-background-color, opacity /15\n isHovered: selectedActiveBackground, // table-selected-row-background-color, opacity /15\n isPressed: selectedActiveBackground // table-selected-row-background-color, opacity /15\n },\n forcedColors: {\n default: 'Background'\n }\n} as const;\n\nconst row = style<RowRenderProps & S2TableProps>({\n height: 'full',\n position: 'relative',\n boxSizing: 'border-box',\n backgroundColor: '--rowBackgroundColor',\n '--rowBackgroundColor': {\n type: 'backgroundColor',\n value: rowBackgroundColor\n },\n '--rowFocusIndicatorColor': {\n type: 'outlineColor',\n value: {\n default: 'focus-ring',\n forcedColors: 'Highlight'\n }\n },\n // TODO: outline here is to emulate v3 forcedColors experience but runs into the same problem where the sticky column covers the outline\n // This doesn't quite work because it gets cut off by the checkbox cell background masking element, figure out another way. Could shrink the checkbox cell's content even more\n // and offset it by margin top but that messes up the checkbox centering a bit\n // outlineWidth: {\n // forcedColors: {\n // isFocusVisible: 2\n // }\n // },\n // outlineOffset: {\n // forcedColors: {\n // isFocusVisible: -1\n // }\n // },\n // outlineColor: {\n // forcedColors: {\n // isFocusVisible: 'ButtonBorder'\n // }\n // },\n // outlineStyle: {\n // default: 'none',\n // forcedColors: {\n // isFocusVisible: 'solid'\n // }\n // },\n outlineStyle: 'none',\n borderTopWidth: 0,\n borderBottomWidth: 1,\n borderStartWidth: 0,\n borderEndWidth: 0,\n borderStyle: 'solid',\n borderColor: {\n default: 'gray-300',\n forcedColors: 'ButtonBorder'\n },\n forcedColorAdjust: 'none'\n});\n\nexport interface RowProps<T> extends Pick<RACRowProps<T>, 'id' | 'columns' | 'children' | 'textValue'> {}\n\n/**\n * A row within a `<Table>`.\n */\nexport const Row = /*#__PURE__*/ (forwardRef as forwardRefType)(function Row<T extends object>({id, columns, children, ...otherProps}: RowProps<T>, ref: DOMRef<HTMLDivElement>) {\n let {selectionBehavior, selectionMode} = useTableOptions();\n let tableVisualOptions = useContext(InternalTableContext);\n let domRef = useDOMRef(ref);\n\n return (\n <RACRow\n // @ts-ignore\n ref={domRef}\n id={id}\n className={renderProps => row({\n ...renderProps,\n ...tableVisualOptions\n }) + (renderProps.isFocusVisible && ' ' + raw('&:before { content: \"\"; display: inline-block; position: sticky; inset-inline-start: 0; width: 3px; height: 100%; margin-inline-end: -3px; margin-block-end: 1px; z-index: 3; background-color: var(--rowFocusIndicatorColor)'))}\n {...otherProps}>\n {selectionMode !== 'none' && selectionBehavior === 'toggle' && (\n <Cell isSticky className={checkboxCellStyle}>\n <Checkbox isEmphasized slot=\"selection\" />\n </Cell>\n )}\n <Collection items={columns}>\n {children}\n </Collection>\n </RACRow>\n );\n});\n"],"names":[],"version":3,"file":"TableView.cjs.map"}