guestbell-forms 3.0.47 → 3.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/bookingCalendar/BookingCalendar.js +9 -2
- package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js +19 -1
- package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.d.ts +1 -0
- package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.js +3 -1
- package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js +7 -3
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarNowSection/BookingCalendarNowSection.d.ts +1 -0
- package/build/components/bookingCalendar/bookingCalendarNowSection/BookingCalendarNowSection.js +3 -1
- package/build/components/bookingCalendar/bookingCalendarNowSection/BookingCalendarNowSection.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.d.ts +1 -0
- package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js +2 -1
- package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map +1 -1
- package/build/components/bookingCalendar/utils.js +5 -2
- package/build/components/bookingCalendar/utils.js.map +1 -1
- package/build/dist/guestbell-forms.css +2 -5
- package/build/dist/guestbell-forms.css.map +1 -1
- package/build/dist/guestbell-forms.min.css +1 -1
- package/build/dist/report.html +2 -2
- package/build/scss/components/bookingCalendar/bookingCalendar.scss +0 -3
- package/package.json +1 -1
- package/src/lib/components/bookingCalendar/BookingCalendar.tsx +6 -1
- package/src/lib/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.tsx +23 -8
- package/src/lib/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.tsx +4 -1
- package/src/lib/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.tsx +12 -2
- package/src/lib/components/bookingCalendar/bookingCalendarNowSection/BookingCalendarNowSection.tsx +4 -1
- package/src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx +2 -0
- package/src/lib/components/bookingCalendar/utils.ts +5 -2
- package/src/lib/scss/components/bookingCalendar/bookingCalendar.scss +0 -3
- package/src/stories/OverlappingSchedule.tsx +4 -4
package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BookingCalendarSelection.js","names":["React","_interopRequireWildcard","require","_classes","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","BookingCalendarSelection","Component","constructor","props","animationInProgress","containerRef","createRef","state","hold","selectionBox","selectionBoxOrigin","selectionBoxTarget","animation","handleMouseUp","bind","handleMouseDown","handleMouseMove","handleMouseLeave","handleTransformBox","evt","_this$props$onSelecte","_this$props","distance","Math","sqrt","pow","setState","setTimeout","minSelectionSize","onSelected","origin","target","e","_this$containerRef$cu","disabled","nativeEvent","button","clearTimeout","bb","current","getBoundingClientRect","pageX","x","pageY","y","_this$containerRef$cu2","_this$props$onSelecti","_this$props2","onSelecting","render","baseStyle","zIndex","left","min","top","height","abs","width","userSelect","boxVisible","createElement","ref","className","bookingCalendarSelectionDefaultClasses","root","style","undefined","gridRowEnd","dataRowsCount","onMouseDown","onMouseUp","onMouseMove","onMouseLeave","selection","children","exports"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { bookingCalendarSelectionDefaultClasses } from './classes';\r\n\r\nexport type BookingCalendarSelectionCoordinates = [number, number];\r\nexport interface BookingCalendarSelectionData {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n}\r\nexport interface BookingCalendarSelectionProps {\r\n disabled?: boolean;\r\n onSelecting?: (data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n }) => void;\r\n onSelected?: (\r\n data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n },\r\n e: React.MouseEvent<HTMLElement>\r\n ) => void;\r\n dataRowsCount: number;\r\n minSelectionSize: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport interface BookingCalendarSelectionState {\r\n selectionBoxOrigin: BookingCalendarSelectionCoordinates;\r\n selectionBoxTarget: BookingCalendarSelectionCoordinates;\r\n hold: boolean;\r\n animation: string;\r\n selectionBox: boolean;\r\n}\r\n\r\nexport default class BookingCalendarSelection extends React.Component<\r\n BookingCalendarSelectionProps,\r\n BookingCalendarSelectionState\r\n> {\r\n private animationInProgress: number;\r\n private containerRef: React.RefObject<HTMLDivElement>;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.animationInProgress = null;\r\n this.containerRef = React.createRef();\r\n this.state = {\r\n hold: false,\r\n selectionBox: false,\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n animation: '',\r\n };\r\n this.handleMouseUp = this.handleMouseUp.bind(this);\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleMouseMove = this.handleMouseMove.bind(this);\r\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\r\n }\r\n\r\n handleTransformBox() {\r\n const { selectionBoxOrigin, selectionBoxTarget } = this.state;\r\n if (\r\n selectionBoxOrigin[1] > selectionBoxTarget[1] &&\r\n selectionBoxOrigin[0] > selectionBoxTarget[0]\r\n ) {\r\n return 'scaleY(-1) scaleX(-1)';\r\n }\r\n\r\n if (selectionBoxOrigin[1] > selectionBoxTarget[1]) {\r\n return 'scaleY(-1)';\r\n }\r\n if (selectionBoxOrigin[0] > selectionBoxTarget[0]) {\r\n return 'scaleX(-1)';\r\n }\r\n return null;\r\n }\r\n\r\n handleMouseLeave(evt: React.MouseEvent<HTMLElement>) {\r\n /*if (this.state.hold) {\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = (setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown) as number;\r\n }*/\r\n }\r\n\r\n handleMouseUp(evt: React.MouseEvent<HTMLElement>) {\r\n if (this.state.hold) {\r\n const distance = Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n );\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown as number;\r\n if (distance < this.props.minSelectionSize) {\r\n return;\r\n }\r\n this.props.onSelected?.(\r\n {\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n },\r\n evt\r\n );\r\n }\r\n }\r\n\r\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\r\n if (this.props.disabled || e.nativeEvent.button !== 0) {\r\n return;\r\n }\r\n clearTimeout(this.animationInProgress);\r\n this.animationInProgress = null;\r\n this.setState({ selectionBox: false, animation: '' });\r\n\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n hold: true,\r\n selectionBoxOrigin: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n selectionBoxTarget: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n });\r\n }\r\n\r\n private handleMouseMove(evt: React.MouseEvent<HTMLDivElement>) {\r\n if (this.state.hold && !this.state.selectionBox) {\r\n this.setState({ selectionBox: true });\r\n }\r\n if (this.state.selectionBox && !this.animationInProgress) {\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n selectionBoxTarget: [\r\n evt.nativeEvent.pageX - bb?.x,\r\n evt.nativeEvent.pageY - bb?.y,\r\n ],\r\n });\r\n\r\n this.props.onSelecting?.({\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const baseStyle: React.CSSProperties = {\r\n zIndex: 10,\r\n left: Math.min(\r\n this.state.selectionBoxOrigin[0],\r\n this.state.selectionBoxTarget[0]\r\n ),\r\n top: Math.min(\r\n this.state.selectionBoxOrigin[1],\r\n this.state.selectionBoxTarget[1]\r\n ),\r\n height: Math.abs(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1\r\n ),\r\n width: Math.abs(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1\r\n ),\r\n userSelect: 'none',\r\n // transformOrigin: 'top left',\r\n // transform: this.handleTransformBox(),\r\n };\r\n const boxVisible =\r\n Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n ) > this.props.minSelectionSize;\r\n return (\r\n <div\r\n ref={this.containerRef}\r\n className={bookingCalendarSelectionDefaultClasses.root}\r\n style={{\r\n zIndex: this.state.selectionBox ? 99999 : undefined,\r\n gridRowEnd: `span ${this.props.dataRowsCount}`,\r\n }}\r\n onMouseDown={this.handleMouseDown}\r\n onMouseUp={this.handleMouseUp}\r\n onMouseMove={this.handleMouseMove}\r\n onMouseLeave={this.handleMouseLeave}\r\n >\r\n {boxVisible && this.state.selectionBox && (\r\n <div\r\n className={`${bookingCalendarSelectionDefaultClasses.selection} ${this.state.animation}`}\r\n style={baseStyle}\r\n >\r\n {this.props.children}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"BookingCalendarSelection.js","names":["React","_interopRequireWildcard","require","_classes","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","BookingCalendarSelection","Component","constructor","props","animationInProgress","containerRef","createRef","state","hold","selectionBox","selectionBoxOrigin","selectionBoxTarget","animation","handleMouseUp","bind","handleMouseDown","handleMouseMove","handleMouseLeave","handleTransformBox","evt","_this$props$onSelecte","_this$props","distance","Math","sqrt","pow","setState","setTimeout","minSelectionSize","onSelected","origin","target","e","_this$containerRef$cu","disabled","nativeEvent","button","clearTimeout","bb","current","getBoundingClientRect","pageX","x","pageY","y","_this$containerRef$cu2","_this$props$onSelecti","_this$props2","onSelecting","render","baseStyle","zIndex","left","min","top","height","abs","width","userSelect","boxVisible","createElement","ref","className","bookingCalendarSelectionDefaultClasses","root","style","undefined","gridRowEnd","dataRowsCount","gridRowStart","firstDataRowIndex","onMouseDown","onMouseUp","onMouseMove","onMouseLeave","selection","children","exports"],"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { bookingCalendarSelectionDefaultClasses } from './classes';\r\n\r\nexport type BookingCalendarSelectionCoordinates = [number, number];\r\nexport interface BookingCalendarSelectionData {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n}\r\nexport interface BookingCalendarSelectionProps {\r\n disabled?: boolean;\r\n onSelecting?: (data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n }) => void;\r\n onSelected?: (\r\n data: {\r\n origin: BookingCalendarSelectionCoordinates;\r\n target: BookingCalendarSelectionCoordinates;\r\n },\r\n e: React.MouseEvent<HTMLElement>\r\n ) => void;\r\n dataRowsCount: number;\r\n firstDataRowIndex: number;\r\n minSelectionSize: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport interface BookingCalendarSelectionState {\r\n selectionBoxOrigin: BookingCalendarSelectionCoordinates;\r\n selectionBoxTarget: BookingCalendarSelectionCoordinates;\r\n hold: boolean;\r\n animation: string;\r\n selectionBox: boolean;\r\n}\r\n\r\nexport default class BookingCalendarSelection extends React.Component<\r\n BookingCalendarSelectionProps,\r\n BookingCalendarSelectionState\r\n> {\r\n private animationInProgress: number;\r\n private containerRef: React.RefObject<HTMLDivElement>;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.animationInProgress = null;\r\n this.containerRef = React.createRef();\r\n this.state = {\r\n hold: false,\r\n selectionBox: false,\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n animation: '',\r\n };\r\n this.handleMouseUp = this.handleMouseUp.bind(this);\r\n this.handleMouseDown = this.handleMouseDown.bind(this);\r\n this.handleMouseMove = this.handleMouseMove.bind(this);\r\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\r\n }\r\n\r\n handleTransformBox() {\r\n const { selectionBoxOrigin, selectionBoxTarget } = this.state;\r\n if (\r\n selectionBoxOrigin[1] > selectionBoxTarget[1] &&\r\n selectionBoxOrigin[0] > selectionBoxTarget[0]\r\n ) {\r\n return 'scaleY(-1) scaleX(-1)';\r\n }\r\n\r\n if (selectionBoxOrigin[1] > selectionBoxTarget[1]) {\r\n return 'scaleY(-1)';\r\n }\r\n if (selectionBoxOrigin[0] > selectionBoxTarget[0]) {\r\n return 'scaleX(-1)';\r\n }\r\n return null;\r\n }\r\n\r\n handleMouseLeave(evt: React.MouseEvent<HTMLElement>) {\r\n /*if (this.state.hold) {\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = (setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown) as number;\r\n }*/\r\n }\r\n\r\n handleMouseUp(evt: React.MouseEvent<HTMLElement>) {\r\n if (this.state.hold) {\r\n const distance = Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n );\r\n this.setState({\r\n hold: false,\r\n animation: 'bookingCalendar__selection--fadeout',\r\n });\r\n this.animationInProgress = setTimeout(() => {\r\n this.setState({\r\n selectionBox: false,\r\n animation: '',\r\n selectionBoxOrigin: [0, 0],\r\n selectionBoxTarget: [0, 0],\r\n });\r\n this.animationInProgress = null;\r\n }, 300) as unknown as number;\r\n if (distance < this.props.minSelectionSize) {\r\n return;\r\n }\r\n this.props.onSelected?.(\r\n {\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n },\r\n evt\r\n );\r\n }\r\n }\r\n\r\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\r\n if (this.props.disabled || e.nativeEvent.button !== 0) {\r\n return;\r\n }\r\n clearTimeout(this.animationInProgress);\r\n this.animationInProgress = null;\r\n this.setState({ selectionBox: false, animation: '' });\r\n\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n hold: true,\r\n selectionBoxOrigin: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n selectionBoxTarget: [\r\n e.nativeEvent.pageX - bb.x,\r\n e.nativeEvent.pageY - bb.y,\r\n ],\r\n });\r\n }\r\n\r\n private handleMouseMove(evt: React.MouseEvent<HTMLDivElement>) {\r\n if (this.state.hold && !this.state.selectionBox) {\r\n this.setState({ selectionBox: true });\r\n }\r\n if (this.state.selectionBox && !this.animationInProgress) {\r\n const bb = this.containerRef.current?.getBoundingClientRect();\r\n this.setState({\r\n selectionBoxTarget: [\r\n evt.nativeEvent.pageX - bb?.x,\r\n evt.nativeEvent.pageY - bb?.y,\r\n ],\r\n });\r\n\r\n this.props.onSelecting?.({\r\n origin: this.state.selectionBoxOrigin,\r\n target: this.state.selectionBoxTarget,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const baseStyle: React.CSSProperties = {\r\n zIndex: 10,\r\n left: Math.min(\r\n this.state.selectionBoxOrigin[0],\r\n this.state.selectionBoxTarget[0]\r\n ),\r\n top: Math.min(\r\n this.state.selectionBoxOrigin[1],\r\n this.state.selectionBoxTarget[1]\r\n ),\r\n height: Math.abs(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1\r\n ),\r\n width: Math.abs(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1\r\n ),\r\n userSelect: 'none',\r\n // transformOrigin: 'top left',\r\n // transform: this.handleTransformBox(),\r\n };\r\n const boxVisible =\r\n Math.sqrt(\r\n Math.pow(\r\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\r\n 2\r\n ) +\r\n Math.pow(\r\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\r\n 2\r\n )\r\n ) > this.props.minSelectionSize;\r\n return (\r\n <div\r\n ref={this.containerRef}\r\n className={bookingCalendarSelectionDefaultClasses.root}\r\n style={{\r\n zIndex: this.state.selectionBox ? 99999 : undefined,\r\n gridRowEnd: `span ${this.props.dataRowsCount}`,\r\n gridRowStart: this.props.firstDataRowIndex,\r\n }}\r\n onMouseDown={this.handleMouseDown}\r\n onMouseUp={this.handleMouseUp}\r\n onMouseMove={this.handleMouseMove}\r\n onMouseLeave={this.handleMouseLeave}\r\n >\r\n {boxVisible && this.state.selectionBox && (\r\n <div\r\n className={`${bookingCalendarSelectionDefaultClasses.selection} ${this.state.animation}`}\r\n style={baseStyle}\r\n >\r\n {this.props.children}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
|
@@ -171,14 +171,17 @@ function calculateItemsDimensions(items, from, till) {
|
|
171
171
|
const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;
|
172
172
|
const realTill = endIsCut ? (0, _moment.default)(endMs) : (0, _moment.default)(item.till);
|
173
173
|
const marginStart = start - lastEnd;
|
174
|
-
|
174
|
+
const width = end - start;
|
175
|
+
if (end > 0 && start < 1) {
|
176
|
+
lastEnd = Math.max(Math.min(realEnd, 1), 0);
|
177
|
+
}
|
175
178
|
return {
|
176
179
|
item,
|
177
180
|
start,
|
178
181
|
realStart,
|
179
182
|
realFrom,
|
180
183
|
startIsCut,
|
181
|
-
width
|
184
|
+
width,
|
182
185
|
end,
|
183
186
|
realEnd,
|
184
187
|
realTill,
|
@@ -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","till","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","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","laneItems","normal","atEnd","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","id","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>(\r\n items: T[],\r\n iterator: (item: T) => number | string\r\n): { [key: string | number]: T[] } {\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 till: 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 laneItems = lanes[index].items;\r\n const normal = laneItems.filter((a) => a.till.valueOf() < till.valueOf());\r\n normal.sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n const atEnd = laneItems.filter((a) => a.till.valueOf() >= till.valueOf());\r\n atEnd.sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n lanes[index].items = [...normal, ...atEnd];\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 === undefined || laneKey === null) {\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\ntype Picked = Pick<BookingCalendarItemT, 'from' | 'till'>;\r\nexport function itemsOverlap(a: Picked, b: Picked) {\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 = Math.min((item.till.valueOf() - startMs) / widthMs, 1);\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 id: index,\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","till","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","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","laneItems","normal","atEnd","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","max","generateControlItems","step","startOfStep","steps","ceil","asMilliseconds","subtract","clone","add","id","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>(\r\n items: T[],\r\n iterator: (item: T) => number | string\r\n): { [key: string | number]: T[] } {\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 till: 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 laneItems = lanes[index].items;\r\n const normal = laneItems.filter((a) => a.till.valueOf() < till.valueOf());\r\n normal.sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n const atEnd = laneItems.filter((a) => a.till.valueOf() >= till.valueOf());\r\n atEnd.sort((a, b) => a.from.valueOf() - b.from.valueOf());\r\n lanes[index].items = [...normal, ...atEnd];\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 === undefined || laneKey === null) {\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\ntype Picked = Pick<BookingCalendarItemT, 'from' | 'till'>;\r\nexport function itemsOverlap(a: Picked, b: Picked) {\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 const width = end - start;\r\n if (end > 0 && start < 1) {\r\n lastEnd = Math.max(Math.min(realEnd, 1), 0);\r\n }\r\n return {\r\n item,\r\n start,\r\n realStart,\r\n realFrom,\r\n startIsCut,\r\n width,\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 id: index,\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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"}
|
@@ -2621,8 +2621,7 @@ a.guestbell__dropdown-toggle {
|
|
2621
2621
|
right: 0;
|
2622
2622
|
height: 100%;
|
2623
2623
|
pointer-events: none;
|
2624
|
-
grid-column: 2;
|
2625
|
-
grid-row-start: 2; }
|
2624
|
+
grid-column: 2; }
|
2626
2625
|
|
2627
2626
|
.bookingCalendar__grid__item {
|
2628
2627
|
height: 100%;
|
@@ -2719,8 +2718,7 @@ a.guestbell__dropdown-toggle {
|
|
2719
2718
|
left: 0;
|
2720
2719
|
right: 0;
|
2721
2720
|
height: 100%;
|
2722
|
-
grid-column: 2;
|
2723
|
-
grid-row-start: 2; }
|
2721
|
+
grid-column: 2; }
|
2724
2722
|
|
2725
2723
|
.bookingCalendar__selection {
|
2726
2724
|
background-color: rgba(0, 0, 0, 0.2);
|
@@ -2744,7 +2742,6 @@ a.guestbell__dropdown-toggle {
|
|
2744
2742
|
height: 100%;
|
2745
2743
|
pointer-events: none;
|
2746
2744
|
grid-column: 2;
|
2747
|
-
grid-row-start: 2;
|
2748
2745
|
display: flex; }
|
2749
2746
|
|
2750
2747
|
.bookingCalendar__nowSection__now {
|