{"version":3,"file":"2095.44bfa3b9be618dd426a9.js","mappings":"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","sources":["..\\..\\..\\LSWebUICore.ClientApp\\./Hooks/useSearchAutocomplete.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Styles/UIKit/uikit-breakpoints.module.scss","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Icons/Find.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Icons/Flag.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Icons/Like.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Icons/OfficeBuilding.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Hooks/useMediaBreakpointDown.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Autocompletes/SearchAutocomplete.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/exhaustiveCheck.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/getBreakpointWidth.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Icons/Preferred.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Hooks/useMediaBreakpoint.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Icons/LocationOn.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/isPlural.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Inputs/TypeaheadFL.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Models/Search/FullTextSearchAutocomplete.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/getSearchUrl.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Layout/Header/HeaderSearch.tsx"],"sourcesContent":["import { FullTextSearchAutocomplete, KnownSearchAutocomplete } from \"Models/Search\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { autocomplete } from \"search.autocomplete\";\r\nimport { VenueSearchAutocomplete, VenueGroupSearchAutocomplete, GeoSearchAutocomplete, IVenueSearchAutocomplete, IVenueGroupSearchAutocomplete, IGeoSearchAutocomplete } from \"Services/API/API\";\r\n\r\nfunction useSearchAutocomplete() {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [query, setQuery] = useState(null);\r\n const [options, setOptions] = useState([]);\r\n\r\n useEffect(() => {\r\n const abortController = new AbortController();\r\n\r\n if (query) {\r\n setIsLoading(true);\r\n autocomplete(query, items => {\r\n setOptions([new FullTextSearchAutocomplete(query), ...items.filter(x => !x.extended_line && !x.final_row && !x.currentLocation && !x.smart_search).map(x => {\r\n if (x.VenueId) {\r\n const props: IVenueSearchAutocomplete = {\r\n venueName: x.label!,\r\n venueId: x.VenueId!,\r\n isPreferred: x.IsPreferred! || false\r\n };\r\n return VenueSearchAutocomplete.fromJS(props);\r\n }\r\n else if (x.VenueGroupId) {\r\n const props: IVenueGroupSearchAutocomplete = {\r\n venueGroupName: x.label!,\r\n venueGroupId: x.VenueGroupId!,\r\n isPreferred: x.IsPreferred! || false,\r\n venuesCount: x.LocationsCount!,\r\n iconUrl: x.ImageUrl ?? undefined\r\n };\r\n return VenueGroupSearchAutocomplete.fromJS(props);\r\n }\r\n else /* if (x.label) */ {\r\n const props: IGeoSearchAutocomplete = {\r\n geoQuery: x.label!\r\n };\r\n return GeoSearchAutocomplete.fromJS(props);\r\n }\r\n })]);\r\n setIsLoading(false);\r\n });\r\n }\r\n else {\r\n setOptions([]);\r\n }\r\n\r\n return function cleanup() {\r\n abortController.abort();\r\n }\r\n }, [query]);\r\n\r\n return {\r\n isLoading: isLoading,\r\n options: options,\r\n handleSearch: setQuery\r\n }\r\n}\r\n\r\nexport default useSearchAutocomplete;","// extracted by mini-css-extract-plugin\nexport default {\"xs\":\"0\",\"sm\":\"576\",\"md\":\"768\",\"lg\":\"992\",\"xl\":\"1200\",\"xxl\":\"1600\",\"xxxl\":\"2560\"};","import React from \"react\";\r\nimport { forwardRef } from \"react\";\r\nimport { Icon, IconProps } from \"./common\";\r\n\r\nconst Find: Icon = forwardRef(({ color = \"currentColor\", size = 24, ...rest }, ref) => \r\n \r\n);\r\nexport default Find;","import React from \"react\";\r\nimport { forwardRef } from \"react\";\r\nimport { Icon, IconProps } from \"./common\";\r\n\r\nconst Flag: Icon = forwardRef(({ color = \"currentColor\", size = 24, ...rest }, ref) => \r\n \r\n);\r\nexport default Flag;","import React from \"react\";\r\nimport { forwardRef } from \"react\";\r\nimport { IconProps } from \"./common\";\r\n\r\nexport interface LikeProps extends IconProps {\r\n liked?: boolean\r\n}\r\nconst Like: React.FC = forwardRef(({ color = \"currentColor\", size = 24, liked, ...rest }, ref) => \r\n \r\n);\r\nexport default Like;","import React from \"react\";\r\nimport { forwardRef } from \"react\";\r\nimport { Icon, IconProps } from \"./common\";\r\n\r\nconst OfficeBuilding: Icon = forwardRef(({ color = \"currentColor\", size = 24, ...rest }, ref) => \r\n \r\n);\r\nexport default OfficeBuilding;","import useMediaBreakpoint, { type MediaBreakpoint } from \"./useMediaBreakpoint\";\r\n\r\nfunction useMediaBreakpointDown(breakpoint: MediaBreakpoint): boolean {\r\n return useMediaBreakpoint(\"down\", breakpoint);\r\n}\r\n\r\nexport default useMediaBreakpointDown;","import React, { ChangeEvent, PropsWithChildren, ReactNode } from \"react\";\r\nimport { Control, Controller, FieldPath, FieldValues } from \"react-hook-form\";\r\nimport { useSearchAutocomplete } from \"Hooks\";\r\nimport { isPlural } from \"Utils/isPlural\";\r\nimport { Button } from \"Components/ReactstrapSlim\";\r\nimport { TypeaheadFL, TypeaheadFLProps } from \"Components/Inputs/TypeaheadFL\";\r\nimport * as Icons from \"Components/Icons\";\r\nimport classNames from \"classnames\";\r\nimport { Menu, MenuItem, TypeaheadResult, TypeaheadMenuProps } from \"react-bootstrap-typeahead\";\r\nimport { createPortal } from \"react-dom\";\r\nimport exhaustiveCheck from \"Utils/exhaustiveCheck\";\r\nimport { CollectionSearchAutocomplete, GeoSearchAutocomplete, PlacePredictionViewModel, SavedSearchRequestAutocomplete, VenueGroupSearchAutocomplete, VenueSearchAutocomplete } from \"Services/API/API\";\r\nimport { FullTextSearchAutocomplete, KnownSearchAutocomplete } from \"Models/Search\";\r\n\r\ntype AutocompleteData = KnownSearchAutocomplete | PlacePredictionViewModel;\r\n\r\nexport const renderAutocompleteMenu = (results: Array>, menuProps: TypeaheadMenuProps, onEditHomeBase?: (savedSearchId: Guid) => void) => {\r\n return (\r\n {results.map((result, index) => (\r\n \r\n {renderAutocompleteMenuItem(result, onEditHomeBase)}\r\n \r\n ))}\r\n )\r\n}\r\n\r\nexport const renderAutocompleteMenuItem = (option: AutocompleteData, onEditHomeBase?: (savedSearchId: Guid) => void): ReactNode => {\r\n let optionLabel: string;\r\n let icon: JSX.Element;\r\n let extraInfo: React.ReactNode | undefined;\r\n\r\n if (option instanceof VenueSearchAutocomplete) {\r\n optionLabel = option.venueName;\r\n icon = \r\n }\r\n else if (option instanceof VenueGroupSearchAutocomplete) {\r\n optionLabel = option.venueGroupName;\r\n icon = option.iconUrl\r\n ? {option.venueGroupName}\r\n : option.isPreferred\r\n ? \r\n : ;\r\n extraInfo = `(${option.venuesCount} ${isPlural(option.venuesCount) ? \"locations\" : \"location\"})`\r\n }\r\n else if (option instanceof SavedSearchRequestAutocomplete) {\r\n optionLabel = `Home base - ${option.predefinedText}`;\r\n icon = \r\n if (onEditHomeBase) {\r\n extraInfo = \r\n }\r\n }\r\n else if (option instanceof GeoSearchAutocomplete) {\r\n optionLabel = option.geoQuery;\r\n icon = \r\n }\r\n else if (option instanceof CollectionSearchAutocomplete) {\r\n optionLabel = option.collectionName;\r\n icon = \r\n extraInfo = `(${option.favoritesCount} ${isPlural(option.favoritesCount) ? \"spaces\" : \"space\"})`;\r\n }\r\n else if (option instanceof FullTextSearchAutocomplete) {\r\n optionLabel = `${option.fullTextQuery} - Search`;\r\n icon = \r\n } else if (option instanceof PlacePredictionViewModel) {\r\n optionLabel = option.text ?? \"\";\r\n icon = \r\n }\r\n else {\r\n exhaustiveCheck(option);\r\n icon = \r\n optionLabel = \"\"\r\n }\r\n\r\n return (<>\r\n
{icon}
\r\n
{optionLabel}
\r\n
{extraInfo}
\r\n );\r\n}\r\n\r\nexport interface SearchAutocompletePropsNoIcon {\r\n control: Control;\r\n name: FieldPath;\r\n onItemSelected: (selectedOption: KnownSearchAutocomplete) => void;\r\n onInputChange?: (value: string) => void;\r\n onInputSubmit?: (value: string) => void;\r\n size?: TypeaheadFLProps[\"size\"];\r\n placeholder?: string;\r\n onEditHomeBase?: (savedSearchId: Guid) => void;\r\n //inputValue is used to set input value programmatically... See https://stackoverflow.com/questions/66170215/update-input-text-in-react-bootstrap-typeahead-from-javascript-react\r\n //Also, typeahead issue thread https://github.com/ericgio/react-bootstrap-typeahead/issues/266\r\n inputValue?: string;\r\n}\r\n\r\nexport interface SearchAutocompleteProps extends SearchAutocompletePropsNoIcon {\r\n icon: TypeaheadFLProps[\"icon\"];\r\n}\r\n\r\nfunction getLabelKey(option?: KnownSearchAutocomplete): string {\r\n if (option instanceof VenueSearchAutocomplete) {\r\n return option.venueName;\r\n }\r\n else if (option instanceof VenueGroupSearchAutocomplete) {\r\n return option.venueGroupName;\r\n }\r\n else if (option instanceof SavedSearchRequestAutocomplete) {\r\n return option.predefinedText ?? \"\";\r\n }\r\n else if (option instanceof GeoSearchAutocomplete) {\r\n return option.geoQuery;\r\n }\r\n else if (option instanceof CollectionSearchAutocomplete) {\r\n return option.collectionName;\r\n }\r\n else if (option instanceof FullTextSearchAutocomplete) {\r\n return option.fullTextQuery;\r\n }\r\n else if (option == undefined) {\r\n return \"\";\r\n }\r\n else {\r\n exhaustiveCheck(option);\r\n return \"\";\r\n }\r\n}\r\n\r\nexport const SearchAutocomplete = function ({ control, name, icon, size, placeholder, onEditHomeBase, onItemSelected, onInputSubmit, onInputChange, inputValue }: PropsWithChildren>) {\r\n const { isLoading, options, handleSearch } = useSearchAutocomplete();\r\n\r\n\r\n return (\r\n \r\n true}\r\n isLoading={isLoading}\r\n labelKey={option => getLabelKey(option)}\r\n minLength={3}\r\n onSearch={handleSearch}\r\n options={options}\r\n placeholder={placeholder ?? \"Search workspace\"}\r\n onChange={selectedOptions => {\r\n if (onItemSelected)\r\n onItemSelected(selectedOptions[0]);\r\n }}\r\n onInputChange={(s, ev) => {\r\n if (onInputChange)\r\n onInputChange(s);\r\n field.onChange(ev as unknown as ChangeEvent);\r\n }}\r\n onBlur={() => field.onBlur()}\r\n size={size}\r\n paginate\r\n renderMenu={(results, menuProps) => createPortal((renderAutocompleteMenu(results, menuProps, onEditHomeBase)), document.body)}\r\n onInputSubmit={onInputSubmit}\r\n inputValue={inputValue ?? \"\"}\r\n />\r\n } />\r\n );\r\n}","function exhaustiveCheck(value: never) {\r\n console.error(`Value case is unhandled: ${value}`);\r\n}\r\n\r\nexport default exhaustiveCheck;","import uikitvariables from \"Styles/UIKit/uikit-breakpoints.module.scss\";\r\n\r\nexport type MediaBreakpointDirection = \"up\" | \"down\";\r\nexport type MediaBreakpoint = keyof typeof uikitvariables;\r\n\r\nexport function getBreakpointWidth (direction: MediaBreakpointDirection, breakpoint: MediaBreakpoint): number {\r\n if(direction == \"up\")\r\n return parseFloat(uikitvariables[breakpoint]);\r\n //This logic comes from bootstrap4 mixins/_breakpoints.scss \r\n const originalBreakpointWidth = parseFloat(uikitvariables[breakpoint]);\r\n let nextBreakpointWidth = 0;\r\n for(const cBreakpoint in uikitvariables) {\r\n const currentBreakpointWidth = parseFloat(uikitvariables[cBreakpoint]);\r\n if(currentBreakpointWidth > originalBreakpointWidth) {\r\n if(!nextBreakpointWidth)\r\n nextBreakpointWidth = currentBreakpointWidth;\r\n else if(currentBreakpointWidth < nextBreakpointWidth)\r\n nextBreakpointWidth = currentBreakpointWidth;\r\n }\r\n }\r\n // Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\r\n // See https://bugs.webkit.org/show_bug.cgi?id=178261\r\n return nextBreakpointWidth - 0.02;\r\n}","import React from \"react\";\r\nimport { forwardRef } from \"react\";\r\nimport { Icon, IconProps } from \"./common\";\r\n\r\nconst Preferred: Icon = forwardRef(({ color = \"currentColor\", size = 24, ...rest }, ref) => \r\n \r\n);\r\nexport default Preferred;","import { MediaBreakpointDirection, MediaBreakpoint, getBreakpointWidth } from \"Utils/getBreakpointWidth\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport {type MediaBreakpoint} from \"Utils/getBreakpointWidth\";\r\n\r\nfunction useMediaBreakpoint(direction: MediaBreakpointDirection, breakpoint: MediaBreakpoint): boolean { \r\n const breakpointWidth = getBreakpointWidth(direction, breakpoint);\r\n const [isMatch, setIsMatch] = useState(direction == \"up\" ? window.innerWidth >= breakpointWidth : window.innerWidth <= breakpointWidth);\r\n const onMediaQueryHandler = (event: MediaQueryListEvent) => {\r\n setIsMatch(event.matches);\r\n }; \r\n\r\n \r\n useEffect(() => { \r\n const width = getBreakpointWidth(direction, breakpoint); \r\n const mediaQuery = window.matchMedia(direction == \"up\" \r\n ? `(min-width: ${width}px)`\r\n : `(max-width: ${width}px)`);\r\n mediaQuery.addEventListener(\"change\", onMediaQueryHandler);\r\n\r\n return function cleanup() { \r\n mediaQuery.removeEventListener(\"change\", onMediaQueryHandler);\r\n }\r\n }, [direction, breakpoint]);\r\n\r\n return isMatch;\r\n}\r\n\r\nexport default useMediaBreakpoint;\r\n","import React from \"react\";\r\nimport { forwardRef } from \"react\";\r\nimport { Icon, IconProps } from \"./common\";\r\n\r\nconst LocationOn: Icon = forwardRef(({ color = \"currentColor\", size = 24, ...rest }, ref) => \r\n \r\n);\r\nexport default LocationOn;","export function isPlural(n: number | undefined | null): boolean {\r\n return n != 1;\r\n}","import classNames from \"classnames\";\r\nimport { Icon } from \"Components/Icons\";\r\nimport React, { PropsWithChildren, ReactNode, useState, useCallback, useEffect, useRef } from \"react\";\r\nimport { AsyncTypeahead, AsyncTypeaheadProps, TypeaheadInputSingle, TypeaheadModel } from \"react-bootstrap-typeahead\";\r\nimport { Spinner } from \"Components/ReactstrapSlim\";\r\n\r\nconst ActiveIndexWatcher = ({ update }) => {\r\n useEffect(update);\r\n return null;\r\n};\r\n\r\nexport function sizeClass(prefix: string, size: TypeaheadFLProps[\"size\"]) {\r\n return size === \"lg\" || size === \"large\"\r\n ? prefix + \"lg\"\r\n : size === \"sm\" || size === \"small\"\r\n ? prefix + \"sm\"\r\n : null\r\n}\r\n\r\nfunction isIconRenderFunction(prop: Icon | IconRenderFunction): prop is IconRenderFunction {\r\n return (prop as IconRenderFunction).isIconRenderFunction === true;\r\n}\r\n//setOpen: React.Dispatch>, setOptions: React.Dispatch>\r\nexport interface IconRenderFunction {\r\n (\r\n isShown: boolean,\r\n showOptions: (options: T[]) => void,\r\n hideOptions: () => void,\r\n ): ReactNode,\r\n isIconRenderFunction: true\r\n}\r\n\r\nexport interface TypeaheadFLProps extends AsyncTypeaheadProps {\r\n icon?: Icon | IconRenderFunction;\r\n invalid?: boolean;\r\n errorMessage?: string | undefined;\r\n wrapperClassName?: string;\r\n onInputSubmit?: (value: string) => void;\r\n inputValue?: string\r\n}\r\nexport const TypeaheadFL = ({ icon, invalid, errorMessage, wrapperClassName, onInputSubmit, options, onChange, useCache, onKeyDown, onMenuToggle, inputValue, ...rest }: PropsWithChildren>) => {\r\n const [focus, setFocus] = useState(false);\r\n const [customOptions, setCustomOptions] = useState();\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n const [key, setKey] = useState(0);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const ref = useRef>(null);\r\n\r\n const onMenuToggleWrapped = (isMenuOpen: boolean) => {\r\n setIsOpen(isMenuOpen);\r\n if (onMenuToggle)\r\n onMenuToggle(isMenuOpen);\r\n }\r\n\r\n const showOptions = (options: T[]) => {\r\n setCustomOptions(options);\r\n if (!isOpen)\r\n ref.current?.toggleMenu();\r\n }\r\n const hideOptions = () => {\r\n setCustomOptions(undefined);\r\n ref.current?.hideMenu();\r\n }\r\n\r\n const getOptions = () => {\r\n return customOptions !== undefined ? customOptions : options;\r\n }\r\n\r\n const onKeyDownWrapper = useCallback(\r\n (e) => {\r\n // Check whether the 'enter' key was pressed, and also make sure that\r\n // no menu items are highlighted.\r\n if (e.keyCode === 13 && activeIndex === -1) {\r\n if (onInputSubmit)\r\n onInputSubmit(e.target.value);\r\n\r\n if (ref.current)\r\n ref.current.hideMenu();\r\n }\r\n if (onKeyDown)\r\n onKeyDown(e);\r\n },\r\n [activeIndex]\r\n );\r\n\r\n useEffect(() => {\r\n if (inputValue !== undefined)\r\n setKey(key + 1);\r\n }, [inputValue])\r\n\r\n return (\r\n \r\n {...rest}\r\n ref={ref}\r\n key={key}\r\n options={getOptions()}\r\n useCache={customOptions === undefined ? useCache : false}\r\n onChange={selectedOptions => {\r\n hideOptions();\r\n if (onChange)\r\n onChange(selectedOptions);\r\n }}\r\n onKeyDown={onKeyDownWrapper}\r\n defaultInputValue={inputValue}\r\n onMenuToggle={onMenuToggleWrapped}\r\n renderInput={(inputProps, typeaheadState) => {\r\n const commonProps = {\r\n ...inputProps,\r\n isInvalid: rest.isInvalid,\r\n isValid: rest.isValid,\r\n };\r\n return (\r\n
\r\n { setFocus(true); hideOptions(); inputProps.onFocus(e); }}\r\n onBlur={(e) => { setFocus(false); inputProps.onBlur(e); }}\r\n />\r\n {\r\n !errorMessage\r\n ? \r\n : null\r\n }\r\n\r\n
\r\n {\r\n rest.isLoading\r\n ? \r\n : icon\r\n ? isIconRenderFunction(icon)\r\n ? icon(\r\n customOptions !== undefined && (typeaheadState as any).isMenuShown,\r\n showOptions,\r\n hideOptions\r\n )\r\n : React.createElement(icon, {})\r\n : null\r\n }\r\n
\r\n {\r\n errorMessage\r\n ?
\r\n {errorMessage}\r\n
\r\n : null\r\n }\r\n
\r\n )\r\n }}\r\n >\r\n {(state) => (\r\n // Passing a child render function to the component exposes partial\r\n // internal state, including the index of the highlighted menu item.\r\n setActiveIndex(state.activeIndex)} />\r\n )}\r\n \r\n );\r\n}\r\n","import { IBaseSearchAutocomplete, BaseSearchAutocomplete } from \"Services/API/API\";\r\n\r\ninterface IFullTextSearchAutocomplete extends IBaseSearchAutocomplete {\r\n fullTextQuery: string;\r\n}\r\n\r\nexport class FullTextSearchAutocomplete extends BaseSearchAutocomplete implements IFullTextSearchAutocomplete {\r\n /** Full text query */\r\n fullTextQuery: string;\r\n\r\n constructor(fullTextQuery: string) {\r\n super();\r\n this.fullTextQuery = fullTextQuery;\r\n this._discriminator = \"FullTextSearchAutocomplete\";\r\n }\r\n}","import { FullTextSearchAutocomplete, KnownSearchAutocomplete, KnownSearchRequest } from \"Models/Search\";\r\nimport { BaseSearchRequest, CollectionSearchAutocomplete, CurrentLocationSearchRequest, FullTextSearchRequest, GeoSearchAutocomplete, GeoSearchRequest, ReservationMethod, SavedSearchRequestAutocomplete, SpaceType, VenueGroupSearchAutocomplete, VenueGroupSearchRequest, VenueSearchAutocomplete, VenueSearchRequest } from \"Services/API/API\";\r\nimport exhaustiveCheck from \"./exhaustiveCheck\";\r\nimport moment from \"moment\";\r\n\r\nfunction getCommonProperties({ amenityIds, maxPrice, minCapacity, minPrice, reservationLengthMinutes, reservationMethod, spaceTypes, startTime }: BaseSearchRequest): Partial {\r\n return {\r\n ReservationMethod: reservationMethod == ReservationMethod.Hourly\r\n ? undefined\r\n : reservationMethod == ReservationMethod.Monthly\r\n ? LSCrossTier.WorkspaceReservationMethod.Period\r\n //not a viable case\r\n : undefined,\r\n MinPrice: minPrice,\r\n MaxPrice: maxPrice,\r\n AmenityIds: amenityIds,\r\n WorkspaceCapacity: minCapacity,\r\n ReservationLengthMinutes: reservationLengthMinutes,\r\n SpaceTypes: spaceTypes == SpaceType.Any ? undefined : spaceTypes ? spaceTypes.toString() as LSCrossTier.SpaceType : undefined,\r\n StartTime: startTime ? moment(startTime).format(\"YYYY-MM-DD\") : undefined\r\n }\r\n}\r\n\r\nfunction getSearchParams(searchRequest: KnownSearchRequest | Exclude): Partial {\r\n if (searchRequest instanceof FullTextSearchAutocomplete) {\r\n return {\r\n Address: searchRequest.fullTextQuery,\r\n IsFullTextSearch: true\r\n }\r\n }\r\n else if (searchRequest instanceof GeoSearchAutocomplete) {\r\n return {\r\n Address: searchRequest.geoQuery\r\n }\r\n }\r\n else if (searchRequest instanceof VenueSearchAutocomplete) {\r\n return {\r\n VenueId: searchRequest.venueId\r\n }\r\n }\r\n else if (searchRequest instanceof VenueGroupSearchAutocomplete) {\r\n return {\r\n VenueGroupId: searchRequest.venueGroupId\r\n }\r\n }\r\n else if (searchRequest instanceof CollectionSearchAutocomplete) {\r\n //not a valid case\r\n return {\r\n Address: searchRequest.collectionName\r\n }\r\n }\r\n\r\n\r\n else if (searchRequest instanceof GeoSearchRequest) {\r\n return {\r\n ...getCommonProperties(searchRequest),\r\n Address: searchRequest.address\r\n }\r\n }\r\n else if (searchRequest instanceof CurrentLocationSearchRequest) {\r\n return {\r\n ...getCommonProperties(searchRequest),\r\n IsCurrentLocationSearch: true\r\n }\r\n }\r\n else if (searchRequest instanceof FullTextSearchRequest) {\r\n return {\r\n ...getCommonProperties(searchRequest),\r\n Address: searchRequest.fullTextQuery,\r\n IsFullTextSearch: true\r\n }\r\n }\r\n else if (searchRequest instanceof VenueSearchRequest) {\r\n return {\r\n ...getCommonProperties(searchRequest),\r\n VenueId: searchRequest.venueId\r\n }\r\n }\r\n else if (searchRequest instanceof VenueGroupSearchRequest) {\r\n return {\r\n ...getCommonProperties(searchRequest),\r\n VenueGroupId: searchRequest.venueGroupId\r\n }\r\n }\r\n else {\r\n exhaustiveCheck(searchRequest);\r\n throw new Error(\"not implemented\")\r\n }\r\n}\r\n\r\nexport function getSearchUrl(searchRequest: KnownSearchRequest | Exclude /* | Guid */ | undefined | null, addRms = false): string {\r\n if (searchRequest) {\r\n const searchRequestParams = getSearchParams(searchRequest);\r\n const searchParams = Object.getOwnPropertyNames(searchRequestParams)\r\n .filter(key => searchRequestParams[key] != undefined && searchRequestParams[key] !== \"\")\r\n .reduce((acc, key) => {\r\n acc.append(key, searchRequestParams[key]);\r\n return acc;\r\n }, new URLSearchParams());\r\n\r\n if (addRms) {\r\n searchParams.append(\"rms\", \"true\");\r\n }\r\n return `/search?${searchParams.toString()}`;\r\n }\r\n else {\r\n return \"/search\"\r\n }\r\n}","import React, { EventHandler, forwardRef, MutableRefObject, ReactNode, useCallback, useRef, useState } from \"react\";\r\nimport { AsyncTypeahead, Input } from \"react-bootstrap-typeahead\";\r\nimport classNames from \"classnames\";\r\nimport { Button, InputGroupAddon } from \"Components/ReactstrapSlim\";\r\nimport { renderAutocompleteMenu } from \"Components/Autocompletes/SearchAutocomplete\";\r\nimport { useSearchAutocomplete } from \"Hooks\";\r\nimport { CurrentLocationSearchRequest, FullTextSearchRequest, GeoSearchAutocomplete, IBaseSearchRequest, SearchAutocompleteClient, SpaceType, VenueGroupSearchAutocomplete, VenueSearchAutocomplete } from \"Services/API/API\";\r\nimport { getSearchUrl } from \"Utils/getSearchUrl\";\r\nimport { KnownSearchAutocomplete } from \"Models/Search\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport { useCookies } from \"react-cookie\";\r\n\r\ninterface HeaderSearchProps {\r\n className?: string;\r\n onButtonClick: EventHandler;\r\n buttonContent: () => ReactNode;\r\n typeaheadRef?: MutableRefObject | undefined>;\r\n ariaLabel: string;\r\n elementRootContainerId?: string;\r\n placeholder?: string;\r\n}\r\n\r\nexport const HeaderSearch = forwardRef(({ className, onButtonClick, buttonContent, typeaheadRef, ariaLabel, elementRootContainerId, placeholder = \"Find a workspace for you\" }, ref) => {\r\n const inputRef = useRef>();\r\n if (typeaheadRef) {\r\n typeaheadRef.current = inputRef.current;\r\n }\r\n\r\n const searchAutocompleteClient = useApiClient(SearchAutocompleteClient);\r\n const [experimentalFullTextSearchLoading, setExperimentalFullTextSearchLoading] = useState(false);\r\n\r\n const [cookies] = useCookies([\"UseExperimentalFullTextSearch\"]);\r\n\r\n async function submitHandler(e?: React.SyntheticEvent) {\r\n e?.preventDefault();\r\n const inputValue = inputRef.current?.getInput().value;\r\n if (inputValue) {\r\n const request = new FullTextSearchRequest({ ...new FullTextSearchRequest() as IBaseSearchRequest, fullTextQuery: inputValue });\r\n\r\n if (LiquidSpaceConfig.UseExperimentalFullTextSearch || cookies.UseExperimentalFullTextSearch) {\r\n setExperimentalFullTextSearchLoading(true);\r\n try {\r\n const result = await searchAutocompleteClient.textToSearchQuery(inputValue);\r\n if (result != null) {\r\n request.fullTextQuery = result.location ?? request.fullTextQuery;\r\n request.minCapacity = result.minCapacity;\r\n request.spaceTypes = result.spaceType ?? SpaceType.Any;\r\n request.startTime = result.startDate;\r\n }\r\n }\r\n finally {\r\n setExperimentalFullTextSearchLoading(false);\r\n }\r\n }\r\n\r\n window.open(getSearchUrl(request), \"_blank\");\r\n } else {\r\n window.open(getSearchUrl(new CurrentLocationSearchRequest()), \"_blank\");\r\n }\r\n (inputRef.current as AsyncTypeahead).clear();\r\n }\r\n\r\n const { isLoading, options, handleSearch } = useSearchAutocomplete();\r\n\r\n const onKeyDown = useCallback(\r\n (e) => {\r\n const activeIndex = (inputRef.current?.state as any).activeIndex;\r\n if (e.keyCode === 13 && (activeIndex === -1 || activeIndex == null)) {\r\n e?.preventDefault();\r\n submitHandler();\r\n }\r\n },\r\n []\r\n );\r\n\r\n return
\r\n \r\n ref={inputRef as any}\r\n filterBy={() => true}\r\n id={elementRootContainerId || \"address\"}\r\n inputProps={{\r\n className: \"header-search-input rfl-input\"\r\n }}\r\n className=\"header-search-rbt\"\r\n isLoading={isLoading || experimentalFullTextSearchLoading}\r\n labelKey={option => option?.address || \"\"}\r\n minLength={3}\r\n onSearch={handleSearch}\r\n options={options}\r\n placeholder={placeholder}\r\n onChange={options => {\r\n const option = options[0];\r\n if (option instanceof GeoSearchAutocomplete || option instanceof FullTextSearchRequest || option instanceof VenueSearchAutocomplete || option instanceof VenueGroupSearchAutocomplete) {\r\n window.open(getSearchUrl(option), \"_blank\");\r\n }\r\n }}\r\n renderMenu={(results, menuProps) => renderAutocompleteMenu(results, menuProps)}\r\n onKeyDown={onKeyDown}\r\n renderInput={({\r\n inputRef,\r\n referenceElementRef,\r\n shouldSelectHint,\r\n ...props\r\n }: any, typeaheadState) => {\r\n return (\r\n
\r\n {\r\n inputRef(node);\r\n referenceElementRef(node);\r\n }}\r\n />\r\n \r\n \r\n \r\n
\r\n );\r\n }}\r\n />\r\n\r\n ;\r\n});"],"names":["useSearchAutocomplete","isLoading","setIsLoading","useState","query","setQuery","options","setOptions","useEffect","abortController","AbortController","autocomplete","items","FullTextSearchAutocomplete","filter","x","extended_line","final_row","currentLocation","smart_search","map","VenueId","props","venueName","label","venueId","isPreferred","IsPreferred","VenueSearchAutocomplete","fromJS","VenueGroupId","venueGroupName","venueGroupId","venuesCount","LocationsCount","iconUrl","ImageUrl","undefined","VenueGroupSearchAutocomplete","geoQuery","GeoSearchAutocomplete","abort","handleSearch","forwardRef","color","size","rest","ref","React","width","height","viewBox","fill","xmlns","fillRule","clipRule","d","liked","stroke","strokeWidth","breakpoint","useMediaBreakpoint","renderAutocompleteMenu","results","menuProps","onEditHomeBase","Menu","className","classNames","result","index","MenuItem","key","option","position","renderAutocompleteMenuItem","optionLabel","icon","extraInfo","Icons","src","alt","isPlural","SavedSearchRequestAutocomplete","predefinedText","Button","onClick","e","preventDefault","stopPropagation","savedSearchId","CollectionSearchAutocomplete","collectionName","favoritesCount","fullTextQuery","PlacePredictionViewModel","text","exhaustiveCheck","getLabelKey","SearchAutocomplete","control","name","placeholder","onItemSelected","onInputSubmit","onInputChange","inputValue","Controller","render","field","fieldState","TypeaheadFL","id","filterBy","labelKey","minLength","onSearch","onChange","selectedOptions","s","ev","onBlur","paginate","renderMenu","createPortal","document","body","value","console","error","getBreakpointWidth","direction","parseFloat","uikitvariables","originalBreakpointWidth","nextBreakpointWidth","cBreakpoint","currentBreakpointWidth","breakpointWidth","isMatch","setIsMatch","window","innerWidth","onMediaQueryHandler","event","matches","mediaQuery","matchMedia","addEventListener","removeEventListener","n","ActiveIndexWatcher","update","sizeClass","prefix","invalid","errorMessage","wrapperClassName","useCache","onKeyDown","onMenuToggle","focus","setFocus","customOptions","setCustomOptions","activeIndex","setActiveIndex","setKey","isOpen","setIsOpen","useRef","showOptions","current","toggleMenu","hideOptions","hideMenu","onKeyDownWrapper","useCallback","keyCode","target","AsyncTypeahead","defaultInputValue","isMenuOpen","renderInput","inputProps","typeaheadState","commonProps","isInvalid","isValid","disabled","TypeaheadInputSingle","onFocus","htmlFor","Spinner","isIconRenderFunction","isMenuShown","role","state","BaseSearchAutocomplete","constructor","super","this","_discriminator","getCommonProperties","amenityIds","maxPrice","minCapacity","minPrice","reservationLengthMinutes","reservationMethod","spaceTypes","startTime","ReservationMethod","Hourly","Monthly","LSCrossTier","WorkspaceReservationMethod","Period","MinPrice","MaxPrice","AmenityIds","WorkspaceCapacity","ReservationLengthMinutes","SpaceTypes","SpaceType","Any","toString","StartTime","moment","format","getSearchUrl","searchRequest","addRms","searchRequestParams","Address","IsFullTextSearch","GeoSearchRequest","address","CurrentLocationSearchRequest","IsCurrentLocationSearch","FullTextSearchRequest","VenueSearchRequest","VenueGroupSearchRequest","Error","getSearchParams","searchParams","Object","getOwnPropertyNames","reduce","acc","append","URLSearchParams","HeaderSearch","onButtonClick","buttonContent","typeaheadRef","ariaLabel","elementRootContainerId","inputRef","searchAutocompleteClient","useApiClient","SearchAutocompleteClient","experimentalFullTextSearchLoading","setExperimentalFullTextSearchLoading","cookies","useCookies","async","submitHandler","getInput","request","LiquidSpaceConfig","UseExperimentalFullTextSearch","textToSearchQuery","location","spaceType","startDate","open","clear","onSubmit","referenceElementRef","shouldSelectHint","Input","node","InputGroupAddon","addonType"],"sourceRoot":""}