{"version":3,"file":"static/js/vendor.fluentui.react~20d2e8b1.098eb434.js","mappings":"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A,IAGnB,OAAgBA,GAAYwM,EAEnCxM,EAASP,MAAMO,UAAYA,EAJhB,IAKf,C,mECzBW,SAASyM,EAAgBlL,GAChC,OAAOC,QAAQD,EAAQS,KAAK0K,yBAChC,C,yDCAW,MAAMC,EAAQ,CAACnM,EAAOoM,EAAKC,IAAMC,KAAKD,IAAID,EAAKE,KAAKF,IAAIC,EAAKrM,GAAS,G,0FCPjF,MAAMuM,EAAc,IAAIC,KACpB,MAAMC,EAAS,CAAC,EAChB,IAAK,MAAMC,KAAQF,EAAM,CACrB,MAAM3N,EAAO8B,MAAMC,QAAQ8L,GAAQA,EAAO9N,OAAOC,KAAK6N,GACtD,IAAK,MAAMC,KAAO9N,EACd4N,EAAOE,GAAO,CAEtB,CACA,OAAOF,CAAM,EAMAG,EAAoBL,EAAY,CAC7C,aACA,iBACA,mBACA,SACA,QACA,UACA,mBACA,qBACA,sBACA,UACA,iBACA,SACA,gBACA,WACA,UACA,WACA,SACA,UACA,YACA,mBACA,aACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,UACA,iBACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,qBACA,eACA,eACA,cACA,aACA,cACA,YACA,mBACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,sBACA,yBAMaM,EAAwBN,EAAY,CACjD,YACA,WACA,YACA,kBACA,MACA,YACA,SACA,UACA,KACA,OACA,MACA,OACA,QACA,WACA,QACA,YACA,aACA,SAMaO,EAAsBP,EAAY,CAC/C,SACA,WACA,UACA,YACA,aAMaQ,EAAwBR,EAAYM,EAAuBD,EAAmBE,GAK9EE,EAAkBT,EAAYQ,EAAuB,CAClE,SAMaE,EAAkBV,EAAYQ,EAAuB,CAClE,SACA,OACA,QACA,UACA,MACA,UAMaG,EAAkBX,EAAYU,EAAiB,CAC5D,WAMaE,EAAeZ,EAAYQ,EAAuB,CAC/D,U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","sources":["../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/assertSlots.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/constants.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/deprecated/getSlots.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/deprecated/getSlotsNext.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/deprecated/resolveShorthand.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/getIntrinsicElementProps.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/isResolvedShorthand.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/isSlot.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/slot.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/events/mouseTouchHelpers.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useBrowserTimer.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useControllableState.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useEventCallback.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useFirstMount.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useForceUpdate.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useId.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useIsomorphicLayoutEffect.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useMergedRefs.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useOnClickOutside.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useOnScrollOutside.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useScrollbarWidth.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useTimeout.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/createSetFromIterable.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/selection/useSelection.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/ssr/SSRContext.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/ssr/canUseDOM.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/trigger/applyTriggerPropsToChildren.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/trigger/getTriggerChild.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/trigger/isFluentTrigger.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/clamp.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/properties.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/getNativeElementProps.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/getRTLSafeKey.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/isHTMLElement.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/isInteractiveHTMLElement.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/mergeCallbacks.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/omit.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/priorityQueue.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/virtualParent/elementContains.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/virtualParent/getParent.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/virtualParent/isVirtualElement.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.17.0_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/virtualParent/setVirtualParent.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/assertSlots.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/constants.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/getIntrinsicElementProps.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/isResolvedShorthand.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/isSlot.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/compose/slot.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useBrowserTimer.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useControllableState.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useEventCallback.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useFirstMount.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/ssr/SSRContext.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useId.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useIsomorphicLayoutEffect.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useMergedRefs.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useOnClickOutside.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useOnScrollOutside.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/hooks/useTimeout.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/ssr/canUseDOM.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/trigger/applyTriggerPropsToChildren.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/trigger/getTriggerChild.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/trigger/isFluentTrigger.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/properties.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/getNativeElementProps.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/isHTMLElement.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/utils/mergeCallbacks.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/virtualParent/elementContains.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/virtualParent/getParent.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/virtualParent/isVirtualElement.js","../../../../node_modules/.pnpm/@fluentui+react-utilities@9.18.22_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-utilities/lib/virtualParent/setVirtualParent.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/Virtualizer/useVirtualizerStyles.styles.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/hooks/useMutationObserver.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/hooks/useIntersectionObserver.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/utilities/VirtualizerContext/VirtualizerContext.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/Virtualizer/useVirtualizer.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/Virtualizer/renderVirtualizer.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/Virtualizer/Virtualizer.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/utilities/createResizeObserverFromDocument.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/hooks/useResizeObserverRef.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/utilities/debounce.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/hooks/useVirtualizerMeasure.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/hooks/useDynamicVirtualizerMeasure.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/hooks/useMeasureList.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/utilities/ImperativeScrolling/imperativeScrolling.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/utilities/ImperativeScrolling/imperativeScrollingDynamic.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/hooks/useStaticPagination.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/VirtualizerScrollView/useVirtualizerScrollView.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/VirtualizerScrollView/renderVirtualizerScrollView.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/VirtualizerScrollView/useVirtualizerScrollViewStyles.styles.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/VirtualizerScrollView/VirtualizerScrollView.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/hooks/useDynamicPagination.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamic.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/VirtualizerScrollViewDynamic/renderVirtualizerScrollViewDynamic.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/VirtualizerScrollViewDynamic/useVirtualizerScrollViewDynamicStyles.styles.js","../../../../node_modules/.pnpm/@fluentui+react-virtualizer@9.0.0-alpha.92_@types+react-dom@17.0.22_@types+react@17.0.69_reac_5oyau3eyjsyb5gs7l5xhlud4yi/node_modules/@fluentui/react-virtualizer/lib/components/VirtualizerScrollViewDynamic/VirtualizerScrollViewDynamic.js","../../../../node_modules/.pnpm/@fluentui+react-window-provider@2.1.4_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-window-provider/lib/WindowProvider.js","../../../../node_modules/.pnpm/@fluentui+react-window-provider@2.2.28_@types+react@17.0.69_react@17.0.1/node_modules/@fluentui/react-window-provider/lib/WindowProvider.js"],"sourcesContent":["import * as React from 'react';\nimport { SLOT_ELEMENT_TYPE_SYMBOL } from './constants';\nimport { isSlot } from './isSlot';\nimport { slot } from './index';\n/**\n * @internal\n * Assertion method to ensure state slots properties are properly declared.\n * A properly declared slot must be declared by using the `slot` method.\n *\n * @example\n * ```tsx\n * export const renderInput_unstable = (state: InputState) => {\n assertSlots(state);\n return (\n \n {state.contentBefore && }\n \n {state.contentAfter && }\n \n );\n };\n * ```\n */ export function assertSlots(state) {\n /**\n * This verification is not necessary in production\n * as we're verifying static properties that will not change between environments\n */ if (process.env.NODE_ENV !== 'production') {\n const typedState = state;\n for (const slotName of Object.keys(typedState.components)){\n const slotElement = typedState[slotName];\n if (slotElement === undefined) {\n continue;\n }\n // this means a slot is being declared without using, slot.always or slot.optional or even resolveShorthand on the state hook,\n // but the render method is using the new `assertSlots` method. That scenario can be solved by simply updating the slot element with the proper element type\n // FIXME: this slot will still fail to support child render function scenario\n if (!isSlot(slotElement)) {\n typedState[slotName] = slot.always(slotElement, {\n elementType: typedState.components[slotName]\n });\n // eslint-disable-next-line no-console\n console.warn(`@fluentui/react-utilities [${assertSlots.name}]:\n\"state.${slotName}\" is not a slot!\nBe sure to create slots properly by using \"slot.always\" or \"slot.optional\".`);\n } else {\n // This means a slot is being declared by using resolveShorthand on the state hook,\n // but the render method is using the new `assertSlots` method. That scenario can be solved by simply updating the slot element with the proper element type\n const { [SLOT_ELEMENT_TYPE_SYMBOL]: elementType } = slotElement;\n if (elementType !== typedState.components[slotName]) {\n slotElement[SLOT_ELEMENT_TYPE_SYMBOL] = typedState.components[slotName];\n // eslint-disable-next-line no-console\n console.warn(`@fluentui/react-utilities [${assertSlots.name}]:\n\"state.${slotName}\" element type differs from \"state.components.${slotName}\",\n${elementType} !== ${typedState.components[slotName]}.\nBe sure to create slots properly by using \"slot.always\" or \"slot.optional\" with the correct elementType.`);\n }\n }\n }\n }\n}\n","/**\n * @internal\n * Internal reference for the render function\n */ export const SLOT_RENDER_FUNCTION_SYMBOL = Symbol.for('fui.slotRenderFunction');\n/**\n * @internal\n * Internal reference for the render function\n */ export const SLOT_ELEMENT_TYPE_SYMBOL = Symbol.for('fui.slotElementType');\n","import * as React from 'react';\nimport { omit } from '../../utils/omit';\nimport { isSlot } from '../isSlot';\nimport { SLOT_RENDER_FUNCTION_SYMBOL } from '../constants';\n/**\n * Given the state and an array of slot names, will break out `slots` and `slotProps`\n * collections.\n *\n * The root is derived from a mix of `components` props and `as` prop.\n *\n * Slots will render as null if they are rendered as primitives with undefined children.\n *\n * The slotProps will always omit the `as` prop within them, and for slots that are string\n * primitives, the props will be filtered according to the slot type by the type system.\n * For example, if the slot is rendered `as: 'a'`, the props will be filtered for acceptable\n * anchor props. Note that this is only enforced at build time by Typescript -- there is no\n * runtime code filtering props in this function.\n *\n * @deprecated use slot.always or slot.optional combined with assertSlots instead\n *\n * @param state - State including slot definitions\n * @returns An object containing the `slots` map and `slotProps` map.\n */ export function getSlots(state) {\n // eslint-disable-next-line deprecation/deprecation\n const slots = {};\n const slotProps = {};\n const slotNames = Object.keys(state.components);\n for (const slotName of slotNames){\n const [slot, props] = getSlot(state, slotName);\n // eslint-disable-next-line deprecation/deprecation\n slots[slotName] = slot;\n slotProps[slotName] = props;\n }\n // eslint-disable-next-line deprecation/deprecation\n return {\n slots,\n slotProps: slotProps\n };\n}\nfunction getSlot(state, slotName) {\n var _state_components, _state_components1;\n const props = state[slotName];\n if (props === undefined) {\n return [\n null,\n undefined\n ];\n }\n // TS Error: Property 'as' does not exist on type 'UnknownSlotProps | undefined'.ts(2339)\n const { as: asProp, children, ...rest } = props;\n const renderFunction = isSlot(props) ? props[SLOT_RENDER_FUNCTION_SYMBOL] : undefined;\n const slot = ((_state_components = state.components) === null || _state_components === void 0 ? void 0 : _state_components[slotName]) === undefined || typeof state.components[slotName] === 'string' ? asProp || ((_state_components1 = state.components) === null || _state_components1 === void 0 ? void 0 : _state_components1[slotName]) || 'div' : state.components[slotName];\n if (renderFunction || typeof children === 'function') {\n const render = renderFunction || children;\n return [\n React.Fragment,\n {\n children: render(slot, rest)\n }\n ];\n }\n const shouldOmitAsProp = typeof slot === 'string' && asProp;\n const slotProps = shouldOmitAsProp ? omit(props, [\n 'as'\n ]) : props;\n return [\n slot,\n slotProps\n ];\n}\n","import * as React from 'react';\n/**\n * Similar to `getSlots`, main difference is that it's compatible with new custom jsx pragma\n *\n * @internal\n * This is an internal temporary method, this method will cease to exist eventually!\n *\n * * ❗️❗️ **DO NOT USE IT EXTERNALLY** ❗️❗️\n *\n * @deprecated use slot.always or slot.optional combined with assertSlots instead\n */ export function getSlotsNext(state) {\n // eslint-disable-next-line deprecation/deprecation\n const slots = {};\n const slotProps = {};\n const slotNames = Object.keys(state.components);\n for (const slotName of slotNames){\n // eslint-disable-next-line deprecation/deprecation\n const [slot, props] = getSlotNext(state, slotName);\n // eslint-disable-next-line deprecation/deprecation\n slots[slotName] = slot;\n slotProps[slotName] = props;\n }\n // eslint-disable-next-line deprecation/deprecation\n return {\n slots,\n slotProps: slotProps\n };\n}\n/**\n * @deprecated use slot.always or slot.optional combined with assertSlots instead\n */ function getSlotNext(state, slotName) {\n var _state_components, _state_components1;\n const props = state[slotName];\n if (props === undefined) {\n return [\n null,\n undefined\n ];\n }\n // TS Error: Property 'as' does not exist on type 'UnknownSlotProps | undefined'.ts(2339)\n const { as: asProp, ...propsWithoutAs } = props;\n const slot = ((_state_components = state.components) === null || _state_components === void 0 ? void 0 : _state_components[slotName]) === undefined || typeof state.components[slotName] === 'string' ? asProp || ((_state_components1 = state.components) === null || _state_components1 === void 0 ? void 0 : _state_components1[slotName]) || 'div' : state.components[slotName];\n const shouldOmitAsProp = typeof slot === 'string' && asProp;\n const slotProps = shouldOmitAsProp ? propsWithoutAs : props;\n return [\n slot,\n slotProps\n ];\n}\n","import * as slot from '../slot';\n/**\n *\n * Resolves shorthands into slot props, to ensure normalization of the signature\n * being passed down to getSlots method\n * @param value - the base shorthand props\n * @param options - options to resolve shorthand props\n *\n * @deprecated use slot.always or slot.optional combined with assertSlots instead\n */ // eslint-disable-next-line deprecation/deprecation\nexport const resolveShorthand = (value, options)=>slot.optional(value, {\n ...options,\n renderByDefault: options === null || options === void 0 ? void 0 : options.required,\n // elementType as undefined is the way to identify between a slot and a resolveShorthand call\n // in the case elementType is undefined assertSlots will fail, ensuring it'll only work with slot method.\n elementType: undefined\n });\n","import * as React from 'react';\nimport { getNativeElementProps } from '../utils/getNativeElementProps';\n/**\n * Given an element tagname and user props, filters the props to only allowed props for the given\n * element type.\n *\n * Equivalent to {@link getNativeElementProps}, but more type-safe.\n */ export const getIntrinsicElementProps = (/** The slot's default element type (e.g. 'div') */ tagName, /** The component's props object */ props, /** List of native props to exclude from the returned value */ excludedPropNames)=>{\n var _props_as;\n // eslint-disable-next-line deprecation/deprecation\n return getNativeElementProps((_props_as = props.as) !== null && _props_as !== void 0 ? _props_as : tagName, props, excludedPropNames);\n};\n","import { isValidElement } from 'react';\n/**\n * Guard method that validates if a shorthand is a slot\n * can be used to extends properties provided by a slot\n *\n * @example\n * ```\n * const backdropSlot = resolveShorthand(backdrop, {\n * defaultProps: {\n * onClick: useEventCallback(event => {\n * if (isResolvedShorthand(backdrop)) {\n * backdrop.onClick?.(event)\n * }\n * // do something after passing click down the line\n * }),\n * },\n * })\n * ```\n * @example\n * ```\n * const handleBackDropClick = (event) => {\n * // do your thing\n * }\n * const backdropSlot = resolveShorthand(backdrop, {\n * defaultProps: {\n * onClick: useEventCallback(\n * mergeCallbacks(isResolvedShorthand(backdrop) ? backdrop.onClick : undefined, handleBackdropClick)\n * )\n * })\n * ```\n */ export function isResolvedShorthand(shorthand) {\n return shorthand !== null && typeof shorthand === 'object' && !Array.isArray(shorthand) && !isValidElement(shorthand);\n}\n","import { SLOT_ELEMENT_TYPE_SYMBOL } from './constants';\n/**\n * Guard method to ensure a given element is a slot.\n * This is mainly used internally to ensure a slot is being used as a component.\n */ export function isSlot(element) {\n return Boolean(element === null || element === void 0 ? void 0 : element.hasOwnProperty(SLOT_ELEMENT_TYPE_SYMBOL));\n}\n","import * as React from 'react';\nimport { SLOT_ELEMENT_TYPE_SYMBOL, SLOT_RENDER_FUNCTION_SYMBOL } from './constants';\n/**\n * Creates a slot from a slot shorthand or properties (`props.SLOT_NAME` or `props` itself)\n * @param value - the value of the slot, it can be a slot shorthand, a slot component or a slot properties\n * @param options - values you can pass to alter the signature of a slot, those values are:\n *\n * * `elementType` - the base element type of a slot, defaults to `'div'`\n * * `defaultProps` - similar to a React component declaration, you can provide a slot default properties to be merged with the shorthand/properties provided.\n */ export function always(value, options) {\n const { defaultProps, elementType } = options;\n const props = resolveShorthand(value);\n /**\n * Casting is required here as SlotComponentType is a function, not an object.\n * Although SlotComponentType has a function signature, it is still just an object.\n * This is required to make a slot callable (JSX compatible), this is the exact same approach\n * that is used on `@types/react` components\n */ const propsWithMetadata = {\n ...defaultProps,\n ...props,\n [SLOT_ELEMENT_TYPE_SYMBOL]: elementType\n };\n if (props && typeof props.children === 'function') {\n propsWithMetadata[SLOT_RENDER_FUNCTION_SYMBOL] = props.children;\n propsWithMetadata.children = defaultProps === null || defaultProps === void 0 ? void 0 : defaultProps.children;\n }\n return propsWithMetadata;\n}\n/**\n * Creates a slot from a slot shorthand or properties (`props.SLOT_NAME` or `props` itself)\n * @param value - the value of the slot, it can be a slot shorthand, a slot component or a slot properties\n * @param options - values you can pass to alter the signature of a slot, those values are:\n *\n * * `elementType` - the base element type of a slot, defaults to `'div'`\n * * `defaultProps` - similar to a React component declaration, you can provide a slot default properties to be merged with the shorthand/properties provided\n * * `renderByDefault` - a boolean that indicates if a slot will be rendered even if it's base value is `undefined`.\n * By default if `props.SLOT_NAME` is `undefined` then `state.SLOT_NAME` becomes `undefined`\n * and nothing will be rendered, but if `renderByDefault = true` then `state.SLOT_NAME` becomes an object\n * with the values provided by `options.defaultProps` (or `{}`). This is useful for cases such as providing a default content\n * in case no shorthand is provided, like the case of the `expandIcon` slot for the `AccordionHeader`\n */ export function optional(value, options) {\n if (value === null || value === undefined && !options.renderByDefault) {\n return undefined;\n }\n return always(value, options);\n}\n/**\n * Helper function that converts a slot shorthand or properties to a slot properties object\n * The main difference between this function and `slot` is that this function does not return the metadata required for a slot to be considered a properly renderable slot, it only converts the value to a slot properties object\n * @param value - the value of the slot, it can be a slot shorthand or a slot properties object\n */ export function resolveShorthand(value) {\n if (typeof value === 'string' || typeof value === 'number' || Array.isArray(value) || // eslint-disable-next-line @typescript-eslint/no-explicit-any\n React.isValidElement(value)) {\n return {\n children: value\n };\n }\n if (value && typeof value !== 'object' && process.env.NODE_ENV !== 'production') {\n // TODO: would be nice to have a link to slot documentation in this error message\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-utilities [slot.${resolveShorthand.name}]:\nA slot got an invalid value \"${value}\" (${typeof value}).\nA valid value for a slot is a slot shorthand or slot properties object.\nSlot shorthands can be strings, numbers, arrays or JSX elements`);\n }\n return value;\n}\n","import * as React from 'react';\n/**\n * Returns true if event is a touch event. Useful when sharing logic between touch and mouse interactions.\n */ export function isTouchEvent(event) {\n return event.type.startsWith('touch');\n}\n/**\n * Returns true if event is a mouse event. Useful when sharing logic between touch and mouse interactions.\n */ export function isMouseEvent(event) {\n return event.type.startsWith('mouse') || [\n 'click',\n 'contextmenu',\n 'dblclick'\n ].indexOf(event.type) > -1;\n}\n/**\n * Returns an object with clientX, clientY for TouchOrMouseEvent.\n * Returns zeros in case the event is not a mouse or a touch event.\n */ export function getEventClientCoords(event) {\n if (isMouseEvent(event)) {\n return {\n clientX: event.clientX,\n clientY: event.clientY\n };\n } else if (isTouchEvent(event)) {\n return {\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('@fluentui/react-utilities]: Unable to get clientX. Unknown event type.');\n }\n return {\n clientX: 0,\n clientY: 0\n };\n }\n}\n","import * as React from 'react';\n/**\n * @internal\n * Helper to manage a browser timer.\n * Ensures that the timer isn't set multiple times at once,\n * and is cleaned up when the component is unloaded.\n *\n * @param setTimer - The timer setter function\n * @param cancelTimer - The timer cancel function\n * @returns A pair of [setTimer, cancelTimer] that are stable between renders.\n *\n * @example\n * const [setTimer, cancelTimer] = useBrowserTimer(setTimeout, cancelTimeout);\n *\n * setTimer(() => console.log('Hello world!'), 1000);\n * cancelTimer();\n */ export function useBrowserTimer(setTimer, cancelTimer) {\n const id = React.useRef(undefined);\n const set = React.useCallback((fn, delay)=>{\n if (id.current !== undefined) {\n cancelTimer(id.current);\n }\n id.current = setTimer(fn, delay);\n return id.current;\n }, [\n cancelTimer,\n setTimer\n ]);\n const cancel = React.useCallback(()=>{\n if (id.current !== undefined) {\n cancelTimer(id.current);\n id.current = undefined;\n }\n }, [\n cancelTimer\n ]);\n // Clean up the timeout when the component is unloaded\n React.useEffect(()=>cancel, [\n cancel\n ]);\n return [\n set,\n cancel\n ];\n}\n","import * as React from 'react';\nfunction isFactoryDispatch(newState) {\n return typeof newState === 'function';\n}\n/**\n * @internal\n *\n * A [`useState`](https://reactjs.org/docs/hooks-reference.html#usestate)-like hook\n * to manage a value that could be either `controlled` or `uncontrolled`,\n * such as a checked state or text input string.\n *\n * @see https://react.dev/learn/sharing-state-between-components#controlled-and-uncontrolled-components for more details on `controlled`/`uncontrolled`\n *\n * @returns an array of the current value and an updater (dispatcher) function.\n * The updater function is referentially stable (won't change during the component's lifecycle).\n * It can take either a new value, or a function which is passed the previous value and returns the new value.\n *\n * ❗️❗️ Calls to the dispatcher will only modify the state if the state is `uncontrolled`.\n * Meaning that if a state is `controlled`, calls to the dispatcher do not modify the state.\n *\n */ export const useControllableState = (options)=>{\n const [internalState, setInternalState] = React.useState(()=>{\n if (options.defaultState === undefined) {\n return options.initialState;\n }\n return isInitializer(options.defaultState) ? options.defaultState() : options.defaultState;\n });\n // Heads up!\n // This part is specific for controlled mode and mocks behavior of React dispatcher function.\n const stateValueRef = React.useRef(options.state);\n React.useEffect(()=>{\n stateValueRef.current = options.state;\n }, [\n options.state\n ]);\n const setControlledState = React.useCallback((newState)=>{\n if (isFactoryDispatch(newState)) {\n newState(stateValueRef.current);\n }\n }, []);\n return useIsControlled(options.state) ? [\n options.state,\n setControlledState\n ] : [\n internalState,\n setInternalState\n ];\n};\nfunction isInitializer(value) {\n return typeof value === 'function';\n}\n/**\n * Helper hook to handle previous comparison of controlled/uncontrolled\n * Prints an error when isControlled value switches between subsequent renders\n * @returns - whether the value is controlled\n */ const useIsControlled = (controlledValue)=>{\n const [isControlled] = React.useState(()=>controlledValue !== undefined);\n if (process.env.NODE_ENV !== 'production') {\n // We don't want these warnings in production even though it is against native behaviour\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(()=>{\n if (isControlled !== (controlledValue !== undefined)) {\n const error = new Error();\n const controlWarning = isControlled ? 'a controlled value to be uncontrolled' : 'an uncontrolled value to be controlled';\n const undefinedWarning = isControlled ? 'defined to an undefined' : 'undefined to a defined';\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-utilities [${useControllableState.name}]:\nA component is changing ${controlWarning}. This is likely caused by the value changing from ${undefinedWarning} value, which should not happen.\nDecide between using a controlled or uncontrolled input element for the lifetime of the component.\nMore info: https://reactjs.org/link/controlled-components\n${error.stack}`);\n }\n }, [\n isControlled,\n controlledValue\n ]);\n }\n return isControlled;\n};\n","import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n/**\n * @internal\n * https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n *\n * Modified `useCallback` that can be used when dependencies change too frequently. Can occur when\n * e.g. user props are dependencies which could change on every render\n * e.g. volatile values (i.e. useState/useDispatch) are dependencies which could change frequently\n *\n * This should not be used often, but can be a useful re-render optimization since the callback is a ref and\n * will not be invalidated between re-renders\n *\n * @param fn - The callback function that will be used\n */ export const useEventCallback = (fn)=>{\n const callbackRef = React.useRef(()=>{\n throw new Error('Cannot call an event handler while rendering');\n });\n useIsomorphicLayoutEffect(()=>{\n callbackRef.current = fn;\n }, [\n fn\n ]);\n return React.useCallback((...args)=>{\n const callback = callbackRef.current;\n return callback(...args);\n }, [\n callbackRef\n ]);\n};\n","import * as React from 'react';\n/**\n * @internal\n * Checks if components was mounted the first time.\n * Since concurrent mode will be released in the future this needs to be verified\n * Currently (React 17) will always render the initial mount once\n * https://codesandbox.io/s/heuristic-brook-s4w0q?file=/src/App.jsx\n * https://codesandbox.io/s/holy-grass-8nieu?file=/src/App.jsx\n *\n * @example\n * const isFirstMount = useFirstMount();\n */ export function useFirstMount() {\n const isFirst = React.useRef(true);\n if (isFirst.current) {\n isFirst.current = false;\n return true;\n }\n return isFirst.current;\n}\n","import { useReducer } from 'react';\n/**\n * @internal\n * Forces a re-render, similar to `forceUpdate` in class components.\n */ export function useForceUpdate() {\n return useReducer((x)=>x + 1, 0)[1];\n}\n","import * as React from 'react';\nimport { defaultSSRContextValue, useSSRContext } from '../ssr/index';\nconst IdPrefixContext = React.createContext(undefined);\n/**\n * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions\n * between different bundles.\n */ export const IdPrefixProvider = IdPrefixContext.Provider;\nfunction useIdPrefix() {\n return React.useContext(IdPrefixContext) || '';\n}\n/**\n * Resets generated IDs, should be used only in tests.\n */ export function resetIdsForTests() {\n defaultSSRContextValue.current = 0;\n}\n/**\n * Hook to generate a unique ID.\n *\n * @param prefix - Optional prefix for the ID. Defaults to 'fui-'.\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */ export function useId(prefix = 'fui-', providedId) {\n const contextValue = useSSRContext();\n const idPrefix = useIdPrefix();\n // Checking if useId is available on React, if it is, we use it to generate the id. String concatenation is used to\n // prevent bundlers from complaining with older versions of React.\n const _useId = React['use' + 'Id'];\n if (_useId) {\n const generatedId = _useId();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const escapedId = React.useMemo(()=>generatedId.replace(/:/g, ''), [\n generatedId\n ]);\n return providedId || `${idPrefix}${prefix}${escapedId}`;\n }\n // Hooks appear to be running conditionally, but they will always run in the same order since it's based on\n // the version of React being used. This is safe to ignore.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return React.useMemo(()=>{\n if (providedId) {\n return providedId;\n }\n return `${idPrefix}${prefix}${++contextValue.current}`;\n }, [\n idPrefix,\n prefix,\n providedId,\n contextValue\n ]);\n}\n","import * as React from 'react';\nimport { canUseDOM } from '../ssr/index';\n/**\n * React currently throws a warning when using useLayoutEffect on the server. To get around it, we can conditionally\n * useEffect on the server (no-op) and useLayoutEffect in the browser. We occasionally need useLayoutEffect to\n * ensure we don't get a render flash for certain operations, but we may also need affected components to render on\n * the server.\n *\n * https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.js\n */ // eslint-disable-next-line no-restricted-properties\nexport const useIsomorphicLayoutEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;\n","import * as React from 'react';\n/**\n * React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that\n * updates all provided refs\n * @param refs - Refs to collectively update with one ref value.\n * @returns A function with an attached \"current\" prop, so that it can be treated like a RefObject.\n */ export function useMergedRefs(...refs) {\n const mergedCallback = React.useCallback((value)=>{\n // Update the \"current\" prop hanging on the function.\n mergedCallback.current = value;\n for (const ref of refs){\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n // work around the immutability of the React.Ref type\n ref.current = value;\n }\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps -- already exhaustive\n [\n ...refs\n ]);\n return mergedCallback;\n}\n","import * as React from 'react';\nimport { useEventCallback } from './useEventCallback';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nconst DEFAULT_CONTAINS = (parent, child)=>!!(parent === null || parent === void 0 ? void 0 : parent.contains(child));\n/**\n * @internal\n * Utility to perform checks where a click/touch event was made outside a component\n */ export const useOnClickOutside = (options)=>{\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n const { refs, callback, element, disabled, disabledFocusOnIframe, contains = DEFAULT_CONTAINS } = options;\n const timeoutId = React.useRef(undefined);\n useIFrameFocus({\n element,\n disabled: disabledFocusOnIframe || disabled,\n callback,\n refs,\n contains\n });\n const isMouseDownInsideRef = React.useRef(false);\n const listener = useEventCallback((ev)=>{\n if (isMouseDownInsideRef.current) {\n isMouseDownInsideRef.current = false;\n return;\n }\n const target = ev.composedPath()[0];\n const isOutside = refs.every((ref)=>!contains(ref.current || null, target));\n if (isOutside && !disabled) {\n callback(ev);\n }\n });\n const handleMouseDown = useEventCallback((ev)=>{\n // Selecting text from inside to outside will rigger click event.\n // In this case click event target is outside but mouse down event target is inside.\n // And this click event should be considered as inside click.\n isMouseDownInsideRef.current = refs.some((ref)=>contains(ref.current || null, ev.target));\n });\n React.useEffect(()=>{\n if (disabled) {\n return;\n }\n // Store the current event to avoid triggering handlers immediately\n // Note this depends on a deprecated but extremely well supported quirk of the web platform\n // https://github.com/facebook/react/issues/20074\n let currentEvent = getWindowEvent(win);\n const conditionalHandler = (event)=>{\n // Skip if this event is the same as the one running when we added the handlers\n if (event === currentEvent) {\n currentEvent = undefined;\n return;\n }\n listener(event);\n };\n // use capture phase because React can update DOM before the event bubbles to the document\n element === null || element === void 0 ? void 0 : element.addEventListener('click', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.addEventListener('touchstart', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.addEventListener('contextmenu', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.addEventListener('mousedown', handleMouseDown, true);\n // Garbage collect this event after it's no longer useful to avoid memory leaks\n timeoutId.current = win === null || win === void 0 ? void 0 : win.setTimeout(()=>{\n currentEvent = undefined;\n }, 1);\n return ()=>{\n element === null || element === void 0 ? void 0 : element.removeEventListener('click', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.removeEventListener('touchstart', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.removeEventListener('contextmenu', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.removeEventListener('mousedown', handleMouseDown, true);\n win === null || win === void 0 ? void 0 : win.clearTimeout(timeoutId.current);\n currentEvent = undefined;\n };\n }, [\n listener,\n element,\n disabled,\n handleMouseDown,\n win\n ]);\n};\nconst getWindowEvent = (target)=>{\n if (target) {\n var _target_ownerDocument_defaultView, _target_ownerDocument;\n if (typeof target.window === 'object' && target.window === target) {\n // eslint-disable-next-line deprecation/deprecation\n return target.event;\n }\n var _target_ownerDocument_defaultView_event;\n // eslint-disable-next-line deprecation/deprecation\n return (_target_ownerDocument_defaultView_event = (_target_ownerDocument = target.ownerDocument) === null || _target_ownerDocument === void 0 ? void 0 : (_target_ownerDocument_defaultView = _target_ownerDocument.defaultView) === null || _target_ownerDocument_defaultView === void 0 ? void 0 : _target_ownerDocument_defaultView.event) !== null && _target_ownerDocument_defaultView_event !== void 0 ? _target_ownerDocument_defaultView_event : undefined;\n }\n return undefined;\n};\nconst FUI_FRAME_EVENT = 'fuiframefocus';\n/**\n * Since click events do not propagate past iframes, we use focus to detect if a\n * click has happened inside an iframe, since the only ways of focusing inside an\n * iframe are:\n * - clicking inside\n * - tabbing inside\n *\n * Polls the value of `document.activeElement`. If it is an iframe, then dispatch\n * a custom DOM event. When the custom event is received call the provided callback\n */ const useIFrameFocus = (options)=>{\n const { disabled, element: targetDocument, callback, contains = DEFAULT_CONTAINS, pollDuration = 1000, refs } = options;\n const timeoutRef = React.useRef();\n const listener = useEventCallback((e)=>{\n const isOutside = refs.every((ref)=>!contains(ref.current || null, e.target));\n if (isOutside && !disabled) {\n callback(e);\n }\n });\n // Adds listener to the custom iframe focus event\n React.useEffect(()=>{\n if (disabled) {\n return;\n }\n targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.addEventListener(FUI_FRAME_EVENT, listener, true);\n return ()=>{\n targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.removeEventListener(FUI_FRAME_EVENT, listener, true);\n };\n }, [\n targetDocument,\n disabled,\n listener\n ]);\n // Starts polling for the active element\n React.useEffect(()=>{\n var _targetDocument_defaultView;\n if (disabled) {\n return;\n }\n timeoutRef.current = targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.setInterval(()=>{\n const activeElement = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.activeElement;\n if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.tagName) === 'IFRAME' || (activeElement === null || activeElement === void 0 ? void 0 : activeElement.tagName) === 'WEBVIEW') {\n const event = new CustomEvent(FUI_FRAME_EVENT, {\n bubbles: true\n });\n activeElement.dispatchEvent(event);\n }\n }, pollDuration);\n return ()=>{\n var _targetDocument_defaultView;\n targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.clearTimeout(timeoutRef.current);\n };\n }, [\n targetDocument,\n disabled,\n pollDuration\n ]);\n};\n","import * as React from 'react';\nimport { useEventCallback } from './useEventCallback';\n/**\n * @internal\n * Utility to perform checks where a click/touch event was made outside a component\n */ export const useOnScrollOutside = (options)=>{\n const { refs, callback, element, disabled, contains: containsProp } = options;\n const listener = useEventCallback((ev)=>{\n const contains = containsProp || ((parent, child)=>!!(parent === null || parent === void 0 ? void 0 : parent.contains(child)));\n const target = ev.composedPath()[0];\n const isOutside = refs.every((ref)=>!contains(ref.current || null, target));\n if (isOutside && !disabled) {\n callback(ev);\n }\n });\n React.useEffect(()=>{\n if (disabled) {\n return;\n }\n element === null || element === void 0 ? void 0 : element.addEventListener('wheel', listener);\n element === null || element === void 0 ? void 0 : element.addEventListener('touchmove', listener);\n return ()=>{\n element === null || element === void 0 ? void 0 : element.removeEventListener('wheel', listener);\n element === null || element === void 0 ? void 0 : element.removeEventListener('touchmove', listener);\n };\n }, [\n listener,\n element,\n disabled\n ]);\n};\n","import * as React from 'react';\nconst cache = new WeakMap();\n/**\n * @returns The width in pixels of the scrollbar in the user agent\n */ export function useScrollbarWidth(options) {\n const { targetDocument, force } = options;\n return React.useMemo(()=>{\n if (!targetDocument) {\n return 0;\n }\n if (!force && cache.has(targetDocument)) {\n return cache.get(targetDocument);\n }\n const outer = targetDocument.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n const inner = targetDocument.createElement('div');\n outer.appendChild(inner);\n targetDocument.body.appendChild(outer);\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.remove();\n cache.set(targetDocument, scrollbarWidth);\n return scrollbarWidth;\n }, [\n targetDocument,\n force\n ]);\n}\n","import { useBrowserTimer } from './useBrowserTimer';\n/**\n * @internal\n * Helper to manage a browser timeout.\n * Ensures that the timeout isn't set multiple times at once and is cleaned up\n * when the component is unloaded.\n *\n * @returns A pair of [setTimeout, clearTimeout] that are stable between renders.\n */ export function useTimeout() {\n // TODO: figure it out a way to not call global.setTimeout and instead infer window from some context\n return useBrowserTimer(setTimeout, clearTimeout);\n}\n","/**\n * Creates a set from a given iterable, in case the iterable is a set itself, returns the given set instead.\n */ export function createSetFromIterable(iterable) {\n return iterable instanceof Set ? iterable : new Set(iterable);\n}\n","import * as React from 'react';\nimport { useControllableState } from '../hooks/useControllableState';\nimport { createSetFromIterable } from '../utils/createSetFromIterable';\nfunction useSelectionState(params) {\n const [selected, setSelected] = useControllableState({\n initialState: new Set(),\n defaultState: React.useMemo(()=>params.defaultSelectedItems && createSetFromIterable(params.defaultSelectedItems), [\n params.defaultSelectedItems\n ]),\n state: React.useMemo(()=>params.selectedItems && createSetFromIterable(params.selectedItems), [\n params.selectedItems\n ])\n });\n const changeSelection = (event, nextSelectedItems)=>{\n var _params_onSelectionChange;\n (_params_onSelectionChange = params.onSelectionChange) === null || _params_onSelectionChange === void 0 ? void 0 : _params_onSelectionChange.call(params, event, {\n selectedItems: nextSelectedItems\n });\n setSelected(nextSelectedItems);\n };\n return [\n selected,\n changeSelection\n ];\n}\nfunction useSingleSelection(params) {\n const [selected, changeSelection] = useSelectionState(params);\n const methods = {\n deselectItem: (event)=>changeSelection(event, new Set()),\n selectItem: (event, itemId)=>changeSelection(event, new Set([\n itemId\n ])),\n toggleAllItems: ()=>{\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('[react-utilities]: `toggleAllItems` should not be used in single selection mode');\n }\n },\n toggleItem: (event, itemId)=>changeSelection(event, new Set([\n itemId\n ])),\n clearItems: (event)=>changeSelection(event, new Set()),\n isSelected: (itemId)=>{\n var _selected_has;\n return (_selected_has = selected.has(itemId)) !== null && _selected_has !== void 0 ? _selected_has : false;\n }\n };\n return [\n selected,\n methods\n ];\n}\nfunction useMultipleSelection(params) {\n const [selected, changeSelection] = useSelectionState(params);\n const methods = {\n toggleItem: (event, itemId)=>{\n const nextSelectedItems = new Set(selected);\n if (selected.has(itemId)) {\n nextSelectedItems.delete(itemId);\n } else {\n nextSelectedItems.add(itemId);\n }\n changeSelection(event, nextSelectedItems);\n },\n selectItem: (event, itemId)=>{\n const nextSelectedItems = new Set(selected);\n nextSelectedItems.add(itemId);\n changeSelection(event, nextSelectedItems);\n },\n deselectItem: (event, itemId)=>{\n const nextSelectedItems = new Set(selected);\n nextSelectedItems.delete(itemId);\n changeSelection(event, nextSelectedItems);\n },\n clearItems: (event)=>{\n changeSelection(event, new Set());\n },\n isSelected: (itemId)=>selected.has(itemId),\n toggleAllItems: (event, itemIds)=>{\n const allItemsSelected = itemIds.every((itemId)=>selected.has(itemId));\n const nextSelectedItems = new Set(selected);\n if (allItemsSelected) {\n nextSelectedItems.clear();\n } else {\n itemIds.forEach((itemId)=>nextSelectedItems.add(itemId));\n }\n changeSelection(event, nextSelectedItems);\n }\n };\n return [\n selected,\n methods\n ];\n}\nexport function useSelection(params) {\n if (params.selectionMode === 'multiselect') {\n // selectionMode is a static value, so we can safely ignore rules-of-hooks\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMultipleSelection(params);\n }\n // selectionMode is a static value, so we can safely ignore rules-of-hooks\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useSingleSelection(params);\n}\n","import * as React from 'react';\nimport { canUseDOM } from './canUseDOM';\n/**\n * Default context value to use in case there is no SSRProvider. This is fine for client-only apps.\n *\n * @internal\n */ export const defaultSSRContextValue = {\n current: 0\n};\nexport const SSRContext = /*#__PURE__*/ React.createContext(undefined);\n/**\n * @internal\n */ export function useSSRContext() {\n var _React_useContext;\n return (_React_useContext = React.useContext(SSRContext)) !== null && _React_useContext !== void 0 ? _React_useContext : defaultSSRContextValue;\n}\n/**\n * When using SSR with Fluent UI, applications must be wrapped in an SSRProvider. This ensures that auto generated ids\n * are consistent between the client and server.\n *\n * @public\n */ export const SSRProvider = (props)=>{\n const [value] = React.useState(()=>({\n current: 0\n }));\n return /*#__PURE__*/ React.createElement(SSRContext.Provider, {\n value: value\n }, props.children);\n};\n/**\n * Returns whether the component is currently being server side rendered or hydrated on the client. Can be used to delay\n * browser-specific rendering until after hydration. May cause re-renders on a client when is used within SSRProvider.\n */ export function useIsSSR() {\n const isInSSRContext = useSSRContext() !== defaultSSRContextValue;\n const [isSSR, setIsSSR] = React.useState(isInSSRContext);\n // If we are rendering in a non-DOM environment, and there's no SSRProvider, provide a warning to hint to the\n // developer to add one.\n if (process.env.NODE_ENV !== 'production') {\n if (!isInSSRContext && !canUseDOM()) {\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-components [${useIsSSR.name}]:\nWhen server rendering, you must wrap your application in an to ensure consistent ids are generated between the client and server.\n\n\nCheck documentation at https://aka.ms/fluentui-ssr.`);\n }\n }\n // If on the client, and the component was initially server rendered, then schedule a layout effect to update the\n // component after hydration.\n if (canUseDOM() && isInSSRContext) {\n // This if statement technically breaks the rules of hooks, but is safe because the condition never changes after\n // mounting.\n // eslint-disable-next-line\n React.useLayoutEffect(()=>{\n setIsSSR(false);\n }, []);\n }\n return isSSR;\n}\n","/**\n * Verifies if an application can use DOM.\n */ export function canUseDOM() {\n return(// eslint-disable-next-line deprecation/deprecation, no-restricted-globals\n typeof window !== 'undefined' && !!(window.document && window.document.createElement));\n}\n","import * as React from 'react';\nimport { isFluentTrigger } from './isFluentTrigger';\n/**\n * @internal\n * resolve the trigger props to the children, either by calling the render function, or cloning with the new props.\n */ export function applyTriggerPropsToChildren(children, triggerChildProps) {\n if (typeof children === 'function') {\n return children(triggerChildProps);\n } else if (children) {\n return cloneTriggerTree(children, triggerChildProps);\n }\n // Components in React should return either JSX elements or \"null\", otherwise React will throw:\n // Nothing was returned from render.\n // This usually means a return statement is missing. Or, to render nothing, return null.\n return children || null;\n}\n/**\n * Clones a React element tree, and applies the given props to the first grandchild that is not\n * a FluentTriggerComponent or React Fragment (the same element returned by {@link getTriggerChild}).\n */ function cloneTriggerTree(child, triggerProps) {\n if (!React.isValidElement(child) || child.type === React.Fragment) {\n throw new Error('A trigger element must be a single element for this component. ' + \"Please ensure that you're not using React Fragments.\");\n }\n if (isFluentTrigger(child)) {\n const grandchild = cloneTriggerTree(child.props.children, triggerProps);\n return React.cloneElement(child, undefined, grandchild);\n } else {\n return React.cloneElement(child, triggerProps);\n }\n}\n","import * as React from 'react';\nimport { isFluentTrigger } from './isFluentTrigger';\n/**\n * @internal\n * Gets the trigger element of a FluentTriggerComponent (such as Tooltip or MenuTrigger).\n *\n * In the case where the immediate child is itself a FluentTriggerComponent and/or React Fragment,\n * it returns the first descendant that is _not_ a FluentTriggerComponent or Fragment.\n * This allows multiple triggers to be stacked, and still apply their props to the actual trigger element.\n *\n * For example, the following returns `
`:\n * ```jsx\n * getTriggerChild(\n * \n * \n *
\n * \n * \n * );\n * ```\n *\n * In the case where the immediate child is not a valid element,\n * null is returned\n */ export function getTriggerChild(children) {\n if (!React.isValidElement(children)) {\n return null;\n }\n return isFluentTrigger(children) ? getTriggerChild(// FIXME: This casting should be unnecessary as isFluentTrigger is a guard type method,\n // but for some reason it's failing on build\n children.props.children) : children;\n}\n","import * as React from 'react';\n/**\n * @internal\n * Checks if a given element is a FluentUI trigger (e.g. `MenuTrigger` or `Tooltip`).\n * See the {@link FluentTriggerComponent} type for more info.\n */ export function isFluentTrigger(element) {\n return Boolean(element.type.isFluentTriggerComponent);\n}\n","/**\n * @internal\n * Clamps `value` to a number between the min and max.\n *\n * @param value - the value to be clamped\n * @param min - the lowest valid value\n * @param max - the highest valid value\n */ export const clamp = (value, min, max)=>Math.max(min, Math.min(max, value || 0));\n","const toObjectMap = (...items)=>{\n const result = {};\n for (const item of items){\n const keys = Array.isArray(item) ? item : Object.keys(item);\n for (const key of keys){\n result[key] = 1;\n }\n }\n return result;\n};\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */ export const baseElementEvents = toObjectMap([\n 'onAuxClick',\n 'onAnimationEnd',\n 'onAnimationStart',\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture'\n]);\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */ export const baseElementProperties = toObjectMap([\n 'accessKey',\n 'children',\n 'className',\n 'contentEditable',\n 'dir',\n 'draggable',\n 'hidden',\n 'htmlFor',\n 'id',\n 'lang',\n 'ref',\n 'role',\n 'style',\n 'tabIndex',\n 'title',\n 'translate',\n 'spellCheck',\n 'name'\n]);\n/**\n * An array of microdata attributes that are allowed on every html element type.\n *\n * @public\n */ export const microdataProperties = toObjectMap([\n 'itemID',\n 'itemProp',\n 'itemRef',\n 'itemScope',\n 'itemType'\n]);\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */ export const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents, microdataProperties);\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */ export const labelProperties = toObjectMap(htmlElementProperties, [\n 'form'\n]);\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */ export const audioProperties = toObjectMap(htmlElementProperties, [\n 'height',\n 'loop',\n 'muted',\n 'preload',\n 'src',\n 'width'\n]);\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */ export const videoProperties = toObjectMap(audioProperties, [\n 'poster'\n]);\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */ export const olProperties = toObjectMap(htmlElementProperties, [\n 'start'\n]);\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */ export const liProperties = toObjectMap(htmlElementProperties, [\n 'value'\n]);\n/**\n * An array of A tag properties and events.\n *\n * @public\n */ export const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download',\n 'href',\n 'hrefLang',\n 'media',\n 'rel',\n 'target',\n 'type'\n]);\n/**\n * An array of TIME tag properties and events.\n *\n * @public\n */ export const timeProperties = toObjectMap(htmlElementProperties, [\n 'dateTime'\n]);\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */ export const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus',\n 'disabled',\n 'form',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'type',\n 'value'\n]);\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */ export const inputProperties = toObjectMap(buttonProperties, [\n 'accept',\n 'alt',\n 'autoCapitalize',\n 'autoComplete',\n 'checked',\n 'dirname',\n 'form',\n 'height',\n 'inputMode',\n 'list',\n 'max',\n 'maxLength',\n 'min',\n 'multiple',\n 'pattern',\n 'placeholder',\n 'readOnly',\n 'required',\n 'src',\n 'step',\n 'size',\n 'type',\n 'value',\n 'width'\n]);\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */ export const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize',\n 'cols',\n 'dirname',\n 'form',\n 'maxLength',\n 'placeholder',\n 'readOnly',\n 'required',\n 'rows',\n 'wrap'\n]);\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */ export const selectProperties = toObjectMap(buttonProperties, [\n 'form',\n 'multiple',\n 'required'\n]);\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected',\n 'value'\n]);\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */ export const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding',\n 'cellSpacing'\n]);\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */ export const trProperties = htmlElementProperties;\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */ export const thProperties = toObjectMap(htmlElementProperties, [\n 'colSpan',\n 'rowSpan',\n 'scope'\n]);\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */ export const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan',\n 'headers',\n 'rowSpan',\n 'scope'\n]);\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span'\n]);\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span'\n]);\n/**\n * An array of FIELDSET tag properties and events.\n *\n * @public\n */ export const fieldsetProperties = toObjectMap(htmlElementProperties, [\n 'disabled',\n 'form'\n]);\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */ export const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset',\n 'action',\n 'encType',\n 'encType',\n 'method',\n 'noValidate',\n 'target'\n]);\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */ export const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow',\n 'allowFullScreen',\n 'allowPaymentRequest',\n 'allowTransparency',\n 'csp',\n 'height',\n 'importance',\n 'referrerPolicy',\n 'sandbox',\n 'src',\n 'srcDoc',\n 'width'\n]);\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */ export const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt',\n 'crossOrigin',\n 'height',\n 'src',\n 'srcSet',\n 'useMap',\n 'width'\n]);\n/**\n * An array of DIALOG tag properties and events.\n *\n * @public\n */ export const dialogProperties = toObjectMap(htmlElementProperties, [\n 'open',\n 'onCancel',\n 'onClose'\n]);\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */ export const divProperties = htmlElementProperties;\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropNames - The array or record of allowed prop names.\n * @param excludedPropNames\n * @returns The filtered props\n */ // eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps(// eslint-disable-next-line @typescript-eslint/no-explicit-any\nprops, allowedPropNames, excludedPropNames) {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = {};\n const keys = Object.keys(props);\n for (const key of keys){\n const isNativeProp = !isArray && allowedPropNames[key] || isArray && allowedPropNames.indexOf(key) >= 0 || key.indexOf('data-') === 0 || key.indexOf('aria-') === 0;\n if (isNativeProp && (!excludedPropNames || (excludedPropNames === null || excludedPropNames === void 0 ? void 0 : excludedPropNames.indexOf(key)) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props[key];\n }\n }\n return result;\n}\n","import * as React from 'react';\nimport { labelProperties, audioProperties, videoProperties, olProperties, liProperties, anchorProperties, buttonProperties, inputProperties, textAreaProperties, selectProperties, optionProperties, tableProperties, trProperties, thProperties, tdProperties, colGroupProperties, colProperties, fieldsetProperties, formProperties, iframeProperties, imgProperties, htmlElementProperties, getNativeProps, timeProperties, dialogProperties } from './properties';\nconst nativeElementMap = {\n label: labelProperties,\n audio: audioProperties,\n video: videoProperties,\n ol: olProperties,\n li: liProperties,\n a: anchorProperties,\n button: buttonProperties,\n input: inputProperties,\n textarea: textAreaProperties,\n select: selectProperties,\n option: optionProperties,\n table: tableProperties,\n tr: trProperties,\n th: thProperties,\n td: tdProperties,\n colGroup: colGroupProperties,\n col: colProperties,\n fieldset: fieldsetProperties,\n form: formProperties,\n iframe: iframeProperties,\n img: imgProperties,\n time: timeProperties,\n dialog: dialogProperties\n};\n/**\n * Given an element tagname and user props, filters the props to only allowed props for the given\n * element type.\n * @param tagName - Tag name (e.g. \"div\")\n * @param props - Props object\n * @param excludedPropNames - List of props to disallow\n *\n * @deprecated use getIntrinsicElementProps instead, it is a type-safe version of this method\n */ // eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeElementProps(tagName, props, excludedPropNames) {\n const allowedPropNames = tagName && nativeElementMap[tagName] || htmlElementProperties;\n allowedPropNames.as = 1;\n return getNativeProps(props, allowedPropNames, excludedPropNames);\n}\n/**\n * Splits the native props into ones that go to the `root` slot, and ones that go to the primary slot.\n *\n * This function is only for use with components that have a primary slot other than `root`.\n * Most components should use {@link getNativeElementProps} for their root slot if it is the primary slot.\n *\n * @returns An object containing the native props for the `root` and primary slots.\n */ export const getPartitionedNativeProps = ({ primarySlotTagName, props, excludedPropNames })=>{\n return {\n root: {\n style: props.style,\n className: props.className\n },\n // eslint-disable-next-line deprecation/deprecation\n primary: getNativeElementProps(primarySlotTagName, props, [\n ...excludedPropNames || [],\n 'style',\n 'className'\n ])\n };\n};\n","/**\n * @internal\n * Finds and swaps a provided key for it's right to left format.\n */ export const getRTLSafeKey = (key, dir)=>{\n if (dir === 'rtl') {\n switch(key){\n case 'ArrowLeft':\n {\n return 'ArrowRight';\n }\n case 'ArrowRight':\n {\n return 'ArrowLeft';\n }\n }\n }\n return key;\n};\n","/**\n * Verifies if a given node is an HTMLElement,\n * this method works seamlessly with frames and elements from different documents\n *\n * This is preferred over simply using `instanceof`.\n * Since `instanceof` might be problematic while operating with [multiple realms](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof#instanceof_and_multiple_realms)\n *\n * @example\n * ```ts\n * isHTMLElement(event.target) && event.target.focus()\n * isHTMLElement(event.target, {constructorName: 'HTMLInputElement'}) && event.target.value // some value\n * ```\n *\n */ export function isHTMLElement(element, options) {\n var _typedElement_ownerDocument;\n const typedElement = element;\n var _options_constructorName;\n return Boolean((typedElement === null || typedElement === void 0 ? void 0 : (_typedElement_ownerDocument = typedElement.ownerDocument) === null || _typedElement_ownerDocument === void 0 ? void 0 : _typedElement_ownerDocument.defaultView) && typedElement instanceof typedElement.ownerDocument.defaultView[(_options_constructorName = options === null || options === void 0 ? void 0 : options.constructorName) !== null && _options_constructorName !== void 0 ? _options_constructorName : 'HTMLElement']);\n}\n","import { isHTMLElement } from './isHTMLElement';\n/**\n * @internal\n * Checks that the element has default behaviour from user input on click or 'Enter'/'Space' keys\n */ export function isInteractiveHTMLElement(element) {\n if (!isHTMLElement(element)) {\n return false;\n }\n const { tagName } = element;\n switch(tagName){\n case 'BUTTON':\n case 'A':\n case 'INPUT':\n case 'TEXTAREA':\n return true;\n }\n return element.isContentEditable;\n}\n","/**\n * @internal\n * Combine two event callbacks into a single callback function that calls each one in order.\n *\n * Usage example:\n * ```ts\n * state.slot.onChange = mergeCallbacks(state.slot.onChange, ev => {\n * // Handle onChange\n * });\n * ```\n *\n * The primary use is to avoid the need to capture an existing callback (`state.slot.onChange` in the example) to a\n * local variable before replacing with a new listener that calls the existing one. This helps avoid bugs like:\n * * Infinite recursion by calling the re-assigned state.slot.onChange if it's not captured to a local variable.\n * * Missing a call to the original onChange due to an early return or other conditional.\n *\n * If you need a callback that is stable between renders, wrap the result in {@link useEventCallback}.\n *\n * @param callback1 - The first callback to be called, or undefined\n * @param callback2 - The second callback to be called, or undefined\n *\n * @returns A function that that calls the provided functions in order\n */ export function mergeCallbacks(callback1, callback2) {\n return (...args)=>{\n callback1 === null || callback1 === void 0 ? void 0 : callback1(...args);\n callback2 === null || callback2 === void 0 ? void 0 : callback2(...args);\n };\n}\n","/**\n * Tiny helper to do the minimal amount of work in duplicating an object but omitting some\n * props. This ends up faster than using object ...rest or reduce to filter.\n *\n * This behaves very much like filteredAssign, but does not merge many objects together,\n * uses an exclusion object map, and avoids spreads all for optimal performance.\n *\n * See perf test for background:\n * https://jsperf.com/omit-vs-rest-vs-reduce/1\n *\n * @param obj - The object to clone\n * @param exclusions - The array of keys to exclude\n */ // eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function omit(obj, exclusions) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = {};\n for(const key in obj){\n if (exclusions.indexOf(key) === -1 && obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n","/**\n * @internal\n */ /**\n * @internal\n * @param compare - comparison function for items\n * @returns Priority queue implemented with a min heap\n */ export function createPriorityQueue(compare) {\n const arr = [];\n let size = 0;\n const swap = (a, b)=>{\n const tmp = arr[a];\n arr[a] = arr[b];\n arr[b] = tmp;\n };\n const heapify = (i)=>{\n let smallest = i;\n const l = left(i);\n const r = right(i);\n if (l < size && compare(arr[l], arr[smallest]) < 0) {\n smallest = l;\n }\n if (r < size && compare(arr[r], arr[smallest]) < 0) {\n smallest = r;\n }\n if (smallest !== i) {\n swap(smallest, i);\n heapify(smallest);\n }\n };\n const dequeue = ()=>{\n if (size === 0) {\n throw new Error('Priority queue empty');\n }\n const res = arr[0];\n arr[0] = arr[--size];\n heapify(0);\n return res;\n };\n const peek = ()=>{\n if (size === 0) {\n return null;\n }\n return arr[0];\n };\n const enqueue = (item)=>{\n arr[size++] = item;\n let i = size - 1;\n let p = parent(i);\n while(i > 0 && compare(arr[p], arr[i]) > 0){\n swap(p, i);\n i = p;\n p = parent(i);\n }\n };\n const contains = (item)=>{\n const index = arr.indexOf(item);\n return index >= 0 && index < size;\n };\n const remove = (item)=>{\n const i = arr.indexOf(item);\n if (i === -1 || i >= size) {\n return;\n }\n arr[i] = arr[--size];\n heapify(i);\n };\n const clear = ()=>{\n size = 0;\n };\n const all = ()=>{\n return arr.slice(0, size);\n };\n return {\n all,\n clear,\n contains,\n dequeue,\n enqueue,\n peek,\n remove,\n size: ()=>size\n };\n}\nconst left = (i)=>{\n return 2 * i + 1;\n};\nconst right = (i)=>{\n return 2 * i + 2;\n};\nconst parent = (i)=>{\n return Math.floor((i - 1) / 2);\n};\n","import { getParent } from './getParent';\n/**\n * Similar functionality to `element.contains` DOM API for use without of order DOM elements that\n * checks the virtual parent hierarchy. If a virtual parents exists, it is chosen over the actual parent\n *\n * @internal\n * @returns true if the child can find the parent in its virtual hierarchy\n */ export function elementContains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n if (parent === child) {\n return true;\n } else {\n // Tracks references of nodes that have been visited to prevent infinite loops\n const set = new WeakSet();\n while(child){\n const nextParent = getParent(child, {\n skipVirtual: set.has(child)\n });\n set.add(child);\n if (nextParent === parent) {\n return true;\n }\n child = nextParent;\n }\n }\n return false;\n}\n","import { isVirtualElement } from './isVirtualElement';\n/**\n * Gets the virtual parent given the child element, if it exists.\n * @internal\n */ function getVirtualParent(child) {\n return isVirtualElement(child) ? child._virtual.parent || null : null;\n}\n/**\n * Gets the element which is the parent of a given element.\n * This method prefers the virtual parent over real DOM parent when present.\n * @internal\n */ export function getParent(child, options = {}) {\n if (!child) {\n return null;\n }\n if (!options.skipVirtual) {\n const virtualParent = getVirtualParent(child);\n if (virtualParent) {\n return virtualParent;\n }\n }\n return (child === null || child === void 0 ? void 0 : child.parentNode) || null;\n}\n","/**\n * Determines whether or not an element has the virtual hierarchy extension.\n * @internal\n */ export function isVirtualElement(element) {\n return element && !!element._virtual;\n}\n","/**\n * Sets the virtual parent of an element.\n *\n * @internal\n * @param child - Theme element to set the virtual parent\n * @param parent - The virtual parent, use `undefined` to remove a virtual parent relationship\n */ export function setVirtualParent(child, parent) {\n if (!child) {\n return;\n }\n const virtualChild = child;\n if (!virtualChild._virtual) {\n virtualChild._virtual = {};\n }\n virtualChild._virtual.parent = parent;\n}\n","import * as React from 'react';\nimport { SLOT_ELEMENT_TYPE_SYMBOL } from './constants';\nimport { isSlot } from './isSlot';\nimport * as slot from './slot';\n/**\n * @internal\n * Assertion method to ensure state slots properties are properly declared.\n * A properly declared slot must be declared by using the `slot` method.\n *\n * @example\n * ```tsx\n * export const renderInput_unstable = (state: InputState) => {\n assertSlots(state);\n return (\n \n {state.contentBefore && }\n \n {state.contentAfter && }\n \n );\n };\n * ```\n */ export function assertSlots(state) {\n /**\n * This verification is not necessary in production\n * as we're verifying static properties that will not change between environments\n */ if (process.env.NODE_ENV !== 'production') {\n const typedState = state;\n for (const slotName of Object.keys(typedState.components)){\n const slotElement = typedState[slotName];\n if (slotElement === undefined) {\n continue;\n }\n // this means a slot is being declared without using, slot.always or slot.optional or even resolveShorthand on the state hook,\n // but the render method is using the new `assertSlots` method. That scenario can be solved by simply updating the slot element with the proper element type\n // FIXME: this slot will still fail to support child render function scenario\n if (!isSlot(slotElement)) {\n typedState[slotName] = slot.always(slotElement, {\n elementType: typedState.components[slotName]\n });\n // eslint-disable-next-line no-console\n console.warn(`@fluentui/react-utilities [${assertSlots.name}]:\n\"state.${slotName}\" is not a slot!\nBe sure to create slots properly by using \"slot.always\" or \"slot.optional\".`);\n } else {\n // This means a slot is being declared by using resolveShorthand on the state hook,\n // but the render method is using the new `assertSlots` method. That scenario can be solved by simply updating the slot element with the proper element type\n const { [SLOT_ELEMENT_TYPE_SYMBOL]: elementType } = slotElement;\n if (elementType !== typedState.components[slotName]) {\n slotElement[SLOT_ELEMENT_TYPE_SYMBOL] = typedState.components[slotName];\n // eslint-disable-next-line no-console\n console.warn(`@fluentui/react-utilities [${assertSlots.name}]:\n\"state.${slotName}\" element type differs from \"state.components.${slotName}\",\n${elementType} !== ${typedState.components[slotName]}.\nBe sure to create slots properly by using \"slot.always\" or \"slot.optional\" with the correct elementType.`);\n }\n }\n }\n }\n}\n","/**\n * @internal\n * Internal reference for the render function\n */ export const SLOT_RENDER_FUNCTION_SYMBOL = Symbol.for('fui.slotRenderFunction');\n/**\n * @internal\n * Internal reference for the render function\n */ export const SLOT_ELEMENT_TYPE_SYMBOL = Symbol.for('fui.slotElementType');\n","import * as React from 'react';\nimport { getNativeElementProps } from '../utils/getNativeElementProps';\n/**\n * Given an element tagname and user props, filters the props to only allowed props for the given\n * element type.\n *\n * Equivalent to {@link getNativeElementProps}, but more type-safe.\n */ export const getIntrinsicElementProps = (/** The slot's default element type (e.g. 'div') */ tagName, /** The component's props object */ props, /** List of native props to exclude from the returned value */ excludedPropNames)=>{\n var _props_as;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return getNativeElementProps((_props_as = props.as) !== null && _props_as !== void 0 ? _props_as : tagName, props, excludedPropNames);\n};\n","import * as React from 'react';\n/**\n * Guard method that validates if a shorthand is a slot\n * can be used to extends properties provided by a slot\n *\n * @example\n * ```\n * const backdropSlot = resolveShorthand(backdrop, {\n * defaultProps: {\n * onClick: useEventCallback(event => {\n * if (isResolvedShorthand(backdrop)) {\n * backdrop.onClick?.(event)\n * }\n * // do something after passing click down the line\n * }),\n * },\n * })\n * ```\n * @example\n * ```\n * const handleBackDropClick = (event) => {\n * // do your thing\n * }\n * const backdropSlot = resolveShorthand(backdrop, {\n * defaultProps: {\n * onClick: useEventCallback(\n * mergeCallbacks(isResolvedShorthand(backdrop) ? backdrop.onClick : undefined, handleBackdropClick)\n * )\n * })\n * ```\n */ export function isResolvedShorthand(shorthand) {\n return shorthand !== null && typeof shorthand === 'object' && !Array.isArray(shorthand) && !React.isValidElement(shorthand);\n}\n","import { SLOT_ELEMENT_TYPE_SYMBOL } from './constants';\n/**\n * Guard method to ensure a given element is a slot.\n * This is mainly used internally to ensure a slot is being used as a component.\n */ export function isSlot(element) {\n return Boolean(element === null || element === void 0 ? void 0 : element.hasOwnProperty(SLOT_ELEMENT_TYPE_SYMBOL));\n}\n","import * as React from 'react';\nimport { SLOT_ELEMENT_TYPE_SYMBOL, SLOT_RENDER_FUNCTION_SYMBOL } from './constants';\n/**\n * Creates a slot from a slot shorthand or properties (`props.SLOT_NAME` or `props` itself)\n * @param value - the value of the slot, it can be a slot shorthand, a slot component or a slot properties\n * @param options - values you can pass to alter the signature of a slot, those values are:\n *\n * * `elementType` - the base element type of a slot, defaults to `'div'`\n * * `defaultProps` - similar to a React component declaration, you can provide a slot default properties to be merged with the shorthand/properties provided.\n */ export function always(value, options) {\n const { defaultProps, elementType } = options;\n const props = resolveShorthand(value);\n /**\n * Casting is required here as SlotComponentType is a function, not an object.\n * Although SlotComponentType has a function signature, it is still just an object.\n * This is required to make a slot callable (JSX compatible), this is the exact same approach\n * that is used on `@types/react` components\n */ const propsWithMetadata = {\n ...defaultProps,\n ...props,\n [SLOT_ELEMENT_TYPE_SYMBOL]: elementType\n };\n if (props && typeof props.children === 'function') {\n propsWithMetadata[SLOT_RENDER_FUNCTION_SYMBOL] = props.children;\n propsWithMetadata.children = defaultProps === null || defaultProps === void 0 ? void 0 : defaultProps.children;\n }\n return propsWithMetadata;\n}\n/**\n * Creates a slot from a slot shorthand or properties (`props.SLOT_NAME` or `props` itself)\n * @param value - the value of the slot, it can be a slot shorthand, a slot component or a slot properties\n * @param options - values you can pass to alter the signature of a slot, those values are:\n *\n * * `elementType` - the base element type of a slot, defaults to `'div'`\n * * `defaultProps` - similar to a React component declaration, you can provide a slot default properties to be merged with the shorthand/properties provided\n * * `renderByDefault` - a boolean that indicates if a slot will be rendered even if it's base value is `undefined`.\n * By default if `props.SLOT_NAME` is `undefined` then `state.SLOT_NAME` becomes `undefined`\n * and nothing will be rendered, but if `renderByDefault = true` then `state.SLOT_NAME` becomes an object\n * with the values provided by `options.defaultProps` (or `{}`). This is useful for cases such as providing a default content\n * in case no shorthand is provided, like the case of the `expandIcon` slot for the `AccordionHeader`\n */ export function optional(value, options) {\n if (value === null || value === undefined && !options.renderByDefault) {\n return undefined;\n }\n return always(value, options);\n}\n/**\n * Helper function that converts a slot shorthand or properties to a slot properties object\n * The main difference between this function and `slot` is that this function does not return the metadata required for a slot to be considered a properly renderable slot, it only converts the value to a slot properties object\n * @param value - the value of the slot, it can be a slot shorthand or a slot properties object\n */ export function resolveShorthand(value) {\n if (typeof value === 'string' || typeof value === 'number' || Array.isArray(value) || // eslint-disable-next-line @typescript-eslint/no-explicit-any\n React.isValidElement(value)) {\n return {\n children: value\n };\n }\n if (value && typeof value !== 'object' && process.env.NODE_ENV !== 'production') {\n // TODO: would be nice to have a link to slot documentation in this error message\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-utilities [slot.${resolveShorthand.name}]:\nA slot got an invalid value \"${value}\" (${typeof value}).\nA valid value for a slot is a slot shorthand or slot properties object.\nSlot shorthands can be strings, numbers, arrays or JSX elements`);\n }\n return value;\n}\n","import * as React from 'react';\n/**\n * @internal\n * Helper to manage a browser timer.\n * Ensures that the timer isn't set multiple times at once,\n * and is cleaned up when the component is unloaded.\n *\n * @param setTimer - The timer setter function\n * @param cancelTimer - The timer cancel function\n * @returns A pair of [setTimer, cancelTimer] that are stable between renders.\n *\n * @example\n * const [setTimer, cancelTimer] = useBrowserTimer(setTimeout, cancelTimeout);\n *\n * setTimer(() => console.log('Hello world!'), 1000);\n * cancelTimer();\n */ export function useBrowserTimer(setTimer, cancelTimer) {\n const id = React.useRef(undefined);\n const set = React.useCallback((fn, delay)=>{\n if (id.current !== undefined) {\n cancelTimer(id.current);\n }\n id.current = setTimer(fn, delay);\n return id.current;\n }, [\n cancelTimer,\n setTimer\n ]);\n const cancel = React.useCallback(()=>{\n if (id.current !== undefined) {\n cancelTimer(id.current);\n id.current = undefined;\n }\n }, [\n cancelTimer\n ]);\n // Clean up the timeout when the component is unloaded\n React.useEffect(()=>cancel, [\n cancel\n ]);\n return [\n set,\n cancel\n ];\n}\n","import * as React from 'react';\nfunction isFactoryDispatch(newState) {\n return typeof newState === 'function';\n}\n/**\n * @internal\n *\n * A [`useState`](https://reactjs.org/docs/hooks-reference.html#usestate)-like hook\n * to manage a value that could be either `controlled` or `uncontrolled`,\n * such as a checked state or text input string.\n *\n * @see https://react.dev/learn/sharing-state-between-components#controlled-and-uncontrolled-components for more details on `controlled`/`uncontrolled`\n *\n * @returns an array of the current value and an updater (dispatcher) function.\n * The updater function is referentially stable (won't change during the component's lifecycle).\n * It can take either a new value, or a function which is passed the previous value and returns the new value.\n *\n * ❗️❗️ Calls to the dispatcher will only modify the state if the state is `uncontrolled`.\n * Meaning that if a state is `controlled`, calls to the dispatcher do not modify the state.\n *\n */ export const useControllableState = (options)=>{\n 'use no memo';\n if (process.env.NODE_ENV !== 'production') {\n if (options.state !== undefined && options.defaultState !== undefined) {\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-utilities [useControllableState]:\nA component must be either controlled or uncontrolled (specify either the state or the defaultState, but not both).\nDecide between using a controlled or uncontrolled component and remove one of this props.\nMore info: https://reactjs.org/link/controlled-components\n${new Error().stack}`);\n }\n }\n const [internalState, setInternalState] = React.useState(()=>{\n if (options.defaultState === undefined) {\n return options.initialState;\n }\n return isInitializer(options.defaultState) ? options.defaultState() : options.defaultState;\n });\n // Heads up!\n // This part is specific for controlled mode and mocks behavior of React dispatcher function.\n const stateValueRef = React.useRef(options.state);\n React.useEffect(()=>{\n stateValueRef.current = options.state;\n }, [\n options.state\n ]);\n const setControlledState = React.useCallback((newState)=>{\n if (isFactoryDispatch(newState)) {\n newState(stateValueRef.current);\n }\n }, []);\n return useIsControlled(options.state) ? [\n options.state,\n setControlledState\n ] : [\n internalState,\n setInternalState\n ];\n};\nfunction isInitializer(value) {\n return typeof value === 'function';\n}\n/**\n * Helper hook to handle previous comparison of controlled/uncontrolled\n * Prints an error when isControlled value switches between subsequent renders\n * @returns - whether the value is controlled\n */ const useIsControlled = (controlledValue)=>{\n 'use no memo';\n const [isControlled] = React.useState(()=>controlledValue !== undefined);\n if (process.env.NODE_ENV !== 'production') {\n // We don't want these warnings in production even though it is against native behaviour\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(()=>{\n if (isControlled !== (controlledValue !== undefined)) {\n const error = new Error();\n const controlWarning = isControlled ? 'a controlled value to be uncontrolled' : 'an uncontrolled value to be controlled';\n const undefinedWarning = isControlled ? 'defined to an undefined' : 'undefined to a defined';\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-utilities [useControllableState]:\nA component is changing ${controlWarning}. This is likely caused by the value changing from ${undefinedWarning} value, which should not happen.\nDecide between using a controlled or uncontrolled input element for the lifetime of the component.\nMore info: https://reactjs.org/link/controlled-components\n${error.stack}`);\n }\n }, [\n isControlled,\n controlledValue\n ]);\n }\n return isControlled;\n};\n","import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n/**\n * @internal\n * https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n *\n * Modified `useCallback` that can be used when dependencies change too frequently. Can occur when\n * e.g. user props are dependencies which could change on every render\n * e.g. volatile values (i.e. useState/useDispatch) are dependencies which could change frequently\n *\n * This should not be used often, but can be a useful re-render optimization since the callback is a ref and\n * will not be invalidated between re-renders\n *\n * @param fn - The callback function that will be used\n */ export const useEventCallback = (fn)=>{\n const callbackRef = React.useRef(()=>{\n throw new Error('Cannot call an event handler while rendering');\n });\n useIsomorphicLayoutEffect(()=>{\n callbackRef.current = fn;\n }, [\n fn\n ]);\n return React.useCallback((...args)=>{\n const callback = callbackRef.current;\n return callback(...args);\n }, [\n callbackRef\n ]);\n};\n","import * as React from 'react';\n/**\n * @internal\n * Checks if components was mounted the first time.\n * Since concurrent mode will be released in the future this needs to be verified\n * Currently (React 17) will always render the initial mount once\n * https://codesandbox.io/s/heuristic-brook-s4w0q?file=/src/App.jsx\n * https://codesandbox.io/s/holy-grass-8nieu?file=/src/App.jsx\n *\n * @example\n * const isFirstMount = useFirstMount();\n */ export function useFirstMount() {\n const isFirst = React.useRef(true);\n if (isFirst.current) {\n isFirst.current = false;\n return true;\n }\n return isFirst.current;\n}\n","import * as React from 'react';\nimport { canUseDOM } from './canUseDOM';\n/**\n * Default context value to use in case there is no SSRProvider. This is fine for client-only apps.\n *\n * @internal\n */ export const defaultSSRContextValue = {\n current: 0\n};\nexport const SSRContext = /*#__PURE__*/ React.createContext(undefined);\n/**\n * @internal\n */ export function useSSRContext() {\n var _React_useContext;\n return (_React_useContext = React.useContext(SSRContext)) !== null && _React_useContext !== void 0 ? _React_useContext : defaultSSRContextValue;\n}\n/**\n * When using SSR with Fluent UI, applications must be wrapped in an SSRProvider. This ensures that auto generated ids\n * are consistent between the client and server.\n *\n * @public\n */ export const SSRProvider = (props)=>{\n const [value] = React.useState(()=>({\n current: 0\n }));\n return /*#__PURE__*/ React.createElement(SSRContext.Provider, {\n value: value\n }, props.children);\n};\n/**\n * Returns whether the component is currently being server side rendered or hydrated on the client. Can be used to delay\n * browser-specific rendering until after hydration. May cause re-renders on a client when is used within SSRProvider.\n */ export function useIsSSR() {\n const isInSSRContext = useSSRContext() !== defaultSSRContextValue;\n const [isSSR, setIsSSR] = React.useState(isInSSRContext);\n // If we are rendering in a non-DOM environment, and there's no SSRProvider, provide a warning to hint to the\n // developer to add one.\n if (process.env.NODE_ENV !== 'production') {\n if (!isInSSRContext && !canUseDOM()) {\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-components [${useIsSSR.name}]:\nWhen server rendering, you must wrap your application in an to ensure consistent ids are generated between the client and server.\n\n\nCheck documentation at https://aka.ms/fluentui-ssr.`);\n }\n }\n // If on the client, and the component was initially server rendered, then schedule a layout effect to update the\n // component after hydration.\n if (canUseDOM() && isInSSRContext) {\n // This if statement technically breaks the rules of hooks, but is safe because the condition never changes after\n // mounting.\n // eslint-disable-next-line\n React.useLayoutEffect(()=>{\n setIsSSR(false);\n }, []);\n }\n return isSSR;\n}\n","import * as React from 'react';\nimport { defaultSSRContextValue, useSSRContext } from '../ssr/index';\nconst IdPrefixContext = React.createContext(undefined);\n/**\n * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions\n * between different bundles.\n */ export const IdPrefixProvider = IdPrefixContext.Provider;\nfunction useIdPrefix() {\n return React.useContext(IdPrefixContext) || '';\n}\n/**\n * Resets generated IDs, should be used only in tests.\n */ export function resetIdsForTests() {\n defaultSSRContextValue.current = 0;\n}\n/**\n * Hook to generate a unique ID.\n *\n * @param prefix - Optional prefix for the ID. Defaults to 'fui-'.\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */ export function useId(prefix = 'fui-', providedId) {\n 'use no memo';\n const contextValue = useSSRContext();\n const idPrefix = useIdPrefix();\n // Checking if useId is available on React, if it is, we use it to generate the id. String concatenation is used to\n // prevent bundlers from complaining with older versions of React.\n const _useId = React['use' + 'Id'];\n if (_useId) {\n const generatedId = _useId();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const escapedId = React.useMemo(()=>generatedId.replace(/:/g, ''), [\n generatedId\n ]);\n return providedId || `${idPrefix}${prefix}${escapedId}`;\n }\n // Hooks appear to be running conditionally, but they will always run in the same order since it's based on\n // the version of React being used. This is safe to ignore.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return React.useMemo(()=>{\n if (providedId) {\n return providedId;\n }\n return `${idPrefix}${prefix}${++contextValue.current}`;\n }, [\n idPrefix,\n prefix,\n providedId,\n contextValue\n ]);\n}\n","import * as React from 'react';\nimport { canUseDOM } from '../ssr/index';\n/**\n * React currently throws a warning when using useLayoutEffect on the server. To get around it, we can conditionally\n * useEffect on the server (no-op) and useLayoutEffect in the browser. We occasionally need useLayoutEffect to\n * ensure we don't get a render flash for certain operations, but we may also need affected components to render on\n * the server.\n *\n * https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.js\n */ // eslint-disable-next-line no-restricted-properties\nexport const useIsomorphicLayoutEffect = canUseDOM() ? React.useLayoutEffect : React.useEffect;\n","import * as React from 'react';\n/**\n * React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that\n * updates all provided refs\n * @param refs - Refs to collectively update with one ref value.\n * @returns A function with an attached \"current\" prop, so that it can be treated like a RefObject.\n */ export function useMergedRefs(...refs) {\n 'use no memo';\n const mergedCallback = React.useCallback((value)=>{\n // Update the \"current\" prop hanging on the function.\n mergedCallback.current = value;\n for (const ref of refs){\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n // work around the immutability of the React.Ref type\n ref.current = value;\n }\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps -- already exhaustive\n [\n ...refs\n ]);\n return mergedCallback;\n}\n","import * as React from 'react';\nimport { useEventCallback } from './useEventCallback';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nconst DEFAULT_CONTAINS = (parent, child)=>!!(parent === null || parent === void 0 ? void 0 : parent.contains(child));\n/**\n * @internal\n * Utility to perform checks where a click/touch event was made outside a component\n */ export const useOnClickOutside = (options)=>{\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n const { refs, callback, element, disabled, disabledFocusOnIframe, contains = DEFAULT_CONTAINS } = options;\n const timeoutId = React.useRef(undefined);\n useIFrameFocus({\n element,\n disabled: disabledFocusOnIframe || disabled,\n callback,\n refs,\n contains\n });\n const isMouseDownInsideRef = React.useRef(false);\n const listener = useEventCallback((ev)=>{\n if (isMouseDownInsideRef.current) {\n isMouseDownInsideRef.current = false;\n return;\n }\n const target = ev.composedPath()[0];\n const isOutside = refs.every((ref)=>!contains(ref.current || null, target));\n if (isOutside && !disabled) {\n callback(ev);\n }\n });\n const handleMouseDown = useEventCallback((ev)=>{\n // Selecting text from inside to outside will rigger click event.\n // In this case click event target is outside but mouse down event target is inside.\n // And this click event should be considered as inside click.\n isMouseDownInsideRef.current = refs.some((ref)=>contains(ref.current || null, ev.target));\n });\n React.useEffect(()=>{\n if (disabled) {\n return;\n }\n // Store the current event to avoid triggering handlers immediately\n // Note this depends on a deprecated but extremely well supported quirk of the web platform\n // https://github.com/facebook/react/issues/20074\n let currentEvent = getWindowEvent(win);\n const conditionalHandler = (event)=>{\n // Skip if this event is the same as the one running when we added the handlers\n if (event === currentEvent) {\n currentEvent = undefined;\n return;\n }\n listener(event);\n };\n // use capture phase because React can update DOM before the event bubbles to the document\n element === null || element === void 0 ? void 0 : element.addEventListener('click', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.addEventListener('touchstart', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.addEventListener('contextmenu', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.addEventListener('mousedown', handleMouseDown, true);\n // Garbage collect this event after it's no longer useful to avoid memory leaks\n timeoutId.current = win === null || win === void 0 ? void 0 : win.setTimeout(()=>{\n currentEvent = undefined;\n }, 1);\n return ()=>{\n element === null || element === void 0 ? void 0 : element.removeEventListener('click', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.removeEventListener('touchstart', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.removeEventListener('contextmenu', conditionalHandler, true);\n element === null || element === void 0 ? void 0 : element.removeEventListener('mousedown', handleMouseDown, true);\n win === null || win === void 0 ? void 0 : win.clearTimeout(timeoutId.current);\n currentEvent = undefined;\n };\n }, [\n listener,\n element,\n disabled,\n handleMouseDown,\n win\n ]);\n};\nconst getWindowEvent = (target)=>{\n if (target) {\n var _target_ownerDocument_defaultView, _target_ownerDocument;\n if (typeof target.window === 'object' && target.window === target) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return target.event;\n }\n var _target_ownerDocument_defaultView_event;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return (_target_ownerDocument_defaultView_event = (_target_ownerDocument = target.ownerDocument) === null || _target_ownerDocument === void 0 ? void 0 : (_target_ownerDocument_defaultView = _target_ownerDocument.defaultView) === null || _target_ownerDocument_defaultView === void 0 ? void 0 : _target_ownerDocument_defaultView.event) !== null && _target_ownerDocument_defaultView_event !== void 0 ? _target_ownerDocument_defaultView_event : undefined;\n }\n return undefined;\n};\nconst FUI_FRAME_EVENT = 'fuiframefocus';\n/**\n * Since click events do not propagate past iframes, we use focus to detect if a\n * click has happened inside an iframe, since the only ways of focusing inside an\n * iframe are:\n * - clicking inside\n * - tabbing inside\n *\n * Polls the value of `document.activeElement`. If it is an iframe, then dispatch\n * a custom DOM event. When the custom event is received call the provided callback\n */ const useIFrameFocus = (options)=>{\n const { disabled, element: targetDocument, callback, contains = DEFAULT_CONTAINS, pollDuration = 1000, refs } = options;\n const timeoutRef = React.useRef();\n const listener = useEventCallback((e)=>{\n const isOutside = refs.every((ref)=>!contains(ref.current || null, e.target));\n if (isOutside && !disabled) {\n callback(e);\n }\n });\n // Adds listener to the custom iframe focus event\n React.useEffect(()=>{\n if (disabled) {\n return;\n }\n targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.addEventListener(FUI_FRAME_EVENT, listener, true);\n return ()=>{\n targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.removeEventListener(FUI_FRAME_EVENT, listener, true);\n };\n }, [\n targetDocument,\n disabled,\n listener\n ]);\n // Starts polling for the active element\n React.useEffect(()=>{\n var _targetDocument_defaultView;\n if (disabled) {\n return;\n }\n timeoutRef.current = targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.setInterval(()=>{\n const activeElement = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.activeElement;\n if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.tagName) === 'IFRAME' || (activeElement === null || activeElement === void 0 ? void 0 : activeElement.tagName) === 'WEBVIEW') {\n const event = new CustomEvent(FUI_FRAME_EVENT, {\n bubbles: true\n });\n activeElement.dispatchEvent(event);\n }\n }, pollDuration);\n return ()=>{\n var _targetDocument_defaultView;\n targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.clearTimeout(timeoutRef.current);\n };\n }, [\n targetDocument,\n disabled,\n pollDuration\n ]);\n};\n","import * as React from 'react';\nimport { useEventCallback } from './useEventCallback';\n/**\n * @internal\n * Utility to perform checks where a click/touch event was made outside a component\n */ export const useOnScrollOutside = (options)=>{\n const { refs, callback, element, disabled, contains: containsProp } = options;\n const listener = useEventCallback((ev)=>{\n const contains = containsProp || ((parent, child)=>!!(parent === null || parent === void 0 ? void 0 : parent.contains(child)));\n const target = ev.composedPath()[0];\n const isOutside = refs.every((ref)=>!contains(ref.current || null, target));\n if (isOutside && !disabled) {\n callback(ev);\n }\n });\n React.useEffect(()=>{\n if (disabled) {\n return;\n }\n element === null || element === void 0 ? void 0 : element.addEventListener('wheel', listener);\n element === null || element === void 0 ? void 0 : element.addEventListener('touchmove', listener);\n return ()=>{\n element === null || element === void 0 ? void 0 : element.removeEventListener('wheel', listener);\n element === null || element === void 0 ? void 0 : element.removeEventListener('touchmove', listener);\n };\n }, [\n listener,\n element,\n disabled\n ]);\n};\n","import { useBrowserTimer } from './useBrowserTimer';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nconst setTimeoutNoop = (_callback)=>-1;\nconst clearTimeoutNoop = (_handle)=>undefined;\n/**\n * @internal\n * Helper to manage a browser timeout.\n * Ensures that the timeout isn't set multiple times at once and is cleaned up\n * when the component is unloaded.\n *\n * @returns A pair of [setTimeout, clearTimeout] that are stable between renders.\n */ export function useTimeout() {\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n const setTimerFn = win ? win.setTimeout : setTimeoutNoop;\n const clearTimerFn = win ? win.clearTimeout : clearTimeoutNoop;\n return useBrowserTimer(setTimerFn, clearTimerFn);\n}\n","/**\n * Verifies if an application can use DOM.\n */ export function canUseDOM() {\n return /* eslint-disable @nx/workspace-no-restricted-globals -- expected ignore ( SSR friendly acquisition of globals )*/ typeof window !== 'undefined' && !!(window.document && // eslint-disable-next-line @typescript-eslint/no-deprecated\n window.document.createElement);\n}\n","import * as React from 'react';\nimport { isFluentTrigger } from './isFluentTrigger';\n/**\n * @internal\n * resolve the trigger props to the children, either by calling the render function, or cloning with the new props.\n */ export function applyTriggerPropsToChildren(children, triggerChildProps) {\n if (typeof children === 'function') {\n return children(triggerChildProps);\n } else if (children) {\n return cloneTriggerTree(children, triggerChildProps);\n }\n // Components in React should return either JSX elements or \"null\", otherwise React will throw:\n // Nothing was returned from render.\n // This usually means a return statement is missing. Or, to render nothing, return null.\n return children || null;\n}\n/**\n * Clones a React element tree, and applies the given props to the first grandchild that is not\n * a FluentTriggerComponent or React Fragment (the same element returned by {@link getTriggerChild}).\n */ function cloneTriggerTree(child, triggerProps) {\n if (!React.isValidElement(child) || child.type === React.Fragment) {\n throw new Error('A trigger element must be a single element for this component. ' + \"Please ensure that you're not using React Fragments.\");\n }\n if (isFluentTrigger(child)) {\n const grandchild = cloneTriggerTree(child.props.children, triggerProps);\n return React.cloneElement(child, undefined, grandchild);\n } else {\n return React.cloneElement(child, triggerProps);\n }\n}\n","import * as React from 'react';\nimport { isFluentTrigger } from './isFluentTrigger';\n/**\n * @internal\n * Gets the trigger element of a FluentTriggerComponent (such as Tooltip or MenuTrigger).\n *\n * In the case where the immediate child is itself a FluentTriggerComponent and/or React Fragment,\n * it returns the first descendant that is _not_ a FluentTriggerComponent or Fragment.\n * This allows multiple triggers to be stacked, and still apply their props to the actual trigger element.\n *\n * For example, the following returns `
`:\n * ```jsx\n * getTriggerChild(\n * \n * \n *
\n * \n * \n * );\n * ```\n *\n * In the case where the immediate child is not a valid element,\n * null is returned\n */ export function getTriggerChild(children) {\n if (!React.isValidElement(children)) {\n return null;\n }\n return isFluentTrigger(children) ? getTriggerChild(// FIXME: This casting should be unnecessary as isFluentTrigger is a guard type method,\n // but for some reason it's failing on build\n children.props.children) : children;\n}\n","import * as React from 'react';\n/**\n * @internal\n * Checks if a given element is a FluentUI trigger (e.g. `MenuTrigger` or `Tooltip`).\n * See the {@link FluentTriggerComponent} type for more info.\n */ export function isFluentTrigger(element) {\n return Boolean(element.type.isFluentTriggerComponent);\n}\n","const toObjectMap = (...items)=>{\n const result = {};\n for (const item of items){\n const keys = Array.isArray(item) ? item : Object.keys(item);\n for (const key of keys){\n result[key] = 1;\n }\n }\n return result;\n};\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */ export const baseElementEvents = toObjectMap([\n 'onAuxClick',\n 'onAnimationEnd',\n 'onAnimationStart',\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture'\n]);\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */ export const baseElementProperties = toObjectMap([\n 'accessKey',\n 'children',\n 'className',\n 'contentEditable',\n 'dir',\n 'draggable',\n 'hidden',\n 'htmlFor',\n 'id',\n 'lang',\n 'ref',\n 'role',\n 'style',\n 'tabIndex',\n 'title',\n 'translate',\n 'spellCheck',\n 'name'\n]);\n/**\n * An array of microdata attributes that are allowed on every html element type.\n *\n * @public\n */ export const microdataProperties = toObjectMap([\n 'itemID',\n 'itemProp',\n 'itemRef',\n 'itemScope',\n 'itemType'\n]);\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */ export const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents, microdataProperties);\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */ export const labelProperties = toObjectMap(htmlElementProperties, [\n 'form'\n]);\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */ export const audioProperties = toObjectMap(htmlElementProperties, [\n 'height',\n 'loop',\n 'muted',\n 'preload',\n 'src',\n 'width'\n]);\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */ export const videoProperties = toObjectMap(audioProperties, [\n 'poster'\n]);\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */ export const olProperties = toObjectMap(htmlElementProperties, [\n 'start'\n]);\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */ export const liProperties = toObjectMap(htmlElementProperties, [\n 'value'\n]);\n/**\n * An array of A tag properties and events.\n *\n * @public\n */ export const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download',\n 'href',\n 'hrefLang',\n 'media',\n 'rel',\n 'target',\n 'type'\n]);\n/**\n * An array of TIME tag properties and events.\n *\n * @public\n */ export const timeProperties = toObjectMap(htmlElementProperties, [\n 'dateTime'\n]);\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */ export const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus',\n 'disabled',\n 'form',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'type',\n 'value'\n]);\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */ export const inputProperties = toObjectMap(buttonProperties, [\n 'accept',\n 'alt',\n 'autoCorrect',\n 'autoCapitalize',\n 'autoComplete',\n 'checked',\n 'dirname',\n 'form',\n 'height',\n 'inputMode',\n 'list',\n 'max',\n 'maxLength',\n 'min',\n 'minLength',\n 'multiple',\n 'pattern',\n 'placeholder',\n 'readOnly',\n 'required',\n 'src',\n 'step',\n 'size',\n 'type',\n 'value',\n 'width'\n]);\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */ export const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize',\n 'cols',\n 'dirname',\n 'form',\n 'maxLength',\n 'placeholder',\n 'readOnly',\n 'required',\n 'rows',\n 'wrap'\n]);\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */ export const selectProperties = toObjectMap(buttonProperties, [\n 'form',\n 'multiple',\n 'required'\n]);\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected',\n 'value'\n]);\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */ export const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding',\n 'cellSpacing'\n]);\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */ export const trProperties = htmlElementProperties;\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */ export const thProperties = toObjectMap(htmlElementProperties, [\n 'colSpan',\n 'rowSpan',\n 'scope'\n]);\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */ export const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan',\n 'headers',\n 'rowSpan',\n 'scope'\n]);\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span'\n]);\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span'\n]);\n/**\n * An array of FIELDSET tag properties and events.\n *\n * @public\n */ export const fieldsetProperties = toObjectMap(htmlElementProperties, [\n 'disabled',\n 'form'\n]);\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */ export const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset',\n 'action',\n 'encType',\n 'encType',\n 'method',\n 'noValidate',\n 'target'\n]);\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */ export const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow',\n 'allowFullScreen',\n 'allowPaymentRequest',\n 'allowTransparency',\n 'csp',\n 'height',\n 'importance',\n 'referrerPolicy',\n 'sandbox',\n 'src',\n 'srcDoc',\n 'width'\n]);\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */ export const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt',\n 'crossOrigin',\n 'height',\n 'src',\n 'srcSet',\n 'useMap',\n 'width'\n]);\n/**\n * An array of DIALOG tag properties and events.\n *\n * @public\n */ export const dialogProperties = toObjectMap(htmlElementProperties, [\n 'open',\n 'onCancel',\n 'onClose'\n]);\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */ export const divProperties = htmlElementProperties;\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropNames - The array or record of allowed prop names.\n * @param excludedPropNames\n * @returns The filtered props\n */ // eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps(// eslint-disable-next-line @typescript-eslint/no-explicit-any\nprops, allowedPropNames, excludedPropNames) {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = {};\n const keys = Object.keys(props);\n for (const key of keys){\n const isNativeProp = !isArray && allowedPropNames[key] || isArray && allowedPropNames.indexOf(key) >= 0 || key.indexOf('data-') === 0 || key.indexOf('aria-') === 0;\n if (isNativeProp && (!excludedPropNames || (excludedPropNames === null || excludedPropNames === void 0 ? void 0 : excludedPropNames.indexOf(key)) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props[key];\n }\n }\n return result;\n}\n","import * as React from 'react';\nimport { labelProperties, audioProperties, videoProperties, olProperties, liProperties, anchorProperties, buttonProperties, inputProperties, textAreaProperties, selectProperties, optionProperties, tableProperties, trProperties, thProperties, tdProperties, colGroupProperties, colProperties, fieldsetProperties, formProperties, iframeProperties, imgProperties, htmlElementProperties, getNativeProps, timeProperties, dialogProperties } from './properties';\nconst nativeElementMap = {\n label: labelProperties,\n audio: audioProperties,\n video: videoProperties,\n ol: olProperties,\n li: liProperties,\n a: anchorProperties,\n button: buttonProperties,\n input: inputProperties,\n textarea: textAreaProperties,\n select: selectProperties,\n option: optionProperties,\n table: tableProperties,\n tr: trProperties,\n th: thProperties,\n td: tdProperties,\n colGroup: colGroupProperties,\n col: colProperties,\n fieldset: fieldsetProperties,\n form: formProperties,\n iframe: iframeProperties,\n img: imgProperties,\n time: timeProperties,\n dialog: dialogProperties\n};\n/**\n * Given an element tagname and user props, filters the props to only allowed props for the given\n * element type.\n * @param tagName - Tag name (e.g. \"div\")\n * @param props - Props object\n * @param excludedPropNames - List of props to disallow\n *\n * @deprecated use getIntrinsicElementProps instead, it is a type-safe version of this method\n */ // eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeElementProps(tagName, props, excludedPropNames) {\n const allowedPropNames = tagName && nativeElementMap[tagName] || htmlElementProperties;\n allowedPropNames.as = 1;\n return getNativeProps(props, allowedPropNames, excludedPropNames);\n}\n/**\n * Splits the native props into ones that go to the `root` slot, and ones that go to the primary slot.\n *\n * This function is only for use with components that have a primary slot other than `root`.\n * Most components should use {@link getNativeElementProps} for their root slot if it is the primary slot.\n *\n * @returns An object containing the native props for the `root` and primary slots.\n */ export const getPartitionedNativeProps = ({ primarySlotTagName, props, excludedPropNames })=>{\n return {\n root: {\n style: props.style,\n className: props.className\n },\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n primary: getNativeElementProps(primarySlotTagName, props, [\n ...excludedPropNames || [],\n 'style',\n 'className'\n ])\n };\n};\n","/**\n * Verifies if a given node is an HTMLElement,\n * this method works seamlessly with frames and elements from different documents\n *\n * This is preferred over simply using `instanceof`.\n * Since `instanceof` might be problematic while operating with [multiple realms](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof#instanceof_and_multiple_realms)\n *\n * @example\n * ```ts\n * isHTMLElement(event.target) && event.target.focus()\n * isHTMLElement(event.target, {constructorName: 'HTMLInputElement'}) && event.target.value // some value\n * ```\n *\n */ export function isHTMLElement(element, options) {\n var _typedElement_ownerDocument;\n const typedElement = element;\n var _options_constructorName;\n return Boolean((typedElement === null || typedElement === void 0 ? void 0 : (_typedElement_ownerDocument = typedElement.ownerDocument) === null || _typedElement_ownerDocument === void 0 ? void 0 : _typedElement_ownerDocument.defaultView) && typedElement instanceof typedElement.ownerDocument.defaultView[(_options_constructorName = options === null || options === void 0 ? void 0 : options.constructorName) !== null && _options_constructorName !== void 0 ? _options_constructorName : 'HTMLElement']);\n}\n","/**\n * @internal\n * Combine two event callbacks into a single callback function that calls each one in order.\n *\n * Usage example:\n * ```ts\n * state.slot.onChange = mergeCallbacks(state.slot.onChange, ev => {\n * // Handle onChange\n * });\n * ```\n *\n * The primary use is to avoid the need to capture an existing callback (`state.slot.onChange` in the example) to a\n * local variable before replacing with a new listener that calls the existing one. This helps avoid bugs like:\n * * Infinite recursion by calling the re-assigned state.slot.onChange if it's not captured to a local variable.\n * * Missing a call to the original onChange due to an early return or other conditional.\n *\n * If you need a callback that is stable between renders, wrap the result in {@link useEventCallback}.\n *\n * @param callback1 - The first callback to be called, or undefined\n * @param callback2 - The second callback to be called, or undefined\n *\n * @returns A function that that calls the provided functions in order\n */ export function mergeCallbacks(callback1, callback2) {\n return (...args)=>{\n callback1 === null || callback1 === void 0 ? void 0 : callback1(...args);\n callback2 === null || callback2 === void 0 ? void 0 : callback2(...args);\n };\n}\n","import { getParent } from './getParent';\n/**\n * Similar functionality to `element.contains` DOM API for use without of order DOM elements that\n * checks the virtual parent hierarchy. If a virtual parents exists, it is chosen over the actual parent\n *\n * @internal\n * @returns true if the child can find the parent in its virtual hierarchy\n */ export function elementContains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n if (parent === child) {\n return true;\n } else {\n // Tracks references of nodes that have been visited to prevent infinite loops\n const set = new WeakSet();\n while(child){\n const nextParent = getParent(child, {\n skipVirtual: set.has(child)\n });\n set.add(child);\n if (nextParent === parent) {\n return true;\n }\n child = nextParent;\n }\n }\n return false;\n}\n","import { isVirtualElement } from './isVirtualElement';\n/**\n * Gets the virtual parent given the child element, if it exists.\n * @internal\n */ function getVirtualParent(child) {\n return isVirtualElement(child) ? child._virtual.parent || null : null;\n}\n/**\n * Gets the element which is the parent of a given element.\n * This method prefers the virtual parent over real DOM parent when present.\n * @internal\n */ export function getParent(child, options = {}) {\n if (!child) {\n return null;\n }\n if (!options.skipVirtual) {\n const virtualParent = getVirtualParent(child);\n if (virtualParent) {\n return virtualParent;\n }\n }\n const parent = child.parentNode;\n if (parent && parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n return parent.host;\n }\n return parent;\n}\n","/**\n * Determines whether or not an element has the virtual hierarchy extension.\n * @internal\n */ export function isVirtualElement(element) {\n return element && !!element._virtual;\n}\n","/**\n * Sets the virtual parent of an element.\n *\n * @internal\n * @param child - Theme element to set the virtual parent\n * @param parent - The virtual parent, use `undefined` to remove a virtual parent relationship\n */ export function setVirtualParent(child, parent) {\n if (!child) {\n return;\n }\n const virtualChild = child;\n if (!virtualChild._virtual) {\n virtualChild._virtual = {};\n }\n virtualChild._virtual.parent = parent;\n}\n","import { __styles, mergeClasses } from '@griffel/react';\nconst virtualizerClassName = 'fui-Virtualizer';\nexport const virtualizerClassNames = {\n before: `${virtualizerClassName}__before`,\n beforeContainer: `${virtualizerClassName}__beforeContainer`,\n after: `${virtualizerClassName}__after`,\n afterContainer: `${virtualizerClassName}__afterContainer`\n};\nconst useStyles = /*#__PURE__*/__styles({\n base: {\n mc9l5x: \"ftgm304\",\n Bkecrkj: \"f1aehjj5\"\n },\n relative: {\n qhf8xq: \"f10pi13n\"\n },\n horizontal: {\n sshi5w: \"fan4evk\"\n },\n vertical: {\n Bf4jedk: \"f11qra4b\"\n }\n}, {\n d: [\".ftgm304{display:block;}\", \".f1aehjj5{pointer-events:none;}\", \".f10pi13n{position:relative;}\", \".fan4evk{min-height:100%;}\", \".f11qra4b{min-width:100%;}\"]\n});\n/**\n * Apply styling to the Virtualizer states\n */\nexport const useVirtualizerStyles_unstable = state => {\n 'use no memo';\n\n const styles = useStyles();\n const {\n reversed,\n axis,\n beforeBufferHeight,\n afterBufferHeight,\n bufferSize\n } = state;\n const horizontal = axis === 'horizontal';\n state.before.className = mergeClasses(virtualizerClassNames.before, styles.base, styles.relative, horizontal ? styles.horizontal : styles.vertical, state.before.className);\n state.after.className = mergeClasses(virtualizerClassNames.after, styles.base, styles.relative, horizontal ? styles.horizontal : styles.vertical, state.after.className);\n state.beforeContainer.className = mergeClasses(virtualizerClassNames.beforeContainer, styles.base, horizontal ? styles.horizontal : styles.vertical, state.beforeContainer.className);\n state.afterContainer.className = mergeClasses(virtualizerClassNames.afterContainer, styles.base, horizontal ? styles.horizontal : styles.vertical, state.afterContainer.className);\n const beforeHeightPx = beforeBufferHeight + 'px';\n const afterHeightPx = afterBufferHeight + 'px';\n const beforeBufferHeightPx = beforeBufferHeight + bufferSize + 'px';\n const afterBufferHeightPx = afterBufferHeight + bufferSize + 'px';\n const bufferPx = bufferSize + 'px';\n const beforeBuffer = {\n // Column\n ...(!reversed && !horizontal && {\n marginBottom: `-${bufferPx}`\n }),\n // Column-Reverse\n ...(reversed && !horizontal && {\n marginTop: `-${bufferPx}`\n }),\n // Row\n ...(!reversed && horizontal && {\n marginRight: `-${bufferPx}`\n }),\n // Row-Reverse\n ...(reversed && horizontal && {\n marginLeft: `-${bufferPx}`\n })\n };\n const afterBuffer = {\n // Column\n ...(!reversed && !horizontal && {\n marginTop: `-${bufferPx}`\n }),\n // Column-Reverse\n ...(reversed && !horizontal && {\n marginBottom: `-${bufferPx}`\n }),\n // Row\n ...(!reversed && horizontal && {\n marginLeft: `-${bufferPx}`\n }),\n // Row-Reverse\n ...(reversed && horizontal && {\n marginRight: `-${bufferPx}`\n })\n };\n state.before.style = {\n height: horizontal ? '100%' : beforeBufferHeightPx,\n width: horizontal ? beforeBufferHeightPx : '100%',\n ...beforeBuffer,\n ...state.before.style\n };\n state.beforeContainer.style = {\n height: horizontal ? 'auto' : beforeHeightPx,\n width: horizontal ? beforeHeightPx : 'auto',\n ...state.beforeContainer.style\n };\n state.after.style = {\n height: horizontal ? '100%' : afterBufferHeightPx,\n width: horizontal ? afterBufferHeightPx : '100%',\n ...afterBuffer,\n ...state.after.style\n };\n state.afterContainer.style = {\n height: horizontal ? 'auto' : afterHeightPx,\n width: horizontal ? afterHeightPx : 'auto',\n ...state.afterContainer.style\n };\n return state;\n};","import * as React from 'react';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nconst { useRef, useEffect } = React;\nexport const useMutationObserver = (target, callback, options)=>{\n 'use no memo';\n // TODO: exclude types from this lint rule: https://github.com/microsoft/fluentui/issues/31286\n // eslint-disable-next-line no-restricted-globals\n const observer = useRef();\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n useEffect(()=>{\n if (!win) {\n return;\n }\n // Create an observer instance linked to the callback function\n observer.current = new win.MutationObserver(callback);\n }, [\n callback,\n win\n ]);\n useEffect(()=>{\n if (target) {\n var // Start observing the target node for configured mutations\n _observer_current;\n (_observer_current = observer.current) === null || _observer_current === void 0 ? void 0 : _observer_current.observe(target, options);\n }\n return ()=>{\n var _observer_current;\n (_observer_current = observer.current) === null || _observer_current === void 0 ? void 0 : _observer_current.disconnect();\n };\n }, [\n target,\n options\n ]);\n return {\n observer\n };\n};\n","import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '@fluentui/react-utilities';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nconst { useCallback, useState, useRef } = React;\nimport { useMutationObserver } from './useMutationObserver';\n/**\n * This function will take the rootMargin and flip the sides if we are in RTL based on the computed reading direction of the target element.\n * @param ltrRootMargin the margin to be processed and flipped if required\n * @param target target element that will have its current reading direction determined\n * @returns the corrected rootMargin (if it was necessary to correct)\n */ export const getRTLRootMargin = (ltrRootMargin, target, win)=>{\n if (target && win) {\n // get the computed dir for the target element\n const newDir = win.getComputedStyle(target).direction;\n // If we're in rtl reading direction, we might need to flip the margins on the left/right sides\n if (newDir === 'rtl') {\n let newMargin = ltrRootMargin;\n const splitMargins = ltrRootMargin.split(' ');\n // We only need to do this if we get four values, otherwise the sides are equal and don't require flipping.\n if (splitMargins.length === 4) {\n newMargin = `${splitMargins[0]} ${splitMargins[3]} ${splitMargins[2]} ${splitMargins[1]}`;\n }\n return newMargin;\n } else {\n return ltrRootMargin;\n }\n }\n return ltrRootMargin;\n};\n/**\n * React hook that allows easy usage of the browser API IntersectionObserver within React\n * @param callback - A function called when the percentage of the target element is visible crosses a threshold.\n * @param options - An optional object which customizes the observer. If options isn't specified, the observer uses the\n * document's viewport as the root, with no margin, and a 0% threshold (meaning that even a one-pixel change is\n * enough to trigger a callback).\n * @returns An array containing a callback to update the list of Elements the observer should listen to, a callback to\n * update the init options of the IntersectionObserver and a ref to the IntersectionObserver instance itself.\n */ export const useIntersectionObserver = (callback, options)=>{\n 'use no memo';\n // TODO: exclude types from this lint rule: https://github.com/microsoft/fluentui/issues/31286\n // eslint-disable-next-line no-restricted-globals\n const observer = useRef();\n const [observerList, setObserverList] = useState();\n const { targetDocument } = useFluent();\n const win = targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView;\n var _options_rootMargin;\n // set the initial init with corrected margins based on the observed root's calculated reading direction.\n const [observerInit, setObserverInit] = useState(options && {\n ...options,\n rootMargin: getRTLRootMargin((_options_rootMargin = options.rootMargin) !== null && _options_rootMargin !== void 0 ? _options_rootMargin : '0px', options.root, win)\n });\n var _options_rootMargin1;\n // We have to assume that any values passed in for rootMargin by the consuming app are ltr values. As such we will store the ltr value.\n const ltrRootMargin = useRef((_options_rootMargin1 = options === null || options === void 0 ? void 0 : options.rootMargin) !== null && _options_rootMargin1 !== void 0 ? _options_rootMargin1 : '0px');\n // Callback function to execute when mutations are observed\n const mutationObserverCallback = useCallback((mutationList)=>{\n for (const mutation of mutationList){\n // Ensuring that the right attribute is being observed and that the root is within the tree of the element being mutated.\n if (mutation.type === 'attributes' && mutation.attributeName === 'dir' && (options === null || options === void 0 ? void 0 : options.root) && mutation.target.contains(options === null || options === void 0 ? void 0 : options.root)) {\n setObserverInit({\n ...observerInit,\n rootMargin: getRTLRootMargin(ltrRootMargin.current, observerInit === null || observerInit === void 0 ? void 0 : observerInit.root, win)\n });\n }\n }\n }, [\n ltrRootMargin,\n observerInit,\n options === null || options === void 0 ? void 0 : options.root,\n win\n ]);\n // Mutation observer for dir attribute changes in the document\n useMutationObserver(targetDocument, mutationObserverCallback, {\n attributes: true,\n subtree: true,\n attributeFilter: [\n 'dir'\n ]\n });\n // Observer elements in passed in list and clean up previous list\n // This effect is only triggered when observerList is updated\n useIsomorphicLayoutEffect(()=>{\n if (!win) {\n return;\n }\n observer.current = new win.IntersectionObserver(callback, {\n ...observerInit,\n rootMargin: getRTLRootMargin(ltrRootMargin.current, observerInit === null || observerInit === void 0 ? void 0 : observerInit.root, win)\n });\n // If we have an instance of IO and a list with elements, observer the elements\n if (observer.current && observerList && observerList.length > 0) {\n observerList.forEach((element)=>{\n var _observer_current;\n (_observer_current = observer.current) === null || _observer_current === void 0 ? void 0 : _observer_current.observe(element);\n });\n }\n // clean up previous elements being listened to\n return ()=>{\n if (observer.current) {\n observer.current.disconnect();\n }\n };\n }, [\n observerList,\n observerInit,\n callback,\n win\n ]);\n // Do not use internally, we need to track external settings only here\n const setObserverInitExternal = useCallback((newInit)=>{\n var _newInit_rootMargin;\n // Since we know this is coming from consumers, we can store this value as LTR somewhat safely.\n ltrRootMargin.current = (_newInit_rootMargin = newInit === null || newInit === void 0 ? void 0 : newInit.rootMargin) !== null && _newInit_rootMargin !== void 0 ? _newInit_rootMargin : '0px';\n // Call the internal setter to update the value and ensure if our calculated direction is rtl, we flip the margin\n setObserverInit({\n ...newInit,\n rootMargin: getRTLRootMargin(ltrRootMargin.current, newInit === null || newInit === void 0 ? void 0 : newInit.root, win)\n });\n }, [\n ltrRootMargin,\n setObserverInit,\n win\n ]);\n return {\n setObserverList,\n setObserverInit: setObserverInitExternal,\n observer\n };\n};\n","import * as React from 'react';\nconst VirtualizerContext = React.createContext(undefined);\nexport const VirtualizerContextProvider = VirtualizerContext.Provider;\nexport const useVirtualizerContext_unstable = ()=>{\n return React.useContext(VirtualizerContext);\n};\nexport const useVirtualizerContextState_unstable = (passedContext)=>{\n const virtualizerContext = useVirtualizerContext_unstable();\n const [_contextIndex, _setContextIndex] = React.useState(-1);\n const childProgressiveSizes = React.useRef([]);\n /* We respect any wrapped providers while also ensuring defaults or passed through\n * Order of usage -> Passed Prop -> Provider Context -> Internal State default\n */ const context = React.useMemo(()=>{\n var _passedContext_contextIndex, _ref, _passedContext_setContextIndex, _ref1;\n return {\n contextIndex: (_ref = (_passedContext_contextIndex = passedContext === null || passedContext === void 0 ? void 0 : passedContext.contextIndex) !== null && _passedContext_contextIndex !== void 0 ? _passedContext_contextIndex : virtualizerContext === null || virtualizerContext === void 0 ? void 0 : virtualizerContext.contextIndex) !== null && _ref !== void 0 ? _ref : _contextIndex,\n setContextIndex: (_ref1 = (_passedContext_setContextIndex = passedContext === null || passedContext === void 0 ? void 0 : passedContext.setContextIndex) !== null && _passedContext_setContextIndex !== void 0 ? _passedContext_setContextIndex : virtualizerContext === null || virtualizerContext === void 0 ? void 0 : virtualizerContext.setContextIndex) !== null && _ref1 !== void 0 ? _ref1 : _setContextIndex,\n childProgressiveSizes\n };\n }, [\n _contextIndex,\n passedContext,\n virtualizerContext\n ]);\n return context;\n};\n","import * as React from 'react';\nimport { useIntersectionObserver } from '../../hooks/useIntersectionObserver';\nimport { useVirtualizerContextState_unstable } from '../../Utilities';\nimport { slot, useTimeout } from '@fluentui/react-utilities';\nimport { flushSync } from 'react-dom';\nexport function useVirtualizer_unstable(props) {\n 'use no memo';\n const { itemSize, numItems, virtualizerLength, children: renderChild, getItemSize, bufferItems = Math.round(virtualizerLength / 4.0), bufferSize = Math.floor(bufferItems / 2.0) * itemSize, axis = 'vertical', reversed = false, virtualizerContext, onRenderedFlaggedIndex, imperativeVirtualizerRef, containerSizeRef, scrollViewRef, enableScrollLoad, updateScrollPosition, gap = 0 } = props;\n /* The context is optional, it's useful for injecting additional index logic, or performing uniform state updates*/ const _virtualizerContext = useVirtualizerContextState_unstable(virtualizerContext);\n // We use this ref as a constant source to access the virtualizer's state imperatively\n const actualIndexRef = React.useRef(_virtualizerContext.contextIndex);\n const flaggedIndex = React.useRef(null);\n const actualIndex = _virtualizerContext.contextIndex;\n // Just in case our ref gets out of date vs the context during a re-render\n if (_virtualizerContext.contextIndex !== actualIndexRef.current) {\n actualIndexRef.current = _virtualizerContext.contextIndex;\n }\n const setActualIndex = React.useCallback((index)=>{\n actualIndexRef.current = index;\n _virtualizerContext.setContextIndex(index);\n }, [\n _virtualizerContext\n ]);\n // Store ref to before padding element\n const beforeElementRef = React.useRef(null);\n // Store ref to before padding element\n const afterElementRef = React.useRef(null);\n // We need to store an array to track dynamic sizes, we can use this to incrementally update changes\n const childSizes = React.useRef(new Array(getItemSize ? numItems : 0));\n /* We keep track of the progressive sizing/placement down the list,\n this helps us skip re-calculations unless children/size changes */ const childProgressiveSizes = React.useRef(new Array(getItemSize ? numItems : 0));\n if (virtualizerContext === null || virtualizerContext === void 0 ? void 0 : virtualizerContext.childProgressiveSizes) {\n virtualizerContext.childProgressiveSizes.current = childProgressiveSizes.current;\n }\n // The internal tracking REF for child array (updates often).\n const childArray = React.useRef(new Array(virtualizerLength));\n const populateSizeArrays = ()=>{\n if (!getItemSize) {\n // Static sizes, never mind!\n return;\n }\n if (numItems !== childSizes.current.length) {\n childSizes.current = new Array(numItems);\n }\n if (numItems !== childProgressiveSizes.current.length) {\n childProgressiveSizes.current = new Array(numItems);\n if (virtualizerContext === null || virtualizerContext === void 0 ? void 0 : virtualizerContext.childProgressiveSizes) {\n virtualizerContext.childProgressiveSizes.current = childProgressiveSizes.current;\n }\n }\n for(let index = 0; index < numItems; index++){\n const _gap = index < numItems - 1 ? gap : 0;\n childSizes.current[index] = getItemSize(index) + _gap;\n if (index === 0) {\n childProgressiveSizes.current[index] = childSizes.current[index];\n } else {\n childProgressiveSizes.current[index] = childProgressiveSizes.current[index - 1] + childSizes.current[index];\n }\n }\n };\n const [isScrolling, setIsScrolling] = React.useState(false);\n const [setScrollTimer, clearScrollTimer] = useTimeout();\n const scrollCounter = React.useRef(0);\n const initializeScrollingTimer = React.useCallback(()=>{\n if (!enableScrollLoad) {\n // Disabled by default for reduction of render callbacks\n setIsScrolling(false);\n clearScrollTimer();\n return;\n }\n /*\n * This can be considered the 'velocity' required to start 'isScrolling'\n * INIT_SCROLL_FLAG_REQ: Number of renders required to activate isScrolling\n * INIT_SCROLL_FLAG_DELAY: Amount of time (ms) before current number of renders is reset\n * - Maybe we should let users customize these in the future.\n */ const INIT_SCROLL_FLAG_REQ = 10;\n const INIT_SCROLL_FLAG_DELAY = 100;\n scrollCounter.current++;\n if (scrollCounter.current >= INIT_SCROLL_FLAG_REQ) {\n setIsScrolling(true);\n }\n clearScrollTimer();\n setScrollTimer(()=>{\n setIsScrolling(false);\n scrollCounter.current = 0;\n }, INIT_SCROLL_FLAG_DELAY);\n }, [\n clearScrollTimer,\n setScrollTimer,\n enableScrollLoad\n ]);\n React.useEffect(()=>{\n initializeScrollingTimer();\n }, [\n actualIndex,\n initializeScrollingTimer\n ]);\n const updateChildRows = React.useCallback((newIndex)=>{\n if (numItems === 0) {\n /* Nothing to virtualize */ return;\n }\n /*\n We reset the array every time to ensure children are re-rendered\n This function should only be called when update is nessecary\n */ childArray.current = new Array(virtualizerLength);\n const _actualIndex = Math.max(newIndex, 0);\n const end = Math.min(_actualIndex + virtualizerLength, numItems);\n for(let i = _actualIndex; i < end; i++){\n childArray.current[i - _actualIndex] = renderChild(i, isScrolling);\n }\n }, [\n isScrolling,\n numItems,\n renderChild,\n virtualizerLength\n ]);\n const updateCurrentItemSizes = React.useCallback((newIndex)=>{\n if (!getItemSize) {\n // Static sizes, not required.\n return;\n }\n // We should always call our size function on index change (only for the items that will be rendered)\n // This ensures we request the latest data for incoming items in case sizing has changed.\n const endIndex = Math.min(newIndex + virtualizerLength, numItems);\n const startIndex = Math.max(newIndex, 0);\n let didUpdate = false;\n for(let i = startIndex; i < endIndex; i++){\n const _gap = i < numItems - 1 ? gap : 0;\n const newSize = getItemSize(i) + _gap;\n if (newSize !== childSizes.current[i]) {\n childSizes.current[i] = newSize;\n didUpdate = true;\n }\n }\n if (didUpdate) {\n // Update our progressive size array\n for(let i = startIndex; i < numItems; i++){\n const prevSize = i > 0 ? childProgressiveSizes.current[i - 1] : 0;\n childProgressiveSizes.current[i] = prevSize + childSizes.current[i];\n }\n }\n }, [\n getItemSize,\n numItems,\n virtualizerLength,\n gap\n ]);\n const batchUpdateNewIndex = React.useCallback((index)=>{\n // Local updates\n updateChildRows(index);\n updateCurrentItemSizes(index);\n // State setters\n setActualIndex(index);\n }, [\n setActualIndex,\n updateChildRows,\n updateCurrentItemSizes\n ]);\n const findIndexRecursive = React.useCallback((scrollPos, lowIndex, highIndex)=>{\n if (lowIndex > highIndex) {\n // We shouldn't get here - but no-op the index if we do.\n return actualIndex;\n }\n const midpoint = Math.floor((lowIndex + highIndex) / 2);\n const iBefore = Math.max(midpoint - 1, 0);\n const iAfter = Math.min(midpoint + 1, childProgressiveSizes.current.length - 1);\n const indexValue = childProgressiveSizes.current[midpoint];\n const afterIndexValue = childProgressiveSizes.current[iAfter];\n const beforeIndexValue = childProgressiveSizes.current[iBefore];\n if (scrollPos <= afterIndexValue && scrollPos >= beforeIndexValue) {\n /* We've found our index - if we are exactly matching before/after index that's ok,\n better to reduce checks if it's right on the boundary. */ return midpoint;\n }\n if (indexValue > scrollPos) {\n return findIndexRecursive(scrollPos, lowIndex, midpoint - 1);\n } else {\n return findIndexRecursive(scrollPos, midpoint + 1, highIndex);\n }\n }, [\n actualIndex\n ]);\n const getIndexFromSizeArray = React.useCallback((scrollPos)=>{\n /* Quick searches our progressive height array */ if (scrollPos === 0 || childProgressiveSizes.current.length === 0 || scrollPos <= childProgressiveSizes.current[0]) {\n // Check start\n return 0;\n }\n if (scrollPos >= childProgressiveSizes.current[childProgressiveSizes.current.length - 1]) {\n // Check end\n return childProgressiveSizes.current.length - 1;\n }\n return findIndexRecursive(scrollPos, 0, childProgressiveSizes.current.length - 1);\n }, [\n findIndexRecursive\n ]);\n const getIndexFromScrollPosition = React.useCallback((scrollPos)=>{\n if (!getItemSize) {\n return Math.round(scrollPos / (itemSize + gap));\n }\n return getIndexFromSizeArray(scrollPos);\n }, [\n getIndexFromSizeArray,\n getItemSize,\n itemSize,\n gap\n ]);\n const calculateTotalSize = React.useCallback(()=>{\n if (!getItemSize) {\n return (itemSize + gap) * numItems;\n }\n // Time for custom size calcs\n return childProgressiveSizes.current[numItems - 1];\n }, [\n getItemSize,\n itemSize,\n numItems,\n gap\n ]);\n const calculateBefore = React.useCallback(()=>{\n const currentIndex = Math.min(actualIndex, numItems - 1);\n if (!getItemSize) {\n // The missing items from before virtualization starts height\n return currentIndex * (itemSize + gap);\n }\n if (currentIndex <= 0) {\n return 0;\n }\n // Time for custom size calcs\n return childProgressiveSizes.current[currentIndex - 1];\n }, [\n actualIndex,\n getItemSize,\n itemSize,\n numItems,\n gap\n ]);\n const calculateAfter = React.useCallback(()=>{\n if (numItems === 0 || actualIndex + virtualizerLength >= numItems) {\n return 0;\n }\n const lastItemIndex = Math.min(actualIndex + virtualizerLength, numItems);\n if (!getItemSize) {\n // The missing items from after virtualization ends height\n const remainingItems = numItems - lastItemIndex;\n return remainingItems * (itemSize + gap) - gap;\n }\n // Time for custom size calcs\n return childProgressiveSizes.current[numItems - 1] - childProgressiveSizes.current[lastItemIndex - 1];\n }, [\n actualIndex,\n getItemSize,\n itemSize,\n numItems,\n virtualizerLength,\n gap\n ]);\n // Observe intersections of virtualized components\n const { setObserverList } = useIntersectionObserver(React.useCallback(// TODO: exclude types from this lint rule: https://github.com/microsoft/fluentui/issues/31286\n // eslint-disable-next-line no-restricted-globals\n (entries, observer)=>{\n /* Sanity check - do we even need virtualization? */ if (virtualizerLength > numItems) {\n if (actualIndex !== 0) {\n batchUpdateNewIndex(0);\n }\n // No-op\n return;\n }\n if (entries.length === 0) {\n // No entries found, return.\n return;\n }\n // Find the latest entry that is intersecting\n const sortedEntries = entries.sort((entry1, entry2)=>entry2.time - entry1.time);\n const latestEntry = sortedEntries.find((entry)=>{\n return entry.isIntersecting;\n });\n if (!latestEntry) {\n return;\n }\n // We have to be sure our item sizes are up to date with current indexed ref before calculation\n // Check if we still need\n updateCurrentItemSizes(actualIndexRef.current);\n const calculateOverBuffer = ()=>{\n /**\n * We avoid using the scroll ref scrollTop, it may be incorrect\n * as virtualization may exist within a scroll view with other elements\n * The benefit of using IO is that we can detect relative scrolls,\n * so any items can be placed around the virtualizer in the scroll view\n */ let measurementPos = 0;\n if (latestEntry.target === afterElementRef.current) {\n // Get after buffers position\n measurementPos = calculateTotalSize() - calculateAfter();\n // Get exact intersection position based on overflow size (how far into IO did we scroll?)\n const overflowAmount = axis === 'vertical' ? latestEntry.intersectionRect.height : latestEntry.intersectionRect.width;\n // Add to original after position\n measurementPos += overflowAmount;\n // Ignore buffer size (IO offset)\n measurementPos -= bufferSize;\n var _containerSizeRef_current;\n // we hit the after buffer and detected the end of view, we need to find the start index.\n measurementPos -= (_containerSizeRef_current = containerSizeRef.current) !== null && _containerSizeRef_current !== void 0 ? _containerSizeRef_current : 0;\n // Calculate how far past the window bounds we are (this will be zero if IO is within window)\n const hOverflow = latestEntry.boundingClientRect.top - latestEntry.intersectionRect.top;\n const hOverflowReversed = latestEntry.boundingClientRect.bottom - latestEntry.intersectionRect.bottom;\n const wOverflow = latestEntry.boundingClientRect.left - latestEntry.intersectionRect.left;\n const wOverflowReversed = latestEntry.boundingClientRect.right - latestEntry.intersectionRect.right;\n const widthOverflow = reversed ? wOverflowReversed : wOverflow;\n const heightOverflow = reversed ? hOverflowReversed : hOverflow;\n const additionalOverflow = axis === 'vertical' ? heightOverflow : widthOverflow;\n if (reversed) {\n measurementPos += additionalOverflow;\n } else {\n measurementPos -= additionalOverflow;\n }\n } else if (latestEntry.target === beforeElementRef.current) {\n // Get before buffers position\n measurementPos = calculateBefore();\n // Get exact intersection position based on overflow size (how far into window did we scroll IO?)\n const overflowAmount = axis === 'vertical' ? latestEntry.intersectionRect.height : latestEntry.intersectionRect.width;\n // Minus from original before position\n measurementPos -= overflowAmount;\n // Ignore buffer size (IO offset)\n measurementPos += bufferSize;\n // Calculate how far past the window bounds we are (this will be zero if IO is within window)\n const hOverflow = latestEntry.boundingClientRect.bottom - latestEntry.intersectionRect.bottom;\n const hOverflowReversed = latestEntry.boundingClientRect.top - latestEntry.intersectionRect.top;\n const wOverflow = latestEntry.boundingClientRect.right - latestEntry.intersectionRect.right;\n const wOverflowReversed = latestEntry.boundingClientRect.left - latestEntry.intersectionRect.left;\n const widthOverflow = reversed ? wOverflowReversed : wOverflow;\n const heightOverflow = reversed ? hOverflowReversed : hOverflow;\n const additionalOverflow = axis === 'vertical' ? heightOverflow : widthOverflow;\n if (reversed) {\n measurementPos += additionalOverflow;\n } else {\n measurementPos -= additionalOverflow;\n }\n }\n return measurementPos;\n };\n // Get exact relative 'scrollTop' via IO values\n const measurementPos = calculateOverBuffer();\n const maxIndex = Math.max(numItems - virtualizerLength, 0);\n const startIndex = getIndexFromScrollPosition(measurementPos) - bufferItems;\n // Safety limits\n const newStartIndex = Math.min(Math.max(startIndex, 0), maxIndex);\n flushSync(()=>{\n // Callback to allow measure functions to check virtualizer length\n if (newStartIndex + virtualizerLength >= numItems && actualIndex + virtualizerLength >= numItems) {\n // We've already hit the end, no need to update state.\n return;\n }\n updateScrollPosition === null || updateScrollPosition === void 0 ? void 0 : updateScrollPosition(measurementPos);\n if (actualIndex !== newStartIndex) {\n batchUpdateNewIndex(newStartIndex);\n }\n });\n }, [\n actualIndex,\n virtualizerLength,\n axis,\n reversed,\n numItems,\n bufferSize,\n bufferItems,\n containerSizeRef,\n updateScrollPosition,\n batchUpdateNewIndex,\n calculateAfter,\n calculateBefore,\n calculateTotalSize,\n getIndexFromScrollPosition,\n updateCurrentItemSizes\n ]), {\n root: scrollViewRef ? scrollViewRef === null || scrollViewRef === void 0 ? void 0 : scrollViewRef.current : null,\n rootMargin: '0px',\n threshold: 0\n });\n const setBeforeRef = React.useCallback((element)=>{\n if (!element || beforeElementRef.current === element) {\n return;\n }\n beforeElementRef.current = element;\n const newList = [];\n newList.push(beforeElementRef.current);\n if (afterElementRef.current) {\n newList.push(afterElementRef.current);\n }\n // Ensure we update array if before element changed\n setObserverList(newList);\n }, [\n setObserverList\n ]);\n const setAfterRef = React.useCallback((element)=>{\n if (!element || afterElementRef.current === element) {\n return;\n }\n afterElementRef.current = element;\n const newList = [];\n if (beforeElementRef.current) {\n newList.push(beforeElementRef.current);\n }\n newList.push(afterElementRef.current);\n // Ensure we update array if after element changed\n setObserverList(newList);\n }, [\n setObserverList\n ]);\n // Initialize the size array before first render.\n const hasInitialized = React.useRef(false);\n const initializeSizeArray = ()=>{\n if (hasInitialized.current === false) {\n hasInitialized.current = true;\n populateSizeArrays();\n }\n };\n React.useImperativeHandle(imperativeVirtualizerRef, ()=>{\n return {\n progressiveSizes: childProgressiveSizes,\n nodeSizes: childSizes,\n setFlaggedIndex: (index)=>flaggedIndex.current = index,\n currentIndex: actualIndexRef\n };\n }, [\n childProgressiveSizes,\n childSizes\n ]);\n // Initialization on mount - update array index to 0 (ready state).\n // Only fire on mount (no deps).\n React.useEffect(()=>{\n if (actualIndex < 0) {\n batchUpdateNewIndex(0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n /*\n * forceUpdate:\n * We only want to trigger this when child render or scroll loading changes,\n * it will force re-render all children elements\n */ const forceUpdate = React.useReducer(()=>({}), {})[1];\n // If the user passes in an updated renderChild function - update current children\n React.useEffect(()=>{\n if (actualIndex >= 0) {\n updateChildRows(actualIndex);\n forceUpdate();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n renderChild,\n isScrolling\n ]);\n React.useEffect(()=>{\n // Ensure we repopulate if getItemSize callback changes\n populateSizeArrays();\n // We only run this effect on getItemSize change (recalc dynamic sizes)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n getItemSize,\n gap\n ]);\n // Effect to check flag index on updates\n React.useEffect(()=>{\n if (!onRenderedFlaggedIndex || flaggedIndex.current === null) {\n return;\n }\n if (actualIndex <= flaggedIndex.current && actualIndex + virtualizerLength >= flaggedIndex.current) {\n onRenderedFlaggedIndex(flaggedIndex.current);\n flaggedIndex.current = null;\n }\n }, [\n actualIndex,\n onRenderedFlaggedIndex,\n virtualizerLength\n ]);\n // Ensure we have run through and updated the whole size list array at least once.\n initializeSizeArray();\n if (getItemSize && (numItems !== childSizes.current.length || numItems !== childProgressiveSizes.current.length)) {\n // Child length mismatch, repopulate size arrays.\n populateSizeArrays();\n }\n // Ensure we recalc if virtualizer length changes\n const maxCompare = Math.min(virtualizerLength, numItems);\n if (childArray.current.length !== maxCompare && actualIndex + childArray.current.length < numItems) {\n updateChildRows(actualIndex);\n }\n const isFullyInitialized = hasInitialized.current && actualIndex >= 0;\n return {\n components: {\n before: 'div',\n after: 'div',\n beforeContainer: 'div',\n afterContainer: 'div'\n },\n virtualizedChildren: childArray.current,\n before: slot.always(props.before, {\n defaultProps: {\n ref: setBeforeRef,\n role: 'none'\n },\n elementType: 'div'\n }),\n after: slot.always(props.after, {\n defaultProps: {\n ref: setAfterRef,\n role: 'none'\n },\n elementType: 'div'\n }),\n beforeContainer: slot.always(props.beforeContainer, {\n defaultProps: {\n role: 'none'\n },\n elementType: 'div'\n }),\n afterContainer: slot.always(props.afterContainer, {\n defaultProps: {\n role: 'none'\n },\n elementType: 'div'\n }),\n beforeBufferHeight: isFullyInitialized ? calculateBefore() : 0,\n afterBufferHeight: isFullyInitialized ? calculateAfter() : 0,\n totalVirtualizerHeight: isFullyInitialized ? calculateTotalSize() : virtualizerLength * itemSize,\n virtualizerStartIndex: actualIndex,\n axis,\n bufferSize,\n reversed,\n childSizes,\n childProgressiveSizes\n };\n}\n"," import { jsx as _jsx, jsxs as _jsxs } from \"@fluentui/react-jsx-runtime/jsx-runtime\";\nimport * as React from 'react';\nimport { assertSlots } from '@fluentui/react-utilities';\nexport const renderVirtualizer_unstable = (state)=>{\n assertSlots(state);\n return /*#__PURE__*/ _jsxs(React.Fragment, {\n children: [\n /*#__PURE__*/ _jsx(state.beforeContainer, {\n children: /*#__PURE__*/ _jsx(state.before, {})\n }),\n state.virtualizedChildren,\n /*#__PURE__*/ _jsx(state.afterContainer, {\n children: /*#__PURE__*/ _jsx(state.after, {})\n })\n ]\n });\n};\nexport const renderVirtualizerChildPlaceholder = (child, index)=>{\n return /*#__PURE__*/ _jsx(React.Suspense, {\n fallback: null,\n children: child\n }, `fui-virtualizer-placeholder-${index}`);\n};\n","import * as React from 'react';\nimport { useVirtualizerStyles_unstable } from './useVirtualizerStyles.styles';\nimport { useVirtualizer_unstable } from './useVirtualizer';\nimport { renderVirtualizer_unstable } from './renderVirtualizer';\n/**\n * Virtualizer pseudo-component, this functional wrapper\n * provides a simple interface for reducing the total number\n * of elements rendered at one time in large lists.\n */ export const Virtualizer = (props)=>{\n const state = useVirtualizer_unstable(props);\n useVirtualizerStyles_unstable(state);\n return renderVirtualizer_unstable(state);\n};\nVirtualizer.displayName = 'Virtualizer';\n","/**\n * FIXME - TS 3.8/3.9 don't have ResizeObserver types by default, move this to a shared utility once we bump the minbar\n * A utility method that creates a ResizeObserver from a target document\n * @param targetDocument - document to use to create the ResizeObserver\n * @param callback - https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/ResizeObserver#callback\n * @returns a ResizeObserver instance or null if the global does not exist on the document\n */ export function createResizeObserverFromDocument(targetDocument, callback) {\n var _targetDocument_defaultView;\n if (!(targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.ResizeObserver)) {\n return null;\n }\n return new targetDocument.defaultView.ResizeObserver(callback);\n}\n","import * as React from 'react';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { debounce } from '../utilities/debounce';\nimport { createResizeObserverFromDocument } from '../utilities/createResizeObserverFromDocument';\n/**\n * useResizeObserverRef_unstable simplifies resize observer connection and ensures debounce/cleanup\n */ export const useResizeObserverRef_unstable = (resizeCallback)=>{\n 'use no memo';\n const { targetDocument } = useFluent();\n const container = React.useRef(null);\n const containerHeightRef = React.useRef(0);\n const containerWidthRef = React.useRef(0);\n // the handler for resize observer\n // TODO: exclude types from this lint rule: https://github.com/microsoft/fluentui/issues/31286\n // eslint-disable-next-line no-restricted-globals\n const handleResize = debounce((entries, observer)=>{\n var _container_current, _container_current1;\n const containerHeight = (_container_current = container.current) === null || _container_current === void 0 ? void 0 : _container_current.clientHeight;\n const containerWidth = (_container_current1 = container.current) === null || _container_current1 === void 0 ? void 0 : _container_current1.clientWidth;\n // Our resize observer will fire on scroll resize, let index change handle that instead.\n if (containerHeightRef.current !== containerHeight || containerWidth !== containerWidthRef.current) {\n containerWidthRef.current = containerWidth !== null && containerWidth !== void 0 ? containerWidth : 0;\n containerHeightRef.current = containerHeight !== null && containerHeight !== void 0 ? containerHeight : 0;\n resizeCallback(entries, observer, container);\n }\n });\n // Keep the reference of ResizeObserver in the state, as it should live through renders\n const [resizeObserver, setResizeObserver] = React.useState(()=>createResizeObserverFromDocument(targetDocument, handleResize));\n React.useEffect(()=>{\n // Update our state when resizeCallback changes\n container.current = null;\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n setResizeObserver(()=>createResizeObserverFromDocument(targetDocument, handleResize));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n resizeCallback,\n targetDocument\n ]);\n React.useEffect(()=>{\n return ()=>{\n container.current = null;\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const scrollRef = React.useCallback((instance)=>{\n if (container.current !== instance) {\n if (container.current) {\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.unobserve(container.current);\n }\n container.current = instance;\n if (container.current) {\n resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.observe(container.current);\n }\n }\n }, [\n resizeObserver\n ]);\n return scrollRef;\n};\n","/**\n * Microtask debouncer\n * https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API/Microtask_guide\n * @param fn - Function to debounce\n * @returns debounced function\n */ export function debounce(fn) {\n let pending;\n return ()=>{\n if (!pending) {\n pending = true;\n queueMicrotask(()=>{\n // Need to set pending to `false` before the debounced function is run.\n // React can actually interrupt the function while it's running!\n pending = false;\n fn();\n });\n }\n };\n}\n","import * as React from 'react';\nimport { useResizeObserverRef_unstable } from './useResizeObserverRef';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\n/**\n * React hook that measures virtualized space based on a static size to ensure optimized virtualization length.\n */ export const useStaticVirtualizerMeasure = (virtualizerProps)=>{\n const { defaultItemSize, direction = 'vertical', bufferItems, bufferSize } = virtualizerProps;\n const [state, setState] = React.useState({\n virtualizerLength: 0,\n _bufferSize: 0,\n _bufferItems: 0\n });\n const containerSizeRef = React.useRef(0);\n const { targetDocument } = useFluent();\n const { virtualizerLength, _bufferItems, _bufferSize } = state;\n const resizeCallback = React.useCallback((_entries, // TODO: exclude types from this lint rule: https://github.com/microsoft/fluentui/issues/31286\n // eslint-disable-next-line no-restricted-globals\n _observer, scrollRef)=>{\n if (!(scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current)) {\n return;\n }\n if (scrollRef.current !== (targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.body)) {\n // We have a local scroll container\n containerSizeRef.current = direction === 'vertical' ? scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current.getBoundingClientRect().height : scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current.getBoundingClientRect().width;\n } else if (targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView) {\n var _targetDocument_defaultView, _targetDocument_defaultView1;\n // If our scroll ref is the document body, we should check window height\n containerSizeRef.current = direction === 'vertical' ? targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.innerHeight : targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView1 = targetDocument.defaultView) === null || _targetDocument_defaultView1 === void 0 ? void 0 : _targetDocument_defaultView1.innerWidth;\n }\n /*\n * Number of items required to cover viewport.\n */ const length = Math.ceil(containerSizeRef.current / defaultItemSize + 1);\n /*\n * Number of items to append at each end, i.e. 'preload' each side before entering view.\n * Minimum: 1\n */ const newBufferItems = bufferItems !== null && bufferItems !== void 0 ? bufferItems : Math.max(Math.ceil(length / 4), 1);\n /*\n * This is how far we deviate into the bufferItems to detect a redraw.\n */ const newBufferSize = bufferSize !== null && bufferSize !== void 0 ? bufferSize : Math.max(defaultItemSize / 2.0, 1);\n const totalLength = length + newBufferItems * 2;\n setState({\n virtualizerLength: totalLength,\n _bufferItems: newBufferItems,\n _bufferSize: newBufferSize\n });\n }, [\n bufferItems,\n bufferSize,\n defaultItemSize,\n direction,\n targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.body,\n targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView\n ]);\n const scrollRef = useResizeObserverRef_unstable(resizeCallback);\n return {\n virtualizerLength,\n bufferItems: _bufferItems,\n bufferSize: _bufferSize,\n scrollRef,\n containerSizeRef\n };\n};\n","import { useIsomorphicLayoutEffect, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useResizeObserverRef_unstable } from './useResizeObserverRef';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\n/**\n * React hook that measures virtualized space dynamically to ensure optimized virtualization length.\n */ export const useDynamicVirtualizerMeasure = (virtualizerProps)=>{\n const { defaultItemSize, direction = 'vertical', numItems, getItemSize, bufferItems, bufferSize, virtualizerContext } = virtualizerProps;\n const [state, setState] = React.useState({\n virtualizerLength: 0,\n virtualizerBufferItems: 0,\n virtualizerBufferSize: 0\n });\n const containerSizeRef = React.useRef(0);\n const scrollPosition = React.useRef(0);\n const { virtualizerLength, virtualizerBufferItems, virtualizerBufferSize } = state;\n const { targetDocument } = useFluent();\n const container = React.useRef(null);\n const handleScrollResize = React.useCallback((scrollRef)=>{\n if (!(scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current)) {\n // Error? ignore?\n return;\n }\n if (scrollRef.current !== (targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.body)) {\n // We have a local scroll container\n containerSizeRef.current = direction === 'vertical' ? scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current.getBoundingClientRect().height : scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current.getBoundingClientRect().width;\n } else if (targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView) {\n var _targetDocument_defaultView, _targetDocument_defaultView1;\n // If our scroll ref is the document body, we should check window height\n containerSizeRef.current = direction === 'vertical' ? targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.innerHeight : targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView1 = targetDocument.defaultView) === null || _targetDocument_defaultView1 === void 0 ? void 0 : _targetDocument_defaultView1.innerWidth;\n }\n let indexSizer = 0;\n let i = 0;\n let length = 0;\n const startIndex = virtualizerContext.contextIndex;\n const sizeToBeat = containerSizeRef.current + virtualizerBufferSize * 2;\n while(indexSizer <= sizeToBeat && i + startIndex < numItems){\n const iItemSize = getItemSize(startIndex + i);\n if (virtualizerContext.childProgressiveSizes.current.length < numItems) {\n /* We are in unknown territory, either an initial render or an update\n in virtualizer item length has occurred.\n We need to let the new items render first then we can accurately assess.*/ return virtualizerLength - virtualizerBufferSize * 2;\n }\n const currentScrollPos = scrollPosition.current;\n const currentItemPos = virtualizerContext.childProgressiveSizes.current[startIndex + i] - iItemSize;\n if (currentScrollPos > currentItemPos + iItemSize) {\n // The item isn't in view, ignore for now.\n i++;\n continue;\n } else if (currentScrollPos > currentItemPos) {\n // The item is partially out of view, ignore the out of bounds portion\n const variance = currentItemPos + iItemSize - currentScrollPos;\n indexSizer += variance;\n } else {\n // Item is in view\n indexSizer += iItemSize;\n }\n // Increment\n i++;\n length++;\n }\n /*\n * Number of items to append at each end, i.e. 'preload' each side before entering view.\n * Minimum: 2 - we give slightly more buffer for dynamic version.\n */ const newBufferItems = bufferItems !== null && bufferItems !== void 0 ? bufferItems : Math.max(Math.ceil(length / 3), 1);\n /*\n * This is how far we deviate into the bufferItems to detect a redraw.\n */ const newBufferSize = bufferSize !== null && bufferSize !== void 0 ? bufferSize : Math.max(defaultItemSize / 2, 1);\n const totalLength = length + newBufferItems * 2;\n setState({\n virtualizerLength: totalLength,\n virtualizerBufferSize: newBufferSize,\n virtualizerBufferItems: newBufferItems\n });\n }, [\n bufferItems,\n bufferSize,\n defaultItemSize,\n direction,\n getItemSize,\n numItems,\n targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.body,\n targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView,\n virtualizerBufferSize,\n virtualizerContext.childProgressiveSizes,\n virtualizerContext.contextIndex,\n virtualizerLength\n ]);\n const resizeCallback = React.useCallback((_entries, // TODO: exclude types from this lint rule: https://github.com/microsoft/fluentui/issues/31286\n // eslint-disable-next-line no-restricted-globals\n _observer, scrollRef)=>{\n if (scrollRef) {\n handleScrollResize(scrollRef);\n }\n }, [\n handleScrollResize\n ]);\n const scrollRef = useMergedRefs(container, useResizeObserverRef_unstable(resizeCallback));\n useIsomorphicLayoutEffect(()=>{\n if (virtualizerContext.contextIndex + virtualizerLength < numItems) {\n // Avoid re-rendering/re-calculating when the end index has already been reached\n handleScrollResize(container);\n }\n }, [\n handleScrollResize,\n numItems,\n virtualizerContext.contextIndex,\n virtualizerLength\n ]);\n const updateScrollPosition = React.useCallback((_scrollPosition)=>{\n scrollPosition.current = _scrollPosition;\n // Check if our vLength's need recalculating\n handleScrollResize(scrollRef);\n }, [\n handleScrollResize,\n scrollRef\n ]);\n return {\n virtualizerLength,\n bufferItems: virtualizerBufferItems,\n bufferSize: virtualizerBufferSize,\n scrollRef,\n containerSizeRef,\n updateScrollPosition\n };\n};\n","import * as React from 'react';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\n/**\n * Provides a way of automating size in the virtualizer\n * Returns\n * `width` - element width ref (0 by default),\n * `height` - element height ref (0 by default),\n * `measureElementRef` - a ref function to be passed as `ref` to the element you want to measure\n */ export function useMeasureList(currentIndex, refLength, totalLength, defaultItemSize) {\n const widthArray = React.useRef(new Array(totalLength).fill(defaultItemSize));\n const heightArray = React.useRef(new Array(totalLength).fill(defaultItemSize));\n const refArray = React.useRef([]);\n const { targetDocument } = useFluent();\n // This lets us trigger updates when a size change occurs.\n const sizeUpdateCount = React.useRef(0);\n // the handler for resize observer\n const handleIndexUpdate = React.useCallback((index)=>{\n var _refArray_current_index;\n let isChanged = false;\n const boundClientRect = (_refArray_current_index = refArray.current[index]) === null || _refArray_current_index === void 0 ? void 0 : _refArray_current_index.getBoundingClientRect();\n const containerWidth = boundClientRect === null || boundClientRect === void 0 ? void 0 : boundClientRect.width;\n if (containerWidth !== widthArray.current[currentIndex + index]) {\n isChanged = true;\n }\n widthArray.current[currentIndex + index] = containerWidth || defaultItemSize;\n const containerHeight = boundClientRect === null || boundClientRect === void 0 ? void 0 : boundClientRect.height;\n if (containerHeight !== heightArray.current[currentIndex + index]) {\n isChanged = true;\n }\n heightArray.current[currentIndex + index] = containerHeight || defaultItemSize;\n if (isChanged) {\n sizeUpdateCount.current = sizeUpdateCount.current + 1;\n }\n }, [\n currentIndex,\n defaultItemSize,\n sizeUpdateCount\n ]);\n const handleElementResizeCallback = (entries)=>{\n for (const entry of entries){\n const target = entry.target;\n // Call the elements own resize handler (indexed)\n target.handleResize();\n }\n };\n React.useEffect(()=>{\n const newHeightLength = totalLength - heightArray.current.length;\n const newWidthLength = totalLength - widthArray.current.length;\n /* Ensure we grow or truncate arrays with prior properties,\n keeping the existing values is important for whitespace assumptions.\n Even if items in the 'middle' are deleted, we will recalc the whitespace as it is explored.*/ if (newWidthLength > 0) {\n widthArray.current = widthArray.current.concat(new Array(newWidthLength).fill(defaultItemSize));\n } else if (newWidthLength < 0) {\n widthArray.current = widthArray.current.slice(0, totalLength);\n }\n if (newHeightLength > 0) {\n heightArray.current = heightArray.current.concat(new Array(newHeightLength).fill(defaultItemSize));\n } else if (newHeightLength < 0) {\n heightArray.current = heightArray.current.slice(0, totalLength);\n }\n }, [\n defaultItemSize,\n totalLength\n ]);\n // Keep the reference of ResizeObserver as a ref, as it should live through renders\n const resizeObserver = React.useRef(createResizeObserverFromDocument(targetDocument, handleElementResizeCallback));\n /* createIndexedRef provides a dynamic function to create an undefined number of refs at render time\n * these refs then provide an indexed callback via attaching 'handleResize' to the element itself\n * this function is then called on resize by handleElementResize and relies on indexing\n * to track continuous sizes throughout renders while releasing all virtualized element refs each render cycle.\n */ const createIndexedRef = React.useCallback((index)=>{\n const measureElementRef = (el)=>{\n if (!targetDocument || !resizeObserver.current) {\n return;\n }\n if (el) {\n el.handleResize = ()=>{\n handleIndexUpdate(index);\n };\n }\n // cleanup previous container\n if (refArray.current[index] !== undefined && refArray.current[index] !== null) {\n resizeObserver.current.unobserve(refArray.current[index]);\n }\n refArray.current[index] = undefined;\n if (el) {\n refArray.current[index] = el;\n resizeObserver.current.observe(el);\n handleIndexUpdate(index);\n }\n };\n return measureElementRef;\n }, [\n handleIndexUpdate,\n resizeObserver,\n targetDocument\n ]);\n React.useEffect(()=>{\n const _resizeObserver = resizeObserver;\n return ()=>{\n var _resizeObserver_current;\n return (_resizeObserver_current = _resizeObserver.current) === null || _resizeObserver_current === void 0 ? void 0 : _resizeObserver_current.disconnect();\n };\n }, [\n resizeObserver\n ]);\n return {\n widthArray,\n heightArray,\n createIndexedRef,\n refArray,\n sizeUpdateCount: sizeUpdateCount.current\n };\n}\n/**\n * FIXME - TS 3.8/3.9 don't have ResizeObserver types by default, move this to a shared utility once we bump the minbar\n * A utility method that creates a ResizeObserver from a target document\n * @param targetDocument - document to use to create the ResizeObserver\n * @param callback - https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/ResizeObserver#callback\n * @returns a ResizeObserver instance or null if the global does not exist on the document\n */ export function createResizeObserverFromDocument(targetDocument, callback) {\n var _targetDocument_defaultView;\n if (!(targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.ResizeObserver)) {\n return null;\n }\n return new targetDocument.defaultView.ResizeObserver(callback);\n}\n","export const scrollToItemStatic = (params)=>{\n const { index, itemSize, totalItems, scrollViewRef, axis = 'vertical', reversed = false, behavior = 'auto' } = params;\n if (axis === 'horizontal') {\n if (reversed) {\n var _scrollViewRef_current;\n (_scrollViewRef_current = scrollViewRef.current) === null || _scrollViewRef_current === void 0 ? void 0 : _scrollViewRef_current.scrollTo({\n left: totalItems * itemSize - itemSize * index,\n behavior\n });\n } else {\n var _scrollViewRef_current1;\n (_scrollViewRef_current1 = scrollViewRef.current) === null || _scrollViewRef_current1 === void 0 ? void 0 : _scrollViewRef_current1.scrollTo({\n left: itemSize * index,\n behavior\n });\n }\n } else {\n if (reversed) {\n var _scrollViewRef_current2;\n (_scrollViewRef_current2 = scrollViewRef.current) === null || _scrollViewRef_current2 === void 0 ? void 0 : _scrollViewRef_current2.scrollTo({\n top: totalItems * itemSize - itemSize * index,\n behavior\n });\n } else {\n var _scrollViewRef_current3;\n (_scrollViewRef_current3 = scrollViewRef.current) === null || _scrollViewRef_current3 === void 0 ? void 0 : _scrollViewRef_current3.scrollTo({\n top: itemSize * index,\n behavior\n });\n }\n }\n};\n","export const scrollToItemDynamic = (params)=>{\n const { index, itemSizes, totalSize, scrollViewRef, axis = 'vertical', reversed = false, behavior = 'auto' } = params;\n if (!itemSizes.current) {\n return;\n }\n if (itemSizes.current === null || itemSizes.current.length < index) {\n // null check - abort\n return;\n }\n let itemDepth = 0;\n for(let i = 0; i < index; i++){\n if (i < index) {\n itemDepth += itemSizes.current[i];\n }\n }\n if (axis === 'horizontal') {\n if (reversed) {\n var _scrollViewRef_current;\n (_scrollViewRef_current = scrollViewRef.current) === null || _scrollViewRef_current === void 0 ? void 0 : _scrollViewRef_current.scrollTo({\n left: totalSize - itemDepth,\n behavior\n });\n } else {\n var _scrollViewRef_current1;\n (_scrollViewRef_current1 = scrollViewRef.current) === null || _scrollViewRef_current1 === void 0 ? void 0 : _scrollViewRef_current1.scrollTo({\n left: itemDepth,\n behavior\n });\n }\n } else {\n if (reversed) {\n var _scrollViewRef_current2;\n (_scrollViewRef_current2 = scrollViewRef.current) === null || _scrollViewRef_current2 === void 0 ? void 0 : _scrollViewRef_current2.scrollTo({\n top: totalSize - itemDepth,\n behavior\n });\n } else {\n var _scrollViewRef_current3;\n (_scrollViewRef_current3 = scrollViewRef.current) === null || _scrollViewRef_current3 === void 0 ? void 0 : _scrollViewRef_current3.scrollTo({\n top: itemDepth,\n behavior\n });\n }\n }\n};\n","import * as React from 'react';\nimport { useTimeout } from '@fluentui/react-utilities';\n/**\n * Optional hook that will enable pagination on the virtualizer so that it 'autoscrolls' to an items exact position\n * Sizes are uniform/static, we round to the nearest item on long scrolls\n * On short scrolls, we will go at minimum to the next/previous item so that arrow pagination works\n * All VirtualizerStaticPaginationProps can be grabbed from Virtualizer hooks externally and passed in\n */ export const useStaticVirtualizerPagination = (virtualizerProps, paginationEnabled = true)=>{\n 'use no memo';\n const { itemSize, axis = 'vertical' } = virtualizerProps;\n const [setScrollTimer, clearScrollTimer] = useTimeout();\n const lastScrollPos = React.useRef(0);\n const lastIndexScrolled = React.useRef(0);\n const scrollContainer = React.useRef(null);\n const clearListeners = ()=>{\n if (scrollContainer.current) {\n scrollContainer.current.removeEventListener('scroll', onScroll);\n scrollContainer.current = null;\n clearScrollTimer();\n }\n };\n React.useEffect(()=>{\n return ()=>{\n clearListeners();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n /**\n * Handle scroll stop event and paginate to the closest item\n * If the closest item is the same as the previous scroll end\n * we paginate to the next/previous one based on direction\n */ const onScrollEnd = React.useCallback(()=>{\n if (!scrollContainer.current || !paginationEnabled) {\n // No container found\n return;\n }\n const currentScrollPos = Math.round(axis === 'vertical' ? scrollContainer.current.scrollTop : scrollContainer.current.scrollLeft);\n const closestItem = Math.round(currentScrollPos / itemSize);\n let nextItem = 0;\n if (Math.round(closestItem - lastIndexScrolled.current) === 0) {\n // Special case for go to next/previous with minimum amount of scroll needed\n const nextTarget = lastScrollPos.current < currentScrollPos ? 1 : -1;\n const isSecondaryScroll = lastScrollPos.current === currentScrollPos;\n const posMod = isSecondaryScroll ? 0 : nextTarget;\n nextItem = closestItem + posMod;\n } else {\n // Pagination for anything else can just jump to the closest!\n nextItem = closestItem;\n }\n const nextItemPos = nextItem * itemSize;\n if (axis === 'vertical') {\n scrollContainer.current.scrollTo({\n top: nextItemPos,\n behavior: 'smooth'\n });\n } else {\n scrollContainer.current.scrollTo({\n left: nextItemPos,\n behavior: 'smooth'\n });\n }\n lastScrollPos.current = nextItemPos;\n lastIndexScrolled.current = nextItem;\n }, [\n paginationEnabled,\n axis,\n itemSize\n ]);\n /**\n * On scroll timer that will continuously delay callback until scrolling stops\n */ const onScroll = React.useCallback((event)=>{\n clearScrollTimer();\n setScrollTimer(onScrollEnd, 100);\n }, [\n onScrollEnd,\n clearScrollTimer,\n setScrollTimer\n ]);\n /**\n * Pagination ref will ensure we attach listeners to containers on change\n * It is returned from hook and merged into the scroll container externally\n */ const paginationRef = React.useCallback((instance)=>{\n if (!paginationEnabled) {\n clearListeners();\n scrollContainer.current = null;\n return;\n }\n if (scrollContainer.current !== instance) {\n clearListeners();\n scrollContainer.current = instance;\n if (scrollContainer.current) {\n scrollContainer.current.addEventListener('scroll', onScroll);\n }\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n onScroll,\n onScrollEnd,\n paginationEnabled\n ]);\n return paginationRef;\n};\n","import * as React from 'react';\nimport { slot, useMergedRefs } from '@fluentui/react-utilities';\nimport { useVirtualizer_unstable } from '../Virtualizer/useVirtualizer';\nimport { useStaticVirtualizerMeasure } from '../../Hooks';\nimport { scrollToItemStatic } from '../../Utilities';\nimport { useStaticVirtualizerPagination } from '../../hooks/useStaticPagination';\nexport function useVirtualizerScrollView_unstable(props) {\n const { imperativeRef, itemSize, numItems, axis = 'vertical', reversed, enablePagination = false } = props;\n var _props_axis;\n const { virtualizerLength, bufferItems, bufferSize, scrollRef, containerSizeRef } = useStaticVirtualizerMeasure({\n defaultItemSize: props.itemSize,\n direction: (_props_axis = props.axis) !== null && _props_axis !== void 0 ? _props_axis : 'vertical'\n });\n // Store the virtualizer length as a ref for imperative ref access\n const virtualizerLengthRef = React.useRef(virtualizerLength);\n if (virtualizerLengthRef.current !== virtualizerLength) {\n virtualizerLengthRef.current = virtualizerLength;\n }\n const paginationRef = useStaticVirtualizerPagination({\n axis,\n itemSize\n }, enablePagination);\n const scrollViewRef = useMergedRefs(props.scrollViewRef, scrollRef, paginationRef);\n const imperativeVirtualizerRef = React.useRef(null);\n const scrollCallbackRef = React.useRef(null);\n React.useImperativeHandle(imperativeRef, ()=>{\n var _imperativeVirtualizerRef_current;\n return {\n scrollTo (index, behavior = 'auto', callback) {\n var _imperativeVirtualizerRef_current;\n scrollCallbackRef.current = callback !== null && callback !== void 0 ? callback : null;\n (_imperativeVirtualizerRef_current = imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.setFlaggedIndex(index);\n scrollToItemStatic({\n index,\n itemSize,\n totalItems: numItems,\n scrollViewRef,\n axis,\n reversed,\n behavior\n });\n },\n currentIndex: (_imperativeVirtualizerRef_current = imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.currentIndex,\n virtualizerLength: virtualizerLengthRef\n };\n }, [\n axis,\n scrollViewRef,\n itemSize,\n numItems,\n reversed\n ]);\n const handleRenderedIndex = (index)=>{\n if (scrollCallbackRef.current) {\n scrollCallbackRef.current(index);\n }\n };\n const virtualizerState = useVirtualizer_unstable({\n ...props,\n virtualizerLength,\n bufferItems,\n bufferSize,\n onRenderedFlaggedIndex: handleRenderedIndex,\n imperativeVirtualizerRef,\n containerSizeRef\n });\n return {\n ...virtualizerState,\n components: {\n ...virtualizerState.components,\n container: 'div'\n },\n container: slot.always(props.container, {\n defaultProps: {\n ref: scrollViewRef\n },\n elementType: 'div'\n })\n };\n}\n"," import { jsx as _jsx } from \"@fluentui/react-jsx-runtime/jsx-runtime\";\nimport { assertSlots } from '@fluentui/react-utilities';\nimport { renderVirtualizer_unstable } from '../Virtualizer/renderVirtualizer';\nexport const renderVirtualizerScrollView_unstable = (state)=>{\n assertSlots(state);\n return /*#__PURE__*/ _jsx(state.container, {\n children: renderVirtualizer_unstable(state)\n });\n};\n","import { useVirtualizerStyles_unstable, virtualizerClassNames } from '../Virtualizer/useVirtualizerStyles.styles';\nimport { __styles, mergeClasses } from '@griffel/react';\nconst virtualizerScrollViewClassName = 'fui-Virtualizer-Scroll-View';\nexport const virtualizerScrollViewClassNames = {\n ...virtualizerClassNames,\n container: `${virtualizerScrollViewClassName}__container`\n};\nconst useStyles = /*#__PURE__*/__styles({\n base: {\n mc9l5x: \"f22iagw\",\n a9b677: \"fly5x3f\",\n Bqenvij: \"f1l02sjl\"\n },\n vertical: {\n Beiy3e4: \"f1vx9l62\",\n Bmxbyg5: \"f5zp4f\"\n },\n horizontal: {\n Beiy3e4: \"f1063pyq\",\n B68tc82: \"f1oy3dpc\"\n },\n verticalReversed: {\n Beiy3e4: \"f1gkdon0\",\n Bmxbyg5: \"f5zp4f\"\n },\n horizontalReversed: {\n Beiy3e4: \"f1oztnx0\",\n B68tc82: \"f1oy3dpc\"\n }\n}, {\n d: [\".f22iagw{display:flex;}\", \".fly5x3f{width:100%;}\", \".f1l02sjl{height:100%;}\", \".f1vx9l62{flex-direction:column;}\", \".f5zp4f{overflow-y:auto;}\", \".f1063pyq{flex-direction:row;}\", \".f1oy3dpc{overflow-x:auto;}\", \".f1gkdon0{flex-direction:column-reverse;}\", \".f1oztnx0{flex-direction:row-reverse;}\"]\n});\n/**\n * Apply styling to the Virtualizer states\n */\nexport const useVirtualizerScrollViewStyles_unstable = state => {\n 'use no memo';\n\n const styles = useStyles();\n // Default virtualizer styles base\n useVirtualizerStyles_unstable(state);\n const containerStyle = state.axis === 'horizontal' ? state.reversed ? styles.horizontalReversed : styles.horizontal : state.reversed ? styles.verticalReversed : styles.vertical;\n // Add container styles\n state.container.className = mergeClasses(virtualizerScrollViewClassNames.container, styles.base, containerStyle, state.container.className);\n return state;\n};","import { useVirtualizerScrollView_unstable } from './useVirtualizerScrollView';\nimport { renderVirtualizerScrollView_unstable } from './renderVirtualizerScrollView';\nimport { useVirtualizerScrollViewStyles_unstable } from './useVirtualizerScrollViewStyles.styles';\nimport * as React from 'react';\n/**\n * Virtualizer ScrollView\n */ export const VirtualizerScrollView = (props)=>{\n const state = useVirtualizerScrollView_unstable(props);\n useVirtualizerScrollViewStyles_unstable(state);\n return renderVirtualizerScrollView_unstable(state);\n};\nVirtualizerScrollView.displayName = 'VirtualizerScrollView';\n","import * as React from 'react';\nimport { useTimeout } from '@fluentui/react-utilities';\n/**\n * Optional hook that will enable pagination on the virtualizer so that it 'autoscrolls' to an items exact position\n * Sizes are dynamic so we require a progressive sizing array (passed in from Dynamic virtualizer hooks)\n * On short scrolls, we will go at minimum to the next/previous item so that arrow pagination works\n * All VirtualizerDynamicPaginationProps can be grabbed from dynamic Virtualizer hooks externally and passed in\n */ export const useDynamicVirtualizerPagination = (virtualizerProps, paginationEnabled = true)=>{\n 'use no memo';\n const { axis = 'vertical', currentIndex, progressiveItemSizes, virtualizerLength } = virtualizerProps;\n const [setScrollTimer, clearScrollTimer] = useTimeout();\n const lastScrollPos = React.useRef(-1);\n const lastIndexScrolled = React.useRef(-1);\n const scrollContainer = React.useRef(null);\n const clearListeners = ()=>{\n if (scrollContainer.current) {\n scrollContainer.current.removeEventListener('scroll', onScroll);\n scrollContainer.current = null;\n clearScrollTimer();\n }\n };\n React.useEffect(()=>{\n return ()=>{\n clearListeners();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n /**\n * Handle scroll stop event and paginate to the closest item\n * If the closest item is the same as the previous scroll end\n * we paginate to the next/previous one based on direction\n *\n * Users/Virtualizer-Hooks must pass in a cumulative array of sizes\n * This prevents the need to recalculate and ensures size arrays are synced externally\n */ const onScrollEnd = React.useCallback(()=>{\n if (!scrollContainer.current || !paginationEnabled || !(progressiveItemSizes === null || progressiveItemSizes === void 0 ? void 0 : progressiveItemSizes.current)) {\n // No container found\n return;\n }\n const currentScrollPos = Math.round(axis === 'vertical' ? scrollContainer.current.scrollTop : scrollContainer.current.scrollLeft);\n let closestItemPos = 0;\n let closestItem = 0;\n const endItem = Math.min(currentIndex + virtualizerLength, progressiveItemSizes.current.length);\n for(let i = currentIndex; i < endItem - 1; i++){\n if (currentScrollPos <= progressiveItemSizes.current[i + 1] && currentScrollPos >= progressiveItemSizes.current[i]) {\n // Found our in between position\n const distanceToPrev = Math.abs(currentScrollPos - progressiveItemSizes.current[i]);\n const distanceToNext = Math.abs(progressiveItemSizes.current[i + 1] - currentScrollPos);\n if (distanceToPrev < distanceToNext) {\n closestItem = i;\n } else {\n closestItem = i + 1;\n }\n break;\n }\n }\n let nextItem;\n if (Math.round(closestItem - lastIndexScrolled.current) === 0) {\n // Special case for go to next/previous with minimum amount of scroll needed\n const nextTarget = lastScrollPos.current < currentScrollPos ? 1 : -1;\n // This will also handle a case where we scrolled to the exact correct position (noop)\n const isSecondaryScroll = Math.round(lastScrollPos.current - currentScrollPos) === 0;\n const posMod = isSecondaryScroll ? 0 : nextTarget;\n nextItem = closestItem + posMod;\n } else {\n // Pagination for anything else can just jump to the closest!\n nextItem = closestItem;\n }\n // Safeguard nextItem\n nextItem = Math.min(Math.max(0, nextItem), progressiveItemSizes.current.length);\n closestItemPos = progressiveItemSizes.current[nextItem];\n if (axis === 'vertical') {\n scrollContainer.current.scrollTo({\n top: closestItemPos,\n behavior: 'smooth'\n });\n } else {\n scrollContainer.current.scrollTo({\n left: closestItemPos,\n behavior: 'smooth'\n });\n }\n lastScrollPos.current = progressiveItemSizes.current[nextItem];\n lastIndexScrolled.current = nextItem;\n }, [\n paginationEnabled,\n currentIndex,\n scrollContainer,\n virtualizerLength,\n axis,\n progressiveItemSizes\n ]);\n /**\n * On scroll timer that will continuously delay callback until scrolling stops\n */ const onScroll = React.useCallback((event)=>{\n clearScrollTimer();\n setScrollTimer(onScrollEnd, 100);\n }, [\n onScrollEnd,\n clearScrollTimer,\n setScrollTimer\n ]);\n /**\n * Pagination ref will ensure we attach listeners to containers on change\n * It is returned from hook and merged into the scroll container externally\n */ const paginationRef = React.useCallback((instance)=>{\n if (!paginationEnabled) {\n clearListeners();\n scrollContainer.current = null;\n return;\n }\n if (scrollContainer.current !== instance) {\n clearListeners();\n scrollContainer.current = instance;\n if (scrollContainer.current) {\n scrollContainer.current.addEventListener('scroll', onScroll);\n }\n }\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n onScroll,\n onScrollEnd,\n paginationEnabled\n ]);\n return paginationRef;\n};\n","import * as React from 'react';\nimport { slot, useMergedRefs } from '@fluentui/react-utilities';\nimport { useVirtualizer_unstable } from '../Virtualizer/useVirtualizer';\nimport { useDynamicVirtualizerMeasure } from '../../Hooks';\nimport { useVirtualizerContextState_unstable, scrollToItemDynamic } from '../../Utilities';\nimport { useMeasureList } from '../../hooks/useMeasureList';\nimport { useDynamicVirtualizerPagination } from '../../hooks/useDynamicPagination';\nexport function useVirtualizerScrollViewDynamic_unstable(props) {\n 'use no memo';\n var _imperativeVirtualizerRef_current;\n const contextState = useVirtualizerContextState_unstable(props.virtualizerContext);\n const { imperativeRef, axis = 'vertical', reversed, imperativeVirtualizerRef, enablePagination = false, bufferItems: _bufferItems, bufferSize: _bufferSize } = props;\n let sizeTrackingArray = React.useRef(new Array(props.numItems).fill(props.itemSize));\n // This lets us trigger updates when a size change occurs.\n const [sizeUpdateCount, setSizeUpdateCount] = React.useState(0);\n const getChildSizeAuto = React.useCallback((index)=>{\n if (sizeTrackingArray.current.length <= index || sizeTrackingArray.current[index] <= 0) {\n // Default size for initial state or untracked\n return props.itemSize;\n }\n /* Required to be defined prior to our measure function\n * we use a sizing array ref that we will update post-render\n */ return sizeTrackingArray.current[index];\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n sizeTrackingArray,\n props.itemSize,\n sizeUpdateCount\n ]);\n var _props_axis, _props_getItemSize;\n const { virtualizerLength, bufferItems, bufferSize, scrollRef, containerSizeRef, updateScrollPosition } = useDynamicVirtualizerMeasure({\n defaultItemSize: props.itemSize,\n direction: (_props_axis = props.axis) !== null && _props_axis !== void 0 ? _props_axis : 'vertical',\n getItemSize: (_props_getItemSize = props.getItemSize) !== null && _props_getItemSize !== void 0 ? _props_getItemSize : getChildSizeAuto,\n virtualizerContext: contextState,\n numItems: props.numItems,\n bufferItems: _bufferItems,\n bufferSize: _bufferSize\n });\n const _imperativeVirtualizerRef = useMergedRefs(React.useRef(null), imperativeVirtualizerRef);\n var _contextState_contextIndex;\n const paginationRef = useDynamicVirtualizerPagination({\n axis,\n progressiveItemSizes: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.progressiveSizes,\n virtualizerLength,\n currentIndex: (_contextState_contextIndex = contextState === null || contextState === void 0 ? void 0 : contextState.contextIndex) !== null && _contextState_contextIndex !== void 0 ? _contextState_contextIndex : 0\n }, enablePagination);\n // Store the virtualizer length as a ref for imperative ref access\n const virtualizerLengthRef = React.useRef(virtualizerLength);\n if (virtualizerLengthRef.current !== virtualizerLength) {\n virtualizerLengthRef.current = virtualizerLength;\n }\n const scrollViewRef = useMergedRefs(props.scrollViewRef, scrollRef, paginationRef);\n const scrollCallbackRef = React.useRef(null);\n React.useImperativeHandle(imperativeRef, ()=>{\n var _imperativeVirtualizerRef_current;\n return {\n scrollTo (index, behavior = 'auto', callback) {\n scrollCallbackRef.current = callback !== null && callback !== void 0 ? callback : null;\n if (_imperativeVirtualizerRef.current) {\n var _imperativeVirtualizerRef_current;\n const progressiveSizes = _imperativeVirtualizerRef.current.progressiveSizes.current;\n const totalSize = progressiveSizes && (progressiveSizes === null || progressiveSizes === void 0 ? void 0 : progressiveSizes.length) > 0 ? progressiveSizes[Math.max(progressiveSizes.length - 1, 0)] : 0;\n _imperativeVirtualizerRef.current.setFlaggedIndex(index);\n scrollToItemDynamic({\n index,\n itemSizes: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.nodeSizes,\n totalSize,\n scrollViewRef: scrollViewRef,\n axis,\n reversed,\n behavior\n });\n }\n },\n currentIndex: (_imperativeVirtualizerRef_current = _imperativeVirtualizerRef.current) === null || _imperativeVirtualizerRef_current === void 0 ? void 0 : _imperativeVirtualizerRef_current.currentIndex,\n virtualizerLength: virtualizerLengthRef\n };\n }, [\n axis,\n scrollViewRef,\n reversed,\n _imperativeVirtualizerRef\n ]);\n const handleRenderedIndex = (index)=>{\n if (scrollCallbackRef.current) {\n scrollCallbackRef.current(index);\n }\n };\n var _props_getItemSize1;\n const virtualizerState = useVirtualizer_unstable({\n ...props,\n getItemSize: (_props_getItemSize1 = props.getItemSize) !== null && _props_getItemSize1 !== void 0 ? _props_getItemSize1 : getChildSizeAuto,\n virtualizerLength,\n bufferItems,\n bufferSize,\n virtualizerContext: contextState,\n imperativeVirtualizerRef: _imperativeVirtualizerRef,\n onRenderedFlaggedIndex: handleRenderedIndex,\n containerSizeRef,\n scrollViewRef,\n updateScrollPosition\n });\n const measureObject = useMeasureList(virtualizerState.virtualizerStartIndex, virtualizerLength, props.numItems, props.itemSize);\n if (enablePagination && measureObject.sizeUpdateCount !== sizeUpdateCount) {\n /* This enables us to let callback know that the sizes have been updated\n triggers a re-render but is only required on pagination (else index change handles) */ setSizeUpdateCount(measureObject.sizeUpdateCount);\n }\n if (axis === 'horizontal') {\n sizeTrackingArray = measureObject.widthArray;\n } else {\n sizeTrackingArray = measureObject.heightArray;\n }\n if (!props.getItemSize) {\n // Auto-measuring is required\n React.Children.map(virtualizerState.virtualizedChildren, (child, index)=>{\n if (/*#__PURE__*/ React.isValidElement(child)) {\n virtualizerState.virtualizedChildren[index] = /*#__PURE__*/ React.createElement(child.type, {\n ...child.props,\n key: child.key,\n ref: (element)=>{\n if (child.hasOwnProperty('ref')) {\n // We must access this from the child directly, not props (forward ref).\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const localRef = child === null || child === void 0 ? void 0 : child.ref;\n if (typeof localRef === 'function') {\n localRef(element);\n } else if (localRef) {\n localRef.current = element;\n }\n }\n // Call the auto-measure ref attachment.\n measureObject.createIndexedRef(index)(element);\n }\n });\n }\n });\n }\n return {\n ...virtualizerState,\n components: {\n ...virtualizerState.components,\n container: 'div'\n },\n container: slot.always(props.container, {\n defaultProps: {\n ref: scrollViewRef\n },\n elementType: 'div'\n })\n };\n}\n"," import { jsx as _jsx } from \"@fluentui/react-jsx-runtime/jsx-runtime\";\nimport { assertSlots } from '@fluentui/react-utilities';\nimport { renderVirtualizer_unstable } from '../Virtualizer/renderVirtualizer';\nexport const renderVirtualizerScrollViewDynamic_unstable = (state)=>{\n assertSlots(state);\n return /*#__PURE__*/ _jsx(state.container, {\n children: renderVirtualizer_unstable(state)\n });\n};\n","import { useVirtualizerStyles_unstable, virtualizerClassNames } from '../Virtualizer/useVirtualizerStyles.styles';\nimport { __styles, mergeClasses } from '@griffel/react';\nconst virtualizerScrollViewDynamicClassName = 'fui-Virtualizer-Scroll-View-Dynamic';\nexport const virtualizerScrollViewDynamicClassNames = {\n ...virtualizerClassNames,\n container: `${virtualizerScrollViewDynamicClassName}__container`\n};\nconst useStyles = /*#__PURE__*/__styles({\n base: {\n mc9l5x: \"f22iagw\",\n a9b677: \"fly5x3f\",\n Bqenvij: \"f1l02sjl\"\n },\n vertical: {\n Beiy3e4: \"f1vx9l62\",\n Bmxbyg5: \"f5zp4f\"\n },\n horizontal: {\n Beiy3e4: \"f1063pyq\",\n B68tc82: \"f1oy3dpc\"\n },\n verticalReversed: {\n Beiy3e4: \"f1gkdon0\",\n Bmxbyg5: \"f5zp4f\"\n },\n horizontalReversed: {\n Beiy3e4: \"f1oztnx0\",\n B68tc82: \"f1oy3dpc\"\n }\n}, {\n d: [\".f22iagw{display:flex;}\", \".fly5x3f{width:100%;}\", \".f1l02sjl{height:100%;}\", \".f1vx9l62{flex-direction:column;}\", \".f5zp4f{overflow-y:auto;}\", \".f1063pyq{flex-direction:row;}\", \".f1oy3dpc{overflow-x:auto;}\", \".f1gkdon0{flex-direction:column-reverse;}\", \".f1oztnx0{flex-direction:row-reverse;}\"]\n});\n/**\n * Apply styling to the Virtualizer states\n */\nexport const useVirtualizerScrollViewDynamicStyles_unstable = state => {\n 'use no memo';\n\n const styles = useStyles();\n // Default virtualizer styles base\n useVirtualizerStyles_unstable(state);\n const containerStyle = state.axis === 'horizontal' ? state.reversed ? styles.horizontalReversed : styles.horizontal : state.reversed ? styles.verticalReversed : styles.vertical;\n // Add container styles\n state.container.className = mergeClasses(virtualizerScrollViewDynamicClassNames.container, styles.base, containerStyle, state.container.className);\n return state;\n};","import { useVirtualizerScrollViewDynamic_unstable } from './useVirtualizerScrollViewDynamic';\nimport { renderVirtualizerScrollViewDynamic_unstable } from './renderVirtualizerScrollViewDynamic';\nimport { useVirtualizerScrollViewDynamicStyles_unstable } from './useVirtualizerScrollViewDynamicStyles.styles';\nimport * as React from 'react';\n/**\n * Virtualizer ScrollView\n */ export const VirtualizerScrollViewDynamic = (props, context)=>{\n const state = useVirtualizerScrollViewDynamic_unstable(props);\n useVirtualizerScrollViewDynamicStyles_unstable(state);\n return renderVirtualizerScrollViewDynamic_unstable(state);\n};\nVirtualizerScrollViewDynamic.displayName = 'VirtualizerScrollViewDynamic';\n","import * as React from 'react';\n/**\n * Context for providing the window.\n */\nexport var WindowContext = React.createContext({\n window: typeof window === 'object' ? window : undefined,\n});\n/**\n * Hook to access the window object. This can be overridden contextually using the `WindowProvider`.\n */\nexport var useWindow = function () { return React.useContext(WindowContext).window; };\n/**\n * Hook to access the document object. This can be overridden contextually using the `WindowProvider`.\n */\nexport var useDocument = function () { var _a; return (_a = React.useContext(WindowContext).window) === null || _a === void 0 ? void 0 : _a.document; };\n/**\n * Component to provide the window object contextually. This is useful when rendering content to an element\n * contained within a child window or iframe element, where event handlers and styling must be projected\n * to an alternative window or document.\n */\nexport var WindowProvider = function (props) {\n return React.createElement(WindowContext.Provider, { value: props }, props.children);\n};\n//# sourceMappingURL=WindowProvider.js.map","import * as React from 'react';\n/**\n * Context for providing the window.\n */\n// eslint-disable-next-line @fluentui/no-context-default-value\nexport var WindowContext = React.createContext({\n // eslint-disable-next-line no-restricted-globals\n window: typeof window === 'object' ? window : undefined,\n});\n/**\n * Hook to access the window object. This can be overridden contextually using the `WindowProvider`.\n */\nexport var useWindow = function () { return React.useContext(WindowContext).window; };\n/**\n * Hook to access the document object. This can be overridden contextually using the `WindowProvider`.\n */\nexport var useDocument = function () { var _a; return (_a = React.useContext(WindowContext).window) === null || _a === void 0 ? void 0 : _a.document; };\n/**\n * Component to provide the window object contextually. This is useful when rendering content to an element\n * contained within a child window or iframe element, where event handlers and styling must be projected\n * to an alternative window or document.\n */\nexport var WindowProvider = function (props) {\n return React.createElement(WindowContext.Provider, { value: props }, props.children);\n};\n//# sourceMappingURL=WindowProvider.js.map"],"names":["assertSlots","state","SLOT_RENDER_FUNCTION_SYMBOL","Symbol","for","SLOT_ELEMENT_TYPE_SYMBOL","getSlots","slots","slotProps","slotNames","Object","keys","components","slotName","slot","props","getSlot","_state_components","_state_components1","undefined","as","asProp","children","rest","renderFunction","render","getSlotsNext","getSlotNext","propsWithoutAs","resolveShorthand","value","options","renderByDefault","required","elementType","getIntrinsicElementProps","tagName","excludedPropNames","_props_as","isResolvedShorthand","shorthand","Array","isArray","isValidElement","isSlot","element","Boolean","hasOwnProperty","always","defaultProps","propsWithMetadata","optional","isTouchEvent","event","type","startsWith","isMouseEvent","indexOf","getEventClientCoords","clientX","clientY","touches","useBrowserTimer","setTimer","cancelTimer","id","set","fn","delay","current","cancel","useControllableState","internalState","setInternalState","defaultState","initialState","stateValueRef","setControlledState","newState","isFactoryDispatch","useIsControlled","controlledValue","isControlled","useEventCallback","callbackRef","Error","args","callback","useFirstMount","isFirst","useForceUpdate","useReducer","x","IdPrefixContext","IdPrefixProvider","Provider","resetIdsForTests","useId","prefix","providedId","contextValue","idPrefix","_useId","generatedId","escapedId","replace","useIsomorphicLayoutEffect","useMergedRefs","refs","mergedCallback","ref","DEFAULT_CONTAINS","parent","child","contains","useOnClickOutside","targetDocument","win","defaultView","disabled","disabledFocusOnIframe","timeoutId","useIFrameFocus","isMouseDownInsideRef","listener","ev","target","composedPath","every","handleMouseDown","some","currentEvent","getWindowEvent","conditionalHandler","addEventListener","setTimeout","removeEventListener","clearTimeout","_target_ownerDocument_defaultView","_target_ownerDocument","_target_ownerDocument_defaultView_event","window","ownerDocument","FUI_FRAME_EVENT","pollDuration","timeoutRef","e","_targetDocument_defaultView","setInterval","activeElement","CustomEvent","bubbles","dispatchEvent","useOnScrollOutside","containsProp","cache","WeakMap","useScrollbarWidth","force","has","get","outer","createElement","style","visibility","overflow","inner","appendChild","body","scrollbarWidth","offsetWidth","remove","useTimeout","createSetFromIterable","iterable","Set","useSelectionState","params","selected","setSelected","defaultSelectedItems","selectedItems","nextSelectedItems","_params_onSelectionChange","onSelectionChange","call","useSelection","selectionMode","changeSelection","methods","toggleItem","itemId","delete","add","selectItem","deselectItem","clearItems","isSelected","toggleAllItems","itemIds","allItemsSelected","clear","forEach","useMultipleSelection","_selected_has","useSingleSelection","defaultSSRContextValue","SSRContext","useSSRContext","_React_useContext","SSRProvider","useIsSSR","isInSSRContext","isSSR","setIsSSR","canUseDOM","document","applyTriggerPropsToChildren","triggerChildProps","cloneTriggerTree","triggerProps","grandchild","getTriggerChild","isFluentTrigger","isFluentTriggerComponent","clamp","min","max","Math","toObjectMap","items","result","item","key","baseElementEvents","baseElementProperties","microdataProperties","htmlElementProperties","labelProperties","audioProperties","videoProperties","olProperties","liProperties","anchorProperties","timeProperties","buttonProperties","nativeElementMap","label","audio","video","ol","li","a","button","input","textarea","select","option","table","tr","th","td","colGroup","col","fieldset","form","iframe","img","time","dialog","getNativeElementProps","allowedPropNames","getNativeProps","getPartitionedNativeProps","primarySlotTagName","root","className","primary","getRTLSafeKey","dir","isHTMLElement","_typedElement_ownerDocument","typedElement","_options_constructorName","constructorName","isInteractiveHTMLElement","isContentEditable","mergeCallbacks","callback1","callback2","omit","obj","exclusions","createPriorityQueue","compare","arr","size","swap","b","tmp","heapify","i","smallest","l","left","r","right","all","slice","index","dequeue","res","enqueue","p","peek","floor","elementContains","WeakSet","nextParent","skipVirtual","getParent","virtualParent","_virtual","getVirtualParent","parentNode","setVirtualParent","virtualChild","setTimeoutNoop","_callback","clearTimeoutNoop","_handle","setTimerFn","clearTimerFn","nodeType","Node","DOCUMENT_FRAGMENT_NODE","host","virtualizerClassName","virtualizerClassNames","before","beforeContainer","after","afterContainer","useStyles","base","mc9l5x","Bkecrkj","relative","qhf8xq","horizontal","sshi5w","vertical","Bf4jedk","d","useVirtualizerStyles_unstable","styles","reversed","axis","beforeBufferHeight","afterBufferHeight","bufferSize","beforeHeightPx","afterHeightPx","beforeBufferHeightPx","afterBufferHeightPx","bufferPx","beforeBuffer","marginBottom","marginTop","marginRight","marginLeft","afterBuffer","height","width","useRef","useEffect","useCallback","useState","getRTLRootMargin","ltrRootMargin","getComputedStyle","direction","newMargin","splitMargins","split","length","useIntersectionObserver","observer","observerList","setObserverList","_options_rootMargin","observerInit","setObserverInit","rootMargin","_options_rootMargin1","MutationObserver","_observer_current","observe","disconnect","useMutationObserver","mutationList","mutation","attributeName","attributes","subtree","attributeFilter","IntersectionObserver","newInit","_newInit_rootMargin","VirtualizerContext","VirtualizerContextProvider","useVirtualizerContext_unstable","useVirtualizerContextState_unstable","passedContext","virtualizerContext","_contextIndex","_setContextIndex","childProgressiveSizes","_passedContext_contextIndex","_ref","_passedContext_setContextIndex","_ref1","contextIndex","setContextIndex","useVirtualizer_unstable","itemSize","numItems","virtualizerLength","renderChild","getItemSize","bufferItems","round","onRenderedFlaggedIndex","imperativeVirtualizerRef","containerSizeRef","scrollViewRef","enableScrollLoad","updateScrollPosition","gap","_virtualizerContext","actualIndexRef","flaggedIndex","actualIndex","setActualIndex","beforeElementRef","afterElementRef","childSizes","childArray","populateSizeArrays","_gap","isScrolling","setIsScrolling","setScrollTimer","clearScrollTimer","scrollCounter","initializeScrollingTimer","updateChildRows","newIndex","_actualIndex","end","updateCurrentItemSizes","endIndex","startIndex","didUpdate","newSize","prevSize","batchUpdateNewIndex","findIndexRecursive","scrollPos","lowIndex","highIndex","midpoint","iBefore","iAfter","indexValue","afterIndexValue","beforeIndexValue","getIndexFromSizeArray","getIndexFromScrollPosition","calculateTotalSize","calculateBefore","currentIndex","calculateAfter","lastItemIndex","entries","latestEntry","sort","entry1","entry2","find","entry","isIntersecting","measurementPos","_containerSizeRef_current","intersectionRect","hOverflow","boundingClientRect","top","hOverflowReversed","bottom","wOverflow","wOverflowReversed","additionalOverflow","calculateOverBuffer","maxIndex","newStartIndex","flushSync","threshold","setBeforeRef","newList","push","setAfterRef","hasInitialized","progressiveSizes","nodeSizes","setFlaggedIndex","forceUpdate","maxCompare","isFullyInitialized","virtualizedChildren","role","totalVirtualizerHeight","virtualizerStartIndex","renderVirtualizer_unstable","Virtualizer","createResizeObserverFromDocument","ResizeObserver","displayName","useResizeObserverRef_unstable","resizeCallback","container","containerHeightRef","containerWidthRef","handleResize","pending","queueMicrotask","debounce","_container_current","_container_current1","containerHeight","clientHeight","containerWidth","clientWidth","resizeObserver","setResizeObserver","instance","unobserve","useStaticVirtualizerMeasure","virtualizerProps","defaultItemSize","setState","_bufferSize","_bufferItems","_entries","_observer","scrollRef","getBoundingClientRect","_targetDocument_defaultView1","innerHeight","innerWidth","ceil","newBufferItems","newBufferSize","useDynamicVirtualizerMeasure","virtualizerBufferItems","virtualizerBufferSize","scrollPosition","handleScrollResize","indexSizer","sizeToBeat","iItemSize","currentScrollPos","currentItemPos","_scrollPosition","useMeasureList","refLength","totalLength","widthArray","fill","heightArray","refArray","sizeUpdateCount","handleIndexUpdate","_refArray_current_index","isChanged","boundClientRect","newHeightLength","newWidthLength","concat","createIndexedRef","el","_resizeObserver","_resizeObserver_current","scrollToItemStatic","totalItems","behavior","_scrollViewRef_current","_scrollViewRef_current1","_scrollViewRef_current2","_scrollViewRef_current3","scrollTo","scrollToItemDynamic","itemSizes","totalSize","itemDepth","useStaticVirtualizerPagination","paginationEnabled","lastScrollPos","lastIndexScrolled","scrollContainer","clearListeners","onScroll","onScrollEnd","scrollTop","scrollLeft","closestItem","nextItem","nextTarget","nextItemPos","useVirtualizerScrollView_unstable","imperativeRef","enablePagination","_props_axis","virtualizerLengthRef","paginationRef","scrollCallbackRef","_imperativeVirtualizerRef_current","virtualizerState","renderVirtualizerScrollView_unstable","virtualizerScrollViewClassNames","a9b677","Bqenvij","Beiy3e4","Bmxbyg5","B68tc82","verticalReversed","horizontalReversed","useVirtualizerScrollViewStyles_unstable","containerStyle","VirtualizerScrollView","useDynamicVirtualizerPagination","progressiveItemSizes","closestItemPos","endItem","abs","useVirtualizerScrollViewDynamic_unstable","contextState","sizeTrackingArray","setSizeUpdateCount","getChildSizeAuto","_props_getItemSize","_imperativeVirtualizerRef","_contextState_contextIndex","_props_getItemSize1","measureObject","map","localRef","renderVirtualizerScrollViewDynamic_unstable","virtualizerScrollViewDynamicClassNames","useVirtualizerScrollViewDynamicStyles_unstable","VirtualizerScrollViewDynamic","context","WindowContext","useWindow","useDocument","_a","WindowProvider"],"sourceRoot":""}