{"version":3,"file":"3850.bundle.77a734b7ae574bcb0b26.js","mappings":"+RAOA,MAAMA,EAAqBC,EAAAA,cAAoB,MAEzCC,EAAqBA,KAAMC,EAAAA,EAAAA,YAAWH,GA6BtCI,EAAwBC,IAAmB,IAAlB,UAAEC,GAAWD,EACxC,MAAM,mBAAEE,GAAuBL,IAM/B,OALAM,EAAAA,EAAAA,kBAAgB,KAEZD,GAAmBE,GAAQC,IAAA,IAAC,IAAEC,GAAKD,EAAA,OAAKE,EAAAA,EAAAA,KAAA,OAAKN,UAAWA,EAAWK,IAAKA,GAAO,IACxE,IAAMJ,EAAmB,QACjC,CAACD,IACG,IAAI,EAGTO,EAAiBC,IAAoC,IAAnC,iBAAEC,EAAgB,SAAEC,GAAUF,EAClD,OACIF,EAAAA,EAAAA,KAACK,EAAAA,GAAyB,CAACC,SAAO,EAAAF,UAC9BJ,EAAAA,EAAAA,KAAA,QAAMO,KAAK,SAASb,UAAWS,GAAoB,SAASC,SACvDA,KAEmB,EAI9BI,EAAmBC,IAAsC,IAArC,SAAEC,EAAQ,SAAEC,EAAQ,SAAEP,GAAUK,EACtD,OACIT,EAAAA,EAAAA,KAACK,EAAAA,GAAsB,CACnBK,SAAUA,EACVC,SAAUA,EACVjB,UAAWkB,IACP,uCACCD,EAEK,oDADA,8EAERP,SAEDA,GACoB,EAIjCI,EAAiBK,UAAY,CACzBH,SAAUI,IAAAA,KACVH,SAAUG,IAAAA,KACVV,SAAUU,IAAAA,MAGd,MAAMC,EAAmBC,IAAqD,IAApD,KAAEC,EAAI,OAAEC,EAAM,SAAER,EAAQ,SAAEN,EAAQ,UAAEe,GAAWH,EACrE,MAAMI,GACFpB,EAAAA,EAAAA,KAAA,OAAKN,UAAU,8DAA6DU,SAAEA,IAGlF,OACIJ,EAAAA,EAAAA,KAACK,EAAAA,GAAsB,CAACC,SAAO,EAAAF,SAC1Be,GACGnB,EAAAA,EAAAA,KAACqB,EAAAA,EAAS,IAAKF,EAAWG,UAAQ,EAAAlB,SAC7BgB,KAGLpB,EAAAA,EAAAA,KAAA,KACIN,UAAU,gIACVuB,KAAMA,EACNC,OAAQA,EACRK,QAASb,EAASN,SAEjBgB,KAGY,EAIjCL,EAAiBF,UAAY,CACzBI,KAAMH,IAAAA,OACNI,OAAQJ,IAAAA,OACRJ,SAAUI,IAAAA,KACVK,UAAWL,IAAAA,MAAgBO,EAAAA,EAAUR,WACrCT,SAAUU,IAAAA,MAGd,MAAMU,EAAeC,IAAmF,IAAAC,EAAA,IAAlF,OAAEC,EAAM,gBAAEC,EAAe,cAAEC,EAAa,iBAAE1B,EAAgB,gBAAE2B,GAAiBL,EAI/F,MAAM,QAAEM,GAAgC,QAAvBL,EAAGpC,WAAoB,IAAAoC,EAAAA,EAAI,CAAC,EAE7C,OACIM,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAA7B,SAAA,CACK0B,IAAmB9B,EAAAA,EAAAA,KAACR,EAAqB,CAACE,UAAWoC,KACtDE,EAAAA,EAAAA,MAAC3B,EAAAA,GAAsB,CAAC6B,aAAcC,GAAUA,IAAUR,aAAM,EAANA,KAAYS,OAAO,EAAMhC,SAAA,EAC/EJ,EAAAA,EAAAA,KAACC,EAAc,CAACE,iBAAkBA,EAAiBC,SAAEwB,KACrD5B,EAAAA,EAAAA,KAACK,EAAAA,GAAwB,CAACgC,UAAWN,EAAQ3B,UACzCJ,EAAAA,EAAAA,KAACK,EAAAA,GAAyB,CACtBiC,KAAK,SACLC,MAAM,QACN7C,UAAWkB,IACP,iDACAT,GAAoB,gDACtBC,SAEDyB,WAId,EAIXL,EAAaX,UAAY,CACrBc,OAAQb,IAAAA,KACRc,gBAAiBd,IAAAA,KAAe0B,WAChCX,cAAef,IAAAA,KAAe0B,WAC9BrC,iBAAkBW,IAAAA,K,waClItB,MAAM2B,EAAgBC,IAAA,IAAC,SAAEtC,GAAUsC,EAAA,OAAK1C,EAAAA,EAAAA,KAAA,OAAKN,UAAU,oBAAmBU,SAAEA,GAAe,EACrFuC,EAAsBlD,IAAA,IAAC,UAAEmD,KAAcC,GAAWpD,EAAA,OACpDO,EAAAA,EAAAA,KAAC8C,EAAAA,OAAM,IAAKD,EAAWE,QAASH,EAAY,eAAYI,GAAa,EAG5DC,EAAanD,IAAA,IAAC,MAAEoD,EAAK,UAAE/B,EAAS,KAAEgC,EAAI,UAAEP,GAAW9C,EAAA,OAC5DE,EAAAA,EAAAA,KAACyC,EAAa,CAAArC,UACVJ,EAAAA,EAAAA,KAACqB,EAAAA,EAAS,IAAKF,EAASf,UACpBJ,EAAAA,EAAAA,KAAC2C,EAAmB,CAACQ,KAAMA,EAAMP,UAAWA,EAAUxC,SACjD8C,OAGG,EAGpBD,EAAWpC,UAAY,CACnBqC,MAAOpC,IAAAA,KAAe0B,WACtBrB,UAAWL,IAAAA,MAAgBO,EAAAA,EAAUR,WAAW2B,WAChDI,UAAW9B,IAAAA,MAER,MAAMsC,EAAelD,IAAA,IAAC,MAAEgD,EAAK,QAAE3B,EAAO,KAAE4B,EAAI,UAAEP,GAAW1C,EAAA,OAC5DF,EAAAA,EAAAA,KAACyC,EAAa,CAAArC,UACVJ,EAAAA,EAAAA,KAAC2C,EAAmB,CAACpB,QAASA,EAAS4B,KAAMA,EAAMP,UAAWA,EAAUxC,SACnE8C,KAEO,EAGpBE,EAAavC,UAAY,CACrBqC,MAAOpC,IAAAA,KAAe0B,WACtBjB,QAAST,IAAAA,KAAe0B,WACxBI,UAAW9B,IAAAA,MAGR,MAQMuC,EAAY5C,IAA+E,IAA9E,MAAE6C,EAAK,iBAAEC,EAAgB,eAAEC,EAAc,6BAAEC,GAA8BhD,EAC/F,OACIuB,EAAAA,EAAAA,MAAA,QAAA5B,SAAA,CACKkD,EAAMI,iBAAiB,KAAEC,EAAAA,EAAAA,IAAiBL,EAAOC,EAAkBC,GACnEC,IACGzB,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAA7B,SAAA,CAAE,MACIJ,EAAAA,EAAAA,KAAA,QAAMN,UAAU,0BAAyBU,SAAEqD,IAAqC,SAGvF,EAIfJ,EAAUxC,UAAY,CAClByC,MAAOxC,IAAAA,OAAiB0B,WACxBe,iBAAkBzC,IAAAA,OAAiB0B,WACnCgB,eAAgB1C,IAAAA,OAAiB0B,YAG9B,MAAMoB,EAAqB5C,IAAA,IAAC,eAAE6C,EAAc,YAAEC,EAAW,WAAEC,GAAY/C,EAAA,OAC1EhB,EAAAA,EAAAA,KAACgE,EAAAA,EAAc,CAACH,eAAgBA,EAAgBC,YAAaA,EAAaC,WAAYA,GAAc,EAGxGH,EAAmB/C,UAAYmD,EAAAA,EAAenD,UAEvC,MAAMoD,EAAiBxC,IAAA,IAAC,iBAC3ByC,EAAgB,YAChBC,EAAW,gBACXC,EAAe,6BACfX,EAA4B,QAC5BY,GACH5C,EAAA,OACGO,EAAAA,EAAAA,MAAA,OAAKtC,UAAU,4DAA2DU,SAAA,CACrEiE,IACGrE,EAAAA,EAAAA,KAAA,OAAKN,UAAU,OAAMU,UACjBJ,EAAAA,EAAAA,KAACsE,EAAAA,KAAI,CAACC,OAAQF,MAGrBF,IAAenE,EAAAA,EAAAA,KAACwE,EAAAA,MAAK,CAACC,KAAK,QAAOrE,SAAE+D,IACpCC,IAAmBpE,EAAAA,EAAAA,KAAA,KAAGN,UAAU,4BAA2BU,SAAEgE,IAC7DX,EACAS,IACGlE,EAAAA,EAAAA,KAAA,OAAKN,UAAU,sDAAqDU,SAAE8D,MAExE,EAGVD,EAAepD,UAAY,CACvBsD,YAAarD,IAAAA,OAAiB0B,WAC9B4B,gBAAiBtD,IAAAA,OACjBoD,iBAAkBpD,IAAAA,KAClBuD,QAASvD,IAAAA,MAGN,MAAM4D,EAAwBC,IAAA,IAAC,YAAEC,EAAW,gBAAEC,GAAiBF,EAAA,OAClE3E,EAAAA,EAAAA,KAACiE,EAAc,CACXE,YAAY,mBACZC,gBAAgB,yEAChBF,kBAAkBlE,EAAAA,EAAAA,KAAC8E,EAAwB,CAAC5B,MAAO0B,EAAazD,UAAW0D,KAC7E,EAGNH,EAAsB7D,UAAY,CAC9B+D,YAAa9D,IAAAA,OAAiB0B,WAC9BqC,gBAAiB/D,IAAAA,MAAgBO,EAAAA,EAAUR,WAAW2B,YAGnD,MACMsC,EAA2B7B,EAE3B8B,EAAmBC,IAAA,IAAC,cAAEC,EAAa,YAAEC,GAAaF,EAAA,OAC3DhD,EAAAA,EAAAA,MAAA,OAAKtC,UAAU,wDAAuDU,SAAA,CACjE6E,GACDjF,EAAAA,EAAAA,KAAA,OAAKN,UAAU,UAASU,SAAE8E,MACxB,EAGVH,EAAiBlE,UAAY,CACzBoE,cAAenE,IAAAA,KAAe0B,WAC9B0C,YAAapE,IAAAA,KAAe0B,YAGzB,MAAM2C,EAAoBC,IAAA,IAAC,YAAEC,EAAW,YAAEC,GAAaF,EAAA,OAC1DpD,EAAAA,EAAAA,MAAA,OAAKtC,UAAU,qEAAoEU,SAAA,EAC/EJ,EAAAA,EAAAA,KAAA,OAAKN,UAAU,2BAA0BU,SAAEiF,KAC3CrF,EAAAA,EAAAA,KAAA,OAAKN,UAAU,wCAAuCU,SAAEkF,MACtD,EAGVH,EAAkBtE,UAAY,CAC1BwE,YAAavE,IAAAA,KAAe0B,WAC5B8C,YAAaxE,IAAAA,KAAe0B,YAGzB,MAAM+C,EAAOC,IAAA,IAAC,SAAEpF,GAAUoF,EAAA,OAAKxF,EAAAA,EAAAA,KAAA,OAAKN,UAAU,+BAA8BU,SAAEA,GAAe,EAEpGmF,EAAK1E,UAAY,CACbT,SAAUU,IAAAA,MAGP,MAIM2E,GACTzF,EAAAA,EAAAA,KAACuF,EAAI,CAAAnF,SACA,CAAC,EAAG,EAAG,EAAG,EAAG,GAAGsF,KAAIC,IACjB3F,EAAAA,EAAAA,KAAC+E,EAAgB,CAEbE,eACIjF,EAAAA,EAAAA,KAAA,OAAKN,UAAU,qBAAoBU,UAC/BJ,EAAAA,EAAAA,KAAC4F,EAAAA,EAAY,CAACC,MAAM,OAAOC,OAAO,WAG1CZ,aACIlF,EAAAA,EAAAA,KAAA,OAAKN,UAAU,iCAAgCU,UAC3CJ,EAAAA,EAAAA,KAAC4F,EAAAA,EAAY,CAACC,MAAM,OAAOC,OAAO,YARrCH,OAgBRI,GACT/F,EAAAA,EAAAA,KAACuF,EAAI,CAAAnF,SACA,CAAC,EAAG,EAAG,EAAG,EAAG,GAAGsF,KAAIC,IACjB3F,EAAAA,EAAAA,KAACmF,EAAiB,CAEdE,aACIrF,EAAAA,EAAAA,KAAA,OAAKN,UAAU,sBAAqBU,UAChCJ,EAAAA,EAAAA,KAAC4F,EAAAA,EAAY,CAACC,MAAM,OAAOC,OAAO,WAG1CR,aACItF,EAAAA,EAAAA,KAAA,OAAKN,UAAU,gCAA+BU,UAC1CJ,EAAAA,EAAAA,KAAC4F,EAAAA,EAAY,CAACC,MAAM,OAAOC,OAAO,YARrCH,OAmCfK,EAAkBC,IACpB,MAAM,QACFC,EAAO,iBACPhC,EAAgB,aAChBiC,EAAY,YACZC,EAAW,qBACXC,EAAoB,cACpBxE,EAAa,sBACbyE,EAAqB,cACrBC,EAAa,mBACbC,EAAkB,wBAClBC,EAAuB,0BACvBC,EAAyB,gBACzB5E,EAAe,wBACf6E,GACAV,EAEJ,OACIjE,EAAAA,EAAAA,MAAA,OAAKtC,UAAU,QAAOU,SAAA,CACjB+F,QAAAA,EACID,IACGlG,EAAAA,EAAAA,KAAA,OAAKN,UAAWgH,EAA0BtG,UACtC4B,EAAAA,EAAAA,MAAA,OACItC,UAAWkB,IACP,2CACAsD,GAAoB,8CACtB9D,SAAA,EAEFJ,EAAAA,EAAAA,KAAC4G,EAAAA,QAAO,CAAAxG,SAAE8F,IACThC,QAIjBlE,EAAAA,EAAAA,KAAA,OAAKN,UAAU,sCAAqCU,SAC/CiG,GACGrE,EAAAA,EAAAA,MAAA,OAAKtC,UAAU,uBAAsBU,SAAA,EACjCJ,EAAAA,EAAAA,KAAA,OAAKN,UAAU,2BAA0BU,UACrCJ,EAAAA,EAAAA,KAAC4F,EAAAA,EAAY,CAACC,MAAM,OAAOC,OAAO,YAEtC9F,EAAAA,EAAAA,KAAA,OAAKN,UAAU,WAAUU,UACrBJ,EAAAA,EAAAA,KAAC6G,EAAAA,EAAc,CAAChB,MAAM,OAAOC,OAAO,OAAOgB,UAAU,gBAEzD9G,EAAAA,EAAAA,KAAA,OAAKN,UAAU,WAAUU,UACrBJ,EAAAA,EAAAA,KAAC6G,EAAAA,EAAc,CAAChB,MAAM,OAAOC,OAAO,OAAOgB,UAAU,mBAI7D9G,EAAAA,EAAAA,KAAC+G,EAAAA,EAAa,IACNX,EACJtE,gBAAiBA,EACjB6E,wBAAyBA,OAInCJ,GAAiBC,KACfxG,EAAAA,EAAAA,KAAA,OAAKN,UAAU,2DAA0DU,SACpEmG,GACGvG,EAAAA,EAAAA,KAAA,OAAKN,UAAU,oBAAmBU,UAC9BJ,EAAAA,EAAAA,KAAC4F,EAAAA,EAAY,CAACoB,MAAM,QAAQnB,MAAM,OAAOC,OAAO,YAGpD9D,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAA7B,SAAA,CACKoG,EACAA,IAAsBJ,aAAW,EAAXA,EAAaa,UAAUC,QAC1ClH,EAAAA,EAAAA,KAAA,OAAKN,UC5R5B,wCD4RgEU,UACrCJ,EAAAA,EAAAA,KAACmH,EAAAA,OAAM,CACHxG,SAAUyF,EAAYa,UAAUC,KAAKvG,SACrCyG,QAAShB,EAAYa,UAAUC,KAAKE,QACpCC,YAAa,CAAEnE,MAAO,UAAWoE,MAAO,IACxCC,KAAK,OACLC,SAAUC,GAAOrB,EAAYoB,SAAS,CAAEE,IAAK,OAAQJ,MAAOG,IAC5DH,MAAOlB,EAAYuB,OAAOT,cAQrDX,EAAgBD,EAAwBzE,GACzC7B,EAAAA,EAAAA,KAAA,OAAKN,UAAU,OAAMU,UAAGmG,GAAiBE,MACvC,EAIdT,EAAgBnF,UAAY,CACxBqF,QAASpF,IAAAA,OACT8G,gBAAiB9G,IAAAA,KACjBqF,aAAcrF,IAAAA,KACdsF,aAAayB,EAAAA,EAAAA,GACT/G,IAAAA,MAAgBiG,EAAAA,EAAclG,YAC9BiH,IAAA,IAAC,qBAAEzB,GAAsByB,EAAA,OAAMzB,CAAoB,IAEvDA,qBAAsBvF,IAAAA,KAAe0B,WACrCgE,mBAAoB1F,IAAAA,KACpBe,eAAegG,EAAAA,EAAAA,GAAW/G,IAAAA,MAAgBiH,IAAA,IAAC,cAAExB,GAAewB,EAAA,OAAMxB,CAAa,IAC/EA,cAAezF,IAAAA,KAAe0B,WAC9B8D,sBAAuBxF,IAAAA,KAAe0B,WACtCiE,wBAAyB3F,IAAAA,KACzB4F,0BAA2B5F,IAAAA,QAG/B,O,yFE9TA,MAAMkH,EAAe,CACjB,EAAG,QACH,EAAG,QACH,EAAG,QACH,EAAG,QACH,EAAG,QACHC,KAAM,UAGJC,EAAS,CACXC,MAAO,QACPC,KAAM,QAGJC,EAAc,CAChBC,OAAQ,SACRC,SAAU,YAGR1B,EAAiBZ,IACnB,MAAM,MAAEJ,EAAQ,OAAM,MAAEmB,EAAQkB,EAAOE,KAAI,UAAEtB,EAAYuB,EAAYC,QAAWrC,EAC1EuC,EAAaR,EAAanC,GAEhC,OACI7F,EAAAA,EAAAA,KAAA,OACIN,UAAWkB,IACP,sFACAoG,IAAUkB,EAAOE,KAAO,qBAAuB,qBAC/CI,GACFpI,UAEFJ,EAAAA,EAAAA,KAAA,QAAAI,UACIJ,EAAAA,EAAAA,KAACsE,EAAAA,KAAI,CAACC,OAAQuC,IAAcuB,EAAYC,OAASG,EAAAA,YAAcC,EAAAA,UAAWC,MAAM,eAElF,EAId9B,EAAehG,UAAY,CACvBgF,MAAO/E,IAAAA,MACH8H,OAAOC,KAAKb,GAActC,KAAIgC,GAAQoB,OAAOC,SAASC,SAAStB,IAAQsB,SAAStB,GAAOA,KAE3FV,MAAOlG,IAAAA,MAAgB8H,OAAOjB,OAAOO,IACrCpB,UAAWhG,IAAAA,MAAgB8H,OAAOjB,OAAOU,KAG7C,K,wBClCe,SAASR,EAAWoB,EAASC,GACxC,OAAO,SAACjD,EAAOkD,EAAUC,GACrB,MACMC,EADaH,EAAajD,GACFgD,EAAQzG,WAAayG,EAAQ,QAAAK,EAAAC,UAAAC,OAFpBC,EAAI,IAAAC,MAAAJ,EAAA,EAAAA,EAAA,KAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,EAAA,GAAAJ,UAAAI,GAG3C,MAAMC,EAAgBP,EAASpD,EAAOkD,EAAUC,KAAkBK,GAClE,GAAIG,aAAyBC,MACzB,OAAOD,CAEf,CACJ,C,wIC1BA,MAAME,EAAO,OAWN,SAASC,EAASC,GACrB,OAAOA,EAAOC,gBAAkBH,EAAO,MAAQ,KACnD,CAEO,SAASI,EAAkBC,GAC9B,OAAkD,IAA9CA,EAAUF,cAAcG,QAAQ,UAA+C,aAA5BD,EAAUF,cACtD,SAGJ,MACX,CAEO,SAAStG,EAAiBL,EAAO+G,EAAUC,GAC9C,OAAgB,GAAThH,EAAa+G,EAAWC,CACnC,C","sources":["webpack://fieldlevel.app/./app-core/components/DropdownMenu/DropdownMenu.jsx","webpack://fieldlevel.app/./app-core/components/SearchFilters/layouts/ListWithFilters/ListWithFilters.jsx","webpack://fieldlevel.app/./app-core/components/SearchFilters/layouts/ListWithFilters/ListWithFilters.module.css","webpack://fieldlevel.app/./app-core/components/skeletons/SkeletonFilter.jsx","webpack://fieldlevel.app/./app-core/propTypes/requiredIf.js","webpack://fieldlevel.app/./app-core/utility/grammar.js"],"sourcesContent":["import React, { useRef, useLayoutEffect, useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\nimport * as DropdownMenuRadix from '@radix-ui/react-dropdown-menu';\r\n\r\nimport WiredLink from '@appCore/components/WiredLink';\r\n\r\nconst portalContainerCtx = React.createContext(null);\r\n\r\nconst usePortalContainer = () => useContext(portalContainerCtx);\r\n\r\n/**\r\n * The PortalContainerProvider is a workaround for z-index/layering issues with DropdownMenuRadix. The portal\r\n * that's exposed by the primitive (e.g. DropdownMenuRadix.Portal) doesn't allow you to set styles/classname(s)\r\n * directly on the wrapper (which is oddly inconsistent with the default \"Portal\" utility element they provide), but\r\n * they DO allow you to specify an alternate container for the portal instead of document.body, which of course you\r\n * can style any way you wish. So, this provider is intended to be imported and rendered towards the top of the\r\n * React tree, and when used in conjunction with PortalContainerConfig, will produce a <div> to serve as the\r\n * portal container.\r\n */\r\nexport const PortalContainerProvider = ({ children }) => {\r\n    const [elementState, setElementState] = useState(null);\r\n    const [renderContainer, setRenderContainer] = useState(null);\r\n    const ref = useRef();\r\n    useLayoutEffect(() => {\r\n        // If the ref were to ever be mounted, and then subsequently unmounted, it will become null. For this\r\n        // use-case, it's simpler to just standardize nullish values to undefined\r\n        setElementState(ref.current ?? undefined);\r\n    }, [renderContainer]);\r\n\r\n    return (\r\n        <>\r\n            {renderContainer?.({ ref })}\r\n            <portalContainerCtx.Provider value={{ element: elementState, setRenderContainer }} children={children} />\r\n        </>\r\n    );\r\n};\r\n\r\nconst PortalContainerConfig = ({ className }) => {\r\n    const { setRenderContainer } = usePortalContainer();\r\n    useLayoutEffect(() => {\r\n        // Since we're trying to set the state to a function, we need to use the functional api of setState\r\n        setRenderContainer(prev => ({ ref }) => <div className={className} ref={ref} />);\r\n        return () => setRenderContainer(null);\r\n    }, [className]);\r\n    return null;\r\n};\r\n\r\nconst DropdownButton = ({ matchButtonWidth, children }) => {\r\n    return (\r\n        <DropdownMenuRadix.Trigger asChild>\r\n            <span role=\"button\" className={matchButtonWidth && 'w-full'}>\r\n                {children}\r\n            </span>\r\n        </DropdownMenuRadix.Trigger>\r\n    );\r\n};\r\n\r\nconst DropdownMenuItem = ({ onSelect, disabled, children }) => {\r\n    return (\r\n        <DropdownMenuRadix.Item\r\n            onSelect={onSelect}\r\n            disabled={disabled}\r\n            className={cx(\r\n                'hover:outline-none hover:border-none',\r\n                !disabled\r\n                    ? 'hover:bg-background-highlight focus:bg-background-highlight cursor-pointer'\r\n                    : 'text-muted bg-background-muted cursor-not-allowed'\r\n            )}\r\n        >\r\n            {children}\r\n        </DropdownMenuRadix.Item>\r\n    );\r\n};\r\n\r\nDropdownMenuItem.propTypes = {\r\n    onSelect: PropTypes.func,\r\n    disabled: PropTypes.bool,\r\n    children: PropTypes.node\r\n};\r\n\r\nconst DropdownMenuLink = ({ href, target, onSelect, children, linkProps }) => {\r\n    const contentRendering = (\r\n        <div className=\"hover:bg-background-highlight focus:bg-background-highlight\">{children}</div>\r\n    );\r\n\r\n    return (\r\n        <DropdownMenuRadix.Item asChild>\r\n            {linkProps ? (\r\n                <WiredLink {...linkProps} unstyled>\r\n                    {contentRendering}\r\n                </WiredLink>\r\n            ) : (\r\n                <a\r\n                    className=\"no-underline hover:no-underline focus:no-underline text-[color:inherit] hover:text-[color:inherit] focus:text-[color:inherit]\"\r\n                    href={href}\r\n                    target={target}\r\n                    onClick={onSelect}\r\n                >\r\n                    {contentRendering}\r\n                </a>\r\n            )}\r\n        </DropdownMenuRadix.Item>\r\n    );\r\n};\r\n\r\nDropdownMenuLink.propTypes = {\r\n    href: PropTypes.string,\r\n    target: PropTypes.string,\r\n    onSelect: PropTypes.func,\r\n    linkProps: PropTypes.exact(WiredLink.propTypes),\r\n    children: PropTypes.node\r\n};\r\n\r\nconst DropdownMenu = ({ onOpen, buttonRendering, listRendering, matchButtonWidth, portalClassName }) => {\r\n    // Since PortalContainerProvider is (hopefully) a short-term workaround, we don't intend to use\r\n    // it in every app that imports DropdownMenu. So, in case the context is null, we default to\r\n    // an empty object.\r\n    const { element } = usePortalContainer() ?? {};\r\n\r\n    return (\r\n        <>\r\n            {portalClassName && <PortalContainerConfig className={portalClassName} />}\r\n            <DropdownMenuRadix.Root onOpenChange={isOpen => isOpen && onOpen?.()} modal={false}>\r\n                <DropdownButton matchButtonWidth={matchButtonWidth}>{buttonRendering}</DropdownButton>\r\n                <DropdownMenuRadix.Portal container={element}>\r\n                    <DropdownMenuRadix.Content\r\n                        side=\"bottom\"\r\n                        align=\"start\"\r\n                        className={cx(\r\n                            'bg-foreground-base shadow-md border rounded-sm',\r\n                            matchButtonWidth && 'w-[var(--radix-dropdown-menu-trigger-width)]'\r\n                        )}\r\n                    >\r\n                        {listRendering}\r\n                    </DropdownMenuRadix.Content>\r\n                </DropdownMenuRadix.Portal>\r\n            </DropdownMenuRadix.Root>\r\n        </>\r\n    );\r\n};\r\n\r\nDropdownMenu.propTypes = {\r\n    onOpen: PropTypes.func,\r\n    buttonRendering: PropTypes.node.isRequired,\r\n    listRendering: PropTypes.node.isRequired,\r\n    matchButtonWidth: PropTypes.bool\r\n};\r\n\r\nexport { DropdownMenu, DropdownMenuItem, DropdownMenuLink };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport { Button, Select, Title, Icon, Heading } from '@fieldlevel/playbook';\r\n\r\nimport requiredIf from '@appCore/propTypes/requiredIf';\r\nimport WiredLink from '@appCore/components/WiredLink';\r\nimport PagingControls from '@appCore/components/PagingControls/PagingControls';\r\nimport SkeletonBody from '@appCore/components/skeletons/SkeletonBody';\r\nimport SkeletonFilter from '@appCore/components/skeletons/SkeletonFilter';\r\nimport SearchFilters from '@appCore/components/SearchFilters/SearchFilters';\r\nimport { singularOrPlural } from '@appCore/utility/grammar';\r\n\r\nimport * as styles from './ListWithFilters.module.css';\r\n\r\nconst ActionWrapper = ({ children }) => <div className=\"whitespace-nowrap\">{children}</div>;\r\nconst ButtonActionDisplay = ({ isPrimary, ...restProps }) => (\r\n    <Button {...restProps} variant={isPrimary ? 'primary' : undefined} />\r\n);\r\n\r\nexport const LinkAction = ({ label, linkProps, icon, isPrimary }) => (\r\n    <ActionWrapper>\r\n        <WiredLink {...linkProps}>\r\n            <ButtonActionDisplay icon={icon} isPrimary={isPrimary}>\r\n                {label}\r\n            </ButtonActionDisplay>\r\n        </WiredLink>\r\n    </ActionWrapper>\r\n);\r\n\r\nLinkAction.propTypes = {\r\n    label: PropTypes.node.isRequired,\r\n    linkProps: PropTypes.exact(WiredLink.propTypes).isRequired,\r\n    isPrimary: PropTypes.bool\r\n};\r\nexport const ButtonAction = ({ label, onClick, icon, isPrimary }) => (\r\n    <ActionWrapper>\r\n        <ButtonActionDisplay onClick={onClick} icon={icon} isPrimary={isPrimary}>\r\n            {label}\r\n        </ButtonActionDisplay>\r\n    </ActionWrapper>\r\n);\r\n\r\nButtonAction.propTypes = {\r\n    label: PropTypes.node.isRequired,\r\n    onClick: PropTypes.func.isRequired,\r\n    isPrimary: PropTypes.bool\r\n};\r\n\r\nexport const Actions = props => (\r\n    <div className=\"flex justify-between gap-4 flex-wrap xs:flex-nowrap\">\r\n        {React.Children.map(props.children, (child, idx) =>\r\n            React.cloneElement(child, { isPrimary: idx + 1 === React.Children.count(props.children) })\r\n        )}\r\n    </div>\r\n);\r\n\r\nexport const ListCount = ({ count, itemNameSingular, itemNamePlural, supplementalContentRendering }) => {\r\n    return (\r\n        <span>\r\n            {count.toLocaleString()} {singularOrPlural(count, itemNameSingular, itemNamePlural)}\r\n            {supplementalContentRendering && (\r\n                <>\r\n                    . <span className=\"text-body-sm text-muted\">{supplementalContentRendering}</span>{' '}\r\n                </>\r\n            )}\r\n        </span>\r\n    );\r\n};\r\n\r\nListCount.propTypes = {\r\n    count: PropTypes.number.isRequired,\r\n    itemNameSingular: PropTypes.string.isRequired,\r\n    itemNamePlural: PropTypes.string.isRequired\r\n};\r\n\r\nexport const ListPagingControls = ({ buildLinkProps, currentPage, totalPages }) => (\r\n    <PagingControls buildLinkProps={buildLinkProps} currentPage={currentPage} totalPages={totalPages} />\r\n);\r\n\r\nListPagingControls.propTypes = PagingControls.propTypes;\r\n\r\nexport const ListEmptyState = ({\r\n    actionsRendering,\r\n    headingText,\r\n    descriptionText,\r\n    supplementalContentRendering,\r\n    iconSrc\r\n}) => (\r\n    <div className=\"min-h-[450px] max-w-[560px] mx-auto py-12 p-4 text-center\">\r\n        {iconSrc && (\r\n            <div className=\"mb-2\">\r\n                <Icon source={iconSrc} />\r\n            </div>\r\n        )}\r\n        {headingText && <Title size=\"small\">{headingText}</Title>}\r\n        {descriptionText && <p className=\"mt-2 text-body text-muted\">{descriptionText}</p>}\r\n        {supplementalContentRendering}\r\n        {actionsRendering && (\r\n            <div className=\"flex flex-col gap-2 justify-center mt-6 sm:flex-row\">{actionsRendering}</div>\r\n        )}\r\n    </div>\r\n);\r\n\r\nListEmptyState.propTypes = {\r\n    headingText: PropTypes.string.isRequired,\r\n    descriptionText: PropTypes.string,\r\n    actionsRendering: PropTypes.node,\r\n    iconSrc: PropTypes.func\r\n};\r\n\r\nexport const DefaultListEmptyState = ({ actionLabel, actionLinkProps }) => (\r\n    <ListEmptyState\r\n        headingText=\"No matches found\"\r\n        descriptionText=\"Removing filters will generally provide the results you are expecting.\"\r\n        actionsRendering={<ListEmptyStateLinkAction label={actionLabel} linkProps={actionLinkProps} />}\r\n    />\r\n);\r\n\r\nDefaultListEmptyState.propTypes = {\r\n    actionLabel: PropTypes.string.isRequired,\r\n    actionLinkProps: PropTypes.exact(WiredLink.propTypes).isRequired\r\n};\r\n\r\nexport const ListEmptyStateButtonAction = ButtonAction;\r\nexport const ListEmptyStateLinkAction = LinkAction;\r\n\r\nexport const IndentedListItem = ({ headerContent, bodyContent }) => (\r\n    <div className=\"space-y-6 p-6 border-b border-b-muted last:border-b-0\">\r\n        {headerContent}\r\n        <div className=\"sm:pl-8\">{bodyContent}</div>\r\n    </div>\r\n);\r\n\r\nIndentedListItem.propTypes = {\r\n    headerContent: PropTypes.node.isRequired,\r\n    bodyContent: PropTypes.node.isRequired\r\n};\r\n\r\nexport const TwoColumnListItem = ({ col1Content, col2Content }) => (\r\n    <div className=\"grid grid-cols-4 gap-6 p-6 border-b border-b-muted last:border-b-0\">\r\n        <div className=\"col-span-4 sm:col-span-2\">{col1Content}</div>\r\n        <div className=\"col-span-4 pl-8 sm:col-span-2 sm:pl-0\">{col2Content}</div>\r\n    </div>\r\n);\r\n\r\nTwoColumnListItem.propTypes = {\r\n    col1Content: PropTypes.node.isRequired,\r\n    col2Content: PropTypes.node.isRequired\r\n};\r\n\r\nexport const List = ({ children }) => <div className=\"bg-foreground-base rounded-b\">{children}</div>;\r\n\r\nList.propTypes = {\r\n    children: PropTypes.node\r\n};\r\n\r\nexport const ListWithNoBackgroundAndSpaceBetweenItems = ({ children }) => (\r\n    <div className=\"mt-4 rounded-b space-y-4\">{children}</div>\r\n);\r\n\r\nexport const DefaultIndentedListItemLoadingSkeleton = (\r\n    <List>\r\n        {[0, 1, 2, 3, 4].map(idx => (\r\n            <IndentedListItem\r\n                key={idx}\r\n                headerContent={\r\n                    <div className=\"w-[175px] h-[55px]\">\r\n                        <SkeletonBody width=\"full\" height=\"full\" />\r\n                    </div>\r\n                }\r\n                bodyContent={\r\n                    <div className=\"w-full max-w-[435px] h-[125px]\">\r\n                        <SkeletonBody width=\"full\" height=\"full\" />\r\n                    </div>\r\n                }\r\n            />\r\n        ))}\r\n    </List>\r\n);\r\n\r\nexport const DefaultTwoColumnListItemLoadingSkeleton = (\r\n    <List>\r\n        {[0, 1, 2, 3, 4].map(idx => (\r\n            <TwoColumnListItem\r\n                key={idx}\r\n                col1Content={\r\n                    <div className=\"w-[175px] h-[105px]\">\r\n                        <SkeletonBody width=\"full\" height=\"full\" />\r\n                    </div>\r\n                }\r\n                col2Content={\r\n                    <div className=\"w-full max-w-[475px] h-[85px]\">\r\n                        <SkeletonBody width=\"full\" height=\"full\" />\r\n                    </div>\r\n                }\r\n            />\r\n        ))}\r\n    </List>\r\n);\r\n\r\n/**\r\n * The intent of the ListWithFilters layout is to provide a uniform presentation of list pages with\r\n * filterable content. It handles some of the presentational logic around loading states, but in general\r\n * is agnostic towards state processing and business logic. Instead, it provides \"outlets\" for various\r\n * pieces of content that may be passed in, which align with the named exports in this file as outlined below.\r\n *\r\n * - actionsRendering --> Actions, LinkAction, ButtonAction - The actions rendering should be composed of <Actions> with nested\r\n *                        \"Actions\" (either <LinkAction> or <ButtonAction>) as children. The last \"Action\" to be passed in will\r\n *                        be styled as \"primary\" automatically.\r\n * - navRendering --> TBD\r\n * - listRendering --> List, IndentedListItem, TwoColumnListItem, ListEmptyState - A list rendering should be composed of a <List> with nested\r\n *                     \"ListItems\" (either <IndentedListItem> or <TwoColumnListItem>) as children. If your list has an empty state (e.g. no results), use <ListEmptyState />\r\n *                     or <DefaultListEmptyState /> (inside a <List>) to display it.\r\n * - listSkeletonRendering --> List, IndentedListItem, TwoColumnListItem - Default loadingSkeleton exports are provided for each \"ListItem\" type\r\n *                             but if you want a tighter integration for a given list, you may build a custom implementation and pass it in. It should follow\r\n *                             the rules for listRendering above.\r\n * - listCountRendering --> ListCount\r\n * - pagingControlsRendering --> ListPagingControls\r\n */\r\nconst ListWithFilters = props => {\r\n    const {\r\n        heading,\r\n        actionsRendering,\r\n        navRendering,\r\n        filterProps,\r\n        filterPropsIsLoading,\r\n        listRendering,\r\n        listSkeletonRendering,\r\n        listIsLoading,\r\n        listCountRendering,\r\n        pagingControlsRendering,\r\n        headingContainerClassName,\r\n        portalClassName,\r\n        onSecondaryDropdownOpen\r\n    } = props;\r\n\r\n    return (\r\n        <div className=\"pb-12\">\r\n            {navRendering ??\r\n                (heading && (\r\n                    <div className={headingContainerClassName}>\r\n                        <div\r\n                            className={cx(\r\n                                'px-4 mb-4 space-y-4 md:px-0 sm:space-y-0',\r\n                                actionsRendering && 'sm:flex sm:items-center sm:justify-between'\r\n                            )}\r\n                        >\r\n                            <Heading>{heading}</Heading>\r\n                            {actionsRendering}\r\n                        </div>\r\n                    </div>\r\n                ))}\r\n            <div className=\"p-4 bg-foreground-base md:rounded-t\">\r\n                {filterPropsIsLoading ? (\r\n                    <div className=\"flex flex-wrap gap-2\">\r\n                        <div className=\"w-full h-10 sm:w-[260px]\">\r\n                            <SkeletonBody width=\"full\" height=\"full\" />\r\n                        </div>\r\n                        <div className=\"w-[90px]\">\r\n                            <SkeletonFilter width=\"full\" height=\"full\" iconStyle=\"dropdown\" />\r\n                        </div>\r\n                        <div className=\"w-[90px]\">\r\n                            <SkeletonFilter width=\"full\" height=\"full\" iconStyle=\"dropdown\" />\r\n                        </div>\r\n                    </div>\r\n                ) : (\r\n                    <SearchFilters\r\n                        {...filterProps}\r\n                        portalClassName={portalClassName}\r\n                        onSecondaryDropdownOpen={onSecondaryDropdownOpen}\r\n                    />\r\n                )}\r\n            </div>\r\n            {(listIsLoading || listCountRendering) && (\r\n                <div className=\"flex justify-between items-center p-4 bg-background-base\">\r\n                    {listIsLoading ? (\r\n                        <div className=\"h-[20px] w-[85px]\">\r\n                            <SkeletonBody theme=\"light\" width=\"full\" height=\"full\" />\r\n                        </div>\r\n                    ) : (\r\n                        <>\r\n                            {listCountRendering}\r\n                            {listCountRendering && filterProps?.filterDef.sort && (\r\n                                <div className={styles.SortSelectWrapper}>\r\n                                    <Select\r\n                                        disabled={filterProps.filterDef.sort.disabled}\r\n                                        options={filterProps.filterDef.sort.options}\r\n                                        placeholder={{ label: 'Sort by', value: '' }}\r\n                                        name=\"sort\"\r\n                                        onChange={val => filterProps.onChange({ key: 'sort', value: val })}\r\n                                        value={filterProps.values.sort}\r\n                                    />\r\n                                </div>\r\n                            )}\r\n                        </>\r\n                    )}\r\n                </div>\r\n            )}\r\n            {listIsLoading ? listSkeletonRendering : listRendering}\r\n            <div className=\"my-6\">{!listIsLoading && pagingControlsRendering}</div>\r\n        </div>\r\n    );\r\n};\r\n\r\nListWithFilters.propTypes = {\r\n    heading: PropTypes.string,\r\n    actionRendering: PropTypes.node,\r\n    navRendering: PropTypes.node,\r\n    filterProps: requiredIf(\r\n        PropTypes.exact(SearchFilters.propTypes),\r\n        ({ filterPropsIsLoading }) => !filterPropsIsLoading\r\n    ),\r\n    filterPropsIsLoading: PropTypes.bool.isRequired,\r\n    listCountRendering: PropTypes.node,\r\n    listRendering: requiredIf(PropTypes.node, ({ listIsLoading }) => !listIsLoading),\r\n    listIsLoading: PropTypes.bool.isRequired,\r\n    listSkeletonRendering: PropTypes.node.isRequired,\r\n    pagingControlsRendering: PropTypes.node,\r\n    headingContainerClassName: PropTypes.string\r\n};\r\n\r\nexport default ListWithFilters;\r\n","// extracted by mini-css-extract-plugin\nvar _1 = \"FL-ListWithFilters__SortSelectWrapper\";\nexport { _1 as \"SortSelectWrapper\" }\n","import PropTypes from 'prop-types';\r\nimport cx from 'classnames';\r\n\r\nimport { Icon, DownMinor, SelectMinor } from '@fieldlevel/playbook';\r\n\r\nconst widthClasses = {\r\n    1: 'w-1/6',\r\n    2: 'w-2/6',\r\n    3: 'w-3/6',\r\n    4: 'w-4/6',\r\n    5: 'w-5/6',\r\n    full: 'w-full'\r\n};\r\n\r\nconst THEMES = {\r\n    light: 'light',\r\n    dark: 'dark'\r\n};\r\n\r\nconst ICON_STYLES = {\r\n    select: 'select',\r\n    dropdown: 'dropdown'\r\n};\r\n\r\nconst SkeletonFilter = props => {\r\n    const { width = 'full', theme = THEMES.dark, iconStyle = ICON_STYLES.select } = props;\r\n    const widthClass = widthClasses[width];\r\n\r\n    return (\r\n        <div\r\n            className={cx(\r\n                'border-2 rounded-md h-9 pr-4 animate-pulse flex items-center justify-end text-muted',\r\n                theme === THEMES.dark ? 'bg-foreground-dark' : 'bg-foreground-base',\r\n                widthClass\r\n            )}\r\n        >\r\n            <span>\r\n                <Icon source={iconStyle === ICON_STYLES.select ? SelectMinor : DownMinor} color=\"current\" />\r\n            </span>\r\n        </div>\r\n    );\r\n};\r\n\r\nSkeletonFilter.propTypes = {\r\n    width: PropTypes.oneOf(\r\n        Object.keys(widthClasses).map(key => (Number.isFinite(parseInt(key)) ? parseInt(key) : key))\r\n    ),\r\n    theme: PropTypes.oneOf(Object.values(THEMES)),\r\n    iconStyle: PropTypes.oneOf(Object.values(ICON_STYLES))\r\n};\r\n\r\nexport default SkeletonFilter;\r\n","/**\r\n * This propType allows you to declare props as \"conditionally required\" based on the values of\r\n * other props.\r\n *\r\n * Ex:\r\n *\r\n * MyComponent.propTypes = {\r\n *     a: PropTypes.bool.isRequired,\r\n *     b: requiredIf(PropTypes.bool, props => props.a === true) // <-- only required if a === true\r\n * }\r\n *\r\n * <MyComponent a={false} /> // <-- Okay!\r\n * <MyComponent a={true} /> // <-- Warning, failed PropType declaration!\r\n *\r\n * @param {object} propDef\r\n * @param {Function} checkingFunc\r\n */\r\nexport default function requiredIf(propDef, checkingFunc) {\r\n    return (props, propName, componentName, ...rest) => {\r\n        const isRequired = checkingFunc(props);\r\n        const propType = isRequired ? propDef.isRequired : propDef;\r\n        const propTypeCheck = propType(props, propName, componentName, ...rest);\r\n        if (propTypeCheck instanceof Error) {\r\n            return propTypeCheck;\r\n        }\r\n    };\r\n}\r\n","const MALE = 'male';\r\nconst FEMALE = 'female';\r\n\r\nexport function heOrShe(gender) {\r\n    return gender.toLowerCase() === MALE ? 'he' : 'she';\r\n}\r\n\r\nexport function himOrHer(gender) {\r\n    return gender.toLowerCase() === MALE ? 'him' : 'her';\r\n}\r\n\r\nexport function hisOrHer(gender) {\r\n    return gender.toLowerCase() === MALE ? 'his' : 'her';\r\n}\r\n\r\nexport function sportEnumToGender(sportEnum) {\r\n    if (sportEnum.toLowerCase().indexOf('women') !== -1 || sportEnum.toLowerCase() === 'softball') {\r\n        return 'Female';\r\n    }\r\n\r\n    return 'Male';\r\n}\r\n\r\nexport function singularOrPlural(count, singular, plural) {\r\n    return count == 1 ? singular : plural;\r\n}\r\n\r\nexport function aOrAn(string) {\r\n    if (['a', 'e', 'i', 'o', 'u'].includes(string.charAt(0).toLowerCase())) {\r\n        return 'an';\r\n    }\r\n    return 'a';\r\n}\r\n"],"names":["portalContainerCtx","React","usePortalContainer","useContext","PortalContainerConfig","_ref2","className","setRenderContainer","useLayoutEffect","prev","_ref3","ref","_jsx","DropdownButton","_ref4","matchButtonWidth","children","DropdownMenuRadix","asChild","role","DropdownMenuItem","_ref5","onSelect","disabled","cx","propTypes","PropTypes","DropdownMenuLink","_ref6","href","target","linkProps","contentRendering","WiredLink","unstyled","onClick","DropdownMenu","_ref7","_usePortalContainer","onOpen","buttonRendering","listRendering","portalClassName","element","_jsxs","_Fragment","onOpenChange","isOpen","modal","container","side","align","isRequired","ActionWrapper","_ref","ButtonActionDisplay","isPrimary","restProps","Button","variant","undefined","LinkAction","label","icon","ButtonAction","ListCount","count","itemNameSingular","itemNamePlural","supplementalContentRendering","toLocaleString","singularOrPlural","ListPagingControls","buildLinkProps","currentPage","totalPages","PagingControls","ListEmptyState","actionsRendering","headingText","descriptionText","iconSrc","Icon","source","Title","size","DefaultListEmptyState","_ref8","actionLabel","actionLinkProps","ListEmptyStateLinkAction","IndentedListItem","_ref9","headerContent","bodyContent","TwoColumnListItem","_ref10","col1Content","col2Content","List","_ref11","DefaultIndentedListItemLoadingSkeleton","map","idx","SkeletonBody","width","height","DefaultTwoColumnListItemLoadingSkeleton","ListWithFilters","props","heading","navRendering","filterProps","filterPropsIsLoading","listSkeletonRendering","listIsLoading","listCountRendering","pagingControlsRendering","headingContainerClassName","onSecondaryDropdownOpen","Heading","SkeletonFilter","iconStyle","SearchFilters","theme","filterDef","sort","Select","options","placeholder","value","name","onChange","val","key","values","actionRendering","requiredIf","_ref13","_ref14","widthClasses","full","THEMES","light","dark","ICON_STYLES","select","dropdown","widthClass","SelectMinor","DownMinor","color","Object","keys","Number","isFinite","parseInt","propDef","checkingFunc","propName","componentName","propType","_len","arguments","length","rest","Array","_key","propTypeCheck","Error","MALE","hisOrHer","gender","toLowerCase","sportEnumToGender","sportEnum","indexOf","singular","plural"],"sourceRoot":""}