guestbell-forms 2.0.298 → 2.0.300
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/InputHeader/InputHeader.js +258 -323
- package/build/components/InputHeader/InputHeader.js.map +1 -1
- package/build/components/InputHeader/InputHeaderContext.js +6 -8
- package/build/components/InputHeader/InputHeaderContext.js.map +1 -1
- package/build/components/InputHeader/index.js +4 -6
- package/build/components/InputHeader/index.js.map +1 -1
- package/build/components/InputHeader/withInputHeaderContext.js +9 -13
- package/build/components/InputHeader/withInputHeaderContext.js.map +1 -1
- package/build/components/base/input/BaseInput.js +334 -418
- package/build/components/base/input/BaseInput.js.map +1 -1
- package/build/components/base/input/index.js +1 -1
- package/build/components/base/input/index.js.map +1 -1
- package/build/components/bookingCalendar/BookingCalendar.js +68 -85
- package/build/components/bookingCalendar/BookingCalendar.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js +40 -71
- package/build/components/bookingCalendar/bookingCalendarControls/BookingCalendarControls.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarControls/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarControls/classes.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarControls/index.js +2 -2
- package/build/components/bookingCalendar/bookingCalendarControls/index.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js +22 -41
- package/build/components/bookingCalendar/bookingCalendarDatePicker/BookingCalendarDatePicker.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarDatePicker/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarDatePicker/classes.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarDatePicker/index.js +2 -2
- package/build/components/bookingCalendar/bookingCalendarDatePicker/index.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.js +20 -24
- package/build/components/bookingCalendar/bookingCalendarGrid/BookingCalendarGrid.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarGrid/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarGrid/classes.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js +9 -12
- package/build/components/bookingCalendar/bookingCalendarItem/BookingCalendarItem.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarItem/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarItem/classes.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarItem/index.js +2 -2
- package/build/components/bookingCalendar/bookingCalendarItem/index.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.js +23 -28
- package/build/components/bookingCalendar/bookingCalendarLane/BookingCalendarLane.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLane/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarLane/classes.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLane/index.js +2 -2
- package/build/components/bookingCalendar/bookingCalendarLane/index.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.js +6 -6
- package/build/components/bookingCalendar/bookingCalendarLaneHeader/BookingCalendarLaneHeader.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLaneHeader/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarLaneHeader/classes.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLaneHeader/index.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarLaneHeader/index.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js +12 -16
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeader.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js +27 -31
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/BookingCalendarLanesHeaderRenderItem.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/classes.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/index.js +2 -2
- package/build/components/bookingCalendar/bookingCalendarLanesHeader/index.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.js +19 -19
- package/build/components/bookingCalendar/bookingCalendarRenderItem/BookingCalendarRenderItem.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarRenderItem/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarRenderItem/classes.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarRenderItem/index.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarRenderItem/index.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js +133 -175
- package/build/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.js +17 -19
- package/build/components/bookingCalendar/bookingCalendarTimeAxis/BookingCalendarTimeAxis.js.map +1 -1
- package/build/components/bookingCalendar/bookingCalendarTimeAxis/classes.js +1 -1
- package/build/components/bookingCalendar/bookingCalendarTimeAxis/classes.js.map +1 -1
- package/build/components/bookingCalendar/classes.js +1 -1
- package/build/components/bookingCalendar/classes.js.map +1 -1
- package/build/components/bookingCalendar/common.js +5 -7
- package/build/components/bookingCalendar/common.js.map +1 -1
- package/build/components/bookingCalendar/index.js +3 -3
- package/build/components/bookingCalendar/index.js.map +1 -1
- package/build/components/bookingCalendar/utils.js +143 -205
- package/build/components/bookingCalendar/utils.js.map +1 -1
- package/build/components/button/Button.js +101 -123
- package/build/components/button/Button.js.map +1 -1
- package/build/components/button/index.js +4 -6
- package/build/components/button/index.js.map +1 -1
- package/build/components/checkbox/Checkbox.js +102 -145
- package/build/components/checkbox/Checkbox.js.map +1 -1
- package/build/components/checkbox/index.js +4 -6
- package/build/components/checkbox/index.js.map +1 -1
- package/build/components/dropdown/Dropdown.js +41 -57
- package/build/components/dropdown/Dropdown.js.map +1 -1
- package/build/components/dropdown/index.js +4 -6
- package/build/components/dropdown/index.js.map +1 -1
- package/build/components/dynamicSubmit/DynamicSubmit.js +81 -123
- package/build/components/dynamicSubmit/DynamicSubmit.js.map +1 -1
- package/build/components/dynamicSubmit/index.js +4 -6
- package/build/components/dynamicSubmit/index.js.map +1 -1
- package/build/components/form/Form.js +139 -193
- package/build/components/form/Form.js.map +1 -1
- package/build/components/form/FormContext.js +6 -8
- package/build/components/form/FormContext.js.map +1 -1
- package/build/components/form/FormValidationSummary.js +57 -105
- package/build/components/form/FormValidationSummary.js.map +1 -1
- package/build/components/form/index.js +5 -7
- package/build/components/form/index.js.map +1 -1
- package/build/components/form/withFormContext.js +9 -13
- package/build/components/form/withFormContext.js.map +1 -1
- package/build/components/inputGroup/InputGroup.js +16 -48
- package/build/components/inputGroup/InputGroup.js.map +1 -1
- package/build/components/inputGroup/index.js +4 -6
- package/build/components/inputGroup/index.js.map +1 -1
- package/build/components/money/Money.js +137 -211
- package/build/components/money/Money.js.map +1 -1
- package/build/components/money/index.js +4 -6
- package/build/components/money/index.js.map +1 -1
- package/build/components/numberInput/NumberInput.js +106 -144
- package/build/components/numberInput/NumberInput.js.map +1 -1
- package/build/components/numberInput/index.js +4 -6
- package/build/components/numberInput/index.js.map +1 -1
- package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js +162 -220
- package/build/components/openingHours/openingHoursDay/OpeningHoursDay.js.map +1 -1
- package/build/components/openingHours/openingHoursDay/index.js +4 -6
- package/build/components/openingHours/openingHoursDay/index.js.map +1 -1
- package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.js +114 -191
- package/build/components/openingHours/openingHoursSpecial/OpeningHoursSpecial.js.map +1 -1
- package/build/components/openingHours/openingHoursSpecial/index.js +4 -6
- package/build/components/openingHours/openingHoursSpecial/index.js.map +1 -1
- package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.js +150 -209
- package/build/components/openingHours/openingHoursWeek/OpeningHoursWeek.js.map +1 -1
- package/build/components/openingHours/openingHoursWeek/index.js +4 -6
- package/build/components/openingHours/openingHoursWeek/index.js.map +1 -1
- package/build/components/openingHours/utils/OpeningHoursUtil.js +51 -76
- package/build/components/openingHours/utils/OpeningHoursUtil.js.map +1 -1
- package/build/components/radio/Radio.js +38 -75
- package/build/components/radio/Radio.js.map +1 -1
- package/build/components/radio/index.js +4 -6
- package/build/components/radio/index.js.map +1 -1
- package/build/components/radioContainer/RadioContainer.js +19 -49
- package/build/components/radioContainer/RadioContainer.js.map +1 -1
- package/build/components/radioContainer/index.js +4 -6
- package/build/components/radioContainer/index.js.map +1 -1
- package/build/components/select/Select.js +186 -264
- package/build/components/select/Select.js.map +1 -1
- package/build/components/select/index.js +4 -6
- package/build/components/select/index.js.map +1 -1
- package/build/components/submit/Submit.js +50 -87
- package/build/components/submit/Submit.js.map +1 -1
- package/build/components/submit/index.js +4 -6
- package/build/components/submit/index.js.map +1 -1
- package/build/components/submit/subComponents/SubmitValidationSummary.js +5 -7
- package/build/components/submit/subComponents/SubmitValidationSummary.js.map +1 -1
- package/build/components/tags/Tags.js +365 -565
- package/build/components/tags/Tags.js.map +1 -1
- package/build/components/tags/index.js +4 -6
- package/build/components/tags/index.js.map +1 -1
- package/build/components/tags/subComponents/TagsSuggestions.js +29 -30
- package/build/components/tags/subComponents/TagsSuggestions.js.map +1 -1
- package/build/components/text/Text.js +95 -138
- package/build/components/text/Text.js.map +1 -1
- package/build/components/text/index.js +4 -6
- package/build/components/text/index.js.map +1 -1
- package/build/components/textArea/TextArea.js +52 -91
- package/build/components/textArea/TextArea.js.map +1 -1
- package/build/components/textArea/index.js +4 -6
- package/build/components/textArea/index.js.map +1 -1
- package/build/components/themeProvider/ThemeContext.js +6 -8
- package/build/components/themeProvider/ThemeContext.js.map +1 -1
- package/build/components/themeProvider/ThemeProvider.js +3 -5
- package/build/components/themeProvider/ThemeProvider.js.map +1 -1
- package/build/components/themeProvider/index.js +4 -6
- package/build/components/themeProvider/index.js.map +1 -1
- package/build/components/themeProvider/withThemeContext.js +10 -14
- package/build/components/themeProvider/withThemeContext.js.map +1 -1
- package/build/components/time/Time.js +184 -228
- package/build/components/time/Time.js.map +1 -1
- package/build/components/time/index.js +4 -6
- package/build/components/time/index.js.map +1 -1
- package/build/components/timeSpan/TimeSpan.js +226 -280
- package/build/components/timeSpan/TimeSpan.js.map +1 -1
- package/build/components/timeSpan/index.js +4 -6
- package/build/components/timeSpan/index.js.map +1 -1
- package/build/components/utils/Guid.js +3 -5
- package/build/components/utils/Guid.js.map +1 -1
- package/build/components/utils/ShallowEqual.js +5 -11
- package/build/components/utils/ShallowEqual.js.map +1 -1
- package/build/components/utils/TimeUtil.js +8 -22
- package/build/components/utils/TimeUtil.js.map +1 -1
- package/build/components/utils/Typescript.js.map +1 -1
- package/build/dist/guestbell-forms.css +0 -6
- package/build/dist/guestbell-forms.css.map +1 -1
- package/build/dist/guestbell-forms.min.css +1 -1
- package/build/dist/guestbell-forms.min.js +1 -1
- package/build/dist/guestbell-forms.min.js.map +1 -1
- package/build/dist/report.html +2 -2
- package/build/index.js +23 -23
- package/build/index.js.map +1 -1
- package/build/types/ElementOverrideProp.js.map +1 -1
- package/build/types/Theme.js.map +1 -1
- package/build/types/ThemeOverrides.js.map +1 -1
- package/build/validators/EmailValidator.js +8 -22
- package/build/validators/EmailValidator.js.map +1 -1
- package/build/validators/LatitudeValidator.js +13 -27
- package/build/validators/LatitudeValidator.js.map +1 -1
- package/build/validators/LongitudeValidator.js +13 -27
- package/build/validators/LongitudeValidator.js.map +1 -1
- package/build/validators/NumberValidator.js +27 -39
- package/build/validators/NumberValidator.js.map +1 -1
- package/build/validators/UrlValidator.js +9 -23
- package/build/validators/UrlValidator.js.map +1 -1
- package/build/validators/base.js.map +1 -1
- package/build/validators/index.js +6 -6
- package/build/validators/index.js.map +1 -1
- package/package.json +8 -5
- package/tsconfig.json +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"file":"common.js","names":["defaultGetMomentFormatFunction","date","bestStep","undefined","valueOf","clone","startOf","defaultGetNewMomentFunction","moment","defaultGridAvailableSteps","duration"],"sources":["../../../src/lib/components/bookingCalendar/common.ts"],"sourcesContent":["import moment, { Moment, Duration, duration } from 'moment';\r\n\r\nexport interface BookingCalendarItemT {\r\n from: Moment;\r\n till: Moment;\r\n /*\r\n Optional index that identifies the lane\r\n */\r\n laneKey?: string | number;\r\n}\r\n\r\nexport interface BookingCalendarItemWithOriginalIndexT {\r\n originalIndex: number;\r\n}\r\n\r\nexport interface BookingCalendarDateRange {\r\n from: Moment;\r\n till: Moment;\r\n}\r\n\r\nexport interface ZoomLevel {\r\n step: Duration;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport const defaultGetMomentFormatFunction = (\r\n date: Moment,\r\n bestStep: Duration\r\n) => {\r\n if (!date || !bestStep) {\r\n return undefined;\r\n }\r\n if (\r\n date.valueOf() ===\r\n date\r\n .clone()\r\n .startOf('day')\r\n .valueOf()\r\n ) {\r\n return 'MMM Do';\r\n }\r\n return 'h:mm a';\r\n};\r\n\r\nexport type GetMomentFormatFunctionType = typeof defaultGetMomentFormatFunction;\r\n\r\nexport const defaultGetNewMomentFunction = (date: Date) => {\r\n return moment(date);\r\n};\r\n\r\nexport type GetNewMomentFunctionType = typeof defaultGetNewMomentFunction;\r\n\r\nexport const defaultGridAvailableSteps: Duration[] = [\r\n duration(1, 'minute'),\r\n duration(5, 'minute'),\r\n duration(10, 'minute'),\r\n duration(15, 'minute'),\r\n duration(20, 'minute'),\r\n duration(30, 'minute'),\r\n duration(1, 'hour'),\r\n duration(2, 'hour'),\r\n duration(4, 'hour'),\r\n duration(6, 'hour'),\r\n duration(8, 'hour'),\r\n duration(12, 'hour'),\r\n duration(1, 'day'),\r\n];\r\n"],"mappings":";;;;;;;AAAA;;;;;;AAyBO,MAAMA,8BAA8B,GAAG,CAC5CC,IAD4C,EAE5CC,QAF4C,KAGzC;EACH,IAAI,CAACD,IAAD,IAAS,CAACC,QAAd,EAAwB;IACtB,OAAOC,SAAP;EACD;;EACD,IACEF,IAAI,CAACG,OAAL,OACAH,IAAI,CACDI,KADH,GAEGC,OAFH,CAEW,KAFX,EAGGF,OAHH,EAFF,EAME;IACA,OAAO,QAAP;EACD;;EACD,OAAO,QAAP;AACD,CAjBM;;;;AAqBA,MAAMG,2BAA2B,GAAIN,IAAD,IAAgB;EACzD,OAAO,IAAAO,eAAA,EAAOP,IAAP,CAAP;AACD,CAFM;;;AAMA,MAAMQ,yBAAqC,GAAG,CACnD,IAAAC,gBAAA,EAAS,CAAT,EAAY,QAAZ,CADmD,EAEnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,QAAZ,CAFmD,EAGnD,IAAAA,gBAAA,EAAS,EAAT,EAAa,QAAb,CAHmD,EAInD,IAAAA,gBAAA,EAAS,EAAT,EAAa,QAAb,CAJmD,EAKnD,IAAAA,gBAAA,EAAS,EAAT,EAAa,QAAb,CALmD,EAMnD,IAAAA,gBAAA,EAAS,EAAT,EAAa,QAAb,CANmD,EAOnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CAPmD,EAQnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CARmD,EASnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CATmD,EAUnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CAVmD,EAWnD,IAAAA,gBAAA,EAAS,CAAT,EAAY,MAAZ,CAXmD,EAYnD,IAAAA,gBAAA,EAAS,EAAT,EAAa,MAAb,CAZmD,EAanD,IAAAA,gBAAA,EAAS,CAAT,EAAY,KAAZ,CAbmD,CAA9C"}
|
@@ -11,7 +11,7 @@ Object.keys(_BookingCalendar).forEach(function (key) {
|
|
11
11
|
if (key in exports && exports[key] === _BookingCalendar[key]) return;
|
12
12
|
Object.defineProperty(exports, key, {
|
13
13
|
enumerable: true,
|
14
|
-
get: function
|
14
|
+
get: function () {
|
15
15
|
return _BookingCalendar[key];
|
16
16
|
}
|
17
17
|
});
|
@@ -24,7 +24,7 @@ Object.keys(_common).forEach(function (key) {
|
|
24
24
|
if (key in exports && exports[key] === _common[key]) return;
|
25
25
|
Object.defineProperty(exports, key, {
|
26
26
|
enumerable: true,
|
27
|
-
get: function
|
27
|
+
get: function () {
|
28
28
|
return _common[key];
|
29
29
|
}
|
30
30
|
});
|
@@ -37,7 +37,7 @@ Object.keys(_classes).forEach(function (key) {
|
|
37
37
|
if (key in exports && exports[key] === _classes[key]) return;
|
38
38
|
Object.defineProperty(exports, key, {
|
39
39
|
enumerable: true,
|
40
|
-
get: function
|
40
|
+
get: function () {
|
41
41
|
return _classes[key];
|
42
42
|
}
|
43
43
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/components/bookingCalendar/index.ts"],"
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/lib/components/bookingCalendar/index.ts"],"sourcesContent":["export * from './BookingCalendar';\r\nexport * from './common';\r\nexport * from './classes';\r\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
@@ -3,37 +3,25 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
+
exports.calculateItemsDimensions = calculateItemsDimensions;
|
7
|
+
exports.getItemPositionStyle = exports.generateGridItems = exports.generateControlItems = void 0;
|
6
8
|
exports.groupBy = groupBy;
|
7
|
-
exports.splitBookingsToLanes = splitBookingsToLanes;
|
8
9
|
exports.itemsOverlap = itemsOverlap;
|
9
|
-
exports.
|
10
|
-
exports.generateGridItems = exports.generateControlItems = exports.getItemPositionStyle = void 0;
|
10
|
+
exports.splitBookingsToLanes = splitBookingsToLanes;
|
11
11
|
|
12
12
|
var _moment = _interopRequireDefault(require("moment"));
|
13
13
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
15
|
|
16
|
-
function
|
17
|
-
|
18
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
19
|
-
|
20
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
16
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
21
17
|
|
22
|
-
function
|
23
|
-
|
24
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
25
|
-
|
26
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
27
|
-
|
28
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
29
|
-
|
30
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
18
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
31
19
|
|
32
20
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
33
21
|
|
34
22
|
function groupBy(items, iterator) {
|
35
|
-
return items.reduce(
|
36
|
-
|
23
|
+
return items.reduce((obj, item) => {
|
24
|
+
const key = iterator(item);
|
37
25
|
|
38
26
|
if (!obj.hasOwnProperty(key)) {
|
39
27
|
obj[key] = [];
|
@@ -45,154 +33,114 @@ function groupBy(items, iterator) {
|
|
45
33
|
}
|
46
34
|
|
47
35
|
function splitBookingsToLanes(bookings, from, minLanesCount) {
|
48
|
-
|
36
|
+
let lanesSource = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
49
37
|
|
50
38
|
if (!bookings) {
|
51
39
|
return [];
|
52
40
|
}
|
53
41
|
|
54
|
-
|
42
|
+
let lanes = [];
|
55
43
|
|
56
44
|
if (lanesSource !== null && lanesSource !== void 0 && lanesSource.length) {
|
57
|
-
lanes = lanesSource.map(
|
58
|
-
|
59
|
-
|
60
|
-
});
|
61
|
-
});
|
45
|
+
lanes = lanesSource.map(source => _objectSpread(_objectSpread({}, source), {}, {
|
46
|
+
items: []
|
47
|
+
}));
|
62
48
|
}
|
63
49
|
|
64
|
-
|
65
|
-
|
66
|
-
});
|
67
|
-
var bookingsWithLaneKey = bookings.filter(function (a) {
|
68
|
-
return a.laneKey !== undefined;
|
69
|
-
});
|
50
|
+
const bookingsWithoutLaneKey = bookings.filter(a => a.laneKey === undefined);
|
51
|
+
const bookingsWithLaneKey = bookings.filter(a => a.laneKey !== undefined);
|
70
52
|
|
71
53
|
if (bookingsWithLaneKey.length) {
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
});
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
}, lanesSource === null || lanesSource === void 0 ? void 0 : lanesSource.find(function (a) {
|
84
|
-
return a.laneKey === Number(key);
|
85
|
-
}));
|
86
|
-
});
|
87
|
-
var missingLanes = lanesSource === null || lanesSource === void 0 ? void 0 : lanesSource.filter(function (a) {
|
88
|
-
return !lanes.some(function (l) {
|
89
|
-
return l.laneKey === a.laneKey;
|
90
|
-
});
|
91
|
-
});
|
92
|
-
lanes = lanes.concat(missingLanes.map(function (a) {
|
93
|
-
return _objectSpread(_objectSpread({}, a), {}, {
|
94
|
-
items: []
|
95
|
-
});
|
96
|
-
}));
|
54
|
+
const grouped = groupBy(bookingsWithLaneKey.map((booking, originalIndex) => _objectSpread(_objectSpread({}, booking), {}, {
|
55
|
+
originalIndex
|
56
|
+
})), a => a.laneKey);
|
57
|
+
lanes = Object.keys(grouped).map(key => _objectSpread({
|
58
|
+
laneKey: Number(key),
|
59
|
+
items: grouped[key]
|
60
|
+
}, lanesSource === null || lanesSource === void 0 ? void 0 : lanesSource.find(a => a.laneKey === Number(key))));
|
61
|
+
const missingLanes = lanesSource === null || lanesSource === void 0 ? void 0 : lanesSource.filter(a => !lanes.some(l => l.laneKey === a.laneKey));
|
62
|
+
lanes = lanes.concat(missingLanes.map(a => _objectSpread(_objectSpread({}, a), {}, {
|
63
|
+
items: []
|
64
|
+
})));
|
97
65
|
}
|
98
66
|
|
99
67
|
if (bookingsWithoutLaneKey.length) {
|
100
|
-
(
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
var _lane$items$till, _lane$items;
|
115
|
-
|
116
|
-
if (lanesSource !== null && lanesSource !== void 0 && lanesSource.some(function (l) {
|
117
|
-
return l.laneKey === lane.laneKey;
|
118
|
-
})) {
|
119
|
-
return;
|
120
|
-
}
|
121
|
-
|
122
|
-
var lastTill = (_lane$items$till = (_lane$items = lane.items[lane.items.length - 1]) === null || _lane$items === void 0 ? void 0 : _lane$items.till) !== null && _lane$items$till !== void 0 ? _lane$items$till : from;
|
123
|
-
var distances = remainingBookings.map(function (booking) {
|
124
|
-
var dist = booking.from.diff(lastTill);
|
125
|
-
|
126
|
-
if (lane.items.length === 0) {
|
127
|
-
return Math.abs(dist);
|
128
|
-
}
|
129
|
-
|
130
|
-
return dist;
|
131
|
-
});
|
68
|
+
let remainingBookings = bookingsWithoutLaneKey.map((booking, originalIndex) => _objectSpread(_objectSpread({}, booking), {}, {
|
69
|
+
originalIndex
|
70
|
+
})).sort((a, b) => a.from.valueOf() - b.from.valueOf());
|
71
|
+
|
72
|
+
while (remainingBookings.length > 0) {
|
73
|
+
let min = 99999999999999;
|
74
|
+
let bookingIndex = -1;
|
75
|
+
let laneIndex = -1;
|
76
|
+
lanes.forEach((lane, index) => {
|
77
|
+
var _lane$items;
|
78
|
+
|
79
|
+
if (lanesSource !== null && lanesSource !== void 0 && lanesSource.some(l => l.laneKey === lane.laneKey)) {
|
80
|
+
return;
|
81
|
+
}
|
132
82
|
|
133
|
-
|
134
|
-
|
135
|
-
|
83
|
+
const lastTill = ((_lane$items = lane.items[lane.items.length - 1]) === null || _lane$items === void 0 ? void 0 : _lane$items.till) ?? from;
|
84
|
+
const distances = remainingBookings.map(booking => {
|
85
|
+
const dist = booking.from.diff(lastTill);
|
136
86
|
|
137
|
-
if (
|
138
|
-
|
139
|
-
laneIndex = index;
|
87
|
+
if (lane.items.length === 0) {
|
88
|
+
return Math.abs(dist);
|
140
89
|
}
|
90
|
+
|
91
|
+
return dist;
|
141
92
|
});
|
142
93
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
items: [_objectSpread({}, remainingBookings[0])],
|
149
|
-
laneKey: lanes.length,
|
150
|
-
data: undefined
|
151
|
-
});
|
152
|
-
remainingBookings.shift();
|
94
|
+
const _min = Math.min(...distances.filter(a => a >= 0));
|
95
|
+
|
96
|
+
if (_min < min) {
|
97
|
+
bookingIndex = distances.indexOf(_min);
|
98
|
+
laneIndex = index;
|
153
99
|
}
|
154
|
-
};
|
100
|
+
});
|
155
101
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
102
|
+
if (bookingIndex >= 0 && laneIndex >= 0) {
|
103
|
+
lanes[laneIndex].items = lanes[laneIndex].items.concat(_objectSpread({}, remainingBookings[bookingIndex]));
|
104
|
+
remainingBookings.splice(bookingIndex, 1);
|
105
|
+
} else {
|
106
|
+
lanes = lanes.concat({
|
107
|
+
items: [_objectSpread({}, remainingBookings[0])],
|
108
|
+
laneKey: lanes.length,
|
109
|
+
data: undefined
|
110
|
+
});
|
111
|
+
remainingBookings.shift();
|
112
|
+
}
|
113
|
+
} // Naive solution that is much less computationally intensive but yields more lanes than necessary
|
114
|
+
|
115
|
+
/*bookings.forEach((booking, originalIndex) => {
|
116
|
+
let found = false;
|
117
|
+
lanes.forEach((lane, index) => {
|
118
|
+
if (!lane.some(i => itemsOverlap(booking, i))) {
|
119
|
+
lanes[index] = lanes[index].concat({ ...booking, originalIndex });
|
120
|
+
found = true;
|
170
121
|
}
|
171
|
-
|
122
|
+
});
|
123
|
+
if (!found) {
|
124
|
+
lanes = lanes.concat([[{ ...booking, originalIndex }]]);
|
125
|
+
}
|
126
|
+
});*/
|
172
127
|
|
173
|
-
})();
|
174
128
|
}
|
175
129
|
|
176
|
-
for (
|
177
|
-
|
178
|
-
lanes[index].items = lane.items.sort(
|
179
|
-
return a.from.valueOf() - b.from.valueOf();
|
180
|
-
});
|
130
|
+
for (let index = 0; index < lanes.length; index++) {
|
131
|
+
const lane = lanes[index];
|
132
|
+
lanes[index].items = lane.items.sort((a, b) => a.from.valueOf() - b.from.valueOf());
|
181
133
|
}
|
182
134
|
|
183
135
|
if (lanes.length < minLanesCount) {
|
184
|
-
lanes = lanes.concat(new Array(minLanesCount - lanes.length).fill(null).map(
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
};
|
190
|
-
}));
|
136
|
+
lanes = lanes.concat(new Array(minLanesCount - lanes.length).fill(null).map((_, index) => ({
|
137
|
+
items: [],
|
138
|
+
laneKey: index + lanes.length,
|
139
|
+
data: null
|
140
|
+
})));
|
191
141
|
}
|
192
142
|
|
193
|
-
lanes = lanes.sort(
|
194
|
-
return a.laneKey - b.laneKey;
|
195
|
-
});
|
143
|
+
lanes = lanes.sort((a, b) => a.laneKey - b.laneKey);
|
196
144
|
return lanes;
|
197
145
|
}
|
198
146
|
|
@@ -212,54 +160,52 @@ function itemsOverlap(a, b) {
|
|
212
160
|
return true;
|
213
161
|
}
|
214
162
|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
};
|
220
|
-
};
|
163
|
+
const getItemPositionStyle = (marginStart, width) => ({
|
164
|
+
marginLeft: `${marginStart * 100}%`,
|
165
|
+
width: `${width * 100}%`
|
166
|
+
});
|
221
167
|
|
222
168
|
exports.getItemPositionStyle = getItemPositionStyle;
|
223
169
|
|
224
170
|
function calculateItemsDimensions(items, from, till) {
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
return widthMs > 0 ? items === null || items === void 0 ? void 0 : items.map(
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
171
|
+
let lastEnd = 0;
|
172
|
+
const widthMs = till.valueOf() - from.valueOf();
|
173
|
+
const startMs = from.valueOf();
|
174
|
+
const endMs = till.valueOf();
|
175
|
+
return widthMs > 0 ? items === null || items === void 0 ? void 0 : items.map(item => {
|
176
|
+
const startIsCut = item.from.valueOf() < startMs;
|
177
|
+
const realStart = (item.from.valueOf() - startMs) / widthMs;
|
178
|
+
const realFrom = startIsCut ? (0, _moment.default)(startMs) : (0, _moment.default)(item.from);
|
179
|
+
const start = startIsCut ? 0 : realStart;
|
180
|
+
const endIsCut = item.till.valueOf() > endMs;
|
181
|
+
const realEnd = (item.till.valueOf() - startMs) / widthMs;
|
182
|
+
const end = endIsCut ? (endMs - startMs) / widthMs : realEnd;
|
183
|
+
const realTill = endIsCut ? (0, _moment.default)(endMs) : (0, _moment.default)(item.till);
|
184
|
+
const marginStart = start - lastEnd;
|
239
185
|
lastEnd = (item.till.valueOf() - startMs) / widthMs;
|
240
186
|
return {
|
241
|
-
item
|
242
|
-
start
|
243
|
-
realStart
|
244
|
-
realFrom
|
245
|
-
startIsCut
|
187
|
+
item,
|
188
|
+
start,
|
189
|
+
realStart,
|
190
|
+
realFrom,
|
191
|
+
startIsCut,
|
246
192
|
width: end - start,
|
247
|
-
end
|
248
|
-
realEnd
|
249
|
-
realTill
|
250
|
-
endIsCut
|
251
|
-
marginStart
|
193
|
+
end,
|
194
|
+
realEnd,
|
195
|
+
realTill,
|
196
|
+
endIsCut,
|
197
|
+
marginStart
|
252
198
|
};
|
253
199
|
}) : [];
|
254
200
|
}
|
255
201
|
|
256
|
-
|
202
|
+
const generateControlItems = (from, till, step, startOfStep) => {
|
257
203
|
if (!from || !till || !step) {
|
258
204
|
return [];
|
259
205
|
}
|
260
206
|
|
261
|
-
|
262
|
-
|
207
|
+
let steps = Math.max(Math.ceil((till.valueOf() - from.valueOf()) / step.asMilliseconds()), 2);
|
208
|
+
let subtract = (startOfStep.valueOf() - from.valueOf()) % step.asMilliseconds();
|
263
209
|
|
264
210
|
if (subtract > 0) {
|
265
211
|
subtract -= step.asMilliseconds();
|
@@ -269,17 +215,15 @@ var generateControlItems = function generateControlItems(from, till, step, start
|
|
269
215
|
steps += 1;
|
270
216
|
}
|
271
217
|
|
272
|
-
return new Array(steps).fill(0).map(
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
};
|
277
|
-
});
|
218
|
+
return new Array(steps).fill(0).map((_, index) => ({
|
219
|
+
from: from.clone().add(subtract).add(step.asMilliseconds() * index),
|
220
|
+
till: from.clone().add(subtract).add(step.asMilliseconds() * (index + 1))
|
221
|
+
}));
|
278
222
|
};
|
279
223
|
|
280
224
|
exports.generateControlItems = generateControlItems;
|
281
225
|
|
282
|
-
|
226
|
+
const generateGridItems = (from, till, step, containerWidthPx, availableSteps, goalGridWidthPx, startOfStep) => {
|
283
227
|
if (!from || !till || !containerWidthPx || !(availableSteps !== null && availableSteps !== void 0 && availableSteps.length) || !goalGridWidthPx || !step || !startOfStep) {
|
284
228
|
return {
|
285
229
|
bestStep: availableSteps === null || availableSteps === void 0 ? void 0 : availableSteps[0],
|
@@ -287,23 +231,19 @@ var generateGridItems = function generateGridItems(from, till, step, containerWi
|
|
287
231
|
};
|
288
232
|
}
|
289
233
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
var bestStep = availableSteps[bestStepIndex];
|
304
|
-
var subtract = (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();
|
305
|
-
var startMs = fromMs - subtract;
|
306
|
-
var steps = [];
|
234
|
+
const stepMs = step.asMilliseconds();
|
235
|
+
const fromMs = from.valueOf();
|
236
|
+
const tillMs = till.valueOf();
|
237
|
+
const timeLengthMs = tillMs - fromMs;
|
238
|
+
const approximateStepsCount = containerWidthPx / goalGridWidthPx;
|
239
|
+
const approximateStepMs = timeLengthMs / approximateStepsCount;
|
240
|
+
const availableStepsDistancesMs = availableSteps.map(a => Math.abs(a.asMilliseconds() - approximateStepMs));
|
241
|
+
const smallestDistance = Math.min(...availableStepsDistancesMs);
|
242
|
+
const bestStepIndex = availableStepsDistancesMs.findIndex(a => a === smallestDistance);
|
243
|
+
const bestStep = availableSteps[bestStepIndex];
|
244
|
+
const subtract = (fromMs + from.utcOffset() * 60 * 1000) % bestStep.asMilliseconds();
|
245
|
+
let startMs = fromMs - subtract;
|
246
|
+
let steps = [];
|
307
247
|
|
308
248
|
while (startMs <= tillMs) {
|
309
249
|
steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));
|
@@ -311,14 +251,12 @@ var generateGridItems = function generateGridItems(from, till, step, containerWi
|
|
311
251
|
}
|
312
252
|
|
313
253
|
return {
|
314
|
-
items: steps.filter(
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
var currentTop = 1;
|
321
|
-
var tolerance = 0.001;
|
254
|
+
items: steps.filter(a => a.valueOf() > fromMs && a.valueOf() < tillMs).map(date => {
|
255
|
+
const stepProportion = (date.valueOf() + from.utcOffset() * 60 * 1000) % stepMs / stepMs;
|
256
|
+
let numberOfRoots = 0;
|
257
|
+
let current = stepProportion;
|
258
|
+
let currentTop = 1;
|
259
|
+
let tolerance = 0.001;
|
322
260
|
|
323
261
|
while (current > tolerance && current < currentTop - tolerance) {
|
324
262
|
numberOfRoots += 1;
|
@@ -331,12 +269,12 @@ var generateGridItems = function generateGridItems(from, till, step, containerWi
|
|
331
269
|
|
332
270
|
return {
|
333
271
|
left: (date.valueOf() - fromMs) / timeLengthMs,
|
334
|
-
date
|
335
|
-
stepProportion
|
272
|
+
date,
|
273
|
+
stepProportion,
|
336
274
|
opacity: 1 / (numberOfRoots || 1)
|
337
275
|
};
|
338
276
|
}),
|
339
|
-
bestStep
|
277
|
+
bestStep
|
340
278
|
};
|
341
279
|
};
|
342
280
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/components/bookingCalendar/utils.ts"],"names":["groupBy","items","iterator","reduce","obj","item","key","hasOwnProperty","push","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","lanes","length","map","source","bookingsWithoutLaneKey","filter","a","laneKey","undefined","bookingsWithLaneKey","grouped","booking","originalIndex","Object","keys","Number","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","forEach","lane","index","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","calculateItemsDimensions","lastEnd","widthMs","startMs","endMs","startIsCut","realStart","realFrom","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","findIndex","utcOffset","date","stepProportion","numberOfRoots","current","currentTop","tolerance","pow","left","opacity"],"mappings":"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","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(a => a.laneKey === undefined);\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 &\r\n BookingCalendarItemWithOriginalIndexT)[] = 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 lanes = lanes.sort((a, b) => a.laneKey - b.laneKey);\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.clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from.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"],"file":"utils.js"}
|
1
|
+
{"version":3,"file":"utils.js","names":["groupBy","items","iterator","reduce","obj","item","key","hasOwnProperty","push","splitBookingsToLanes","bookings","from","minLanesCount","lanesSource","lanes","length","map","source","bookingsWithoutLaneKey","filter","a","laneKey","undefined","bookingsWithLaneKey","grouped","booking","originalIndex","Object","keys","Number","find","missingLanes","some","l","concat","remainingBookings","sort","b","valueOf","min","bookingIndex","laneIndex","forEach","lane","index","lastTill","till","distances","dist","diff","Math","abs","_min","indexOf","splice","data","shift","Array","fill","_","itemsOverlap","isBefore","isAfter","getItemPositionStyle","marginStart","width","marginLeft","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","findIndex","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(a => a.laneKey === undefined);\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 &\r\n BookingCalendarItemWithOriginalIndexT)[] = 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 lanes = lanes.sort((a, b) => a.laneKey - b.laneKey);\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.clone()\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: from.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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"}
|