@sheerid/jslib 2.215.0 → 2.217.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_mysheerid-preview.css +4 -4
- package/_mysheerid-preview.js +15 -15
- package/chunk/ActiveDutyStartDateComponent-8ed93MIc.js +4 -4
- package/chunk/ActiveDutyStartDateComponent-BfkF0ser.js +4 -4
- package/chunk/AddressComponent-AiyIPiCz.js +4 -4
- package/chunk/AddressComponent-DV2Wsw6k.js +4 -4
- package/chunk/CaptchaComponent-CSCvSY8Y.js +4 -4
- package/chunk/CaptchaComponent-DcxyBvrf.js +4 -4
- package/chunk/ChangeLocaleComponent-Cu2DR-Q3.js +4 -4
- package/chunk/ChangeLocaleComponent-DUnfgQuX.js +4 -4
- package/chunk/City-BmrJpnS6.js +4 -4
- package/chunk/City-yVVnZQTP.js +4 -4
- package/chunk/{CollegeNameComponent-DqIROnau.js → CollegeNameComponent-DaTimEqC.js} +5 -5
- package/chunk/{CollegeNameComponent-OwbvKomU.js.map → CollegeNameComponent-DaTimEqC.js.map} +1 -1
- package/chunk/{CollegeNameComponent-OwbvKomU.js → CollegeNameComponent-DtKPZHb-.js} +5 -5
- package/chunk/{CollegeNameComponent-DqIROnau.js.map → CollegeNameComponent-DtKPZHb-.js.map} +1 -1
- package/chunk/CopyToClipboardComponent-9hyfSMC0.js +4 -4
- package/chunk/CopyToClipboardComponent-H3bJGcOM.js +4 -4
- package/chunk/CountryComponentWrapper--2UQ7mXP.js +4 -4
- package/chunk/CountryComponentWrapper-Ceq-eink.js +4 -4
- package/chunk/DriverLicenseNumberComponent-D9cakdvU.js +4 -4
- package/chunk/DriverLicenseNumberComponent-ziLNYB8e.js +4 -4
- package/chunk/{EBTCardNumberComponent-BbL9NoDt.js → EBTCardNumberComponent-B1kv4R4G.js} +5 -5
- package/chunk/{EBTCardNumberComponent-BbL9NoDt.js.map → EBTCardNumberComponent-B1kv4R4G.js.map} +1 -1
- package/chunk/{EBTCardNumberComponent-ps7LjMyZ.js → EBTCardNumberComponent-oYQJ_tP7.js} +5 -5
- package/chunk/{EBTCardNumberComponent-ps7LjMyZ.js.map → EBTCardNumberComponent-oYQJ_tP7.js.map} +1 -1
- package/chunk/EmailLoopPending-In0FH-Ap.js +4 -4
- package/chunk/EmailLoopPending-lxRF0bx8.js +4 -4
- package/chunk/{FirstResponderOrganizationComponent-CIRKlR-B.js → FirstResponderOrganizationComponent-Bru1a0U7.js} +5 -5
- package/chunk/{FirstResponderOrganizationComponent-BJ_sSKyU.js.map → FirstResponderOrganizationComponent-Bru1a0U7.js.map} +1 -1
- package/chunk/{FirstResponderOrganizationComponent-BJ_sSKyU.js → FirstResponderOrganizationComponent-fPxZFdpO.js} +5 -5
- package/chunk/{FirstResponderOrganizationComponent-CIRKlR-B.js.map → FirstResponderOrganizationComponent-fPxZFdpO.js.map} +1 -1
- package/chunk/FormFieldInputSelect-CjWY_ush.js +4 -4
- package/chunk/FormFieldInputSelect-o7QZaYhS.js +4 -4
- package/chunk/FormFieldLayout-DDEEmlGC.js +4 -4
- package/chunk/FormFieldLayout-DEVPpEyA.js +4 -4
- package/chunk/FormFieldText-CJ-GVpZE.js +4 -4
- package/chunk/FormFieldText-CaWtYVur.js +4 -4
- package/chunk/{FormFieldTypeahead-D0_jXok8.js → FormFieldTypeahead-C6eS7yJg.js} +4 -4
- package/chunk/FormFieldTypeahead-C6eS7yJg.js.map +1 -0
- package/chunk/{FormFieldTypeahead-vwV0QGbl.js → FormFieldTypeahead-CyKKVK89.js} +4 -4
- package/chunk/FormFieldTypeahead-CyKKVK89.js.map +1 -0
- package/chunk/FormSelectChoice-BahCx4wG.js +4 -4
- package/chunk/FormSelectChoice-C-rIlDKl.js +4 -4
- package/chunk/InputText-CCNbZmMe.js +4 -4
- package/chunk/InputText-PEiatRRJ.js +4 -4
- package/chunk/{LicensedProfessionalOrganizationComponent-CDUu7n6S.js → LicensedProfessionalOrganizationComponent-C5pc7hVJ.js} +5 -5
- package/chunk/{LicensedProfessionalOrganizationComponent-CDUu7n6S.js.map → LicensedProfessionalOrganizationComponent-C5pc7hVJ.js.map} +1 -1
- package/chunk/{LicensedProfessionalOrganizationComponent-DfulwYkx.js → LicensedProfessionalOrganizationComponent-CnR_qF3r.js} +5 -5
- package/chunk/{LicensedProfessionalOrganizationComponent-DfulwYkx.js.map → LicensedProfessionalOrganizationComponent-CnR_qF3r.js.map} +1 -1
- package/chunk/{MedicalProfessionalOrganizationComponent-DNENwJq-.js → MedicalProfessionalOrganizationComponent-CXHX25GN.js} +5 -5
- package/chunk/{MedicalProfessionalOrganizationComponent-DNENwJq-.js.map → MedicalProfessionalOrganizationComponent-CXHX25GN.js.map} +1 -1
- package/chunk/{MedicalProfessionalOrganizationComponent-RGG8iBdc.js → MedicalProfessionalOrganizationComponent-DBf6V49M.js} +5 -5
- package/chunk/{MedicalProfessionalOrganizationComponent-RGG8iBdc.js.map → MedicalProfessionalOrganizationComponent-DBf6V49M.js.map} +1 -1
- package/chunk/MemberIdComponent-C8mVSo9m.js +4 -4
- package/chunk/MemberIdComponent-oanWSvQh.js +4 -4
- package/chunk/{MembershipOrganizationComponent-B4bYo0LI.js → MembershipOrganizationComponent-CN6_d_Fk.js} +5 -5
- package/chunk/{MembershipOrganizationComponent-B4bYo0LI.js.map → MembershipOrganizationComponent-CN6_d_Fk.js.map} +1 -1
- package/chunk/{MembershipOrganizationComponent-BPkKoRE3.js → MembershipOrganizationComponent-yu-UNXIK.js} +5 -5
- package/chunk/{MembershipOrganizationComponent-BPkKoRE3.js.map → MembershipOrganizationComponent-yu-UNXIK.js.map} +1 -1
- package/chunk/Onfido-BG8cDEVW.js +4 -4
- package/chunk/PersonalInfoStepSubmitButton-j44RdZDq.js +4 -4
- package/chunk/PersonalInfoStepSubmitButton-v_kWLmEw.js +4 -4
- package/chunk/PersonalInfoStepWrapper-BOBNCgik.js +4 -4
- package/chunk/PersonalInfoStepWrapper-PV06WMKL.js +4 -4
- package/chunk/PostalCodeComponent-DrCcV90W.js +4 -4
- package/chunk/PostalCodeComponent-KXVfZkLx.js +4 -4
- package/chunk/SSN-B_z2R4Bx.js +4 -4
- package/chunk/SSN-Hb1lTx8A.js +4 -4
- package/chunk/StateSelectComponent-CChSqKXz.js +4 -4
- package/chunk/StateSelectComponent-CIpB-Rh1.js +4 -4
- package/chunk/StatusComponent-C6J1B7Tl.js +4 -4
- package/chunk/StatusComponent-pmuIhuXi.js +4 -4
- package/chunk/StepCard-CIfaQVu-.js +4 -4
- package/chunk/StepCard-dcwCtPrW.js +4 -4
- package/chunk/StepCollectMilitaryStatusComponent-C02BKffq.js +4 -4
- package/chunk/StepCollectMilitaryStatusComponent-CaP-tPJA.js +4 -4
- package/chunk/StepDriverLicensePersonalInfoComponent-C4QRbgMC.js +4 -4
- package/chunk/StepDriverLicensePersonalInfoComponent-I3LNN4GB.js +4 -4
- package/chunk/StepGeneralIdentityPersonalInfoComponent-Bw6WDrOP.js +4 -4
- package/chunk/StepGeneralIdentityPersonalInfoComponent-CGIiAyvk.js +4 -4
- package/chunk/StepHybridIdentityPersonalInfoComponent-BAe_HzjN.js +4 -4
- package/chunk/StepHybridIdentityPersonalInfoComponent-kE7xVuag.js +4 -4
- package/chunk/StepIDCheckLoopOnfido-Sg4a19wV.js +4 -4
- package/chunk/StepIDCheckLoopOnfido-djTS20UT.js +4 -4
- package/chunk/StepIDCheckLoopRegula-B5I-ojjy.js +4 -4
- package/chunk/StepIDCheckLoopRegula-DZA5G1Z6.js +4 -4
- package/chunk/StepInactiveMilitaryPersonalInfoComponent-BBsJj3Sm.js +4 -4
- package/chunk/StepInactiveMilitaryPersonalInfoComponent-DDwAnwM5.js +4 -4
- package/chunk/{TeacherSchoolComponent-DFtsbQdJ.js → TeacherSchoolComponent-BSHPjiwQ.js} +5 -5
- package/chunk/{TeacherSchoolComponent-CQsnm2Ob.js.map → TeacherSchoolComponent-BSHPjiwQ.js.map} +1 -1
- package/chunk/{TeacherSchoolComponent-CQsnm2Ob.js → TeacherSchoolComponent-Bf3ZhJ_c.js} +5 -5
- package/chunk/{TeacherSchoolComponent-DFtsbQdJ.js.map → TeacherSchoolComponent-Bf3ZhJ_c.js.map} +1 -1
- package/chunk/ar-uNi-5jZs.js +4 -4
- package/chunk/bg-BSs2zI8g.js +4 -4
- package/chunk/bn-IN-DgKTANOE.js +4 -4
- package/chunk/cs-ZQhsI2gf.js +4 -4
- package/chunk/da-Ca6-P-fb.js +4 -4
- package/chunk/de-qTizo3k0.js +4 -4
- package/chunk/downshift.esm-CtrbqQGL.js +4 -4
- package/chunk/downshift.esm-huKBwB2d.js +4 -4
- package/chunk/el-Ci0_i7um.js +4 -4
- package/chunk/en-GB-BMFtN6kg.js +4 -4
- package/chunk/es-10I2Uwx1.js +4 -4
- package/chunk/es-ES-BEtGV8ZY.js +4 -4
- package/chunk/fi-VAIle52X.js +4 -4
- package/chunk/fr-CA-YGnUj1Cd.js +4 -4
- package/chunk/fr-CmkojiS4.js +4 -4
- package/chunk/ga-CTdDfi4f.js +4 -4
- package/chunk/hi-IN-mBG2SFX6.js +4 -4
- package/chunk/hr-D8voB0hC.js +4 -4
- package/chunk/hu-DzN9Oup5.js +4 -4
- package/chunk/id-ZqMlj7_U.js +4 -4
- package/chunk/index-B0SBEWOf.js +4 -4
- package/chunk/index-BA3bE-f-.js +4 -4
- package/chunk/{index-DzdL5k0x.js → index-BKJ-EAbL.js} +5 -5
- package/chunk/{index-DzdL5k0x.js.map → index-BKJ-EAbL.js.map} +1 -1
- package/chunk/{index-DhehscKj.js → index-BNlngnBD.js} +4 -4
- package/chunk/{index-DhehscKj.js.map → index-BNlngnBD.js.map} +1 -1
- package/chunk/{index-BoJdZalW.js → index-BSzMX8zb.js} +6 -6
- package/chunk/{index-CrGgYYxL.js.map → index-BSzMX8zb.js.map} +1 -1
- package/chunk/index-BZ1nv-sB.js +4 -4
- package/chunk/{index-CrGgYYxL.js → index-BbDuLZm0.js} +6 -6
- package/chunk/{index-BoJdZalW.js.map → index-BbDuLZm0.js.map} +1 -1
- package/chunk/index-BbOCWcRK.js +4 -4
- package/chunk/index-Bn00xQJF.js +4 -4
- package/chunk/index-Brpm5gN6.js +4 -4
- package/chunk/{index-Cn27i0i0.js → index-C6CmnxtU.js} +5 -5
- package/chunk/{index-Cn27i0i0.js.map → index-C6CmnxtU.js.map} +1 -1
- package/chunk/index-CARFmnRY.js +4 -4
- package/chunk/{index-BfLyVxHW.js → index-CBoeMu9i.js} +11 -11
- package/chunk/{index-kldzFCt7.js.map → index-CBoeMu9i.js.map} +1 -1
- package/chunk/index-CHDBBfsg.js +4 -4
- package/chunk/index-CR19uOwz.js +4 -4
- package/chunk/index-CTGY1a4m.js +4 -4
- package/chunk/{index-C4dHeTGl.js → index-CYi-EOgq.js} +5 -5
- package/chunk/{index-BWVPL9OQ.js.map → index-CYi-EOgq.js.map} +1 -1
- package/chunk/index-CaBrLsal.js +4 -4
- package/chunk/{index-kldzFCt7.js → index-Ck4Jg3xo.js} +11 -11
- package/chunk/{index-BfLyVxHW.js.map → index-Ck4Jg3xo.js.map} +1 -1
- package/chunk/index-CrPc1exn.js +4 -4
- package/chunk/{index-CaQ-a7L7.js → index-CzRLvvKQ.js} +5 -5
- package/chunk/{index-JJtRAk_6.js.map → index-CzRLvvKQ.js.map} +1 -1
- package/chunk/index-D2d6x5LN.js +4 -4
- package/chunk/index-D2nA_06X.js +4 -4
- package/chunk/index-D2nA_06X.js.map +1 -1
- package/chunk/index-D7Mqx5na.js +4 -4
- package/chunk/{index-B88uZBY0.js → index-DD5n87cJ.js} +5 -5
- package/chunk/{index-D3EKpvm9.js.map → index-DD5n87cJ.js.map} +1 -1
- package/chunk/{index-pw3DJwhY.js → index-DE_o4TXi.js} +5 -5
- package/chunk/{index-BvxBxJg1.js.map → index-DE_o4TXi.js.map} +1 -1
- package/chunk/index-DFoMYB8K.js +4 -4
- package/chunk/index-DIkWpujR.js +4 -4
- package/chunk/{index-D3EKpvm9.js → index-DWjm3Bvf.js} +5 -5
- package/chunk/{index-B88uZBY0.js.map → index-DWjm3Bvf.js.map} +1 -1
- package/chunk/{index-5ENZBJEX.js → index-DbVmFTqT.js} +5 -5
- package/chunk/{index-5ENZBJEX.js.map → index-DbVmFTqT.js.map} +1 -1
- package/chunk/{index-JJtRAk_6.js → index-DdxRfsSh.js} +5 -5
- package/chunk/{index-CaQ-a7L7.js.map → index-DdxRfsSh.js.map} +1 -1
- package/chunk/index-DeW_gAIO.js +4 -4
- package/chunk/{index-B2w8GxVA.js → index-Dekegp07.js} +5 -5
- package/chunk/{index-B2w8GxVA.js.map → index-Dekegp07.js.map} +1 -1
- package/chunk/index-EUJqfdiJ.js +4 -4
- package/chunk/index-MB6FRj7G.js +4 -4
- package/chunk/{index-CnlkYvi8.js → index-W05VUuom.js} +5 -5
- package/chunk/{index-CnlkYvi8.js.map → index-W05VUuom.js.map} +1 -1
- package/chunk/{index-BWVPL9OQ.js → index-Xq2oC7I1.js} +5 -5
- package/chunk/{index-C4dHeTGl.js.map → index-Xq2oC7I1.js.map} +1 -1
- package/chunk/index-dTu4ORna.js +4 -4
- package/chunk/index-dWqQPCim.js +4 -4
- package/chunk/{index-CsFSxihY.js → index-jeII5suL.js} +5 -5
- package/chunk/{index-CsFSxihY.js.map → index-jeII5suL.js.map} +1 -1
- package/chunk/{index-BvxBxJg1.js → index-zyCRCimF.js} +5 -5
- package/chunk/{index-pw3DJwhY.js.map → index-zyCRCimF.js.map} +1 -1
- package/chunk/is-OeoxCvCJ.js +4 -4
- package/chunk/it-C8ZVZXAZ.js +4 -4
- package/chunk/iw-BlNWQ44s.js +4 -4
- package/chunk/ja-ByZsq6B3.js +4 -4
- package/chunk/ko-CJtRHc1k.js +4 -4
- package/chunk/lo-DG5_kBxI.js +4 -4
- package/chunk/lt-CPMjVK0l.js +4 -4
- package/chunk/militaryStepHelpers-BAkdVJwA.js +4 -4
- package/chunk/militaryStepHelpers-BBHrfNCB.js +4 -4
- package/chunk/mocks-CeAm-JFs.js +4 -4
- package/chunk/mocks-ClJ0M6QH.js +4 -4
- package/chunk/ms-kW4-QxcQ.js +4 -4
- package/chunk/nl-BE-B50g9ESZ.js +4 -4
- package/chunk/nl-CqhguuWs.js +4 -4
- package/chunk/no-oDvd5Pbh.js +4 -4
- package/chunk/pl-CmJTwwaK.js +4 -4
- package/chunk/pt-BR-Bn7yzXgL.js +4 -4
- package/chunk/pt-CO5wB188.js +4 -4
- package/chunk/ro-sj1FJM-g.js +4 -4
- package/chunk/ru-8IiNvgy2.js +4 -4
- package/chunk/sk-aGVgcFKm.js +4 -4
- package/chunk/sl-BhNdkTbu.js +4 -4
- package/chunk/sr-BMFHnZm-.js +4 -4
- package/chunk/sv-B_eq88ce.js +4 -4
- package/chunk/sw-DbdFPGF8.js +4 -4
- package/chunk/th-BYY2tGFz.js +4 -4
- package/chunk/tr-d4Yjkvpu.js +4 -4
- package/chunk/uk-Cm64Vc92.js +4 -4
- package/chunk/ur-DFf2LHi5.js +4 -4
- package/chunk/useCollectFieldsEndpoint-Cd6d_u47.js +4 -4
- package/chunk/useCollectFieldsEndpoint-DqTjyVEr.js +4 -4
- package/chunk/useMetrics-D2fG6cgw.js +4 -4
- package/chunk/useMetrics-wq7yrL0b.js +4 -4
- package/chunk/vi-DDgpUcog.js +4 -4
- package/chunk/zh-BoejQGiZ.js +4 -4
- package/chunk/zh-HK-Bwd8sr9B.js +4 -4
- package/chunk/zu-BKlg24xX.js +4 -4
- package/package.json +1 -1
- package/sheerid-install.css +4 -4
- package/sheerid-install.js +65 -94
- package/sheerid-install.js.map +1 -1
- package/sheerid.css +5 -5
- package/sheerid.js +16 -16
- package/FormFieldTypeahead.css +0 -12
- package/chunk/FormFieldTypeahead-D0_jXok8.js.map +0 -1
- package/chunk/FormFieldTypeahead-vwV0QGbl.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormFieldTypeahead-C6eS7yJg.js","sources":["../../../packages/org-search/src/SearchOverlay/context.ts","../../../packages/org-search/src/SearchRanking/context.ts","../../../packages/org-search/src/hooks/useGeoLocation.ts","../../../packages/org-search/src/SearchRanking/SearchRankingProvider.tsx","../../../packages/org-search/src/SearchOverlay/SearchOverlay.tsx","../../../packages/org-search/src/SelectedOrg/SelectedOrg.tsx","../../../packages/org-search/src/utils/distance.ts","../../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../node_modules/@radix-ui/react-menu/dist/index.mjs","../../../node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","../../../node_modules/@heroicons/react/24/outline/esm/BarsArrowDownIcon.js","../../../packages/org-search/src/SortDropdown/SortDropdown.tsx","../../../node_modules/debounce/index.js","../../src/components/OrganizationList/OrganizationListComponent.tsx","../../src/components/FetchOrganizationsComponent.tsx","../../src/components/FormInputs/Typeahead/TypeaheadComponentHelper.ts","../../src/components/FormInputs/Typeahead/TypeaheadClearButton/TypeaheadClearButtonComponent.tsx","../../src/components/FormInputs/Typeahead/TypeaheadComponent.tsx","../../src/lib/organization/organization.ts","../../src/components/FormFields/FormFieldTypeahead/FormFieldTypeahead.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\ntype SearchOverlayContext = {\n showOverlay: boolean;\n setShowOverlay: (open: boolean) => void;\n};\n\nexport const SearchOverlayContext = createContext<SearchOverlayContext>({\n showOverlay: false,\n setShowOverlay: () => undefined,\n});\n\nexport const useSearchOverlay = () => useContext(SearchOverlayContext);\n","import { createContext, useContext } from \"react\";\n\nimport type { GeoLocation } from \"../hooks/useGeoLocation\";\n\nexport type SortMode = \"relevance\" | \"distance\";\n\nexport type SearchRankingContextType = {\n sortMode: SortMode;\n userLocation: GeoLocation | null;\n locationDenied: boolean;\n setSortMode: (mode: SortMode) => void;\n requestLocation: () => Promise<GeoLocation>;\n};\n\nexport const SearchRankingContext = createContext<SearchRankingContextType | null>(null);\n\n/*\n * Will return null if not inside a SearchRanking context\n */\nexport const useSearchRanking = (): SearchRankingContextType | null => {\n const context = useContext(SearchRankingContext);\n return context;\n};\n","import { useState, useCallback } from \"react\";\n\nexport type GeoLocation = {\n latitude: number;\n longitude: number;\n};\n\nexport type GeoLocationError = {\n code: number;\n message: string;\n};\n\nexport type UseGeoLocationResult = {\n location: GeoLocation | null;\n error: GeoLocationError | null;\n loading: boolean;\n requestLocation: () => Promise<GeoLocation>;\n};\n\nexport function useGeoLocation(): UseGeoLocationResult {\n const [location, setLocation] = useState<GeoLocation | null>(null);\n const [error, setError] = useState<GeoLocationError | null>(null);\n const [loading, setLoading] = useState(false);\n\n const requestLocation = useCallback((): Promise<GeoLocation> => {\n setLoading(true);\n setError(null);\n\n return new Promise((resolve, reject) => {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const loc = {\n latitude: position.coords.latitude,\n longitude: position.coords.longitude,\n };\n setLocation(loc);\n setLoading(false);\n resolve(loc);\n },\n (err) => {\n const geoError = { code: err.code, message: err.message };\n setError(geoError);\n setLoading(false);\n reject(geoError);\n },\n );\n });\n }, []);\n\n return {\n location,\n error,\n loading,\n requestLocation,\n };\n}\n","import type React from \"react\";\nimport { useState, useCallback, useMemo } from \"react\";\n\nimport { useGeoLocation, type GeoLocation } from \"../hooks/useGeoLocation\";\n\nimport { SearchRankingContext, type SortMode } from \"./context\";\n\ntype SearchRankingProviderProps = {\n children: React.ReactNode;\n};\n\nexport const SearchRankingProvider: React.FC<SearchRankingProviderProps> = ({ children }) => {\n const [sortMode, setSortMode] = useState<SortMode>(\"relevance\");\n const [userLocation, setUserLocation] = useState<GeoLocation | null>(null);\n const [locationDenied, setLocationDenied] = useState(false);\n const geoLocation = useGeoLocation();\n\n const requestLocation = useCallback(async (): Promise<GeoLocation> => {\n try {\n const location = await geoLocation.requestLocation();\n setUserLocation(location);\n setLocationDenied(false);\n return location;\n } catch {\n setLocationDenied(true);\n throw new Error(\"Location denied\");\n }\n }, [geoLocation]);\n\n const value = useMemo(\n () => ({\n sortMode,\n userLocation,\n locationDenied,\n setSortMode,\n requestLocation,\n }),\n [sortMode, userLocation, locationDenied, requestLocation],\n );\n\n return <SearchRankingContext.Provider value={value}>{children}</SearchRankingContext.Provider>;\n};\n","import type React from \"react\";\nimport { useEffect, useRef, useState, type PropsWithChildren, type ReactNode } from \"react\";\n\nimport { SearchRankingProvider } from \"../SearchRanking\";\n\nimport { SearchOverlayContext } from \"./context\";\n\ninterface Props {\n closeSectionLabel?: ReactNode;\n enabled: boolean;\n}\n\nconst FOCUSABLE_SELECTOR =\n 'button, a[href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nexport const SearchOverlay: React.FC<PropsWithChildren<Props>> = ({\n children,\n enabled,\n closeSectionLabel,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const showOverlay = enabled && isOpen;\n const scrollTo = useRef(0);\n\n /**\n * we're creating a full-screen modal. Thats mostly handled in the CSS. but we\n * don't want it to mess with the the underlying scroll. So we track the\n * existing scroll location, turn off scrolling & move to the top. Then we\n * undo that when we close.\n */\n const setShowOverlay = (state: boolean) => {\n if (!enabled) return;\n const inFrame = window !== window.top;\n\n if (state && isOpen === false) {\n scrollTo.current = window.scrollY;\n document.body.style.overflow = \"hidden\";\n document.body.style.backgroundColor = \"rgba(0,0,0,.1)\";\n window.scrollTo({ top: 0 });\n\n // We're in a frame, hard set the iframe body element to the modal max\n // height or the current document height. Whichever is smaller.\n // When turning off the overlay we unset this.\n if (inFrame) {\n // calc(100vh - 80px) is the modal css max height\n // It would be nice to be able to do this entirely in css\n // but css lengths fall down a bit inside frames.\n const modalMax = window.screen.availHeight - 80;\n const currentHeight = document.body.clientHeight;\n\n document.body.style.height = `${Math.min(currentHeight, modalMax)}px`;\n }\n\n if (containerRef.current) {\n setTimeout(() => {\n containerRef.current.scrollIntoView();\n }, 0);\n }\n }\n\n if (!state) {\n document.body.style.overflow = \"unset\";\n document.body.style.backgroundColor = \"unset\";\n window.scrollTo({ top: scrollTo.current });\n if (inFrame) {\n document.body.style.height = \"unset\";\n }\n }\n\n setIsOpen(state);\n };\n\n // Focus trapping: keep Tab/Shift+Tab within overlay, close on Escape\n useEffect(() => {\n if (!showOverlay) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Tab\") return;\n\n const container = containerRef.current;\n if (!container) return;\n\n const focusableElements = container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey && document.activeElement === firstElement) {\n e.preventDefault();\n lastElement?.focus();\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n e.preventDefault();\n firstElement?.focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown, true);\n return () => document.removeEventListener(\"keydown\", handleKeyDown, true);\n }, [showOverlay]);\n\n if (!enabled) {\n return <>{children}</>;\n }\n\n return (\n <SearchOverlayContext.Provider value={{ showOverlay, setShowOverlay }}>\n <SearchRankingProvider>\n <div className={showOverlay && \"sid-search-overlay__overlay\"}>\n <div className={showOverlay && \"sid-search-overlay__container\"} ref={containerRef}>\n {showOverlay && (\n <button className=\"sid-search-overlay__close\" onClick={() => setShowOverlay(false)}>\n {closeSectionLabel}\n </button>\n )}\n {children}\n </div>\n </div>\n </SearchRankingProvider>\n </SearchOverlayContext.Provider>\n );\n};\n","import type React from \"react\";\nimport { useEffect, useRef } from \"react\";\n\ntype Organization = {\n id: number;\n name: string;\n state?: string;\n city?: string;\n};\n\ninterface Props {\n org: Organization;\n onClear: () => void;\n clearSelectionLabel: string;\n labelId: string;\n}\n\nexport const SelectedOrg: React.FC<Props> = ({ org, onClear, clearSelectionLabel, labelId }) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const location = [org.city, org.state].filter(Boolean).join(\", \");\n const inputValue = [org.name, location].filter(Boolean).join(\", \");\n\n useEffect(() => {\n inputRef.current?.focus();\n }, []);\n\n return (\n <div className=\"sid-selected-org__wrapper\">\n <input\n ref={inputRef}\n className=\"sid-h-screen-reader-only\"\n type=\"text\"\n readOnly\n aria-labelledby={labelId}\n aria-expanded={false}\n value={inputValue}\n />\n <div className=\"sid-selected-org__container\">\n <div className=\"sid-selected-org__name\" aria-hidden=\"true\">\n {org.name}\n {location && <span className=\"sid-selected-org__location\">{location}</span>}\n </div>\n <button\n className=\"sid-selected-org__clear\"\n aria-label={clearSelectionLabel}\n onClick={onClear}\n >\n ✕\n </button>\n </div>\n </div>\n );\n};\n","export type DistanceUnit = \"miles\" | \"kilometers\";\n\nconst EARTH_RADIUS_KM = 6371;\n\n/**\n * Calculate the distance between two points using the Haversine formula\n * @returns Distance in kilometers\n */\nexport function calculateDistance(lat1: number, lon1: number, lat2: number, lon2: number): number {\n const toRadians = (degrees: number) => (degrees * Math.PI) / 180;\n\n const dLat = toRadians(lat2 - lat1);\n const dLon = toRadians(lon2 - lon1);\n\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);\n\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\n return EARTH_RADIUS_KM * c;\n}\n\nconst MILES_LOCALES = [\"en-us\", \"en-gb\"];\n\n/**\n * Determine the appropriate distance unit based on locale\n * US and GB use miles, others use kilometers\n */\nexport function getDistanceUnit(locale: string): DistanceUnit {\n return MILES_LOCALES.includes(locale.toLowerCase()) ? \"miles\" : \"kilometers\";\n}\n\n/**\n * Format a distance value with the appropriate unit suffix\n * Distances < 10 show one decimal, >= 10 show whole number\n *\n * @param distanceKm in km\n * @param unit DistanceUnit\n *\n * If unit is miles, convert internally.\n */\nexport function formatDistance(distanceKm: number, unit: DistanceUnit): string {\n const suffix = unit === \"miles\" ? \"mi\" : \"km\";\n const distance = unit === \"miles\" ? distanceKm * 0.621371 : distanceKm;\n\n // Round to one decimal first to determine display format\n const rounded = Math.round(distance * 10) / 10;\n\n if (rounded >= 10) {\n return `${Math.round(distance)} ${suffix}`;\n }\n\n return `${rounded} ${suffix}`;\n}\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n const direction = useDirection(dir);\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => isUsingKeyboardRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope: __scopeMenu,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children\n }\n )\n }\n ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar MenuPortal = (props) => {\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n }\n);\nvar MenuRootContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const content = ref.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: true,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n});\nvar Slot = createSlot(\"MenuContent.ScrollLock\");\nvar MenuContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeMenu,\n loop = false,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEntryFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n disableOutsideScroll,\n ...contentProps\n } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n const timerRef = React.useRef(0);\n const searchRef = React.useRef(\"\");\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef(null);\n const pointerDirRef = React.useRef(\"right\");\n const lastPointerXRef = React.useRef(0);\n const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n const handleTypeaheadSearch = (key) => {\n const search = searchRef.current + key;\n const items = getItems().filter((item) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n const values = items.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n useFocusGuards();\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope: __scopeMenu,\n searchRef,\n onItemEnter: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n onItemLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n },\n [isPointerMovingToSubmenu]\n ),\n onTriggerLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n pointerGraceTimerRef,\n onPointerGraceIntentChange: React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, []),\n children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.preventDefault();\n contentRef.current?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n dir: rootContext.dir,\n orientation: \"vertical\",\n loop,\n currentTabStopId: currentItemId,\n onCurrentTabStopIdChange: setCurrentItemId,\n onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n }),\n preventScrollOnEntryFocus: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-radix-menu-content\": \"\",\n dir: rootContext.dir,\n ...popperScope,\n ...contentProps,\n ref: composedRefs,\n style: { outline: \"none\", ...contentProps.style },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item) => !item.disabled);\n const candidateNodes = items.map((item) => item.ref.current);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }),\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n })\n )\n }\n )\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...groupProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...labelProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = React.useRef(false);\n const handleSelect = () => {\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n ref: composedRefs,\n disabled,\n onClick: composeEventHandlers(props.onClick, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (disabled || isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n }\n );\n }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [isFocused, setIsFocused] = React.useState(false);\n const [textContent, setTextContent] = React.useState(\"\");\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeMenu,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"menuitem\",\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...itemProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus({ preventScroll: true });\n }\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => contentContext.onItemLeave(event))\n ),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n ) })\n }\n );\n }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n (props, forwardedRef) => {\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n RADIO_GROUP_NAME,\n { value: void 0, onValueChange: () => {\n } }\n);\nvar MenuRadioGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemradio\",\n \"aria-checked\": checked,\n ...radioItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n ITEM_INDICATOR_NAME,\n { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n )\n }\n );\n }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\",\n ...separatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const handleOpenChange = useCallbackRef(onOpenChange);\n React.useEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n return () => handleOpenChange(false);\n }, [parentMenuContext.open, handleOpenChange]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope: __scopeMenu,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = { __scopeMenu: props.__scopeMenu };\n const clearOpenTimer = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n React.useEffect(() => {\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return () => {\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n id: subContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": subContext.contentId,\n \"data-state\": getOpenState(context.open),\n ...props,\n ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n onClick: (event) => {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom }\n ],\n side\n });\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n ),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n align: \"start\",\n side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n },\n onCloseAutoFocus: (event) => event.preventDefault(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n rootContext.onClose();\n event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(event.target);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n })\n }\n ) }) }) });\n }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find(\n (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n CheckboxItem,\n Content2 as Content,\n Group,\n Item2 as Item,\n ItemIndicator,\n Label,\n Menu,\n MenuAnchor,\n MenuArrow,\n MenuCheckboxItem,\n MenuContent,\n MenuGroup,\n MenuItem,\n MenuItemIndicator,\n MenuLabel,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuSub,\n MenuSubContent,\n MenuSubTrigger,\n Portal,\n RadioGroup,\n RadioItem,\n Root3 as Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dropdown-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n DROPDOWN_MENU_NAME,\n [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props) => {\n const {\n __scopeDropdownMenu,\n children,\n dir,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DROPDOWN_MENU_NAME\n });\n return /* @__PURE__ */ jsx(\n DropdownMenuProvider,\n {\n scope: __scopeDropdownMenu,\n triggerId: useId(),\n triggerRef,\n contentId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n }\n );\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n id: context.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n ...triggerProps,\n ref: composeRefs(forwardedRef, context.triggerRef),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n if (!context.open) event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled) return;\n if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n if (event.key === \"ArrowDown\") context.onOpenChange(true);\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n })\n }\n ) });\n }\n);\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props) => {\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.Content,\n {\n id: context.contentId,\n \"aria-labelledby\": context.triggerId,\n ...menuScope,\n ...contentProps,\n ref: forwardedRef,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n event.preventDefault();\n }),\n onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n }),\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n }\n);\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n }\n);\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n }\n);\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n }\n);\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n }\n);\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props) => {\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: \"DropdownMenuSub\"\n });\n return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.SubContent,\n {\n ...menuScope,\n ...subContentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\nexport {\n Arrow2 as Arrow,\n CheckboxItem2 as CheckboxItem,\n Content2 as Content,\n DropdownMenu,\n DropdownMenuArrow,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuItemIndicator,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Group2 as Group,\n Item2 as Item,\n ItemIndicator2 as ItemIndicator,\n Label2 as Label,\n Portal2 as Portal,\n RadioGroup2 as RadioGroup,\n RadioItem2 as RadioItem,\n Root2 as Root,\n Separator2 as Separator,\n Sub2 as Sub,\n SubContent2 as SubContent,\n SubTrigger2 as SubTrigger,\n Trigger,\n createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nfunction BarsArrowDownIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0-3.75-3.75M17.25 21 21 17.25\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(BarsArrowDownIcon);\nexport default ForwardRef;","import type React from \"react\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { BarsArrowDownIcon } from \"@heroicons/react/24/outline\";\n\nimport { useSearchRanking } from \"../SearchRanking/context\";\n\nexport type SortDropdownProps = {\n sortByRelevanceLabel: string;\n sortByDistanceLabel: string;\n accessibilityLabel: string;\n // metrics events\n on?: (event: \"openSortMenu\" | \"sortDistance\" | \"sortRelevance\") => void;\n};\n\nexport const SortDropdown: React.FC<SortDropdownProps> = ({\n sortByRelevanceLabel,\n sortByDistanceLabel,\n accessibilityLabel,\n on = () => {}, // default no-op\n}) => {\n const searchRanking = useSearchRanking();\n if (!searchRanking) {\n throw new Error(\"SortDropdown must be used within a SearchRankingProvider\");\n }\n const { sortMode, setSortMode, requestLocation, locationDenied } = searchRanking;\n\n const handleRelevanceClick = () => {\n setSortMode(\"relevance\");\n on(\"sortRelevance\");\n };\n\n const handleDistanceClick = async () => {\n if (locationDenied) return;\n\n try {\n await requestLocation();\n setSortMode(\"distance\");\n on(\"sortDistance\");\n } catch {\n // Location denied - state is updated by requestLocation\n }\n };\n\n return (\n <DropdownMenu.Root onOpenChange={(isOpen) => isOpen && on(\"openSortMenu\")}>\n <DropdownMenu.Trigger asChild>\n <button\n type=\"button\"\n className=\"sid-sort-dropdown__trigger\"\n aria-label={accessibilityLabel}\n >\n <BarsArrowDownIcon className=\"sid-sort-dropdown__icon\" />\n </button>\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Content\n className=\"sid-sort-dropdown__content\"\n sideOffset={0}\n collisionPadding={10}\n align=\"end\"\n >\n <DropdownMenu.Item\n className=\"sid-sort-dropdown__item\"\n onSelect={handleRelevanceClick}\n data-active={sortMode === \"relevance\" ? \"\" : undefined}\n >\n {sortByRelevanceLabel}\n </DropdownMenu.Item>\n\n <DropdownMenu.Item\n className=\"sid-sort-dropdown__item\"\n onSelect={handleDistanceClick}\n disabled={locationDenied}\n data-active={sortMode === \"distance\" ? \"\" : undefined}\n >\n {sortByDistanceLabel}\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n );\n};\n","/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","import type React from \"react\";\nimport { Children, useEffect, useMemo } from \"react\";\n\nimport {\n useSearchRanking,\n calculateDistance,\n getDistanceUnit,\n formatDistance,\n} from \"@jslib/OrgSearch\";\n\nimport { getLocaleSafely } from \"@/lib/intl/intl\";\n\nimport { type Organization } from \"../../lib/types/types\";\nimport { useFlag } from \"../FeatureFlags/hooks\";\n\ninterface OrganizationListProps {\n getItemProps: any;\n highlightedIndex: number;\n itemToString: any;\n organizations: Organization[];\n children: React.ReactNode;\n maxItemsToDisplay?: number; // eslint-disable-line\n // Next line is deprecated. Menu is always mounted now, up in TypeaheadComponent.\n getMenuProps?: any; // eslint-disable-line\n}\n\nconst ROW_HEIGHT = 42;\nconst MAX_ITEMS = 26;\n\nconst OrganizationList = ({\n getItemProps,\n highlightedIndex,\n organizations,\n itemToString,\n children,\n maxItemsToDisplay = MAX_ITEMS,\n}: OrganizationListProps) => {\n const childrenCount = Children.count(children);\n const fullHeight = (organizations.length + childrenCount) * ROW_HEIGHT;\n const itemRefs = {};\n const overlayEnabled = useFlag(\"org-search-overlay\") === \"overlay\";\n const searchRanking = useSearchRanking();\n const locale = getLocaleSafely();\n\n // Get user's locale for distance unit preference\n const distanceUnit = useMemo(() => getDistanceUnit(locale), [locale]);\n\n const getDistanceDisplay = (organization: Organization): string | null => {\n if (!searchRanking?.userLocation) return null;\n if (organization.latitude == null || organization.longitude == null) return null;\n\n const distanceKm = calculateDistance(\n searchRanking.userLocation.latitude,\n searchRanking.userLocation.longitude,\n organization.latitude,\n organization.longitude,\n );\n\n return formatDistance(distanceKm, distanceUnit);\n };\n\n useEffect(() => {\n const elem = document\n .getElementsByClassName(\"sid-organization-list__item--highlighted\")\n .item(0);\n if (elem) {\n // elem.scrollIntoViewIfNeeded is nonstandard but has a better\n // experience, particularly on mobile browsers. So try it first.\n if (\"scrollIntoViewIfNeeded\" in elem && typeof elem.scrollIntoViewIfNeeded === \"function\") {\n elem.scrollIntoViewIfNeeded(true);\n } else {\n elem.scrollIntoView({ behavior: \"instant\", block: \"center\" });\n }\n }\n }, [highlightedIndex]);\n\n const item = (organization: Organization, index: number) => {\n const location = [organization.city, organization.state].filter(Boolean).join(\", \");\n const distanceDisplay = getDistanceDisplay(organization);\n\n return (\n <div\n className={`sid-organization-list__item ${\n highlightedIndex === index ? \"sid-organization-list__item--highlighted\" : \"\"\n }`}\n key={index}\n role=\"option\"\n aria-selected={highlightedIndex === index}\n {...getItemProps({\n index,\n item: organization,\n })}\n ref={itemRefs[highlightedIndex]}\n >\n <span className=\"sid-organization-list__name\">{itemToString(organization)}</span>\n {overlayEnabled && location && (\n <span className=\"sid-organization-list__location\">{location}</span>\n )}\n {distanceDisplay && (\n <span className=\"sid-organization-list__distance\" data-testid=\"org-distance\">\n {distanceDisplay}\n </span>\n )}\n </div>\n );\n };\n\n return (\n <div\n id=\"sid-org-list-menu\"\n className=\"sid-organization-list__menu\"\n tabIndex={-1}\n role=\"listbox\"\n >\n <div style={{ height: Math.min(fullHeight, 280) }}>\n {organizations\n .filter((_, index) => index <= maxItemsToDisplay - 1)\n .map((organization, index) => item(organization, index))}\n {children}\n </div>\n </div>\n );\n};\n\nexport const OrganizationListComponent = OrganizationList;\n","import React, { useState, useEffect, useRef, useCallback } from \"react\";\nimport { FormattedHTMLMessage } from \"react-intl\";\nimport { debounce } from \"debounce\";\n\nimport { logger } from \"@jslib/shared/utils/logger\";\nimport { useSearchRanking } from \"@jslib/OrgSearch\";\n\nimport { fetchOrganization } from \"../lib/ServerApi/OrganizationApiClient\";\nimport { type OrganizationSearchResp, type DatabaseId, type Locale } from \"../lib/types/types\";\nimport { DEBOUNCE_TIMEOUT, DEFAULT_LOCALE } from \"../constants\";\nimport { EventName, type OrgsDisplayedEvent, recordGaEvent } from \"../lib/GoogleAnalytics/ga\";\nimport { getQueryParam } from \"../lib/utils/routing/Url\";\n\nimport { LinkExternal } from \"./LinkExternal\";\nimport { LoadingSpinnerComponent } from \"./LoadingSpinner/LoadingSpinnerComponent\";\nimport { OrganizationListComponent } from \"./OrganizationList/OrganizationListComponent\";\nimport { MetricIds, useMetrics } from \"./FeatureFlags/useMetrics\";\n\ninterface FetchOrganizationsProps {\n getItemProps: any;\n highlightedIndex: any;\n itemToString: any;\n minimumSearchValueLength: number;\n onLoaded: any;\n programId: DatabaseId;\n orgSearchUrl?: string;\n locale?: Locale;\n urlAddSchoolForm?: string;\n openOrgSearchEnabled?: boolean;\n onClickAddSchool?: () => void;\n onTipsShown?: () => void;\n // optional search params that are set before the query is sent\n searchUrlParams?: Record<string, string>;\n /** @deprecated */\n // eslint-disable-next-line react/no-unused-prop-types\n countryCode?: string;\n /** @deprecated orgSearchTags has no affect, pass a full orgSearchUrl, instead */\n // eslint-disable-next-line react/no-unused-prop-types\n orgSearchTags?: string;\n /** @deprecated pass a complete orgSearchUrl instead, using the `name` parameter with a value of what you would have given `searchValue` */\n searchValue?: string;\n /** @deprecated. Menu is always mounted now, up in TypeaheadComponent. */\n getMenuProps?: any;\n}\n\ntype AddSchoolRequestRowProps = {\n programId: DatabaseId;\n locale: Locale;\n urlAddSchoolForm: string;\n onClick?: () => void;\n onTipsShown?: () => void;\n};\n\nconst LightbulbIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth={1.5}\n stroke=\"currentColor\"\n className={className}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\"\n />\n </svg>\n);\n\nconst AddSchoolRequestRow: React.FC<AddSchoolRequestRowProps> = ({\n urlAddSchoolForm,\n programId,\n locale = DEFAULT_LOCALE,\n onClick = () => undefined,\n onTipsShown,\n}: AddSchoolRequestRowProps) => {\n const [shouldShowTips, setShouldShowTips] = React.useState(false);\n const { trackEvent } = useMetrics({ programId });\n\n const handleOnClick = () => {\n recordGaEvent({\n eventName: EventName.ASR_TIPS_SHOWN,\n params: { programId, locale },\n });\n trackEvent(MetricIds.AsrTipsShown);\n // Notify parent that tips are now shown\n onTipsShown?.();\n\n setShouldShowTips(true);\n };\n\n if (shouldShowTips) {\n return (\n <div className=\"sid-organization-list__add-school-tips\">\n <div className=\"sid-organization-list__tips\">\n <div>\n <LightbulbIcon className=\"sid-organization-list__tips-icon\" />\n </div>\n\n <div className=\"sid-organization-list__tips-text\">\n <FormattedHTMLMessage\n id=\"multipleLocationsTips\"\n defaultMessage=\"If your academic institution has multiple locations and you didn't see yours, enter the main location.\"\n />\n <FormattedHTMLMessage\n id=\"tryFullNameTips\"\n defaultMessage=\"Try typing the full name of the academic institution rather than using acronyms or abbreviations.\"\n />\n </div>\n </div>\n\n <LinkExternal\n onClick={onClick}\n className=\"sid-organization-list__item sid-organization-list__request-school sid-link\"\n href={`${urlAddSchoolForm}?pid=${programId}&locale=${locale}`}\n >\n <FormattedHTMLMessage\n id=\"requestSchool\"\n defaultMessage=\"Don't see your school? Request to have it added\"\n />\n </LinkExternal>\n </div>\n );\n }\n\n return (\n <LinkExternal\n onClick={handleOnClick}\n className=\"sid-organization-list__item sid-organization-list__request-school sid-link\"\n >\n <FormattedHTMLMessage\n id=\"cantFindYourSchool\"\n defaultMessage=\"Can't find your school? Click to show tips\"\n />\n </LinkExternal>\n );\n};\n\nconst getSearchValue = (orgSearchUrl: string): string => getQueryParam(\"name\", orgSearchUrl) || \"\";\n\nexport const getAttribution = (organizations: OrganizationSearchResp): React.ReactNode => {\n if (!organizations) {\n return null;\n }\n\n // When organization results are provided by Google Place, Google requires their logo be presented as attribution.\n // org.source denotes where the organization data is coming from, in case of Google Place, it is \"PLACE\".\n const requiresGooglePlaceAttribution = organizations.find((org) => org.source === \"PLACE\");\n if (requiresGooglePlaceAttribution) {\n return (\n <img\n className=\"sid-organization-list__attribution-logo\"\n src=\"https://developers.google.com/static/maps/documentation/images/google_on_white.png\"\n alt=\"Google\"\n />\n );\n }\n return null;\n};\n\n/**\n * Support deprecated prop \"searchValue\"\n * @TODO remove searchValue prop and this function in v2\n * @param orgSearchUrl\n */\nexport const updateSearchUrl = (\n orgSearchUrl: string,\n searchValue: string,\n newParams?: Record<string, string>,\n): string => {\n if (!searchValue && !newParams) {\n return orgSearchUrl;\n }\n if (!orgSearchUrl) {\n logger.error(\"Expected orgSearchUrl\");\n return orgSearchUrl;\n }\n\n try {\n const url = new URL(orgSearchUrl);\n const { origin, pathname, search } = url;\n const params = new URLSearchParams(search);\n if (searchValue) {\n params.set(\"name\", searchValue);\n }\n if (newParams) {\n Object.entries(newParams).forEach(([k, v]) => {\n params.set(k, v);\n });\n }\n params.sort();\n return `${origin}${pathname}?${params.toString()}`;\n } catch (e) {\n logger.error(e);\n }\n};\n\nconst FetchOrganizations: React.FC<FetchOrganizationsProps> = ({\n getItemProps,\n getMenuProps,\n highlightedIndex,\n itemToString,\n minimumSearchValueLength,\n onLoaded,\n programId,\n orgSearchUrl,\n locale,\n urlAddSchoolForm,\n openOrgSearchEnabled,\n onClickAddSchool,\n onTipsShown,\n searchUrlParams,\n searchValue,\n}) => {\n const [loading, setLoading] = useState(false);\n const [organizations, setOrganizations] = useState<OrganizationSearchResp>(null);\n const [isErrored, setIsErrored] = useState<string>(null);\n const mountedRef = useRef(false);\n const prevSearchTermRef = useRef<string>(null);\n\n const searchRanking = useSearchRanking();\n\n // Store props in refs so debounced fetch always uses latest values (like this.props in class)\n const propsRef = useRef({ orgSearchUrl, searchValue, searchUrlParams, onLoaded });\n propsRef.current = { orgSearchUrl, searchValue, searchUrlParams, onLoaded };\n\n // Store search ranking in ref for debounced fetch\n const searchRankingRef = useRef(searchRanking);\n searchRankingRef.current = searchRanking;\n\n const searchTerm = searchValue || getSearchValue(orgSearchUrl) || \"\";\n\n // Stable fetch function that reads from refs (like this.fetch in class component)\n const doFetch = useCallback(async () => {\n if (!mountedRef.current) {\n return;\n }\n\n const {\n orgSearchUrl: url,\n searchValue: sv,\n searchUrlParams: params,\n onLoaded: loaded,\n } = propsRef.current;\n\n // Build params including location if distance sorting is enabled\n let fetchParams = params;\n const ranking = searchRankingRef.current;\n if (ranking && ranking.sortMode === \"distance\" && ranking.userLocation) {\n fetchParams = {\n ...params,\n lat: String(ranking.userLocation.latitude),\n long: String(ranking.userLocation.longitude),\n };\n }\n\n const start = Date.now();\n const fetchedOrganizations: OrganizationSearchResp = await fetchOrganization(\n updateSearchUrl(url, sv, fetchParams),\n );\n\n if (!mountedRef.current) {\n return;\n }\n\n if (fetchedOrganizations) {\n loaded(fetchedOrganizations);\n setOrganizations(fetchedOrganizations);\n setLoading(false);\n }\n\n try {\n const currentSearchTerm = sv || getSearchValue(url) || \"\";\n const event: OrgsDisplayedEvent = {\n eventName: EventName.ORGS_DISPLAYED,\n params: {\n queryLength: currentSearchTerm.length,\n eventDuration: Date.now() - start,\n numberOfResults: fetchedOrganizations?.length,\n },\n };\n recordGaEvent(event);\n } catch (e) {\n logger.error(e);\n }\n }, []); // No dependencies - reads from refs\n\n // Create a stable debounced function once\n const debouncedFetchRef = useRef<ReturnType<typeof debounce>>(null);\n if (!debouncedFetchRef.current) {\n debouncedFetchRef.current = debounce(doFetch, DEBOUNCE_TIMEOUT);\n }\n\n // Handle mount/unmount\n useEffect(() => {\n mountedRef.current = true;\n\n return () => {\n mountedRef.current = false;\n if (debouncedFetchRef.current) {\n debouncedFetchRef.current.clear();\n }\n };\n }, []);\n\n // Handle search term changes (replaces componentDidMount and componentDidUpdate logic)\n useEffect(() => {\n const prevSearchTerm = prevSearchTermRef.current;\n\n // On mount or when search term changes\n if (prevSearchTerm !== searchTerm) {\n if (searchTerm.length >= minimumSearchValueLength) {\n // Reset state and trigger fetch\n setIsErrored(null);\n setLoading(true);\n setOrganizations(null);\n if (debouncedFetchRef.current) {\n debouncedFetchRef.current();\n }\n } else {\n // Reset state without fetching\n setIsErrored(null);\n setLoading(false);\n setOrganizations(null);\n if (prevSearchTerm !== null) {\n // Only log on updates, not initial mount with short search term\n logger.info(\n `No organizations fetched. Search searchTterm \"${searchTerm}\" is less than ${minimumSearchValueLength} characters.`,\n );\n } else if (searchTerm.length > 0) {\n // Log on initial mount if there's a search term that's too short\n logger.info(\n `No organizations fetched. Search searchTerm \"${searchTerm}\" is less than ${minimumSearchValueLength} characters.`,\n );\n }\n }\n }\n\n prevSearchTermRef.current = searchTerm;\n }, [searchTerm, minimumSearchValueLength]);\n\n // Re-fetch when sort mode or user location changes (but not on initial render)\n const sortMode = searchRanking?.sortMode;\n const userLatitude = searchRanking?.userLocation?.latitude;\n const userLongitude = searchRanking?.userLocation?.longitude;\n\n useEffect(() => {\n if (searchTerm.length >= minimumSearchValueLength) {\n setIsErrored(null);\n setLoading(true);\n setOrganizations(null);\n debouncedFetchRef.current?.();\n }\n }, [sortMode, userLatitude, userLongitude, searchTerm, minimumSearchValueLength]);\n\n const orgSearchAttribution = getAttribution(organizations);\n\n if (loading) {\n return (\n <div className=\"sid-organization-list__menu\">\n <div className=\"sid-organization-list__message sid-organization-list__spinner-container\">\n <div id=\"sid-spinner-container\">\n <LoadingSpinnerComponent />\n </div>\n </div>\n </div>\n );\n }\n if (isErrored) {\n return (\n <div className=\"sid-organization-list__menu\">\n <div className=\"sid-organization-list__message\">\n {/* TODO: Define correct message ID from backend (backend need to send this message?) */}\n <FormattedHTMLMessage\n id=\"errorId.unknownError\"\n defaultMessage=\"An unknown error occurred\"\n />\n </div>\n </div>\n );\n }\n\n if (organizations && organizations.length > 0) {\n return (\n <>\n {orgSearchAttribution && (\n <div className=\"sid-organization-list__attribution\">{orgSearchAttribution}</div>\n )}\n\n <OrganizationListComponent\n getItemProps={getItemProps}\n getMenuProps={getMenuProps}\n highlightedIndex={highlightedIndex}\n itemToString={itemToString}\n organizations={organizations}\n >\n {searchTerm &&\n !openOrgSearchEnabled &&\n urlAddSchoolForm &&\n (!organizations || organizations.length < 26) && (\n <AddSchoolRequestRow\n onClick={onClickAddSchool}\n onTipsShown={onTipsShown}\n urlAddSchoolForm={urlAddSchoolForm}\n programId={programId}\n locale={locale}\n />\n )}\n </OrganizationListComponent>\n </>\n );\n }\n\n if (\n searchTerm &&\n !openOrgSearchEnabled &&\n urlAddSchoolForm &&\n (!organizations || organizations.length === 0)\n ) {\n return (\n <div className=\"sid-organization-list__menu\">\n <AddSchoolRequestRow\n onClick={onClickAddSchool}\n onTipsShown={onTipsShown}\n urlAddSchoolForm={urlAddSchoolForm}\n programId={programId}\n locale={locale}\n />\n </div>\n );\n }\n\n return null;\n};\n\nexport const FetchOrganizationsComponent = FetchOrganizations;\n","import { useCombobox, type UseComboboxStateChange } from \"downshift\";\n\nimport { type Organization } from \"../../../lib/types/types\";\n\nexport const handleStateChange = (\n changes: UseComboboxStateChange<Organization>,\n onChange: Function,\n opts: {\n openOrgSearchEnabled: boolean;\n _searchOverlayEnabled?: boolean;\n },\n) => {\n if (changes.type === useCombobox.stateChangeTypes.FunctionSelectItem) {\n const { selectedItem } = changes;\n onChange(selectedItem);\n } else if (changes.type === useCombobox.stateChangeTypes.InputBlur) {\n if (!opts.openOrgSearchEnabled && !opts._searchOverlayEnabled) {\n onChange({\n id: undefined,\n name: \"\",\n });\n }\n }\n};\n","import type React from \"react\";\n\ninterface TypeaheadClearButtonProps {\n id: string;\n onMouseDown: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>) => void;\n handleOnBlur: (event: React.FocusEvent<HTMLButtonElement>) => void;\n disabled?: boolean;\n}\n\nconst TypeaheadClearButton = ({\n id,\n onMouseDown,\n disabled,\n onKeyDown,\n handleOnBlur,\n}: TypeaheadClearButtonProps) => (\n <button\n id={id}\n type=\"button\"\n onMouseDown={onMouseDown}\n onKeyDown={onKeyDown}\n onBlur={handleOnBlur}\n className={`sid-input-clear-button ${disabled ? \"sid-input-clear-button--disabled\" : \"\"}`}\n aria-label=\"clear text\"\n aria-disabled={disabled}\n tabIndex={0}\n >\n <svg\n viewBox=\"0 0 24 24\"\n preserveAspectRatio=\"none\"\n width={28}\n fill=\"none\"\n stroke={disabled ? \"#B6B6B6\" : \"#5A5A5A\"}\n strokeWidth=\"1.1\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n);\n\nexport const TypeaheadClearButtonComponent = TypeaheadClearButton;\n","import type React from \"react\";\nimport { useRef, useEffect, useState } from \"react\";\nimport { useCombobox } from \"downshift\";\nimport { type InjectedIntlProps, injectIntl } from \"react-intl\";\n\nimport { useSearchOverlay, SortDropdown } from \"@jslib/OrgSearch\";\nimport { logger } from \"@jslib/shared/utils/logger\";\n\nimport { MetricIds, useMetrics } from \"@/components/FeatureFlags/useMetrics\";\nimport { useFlag } from \"@/components/FeatureFlags/hooks\";\n\nimport { FetchOrganizationsComponent } from \"../../FetchOrganizationsComponent\";\nimport {\n type Organization,\n type DatabaseId,\n type Country,\n type Locale,\n} from \"../../../lib/types/types\";\nimport { setRef } from \"../../../lib/refs/refs\";\nimport { assertValidFunction } from \"../../../lib/types/assertions\";\nimport {\n type AsrEvent,\n CustomMetricNames,\n EventName,\n type OrgSelectedEvent,\n recordGaEvent,\n} from \"../../../lib/GoogleAnalytics/ga\";\n\nimport { handleStateChange } from \"./TypeaheadComponentHelper\";\nimport { TypeaheadClearButtonComponent } from \"./TypeaheadClearButton/TypeaheadClearButtonComponent\";\n\nexport interface TypeaheadProps {\n onChange: (org: Organization) => void;\n programId: DatabaseId;\n inputHtmlId: string;\n autoFocus?: boolean;\n className?: string;\n countryCode?: Country;\n disabled?: boolean;\n minimumSearchValueLength?: number;\n placeholder?: string;\n value?: Organization;\n openOrgSearchEnabled?: boolean;\n orgSearchUrl: string;\n isRequired?: boolean;\n locale?: Locale;\n urlAddSchoolForm?: string;\n isErrored?: boolean;\n ariaDescribedBy?: string;\n onBlur?: () => void;\n}\n\ntype Props = TypeaheadProps & InjectedIntlProps;\n\nconst Typeahead = ({\n onChange,\n programId,\n className,\n countryCode,\n disabled,\n minimumSearchValueLength,\n placeholder,\n value,\n inputHtmlId,\n openOrgSearchEnabled,\n orgSearchUrl,\n isRequired,\n locale,\n urlAddSchoolForm,\n isErrored,\n ariaDescribedBy,\n autoFocus = false,\n onBlur = () => {},\n intl,\n}: Props) => {\n const [inputValue, setInputValue] = useState(value ? value.name : \"\");\n const [loadedOrgs, setLoadedOrgs] = useState([]);\n\n const numReworksRef = useRef(0);\n const startTimeRef = useRef(0);\n const tipsShownRef = useRef(false);\n const searchAfterTipsTrackedRef = useRef(false);\n\n const [showClearButton, setShowClearButton] = useState(false);\n const [disabledClearButton, setDisabledClearButton] = useState(false);\n const { recordNumericMetric, trackEvent } = useMetrics({ programId });\n const overlayEnabled = useFlag(\"org-search-overlay\") === \"overlay\";\n const { showOverlay, setShowOverlay } = useSearchOverlay();\n\n assertValidFunction(onChange);\n\n const itemToString = (item: Organization) => (item ? item.name : \"\");\n\n const { isOpen, highlightedIndex, getMenuProps, getItemProps, getInputProps } = useCombobox({\n itemToString,\n id: inputHtmlId,\n items: loadedOrgs,\n inputValue,\n onStateChange: (changes) =>\n handleStateChange(changes, onChange, {\n openOrgSearchEnabled,\n _searchOverlayEnabled: showOverlay,\n }),\n selectedItem: value,\n onSelectedItemChange: ({ selectedItem }) => {\n if (!selectedItem) {\n setInputValue(\"\");\n setShowOverlay(false);\n onChange({\n id: 0,\n name: \"\",\n });\n return;\n }\n\n setInputValue(itemToString(selectedItem));\n\n const selectedRank = loadedOrgs.findIndex((o) => o.id === selectedItem.id) + 1;\n const timeUntilSelection = Date.now() - startTimeRef.current;\n try {\n const event: OrgSelectedEvent = {\n eventName: EventName.ORG_SELECTED,\n params: {\n [CustomMetricNames.QUERY_LENGTH]: inputValue.length,\n [CustomMetricNames.NUMBER_REWORKS]: numReworksRef.current,\n [CustomMetricNames.SELECTED_RESULT_RANK]: selectedRank,\n [CustomMetricNames.EVENT_DURATION]: timeUntilSelection,\n [CustomMetricNames.NUMBER_OF_RESULTS]: loadedOrgs.length,\n },\n };\n recordGaEvent(event);\n } catch (e) {\n logger.error(e);\n }\n\n try {\n recordNumericMetric(MetricIds.OrgSearchNumReworks, numReworksRef.current);\n recordNumericMetric(MetricIds.OrgSearchQueryLength, inputValue.length);\n recordNumericMetric(MetricIds.OrgSearchResultRank, selectedRank);\n recordNumericMetric(MetricIds.OrgSearchTimeUntilSelection, timeUntilSelection);\n } catch (e) {\n logger.error(e);\n }\n\n startTimeRef.current = 0;\n numReworksRef.current = 0;\n setShowOverlay(false);\n onChange(selectedItem);\n },\n });\n\n const onClickAddSchool = () => {\n try {\n const event: AsrEvent = {\n eventName: EventName.ASR_SELECTED,\n params: {\n [CustomMetricNames.QUERY_LENGTH]: inputValue.length,\n [CustomMetricNames.NUMBER_REWORKS]: numReworksRef.current,\n [CustomMetricNames.EVENT_DURATION]: Date.now() - startTimeRef.current,\n [CustomMetricNames.NUMBER_OF_RESULTS]: loadedOrgs.length,\n },\n };\n recordGaEvent(event);\n trackEvent(MetricIds.AsrClickThrough);\n } catch (e) {\n logger.error(e);\n }\n };\n\n const onTipsShown = () => {\n tipsShownRef.current = true;\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newInputValue = event.target.value;\n\n if (newInputValue) {\n setDisabledClearButton(false);\n } else {\n setDisabledClearButton(true);\n }\n\n try {\n if (startTimeRef.current === 0) {\n startTimeRef.current = Date.now();\n }\n if (newInputValue.length < inputValue.length) {\n numReworksRef.current += 1;\n }\n\n // Track when user searches again after seeing tips (only once)\n if (tipsShownRef.current && !searchAfterTipsTrackedRef.current && newInputValue) {\n searchAfterTipsTrackedRef.current = true;\n recordGaEvent({\n eventName: EventName.ASR_SEARCH_AFTER_TIPS,\n params: { programId },\n });\n trackEvent(MetricIds.AsrSearchAfterTips);\n }\n } catch (e) {\n logger.error(e);\n }\n\n setInputValue(newInputValue);\n onChange({\n id: 0,\n name: newInputValue,\n });\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n // NOTE: Dependency array omitted to account for use of resetRef(), as useEffect with dep arr\n // will only trigger on initial render leaving the refs empty, this replicates prior version\n // where ref callback would trigger with each re-render\n useEffect(() => {\n setRef(\"organization\", inputRef.current);\n });\n\n const handleOnFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setShowClearButton(true);\n if (!event.currentTarget.value) {\n setDisabledClearButton(true);\n } else {\n setDisabledClearButton(false);\n setShowOverlay(true);\n }\n };\n\n const handleOnBlur = (event: React.FocusEvent) => {\n if (event.relatedTarget?.id !== `${inputHtmlId}-clear-button`) {\n setShowClearButton(false);\n onBlur();\n }\n };\n\n const handleOnInteraction = (\n event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (event.type === \"mousedown\" || (\"key\" in event && event.key === \"Enter\")) {\n setInputValue(\"\");\n onChange({\n id: undefined,\n name: \"\",\n });\n inputRef.current.focus();\n }\n };\n\n return (\n <div className=\"sid-organization-list\">\n <div className=\"sid-text-input__wrapper\">\n <input\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...getInputProps({\n ref: inputRef,\n onChange: handleInputChange,\n onFocus: (event) => handleOnFocus(event),\n onBlur: (event) => handleOnBlur(event),\n onKeyDown: (event) => {\n // we want to start the overlay if someone starts\n // typing, not if they are tabbing past or pressing Escape.\n if (event.key !== \"Tab\" && event.key !== \"Escape\") {\n setShowOverlay(true);\n }\n },\n })}\n className={`sid-l-full-width sid-hidden-placeholder sid-text-input ${className}`}\n disabled={disabled}\n id={inputHtmlId}\n // Autofocus is situational here, it's only added when org is cleared.\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autoFocus}\n placeholder={placeholder}\n aria-required={isRequired}\n aria-controls=\"sid-org-list-menu\"\n aria-describedby={ariaDescribedBy}\n aria-invalid={isErrored}\n // Maintain same labelledby value as previous versions even though label has \"for\" attribute\n aria-labelledby={`${inputHtmlId}-label`}\n />\n {showOverlay && (\n <SortDropdown\n sortByRelevanceLabel={intl.formatMessage({\n id: \"orgSearchSortByRelevance\",\n defaultMessage: \"Sort by Relevance\",\n })}\n sortByDistanceLabel={intl.formatMessage({\n id: \"orgSearchSortByDistance\",\n defaultMessage: \"Sort by Distance\",\n })}\n accessibilityLabel={intl.formatMessage({\n id: \"orgSearchSortAccessibilityLabel\",\n defaultMessage: \"Sort search results\",\n })}\n on={(event) => {\n switch (event) {\n case \"openSortMenu\":\n trackEvent(MetricIds.OrgSearchOpenSortMenu);\n break;\n\n case \"sortDistance\":\n trackEvent(MetricIds.OrgSearchSortDistance);\n break;\n\n case \"sortRelevance\":\n trackEvent(MetricIds.OrgSearchSortRelevance);\n break;\n default:\n break;\n }\n }}\n />\n )}\n </div>\n\n {showClearButton && !showOverlay ? (\n <TypeaheadClearButtonComponent\n id={`${inputHtmlId}-clear-button`}\n disabled={disabledClearButton}\n onMouseDown={handleOnInteraction}\n onKeyDown={handleOnInteraction}\n handleOnBlur={handleOnBlur}\n />\n ) : null}\n\n <div {...getMenuProps()} className=\"sid-organization-list__menu-wrapper\">\n {/* when using the overlay we don't want to use downshift's isOpen */}\n {(inputValue && isOpen) || (showOverlay && inputValue) ? (\n <FetchOrganizationsComponent\n countryCode={countryCode}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n itemToString={itemToString}\n minimumSearchValueLength={minimumSearchValueLength}\n onLoaded={(loadedOrganizations) => setLoadedOrgs(loadedOrganizations)}\n programId={programId}\n orgSearchUrl={orgSearchUrl}\n locale={locale}\n urlAddSchoolForm={urlAddSchoolForm}\n onClickAddSchool={onClickAddSchool}\n onTipsShown={onTipsShown}\n openOrgSearchEnabled={openOrgSearchEnabled}\n searchUrlParams={overlayEnabled ? { format: \"detailed\" } : undefined}\n />\n ) : null}\n </div>\n </div>\n );\n};\n\nexport const TypeaheadComponent = injectIntl(Typeahead);\n","import { type Organization, type ProgramTheme, type WithOrganization } from \"../types/types\";\nimport { getSafe } from \"../utils/getSafe\";\n\nexport const isOpenOrganization = (organization?: Organization): boolean =>\n getSafe(() => organization.id) === 0 && getSafe(() => organization.name, \"\").length > 0;\n\nexport const shouldCollectPostalCode = (programTheme: ProgramTheme, viewModel: WithOrganization) =>\n getSafe(() => programTheme.openOrgSearchEnabled) && isOpenOrganization(viewModel.organization);\n","import type React from \"react\";\nimport { useState } from \"react\";\nimport { FormattedHTMLMessage, injectIntl, type InjectedIntlProps } from \"react-intl\";\n\nimport { SelectedOrg, SearchOverlay } from \"@jslib/OrgSearch\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport { useFlag } from \"@/components/FeatureFlags/hooks\";\n\nimport { dashed } from \"../../../lib/utils/strings\";\nimport { FormFieldLayout, getFormFieldLabelHtmlId } from \"../FormFieldLayout/FormFieldLayout\";\nimport {\n TypeaheadComponent,\n type TypeaheadProps,\n} from \"../../FormInputs/Typeahead/TypeaheadComponent\";\nimport { type Locale, type VerificationService } from \"../../../lib/types/types\";\nimport { getOptions } from \"../../../options/options\";\nimport { getLocaleSafely } from \"../../../lib/intl/intl\";\nimport { isCountrySelectionNeeded } from \"../Country/countryUtils\";\nimport { isOpenOrganization } from \"../../../lib/organization/organization\";\n\n// Extend TypeaheadProps to pass along things like required, onKeyUp, etc.\n// Omit errorId, isErrored, etc because those are handled within this component\nexport interface FormFieldTypeaheadComponentProps extends Omit<\n TypeaheadProps,\n | \"inputHtmlId\"\n | \"id\"\n | \"errorId\"\n | \"isErrored\"\n | \"locale\"\n | \"programId\"\n | \"country\"\n | \"orgSearchUrl\" // omit b/c this component (FormFieldTypeaheadComponent) has a fallback so orgSearchUrl is optional\n | \"onBlur\"\n> {\n fieldId: string; // should be camelCase\n verificationService: VerificationService;\n label: React.ReactNode; // Label is always required for screen readers\n showPlaceholderAndHideLabel?: boolean;\n errorMessage?: React.ReactNode;\n warningMessage?: React.ReactNode;\n helperMessage?: React.ReactNode;\n explanation?: string | JSX.Element;\n orgSearchUrl: string;\n}\n\n/**\n * Generic typeahead field component.\n * In the JSLIB, a field has a label, inline error message, and an input of some kind.\n */\nconst FormFieldTypeaheadInner = ({\n fieldId,\n value,\n verificationService,\n onChange,\n placeholder,\n label,\n errorMessage,\n warningMessage,\n helperMessage,\n showPlaceholderAndHideLabel = false,\n isRequired = true,\n explanation = \"\",\n orgSearchUrl,\n urlAddSchoolForm,\n disabled = false,\n intl,\n}: FormFieldTypeaheadComponentProps & InjectedIntlProps) => {\n const labelHtmlId = `sid-${dashed(fieldId)}`;\n const errorHtmlId = `sid-${dashed(fieldId)}-error`;\n const warningHtmlId = `sid-${dashed(fieldId)}-warning`;\n const { programId, programTheme, verificationResponse, viewModel } = verificationService;\n const countryChoiceValue = getSafe(() => viewModel.countryChoice.value);\n const needToPickCountry = isCountrySelectionNeeded(programTheme, countryChoiceValue);\n const locale: Locale = getLocaleSafely(viewModel, verificationResponse);\n const [autoFocus, setAutoFocus] = useState(false);\n const showSearchOverlay = useFlag(\"org-search-overlay\") === \"overlay\";\n const showSelectedOrgBox = showSearchOverlay || useFlag(\"org-selected-display\") === \"box-display\";\n const showOpenOrgWarningOrange = useFlag(\"hc-open-org-warning\") === \"warning-orange\";\n const showOpenOrgWarningGray = useFlag(\"hc-open-org-warning\") === \"warning-gray\";\n const showOpenOrgWarningFlag = showOpenOrgWarningOrange || showOpenOrgWarningGray;\n\n const [showOpenOrgWarning, setShowOpenOrgWarning] = useState(false);\n const openOrgSearchEnabled = getSafe(() => programTheme.openOrgSearchEnabled);\n\n const handleBlur = () => {\n if (openOrgSearchEnabled && isOpenOrganization(value)) {\n setShowOpenOrgWarning(true);\n } else {\n setShowOpenOrgWarning(false);\n }\n };\n\n const handleChange = (newValue: typeof value) => {\n if (showOpenOrgWarning) {\n setShowOpenOrgWarning(false);\n }\n onChange(newValue);\n };\n\n // Combine prop warning with internal open org warning\n const openOrgWarningMessage = showOpenOrgWarning && showOpenOrgWarningFlag && (\n <FormattedHTMLMessage\n id=\"warningId.openOrganization\"\n defaultMessage=\"We couldn't find a match for that name in our database. Please double-check the spelling, if it's correct, feel free to continue!\"\n />\n );\n const warningMsg = warningMessage || (showOpenOrgWarningOrange && openOrgWarningMessage);\n const helperMsg = helperMessage || (showOpenOrgWarningGray && openOrgWarningMessage);\n\n const getClassName = () => {\n if (errorMessage) return \"sid-text-input--error\";\n if (warningMsg) return \"sid-text-input--warning\";\n return \"\";\n };\n\n const getAriaDescribedBy = () => {\n if (errorMessage) return errorHtmlId;\n if (warningMsg) return warningHtmlId;\n return undefined;\n };\n\n return (\n <SearchOverlay\n enabled={showSearchOverlay}\n closeSectionLabel={<FormattedHTMLMessage id=\"closeSection\" defaultMessage=\"Close Section\" />}\n >\n <FormFieldLayout\n fieldId={fieldId}\n label={label}\n errorMessage={errorMessage}\n warningMessage={warningMsg}\n helperMessage={helperMsg}\n showPlaceholderAndHideLabel={showPlaceholderAndHideLabel}\n isRequired={isRequired || needToPickCountry}\n explanation={\n needToPickCountry ? (\n <FormattedHTMLMessage\n id=\"chooseCountry\"\n defaultMessage=\"Choose a country before searching\"\n />\n ) : (\n explanation\n )\n }\n containerId={`${labelHtmlId}-id`}\n >\n {showSelectedOrgBox && value.id ? (\n <SelectedOrg\n org={value}\n onClear={() => {\n handleChange(undefined);\n setAutoFocus(true);\n }}\n clearSelectionLabel={intl.formatMessage({\n id: \"clearSelection\",\n defaultMessage: \"Clear selection\",\n })}\n labelId={getFormFieldLabelHtmlId(fieldId)}\n />\n ) : (\n <TypeaheadComponent\n className={getClassName()}\n disabled={needToPickCountry || disabled}\n countryCode={countryChoiceValue}\n minimumSearchValueLength={getOptions().minimumOrganizationSearchLength}\n onChange={handleChange}\n placeholder={placeholder}\n programId={programId}\n value={value}\n inputHtmlId={labelHtmlId}\n openOrgSearchEnabled={programTheme.openOrgSearchEnabled}\n locale={locale}\n orgSearchUrl={orgSearchUrl || getSafe(() => programTheme.config.orgSearchUrl)}\n urlAddSchoolForm={urlAddSchoolForm}\n isRequired={isRequired}\n isErrored={!!errorMessage}\n ariaDescribedBy={getAriaDescribedBy()}\n autoFocus={autoFocus}\n onBlur={handleBlur}\n />\n )}\n </FormFieldLayout>\n </SearchOverlay>\n );\n};\n\nexport const FormFieldTypeahead = injectIntl(FormFieldTypeaheadInner);\nexport const FormFieldTypeaheadComponent = FormFieldTypeahead;\n"],"names":["SearchOverlayContext","createContext","useSearchOverlay","useContext","SearchRankingContext","useSearchRanking","useGeoLocation","location","setLocation","useState","error","setError","loading","setLoading","requestLocation","useCallback","resolve","reject","position","loc","err","geoError","SearchRankingProvider","children","sortMode","setSortMode","userLocation","setUserLocation","locationDenied","setLocationDenied","geoLocation","value","useMemo","jsx","FOCUSABLE_SELECTOR","SearchOverlay","enabled","closeSectionLabel","isOpen","setIsOpen","containerRef","useRef","showOverlay","scrollTo","setShowOverlay","state","inFrame","modalMax","currentHeight","useEffect","handleKeyDown","e","container","focusableElements","firstElement","lastElement","jsxs","SelectedOrg","org","onClear","clearSelectionLabel","labelId","inputRef","inputValue","EARTH_RADIUS_KM","calculateDistance","lat1","lon1","lat2","lon2","toRadians","degrees","dLat","dLon","a","c","MILES_LOCALES","getDistanceUnit","locale","formatDistance","distanceKm","unit","suffix","distance","rounded","createCollection","name","PROVIDER_NAME","createCollectionContext","createCollectionScope","createContextScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","props","scope","ref","React","itemMap","COLLECTION_SLOT_NAME","CollectionSlotImpl","createSlot","CollectionSlot","forwardedRef","context","composedRefs","useComposedRefs","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlotImpl","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","b","DirectionContext","React.createContext","useDirection","localDir","globalDir","React.useContext","ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","createRovingFocusGroupContext","createRovingFocusGroupScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React.forwardRef","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","React.useRef","direction","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","React.useState","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","React.useEffect","node","React.useCallback","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","useId","id","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","SUB_CLOSE_KEYS","MENU_NAME","createMenuContext","createMenuScope","createPopperScope","usePopperScope","useRovingFocusGroupScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","Menu","__scopeMenu","open","onOpenChange","modal","popperScope","content","setContent","isUsingKeyboardRef","handleOpenChange","handlePointer","PopperPrimitive.Root","ANCHOR_NAME","MenuAnchor","anchorProps","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","CONTENT_NAME","MenuContentProvider","useMenuContentContext","MenuContent","portalContext","forceMount","contentProps","rootContext","Presence","MenuRootContentModal","MenuRootContentNonModal","hideOthers","MenuContentImpl","Slot","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","disableOutsideScroll","rovingFocusGroupScope","currentItemId","setCurrentItemId","contentRef","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","RemoveScroll","React.Fragment","scrollLockWrapperProps","handleTypeaheadSearch","search","currentMatch","values","nextMatch","getNextMatch","newItem","updateSearch","useFocusGuards","isPointerMovingToSubmenu","isPointerInGraceArea","intent","FocusScope","DismissableLayer","RovingFocusGroup.Root","PopperPrimitive.Content","getOpenState","isKeyDownInside","isModifierKey","isCharacterKey","whenMouse","target","pointerXHasChanged","newDir","MenuGroup","LABEL_NAME","MenuLabel","labelProps","ITEM_SELECT","MenuItem","disabled","onSelect","contentContext","isPointerDownRef","handleSelect","menuItem","itemSelectEvent","dispatchDiscreteCustomEvent","MenuItemImpl","isTypingAhead","textValue","isFocused","setIsFocused","textContent","setTextContent","RovingFocusGroup.Item","CHECKBOX_ITEM_NAME","MenuCheckboxItem","checked","onCheckedChange","checkboxItemProps","ItemIndicatorProvider","isIndeterminate","getCheckedState","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","MenuRadioGroup","onValueChange","handleValueChange","RADIO_ITEM_NAME","MenuRadioItem","radioItemProps","ITEM_INDICATOR_NAME","useItemIndicatorContext","MenuItemIndicator","itemIndicatorProps","indicatorContext","SEPARATOR_NAME","MenuSeparator","separatorProps","ARROW_NAME","MenuArrow","arrowProps","PopperPrimitive.Arrow","SUB_NAME","MenuSubProvider","useMenuSubContext","SUB_TRIGGER_NAME","MenuSubTrigger","subContext","openTimerRef","onPointerGraceIntentChange","clearOpenTimer","pointerGraceTimer","composeRefs","contentRect","side","rightSide","bleed","contentNearEdge","contentFarEdge","SUB_CONTENT_NAME","MenuSubContent","subContentProps","isCloseKey","normalizedSearch","char","currentMatchIndex","wrappedValues","v","isPointInPolygon","point","polygon","x","y","inside","i","j","ii","jj","xi","yi","xj","yj","area","cursorPos","handler","Root3","Anchor2","Content2","Group","Label","Item2","CheckboxItem","RadioGroup","RadioItem","ItemIndicator","Separator","Arrow2","SubTrigger","SubContent","DROPDOWN_MENU_NAME","createDropdownMenuContext","useMenuScope","DropdownMenuProvider","useDropdownMenuContext","DropdownMenu","__scopeDropdownMenu","openProp","defaultOpen","menuScope","triggerRef","setOpen","prevOpen","MenuPrimitive.Root","TRIGGER_NAME","DropdownMenuTrigger","triggerProps","MenuPrimitive.Anchor","DropdownMenuContent","hasInteractedOutsideRef","MenuPrimitive.Content","originalEvent","ctrlLeftClick","isRightClick","DropdownMenuGroup","MenuPrimitive.Group","DropdownMenuLabel","MenuPrimitive.Label","DropdownMenuItem","MenuPrimitive.Item","DropdownMenuCheckboxItem","MenuPrimitive.CheckboxItem","DropdownMenuRadioGroup","radioGroupProps","MenuPrimitive.RadioGroup","DropdownMenuRadioItem","MenuPrimitive.RadioItem","INDICATOR_NAME","DropdownMenuItemIndicator","MenuPrimitive.ItemIndicator","DropdownMenuSeparator","MenuPrimitive.Separator","DropdownMenuArrow","MenuPrimitive.Arrow","DropdownMenuSubTrigger","subTriggerProps","MenuPrimitive.SubTrigger","DropdownMenuSubContent","MenuPrimitive.SubContent","Root2","Trigger","BarsArrowDownIcon","title","titleId","svgRef","React.createElement","ForwardRef","SortDropdown","sortByRelevanceLabel","sortByDistanceLabel","accessibilityLabel","on","searchRanking","handleRelevanceClick","handleDistanceClick","DropdownMenu.Root","DropdownMenu.Trigger","DropdownMenu.Content","DropdownMenu.Item","debounce","func","wait","immediate","timeout","args","timestamp","result","later","last","debounced","callNow","debounce_1","ROW_HEIGHT","MAX_ITEMS","OrganizationList","getItemProps","highlightedIndex","organizations","itemToString","maxItemsToDisplay","childrenCount","Children","fullHeight","itemRefs","overlayEnabled","useFlag","getLocaleSafely","distanceUnit","getDistanceDisplay","organization","elem","distanceDisplay","OrganizationListComponent","LightbulbIcon","className","AddSchoolRequestRow","urlAddSchoolForm","programId","DEFAULT_LOCALE","onClick","onTipsShown","shouldShowTips","setShouldShowTips","trackEvent","useMetrics","handleOnClick","recordGaEvent","EventName","MetricIds","FormattedHTMLMessage","LinkExternal","getSearchValue","orgSearchUrl","getQueryParam","getAttribution","updateSearchUrl","searchValue","newParams","logger","url","origin","pathname","params","k","FetchOrganizations","getMenuProps","minimumSearchValueLength","onLoaded","openOrgSearchEnabled","onClickAddSchool","searchUrlParams","setOrganizations","isErrored","setIsErrored","mountedRef","prevSearchTermRef","propsRef","searchRankingRef","searchTerm","doFetch","sv","loaded","fetchParams","ranking","start","fetchedOrganizations","fetchOrganization","currentSearchTerm","debouncedFetchRef","DEBOUNCE_TIMEOUT","prevSearchTerm","userLatitude","userLongitude","orgSearchAttribution","LoadingSpinnerComponent","Fragment","FetchOrganizationsComponent","handleStateChange","changes","onChange","opts","useCombobox","selectedItem","TypeaheadClearButton","onMouseDown","onKeyDown","handleOnBlur","TypeaheadClearButtonComponent","Typeahead","countryCode","placeholder","inputHtmlId","isRequired","ariaDescribedBy","autoFocus","onBlur","intl","setInputValue","loadedOrgs","setLoadedOrgs","numReworksRef","startTimeRef","tipsShownRef","searchAfterTipsTrackedRef","showClearButton","setShowClearButton","disabledClearButton","setDisabledClearButton","recordNumericMetric","assertValidFunction","getInputProps","selectedRank","o","timeUntilSelection","CustomMetricNames","handleInputChange","newInputValue","setRef","handleOnFocus","handleOnInteraction","loadedOrganizations","TypeaheadComponent","injectIntl","isOpenOrganization","getSafe","shouldCollectPostalCode","programTheme","viewModel","FormFieldTypeaheadInner","fieldId","verificationService","label","errorMessage","warningMessage","helperMessage","showPlaceholderAndHideLabel","explanation","labelHtmlId","dashed","errorHtmlId","warningHtmlId","verificationResponse","countryChoiceValue","needToPickCountry","isCountrySelectionNeeded","setAutoFocus","showSearchOverlay","showSelectedOrgBox","showOpenOrgWarningOrange","showOpenOrgWarningGray","showOpenOrgWarningFlag","showOpenOrgWarning","setShowOpenOrgWarning","handleBlur","handleChange","newValue","openOrgWarningMessage","warningMsg","helperMsg","getClassName","getAriaDescribedBy","FormFieldLayout","getFormFieldLabelHtmlId","getOptions","FormFieldTypeahead"],"mappings":"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","x_google_ignoreList":[7,8,9,10,11,12,14]}
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.217.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1776444739895
|
|
9
|
+
* BUILD_DATE: Fri Apr 17 2026 16:52:19 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: 9512019fe1f385a707b0474cd1b5fc2656ee9530
|
|
11
11
|
*/
|
|
12
12
|
import { b as s, j as r, aB as xe, R as ee, aC as ne, aD as Te, aE as De, aF as oe, aG as S, aH as Ze, aI as Ae, aJ as Vt, aK as Ht, aL as ke, aM as Je, aN as Wt, aO as qt, aP as Yt, aQ as Xt, aR as Qt, aS as Zt, aT as Jt, aU as en, aV as et, a4 as ae, ak as tt, C as tn, E as ue, r as le, l as Z, aW as nn, G as on, F as te, aX as rn, aY as He, H as sn, i as nt, aZ as an, N as Q, s as cn, a_ as Oe, d as ye, h as be, e as un } from "../_mysheerid-preview.js";
|
|
13
13
|
import { F as ln, g as dn } from "./FormFieldLayout-DDEEmlGC.js";
|