{"version":3,"file":"7262.4a8b1786555165f97502.js","mappings":"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","sources":["..\\..\\..\\LSWebUICore.ClientApp\\./Components/AvatarCircle/AvatarCircle.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/VenueCalendarModal/ReservationCalendar/ReservationCalendarLegend.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/date/utils.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/VenueCalendarModal/index.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/HealthAndSafetyBadge.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/date/format.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/LongShortLabel.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/WorkspaceSelector/WorkspaceSelectorItem.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/VenueCalendarModal/VenueCustomCta/styles.module.scss","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/delay.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/VenueCalendarModal/ReservationCalendar/ReservationCalendarSelection.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/VenueCalendarModal/styles.module.scss","..\\..\\..\\LSWebUICore.ClientApp\\./Components/ImageSwiper/index.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/moment/localMomentDate.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Inputs/DatePickerInput.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/AvatarCircle/index.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Rating.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Utils/ActivityReservationStatusFilterPresets.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/VenueCalendarModal/ReservationCalendar/index.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/ImageSwiper/styles.module.scss","..\\..\\..\\LSWebUICore.ClientApp\\./Components/AvatarCircle/AvatarCircleWithCache.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/WorkspaceSelector/WorkspaceSelector.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Hooks/useMemberPicture.ts","..\\..\\..\\LSWebUICore.ClientApp\\./Components/InstantBookBadge.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/VenueCalendarModal/VenueCustomCta/index.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/VenueCalendarModal/ReservationCalendar/ReservationCalendarBody.tsx","..\\..\\..\\LSWebUICore.ClientApp\\./Components/Embedded/BookItNow.tsx"],"sourcesContent":["import React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\n\r\nconst inviteeColors = [\r\n \"#FF6F6F\",\r\n \"#FDCF85\",\r\n \"#BADF93\"\r\n];\r\n\r\nexport type AvatarCircleSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface AvatarCircleProps {\r\n firstName?: string,\r\n lastName?: string,\r\n email?: string,\r\n colorIndex: number,\r\n imageUrl?: string,\r\n noborder?: boolean,\r\n className?: string,\r\n title?: string,\r\n size?: AvatarCircleSize,\r\n}\r\nexport const AvatarCircle: React.FC = ({ firstName, lastName, email, imageUrl, colorIndex, noborder, className, title, size = \"sm\" }) => {\r\n const getInviteInitials = () => {\r\n if (firstName || lastName) {\r\n return `${firstName ? firstName[0].toUpperCase() : \"\"}${lastName ? lastName[0].toUpperCase() : \"\"}`\r\n } else if (email) {\r\n return email[0].toUpperCase();\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n const avatarClassNames = classNames(\"avatar-circle\", `avatar-circle-${size}`, { \r\n \"avatar-circle-no-border\": noborder \r\n }, className);\r\n\r\n if (imageUrl)\r\n return (
\r\n
);\r\n else {\r\n const finalColorIndex = colorIndex < 0 ? 0 : colorIndex % inviteeColors.length;\r\n const color = inviteeColors[finalColorIndex];\r\n return (
\r\n {getInviteInitials()}\r\n
);\r\n }\r\n}","import React, { } from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\ninterface ReservationCalendarLegendProps {\r\n className?: string\r\n}\r\nexport const ReservationCalendarLegend: React.FC = ({ className }) => {\r\n return (
\r\n {[\r\n [\"Closed\", \"rcl-item-closed\"],\r\n [\"Booked\", \"rcl-item-booked\"],\r\n [\"Available\", \"rcl-item-available\"],\r\n [\"Your Reservation\", \"rcl-item-own\"]\r\n ].map(legend => (
{legend[0]}
))}\r\n
)\r\n}","import { ZoneInfo } from \"Services/API/API\";\r\nimport moment from \"moment\";\r\nimport { DateOnly, TimeOnly } from \"typings/DateTime\";\r\n\r\nexport const HOURS_0_VALUE = \"00:00:00\";\r\nexport const HOURS_24_VALUE = \"1.00:00:00\";\r\n\r\nconst SERVER_UNSPESIFIED_FORMAT = \"yyyy-MM-DDTHH:mm:ss\";\r\n\r\n/*\r\nThis method was introduced along side eslinting rule \"no-date-parsing\"\r\nWe do not want to use new Date(\"\") or Date.parse(\"\") because they are inconsistent.\r\nSpecifically, passing a DateOnly argument (ex. \"2024-03-15\") will create a date assuming the param is in UTC\r\n(so for US/Central actual Date would be \"Thu Mar 14 2024 20:00:00 GMT-0400 (Eastern Daylight Time)\"),\r\nwhile moment(\"\") will populate the date assuming it is local (expected behaviour).\r\n*/\r\nexport function toDate(date: string | DateOnly | Date, format?: string, locale?: string): Date\r\nexport function toDate(date: string | DateOnly | Date | undefined | null, format?: string, locale?: string): Date | undefined | null\r\nexport function toDate(date: string | DateOnly | Date | undefined | null, format?: string, locale?: string): Date | undefined | null {\r\n if(date == undefined)\r\n return date; \r\n\r\n //Apply default format for DateOnly dates\r\n if(!format && !(date instanceof Date) && isDateOnly(date))\r\n format = moment.HTML5_FMT.DATE;\r\n\r\n return moment(date, format, locale).toDate();\r\n}\r\n\r\nexport function toLocalDate(date: string): Date\r\nexport function toLocalDate(date: string | undefined | null): Date | undefined | null {\r\n if(date == undefined)\r\n return date;\r\n const fixedDate = date.replace(\"Z\", \"\");\r\n return toDate(fixedDate);\r\n}\r\n\r\nexport const getMilliseconds = (date?: string) => {\r\n if (!date) return Date.now();\r\n return toDate(date).getTime();\r\n};\r\n\r\nexport const isToday = (date?: string) => {\r\n if (!date) return false;\r\n return moment(date).isSame(new Date(), \"day\");\r\n};\r\n\r\nexport const isFirstDayOfMonth = (date?: string) => {\r\n if (!date) return false;\r\n return moment(date).date() === 1;\r\n};\r\n\r\nexport const getStartOfDay = (date?: string) => {\r\n return moment(date).startOf(\"day\").toISOString();\r\n};\r\n\r\nexport const getEndOfDay = (date?: string) => {\r\n return moment(date).endOf(\"day\").toISOString();\r\n};\r\n\r\nexport const getStartOfWeek = (date?: string) => {\r\n return moment(date).startOf(\"week\").toISOString();\r\n};\r\n\r\nexport const getEndOfWeek = (date?: string) => {\r\n return moment(date).endOf(\"week\").toISOString();\r\n};\r\n\r\nexport const getStartOfMonth = (date?: string | Date) => {\r\n return moment(date).startOf(\"month\").toISOString();\r\n};\r\n\r\nexport const getStartOfNextMonth = (date?: string | Date) => {\r\n return moment(date).add(1, \"month\").startOf(\"month\").toISOString();\r\n};\r\n\r\nexport const getEndOfMonth = (date?: string) => {\r\n return moment(date).endOf(\"month\").toISOString();\r\n};\r\n\r\nexport const addTimezoneOffset = (date?: string) => {\r\n const d = date ? toDate(date) : new Date();\r\n const userTimezoneOffset = d.getTimezoneOffset() * 60000;\r\n d.setMilliseconds(d.getMilliseconds() + userTimezoneOffset);\r\n return d.toISOString();\r\n};\r\n\r\n//TODO: REPLACE with toISOStringUnspecified usage or similar\r\nexport const subTimezoneOffset = (date?: string) => {\r\n const d = date ? toDate(date) : new Date();\r\n const userTimezoneOffset = d.getTimezoneOffset() * 60000;\r\n d.setMilliseconds(d.getMilliseconds() - userTimezoneOffset);\r\n return d.toISOString();\r\n};\r\n\r\n//Overloads to reduce undefined checks when date is defined\r\nexport function toISOStringUnspecified(date: string | Date | moment.Moment): string;\r\nexport function toISOStringUnspecified(date: string | Date | moment.Moment | undefined): string | undefined;\r\nexport function toISOStringUnspecified(date: string | Date | moment.Moment | undefined) {\r\n if (!date) return date;\r\n\r\n if (typeof date == \"string\" || date instanceof Date)\r\n return moment(date).format(SERVER_UNSPESIFIED_FORMAT);\r\n\r\n return date.format(SERVER_UNSPESIFIED_FORMAT);\r\n}\r\n\r\ntype Units =\r\n | \"milliseconds\"\r\n | \"seconds\"\r\n | \"minutes\"\r\n | \"days\"\r\n | \"months\"\r\n | \"years\";\r\n\r\nexport const dateSubtract = (\r\n date: string,\r\n count: number,\r\n unit: Units = \"milliseconds\"\r\n) => {\r\n const newMomentDate = moment(date).subtract(count, unit);\r\n return newMomentDate.toISOString();\r\n};\r\n\r\nexport function isDateOnly(date: string): date is DateOnly {\r\n const regex = /^[0-9]{4}[-][0-9]{2}[-][0-9]{2}$/g;\r\n return regex.test(date);\r\n}\r\nexport function toDateOnly (date: string | Date): DateOnly\r\nexport function toDateOnly (date: string | Date | undefined): DateOnly | undefined\r\nexport function toDateOnly (date: string | Date | undefined): DateOnly | undefined {\r\n if (!date)\r\n return undefined;\r\n return splitDateAndTime(date)[0];\r\n}\r\n\r\nexport function isTimeOnly (date: string): date is TimeOnly {\r\n const regex = /^(1.)?[0-9]{2}[:][0-9]{2}[:][0-9]{2}$/g;\r\n return regex.test(date);\r\n}\r\nexport function toTimeOnly (date: string | Date): TimeOnly\r\nexport function toTimeOnly (date: string | Date | undefined): TimeOnly | undefined\r\nexport function toTimeOnly (date: string | Date | undefined): TimeOnly | undefined {\r\n if (!date)\r\n return undefined;\r\n return splitDateAndTime(date)[1];\r\n}\r\n\r\nexport const splitDateAndTime = (date: string | Date): [DateOnly, TimeOnly] => {\r\n const dateMoment = moment(date);\r\n return [dateMoment.format(moment.HTML5_FMT.DATE), dateMoment.format(moment.HTML5_FMT.TIME_SECONDS)];\r\n}\r\n\r\nexport const joinDateAndTime = (dateOnly: DateOnly, timeOnly?: TimeOnly): string => {\r\n const dateMoment = moment(dateOnly);\r\n if (timeOnly) {\r\n const timeMoment = moment(timeOnly, moment.HTML5_FMT.TIME_SECONDS);\r\n dateMoment.set(\"hour\", timeMoment.hour());\r\n dateMoment.set(\"minute\", timeMoment.minute());\r\n dateMoment.set(\"second\", timeMoment.second());\r\n }\r\n return toISOStringUnspecified(dateMoment);\r\n}\r\n\r\nexport const joinDateAndTimeUTC = (dateOnly: DateOnly, timeOnly?: TimeOnly): string => {\r\n const dateMoment = moment(dateOnly);\r\n dateMoment.utc(true);\r\n if (timeOnly) {\r\n const timeMoment = moment(timeOnly, moment.HTML5_FMT.TIME_SECONDS);\r\n dateMoment.set(\"hour\", timeMoment.hour());\r\n dateMoment.set(\"minute\", timeMoment.minute());\r\n dateMoment.set(\"second\", timeMoment.second());\r\n }\r\n return dateMoment.toISOString();\r\n}\r\n\r\n\r\n//Adjusts local(browser) date to time zone date (still in local(browser) timezone)\r\nexport const toTimeZoneInfo = (date: Date, timeZoneInfo: ZoneInfo) => {\r\n if (!timeZoneInfo.tzdbIds.length) {\r\n console.log(`No time zone tzdbIds for timeZone ${timeZoneInfo.windowsId}`, timeZoneInfo);\r\n return date;\r\n }\r\n return toTimeZone(date, timeZoneInfo.tzdbIds[0]);\r\n}\r\n\r\n//Adjusts local(browser) date to time zone date (still in local(browser) timezone)\r\nexport const toTimeZone = (date: Date, timeZone: string) => {\r\n const locale = \"en-US\";\r\n return toDate(date.toLocaleString(locale, {\r\n timeZone: timeZone,\r\n hour12: false\r\n }), \"MM/DD/YYYY, HH:mm:ss\", locale);\r\n}\r\n\r\nexport const formatDateToUTC = (dateString: string) => {\r\n const date = toISOStringUnspecified(dateString);\r\n return `${date}Z`;\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport LinesEllipsis from \"react-lines-ellipsis\";\r\nimport classNames from \"classnames\";\r\nimport { VenuesClient, VenueModel, BookingMethod, VenueHeadquarterDataViewModel, RatingClient, IAverageRatingModel } from \"Services/API/API\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport { Modal, ModalBody, ModalHeader } from \"Components/ReactstrapSlim\";\r\nimport LsLoading from \"Components/LsLoading\";\r\nimport { RatingBadge } from \"Components/Rating\";\r\nimport * as Icons from \"Components/Icons\";\r\nimport { HealthAndSafetyFullBadge } from \"Components/HealthAndSafetyBadge\";\r\nimport { ImageSwiper } from \"Components/ImageSwiper\";\r\nimport { InstantBookBadge } from \"Components/InstantBookBadge\";\r\nimport { DesignContextProvider } from \"Components/DesignContext\";\r\nimport ReservationCalendar from \"./ReservationCalendar\";\r\nimport VenueCustomCta from \"./VenueCustomCta\";\r\nimport classes from \"./styles.module.scss\";\r\n\r\ninterface VenueCalendarModalProps {\r\n isOpen: boolean,\r\n venueId: Guid,\r\n /** yyyy-MM-DD */\r\n selectedDate?: string,\r\n container?: HTMLElement | string,\r\n toggle: () => void,\r\n refreshUpcomingReservationList?: () => void\r\n}\r\n\r\nexport const VenueCalendarModal: React.FC = ({ isOpen, venueId, selectedDate, container, toggle, refreshUpcomingReservationList }) => {\r\n const venuesClient = useApiClient(VenuesClient);\r\n const ratingClient = useApiClient(RatingClient);\r\n const [[venue, headquarterData, healthAndSafetyPolicy, rating], setVenueData]\r\n = useState<[\r\n VenueModel | undefined,\r\n VenueHeadquarterDataViewModel | undefined,\r\n string | undefined,\r\n IAverageRatingModel | undefined]>\r\n ([undefined, undefined, undefined, undefined]);\r\n const [clampedDescription, _setClampedDescription] = useState(true);\r\n\r\n const [isHidden, setIsHidden] = useState(false);\r\n\r\n const loadVenueCalendarModel = async (abortSignal?: AbortSignal) => {\r\n try {\r\n const data = await Promise.all([\r\n venuesClient.get(venueId),\r\n venuesClient.getHeadquarterData(venueId).catch(_ => undefined),\r\n venuesClient.healthAndSafetyPolicy(venueId).catch(_ => undefined),\r\n ratingClient.average(venueId, null)\r\n ]);\r\n setVenueData(data);\r\n }\r\n catch {\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n const abortController = new AbortController();\r\n loadVenueCalendarModel(abortController.signal);\r\n return function cancel() {\r\n abortController.abort();\r\n }\r\n }, [venueId]);\r\n\r\n return (\r\n \r\n {!venue\r\n ? \r\n : <>\r\n \r\n {\r\n headquarterData?.customCTA\r\n ? \"Create Reservation\"\r\n : \"Choose a space and time\"\r\n }\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
{venue.name}
\r\n
{venue.address}
\r\n
\r\n {healthAndSafetyPolicy ? : null}\r\n {venue.defaultBookingMethodHourly == BookingMethod.BookItNow && }\r\n \r\n
\r\n
\r\n {clampedDescription\r\n ? ... Learn more} trimRight />\r\n : venue.description\r\n }\r\n\r\n
\r\n
\r\n
\r\n \"venue\r\n \r\n
\r\n
\r\n {\r\n headquarterData?.customCTA\r\n ? \r\n : \r\n }\r\n
\r\n }\r\n
\r\n
)\r\n}","import React, { useState } from \"react\";\r\nimport * as Icons from \"Components/Icons\";\r\nimport { UncontrolledTooltip } from \"Components/ReactstrapSlim\";\r\nimport uniqueId from \"lodash/uniqueId\";\r\n\r\nexport const HealthAndSafetyBadge: React.FC = () => {\r\n const [id] = useState(() => uniqueId(\"has-\"));\r\n\r\n return
\r\n \r\n \r\n This location has published their health and safety policy.\r\n \r\n
\r\n}\r\n\r\nexport const HealthAndSafetyFullBadge: React.FC = () => {\r\n const [id] = useState(() => uniqueId(\"has-\"));\r\n\r\n return
\r\n \r\n Health & Safety\r\n \r\n This location has published their health and safety policy.\r\n \r\n
\r\n}","import moment from \"moment\";\r\nimport { HOURS_0_VALUE, addTimezoneOffset } from \"./utils\";\r\n\r\nconst DEFAULT_DATE_FORMAT = \"yyyy-MM-DD\"\r\n\r\nexport const formatStringDate = (date: string, format = DEFAULT_DATE_FORMAT, useUtc = false, fixMidnightEndDate = false) => {\r\n let momentDate = moment(date);\r\n if (fixMidnightEndDate && date.indexOf(HOURS_0_VALUE) != -1) {\r\n momentDate = momentDate.add(-1, \"millisecond\");\r\n }\r\n if(useUtc)\r\n momentDate.utc();\r\n const formattedDate = momentDate.format(format);\r\n return formattedDate;\r\n}\r\n\r\nexport const formatMilliseconds = (milliseconds: number, format = DEFAULT_DATE_FORMAT) => {\r\n const stringTime = new Date(milliseconds).toISOString();\r\n const utcStringTime = addTimezoneOffset(stringTime);\r\n const formattedTime = formatStringDate(utcStringTime, format);\r\n return formattedTime;\r\n}","import React, { HTMLAttributes, forwardRef } from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\ninterface LongShortLabelProps extends HTMLAttributes {\r\n long: string;\r\n short: string;\r\n}\r\nconst LongShortLabel = forwardRef(({ long, short, className, ...rest }, ref) =>\r\n
\r\n
{short}
\r\n
{long}
\r\n
);\r\n\r\nexport default LongShortLabel;","import React, { useEffect, useState } from \"react\";\r\nimport { ReservationCalendarWorkspaceModel, VenueWorkspaceModel } from \"Services/API/API\";\r\nimport LongShortLabel from \"Components/LongShortLabel\";\r\n\r\nfunction getShortenString(str?: string) {\r\n return str?.match(/(?:\\b(?!\\d)\\w(?=[a-z]*\\b))|(?:\\b\\w+)/gi)\r\n ?.map(x => x.toUpperCase())\r\n .join(\"\");\r\n}\r\n\r\nfunction getName(workspace: VenueWorkspaceModel, shorten?: boolean, duplicatedNames?: string[]) {\r\n const name = `${workspace.spaceTypeFormatted} for ${workspace.capacity}`;\r\n return duplicatedNames?.includes(name)\r\n ? name + ` - ${shorten ? getShortenString(workspace.name) : workspace.name}`\r\n : name;\r\n}\r\n\r\nexport function useDuplicatedNames(workspaces: ReservationCalendarWorkspaceModel[]) {\r\n const [duplicatedNames, setDuplicatedNames] = useState([]);\r\n useEffect(() => {\r\n const knownNames: string[] = [];\r\n const duplicatedNames: string[] = [];\r\n workspaces.forEach(w => {\r\n const name = getName(w.workspace);\r\n if (knownNames.includes(name)) {\r\n duplicatedNames.push(name);\r\n }\r\n else {\r\n knownNames.push(name);\r\n }\r\n });\r\n\r\n setDuplicatedNames(duplicatedNames);\r\n }, [workspaces]);\r\n return duplicatedNames;\r\n}\r\n\r\ninterface WorkspaceSelectorItemProps {\r\n workspace: VenueWorkspaceModel;\r\n duplicatedNames: string[];\r\n}\r\n\r\nconst WorkspaceSelectorItem: React.FC = ({ workspace, duplicatedNames }) => {\r\n return (
\r\n \r\n
{workspace.pricesFormatted}
\r\n
)\r\n}\r\n\r\nexport default WorkspaceSelectorItem;","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"rGEYMp3nLWSukMjoYOXP\",\"text\":\"XURDbz2Mhb7nygUZrHIX\",\"picture\":\"mKcKBNZctkNf6gaqnjvv\",\"pin\":\"PdIf7vNKKqoHFcVAmiHq\"};","export function delay(ms: number, signal?: AbortSignal) {\r\n return new Promise((resolve, reject) => {\r\n if (signal != null) {\r\n const abort = () => reject(\"delay received abort signal\");\r\n\r\n if (signal.aborted) {\r\n abort();\r\n }\r\n else {\r\n const timeout = setTimeout(() => {\r\n resolve();\r\n }, ms);\r\n signal.addEventListener(\"abort\", ev => {\r\n clearTimeout(timeout);\r\n abort();\r\n }, { once: true });\r\n }\r\n }\r\n else {\r\n setTimeout(() => {\r\n resolve();\r\n }, ms);\r\n }\r\n });\r\n}\r\nexport default delay;","export interface ReservationCalendarSelectionState {\r\n mouseDown: boolean,\r\n rowId: string | undefined,\r\n startColIndex: number | undefined,\r\n endColIndex: number | undefined,\r\n}\r\n\r\nexport const DefaultSelection: ReservationCalendarSelectionState = {\r\n mouseDown: false,\r\n rowId: undefined,\r\n startColIndex: undefined,\r\n endColIndex: undefined,\r\n}","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"jv_bBDC58TWP1cZOmrcg\",\"modalHidden\":\"XkYsl47Kj4cVEHUSu4uC\",\"venue\":\"wl5MV4GwSfpS3rV0bA_p\",\"gallery\":\"qv5uaIVM_RzEaN7SO_iB\",\"info\":\"ZMGXLPIux6euoiBjAHld\",\"map\":\"ne0_lzpcPjqI2W2Nor2P\",\"mapPin\":\"DQYNCLxKN77H5ipVcjJ4\",\"name\":\"rXH0AcqwrDdAEHyUnh4f\",\"address\":\"Km15gq494zdzFs5PM3rY\",\"badges\":\"kANlHD0wPGHOj5srkkpj\",\"description\":\"jQzbzf2p5RqndCAu04bL\",\"footer\":\"QfU3MuljRkvixZacPJmA\",\"legend\":\"Xnw6ERWBCjkk33TMLasT\",\"cta\":\"x10ckhsLUpmdUt7hE_rC\",\"ctaSubmit\":\"JhKTH8BonBm0b0ZILSV_\",\"ctaCancel\":\"CflS652d6Hf50fCYu4gJ\"};","import React, { useCallback } from \"react\";\r\nimport { Swiper, SwiperSlide, useSwiper } from \"swiper/react\";\r\nimport { Navigation, Virtual } from \"swiper/modules\";\r\nimport classNames from \"classnames\";\r\nimport LsLoading from \"Components/LsLoading\";\r\nimport classes from \"./styles.module.scss\";\r\n\r\n// const classes:any = {};\r\n\r\n//should be unique\r\nconst lazyPreloaderClass = \"imageSwiperLazyPreloaderClass\";\r\n\r\nexport interface ImageSwiperProps {\r\n imageUrls: string[],\r\n className?: string,\r\n inCard?: boolean;\r\n}\r\n\r\nexport const ImageSwiper: React.FC = ({ imageUrls, className, inCard }) => {\r\n return 1}\r\n slidesPerView={1}\r\n simulateTouch\r\n lazyPreloadPrevNext={1}\r\n virtual\r\n lazyPreloaderClass={lazyPreloaderClass}\r\n >\r\n {\r\n imageUrls\r\n .map((imageUrl, index) => \r\n \r\n \r\n )\r\n }\r\n\r\n {\r\n imageUrls.length > 1\r\n ? <>\r\n \r\n \r\n \r\n : null\r\n }\r\n \r\n}\r\n\r\nconst ButtonPrev: React.FC = () => {\r\n const swiper = useSwiper();\r\n const clickHandler = useCallback>(e => {\r\n swiper.slidePrev();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }, []);\r\n return
\r\n}\r\n\r\nconst ButtonNext: React.FC = () => {\r\n const swiper = useSwiper();\r\n const clickHandler = useCallback>(e => {\r\n swiper.slideNext();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }, []);\r\n return
\r\n}\r\n","import moment, { Moment } from \"moment\";\r\n\r\nconst DEFAULT_FORMAT = \"yyyy-MM-DD\";\r\n\r\nconst localMomentDate = (source: Moment, format = DEFAULT_FORMAT): Moment => {\r\n const result = moment(source);\r\n result.toISOString = () => result.format(format);\r\n return result;\r\n}\r\n\r\nexport default localMomentDate;","import classNames from \"classnames\";\r\nimport React, { useCallback, forwardRef, PropsWithChildren } from \"react\";\r\nimport DatePicker, { ReactDatePickerProps } from \"react-datepicker\";\r\nimport { Controller, FieldPath, FieldPathValue, FieldValues, Control } from \"react-hook-form\";\r\nimport { Input, InputProps } from \"Components/ReactstrapSlim\";\r\nimport * as Icons from \"Components/Icons\";\r\nimport { createPortal } from \"react-dom\";\r\nimport useMediaBreakpointDown from \"Hooks/useMediaBreakpointDown\";\r\nimport moment from \"moment\";\r\nimport { toDate, toISOStringUnspecified } from \"Utils/date\";\r\n\r\ninterface DatePickerCustomInputProps extends InputProps {\r\n errorMessage?: string;\r\n useFloatLabel?: boolean;\r\n wrapperClasses: string;\r\n withoutIcon?: boolean;\r\n}\r\n\r\nconst DatePickerCustomInput = forwardRef(({ name, errorMessage, value, useFloatLabel, withoutIcon, onClick, onChange, onKeyDown, placeholder, wrapperClasses, bsSize, ...rest }, ref) => {\r\n const hasInvalidMessage = !!errorMessage;\r\n return
\r\n \r\n {useFloatLabel && !hasInvalidMessage && }\r\n {!withoutIcon &&
\r\n \r\n
}\r\n {useFloatLabel && hasInvalidMessage &&
\r\n {errorMessage}\r\n
}\r\n
\r\n});\r\n\r\nexport interface DatePickerInputProps extends ReactDatePickerProps {\r\n bsSize?: InputProps[\"bsSize\"];\r\n elementToAttach?: HTMLElement | undefined;\r\n errorMessage?: string;\r\n isInvalid?: boolean;\r\n name: string;\r\n useFloatLabel?: boolean;\r\n withoutIcon?: boolean;\r\n}\r\nexport const DatePickerInput: React.FC = ({ bsSize, elementToAttach, errorMessage, isInvalid, name, useFloatLabel, withoutIcon, className, onCalendarOpen, onCalendarClose, onFocus, onBlur, popperClassName, ...rest }) => {\r\n const withPortal = useMediaBreakpointDown(\"sm\");\r\n const wrapperClasses = classNames(\r\n \"rfl\",\r\n \"rfl-datepicker\",\r\n {\r\n \"rfl-datepicker-nofl\": !useFloatLabel,\r\n \"rfl--invalid\": isInvalid,\r\n \"rfl--hasvalue\": !!rest.selected\r\n },\r\n bsSize ? `rfl-${bsSize}` : null,\r\n className);\r\n\r\n const onFocusWrapper = (e: React.FocusEvent) => {\r\n if (withPortal)\r\n e.target.readOnly = true;\r\n if (onFocus)\r\n onFocus(e)\r\n }\r\n\r\n const onBlurWrapper = (e: React.FocusEvent) => {\r\n if (withPortal)\r\n e.target.readOnly = false;\r\n if (onBlur)\r\n onBlur(e)\r\n }\r\n\r\n const handleTouchStart = (e) => e.stopPropagation();\r\n const onCalendarOpenWrapped = () => {\r\n if (withPortal) {\r\n document.addEventListener(\"touchstart\", handleTouchStart, true);\r\n }\r\n if (onCalendarOpen)\r\n onCalendarOpen()\r\n };\r\n const onCalendarCloseWrapped = () => {\r\n if (withPortal) {\r\n document.removeEventListener(\"touchstart\", handleTouchStart, true);\r\n }\r\n if (onCalendarClose)\r\n onCalendarClose();\r\n }\r\n\r\n const DatePickerPortal = useCallback(({ children }) => {\r\n return elementToAttach ? createPortal(children, elementToAttach) : null;\r\n }, [elementToAttach]);\r\n\r\n return (}\r\n formatWeekDay={nameOfDay => nameOfDay.substring(0, 1)}\r\n withPortal={withPortal}\r\n portalId={withPortal ? \"datepicker-portal\" : undefined}\r\n onCalendarOpen={onCalendarOpenWrapped}\r\n onCalendarClose={onCalendarCloseWrapped}\r\n onFocus={onFocusWrapper}\r\n onBlur={onBlurWrapper}\r\n />)\r\n}\r\n\r\nexport interface DatePickerInputControlledProps extends Omit {\r\n control: Control,\r\n name: FieldPath,\r\n doNotAdjustToLocalTimeZone?: boolean\r\n}\r\n\r\nexport const DatePickerInputControlled = ({ control, name, ...rest }: PropsWithChildren>) => {\r\n return ( {\r\n if (moment.isMoment(field.value)) {\r\n console.error(`moment is deprecated for form fields (${name})`);\r\n }\r\n return field.onChange(value as FieldPathValue)}\r\n />\r\n }\r\n }\r\n />)\r\n}\r\n\r\nconst parseToDate = (ISODate: string, doNotAdjustToLocalTimeZone = false): Date => {\r\n const date = toDate(ISODate); \r\n if(doNotAdjustToLocalTimeZone) {\r\n const userTimezoneOffset = date.getTimezoneOffset() * 60000;\r\n date.setMilliseconds(date.getMilliseconds() + userTimezoneOffset)\r\n }\r\n\r\n return date;\r\n}\r\n\r\nconst parseToISO = (date: Date, doNotAdjustToLocalTimeZone = false): string => {\r\n if(doNotAdjustToLocalTimeZone) {\r\n const userTimezoneOffset = date.getTimezoneOffset() * 60000;\r\n date.setMilliseconds(date.getMilliseconds() - userTimezoneOffset)\r\n }\r\n\r\n return date.toISOString();\r\n}\r\n\r\nexport const DatePickerInputControlledForString = ({ control, name, doNotAdjustToLocalTimeZone, ...rest }: PropsWithChildren>) => {\r\n return ( {\r\n return (\r\n {\r\n const d = Array.isArray(date) ? date[0] : date;\r\n field.onChange(d && parseToISO(d, doNotAdjustToLocalTimeZone))\r\n }}\r\n />\r\n )\r\n }}\r\n />)\r\n}\r\n\r\n//TODO: Make it the only DatePickerInputControlled\r\nexport const DatePickerInputControlledForLocalString = ({ control, name, doNotAdjustToLocalTimeZone, ...rest }: PropsWithChildren>) => {\r\n return ( {\r\n return (\r\n {\r\n const d = Array.isArray(date) ? date[0] : date; \r\n field.onChange(d ? toISOStringUnspecified(d) : d);\r\n }}\r\n />\r\n )\r\n }}\r\n />)\r\n}\r\n\r\n","export * from \"./AvatarCircle\";\r\nexport { default as AvatarCircleWithCache } from \"./AvatarCircleWithCache\";\r\n\r\nexport const getAvatarColorIndex = (str: string): number => {\r\n const code = Array.from(str).reduce(\r\n (s, c) => (Math.imul(31, s) + c.charCodeAt(0)) | 0,\r\n 0\r\n );\r\n\r\n return Math.abs(code);\r\n};\r\n","import classNames from \"classnames\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport * as Icons from \"Components/Icons\";\r\nimport { RatingClient } from \"Services/API/API\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport { UncontrolledTooltip } from \"Components/ReactstrapSlim\";\r\nimport uniqueId from \"lodash/uniqueId\";\r\n\r\ninterface RatingProps {\r\n className?: string;\r\n stars: number | undefined;\r\n hideNumber?: boolean;\r\n onClick?: React.MouseEventHandler;\r\n}\r\nexport const Rating: React.FC = function ({ stars, className, hideNumber, onClick }) {\r\n return (\r\n
\r\n {\r\n stars == null\r\n ? <> \r\n : <>\r\n {[...Array(5)].map((x, i) => = Math.round(stars) })} />)}\r\n {/* */}\r\n {!hideNumber && {stars.toFixed(1)}}\r\n \r\n }\r\n
\r\n );\r\n}\r\n\r\ninterface RatingAsyncProps {\r\n className?: string;\r\n venueId: Guid;\r\n workspaceId?: Guid;\r\n lazy?: boolean;\r\n}\r\nexport const RatingAsync: React.FC = function ({ venueId, workspaceId, className }) {\r\n const [stars, setStars] = useState(null);\r\n const ratingClient = useApiClient(RatingClient);\r\n\r\n useEffect(() => {\r\n const abortController = new AbortController();\r\n ratingClient.average(venueId, workspaceId, abortController.signal)\r\n .then(data => setStars(data.average));\r\n return function cleanup() {\r\n abortController.abort();\r\n }\r\n }, [venueId, workspaceId]);\r\n\r\n return stars && stars >= 1\r\n ? \r\n : null;\r\n}\r\n\r\n\r\nexport type RatingBadgeTheme = \"gray\" | \"yellow\" | \"transparent\";\r\n\r\nexport interface RatingBadgeProps {\r\n averageRating: number | undefined;\r\n ratingCount: number | undefined;\r\n theme?: RatingBadgeTheme,\r\n className?: string;\r\n}\r\n\r\nconst RatingBadgeImpl: React.FC = function ({ averageRating, ratingCount, className, theme = \"gray\" }) {\r\n const [id] = useState(() => uniqueId(\"rating-\"));\r\n const [fixedRating] = useState(() => (averageRating ?? 0).toFixed(1));\r\n\r\n return (
\r\n \r\n {fixedRating}\r\n \r\n This location is rated {fixedRating} by {ratingCount && ratingCount > 1 ? `${ratingCount} people` : \"1 person\"}\r\n \r\n
);\r\n}\r\n\r\nexport const RatingBadge: React.FC = props =>\r\n !props.averageRating || props.averageRating < 1\r\n ? null\r\n : ","import { ActivityReservationStatusFilter } from \"Services/API/API\";\r\n\r\nexport const NOT_DELETED_FILTER = ActivityReservationStatusFilter.Active\r\n | ActivityReservationStatusFilter.CancellationPolicy\r\n | ActivityReservationStatusFilter.Completed\r\n | ActivityReservationStatusFilter.Future;","import React, { useState } from \"react\";\r\nimport moment from \"moment\";\r\nimport { VenueModel } from \"Services/API/API\";\r\nimport { Button } from \"Components/ReactstrapSlim\";\r\nimport { useBookItNow } from \"Components/Embedded/BookItNow\";\r\nimport { ReservationCalendarSelectionState } from \"./ReservationCalendarSelection\";\r\nimport { ReservationCalendarLegend } from \"./ReservationCalendarLegend\";\r\nimport { ReservationCalendarBody } from \"./ReservationCalendarBody\";\r\nimport classes from \"../styles.module.scss\";\r\n\r\ninterface ReservationCalendarProps {\r\n venue: VenueModel,\r\n /** yyyy-MM-DD */\r\n selectedDate: string | undefined,\r\n container?: HTMLElement | string,\r\n toggle: () => void,\r\n refreshUpcomingReservationList?: () => void,\r\n setIsHidden(state: boolean): void;\r\n}\r\n\r\nconst ReservationCalendar: React.FC = ({ venue, selectedDate, container, toggle, refreshUpcomingReservationList, setIsHidden }) => {\r\n const [calendarSelection, setCalendarSelection] = useState(undefined);\r\n const [calendarDate, setCalendarDate] = useState(undefined);\r\n\r\n const bin = useBookItNow();\r\n\r\n const onBINclosed = (isSuccess: boolean) => {\r\n if (!isSuccess)\r\n setIsHidden(false);\r\n }\r\n\r\n const onReservationCreated = () => {\r\n if(refreshUpcomingReservationList)\r\n refreshUpcomingReservationList();\r\n toggle();\r\n }\r\n\r\n //TODO: Implement new BIN direct usage\r\n //const openBIN = () => {\r\n // if (calendarSelection?.startColIndex !== undefined && calendarSelection?.endColIndex !== undefined && calendarDate && calendarSelection.rowId) {\r\n // const startMoment = moment({ year: calendarDate.year(), month: calendarDate.month(), date: calendarDate.date(), hour: calendarSelection.startColIndex, minute: 0, second: 0, millisecond: 0 });\r\n // const durationMinutes = (calendarSelection.endColIndex - calendarSelection.startColIndex + 1) * 60;\r\n // const [startDate, startTime] = splitDateAndTime(startMoment.toDate())\r\n // bin.openNewBin({\r\n // type: \"NEW\",\r\n // venueId: venue.id,\r\n // workspaceId: calendarSelection.rowId,\r\n // startDate: startDate,\r\n // startTime: startTime,\r\n // durationMinutes: durationMinutes,\r\n // //daysAhead: 7,\r\n // onClose: onBINclosed,\r\n // //successCallBack: onReservationCreated,\r\n // //daysAhead: LSHelper.Constants.reservationSearchDaysAhead(),\r\n // //reservationSourcePage: LSHelper.Calendar.ReservationSourceNames.XPP\r\n // });\r\n\r\n // setIsHidden(true);\r\n // }\r\n //}\r\n\r\n const openBIN = () => {\r\n if (calendarSelection?.startColIndex !== undefined && calendarSelection?.endColIndex !== undefined && calendarDate) {\r\n const startTime = moment({ year: calendarDate.year(), month: calendarDate.month(), date: calendarDate.date(), hour: calendarSelection.startColIndex, minute: 0, second: 0, millisecond: 0 });\r\n const endTime = moment({ year: calendarDate.year(), month: calendarDate.month(), date: calendarDate.date(), hour: calendarSelection.endColIndex + 1, minute: 0, second: 0, millisecond: 0 });\r\n\r\n const ev: LSHelper.Calendar.EditReservationParams[\"ev\"] = {\r\n id: \"\",\r\n workspace_id: calendarSelection.rowId,\r\n venue_id: venue.id,\r\n start_date: startTime.toDate(),\r\n end_date: endTime.toDate()\r\n };\r\n\r\n\r\n bin.openBookItNow({\r\n ev: ev,\r\n //successCallBack: onReservationCreated,\r\n //daysAhead: LSHelper.Constants.reservationSearchDaysAhead(),\r\n //reservationSourcePage: LSHelper.Calendar.ReservationSourceNames.XPP\r\n }, onReservationCreated, onBINclosed);\r\n\r\n setIsHidden(true);\r\n }\r\n }\r\n\r\n return <>\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n}\r\n\r\nexport default ReservationCalendar;","// extracted by mini-css-extract-plugin\nexport default {\"imageSwiper\":\"Jzq2RUtR5exSFQklJbpV\",\"cardImageSwiper\":\"ZiuAat8419h6caMPiXIW\",\"image\":\"k215yDBg_lKUGnUyDs9Z\"};","import React from \"react\";\r\nimport { UserPictureCache, useMemberPicture } from \"Hooks\";\r\nimport { AvatarCircle, AvatarCircleProps } from \"./AvatarCircle\";\r\nimport { getAvatarColorIndex } from \".\";\r\n\r\ntype Optional = Pick, K> & Omit;\r\n\r\ninterface AvatarCircleWithCacheProps extends Optional {\r\n cache: UserPictureCache;\r\n userId: Guid;\r\n}\r\n\r\nconst AvatarCircleWithCache: React.FC = ({\r\n cache,\r\n userId,\r\n colorIndex,\r\n imageUrl,\r\n ...props\r\n}) => {\r\n const color = getAvatarColorIndex(userId);\r\n const memberPicture = useMemberPicture(cache, userId);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AvatarCircleWithCache;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { DropdownItem, DropdownMenu, DropdownToggle, UncontrolledDropdown, UncontrolledDropdownProps } from \"Components/ReactstrapSlim\";\r\nimport { ReservationCalendarWorkspaceModel } from \"Services/API/API\";\r\nimport WorkspaceSelectorItem, { useDuplicatedNames } from \"./WorkspaceSelectorItem\";\r\n\r\ninterface WorkspaceSelectorProps extends Omit {\r\n workspaces: ReservationCalendarWorkspaceModel[];\r\n value: Guid | undefined;\r\n onChange: (workspace: ReservationCalendarWorkspaceModel) => void;\r\n}\r\n\r\nconst WorkspaceSelector: React.FC = ({ workspaces, value, onChange, ...rest }) => {\r\n const duplicatedNames = useDuplicatedNames(workspaces);\r\n\r\n const selectedWorkspace = value ? workspaces.find(x => x.workspace.id == value) : undefined;\r\n\r\n return (\r\n \r\n {selectedWorkspace\r\n ? \r\n :
{workspaces.length ? \"Choose a space\" : \"No spaces avaialable for this date\"}
}\r\n
\r\n \r\n {\r\n workspaces.map(workspace => onChange(workspace)} className={classNames(\"rcm-workspaces-dropdown\", { \"rcm-workspaces-dropdown--selected\": value == workspace.workspace.id })}>\r\n \r\n )\r\n }\r\n \r\n
)\r\n}\r\n\r\nexport default WorkspaceSelector;","import { IMemberPicture, MembersClient } from \"Services/API/API\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport delay from \"Utils/delay\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nexport interface UserPictureCache {\r\n [memberId: Guid]: Promise\r\n}\r\n\r\nlet runningLoop: Promise | undefined;\r\nconst queue: { memberId: Guid, resolve(url: string | undefined): void }[] = [];\r\n\r\nasync function startLoop(membersClient: MembersClient) {\r\n while (queue.length > 0) {\r\n //throttle: give .5s to collect requests\r\n await delay(500);\r\n\r\n const localQueue = [...queue];\r\n queue.length = 0;\r\n\r\n let items: IMemberPicture[] = [];\r\n try {\r\n items = await membersClient.getPictures(localQueue.map(x => x.memberId))\r\n }\r\n catch {\r\n\r\n }\r\n\r\n for (let index = 0; index < localQueue.length; index++) {\r\n const element = localQueue[index];\r\n\r\n element.resolve(items.find(x => x.memberId === element.memberId)?.url);\r\n }\r\n }\r\n}\r\n\r\nfunction queueRequest(membersClient: MembersClient, memberId: Guid): Promise {\r\n const result = new Promise(resolve => {\r\n queue.push({ memberId, resolve });\r\n });\r\n\r\n if (runningLoop == null) {\r\n runningLoop = startLoop(membersClient).then(() => runningLoop = undefined);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function useMemberPicture(cache: UserPictureCache, memberId?: Guid) {\r\n const membersClient = useApiClient(MembersClient);\r\n\r\n const [pictureUrl, setPictureUrl] = useState();\r\n useEffect(() => {\r\n if (memberId) {\r\n const promise = (cache[memberId] ??= queueRequest(membersClient, memberId));\r\n\r\n const abortController = new AbortController();\r\n promise.then(url => { abortController.signal.aborted || setPictureUrl(url); });\r\n\r\n return () => abortController.abort();\r\n }\r\n }, [cache, memberId]);\r\n\r\n return pictureUrl;\r\n}\r\n","import React, { useState } from \"react\";\r\nimport { UncontrolledTooltip } from \"Components/ReactstrapSlim\";\r\nimport uniqueId from \"lodash/uniqueId\";\r\nimport * as Icons from \"Components/Icons\";\r\n\r\nexport const InstantBookBadge: React.FC = () => {\r\n const [id] = useState(() => uniqueId(\"instant-\"));\r\n return
\r\n \r\n \r\n Book this space instantly!\r\n \r\n
\r\n}","import { VenueHeadquarterDataViewModel } from \"Services/API/API\";\r\nimport React, { CSSProperties, useMemo } from \"react\";\r\nimport classes from \"./styles.module.scss\";\r\nimport { MapPinHQ } from \"Components/Icons\";\r\n\r\ninterface VenueCustomCtaProps {\r\n headquarterData: VenueHeadquarterDataViewModel;\r\n}\r\n\r\nconst VenueCustomCta: React.FC = ({ headquarterData }) => {\r\n\r\n const pinStyle = useMemo(() => {\r\n const pinStyle = {} as CSSProperties;\r\n\r\n if (headquarterData.hqPinColor) {\r\n pinStyle[\"--pin-color\"] = headquarterData.hqPinColor;\r\n }\r\n if (headquarterData.hqPinColorHover) {\r\n pinStyle[\"--pin-color-hover\"] = headquarterData.hqPinColorHover;\r\n }\r\n\r\n return pinStyle;\r\n }, [headquarterData]);\r\n\r\n return
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Book at this {headquarterData.enterpriseAccountName} office through your
company's internal booking software.\r\n
\r\n {\r\n headquarterData.customCTA\r\n ? \r\n {headquarterData.customCTA.text}\r\n \r\n : null\r\n }\r\n\r\n
;\r\n}\r\n\r\nexport default VenueCustomCta;","import React, { useEffect, useState, useRef, useLayoutEffect, useCallback, useMemo } from \"react\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport classNames from \"classnames\";\r\nimport moment from \"moment\";\r\n//import mapboxgl from \"mapbox-gl\";\r\nimport { TimeState, VenueAvailabilityClient, TimeChunkSize, ReservationCalendarWorkspaceModel, ReservationCalendarTimeChunkStateModel, ZoneInfo } from \"Services/API/API\";\r\nimport { useApiClient } from \"Services/API/useApiClient\";\r\nimport LsLoading, { useLsLoading } from \"Components/LsLoading\";\r\nimport * as Icons from \"Components/Icons\";\r\nimport { DatePickerInput } from \"Components/Inputs\";\r\nimport { FavoriteWidget } from \"Components/Favorite/FavoriteWidget\";\r\nimport WorkspaceSelector from \"Components/WorkspaceSelector/WorkspaceSelector\";\r\nimport WorkspaceSelectorItem, { useDuplicatedNames } from \"Components/WorkspaceSelector/WorkspaceSelectorItem\";\r\nimport { Color } from \"Components/Favorite/FavoriteButton\";\r\nimport useMediaBreakpointDown from \"Hooks/useMediaBreakpointDown\";\r\nimport { toTimeZoneInfo } from \"Utils/date\";\r\nimport localMomentDate from \"Utils/moment/localMomentDate\";\r\n//import { MarkerIcon, ControlPosition, useMapbox } from \"Utils/useMapbox\";\r\nimport { DefaultSelection, ReservationCalendarSelectionState } from \"./ReservationCalendarSelection\";\r\n\r\nconst COLUMN_COUNT = 24;\r\nconst COLLAPSED_ROWS_COUNT = 4;\r\n\r\ninterface ReservationCalendarScrollState {\r\n canScrollLeft: boolean,\r\n canScrollRight: boolean,\r\n offset: number\r\n}\r\n\r\ninterface ReservationCalendarBodyProps {\r\n venueId: Guid,\r\n /** Venue local date in yyyy-MM-DD format */\r\n date?: string,\r\n timeZone?: ZoneInfo,\r\n fixedWidth?: number,\r\n cellSize?: number,\r\n cellPadding?: number,\r\n initialDisplayColumn?: number,\r\n className?: string,\r\n container?: HTMLElement | string,\r\n onSelectionChanged?: (selection: ReservationCalendarSelectionState) => void\r\n onDateChanged?: (date: moment.Moment) => void\r\n}\r\n\r\nexport const ReservationCalendarBody: React.FC = ({ venueId, date, timeZone, className, container, onSelectionChanged, onDateChanged, fixedWidth = 285, cellSize = 64, cellPadding = 12, initialDisplayColumn = 7 }) => {\r\n const isMobile = useMediaBreakpointDown(\"sm\");\r\n const venueAvailabilityClient = useApiClient(VenueAvailabilityClient);\r\n const [wrapperClass, isLoading, setIsLoading] = useLsLoading(true);\r\n const [selectedDate, setSelectedDate] = useState(() => {\r\n console.log(date);\r\n\r\n if (date) {\r\n if (LiquidSpaceConfig.DEBUG && /^\\d{4}-\\d{2}-\\d{2}$/.test(date) !== true) {\r\n console.error(`Bad date format: ${date}`)\r\n }\r\n return moment(date).startOf(\"day\");\r\n }\r\n else {\r\n const currentBrowserTime = new Date();\r\n const currentVenueTime = timeZone\r\n ? toTimeZoneInfo(currentBrowserTime, timeZone)\r\n //fallback\r\n : currentBrowserTime;\r\n\r\n return moment(currentVenueTime).startOf(\"day\");\r\n }\r\n })\r\n const [workspaces, setWorkspaces] = useState([]);\r\n const [collapsed, setCollapsed] = useState(true);\r\n const [selection, setSelection] = useState(DefaultSelection);\r\n\r\n const scrollableRef = useRef();\r\n const scrollableInnerRef = useRef(null);\r\n const [scrollState, setScrollState] = useState({\r\n canScrollLeft: false,\r\n canScrollRight: false,\r\n offset: 0\r\n });\r\n\r\n const [setInViewElement, isCalendarVisible] = useInView();\r\n const scrollableRefSetter = useCallback((node: HTMLDivElement | null | undefined) => {\r\n setInViewElement(node);\r\n scrollableRef.current = node;\r\n }, []);\r\n\r\n const loadAvailability = async () => {\r\n setIsLoading(true);\r\n setSelection(DefaultSelection);\r\n try {\r\n setWorkspaces(await venueAvailabilityClient.hourlyAvailability(venueId,\r\n localMomentDate(selectedDate).toISOString(),\r\n TimeChunkSize.Min60));\r\n }\r\n catch {\r\n }\r\n setIsLoading(false);\r\n }\r\n\r\n const getColClassNames = (row: ReservationCalendarWorkspaceModel, col: ReservationCalendarTimeChunkStateModel, index: number) => {\r\n const selectionClass = getSelectionClass(row, index);\r\n if (selectionClass)\r\n return selectionClass;\r\n\r\n switch (col.state) {\r\n case TimeState.Available:\r\n return \"rc-col-available\";\r\n case TimeState.Booked:\r\n return \"rc-col-booked\";\r\n case TimeState.Own:\r\n return \"rc-col-own\";\r\n case TimeState.Closed:\r\n default:\r\n return \"rc-col-closed\";\r\n }\r\n }\r\n\r\n const getSelectionLeftAndRightIndex = (endColIndexOverride?: number): [number | undefined, number | undefined] => {\r\n const endIndex = endColIndexOverride || selection.endColIndex;\r\n if (selection.startColIndex === undefined || endIndex === undefined)\r\n return [undefined, undefined];\r\n\r\n let leftIndex, rightIndex;\r\n if (selection.startColIndex > endIndex) {\r\n leftIndex = endIndex;\r\n rightIndex = selection.startColIndex;\r\n } else {\r\n leftIndex = selection.startColIndex;\r\n rightIndex = endIndex;\r\n }\r\n return [leftIndex, rightIndex];\r\n }\r\n\r\n const onColMouseDown = (e: React.SyntheticEvent, row: ReservationCalendarWorkspaceModel, col: ReservationCalendarTimeChunkStateModel, index: number, allowDrag = false) => {\r\n if (col.state != TimeState.Available)\r\n return;\r\n\r\n if (allowDrag && selection.rowId == row.workspace.id) {\r\n e.stopPropagation();\r\n\r\n if (selection.startColIndex == index) {\r\n setSelection((currentSelection) => {\r\n return { ...currentSelection, startColIndex: currentSelection.endColIndex, endColIndex: currentSelection.startColIndex, mouseDown: true }\r\n });\r\n window.document.addEventListener(\"mouseup\", onColMouseUp);\r\n return;\r\n }\r\n if (selection.endColIndex == index) {\r\n setSelection((currentSelection) => {\r\n return { ...currentSelection, mouseDown: true }\r\n });\r\n window.document.addEventListener(\"mouseup\", onColMouseUp);\r\n return;\r\n }\r\n }\r\n\r\n setSelection({\r\n mouseDown: true,\r\n rowId: row.workspace.id,\r\n startColIndex: index,\r\n endColIndex: index,\r\n })\r\n\r\n /*window.document.addEventListener('mousemove', onColMouseMove);*/\r\n window.document.addEventListener(\"mouseup\", onColMouseUp);\r\n }\r\n\r\n const onColMouseUp = (e) => {\r\n setSelection((currentSelection) => {\r\n return { ...currentSelection, mouseDown: false };\r\n })\r\n /*window.document.removeEventListener('mousemove', onColMouseMove);*/\r\n window.document.removeEventListener(\"mouseup\", onColMouseUp);\r\n }\r\n\r\n const onColMouseMove = (e, row: ReservationCalendarWorkspaceModel, col: ReservationCalendarTimeChunkStateModel, index: number) => {\r\n e.preventDefault();\r\n if (selection.mouseDown && selection.rowId == row.workspace.id) {\r\n if (col.state != TimeState.Available)\r\n return;\r\n\r\n if (selection.startColIndex === undefined)\r\n return;\r\n\r\n let finalIndex = selection.startColIndex;\r\n\r\n if (selection.startColIndex > index) {\r\n for (let i = selection.startColIndex; i >= index; i--) {\r\n const col = row.timeChunkStates[i];\r\n if (col && col.state == TimeState.Available) {\r\n finalIndex = i;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n for (let i = selection.startColIndex; i <= index; i++) {\r\n const col = row.timeChunkStates[i];\r\n if (col && col.state == TimeState.Available) {\r\n finalIndex = i;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setSelection((currentSelection) => {\r\n return { ...currentSelection, endColIndex: finalIndex };\r\n })\r\n }\r\n }\r\n\r\n const onColTouchStart = (e: React.SyntheticEvent, row: ReservationCalendarWorkspaceModel, col: ReservationCalendarTimeChunkStateModel, index: number, allowDrag = false) => {\r\n if (col.state != TimeState.Available)\r\n return;\r\n\r\n if (allowDrag && selection.rowId == row.workspace.id) {\r\n e.stopPropagation();\r\n\r\n if (selection.startColIndex == index) {\r\n setSelection((currentSelection) => {\r\n return { ...currentSelection, startColIndex: currentSelection.endColIndex, endColIndex: currentSelection.startColIndex, mouseDown: true }\r\n });\r\n window.document.addEventListener(\"touchend\", onColTouchEnd);\r\n return;\r\n }\r\n if (selection.endColIndex == index) {\r\n setSelection((currentSelection) => {\r\n return { ...currentSelection, mouseDown: true }\r\n });\r\n window.document.addEventListener(\"touchend\", onColTouchEnd);\r\n return;\r\n }\r\n }\r\n\r\n setSelection({\r\n mouseDown: true,\r\n rowId: row.workspace.id,\r\n startColIndex: index,\r\n endColIndex: index,\r\n })\r\n\r\n window.document.addEventListener(\"touchend\", onColTouchEnd);\r\n }\r\n\r\n\r\n const onColTouchEnd = (e) => {\r\n setSelection((currentSelection) => {\r\n return { ...currentSelection, mouseDown: false };\r\n })\r\n window.document.removeEventListener(\"touchend\", onColTouchEnd);\r\n }\r\n const getColInfoById = (rowId: string, colIndex: number): [ReservationCalendarWorkspaceModel, ReservationCalendarTimeChunkStateModel] | [undefined, undefined] => {\r\n if (workspaces && workspaces) {\r\n const row = workspaces.find(r => r.workspace.id == rowId);\r\n if (row && row.timeChunkStates) {\r\n const col = row.timeChunkStates[colIndex];\r\n if (col) {\r\n return [row, col];\r\n }\r\n }\r\n }\r\n return [undefined, undefined];\r\n\r\n }\r\n\r\n const onColTouchMove = (e: React.TouchEvent) => {\r\n\r\n console.log(\"onColTouchMove\", e, e.touches);\r\n if (e.touches.length > 0) {\r\n const touches = e.touches[0];\r\n const element = document.elementFromPoint(touches.clientX, touches.clientY) as HTMLElement;\r\n if (element) {\r\n console.log(\"element\", element);\r\n const rowId = element.dataset[\"rowid\"];\r\n const colIndexString = element.dataset[\"colindex\"];\r\n console.log(\"rowId && colIndexString\", rowId, colIndexString);\r\n if (rowId && colIndexString) {\r\n const index = Number.parseInt(colIndexString);\r\n const [row, col] = getColInfoById(rowId, index);\r\n console.log(\"row && col\", row, col);\r\n if (row && col) {\r\n if (selection.mouseDown && selection.rowId == row.workspace.id) {\r\n if (col.state != TimeState.Available)\r\n return;\r\n\r\n if (selection.startColIndex === undefined)\r\n return;\r\n\r\n let finalIndex = selection.startColIndex;\r\n\r\n if (selection.startColIndex > index) {\r\n for (let i = selection.startColIndex; i >= index; i--) {\r\n const col = row.timeChunkStates[i];\r\n if (col && col.state == TimeState.Available) {\r\n finalIndex = i;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n for (let i = selection.startColIndex; i <= index; i++) {\r\n const col = row.timeChunkStates[i];\r\n if (col && col.state == TimeState.Available) {\r\n finalIndex = i;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setSelection((currentSelection) => {\r\n return { ...currentSelection, endColIndex: finalIndex };\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const getSelectionClass = (row: ReservationCalendarWorkspaceModel, index: number): string | undefined => {\r\n if (row.workspace.id == selection.rowId) {\r\n const [leftIndex, rightIndex] = getSelectionLeftAndRightIndex();\r\n if (leftIndex !== undefined && rightIndex !== undefined) {\r\n if (index >= leftIndex && index <= rightIndex) {\r\n let result = \"rc-col-selected\";\r\n\r\n if (index == leftIndex)\r\n result += \" rc-col-selected-left\";\r\n if (index == rightIndex)\r\n result += \" rc-col-selected-right\";\r\n\r\n return result;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n const shouldRenderSelectionDrag = (row: ReservationCalendarWorkspaceModel, index: number, dragPosition: \"left\" | \"right\"): boolean => {\r\n if (row.workspace.id == selection.rowId) {\r\n const [leftIndex, rightIndex] = getSelectionLeftAndRightIndex();\r\n if (leftIndex !== undefined && rightIndex !== undefined) {\r\n if (dragPosition == \"left\" && index == leftIndex)\r\n return true;\r\n if (dragPosition == \"right\" && index == rightIndex)\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n const scrollCalendar = (marginIncrement: number) => {\r\n if (scrollableRef.current && scrollableInnerRef.current) {\r\n const newCalendarScroll = scrollState.offset + marginIncrement;\r\n const scrollerWrapperWidth = scrollableRef.current.offsetWidth;\r\n const scrollerInnerWidth = scrollableInnerRef.current.offsetWidth;\r\n if (scrollerInnerWidth > scrollerWrapperWidth) {\r\n const minMargin = scrollerWrapperWidth - scrollerInnerWidth;\r\n if (newCalendarScroll >= 0) {\r\n setScrollState({\r\n canScrollLeft: false,\r\n canScrollRight: true,\r\n offset: 0,\r\n });\r\n }\r\n else if (newCalendarScroll <= minMargin) {\r\n setScrollState({\r\n canScrollLeft: true,\r\n canScrollRight: false,\r\n offset: minMargin\r\n });\r\n }\r\n else {\r\n setScrollState({\r\n canScrollLeft: true,\r\n canScrollRight: true,\r\n offset: newCalendarScroll\r\n });\r\n }\r\n } else {\r\n setScrollState({\r\n canScrollLeft: false,\r\n canScrollRight: false,\r\n offset: 0\r\n });\r\n }\r\n }\r\n }\r\n\r\n const displayRows = useMemo(() => {\r\n const displayRows = collapsed\r\n ? workspaces.slice(0, COLLAPSED_ROWS_COUNT)\r\n : workspaces;\r\n\r\n return displayRows;\r\n }, [workspaces, collapsed]);\r\n\r\n const duplicatedNames = useDuplicatedNames(displayRows);\r\n\r\n useLayoutEffect(() => {\r\n if (isCalendarVisible) {\r\n scrollCalendar(-1 * initialDisplayColumn * cellSize - scrollState.offset);\r\n }\r\n }, [isCalendarVisible])\r\n\r\n\r\n useEffect(() => {\r\n loadAvailability();\r\n if (onDateChanged)\r\n onDateChanged(selectedDate);\r\n }, [venueId, selectedDate])\r\n\r\n useEffect(() => {\r\n if (onSelectionChanged && !selection.mouseDown) {\r\n onSelectionChanged(selection);\r\n }\r\n }, [selection]);\r\n\r\n const renderDatePicker = () => setSelectedDate(moment(value ? Array.isArray(value) ? value[0] : value : new Date()))}\r\n minDate={new Date()}\r\n dateFormat=\"E, MMMM do\"\r\n />\r\n\r\n const onWorkspaceSelected = (workspaceRow: ReservationCalendarWorkspaceModel) => {\r\n const firstOpenSlotIndex = workspaceRow.timeChunkStates.findIndex(c => c.state == TimeState.Available);\r\n if (firstOpenSlotIndex > -1) {\r\n setSelection({\r\n mouseDown: false,\r\n rowId: workspaceRow.workspace.id,\r\n startColIndex: firstOpenSlotIndex,\r\n endColIndex: firstOpenSlotIndex,\r\n });\r\n }\r\n else {\r\n setSelection(DefaultSelection);\r\n }\r\n }\r\n\r\n return (
\r\n {isLoading || !workspaces\r\n ? \r\n : isMobile\r\n ?
\r\n
\r\n {renderDatePicker()}\r\n
\r\n
\r\n r.timeChunkStates.find(c => c.state == TimeState.Available) != undefined) || []} onChange={onWorkspaceSelected} value={selection.rowId} />\r\n
\r\n
\r\n :
\r\n
\r\n
\r\n
\r\n {renderDatePicker()}\r\n
\r\n
\r\n {displayRows.map(row => (
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
))}\r\n
\r\n
\r\n
scrollCalendar(2 * cellSize)}>\r\n \r\n
\r\n
scrollCalendar(-2 * cellSize)}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n {Array(COLUMN_COUNT).fill(0).map((_, i) => {\r\n const hour = moment({ hour: i });\r\n return (
\r\n
{hour.format(\"h\")}
\r\n
{hour.format(\"a\")}
\r\n
)\r\n })}\r\n
\r\n {displayRows.map(row => (
\r\n {row.timeChunkStates.map((col, i) => ( onColMouseDown(e, row, col, i)}\r\n onMouseMove={(e) => onColMouseMove(e, row, col, i)}\r\n onTouchStart={(e) => onColTouchStart(e, row, col, i)}\r\n onTouchMove={(e) => onColTouchMove(e)}\r\n data-rowid={row.workspace.id}\r\n data-colindex={i}\r\n key={i}\r\n style={{ width: `${cellSize}px`, height: `${cellSize}px`, padding: `${cellPadding}px` }}>\r\n
\r\n {([\"left\", \"right\"] as const).map(position => shouldRenderSelectionDrag(row, i, position)\r\n ? onColMouseDown(e, row, col, i, true)}\r\n onTouchStart={(e) => onColTouchStart(e, row, col, i, true)}\r\n key={position}>
\r\n : null)}\r\n
))}\r\n
))}\r\n
\r\n
\r\n
\r\n \r\n }\r\n {!isMobile && !isLoading && workspaces.length > COLLAPSED_ROWS_COUNT && }\r\n )\r\n}","import { BINOptionsCore } from \"typings/IComponentsLib\";\r\n\r\nasync function openBookItNow(popupParams: LSHelper.Calendar.EditReservationParams, onSuccessCallback?: (reservationId?: Guid, occurrenceDate?: string) => void, onCloseCallback?: (isSuccess: boolean) => void) {\r\n const { default: LiquidSpaceEmbedded } = await import(\"LiquidSpaceEmbedded\");\r\n LiquidSpaceEmbedded.actions[\"ls-editReservation\"]({\r\n onSuccessCallback,\r\n onCloseCallback,\r\n popupParams\r\n });\r\n}\r\n\r\n//Test approach to use NEW BIN directly\r\n//See \\Components\\VenueCalendarModal\\ReservationCalendar\\index.tsx\r\nasync function openNewBin(options: BINOptionsCore) {\r\n const modals = await import(\"features/ComponentsLib/BookModal\");\r\n modals.default(options);\r\n}\r\n\r\nexport function useBookItNow() {\r\n return {\r\n openBookItNow,\r\n openNewBin\r\n };\r\n}\r\n"],"names":["inviteeColors","AvatarCircle","firstName","lastName","email","imageUrl","colorIndex","noborder","className","title","size","avatarClassNames","classNames","React","style","backgroundImage","color","length","backgroundColor","toUpperCase","ReservationCalendarLegend","map","legend","key","HOURS_0_VALUE","HOURS_24_VALUE","SERVER_UNSPESIFIED_FORMAT","toDate","date","format","locale","undefined","Date","test","isDateOnly","moment","DATE","toLocalDate","replace","getMilliseconds","getTime","now","isToday","isSame","isFirstDayOfMonth","getStartOfWeek","startOf","toISOString","getEndOfWeek","endOf","getStartOfMonth","getStartOfNextMonth","add","getEndOfMonth","addTimezoneOffset","d","userTimezoneOffset","getTimezoneOffset","setMilliseconds","subTimezoneOffset","toISOStringUnspecified","dateSubtract","count","unit","subtract","toDateOnly","splitDateAndTime","toTimeOnly","dateMoment","TIME_SECONDS","toTimeZoneInfo","timeZoneInfo","tzdbIds","toTimeZone","console","log","windowsId","timeZone","toLocaleString","hour12","formatDateToUTC","dateString","VenueCalendarModal","isOpen","venueId","selectedDate","container","toggle","refreshUpcomingReservationList","venuesClient","useApiClient","VenuesClient","ratingClient","RatingClient","venue","headquarterData","healthAndSafetyPolicy","rating","setVenueData","useState","clampedDescription","_setClampedDescription","isHidden","setIsHidden","useEffect","abortController","AbortController","async","data","Promise","all","get","getHeadquarterData","catch","_","average","loadVenueCalendarModel","signal","abort","Modal","classes","modal","modalHidden","centered","DesignContextProvider","name","ModalHeader","customCTA","ModalBody","gallery","ImageSwiper","imageUrls","info","address","badges","HealthAndSafetyFullBadge","defaultBookingMethodHourly","BookingMethod","BookItNow","InstantBookBadge","RatingBadge","averageRating","ratingCount","theme","description","LinesEllipsis","text","maxLine","ellipsis","href","url","target","trimRight","src","venueMapImageUrl","alt","Icons","mapPin","VenueCustomCta","ReservationCalendar","LsLoading","isLoading","HealthAndSafetyBadge","id","uniqueId","UncontrolledTooltip","placement","fade","DEFAULT_DATE_FORMAT","formatStringDate","useUtc","fixMidnightEndDate","momentDate","indexOf","utc","formatMilliseconds","milliseconds","stringTime","utcStringTime","forwardRef","long","short","rest","ref","getName","workspace","shorten","duplicatedNames","spaceTypeFormatted","capacity","includes","str","match","x","join","useDuplicatedNames","workspaces","setDuplicatedNames","knownNames","forEach","w","push","WorkspaceSelectorItem","LongShortLabel","pricesFormatted","ms","resolve","reject","aborted","timeout","setTimeout","addEventListener","ev","clearTimeout","once","DefaultSelection","mouseDown","rowId","startColIndex","endColIndex","lazyPreloaderClass","inCard","Swiper","modules","Navigation","Virtual","imageSwiper","cardImageSwiper","loop","slidesPerView","simulateTouch","lazyPreloadPrevNext","virtual","index","SwiperSlide","virtualIndex","image","loading","ButtonPrev","ButtonNext","swiper","useSwiper","clickHandler","useCallback","e","slidePrev","stopPropagation","preventDefault","slot","onClick","slideNext","localMomentDate","source","result","DatePickerCustomInput","errorMessage","value","useFloatLabel","withoutIcon","onChange","onKeyDown","placeholder","wrapperClasses","bsSize","hasInvalidMessage","Input","innerRef","htmlFor","role","DatePickerInput","elementToAttach","isInvalid","onCalendarOpen","onCalendarClose","onFocus","onBlur","popperClassName","withPortal","useMediaBreakpointDown","selected","handleTouchStart","DatePickerPortal","children","createPortal","DatePicker","popperContainer","showPopperArrow","customInput","placeholderText","disabled","formatWeekDay","nameOfDay","substring","portalId","onCalendarOpenWrapped","document","onCalendarCloseWrapped","removeEventListener","readOnly","DatePickerInputControlled","control","Controller","render","field","fieldState","error","message","parseToDate","ISODate","doNotAdjustToLocalTimeZone","parseToISO","DatePickerInputControlledForString","Array","isArray","DatePickerInputControlledForLocalString","getAvatarColorIndex","code","from","reduce","s","c","Math","imul","charCodeAt","abs","Rating","stars","hideNumber","i","round","toFixed","RatingBadgeImpl","fixedRating","props","NOT_DELETED_FILTER","ActivityReservationStatusFilter","Active","CancellationPolicy","Completed","Future","calendarSelection","setCalendarSelection","calendarDate","setCalendarDate","bin","useBookItNow","onBINclosed","isSuccess","onReservationCreated","ReservationCalendarBody","onSelectionChanged","onDateChanged","footer","cta","Button","ctaCancel","ctaSubmit","openBIN","startTime","year","month","hour","minute","second","millisecond","endTime","workspace_id","venue_id","start_date","end_date","openBookItNow","AvatarCircleWithCache","cache","userId","memberPicture","useMemberPicture","WorkspaceSelector","selectedWorkspace","find","UncontrolledDropdown","DropdownToggle","caret","DropdownMenu","DropdownItem","runningLoop","queue","startLoop","membersClient","delay","localQueue","items","getPictures","memberId","element","queueRequest","then","MembersClient","pictureUrl","setPictureUrl","promise","pinStyle","useMemo","hqPinColor","hqPinColorHover","wrapper","picture","width","height","viewBox","fill","xmlns","clipPath","cx","cy","rx","ry","stroke","strokeWidth","strokeLinecap","strokeLinejoin","opacity","filter","y","filterUnits","colorInterpolationFilters","floodOpacity","mode","in","in2","stdDeviation","r","gradientUnits","gradientTransform","stopColor","offset","stopOpacity","MapPinHQ","pin","iconText","hqPinLabel","logo","hqPinImage","enterpriseAccountName","COLUMN_COUNT","COLLAPSED_ROWS_COUNT","fixedWidth","cellSize","cellPadding","initialDisplayColumn","isMobile","venueAvailabilityClient","VenueAvailabilityClient","wrapperClass","setIsLoading","useLsLoading","setSelectedDate","LiquidSpaceConfig","DEBUG","currentBrowserTime","currentVenueTime","setWorkspaces","collapsed","setCollapsed","selection","setSelection","scrollableRef","useRef","scrollableInnerRef","scrollState","setScrollState","canScrollLeft","canScrollRight","setInViewElement","isCalendarVisible","useInView","scrollableRefSetter","node","current","getColClassNames","row","col","selectionClass","getSelectionClass","state","TimeState","Available","Booked","Own","Closed","getSelectionLeftAndRightIndex","endColIndexOverride","endIndex","leftIndex","rightIndex","onColMouseDown","allowDrag","currentSelection","window","onColMouseUp","onColTouchStart","onColTouchEnd","scrollCalendar","marginIncrement","newCalendarScroll","scrollerWrapperWidth","offsetWidth","scrollerInnerWidth","minMargin","displayRows","slice","useLayoutEffect","hourlyAvailability","TimeChunkSize","Min60","loadAvailability","renderDatePicker","minDate","dateFormat","timeChunkStates","workspaceRow","firstOpenSlotIndex","findIndex","FavoriteWidget","Color","gray","workspaceId","transform","onMouseDown","onMouseMove","onColMouseMove","finalIndex","onTouchStart","onTouchMove","touches","elementFromPoint","clientX","clientY","dataset","colIndexString","Number","parseInt","getColInfoById","colIndex","onColTouchMove","padding","position","shouldRenderSelectionDrag","dragPosition","popupParams","onSuccessCallback","onCloseCallback","default","LiquidSpaceEmbedded","actions","openNewBin","options"],"sourceRoot":""}