{"version":3,"sources":["../src/components/TagPicker/TagPickerGroup/useTagPickerGroup.ts"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { useTagGroupBase_unstable } from '@fluentui/react-tags';\nimport { useTagPickerContext_unstable } from '@fluentui/react-tag-picker';\nimport { isHTMLElement, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { ArrowRight } from '@fluentui/keyboard-keys';\n\nimport type { TagPickerGroupProps, TagPickerGroupState } from './TagPickerGroup.types';\nimport { isLastFocusableTag, stringifyDataAttribute } from '../../../utils';\n\n/**\n * Returns the state for a headless TagPickerGroup.\n */\nexport const useTagPickerGroup = (props: TagPickerGroupProps, ref: React.Ref<HTMLDivElement>): TagPickerGroupState => {\n  const hasSelectedOptions = useTagPickerContext_unstable(ctx => ctx.selectedOptions.length > 0);\n  const hasOneSelectedOption = useTagPickerContext_unstable(ctx => ctx.selectedOptions.length === 1);\n  const triggerRef = useTagPickerContext_unstable(ctx => ctx.triggerRef);\n  const tagPickerGroupRef = useTagPickerContext_unstable(ctx => ctx.tagPickerGroupRef);\n  const selectOption = useTagPickerContext_unstable(ctx => ctx.selectOption);\n  const disabled = useTagPickerContext_unstable(ctx => ctx.disabled);\n\n  const state: Omit<TagPickerGroupState, 'hasSelectedOptions'> = useTagGroupBase_unstable(\n    {\n      disabled,\n      dismissible: true,\n      ...props,\n      onKeyDown: useEventCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n        props.onKeyDown?.(event);\n        if (\n          isHTMLElement(event.target) &&\n          event.key === ArrowRight &&\n          isLastFocusableTag(event.currentTarget, event.target)\n        ) {\n          triggerRef.current?.focus();\n        }\n      }),\n      onDismiss: useEventCallback((event, data) => {\n        props.onDismiss?.(event, data);\n        selectOption(event as React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>, {\n          value: data.value,\n          // These values no longer exist because the option has unregistered itself\n          // for the purposes of selection - these values aren't actually used\n          id: 'ERROR_DO_NOT_USE',\n          text: 'ERROR_DO_NOT_USE',\n        });\n        if (hasOneSelectedOption && !event.isDefaultPrevented()) {\n          triggerRef.current?.focus();\n        }\n      }),\n    },\n    useMergedRefs(ref, tagPickerGroupRef),\n  );\n\n  /* eslint-disable react-hooks/immutability -- swap Tabster arrow-nav for the native focusgroup + surface disabled as data-* */\n  state.root.focusgroup = 'toolbar inline wrap';\n  state.root['data-disabled'] = stringifyDataAttribute(disabled);\n  /* eslint-enable react-hooks/immutability */\n\n  return { ...state, hasSelectedOptions };\n};\n"],"names":["useTagPickerGroup","props","ref","hasSelectedOptions","useTagPickerContext_unstable","ctx","selectedOptions","length","hasOneSelectedOption","triggerRef","tagPickerGroupRef","selectOption","disabled","state","useTagGroupBase_unstable","dismissible","onKeyDown","useEventCallback","event","isHTMLElement","target","key","ArrowRight","isLastFocusableTag","currentTarget","current","focus","onDismiss","data","value","id","text","isDefaultPrevented","useMergedRefs","root","focusgroup","stringifyDataAttribute"],"mappings":"AAAA;;;;;+BAcaA;;;eAAAA;;;2BAX4B;gCACI;gCACkB;8BACpC;uBAGgC;AAKpD,MAAMA,oBAAoB,CAACC,OAA4BC;IAC5D,MAAMC,qBAAqBC,IAAAA,4CAA4B,EAACC,CAAAA,MAAOA,IAAIC,eAAe,CAACC,MAAM,GAAG;IAC5F,MAAMC,uBAAuBJ,IAAAA,4CAA4B,EAACC,CAAAA,MAAOA,IAAIC,eAAe,CAACC,MAAM,KAAK;IAChG,MAAME,aAAaL,IAAAA,4CAA4B,EAACC,CAAAA,MAAOA,IAAII,UAAU;IACrE,MAAMC,oBAAoBN,IAAAA,4CAA4B,EAACC,CAAAA,MAAOA,IAAIK,iBAAiB;IACnF,MAAMC,eAAeP,IAAAA,4CAA4B,EAACC,CAAAA,MAAOA,IAAIM,YAAY;IACzE,MAAMC,WAAWR,IAAAA,4CAA4B,EAACC,CAAAA,MAAOA,IAAIO,QAAQ;IAEjE,MAAMC,QAAyDC,IAAAA,mCAAwB,EACrF;QACEF;QACAG,aAAa;QACb,GAAGd,KAAK;QACRe,WAAWC,IAAAA,gCAAgB,EAAC,CAACC;YAC3BjB,MAAMe,SAAS,GAAGE;YAClB,IACEC,IAAAA,6BAAa,EAACD,MAAME,MAAM,KAC1BF,MAAMG,GAAG,KAAKC,wBAAU,IACxBC,IAAAA,yBAAkB,EAACL,MAAMM,aAAa,EAAEN,MAAME,MAAM,GACpD;gBACAX,WAAWgB,OAAO,EAAEC;YACtB;QACF;QACAC,WAAWV,IAAAA,gCAAgB,EAAC,CAACC,OAAOU;YAClC3B,MAAM0B,SAAS,GAAGT,OAAOU;YACzBjB,aAAaO,OAAiF;gBAC5FW,OAAOD,KAAKC,KAAK;gBACjB,0EAA0E;gBAC1E,oEAAoE;gBACpEC,IAAI;gBACJC,MAAM;YACR;YACA,IAAIvB,wBAAwB,CAACU,MAAMc,kBAAkB,IAAI;gBACvDvB,WAAWgB,OAAO,EAAEC;YACtB;QACF;IACF,GACAO,IAAAA,6BAAa,EAAC/B,KAAKQ;IAGrB,4HAA4H,GAC5HG,MAAMqB,IAAI,CAACC,UAAU,GAAG;IACxBtB,MAAMqB,IAAI,CAAC,gBAAgB,GAAGE,IAAAA,6BAAsB,EAACxB;IACrD,0CAA0C,GAE1C,OAAO;QAAE,GAAGC,KAAK;QAAEV;IAAmB;AACxC"}