guestbell-forms 3.0.26 → 3.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,6 +28,7 @@ export interface BookingCalendarProps<T extends BookingCalendarItemT, TLaneData>
28
28
  goalGridWidthPx?: number;
29
29
  minLanesCount?: number;
30
30
  lanesSource?: LaneSourceData<T, TLaneData>[];
31
+ unmatchedLanesToFront?: boolean;
31
32
  children?: React.ReactNode;
32
33
  bookingCalendarTopLeftHeader?: React.ReactNode;
33
34
  filteringButton?: React.ReactNode;
@@ -50,6 +50,7 @@ function BookingCalendar(props) {
50
50
  minSelectionSize = 10,
51
51
  minLanesCount,
52
52
  lanesSource,
53
+ unmatchedLanesToFront = true,
53
54
  filterBookingsToZoom,
54
55
  zoomLevels,
55
56
  BookingCalendarControls = _BookingCalendarControls.BookingCalendarControls,
@@ -64,7 +65,7 @@ function BookingCalendar(props) {
64
65
  filteringButton,
65
66
  children
66
67
  } = props;
67
- const lanes = React.useMemo(() => (0, _utils.splitBookingsToLanes)(bookings, from, minLanesCount, lanesSource), [bookings, from, minLanesCount, lanesSource]);
68
+ const lanes = React.useMemo(() => (0, _utils.splitBookingsToLanes)(bookings, from, minLanesCount, lanesSource, unmatchedLanesToFront), [bookings, from, minLanesCount, lanesSource, unmatchedLanesToFront]);
68
69
  const {
69
70
  observe,
70
71
  entry
@@ -1 +1 @@
1
- {"version":3,"file":"BookingCalendar.js","names":["React","_interopRequireWildcard","require","_classes","_classnames","_interopRequireDefault","_common","_BookingCalendarControls","_utils","_BookingCalendarLane","_moment","_BookingCalendarGrid","_bookingCalendarLaneHeader","_bookingCalendarLanesHeader","_bookingCalendarDatePicker","_","_BookingCalendarTimeAxis","_reactCoolDimensions","_BookingCalendarSelection","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","defaultStep","duration","BookingCalendar","props","_entry$target","bookings","className","laneContainerClassName","laneHeaderContainerClassName","lanesHeaderContainerClassName","lanesHeaderHeaderContainerClassName","controlsClasses","tableClassName","from","till","onRangeChange","step","showGrid","showSelection","showZoomAllButton","gridAvailableSteps","defaultGridAvailableSteps","getMomentFormatFunction","defaultGetMomentFormatFunction","getNewMomentFunction","defaultGetNewMomentFunction","goalGridWidthPx","minSelectionSize","minLanesCount","lanesSource","filterBookingsToZoom","zoomLevels","BookingCalendarControls","DefaultBookingCalendarControls","BookingCalendarItem","BookingCalendarLane","DefaultBookingCalendarLane","BookingCalendarRenderItem","BookingCalendarGrid","DefaultBookingCalendarGrid","BookingCalendarLaneHeader","DefaultBookingCalendarLaneHeader","BookingCalendarLanesHeader","DefaultBookingCalendarLanesHeader","BookingCalendarDatePicker","DefaultBookingCalendarDatePicker","bookingCalendarTopLeftHeader","filteringButton","children","lanes","useMemo","splitBookingsToLanes","observe","entry","useDimensions","width","scrollWidth","items","gridItems","bestStep","_from$clone","generateGridItems","clone","startOf","onSelected","useCallback","data","screenSpaceStartX","Math","min","origin","screenSpaceEndX","max","durationMs","valueOf","toTimeSpace","num","timeSpaceStart","add","timeSpaceEnd","createElement","classNames","bookingCalendarDefaultClasses","bookingCalendarDatePicker","Fragment","format","dataRowsCount","ref","map","lane","laneIndex","LaneBookingCalendarLaneHeader","LaneBookingCalendarLane","rowClassName","laneKey","BookingCalendarTimeAxis"],"sources":["../../../src/lib/components/bookingCalendar/BookingCalendar.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport {\r\n BookingCalendarClasses,\r\n bookingCalendarDefaultClasses,\r\n} from './classes';\r\nimport classNames from 'classnames';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n defaultGetMomentFormatFunction,\r\n GetNewMomentFunctionType,\r\n} from './common';\r\nimport {\r\n BookingCalendarControls as DefaultBookingCalendarControls,\r\n BookingCalendarControlsProps,\r\n} from './bookingCalendarControls/BookingCalendarControls';\r\nimport {\r\n generateGridItems,\r\n LaneSourceData,\r\n splitBookingsToLanes,\r\n} from './utils';\r\nimport {\r\n BookingCalendarLane as DefaultBookingCalendarLane,\r\n BookingCalendarLaneProps,\r\n} from './bookingCalendarLane/BookingCalendarLane';\r\nimport { Moment, Duration, duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarGrid as DefaultBookingCalendarGrid,\r\n BookingCalendarGridProps,\r\n} from './bookingCalendarGrid/BookingCalendarGrid';\r\nimport {\r\n BookingCalendarLaneHeader as DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLaneHeaderProps,\r\n} from './bookingCalendarLaneHeader';\r\nimport {\r\n BookingCalendarLanesHeader as DefaultBookingCalendarLanesHeader,\r\n BookingCalendarLanesHeaderProps,\r\n} from './bookingCalendarLanesHeader';\r\nimport {\r\n BookingCalendarDatePicker as DefaultBookingCalendarDatePicker,\r\n BookingCalendarDatePickerProps,\r\n} from './bookingCalendarDatePicker';\r\nimport {\r\n defaultGetNewMomentFunction,\r\n defaultGridAvailableSteps,\r\n GetMomentFormatFunctionType,\r\n ZoomLevel,\r\n} from '.';\r\nimport { BookingCalendarTimeAxis } from './bookingCalendarTimeAxis/BookingCalendarTimeAxis';\r\nimport useDimensions from 'react-cool-dimensions';\r\nimport BookingCalendarSelection, {\r\n BookingCalendarSelectionData,\r\n} from './bookingCalendarSelection/BookingCalendarSelection';\r\n\r\nexport interface BookingCalendarProps<T extends BookingCalendarItemT, TLaneData>\r\n extends BookingCalendarClasses {\r\n bookings: T[];\r\n from: Moment;\r\n till: Moment;\r\n getMomentFormatFunction?: GetMomentFormatFunctionType;\r\n getNewMomentFunction?: GetNewMomentFunctionType;\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n step?: Duration;\r\n showZoomAllButton?: boolean;\r\n showGrid?: boolean;\r\n showSelection?: boolean;\r\n minSelectionSize?: number;\r\n gridAvailableSteps?: Duration[];\r\n goalGridWidthPx?: number;\r\n minLanesCount?: number;\r\n lanesSource?: LaneSourceData<T, TLaneData>[];\r\n children?: React.ReactNode;\r\n bookingCalendarTopLeftHeader?: React.ReactNode;\r\n filteringButton?: React.ReactNode;\r\n\r\n zoomLevels?: ZoomLevel[];\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n BookingCalendarControls?: React.ComponentType<\r\n BookingCalendarControlsProps<T>\r\n >;\r\n BookingCalendarGrid?: React.ComponentType<BookingCalendarGridProps>;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLanesHeader?: React.ComponentType<\r\n BookingCalendarLanesHeaderProps<T>\r\n >;\r\n BookingCalendarDatePicker?:\r\n | React.ComponentType<BookingCalendarDatePickerProps<T>>\r\n | React.ReactNode;\r\n}\r\n\r\nconst defaultStep = duration(1, 'day');\r\n\r\nexport function BookingCalendar<T extends BookingCalendarItemT, TLaneData>(\r\n props: BookingCalendarProps<T, TLaneData>\r\n) {\r\n const {\r\n bookings,\r\n className,\r\n laneContainerClassName,\r\n laneHeaderContainerClassName,\r\n lanesHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName,\r\n controlsClasses,\r\n tableClassName,\r\n from,\r\n till,\r\n onRangeChange,\r\n step = defaultStep,\r\n showGrid = true,\r\n showSelection = true,\r\n showZoomAllButton = true,\r\n gridAvailableSteps = defaultGridAvailableSteps,\r\n getMomentFormatFunction = defaultGetMomentFormatFunction,\r\n getNewMomentFunction = defaultGetNewMomentFunction,\r\n goalGridWidthPx = 60,\r\n minSelectionSize = 10,\r\n minLanesCount,\r\n lanesSource,\r\n filterBookingsToZoom,\r\n zoomLevels,\r\n BookingCalendarControls = DefaultBookingCalendarControls,\r\n BookingCalendarItem,\r\n BookingCalendarLane = DefaultBookingCalendarLane,\r\n BookingCalendarRenderItem,\r\n BookingCalendarGrid = DefaultBookingCalendarGrid,\r\n BookingCalendarLaneHeader = DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLanesHeader = DefaultBookingCalendarLanesHeader,\r\n BookingCalendarDatePicker = DefaultBookingCalendarDatePicker,\r\n bookingCalendarTopLeftHeader,\r\n filteringButton,\r\n children,\r\n } = props;\r\n const lanes = React.useMemo(\r\n () =>\r\n splitBookingsToLanes<T, TLaneData>(\r\n bookings,\r\n from,\r\n minLanesCount,\r\n lanesSource\r\n ),\r\n [bookings, from, minLanesCount, lanesSource]\r\n );\r\n const { observe, entry } = useDimensions<HTMLDivElement>();\r\n const width = entry?.target?.scrollWidth ?? 0;\r\n const { items: gridItems, bestStep } = React.useMemo(\r\n () =>\r\n generateGridItems(\r\n from,\r\n till,\r\n step,\r\n width,\r\n gridAvailableSteps,\r\n goalGridWidthPx,\r\n from?.clone()?.startOf('day')\r\n ),\r\n [from, till, step, width, gridAvailableSteps, goalGridWidthPx]\r\n );\r\n const onSelected = React.useCallback(\r\n (data: BookingCalendarSelectionData) => {\r\n if (!from || !till || !width || !onRangeChange) {\r\n return;\r\n }\r\n const screenSpaceStartX = Math.min(data.origin[0], data.target[0]);\r\n const screenSpaceEndX = Math.max(data.origin[0], data.target[0]);\r\n const durationMs = till.valueOf() - from.valueOf();\r\n const toTimeSpace = (num: number) => (num / (width || 1)) * durationMs;\r\n const timeSpaceStart = from\r\n .clone()\r\n .add(toTimeSpace(screenSpaceStartX), 'ms');\r\n const timeSpaceEnd = from.clone().add(toTimeSpace(screenSpaceEndX), 'ms');\r\n onRangeChange({ from: timeSpaceStart, till: timeSpaceEnd });\r\n },\r\n [from, till, width, onRangeChange]\r\n );\r\n return (\r\n <div\r\n className={classNames(bookingCalendarDefaultClasses.className, className)}\r\n >\r\n <BookingCalendarControls<T>\r\n {...controlsClasses}\r\n items={bookings}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n filterBookingsToZoom={filterBookingsToZoom}\r\n zoomLevels={zoomLevels}\r\n filteringButton={filteringButton}\r\n showZoomAllButton={showZoomAllButton}\r\n bookingCalendarDatePicker={\r\n <>\r\n {typeof BookingCalendarDatePicker === 'function' ? (\r\n <BookingCalendarDatePicker\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n getNewMomentFunction={getNewMomentFunction}\r\n />\r\n ) : (\r\n BookingCalendarDatePicker\r\n )}\r\n {from.format('MMMM')}, {from.format('YYYY')}\r\n </>\r\n }\r\n />\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.tableClassName,\r\n tableClassName\r\n )}\r\n >\r\n {showGrid && (\r\n <BookingCalendarGrid\r\n items={gridItems}\r\n dataRowsCount={lanes.length}\r\n width={width}\r\n />\r\n )}\r\n {showSelection && (\r\n <BookingCalendarSelection\r\n dataRowsCount={lanes.length}\r\n onSelected={onSelected}\r\n minSelectionSize={minSelectionSize}\r\n />\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName\r\n )}\r\n >\r\n {bookingCalendarTopLeftHeader}\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderContainerClassName,\r\n lanesHeaderContainerClassName\r\n )}\r\n ref={observe}\r\n >\r\n <BookingCalendarLanesHeader<T>\r\n {...controlsClasses}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n />\r\n </div>\r\n\r\n {lanes.map((lane, laneIndex) => {\r\n const LaneBookingCalendarLaneHeader =\r\n lane.BookingCalendarLaneHeader ?? BookingCalendarLaneHeader;\r\n const LaneBookingCalendarLane =\r\n lane.BookingCalendarLane ?? BookingCalendarLane;\r\n return (\r\n <React.Fragment key={laneIndex}>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneHeaderContainerClassName,\r\n laneHeaderContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLaneHeader<TLaneData>\r\n laneKey={lane.laneKey ?? laneIndex}\r\n data={lane.data}\r\n />\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneContainerClassName,\r\n laneContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLane\r\n laneIndex={laneIndex}\r\n items={lane.items}\r\n from={from}\r\n till={till}\r\n BookingCalendarItem={\r\n lane.BookingCalendarItem ?? BookingCalendarItem\r\n }\r\n BookingCalendarRenderItem={\r\n lane.BookingCalendarRenderItem ?? BookingCalendarRenderItem\r\n }\r\n step={step}\r\n />\r\n </div>\r\n </React.Fragment>\r\n );\r\n })}\r\n <div />\r\n <div>\r\n <BookingCalendarTimeAxis\r\n items={gridItems}\r\n bestStep={bestStep}\r\n getMomentFormatFunction={getMomentFormatFunction}\r\n />\r\n </div>\r\n </div>\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"BookingCalendar.js","names":["React","_interopRequireWildcard","require","_classes","_classnames","_interopRequireDefault","_common","_BookingCalendarControls","_utils","_BookingCalendarLane","_moment","_BookingCalendarGrid","_bookingCalendarLaneHeader","_bookingCalendarLanesHeader","_bookingCalendarDatePicker","_","_BookingCalendarTimeAxis","_reactCoolDimensions","_BookingCalendarSelection","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","defaultStep","duration","BookingCalendar","props","_entry$target","bookings","className","laneContainerClassName","laneHeaderContainerClassName","lanesHeaderContainerClassName","lanesHeaderHeaderContainerClassName","controlsClasses","tableClassName","from","till","onRangeChange","step","showGrid","showSelection","showZoomAllButton","gridAvailableSteps","defaultGridAvailableSteps","getMomentFormatFunction","defaultGetMomentFormatFunction","getNewMomentFunction","defaultGetNewMomentFunction","goalGridWidthPx","minSelectionSize","minLanesCount","lanesSource","unmatchedLanesToFront","filterBookingsToZoom","zoomLevels","BookingCalendarControls","DefaultBookingCalendarControls","BookingCalendarItem","BookingCalendarLane","DefaultBookingCalendarLane","BookingCalendarRenderItem","BookingCalendarGrid","DefaultBookingCalendarGrid","BookingCalendarLaneHeader","DefaultBookingCalendarLaneHeader","BookingCalendarLanesHeader","DefaultBookingCalendarLanesHeader","BookingCalendarDatePicker","DefaultBookingCalendarDatePicker","bookingCalendarTopLeftHeader","filteringButton","children","lanes","useMemo","splitBookingsToLanes","observe","entry","useDimensions","width","scrollWidth","items","gridItems","bestStep","_from$clone","generateGridItems","clone","startOf","onSelected","useCallback","data","screenSpaceStartX","Math","min","origin","screenSpaceEndX","max","durationMs","valueOf","toTimeSpace","num","timeSpaceStart","add","timeSpaceEnd","createElement","classNames","bookingCalendarDefaultClasses","bookingCalendarDatePicker","Fragment","format","dataRowsCount","ref","map","lane","laneIndex","LaneBookingCalendarLaneHeader","LaneBookingCalendarLane","rowClassName","laneKey","BookingCalendarTimeAxis"],"sources":["../../../src/lib/components/bookingCalendar/BookingCalendar.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport {\r\n BookingCalendarClasses,\r\n bookingCalendarDefaultClasses,\r\n} from './classes';\r\nimport classNames from 'classnames';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n defaultGetMomentFormatFunction,\r\n GetNewMomentFunctionType,\r\n} from './common';\r\nimport {\r\n BookingCalendarControls as DefaultBookingCalendarControls,\r\n BookingCalendarControlsProps,\r\n} from './bookingCalendarControls/BookingCalendarControls';\r\nimport {\r\n generateGridItems,\r\n LaneSourceData,\r\n splitBookingsToLanes,\r\n} from './utils';\r\nimport {\r\n BookingCalendarLane as DefaultBookingCalendarLane,\r\n BookingCalendarLaneProps,\r\n} from './bookingCalendarLane/BookingCalendarLane';\r\nimport { Moment, Duration, duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarGrid as DefaultBookingCalendarGrid,\r\n BookingCalendarGridProps,\r\n} from './bookingCalendarGrid/BookingCalendarGrid';\r\nimport {\r\n BookingCalendarLaneHeader as DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLaneHeaderProps,\r\n} from './bookingCalendarLaneHeader';\r\nimport {\r\n BookingCalendarLanesHeader as DefaultBookingCalendarLanesHeader,\r\n BookingCalendarLanesHeaderProps,\r\n} from './bookingCalendarLanesHeader';\r\nimport {\r\n BookingCalendarDatePicker as DefaultBookingCalendarDatePicker,\r\n BookingCalendarDatePickerProps,\r\n} from './bookingCalendarDatePicker';\r\nimport {\r\n defaultGetNewMomentFunction,\r\n defaultGridAvailableSteps,\r\n GetMomentFormatFunctionType,\r\n ZoomLevel,\r\n} from '.';\r\nimport { BookingCalendarTimeAxis } from './bookingCalendarTimeAxis/BookingCalendarTimeAxis';\r\nimport useDimensions from 'react-cool-dimensions';\r\nimport BookingCalendarSelection, {\r\n BookingCalendarSelectionData,\r\n} from './bookingCalendarSelection/BookingCalendarSelection';\r\n\r\nexport interface BookingCalendarProps<T extends BookingCalendarItemT, TLaneData>\r\n extends BookingCalendarClasses {\r\n bookings: T[];\r\n from: Moment;\r\n till: Moment;\r\n getMomentFormatFunction?: GetMomentFormatFunctionType;\r\n getNewMomentFunction?: GetNewMomentFunctionType;\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n step?: Duration;\r\n showZoomAllButton?: boolean;\r\n showGrid?: boolean;\r\n showSelection?: boolean;\r\n minSelectionSize?: number;\r\n gridAvailableSteps?: Duration[];\r\n goalGridWidthPx?: number;\r\n minLanesCount?: number;\r\n lanesSource?: LaneSourceData<T, TLaneData>[];\r\n unmatchedLanesToFront?: boolean;\r\n children?: React.ReactNode;\r\n bookingCalendarTopLeftHeader?: React.ReactNode;\r\n filteringButton?: React.ReactNode;\r\n\r\n zoomLevels?: ZoomLevel[];\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n BookingCalendarControls?: React.ComponentType<\r\n BookingCalendarControlsProps<T>\r\n >;\r\n BookingCalendarGrid?: React.ComponentType<BookingCalendarGridProps>;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLanesHeader?: React.ComponentType<\r\n BookingCalendarLanesHeaderProps<T>\r\n >;\r\n BookingCalendarDatePicker?:\r\n | React.ComponentType<BookingCalendarDatePickerProps<T>>\r\n | React.ReactNode;\r\n}\r\n\r\nconst defaultStep = duration(1, 'day');\r\n\r\nexport function BookingCalendar<T extends BookingCalendarItemT, TLaneData>(\r\n props: BookingCalendarProps<T, TLaneData>\r\n) {\r\n const {\r\n bookings,\r\n className,\r\n laneContainerClassName,\r\n laneHeaderContainerClassName,\r\n lanesHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName,\r\n controlsClasses,\r\n tableClassName,\r\n from,\r\n till,\r\n onRangeChange,\r\n step = defaultStep,\r\n showGrid = true,\r\n showSelection = true,\r\n showZoomAllButton = true,\r\n gridAvailableSteps = defaultGridAvailableSteps,\r\n getMomentFormatFunction = defaultGetMomentFormatFunction,\r\n getNewMomentFunction = defaultGetNewMomentFunction,\r\n goalGridWidthPx = 60,\r\n minSelectionSize = 10,\r\n minLanesCount,\r\n lanesSource,\r\n unmatchedLanesToFront = true,\r\n filterBookingsToZoom,\r\n zoomLevels,\r\n BookingCalendarControls = DefaultBookingCalendarControls,\r\n BookingCalendarItem,\r\n BookingCalendarLane = DefaultBookingCalendarLane,\r\n BookingCalendarRenderItem,\r\n BookingCalendarGrid = DefaultBookingCalendarGrid,\r\n BookingCalendarLaneHeader = DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLanesHeader = DefaultBookingCalendarLanesHeader,\r\n BookingCalendarDatePicker = DefaultBookingCalendarDatePicker,\r\n bookingCalendarTopLeftHeader,\r\n filteringButton,\r\n children,\r\n } = props;\r\n const lanes = React.useMemo(\r\n () =>\r\n splitBookingsToLanes<T, TLaneData>(\r\n bookings,\r\n from,\r\n minLanesCount,\r\n lanesSource,\r\n unmatchedLanesToFront\r\n ),\r\n [bookings, from, minLanesCount, lanesSource, unmatchedLanesToFront]\r\n );\r\n const { observe, entry } = useDimensions<HTMLDivElement>();\r\n const width = entry?.target?.scrollWidth ?? 0;\r\n const { items: gridItems, bestStep } = React.useMemo(\r\n () =>\r\n generateGridItems(\r\n from,\r\n till,\r\n step,\r\n width,\r\n gridAvailableSteps,\r\n goalGridWidthPx,\r\n from?.clone()?.startOf('day')\r\n ),\r\n [from, till, step, width, gridAvailableSteps, goalGridWidthPx]\r\n );\r\n const onSelected = React.useCallback(\r\n (data: BookingCalendarSelectionData) => {\r\n if (!from || !till || !width || !onRangeChange) {\r\n return;\r\n }\r\n const screenSpaceStartX = Math.min(data.origin[0], data.target[0]);\r\n const screenSpaceEndX = Math.max(data.origin[0], data.target[0]);\r\n const durationMs = till.valueOf() - from.valueOf();\r\n const toTimeSpace = (num: number) => (num / (width || 1)) * durationMs;\r\n const timeSpaceStart = from\r\n .clone()\r\n .add(toTimeSpace(screenSpaceStartX), 'ms');\r\n const timeSpaceEnd = from.clone().add(toTimeSpace(screenSpaceEndX), 'ms');\r\n onRangeChange({ from: timeSpaceStart, till: timeSpaceEnd });\r\n },\r\n [from, till, width, onRangeChange]\r\n );\r\n return (\r\n <div\r\n className={classNames(bookingCalendarDefaultClasses.className, className)}\r\n >\r\n <BookingCalendarControls<T>\r\n {...controlsClasses}\r\n items={bookings}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n filterBookingsToZoom={filterBookingsToZoom}\r\n zoomLevels={zoomLevels}\r\n filteringButton={filteringButton}\r\n showZoomAllButton={showZoomAllButton}\r\n bookingCalendarDatePicker={\r\n <>\r\n {typeof BookingCalendarDatePicker === 'function' ? (\r\n <BookingCalendarDatePicker\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n getNewMomentFunction={getNewMomentFunction}\r\n />\r\n ) : (\r\n BookingCalendarDatePicker\r\n )}\r\n {from.format('MMMM')}, {from.format('YYYY')}\r\n </>\r\n }\r\n />\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.tableClassName,\r\n tableClassName\r\n )}\r\n >\r\n {showGrid && (\r\n <BookingCalendarGrid\r\n items={gridItems}\r\n dataRowsCount={lanes.length}\r\n width={width}\r\n />\r\n )}\r\n {showSelection && (\r\n <BookingCalendarSelection\r\n dataRowsCount={lanes.length}\r\n onSelected={onSelected}\r\n minSelectionSize={minSelectionSize}\r\n />\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName\r\n )}\r\n >\r\n {bookingCalendarTopLeftHeader}\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderContainerClassName,\r\n lanesHeaderContainerClassName\r\n )}\r\n ref={observe}\r\n >\r\n <BookingCalendarLanesHeader<T>\r\n {...controlsClasses}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n />\r\n </div>\r\n\r\n {lanes.map((lane, laneIndex) => {\r\n const LaneBookingCalendarLaneHeader =\r\n lane.BookingCalendarLaneHeader ?? BookingCalendarLaneHeader;\r\n const LaneBookingCalendarLane =\r\n lane.BookingCalendarLane ?? BookingCalendarLane;\r\n return (\r\n <React.Fragment key={laneIndex}>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneHeaderContainerClassName,\r\n laneHeaderContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLaneHeader<TLaneData>\r\n laneKey={lane.laneKey ?? laneIndex}\r\n data={lane.data}\r\n />\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneContainerClassName,\r\n laneContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLane\r\n laneIndex={laneIndex}\r\n items={lane.items}\r\n from={from}\r\n till={till}\r\n BookingCalendarItem={\r\n lane.BookingCalendarItem ?? BookingCalendarItem\r\n }\r\n BookingCalendarRenderItem={\r\n lane.BookingCalendarRenderItem ?? BookingCalendarRenderItem\r\n }\r\n step={step}\r\n />\r\n </div>\r\n </React.Fragment>\r\n );\r\n })}\r\n <div />\r\n <div>\r\n <BookingCalendarTimeAxis\r\n items={gridItems}\r\n bestStep={bestStep}\r\n getMomentFormatFunction={getMomentFormatFunction}\r\n />\r\n </div>\r\n </div>\r\n {children}\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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"}
@@ -18,7 +18,7 @@ export interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {
18
18
  export interface LaneData<T extends BookingCalendarItemT, TLaneData> extends LaneSourceData<T, TLaneData> {
19
19
  items: T[];
20
20
  }
21
- export declare function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(bookings: T[], from: Moment, minLanesCount: number, lanesSource?: LaneSourceData<T, TLaneData>[]): LaneData<T, TLaneData>[];
21
+ export declare function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(bookings: T[], from: Moment, minLanesCount: number, lanesSource?: LaneSourceData<T, TLaneData>[], unmatchedToFront?: boolean): LaneData<T, TLaneData>[];
22
22
  export declare function itemsOverlap<T extends BookingCalendarItemT>(a: T, b: T): boolean;
23
23
  export declare const getItemPositionStyle: (marginStart: number, width: number) => import("react").CSSProperties;
24
24
  export declare function calculateItemsDimensions<T extends BookingCalendarItemT>(items: T[], from: Moment, till: Moment): {
@@ -27,6 +27,7 @@ function groupBy(items, iterator) {
27
27
  }
28
28
  function splitBookingsToLanes(bookings, from, minLanesCount) {
29
29
  let lanesSource = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
30
+ let unmatchedToFront = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
30
31
  if (!bookings) {
31
32
  return [];
32
33
  }
@@ -117,9 +118,12 @@ function splitBookingsToLanes(bookings, from, minLanesCount) {
117
118
  })));
118
119
  }
119
120
  const findIndex = (arr, laneKey) => {
120
- if (!laneKey) return -1;
121
+ const unmatchedVal = unmatchedToFront ? Number.MIN_SAFE_INTEGER : Number.MAX_SAFE_INTEGER;
122
+ if (!laneKey) {
123
+ return unmatchedVal;
124
+ }
121
125
  const index = arr.findIndex(item => item.laneKey === laneKey);
122
- return index === -1 ? Number.MAX_SAFE_INTEGER : index;
126
+ return index === -1 ? unmatchedVal : index;
123
127
  };
124
128
  const sortArrayByLaneKeys = (referenceArray, arrayToSort) => {
125
129
  return [...arrayToSort].sort((a, b) => {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_moment","_interopRequireDefault","require","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","groupBy","items","iterator","reduce","item","hasOwnProperty","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","lanes","map","bookingsWithoutLaneKey","a","laneKey","bookingsWithLaneKey","grouped","booking","originalIndex","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","lane","index","_lane$items","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","findIndex","arr","MAX_SAFE_INTEGER","sortArrayByLaneKeys","referenceArray","arrayToSort","indexA","indexB","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","exports","calculateItemsDimensions","lastEnd","widthMs","startMs","endMs","startIsCut","realStart","realFrom","moment","start","endIsCut","realEnd","end","realTill","generateControlItems","step","startOfStep","steps","max","ceil","asMilliseconds","subtract","clone","add","generateGridItems","containerWidthPx","availableSteps","goalGridWidthPx","bestStep","stepMs","fromMs","tillMs","timeLengthMs","approximateStepsCount","approximateStepMs","availableStepsDistancesMs","smallestDistance","bestStepIndex","utcOffset","date","stepProportion","numberOfRoots","current","currentTop","tolerance","pow","left","opacity"],"sources":["../../../src/lib/components/bookingCalendar/utils.ts"],"sourcesContent":["import moment, { Moment, Duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarLaneProps } from './bookingCalendarLane';\r\nimport { BookingCalendarLaneHeaderProps } from './bookingCalendarLaneHeader';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarItemT,\r\n BookingCalendarItemWithOriginalIndexT,\r\n} from './common';\r\n\r\nexport function groupBy<T>(items: T[], iterator: (item: T) => number | string) {\r\n return items.reduce((obj, item) => {\r\n const key = iterator(item);\r\n if (!obj.hasOwnProperty(key)) {\r\n obj[key] = [];\r\n }\r\n obj[key].push(item);\r\n return obj;\r\n }, {});\r\n}\r\n\r\nexport interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {\r\n laneKey: number;\r\n data?: TLaneData;\r\n rowClassName?: string;\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n}\r\n\r\nexport interface LaneData<T extends BookingCalendarItemT, TLaneData>\r\n extends LaneSourceData<T, TLaneData> {\r\n items: T[];\r\n}\r\n\r\nexport function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(\r\n bookings: T[],\r\n from: Moment,\r\n minLanesCount: number,\r\n lanesSource: LaneSourceData<T, TLaneData>[] = []\r\n) {\r\n if (!bookings) {\r\n return [];\r\n }\r\n let lanes: LaneData<T, TLaneData>[] = [];\r\n if (lanesSource?.length) {\r\n lanes = lanesSource.map((source) => ({\r\n ...source,\r\n items: [],\r\n }));\r\n }\r\n const bookingsWithoutLaneKey = bookings.filter(\r\n (a) => a.laneKey === undefined\r\n );\r\n const bookingsWithLaneKey = bookings.filter((a) => a.laneKey !== undefined);\r\n if (bookingsWithLaneKey.length) {\r\n const grouped = groupBy(\r\n bookingsWithLaneKey.map((booking, originalIndex) => ({\r\n ...booking,\r\n originalIndex,\r\n })),\r\n (a) => a.laneKey\r\n );\r\n lanes = Object.keys(grouped).map((key) => ({\r\n laneKey: Number(key),\r\n items: grouped[key],\r\n ...lanesSource?.find((a) => a.laneKey === Number(key)),\r\n }));\r\n const missingLanes = lanesSource?.filter(\r\n (a) => !lanes.some((l) => l.laneKey === a.laneKey)\r\n );\r\n lanes = lanes.concat(missingLanes.map((a) => ({ ...a, items: [] })));\r\n }\r\n if (bookingsWithoutLaneKey.length) {\r\n let remainingBookings: (T & BookingCalendarItemWithOriginalIndexT)[] =\r\n bookingsWithoutLaneKey\r\n .map((booking, originalIndex) => ({ ...booking, originalIndex }))\r\n .sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n while (remainingBookings.length > 0) {\r\n let min = 99999999999999;\r\n let bookingIndex = -1;\r\n let laneIndex = -1;\r\n lanes.forEach((lane, index) => {\r\n if (lanesSource?.some((l) => l.laneKey === lane.laneKey)) {\r\n return;\r\n }\r\n const lastTill = lane.items[lane.items.length - 1]?.till ?? from;\r\n const distances = remainingBookings.map((booking) => {\r\n const dist = booking.from.diff(lastTill);\r\n if (lane.items.length === 0) {\r\n return Math.abs(dist);\r\n }\r\n return dist;\r\n });\r\n const _min = Math.min(...distances.filter((a) => a >= 0));\r\n if (_min < min) {\r\n bookingIndex = distances.indexOf(_min);\r\n laneIndex = index;\r\n }\r\n });\r\n if (bookingIndex >= 0 && laneIndex >= 0) {\r\n lanes[laneIndex].items = lanes[laneIndex].items.concat({\r\n ...remainingBookings[bookingIndex],\r\n });\r\n remainingBookings.splice(bookingIndex, 1);\r\n } else {\r\n lanes = lanes.concat({\r\n items: [{ ...remainingBookings[0] }],\r\n laneKey: lanes.length,\r\n data: undefined,\r\n });\r\n remainingBookings.shift();\r\n }\r\n }\r\n // Naive solution that is much less computationally intensive but yields more lanes than necessary\r\n /*bookings.forEach((booking, originalIndex) => {\r\n let found = false;\r\n lanes.forEach((lane, index) => {\r\n if (!lane.some(i => itemsOverlap(booking, i))) {\r\n lanes[index] = lanes[index].concat({ ...booking, originalIndex });\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n lanes = lanes.concat([[{ ...booking, originalIndex }]]);\r\n }\r\n });*/\r\n }\r\n for (let index = 0; index < lanes.length; index++) {\r\n const lane = lanes[index];\r\n lanes[index].items = lane.items.sort(\r\n (a, b) => a.from.valueOf() - b.from.valueOf()\r\n );\r\n }\r\n if (lanes.length < minLanesCount) {\r\n lanes = lanes.concat(\r\n new Array<LaneData<T, TLaneData>>(minLanesCount - lanes.length)\r\n .fill(null)\r\n .map((_, index) => ({\r\n items: [],\r\n laneKey: index + lanes.length,\r\n data: null,\r\n }))\r\n );\r\n }\r\n const findIndex = (\r\n arr: (LaneData<T, TLaneData> | LaneSourceData<T, TLaneData>)[],\r\n laneKey: string | undefined | number\r\n ): number => {\r\n if (!laneKey) return -1;\r\n const index = arr.findIndex((item) => item.laneKey === laneKey);\r\n return index === -1 ? Number.MAX_SAFE_INTEGER : index;\r\n };\r\n\r\n const sortArrayByLaneKeys = (\r\n referenceArray: LaneSourceData<T, TLaneData>[],\r\n arrayToSort: LaneData<T, TLaneData>[]\r\n ): LaneData<T, TLaneData>[] => {\r\n return [...arrayToSort].sort((a, b) => {\r\n const indexA = findIndex(referenceArray, a.laneKey);\r\n const indexB = findIndex(referenceArray, b.laneKey);\r\n return indexA - indexB;\r\n });\r\n };\r\n lanes = sortArrayByLaneKeys(lanesSource, lanes);\r\n return lanes;\r\n}\r\n\r\nexport function itemsOverlap<T extends BookingCalendarItemT>(a: T, b: T) {\r\n if (!a?.from || !a?.till || !b?.from || !b?.till) {\r\n return false;\r\n }\r\n if (b.till.isBefore(a.from)) {\r\n return false;\r\n }\r\n if (b.from.isAfter(a.till)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const getItemPositionStyle = (marginStart: number, width: number) =>\r\n ({\r\n marginLeft: `${marginStart * 100}%`,\r\n width: `${width * 100}%`,\r\n } as React.CSSProperties);\r\n\r\nexport function calculateItemsDimensions<T extends BookingCalendarItemT>(\r\n items: T[],\r\n from: Moment,\r\n till: Moment\r\n) {\r\n let lastEnd = 0;\r\n const widthMs = till.valueOf() - from.valueOf();\r\n const startMs = from.valueOf();\r\n const endMs = till.valueOf();\r\n return widthMs > 0\r\n ? items?.map((item) => {\r\n const startIsCut = item.from.valueOf() < startMs;\r\n const realStart = (item.from.valueOf() - startMs) / widthMs;\r\n const realFrom = startIsCut ? moment(startMs) : moment(item.from);\r\n const start = startIsCut ? 0 : realStart;\r\n const endIsCut = item.till.valueOf() > endMs;\r\n const realEnd = (item.till.valueOf() - startMs) / widthMs;\r\n const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;\r\n const realTill = endIsCut ? moment(endMs) : moment(item.till);\r\n const marginStart = start - lastEnd;\r\n lastEnd = (item.till.valueOf() - startMs) / widthMs;\r\n return {\r\n item,\r\n start,\r\n realStart,\r\n realFrom,\r\n startIsCut,\r\n width: end - start,\r\n end,\r\n realEnd,\r\n realTill,\r\n endIsCut,\r\n marginStart,\r\n };\r\n })\r\n : [];\r\n}\r\n\r\nexport const generateControlItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n startOfStep: Moment\r\n) => {\r\n if (!from || !till || !step) {\r\n return [];\r\n }\r\n let steps = Math.max(\r\n Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()),\r\n 2\r\n );\r\n let subtract =\r\n (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();\r\n if (subtract > 0) {\r\n subtract -= step.asMilliseconds();\r\n }\r\n if (till.valueOf() - from.valueOf() > step.asMilliseconds()) {\r\n steps += 1;\r\n }\r\n return new Array(steps).fill(0).map((_, index) => ({\r\n from: from\r\n .clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from\r\n .clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * (index + 1)),\r\n }));\r\n};\r\n\r\nexport interface GridItem {\r\n left: number;\r\n date: Moment;\r\n stepProportion: number;\r\n opacity: number;\r\n}\r\n\r\nexport const generateGridItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n containerWidthPx: number,\r\n availableSteps: Duration[],\r\n goalGridWidthPx: number,\r\n startOfStep: Moment\r\n): { items: GridItem[]; bestStep: Duration } => {\r\n if (\r\n !from ||\r\n !till ||\r\n !containerWidthPx ||\r\n !availableSteps?.length ||\r\n !goalGridWidthPx ||\r\n !step ||\r\n !startOfStep\r\n ) {\r\n return { bestStep: availableSteps?.[0], items: [] };\r\n }\r\n const stepMs = step.asMilliseconds();\r\n const fromMs = from.valueOf();\r\n const tillMs = till.valueOf();\r\n const timeLengthMs = tillMs - fromMs;\r\n const approximateStepsCount = containerWidthPx / goalGridWidthPx;\r\n const approximateStepMs = timeLengthMs / approximateStepsCount;\r\n const availableStepsDistancesMs = availableSteps.map((a) =>\r\n Math.abs(a.asMilliseconds() - approximateStepMs)\r\n );\r\n const smallestDistance = Math.min(...availableStepsDistancesMs);\r\n const bestStepIndex = availableStepsDistancesMs.findIndex(\r\n (a) => a === smallestDistance\r\n );\r\n const bestStep = availableSteps[bestStepIndex];\r\n const subtract =\r\n (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();\r\n let startMs = fromMs - subtract;\r\n let steps: Moment[] = [];\r\n while (startMs <= tillMs) {\r\n steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));\r\n startMs += bestStep.asMilliseconds();\r\n }\r\n return {\r\n items: steps\r\n .filter((a) => a.valueOf() > fromMs && a.valueOf() < tillMs)\r\n .map((date) => {\r\n const stepProportion =\r\n ((date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs) / stepMs;\r\n let numberOfRoots = 0;\r\n let current = stepProportion;\r\n let currentTop = 1;\r\n let tolerance = 0.001;\r\n while (current > tolerance && current < currentTop - tolerance) {\r\n numberOfRoots += 1;\r\n currentTop = 1 / Math.pow(2, numberOfRoots);\r\n if (current > currentTop) {\r\n current -= currentTop;\r\n }\r\n }\r\n return {\r\n left: (date.valueOf() - fromMs) / timeLengthMs,\r\n date,\r\n stepProportion,\r\n opacity: 1 / (numberOfRoots || 1),\r\n };\r\n }),\r\n bestStep,\r\n };\r\n};\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["_moment","_interopRequireDefault","require","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","groupBy","items","iterator","reduce","item","hasOwnProperty","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","unmatchedToFront","lanes","map","bookingsWithoutLaneKey","a","laneKey","bookingsWithLaneKey","grouped","booking","originalIndex","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","lane","index","_lane$items","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","findIndex","arr","unmatchedVal","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","sortArrayByLaneKeys","referenceArray","arrayToSort","indexA","indexB","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","exports","calculateItemsDimensions","lastEnd","widthMs","startMs","endMs","startIsCut","realStart","realFrom","moment","start","endIsCut","realEnd","end","realTill","generateControlItems","step","startOfStep","steps","max","ceil","asMilliseconds","subtract","clone","add","generateGridItems","containerWidthPx","availableSteps","goalGridWidthPx","bestStep","stepMs","fromMs","tillMs","timeLengthMs","approximateStepsCount","approximateStepMs","availableStepsDistancesMs","smallestDistance","bestStepIndex","utcOffset","date","stepProportion","numberOfRoots","current","currentTop","tolerance","pow","left","opacity"],"sources":["../../../src/lib/components/bookingCalendar/utils.ts"],"sourcesContent":["import moment, { Moment, Duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarLaneProps } from './bookingCalendarLane';\r\nimport { BookingCalendarLaneHeaderProps } from './bookingCalendarLaneHeader';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarItemT,\r\n BookingCalendarItemWithOriginalIndexT,\r\n} from './common';\r\n\r\nexport function groupBy<T>(items: T[], iterator: (item: T) => number | string) {\r\n return items.reduce((obj, item) => {\r\n const key = iterator(item);\r\n if (!obj.hasOwnProperty(key)) {\r\n obj[key] = [];\r\n }\r\n obj[key].push(item);\r\n return obj;\r\n }, {});\r\n}\r\n\r\nexport interface LaneSourceData<T extends BookingCalendarItemT, TLaneData> {\r\n laneKey: number;\r\n data?: TLaneData;\r\n rowClassName?: string;\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n}\r\n\r\nexport interface LaneData<T extends BookingCalendarItemT, TLaneData>\r\n extends LaneSourceData<T, TLaneData> {\r\n items: T[];\r\n}\r\n\r\nexport function splitBookingsToLanes<T extends BookingCalendarItemT, TLaneData>(\r\n bookings: T[],\r\n from: Moment,\r\n minLanesCount: number,\r\n lanesSource: LaneSourceData<T, TLaneData>[] = [],\r\n unmatchedToFront = true\r\n) {\r\n if (!bookings) {\r\n return [];\r\n }\r\n let lanes: LaneData<T, TLaneData>[] = [];\r\n if (lanesSource?.length) {\r\n lanes = lanesSource.map((source) => ({\r\n ...source,\r\n items: [],\r\n }));\r\n }\r\n const bookingsWithoutLaneKey = bookings.filter(\r\n (a) => a.laneKey === undefined\r\n );\r\n const bookingsWithLaneKey = bookings.filter((a) => a.laneKey !== undefined);\r\n if (bookingsWithLaneKey.length) {\r\n const grouped = groupBy(\r\n bookingsWithLaneKey.map((booking, originalIndex) => ({\r\n ...booking,\r\n originalIndex,\r\n })),\r\n (a) => a.laneKey\r\n );\r\n lanes = Object.keys(grouped).map((key) => ({\r\n laneKey: Number(key),\r\n items: grouped[key],\r\n ...lanesSource?.find((a) => a.laneKey === Number(key)),\r\n }));\r\n const missingLanes = lanesSource?.filter(\r\n (a) => !lanes.some((l) => l.laneKey === a.laneKey)\r\n );\r\n lanes = lanes.concat(missingLanes.map((a) => ({ ...a, items: [] })));\r\n }\r\n if (bookingsWithoutLaneKey.length) {\r\n let remainingBookings: (T & BookingCalendarItemWithOriginalIndexT)[] =\r\n bookingsWithoutLaneKey\r\n .map((booking, originalIndex) => ({ ...booking, originalIndex }))\r\n .sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n while (remainingBookings.length > 0) {\r\n let min = 99999999999999;\r\n let bookingIndex = -1;\r\n let laneIndex = -1;\r\n lanes.forEach((lane, index) => {\r\n if (lanesSource?.some((l) => l.laneKey === lane.laneKey)) {\r\n return;\r\n }\r\n const lastTill = lane.items[lane.items.length - 1]?.till ?? from;\r\n const distances = remainingBookings.map((booking) => {\r\n const dist = booking.from.diff(lastTill);\r\n if (lane.items.length === 0) {\r\n return Math.abs(dist);\r\n }\r\n return dist;\r\n });\r\n const _min = Math.min(...distances.filter((a) => a >= 0));\r\n if (_min < min) {\r\n bookingIndex = distances.indexOf(_min);\r\n laneIndex = index;\r\n }\r\n });\r\n if (bookingIndex >= 0 && laneIndex >= 0) {\r\n lanes[laneIndex].items = lanes[laneIndex].items.concat({\r\n ...remainingBookings[bookingIndex],\r\n });\r\n remainingBookings.splice(bookingIndex, 1);\r\n } else {\r\n lanes = lanes.concat({\r\n items: [{ ...remainingBookings[0] }],\r\n laneKey: lanes.length,\r\n data: undefined,\r\n });\r\n remainingBookings.shift();\r\n }\r\n }\r\n // Naive solution that is much less computationally intensive but yields more lanes than necessary\r\n /*bookings.forEach((booking, originalIndex) => {\r\n let found = false;\r\n lanes.forEach((lane, index) => {\r\n if (!lane.some(i => itemsOverlap(booking, i))) {\r\n lanes[index] = lanes[index].concat({ ...booking, originalIndex });\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n lanes = lanes.concat([[{ ...booking, originalIndex }]]);\r\n }\r\n });*/\r\n }\r\n for (let index = 0; index < lanes.length; index++) {\r\n const lane = lanes[index];\r\n lanes[index].items = lane.items.sort(\r\n (a, b) => a.from.valueOf() - b.from.valueOf()\r\n );\r\n }\r\n if (lanes.length < minLanesCount) {\r\n lanes = lanes.concat(\r\n new Array<LaneData<T, TLaneData>>(minLanesCount - lanes.length)\r\n .fill(null)\r\n .map((_, index) => ({\r\n items: [],\r\n laneKey: index + lanes.length,\r\n data: null,\r\n }))\r\n );\r\n }\r\n const findIndex = (\r\n arr: (LaneData<T, TLaneData> | LaneSourceData<T, TLaneData>)[],\r\n laneKey: string | undefined | number\r\n ): number => {\r\n const unmatchedVal = unmatchedToFront\r\n ? Number.MIN_SAFE_INTEGER\r\n : Number.MAX_SAFE_INTEGER;\r\n if (!laneKey) {\r\n return unmatchedVal;\r\n }\r\n const index = arr.findIndex((item) => item.laneKey === laneKey);\r\n return index === -1 ? unmatchedVal : index;\r\n };\r\n\r\n const sortArrayByLaneKeys = (\r\n referenceArray: LaneSourceData<T, TLaneData>[],\r\n arrayToSort: LaneData<T, TLaneData>[]\r\n ): LaneData<T, TLaneData>[] => {\r\n return [...arrayToSort].sort((a, b) => {\r\n const indexA = findIndex(referenceArray, a.laneKey);\r\n const indexB = findIndex(referenceArray, b.laneKey);\r\n return indexA - indexB;\r\n });\r\n };\r\n lanes = sortArrayByLaneKeys(lanesSource, lanes);\r\n return lanes;\r\n}\r\n\r\nexport function itemsOverlap<T extends BookingCalendarItemT>(a: T, b: T) {\r\n if (!a?.from || !a?.till || !b?.from || !b?.till) {\r\n return false;\r\n }\r\n if (b.till.isBefore(a.from)) {\r\n return false;\r\n }\r\n if (b.from.isAfter(a.till)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const getItemPositionStyle = (marginStart: number, width: number) =>\r\n ({\r\n marginLeft: `${marginStart * 100}%`,\r\n width: `${width * 100}%`,\r\n } as React.CSSProperties);\r\n\r\nexport function calculateItemsDimensions<T extends BookingCalendarItemT>(\r\n items: T[],\r\n from: Moment,\r\n till: Moment\r\n) {\r\n let lastEnd = 0;\r\n const widthMs = till.valueOf() - from.valueOf();\r\n const startMs = from.valueOf();\r\n const endMs = till.valueOf();\r\n return widthMs > 0\r\n ? items?.map((item) => {\r\n const startIsCut = item.from.valueOf() < startMs;\r\n const realStart = (item.from.valueOf() - startMs) / widthMs;\r\n const realFrom = startIsCut ? moment(startMs) : moment(item.from);\r\n const start = startIsCut ? 0 : realStart;\r\n const endIsCut = item.till.valueOf() > endMs;\r\n const realEnd = (item.till.valueOf() - startMs) / widthMs;\r\n const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;\r\n const realTill = endIsCut ? moment(endMs) : moment(item.till);\r\n const marginStart = start - lastEnd;\r\n lastEnd = (item.till.valueOf() - startMs) / widthMs;\r\n return {\r\n item,\r\n start,\r\n realStart,\r\n realFrom,\r\n startIsCut,\r\n width: end - start,\r\n end,\r\n realEnd,\r\n realTill,\r\n endIsCut,\r\n marginStart,\r\n };\r\n })\r\n : [];\r\n}\r\n\r\nexport const generateControlItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n startOfStep: Moment\r\n) => {\r\n if (!from || !till || !step) {\r\n return [];\r\n }\r\n let steps = Math.max(\r\n Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()),\r\n 2\r\n );\r\n let subtract =\r\n (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();\r\n if (subtract > 0) {\r\n subtract -= step.asMilliseconds();\r\n }\r\n if (till.valueOf() - from.valueOf() > step.asMilliseconds()) {\r\n steps += 1;\r\n }\r\n return new Array(steps).fill(0).map((_, index) => ({\r\n from: from\r\n .clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from\r\n .clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * (index + 1)),\r\n }));\r\n};\r\n\r\nexport interface GridItem {\r\n left: number;\r\n date: Moment;\r\n stepProportion: number;\r\n opacity: number;\r\n}\r\n\r\nexport const generateGridItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n containerWidthPx: number,\r\n availableSteps: Duration[],\r\n goalGridWidthPx: number,\r\n startOfStep: Moment\r\n): { items: GridItem[]; bestStep: Duration } => {\r\n if (\r\n !from ||\r\n !till ||\r\n !containerWidthPx ||\r\n !availableSteps?.length ||\r\n !goalGridWidthPx ||\r\n !step ||\r\n !startOfStep\r\n ) {\r\n return { bestStep: availableSteps?.[0], items: [] };\r\n }\r\n const stepMs = step.asMilliseconds();\r\n const fromMs = from.valueOf();\r\n const tillMs = till.valueOf();\r\n const timeLengthMs = tillMs - fromMs;\r\n const approximateStepsCount = containerWidthPx / goalGridWidthPx;\r\n const approximateStepMs = timeLengthMs / approximateStepsCount;\r\n const availableStepsDistancesMs = availableSteps.map((a) =>\r\n Math.abs(a.asMilliseconds() - approximateStepMs)\r\n );\r\n const smallestDistance = Math.min(...availableStepsDistancesMs);\r\n const bestStepIndex = availableStepsDistancesMs.findIndex(\r\n (a) => a === smallestDistance\r\n );\r\n const bestStep = availableSteps[bestStepIndex];\r\n const subtract =\r\n (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();\r\n let startMs = fromMs - subtract;\r\n let steps: Moment[] = [];\r\n while (startMs <= tillMs) {\r\n steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));\r\n startMs += bestStep.asMilliseconds();\r\n }\r\n return {\r\n items: steps\r\n .filter((a) => a.valueOf() > fromMs && a.valueOf() < tillMs)\r\n .map((date) => {\r\n const stepProportion =\r\n ((date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs) / stepMs;\r\n let numberOfRoots = 0;\r\n let current = stepProportion;\r\n let currentTop = 1;\r\n let tolerance = 0.001;\r\n while (current > tolerance && current < currentTop - tolerance) {\r\n numberOfRoots += 1;\r\n currentTop = 1 / Math.pow(2, numberOfRoots);\r\n if (current > currentTop) {\r\n current -= currentTop;\r\n }\r\n }\r\n return {\r\n left: (date.valueOf() - fromMs) / timeLengthMs,\r\n date,\r\n stepProportion,\r\n opacity: 1 / (numberOfRoots || 1),\r\n };\r\n }),\r\n bestStep,\r\n };\r\n};\r\n"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>guestbell-forms [17 May 2023 at 10:49]</title>
6
+ <title>guestbell-forms [17 May 2023 at 10:54]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.0.26",
2
+ "version": "3.0.27",
3
3
  "description": "React forms with validation as used in GuestBell",
4
4
  "keywords": [
5
5
  "react",