{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEM,MAAM,0DAAc,CAAA,GAAA,uBAAS,EAAE,SAAS,YAA8B,KAAkC,EAAE,GAA2B;IAC1I,QAAQ,CAAA,GAAA,0CAAe,EAAE;IACzB,QAAQ,CAAA,GAAA,sCAAW,EAAE,OAAO;IAE5B,IAAI,gBACF,YAAY,WACZ,OAAO,eACP,WAAW,cACX,UAAU,eACV,cAAc,uBACd,OAAO,eACP,WAAW,gBACX,eAAe,kBACf,QAAQ,uBACR,mBAAmB,eACnB,WAAW,EACX,GAAG,YACJ,GAAG;IAEJ,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,aAAa,CAAA,GAAA,mBAAK,EAAkB;IACxC,IAAI,QAAQ,CAAA,GAAA,4CAAW,EAAE;QAAC,GAAG,KAAK;QAAE,0BAA0B;IAAI;IAClE,IAAI,oBAAC,gBAAgB,EAAC,GAAG,CAAA,GAAA,+DAAa,EAAE,OAAO,OAAO;IACtD,IAAI,aAAa,gBAAgB;IACjC,IAAI,gBAAgB;sBAAC;oBAAc;iBAAY;IAAO;IACtD,IAAI,cAAC,UAAU,EAAC,GAAG,CAAA,GAAA,uCAAY,EAAE;IAEjC,8FAA8F;IAC9F,IAAI,oBAAoB,CAAA,GAAA,oBAAM,EAAE,IAAM;eAAI,MAAM,UAAU;SAAC,CAAC,KAAK,CAAC,CAAA,OAAQ,OAAO,KAAK,QAAQ,KAAK,WAAW;QAAC,MAAM,UAAU;KAAC;IAChI,IAAI,CAAC,gBAAC,YAAY,kBAAE,cAAc,eAAE,WAAW,EAAC,EAAE,gBAAgB,GAAG,CAAA,GAAA,yDAAa,EAAE;QAClF,cAAc,MAAM,UAAU,CAAC,IAAI;QACnC,gBAAgB,wBAAwB,UAAU;QAClD,aAAa;IACf;IAEA,IAAI,gBAAgB,MAAM,gBAAgB,CAAC,aAAa;IACxD,IAAI,iBAAiB,CAAA,GAAA,wBAAU,EAAE;QAC/B,IAAI,iBAAiB,QACnB;QAGF,IAAI,gBAAgB,cAAc,kBAAkB,QAClD,yFAAyF;QACzF;QAGF,IAAI,sBAAsB,CAAC;YACzB,IAAI,OAAO,OAAO,IAAI,WAAW,OAAO,EAAE;gBACxC,IAAI,YAAY,MAAM,IAAI,CAAC,OAAO,OAAO,CAAC,QAAQ;gBAClD,IAAI,gBAAgB,gBAAgB,eAAe,WAAW,OAAO,CAAC,qBAAqB,GAAG,KAAK,GAAG,WAAW,OAAO,CAAC,qBAAqB,GAAG,MAAM;gBAEvJ,IAAI,gBAAgB,eAAe,MAAM,UAAU,CAAC,IAAI;gBACxD,IAAI,iBAAiB;gBACrB,IAAI,kBAAkB;gBAEtB,IAAI,eAAe;oBACjB,IAAI,OAAO,UAAU,GAAG;oBACxB,IAAI,MACF,kBAAkB,gBAAgB,eAC9B,iCAAW,MAAM,OAAO,QACxB,kCAAY,MAAM,OAAO;gBAEjC;gBAEA,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,UAAU,OAAO,GAAI;oBACzC,kBAAkB,gBAAgB,eAC9B,iCAAW,MAAM,MAAM,GAAG,MAAM,UAAU,MAAM,GAAG,KACnD,kCAAY,MAAM,MAAM,GAAG,MAAM,UAAU,MAAM,GAAG;oBACxD,IAAI,KAAK,KAAK,CAAC,mBAAmB,KAAK,KAAK,CAAC,gBAC3C;yBAEA;gBAEJ;gBAEA,8FAA8F;gBAC9F,4DAA4D;gBAC5D,IAAI,kBAAkB,UAAU,kBAAkB,MAAM,UAAU,CAAC,IAAI,EACrE,OAAO;gBAGT,OAAO;YACT;YACA,OAAO;QACT;QAEA,gBAAgB;YACd,IAAI,iBAAiB,wBAAwB,UAAU;YAEvD,4BAA4B;YAC5B,MAAM;gBACJ,cAAc,MAAM,UAAU,CAAC,IAAI;gCACnC;gBACA,aAAa;YACf;YAEA,kDAAkD;YAClD,IAAI,kBAAkB,oBAAoB,MAAM,UAAU,CAAC,IAAI;YAC/D,IAAI,cAAc,kBAAkB,MAAM,UAAU,CAAC,IAAI,IAAI,kBAAkB;YAE/E,8FAA8F;YAC9F,+FAA+F;YAC/F,IAAI,kBAAkB,MAAM,UAAU,CAAC,IAAI,IAAI,wBAAwB,cAAc,mBAAmB;gBACtG,MAAM;oBACJ,cAAc,MAAM,UAAU,CAAC,IAAI;oBACnC,gBAAgB;oBAChB,aAAa;gBACf;gBAEA,kBAAkB,oBAAoB,MAAM,UAAU,CAAC,IAAI;gBAC3D,cAAc,kBAAkB,MAAM,UAAU,CAAC,IAAI,IAAI,kBAAkB;gBAC3E,iBAAiB;YACnB;YAEA,MAAM;gBACJ,cAAc;gCACd;6BACA;YACF;YAEA,8DAA8D;YAC9D,kDAAkD;YAClD,IAAI,aACF,MAAM;gBACJ,cAAc,oBAAoB;gCAClC;gBACA,aAAa;YACf;QAEJ;IACF,GAAG;QAAC;QAAQ,MAAM,UAAU;QAAE;QAAiB;QAAc;QAAe;QAAqB;QAAmB;KAAY;IAEhI,gGAAgG;IAChG,8EAA8E;IAC9E,IAAI,YAAY,CAAA,GAAA,oBAAM,EAAE,IAAO,CAAA;YAC7B,IAAI,WAAU;gBACZ,OAAO,WAAW,OAAO,EAAE;YAC7B;QACF,CAAA,GAAI;QAAC;KAAW;IAChB,CAAA,GAAA,+DAAgB,EAAE;QAAC,KAAK,iBAAiB,SAAS,YAAY;QAAW,UAAU;IAAc;IACjG,CAAA,GAAA,2DAAc,EAAE,gBAAgB;QAAC;QAAgB,MAAM,UAAU;KAAC;IAElE,IAAI,WAAW;WAAI,MAAM,UAAU;KAAC;IACpC,IAAI,WAAgC;IACpC,IAAI,YAAY,CAAC;IAEjB,qFAAqF;IACrF,+DAA+D;IAC/D,IAAI,iBAAiB,cAAc,iBAAiB,GAAG;QACrD,YAAY,CAAA,GAAA,6CAAa,EAAE,OAAO;YAAC,WAAW;QAAI;QAClD,mBAAmB,CAAC;IACtB;IAEA,IAAI,iBAAiB,cAAc,eAAe,MAAM,UAAU,CAAC,IAAI,EAAE;QACvE,IAAI,eAAe,SAAS,KAAK,CAAC;QAClC,WAAW,SAAS,KAAK,CAAC,GAAG;QAC7B,yBACE,0DAAC;YACE,GAAG,SAAS;YACb,OAAO;YACP,UAAU;YACV,YAAY;YACZ,cAAc;YACd,aAAa;YACb,OAAO;YACP,aAAa;YACb,gBAAgB;YAChB,YAAY,iBAAiB;YAC7B,aAAa;;IAEnB;IAEA,IAAI,QAAQ;QACV,GAAG,WAAW,KAAK;QACnB,sDAAsD;QACtD,WAAW,cAAc,SAAS;IACpC;IAEA,qBACE,0DAAC,CAAA,GAAA,qCAAS,uBACR,0DAAC;QAAK,GAAG,UAAU;QAAE,OAAO;QAAO,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG,kBAAkB,WAAW,SAAS;QAAG,KAAK;qBAC7G,0DAAC;QACE,GAAG,gBAAgB;QACpB,KAAK;QACL,WACE,CAAA,GAAA,oCAAS,EACP,CAAA,GAAA,mDAAK,GACL,YACA,wBACA;YACE,+BAA+B;YAC/B,kCAAkC;YAClC,iCAAiC,YAAY;YAC7C,mCAAmC,eAAe,CAAC;YACnD,0CAA0C,iBAAiB;QAC7D,GACA,WAAW,gBAAgB;qBAG/B,0DAAC,CAAA,GAAA,kCAAO,GAAM,eACX,SAAS,GAAG,CAAC,CAAC,qBACb,0DAAC;YACC,KAAK,KAAK,GAAG;YACb,UAAU;YACV,YAAY;YACZ,cAAc;YACd,aAAa;YACb,MAAM;YACN,OAAO;YACP,gBAAgB;YAChB,aAAa;aAEhB;AAMb;AAaA,SAAS,sCAAmB,QAAC,IAAI,SAAE,KAAK,cAAE,UAAU,gBAAE,YAAY,eAAE,WAAW,YAAE,QAAQ,kBAAE,cAAc,eAAE,WAAW,EAA0B;IAC9I,IAAI,MAAM,CAAA,GAAA,mBAAK,EAAE;IACjB,IAAI,eAAC,WAAW,EAAC,GAAG,CAAA,GAAA,uEAAiB,EAAE;QAAC,KAAK,KAAK,GAAG;IAAA,GAAG;IACxD,aAAa,cAAc,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG;IAC1D,IAAI,aAAa,MAAM,gBAAgB,CAAC,UAAU,CAAC,KAAK,GAAG;IAC3D,IAAI,cAAC,UAAU,aAAE,SAAS,EAAC,GAAG,CAAA,GAAA,iCAAO,EAAE;oBAAC;IAAU;IAClD,IAAI,WAAW,CAAA,GAAA,6CAAa,EAAE,KAAK,KAAK;IAExC,IAAI,YAAY,CAAC,YACf,cAAc,CAAA,GAAA,qCAAS,EAAE,aAAa;QACpC,SAAS,IAAM,SAAS,KAAK,GAAG;IAClC;IAGF,wEAAwE;IACxE,uDAAuD;IACvD,IAAI,SAAS,CAAA,GAAA,2BAAI;IACjB,IAAI,CAAC,aAAa,eAAe,GAAG,CAAA,GAAA,qBAAO,EAA6B;IACxE,CAAA,GAAA,2DAAc,EAAE;QACd,IAAI,gBACF,eAAe,SAAS,cAAc,CAAC,SAAS;IAEpD,GAAG;QAAC;QAAgB,KAAK,QAAQ;QAAE;KAAO;IAE1C,IAAI,uBAGD,0DAAC,CAAA,GAAA,gEAAa,GAAM,CAAA,GAAA,qCAAS,EAAE,aAAa,YAAY,yBACvD,0DAAC,CAAA,GAAA,oCAAS,uBACR,0DAAC,CAAA,GAAA,sCAAW;QACV,OAAO;YACL,MAAM;gBACJ,IAAI,iBAAiB,SAAS;gBAC9B,UAAU;YACZ;QACF;qBACA,0DAAC,CAAA,GAAA,sCAAW;QACV,KAAK;QACL,uBAAuB;QACvB,gBAAgB;QAChB,kBACE,CAAA,GAAA,oCAAS,EACP,CAAA,GAAA,mDAAK,GACL,6BACA;YACE,eAAe;YACf,cAAc;YACd,uCAAuC;YACvC,yCAAyC;QAC3C,GACA,CAAA,GAAA,oCAAS,EACP,CAAA,GAAA,mDAAW,GACX;YACE,qCAAqC;YACrC,eAAe;QACjB;QAIN,YAAY;QACZ,aAAa;QACb,cAAY,IAAI,CAAC,aAAa;QAC9B,mBAAiB,IAAI,CAAC,aAAa,IAAI,QAAQ,iBAAiB,SAAS;OACxE,KAAK,QAAQ;IAOxB,IAAI,kBAAkB,aACpB,uBACE,0DAAC,CAAA,GAAA,wCAAa;QAAE,WAAW,gBAAgB,aAAa,QAAQ;OAC7D,sBACD,0DAAC,CAAA,GAAA,iCAAM,SAAG;IAKhB,IAAI,KAAK,OAAO,EACd,SAAS,KAAK,OAAO,CAAC;IAGxB,OAAO;AACT;AAeA,SAAS,sCAAmB,SAAC,KAAK,cAAE,UAAU,gBAAE,YAAY,eAAE,WAAW,SAAE,KAAK,YAAE,QAAQ,eAAE,WAAW,kBAAE,cAAc,cAAE,UAAU,eAAE,WAAW,EAAE,GAAG,YAAoC;IACvL,0EAA0E;IAC1E,6EAA6E;IAC7E,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC,GAAG;IACtB,IAAI,eAAC,WAAW,EAAC,GAAG,CAAA,GAAA,uEAAiB,EAAE;aAAC;IAAG,GAAG;IAC9C,IAAI,kBAAkB,CAAA,GAAA,uEAA0B,EAAE,CAAA,GAAA,mDAAW,GAAG;IAEhE,kEAAkE;IAClE,OAAO,YAAY,OAAO;IAC1B,OAAO,YAAY,IAAI;IACvB,OAAO,WAAW,CAAC,eAAe;IAElC,IAAI,cAAC,UAAU,aAAE,SAAS,EAAC,GAAG,CAAA,GAAA,iCAAO,EAAE;oBAAC;IAAU;IAElD,uEAAuE;IACvE,IAAI,YAAY,UAAU,CAAC,aAAa,IAAK,CAAA,UAAU,CAAC,kBAAkB,GAAG,YAAY,gBAAgB,MAAM,CAAC,OAAM;IACtH,IAAI,iBAAiB,UAAU,CAAC,kBAAkB;IAClD,IAAI,SAAS,CAAA,GAAA,2BAAI;IACjB,IAAI,KAAK,CAAA,GAAA,2BAAI;IAEb,uDAAuD;IACvD,IAAI,MAAM,gBAAgB,CAAC,aAAa,KAAK,QAC3C,cAAc;IAGhB,IAAI,WAAW;IAEf,uEAAuE;IACvE,IAAI,aAAa,MAAM,gBAAgB,CAAC,aAAa,KAAK,UAAU,CAAC,MAAM,gBAAgB,CAAC,OAAO;IAEnG,gIAAgI;IAChI,IAAI,CAAC,eAAe,MAAM,gBAAgB,CAAC,aAAa,KAAK,YAAY,MAAM,gBAAgB,CAAC,sBAAsB,IAAI,MAAM,gBAAgB,CAAC,gBAAgB,IAAI,MAAM;QACzK,IAAI,eAAe,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,gBAAgB,CAAC,gBAAgB;QACnF,IAAI,cAAc;YAChB,cAAc,aAAa,QAAQ;YACnC,IAAI,OAAO,gBAAgB,UACzB,4BAAc,0DAAC,CAAA,GAAA,8BAAG,SAAG;YAEvB,WAAW,CAAC,CAAC;YACb,iBAAiB,GAAG,kBAAkB,GAAG,CAAC,EAAE,QAAQ;QACtD;IACF;IAEA,IAAI,aACF,wDAAwD;IACxD,4BACE,oIACE,0DAAC,CAAA,GAAA,iEAAgB;QAAE,kBAAkB,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;sBACxD,0DAAC;QAAK,WAAW,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG,sCAAsC;YAAC,uCAAuC;QAAQ;OACvH;IAMT,qBAEG,0DAAC,CAAA,GAAA,qCAAU;QAAE,OAAO,aAAa,UAAU;QAAO,WAAW,gBAAgB,aAAa,QAAQ;qBACjG,0DAAC,CAAA,GAAA,sCAAW;QACV,OAAO;YACL,MAAM;gBACJ,IAAI,iBAAiB,SAAS;gBAC9B,UAAU;gBACV,kBAAkB,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;YACvC;QACF;qBACA,0DAAC,CAAA,GAAA,gEAAa,GAAM,CAAA,GAAA,qCAAS,EAAE,aAAa,2BAC1C,0DAAC,CAAA,GAAA,sCAAW;QACT,GAAG,UAAU;QACd,IAAI;QACJ,cAAY;QACZ,mBAAiB;QACjB,kBACE,CAAA,GAAA,oCAAS,EACP,CAAA,GAAA,mDAAK,GACL,6BACA,6BACA;YACE,cAAc;YACd,eAAe;QACjB,GACA,CAAA,GAAA,oCAAS,EACP,CAAA,GAAA,mDAAW,GACX;YACE,eAAe;YACf,qCAAqC;QACvC;QAIN,YAAY;QACZ,aAAa;OACZ,6BAAe,0DAAC,CAAA,GAAA,0DAAG,2BAI1B,0DAAC,CAAA,GAAA,8BAAG;QACF,OAAO;QACP,cAAc,MAAM,YAAY;QAChC,eAAe,MAAM,gBAAgB,CAAC,aAAa;QACnD,cAAc,MAAM,gBAAgB,CAAC,YAAY;QACjD,wBAAwB,MAAM,gBAAgB,CAAC,sBAAsB;QACrE,mBAAmB,CAAC,OAAS,MAAM,gBAAgB,CAAC,eAAe,CAAC;QACpE,UAAU;OACT,CAAA,qBAAQ,0DAAC,CAAA,GAAA,4BAAG;YAAE,WAAW,KAAK,SAAS;YAAG,GAAG,CAAA,GAAA,6CAAa,EAAE,KAAK,KAAK,CAAC;WAAG,KAAK,QAAQ;AAIhG;AAEA,SAAS,iCAAW,OAAoB,EAAE,gBAAyB,EAAE,iBAA0B;IAC7F,IAAI,QAAQ,OAAO,gBAAgB,CAAC;IACpC,OAAO,QAAQ,qBAAqB,GAAG,KAAK,GAAI,CAAA,mBAAmB,IAAI,+BAAS,MAAM,UAAU,CAAA,IAAM,CAAA,oBAAoB,IAAI,+BAAS,MAAM,WAAW,CAAA;AAC1J;AAGA,SAAS,kCAAY,OAAoB,EAAE,eAAwB,EAAE,kBAA2B;IAC9F,IAAI,QAAQ,OAAO,gBAAgB,CAAC;IACpC,OAAO,QAAQ,qBAAqB,GAAG,MAAM,GAAI,CAAA,kBAAkB,IAAI,+BAAS,MAAM,SAAS,CAAA,IAAM,CAAA,qBAAqB,IAAI,+BAAS,MAAM,YAAY,CAAA;AAC3J;AAEA,SAAS,+BAAS,KAAa;IAC7B,IAAI,SAAS,SAAS,OAAO;IAC7B,OAAO,MAAM,UAAU,IAAI;AAC7B","sources":["packages/@adobe/react-spectrum/src/actiongroup/ActionGroup.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 {ActionButton} from '../button/ActionButton';\n\nimport {AriaActionGroupProps, useActionGroup} from 'react-aria/private/actiongroup/useActionGroup';\nimport {AriaLabelingProps, DOMProps, DOMRef, Key, Node, StyleProps} from '@react-types/shared';\nimport buttonStyles from '@adobe/spectrum-css-temp/components/button/vars.css';\nimport ChevronDownMedium from '@spectrum-icons/ui/ChevronDownMedium';\nimport {classNames} from '../utils/classNames';\nimport {ClearSlots, SlotProvider, useSlotProps} from '../utils/Slots';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport intlMessages from '../../intl/actiongroup/*.json';\nimport {Item} from 'react-stately/Item';\nimport {ListState, useListState} from 'react-stately/useListState';\nimport {Menu} from '../menu/Menu';\nimport {MenuTrigger} from '../menu/MenuTrigger';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport More from '@spectrum-icons/workflow/More';\nimport {PressResponder} from 'react-aria/private/interactions/PressResponder';\n// @ts-ignore\nimport {Provider, useProviderProps} from '../provider/Provider';\nimport React, {forwardRef, ReactElement, ReactNode, useCallback, useMemo, useRef, useState} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/actiongroup/vars.css';\nimport {Text} from '../text/Text';\nimport {Tooltip} from '../tooltip/Tooltip';\nimport {TooltipTrigger} from '../tooltip/TooltipTrigger';\nimport {useActionGroupItem} from 'react-aria/private/actiongroup/useActionGroupItem';\nimport {useDOMRef} from '../utils/useDOMRef';\nimport {useHover} from 'react-aria/useHover';\nimport {useId} from 'react-aria/useId';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\nimport {useStyleProps} from '../utils/styleProps';\nimport {useValueEffect} from 'react-aria/private/utils/useValueEffect';\n\nexport interface SpectrumActionGroupProps<T> extends AriaActionGroupProps<T>, StyleProps {\n  /** Whether the ActionButtons should be displayed with a [emphasized style](https://spectrum.adobe.com/page/action-button/#Emphasis). */\n  isEmphasized?: boolean,\n  /**\n   * Sets the amount of space between buttons.\n   * @default 'regular'\n   */\n  density?: 'compact' | 'regular',\n  /** Whether the ActionButtons should be justified in their container. */\n  isJustified?: boolean,\n  /** Whether ActionButtons should use the [quiet style](https://spectrum.adobe.com/page/action-button/#Quiet). */\n  isQuiet?: boolean,\n  /** The static color style to apply. Useful when the ActionGroup appears over a color background. */\n  staticColor?: 'white' | 'black',\n  /**\n   * Defines the behavior of the ActionGroup when the buttons do not fit in the available space.\n   * When set to 'wrap', the items wrap to form a new line. When set to 'collapse', the items that\n   * do not fit are collapsed into a dropdown menu.\n   * @default 'wrap'\n   */\n  overflowMode?: 'wrap' | 'collapse',\n  /**\n   * Defines when the text within the buttons should be hidden and only the icon should be shown.\n   * When set to 'hide', the text is always shown in a tooltip. When set to 'collapse', the text is visible\n   * if space is available, and hidden when space is limited. The text is always visible when the item\n   * is collapsed into a menu.\n   * @default 'show'\n   */\n  buttonLabelBehavior?: 'show' | 'collapse' | 'hide',\n  /** The icon displayed in the dropdown menu button when a selectable ActionGroup is collapsed. */\n  summaryIcon?: ReactElement\n}\n\n/**\n * An ActionGroup is a grouping of ActionButtons that are related to one another.\n */\nexport const ActionGroup = forwardRef(function ActionGroup<T extends object>(props: SpectrumActionGroupProps<T>, ref: DOMRef<HTMLDivElement>) {\n  props = useProviderProps(props);\n  props = useSlotProps(props, 'actionGroup');\n\n  let {\n    isEmphasized,\n    density,\n    isJustified,\n    isDisabled,\n    orientation = 'horizontal',\n    isQuiet,\n    staticColor,\n    overflowMode = 'wrap',\n    onAction,\n    buttonLabelBehavior,\n    summaryIcon,\n    ...otherProps\n  } = props;\n\n  let domRef = useDOMRef(ref);\n  let wrapperRef = useRef<HTMLDivElement>(null);\n  let state = useListState({...props, suppressTextValueWarning: true});\n  let {actionGroupProps} = useActionGroup(props, state, domRef);\n  let isVertical = orientation === 'vertical';\n  let providerProps = {isEmphasized, isDisabled, isQuiet};\n  let {styleProps} = useStyleProps(props);\n\n  // Only hide button text if every item contains more than just plain text (we assume an icon).\n  let isIconCollapsible = useMemo(() => [...state.collection].every(item => typeof item.rendered !== 'string'), [state.collection]);\n  let [{visibleItems, hideButtonText, isMeasuring}, setVisibleItems] = useValueEffect({\n    visibleItems: state.collection.size,\n    hideButtonText: buttonLabelBehavior === 'hide' && isIconCollapsible,\n    isMeasuring: false\n  });\n\n  let selectionMode = state.selectionManager.selectionMode;\n  let updateOverflow = useCallback(() => {\n    if (overflowMode === 'wrap') {\n      return;\n    }\n\n    if (orientation === 'vertical' && selectionMode !== 'none') {\n      // Collapsing vertical action groups with selection is currently unsupported by Spectrum.\n      return;\n    }\n\n    let computeVisibleItems = (visibleItems: number) => {\n      if (domRef.current && wrapperRef.current) {\n        let listItems = Array.from(domRef.current.children) as HTMLLIElement[];\n        let containerSize = orientation === 'horizontal' ? wrapperRef.current.getBoundingClientRect().width : wrapperRef.current.getBoundingClientRect().height;\n\n        let isShowingMenu = visibleItems < state.collection.size;\n        let calculatedSize = 0;\n        let newVisibleItems = 0;\n\n        if (isShowingMenu) {\n          let item = listItems.pop();\n          if (item) {\n            calculatedSize += orientation === 'horizontal'\n              ? outerWidth(item, false, true)\n              : outerHeight(item, false, true);\n          }\n        }\n\n        for (let [i, item] of listItems.entries()) {\n          calculatedSize += orientation === 'horizontal'\n            ? outerWidth(item, i === 0, i === listItems.length - 1)\n            : outerHeight(item, i === 0, i === listItems.length - 1);\n          if (Math.round(calculatedSize) <= Math.round(containerSize)) {\n            newVisibleItems++;\n          } else {\n            break;\n          }\n        }\n\n        // If selection is enabled, and not all of the items fit, collapse all of them into a dropdown\n        // immediately rather than having some visible and some not.\n        if (selectionMode !== 'none' && newVisibleItems < state.collection.size) {\n          return 0;\n        }\n\n        return newVisibleItems;\n      }\n      return visibleItems;\n    };\n\n    setVisibleItems(function *() {\n      let hideButtonText = buttonLabelBehavior === 'hide' && isIconCollapsible;\n\n      // Update to show all items.\n      yield {\n        visibleItems: state.collection.size,\n        hideButtonText,\n        isMeasuring: true\n      };\n\n      // Measure, and update to show the items that fit.\n      let newVisibleItems = computeVisibleItems(state.collection.size);\n      let isMeasuring = newVisibleItems < state.collection.size && newVisibleItems > 0;\n\n      // If not all of the buttons fit, and buttonLabelBehavior is 'collapse', then first try hiding\n      // the button text and only showing icons. Only if that still doesn't fit collapse into a menu.\n      if (newVisibleItems < state.collection.size && buttonLabelBehavior === 'collapse' && isIconCollapsible) {\n        yield {\n          visibleItems: state.collection.size,\n          hideButtonText: true,\n          isMeasuring: true\n        };\n\n        newVisibleItems = computeVisibleItems(state.collection.size);\n        isMeasuring = newVisibleItems < state.collection.size && newVisibleItems > 0;\n        hideButtonText = true;\n      }\n\n      yield {\n        visibleItems: newVisibleItems,\n        hideButtonText,\n        isMeasuring\n      };\n\n      // If the number of items is less than the number of children,\n      // then update again to ensure that the menu fits.\n      if (isMeasuring) {\n        yield {\n          visibleItems: computeVisibleItems(newVisibleItems),\n          hideButtonText,\n          isMeasuring: false\n        };\n      }\n    });\n  }, [domRef, state.collection, setVisibleItems, overflowMode, selectionMode, buttonLabelBehavior, isIconCollapsible, orientation]);\n\n  // Watch the parent element for size changes. Watching only the action group itself may not work\n  // in all scenarios because it may not shrink when available space is reduced.\n  let parentRef = useMemo(() => ({\n    get current() {\n      return wrapperRef.current?.parentElement;\n    }\n  }), [wrapperRef]);\n  useResizeObserver({ref: overflowMode !== 'wrap' ? parentRef : undefined, onResize: updateOverflow});\n  useLayoutEffect(updateOverflow, [updateOverflow, state.collection]);\n\n  let children = [...state.collection];\n  let menuItem: ReactElement | null = null;\n  let menuProps = {};\n\n  // If there are no visible items, don't apply any props to the action group container\n  // and pass all aria labeling props through to the menu button.\n  if (overflowMode === 'collapse' && visibleItems === 0) {\n    menuProps = filterDOMProps(props, {labelable: true});\n    actionGroupProps = {};\n  }\n\n  if (overflowMode === 'collapse' && visibleItems < state.collection.size) {\n    let menuChildren = children.slice(visibleItems);\n    children = children.slice(0, visibleItems);\n    menuItem = (\n      <ActionGroupMenu\n        {...menuProps}\n        items={menuChildren}\n        onAction={onAction}\n        isDisabled={isDisabled}\n        isEmphasized={isEmphasized}\n        staticColor={staticColor}\n        state={state}\n        summaryIcon={summaryIcon}\n        hideButtonText={hideButtonText}\n        isOnlyItem={visibleItems === 0}\n        orientation={orientation} />\n    );\n  }\n\n  let style = {\n    ...styleProps.style,\n    // While measuring, take up as much space as possible.\n    flexBasis: isMeasuring ? '100%' : undefined\n  };\n\n  return (\n    <FocusScope>\n      <div {...styleProps} style={style} className={classNames(styles, 'flex-container', styleProps.className)} ref={wrapperRef}>\n        <div\n          {...actionGroupProps}\n          ref={domRef}\n          className={\n            classNames(\n              styles,\n              'flex-gap',\n              'spectrum-ActionGroup',\n              {\n                'spectrum-ActionGroup--quiet': isQuiet,\n                'spectrum-ActionGroup--vertical': isVertical,\n                'spectrum-ActionGroup--compact': density === 'compact',\n                'spectrum-ActionGroup--justified': isJustified && !isMeasuring,\n                'spectrum-ActionGroup--overflowCollapse': overflowMode === 'collapse'\n              },\n              otherProps.UNSAFE_className\n            )\n          }>\n          <Provider {...providerProps}>\n            {children.map((item) => (\n              <ActionGroupItem\n                key={item.key}\n                onAction={onAction}\n                isDisabled={isDisabled}\n                isEmphasized={isEmphasized}\n                staticColor={staticColor}\n                item={item}\n                state={state}\n                hideButtonText={hideButtonText}\n                orientation={orientation} />\n            ))}\n            {menuItem}\n          </Provider>\n        </div>\n      </div>\n    </FocusScope>\n  );\n}) as <T>(props: SpectrumActionGroupProps<T> & {ref?: DOMRef<HTMLDivElement>}) => ReactElement;\n\ninterface ActionGroupItemProps<T> extends DOMProps, StyleProps {\n  item: Node<T>,\n  state: ListState<T>,\n  isDisabled?: boolean,\n  isEmphasized?: boolean,\n  staticColor?: 'white' | 'black',\n  hideButtonText?: boolean,\n  orientation?: 'horizontal' | 'vertical',\n  onAction?: (key: Key) => void\n}\n\nfunction ActionGroupItem<T>({item, state, isDisabled, isEmphasized, staticColor, onAction, hideButtonText, orientation}: ActionGroupItemProps<T>) {\n  let ref = useRef(null);\n  let {buttonProps} = useActionGroupItem({key: item.key}, state);\n  isDisabled = isDisabled || state.disabledKeys.has(item.key);\n  let isSelected = state.selectionManager.isSelected(item.key);\n  let {hoverProps, isHovered} = useHover({isDisabled});\n  let domProps = filterDOMProps(item.props);\n\n  if (onAction && !isDisabled) {\n    buttonProps = mergeProps(buttonProps, {\n      onPress: () => onAction(item.key)\n    });\n  }\n\n  // If button text is hidden, we need to show it as a tooltip instead, so\n  // go find the text element in the DOM after rendering.\n  let textId = useId();\n  let [textContent, setTextContent] = useState<string | null | undefined>('');\n  useLayoutEffect(() => {\n    if (hideButtonText) {\n      setTextContent(document.getElementById(textId)?.textContent);\n    }\n  }, [hideButtonText, item.rendered, textId]);\n\n  let button = (\n    // Use a PressResponder to send DOM props through.\n    // ActionButton doesn't allow overriding the role by default.\n    (<PressResponder {...mergeProps(buttonProps, hoverProps, domProps)}>\n      <ClearSlots>\n        <SlotProvider\n          slots={{\n            text: {\n              id: hideButtonText ? textId : null,\n              isHidden: hideButtonText\n            }\n          }}>\n          <ActionButton\n            ref={ref}\n            // @ts-ignore (private)\n            hideButtonText={hideButtonText}\n            UNSAFE_className={\n              classNames(\n                styles,\n                'spectrum-ActionGroup-item',\n                {\n                  'is-selected': isSelected,\n                  'is-hovered': isHovered,\n                  'spectrum-ActionGroup-item--iconOnly': hideButtonText,\n                  'spectrum-ActionGroup-item--isDisabled': isDisabled\n                },\n                classNames(\n                  buttonStyles,\n                  {\n                    'spectrum-ActionButton--emphasized': isEmphasized,\n                    'is-selected': isSelected\n                  }\n                )\n              )\n            }\n            isDisabled={isDisabled}\n            staticColor={staticColor}\n            aria-label={item['aria-label']}\n            aria-labelledby={item['aria-label'] == null && hideButtonText ? textId : undefined}>\n            {item.rendered}\n          </ActionButton>\n        </SlotProvider>\n      </ClearSlots>\n    </PressResponder>)\n  );\n\n  if (hideButtonText && textContent) {\n    button = (\n      <TooltipTrigger placement={orientation === 'vertical' ? 'end' : 'top'}>\n        {button}\n        <Tooltip>{textContent}</Tooltip>\n      </TooltipTrigger>\n    );\n  }\n\n  if (item.wrapper) {\n    button = item.wrapper(button);\n  }\n\n  return button;\n}\n\ninterface ActionGroupMenuProps<T> extends AriaLabelingProps {\n  state: ListState<T>,\n  isDisabled?: boolean,\n  isEmphasized?: boolean,\n  staticColor?: 'white' | 'black',\n  items: Node<T>[],\n  hideButtonText?: boolean,\n  summaryIcon?: ReactNode,\n  isOnlyItem?: boolean,\n  orientation?: 'horizontal' | 'vertical',\n  onAction?: (key: Key) => void\n}\n\nfunction ActionGroupMenu<T>({state, isDisabled, isEmphasized, staticColor, items, onAction, summaryIcon, hideButtonText, isOnlyItem, orientation, ...otherProps}: ActionGroupMenuProps<T>) {\n  // Use the key of the first item within the menu as the key of the button.\n  // The key must actually exist in the collection for focus to work correctly.\n  let key = items[0].key;\n  let {buttonProps} = useActionGroupItem({key}, state);\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/actiongroup');\n\n  // The menu button shouldn't act like an actual action group item.\n  delete buttonProps.onPress;\n  delete buttonProps.role;\n  delete buttonProps['aria-checked'];\n\n  let {hoverProps, isHovered} = useHover({isDisabled});\n\n  // If no aria-label or aria-labelledby is given, provide a default one.\n  let ariaLabel = otherProps['aria-label'] || (otherProps['aria-labelledby'] ? undefined : stringFormatter.format('more'));\n  let ariaLabelledby = otherProps['aria-labelledby'];\n  let textId = useId();\n  let id = useId();\n\n  // Summary icon only applies when selection is enabled.\n  if (state.selectionManager.selectionMode === 'none') {\n    summaryIcon = null;\n  }\n\n  let iconOnly = false;\n\n  // If there is a selection, show the selected state on the menu button.\n  let isSelected = state.selectionManager.selectionMode !== 'none' && !state.selectionManager.isEmpty;\n\n  // If single selection and empty selection is not allowed, swap the contents of the button to the selected item (like a Picker).\n  if (!summaryIcon && state.selectionManager.selectionMode === 'single' && state.selectionManager.disallowEmptySelection && state.selectionManager.firstSelectedKey != null) {\n    let selectedItem = state.collection.getItem(state.selectionManager.firstSelectedKey);\n    if (selectedItem) {\n      summaryIcon = selectedItem.rendered;\n      if (typeof summaryIcon === 'string') {\n        summaryIcon = <Text>{summaryIcon}</Text>;\n      }\n      iconOnly = !!hideButtonText;\n      ariaLabelledby = `${ariaLabelledby ?? id} ${textId}`;\n    }\n  }\n\n  if (summaryIcon) {\n    // If there's a custom summary icon, also add a chevron.\n    summaryIcon = (\n      <>\n        <ChevronDownMedium UNSAFE_className={classNames(styles, 'spectrum-ActionGroup-menu-chevron')} />\n        <span className={classNames(styles, 'spectrum-ActionGroup-menu-contents', {'spectrum-ActionGroup-item--iconOnly': iconOnly})}>\n          {summaryIcon}\n        </span>\n      </>\n    );\n  }\n\n  return (\n    // Use a PressResponder to send DOM props through.\n    (<MenuTrigger align={isOnlyItem ? 'start' : 'end'} direction={orientation === 'vertical' ? 'end' : 'bottom'}>\n      <SlotProvider\n        slots={{\n          text: {\n            id: hideButtonText ? textId : null,\n            isHidden: hideButtonText,\n            UNSAFE_className: classNames(styles, 'spectrum-ActionGroup-menu-text')\n          }\n        }}>\n        <PressResponder {...mergeProps(buttonProps, hoverProps)}>\n          <ActionButton\n            {...otherProps}\n            id={id}\n            aria-label={ariaLabel}\n            aria-labelledby={ariaLabelledby}\n            UNSAFE_className={\n              classNames(\n                styles,\n                'spectrum-ActionGroup-item',\n                'spectrum-ActionGroup-menu',\n                {\n                  'is-hovered': isHovered,\n                  'is-selected': isSelected\n                },\n                classNames(\n                  buttonStyles,\n                  {\n                    'is-selected': isSelected,\n                    'spectrum-ActionButton--emphasized': isEmphasized\n                  }\n                )\n              )\n            }\n            isDisabled={isDisabled}\n            staticColor={staticColor}>\n            {summaryIcon || <More />}\n          </ActionButton>\n        </PressResponder>\n      </SlotProvider>\n      <Menu\n        items={items}\n        disabledKeys={state.disabledKeys}\n        selectionMode={state.selectionManager.selectionMode}\n        selectedKeys={state.selectionManager.selectedKeys}\n        disallowEmptySelection={state.selectionManager.disallowEmptySelection}\n        onSelectionChange={(keys) => state.selectionManager.setSelectedKeys(keys)}\n        onAction={onAction}>\n        {node => <Item textValue={node.textValue} {...filterDOMProps(node.props)}>{node.rendered}</Item>}\n      </Menu>\n    </MenuTrigger>)\n  );\n}\n\nfunction outerWidth(element: HTMLElement, ignoreLeftMargin: boolean, ignoreRightMargin: boolean) {\n  let style = window.getComputedStyle(element);\n  return element.getBoundingClientRect().width + (ignoreLeftMargin ? 0 : toNumber(style.marginLeft)) + (ignoreRightMargin ? 0 : toNumber(style.marginRight));\n}\n\n\nfunction outerHeight(element: HTMLElement, ignoreTopMargin: boolean, ignoreBottomMargin: boolean) {\n  let style = window.getComputedStyle(element);\n  return element.getBoundingClientRect().height + (ignoreTopMargin ? 0 : toNumber(style.marginTop)) + (ignoreBottomMargin ? 0 : toNumber(style.marginBottom));\n}\n\nfunction toNumber(value: string) {\n  let parsed = parseInt(value, 10);\n  return isNaN(parsed) ? 0 : parsed;\n}\n"],"names":[],"version":3,"file":"ActionGroup.cjs.map"}