guestbell-forms 2.0.249 → 2.0.250

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.
@@ -113,6 +113,12 @@ function splitBookingsToLanes(bookings, from, minLanesCount) {
113
113
  lanes.forEach(function (lane, index) {
114
114
  var _lane$items$till, _lane$items;
115
115
 
116
+ if (lanesSource !== null && lanesSource !== void 0 && lanesSource.some(function (l) {
117
+ return l.laneKey === lane.laneKey;
118
+ })) {
119
+ return;
120
+ }
121
+
116
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;
117
123
  var distances = remainingBookings.map(function (booking) {
118
124
  var dist = booking.from.diff(lastTill);
@@ -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","ceil","asMilliseconds","subtract","add","generateGridItems","subdivisions","floor"],"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 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.ceil(\r\n (till.valueOf() - from.valueOf()) / step.asMilliseconds()\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: moment(from)\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: moment(from)\r\n .add(subtract)\r\n .add(step.asMilliseconds() * (index + 1)),\r\n }));\r\n};\r\n\r\nexport const generateGridItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n subdivisions: number = 1\r\n) => {\r\n if (!from || !till || !step || subdivisions < 1) {\r\n return [];\r\n }\r\n const steps =\r\n Math.floor(\r\n ((till.valueOf() - from.valueOf()) / step.asMilliseconds()) * subdivisions\r\n ) + 1;\r\n const width = till.valueOf() - from.valueOf();\r\n return new Array(steps)\r\n .fill(0)\r\n .map(\r\n (_, index) => ((step.asMilliseconds() / subdivisions) * index) / width\r\n );\r\n};\r\n"],"file":"utils.js"}
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","ceil","asMilliseconds","subtract","add","generateGridItems","subdivisions","floor"],"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.ceil(\r\n (till.valueOf() - from.valueOf()) / step.asMilliseconds()\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: moment(from)\r\n .add(subtract)\r\n .add(step.asMilliseconds() * index),\r\n till: moment(from)\r\n .add(subtract)\r\n .add(step.asMilliseconds() * (index + 1)),\r\n }));\r\n};\r\n\r\nexport const generateGridItems = (\r\n from: Moment,\r\n till: Moment,\r\n step: Duration,\r\n subdivisions: number = 1\r\n) => {\r\n if (!from || !till || !step || subdivisions < 1) {\r\n return [];\r\n }\r\n const steps =\r\n Math.floor(\r\n ((till.valueOf() - from.valueOf()) / step.asMilliseconds()) * subdivisions\r\n ) + 1;\r\n const width = till.valueOf() - from.valueOf();\r\n return new Array(steps)\r\n .fill(0)\r\n .map(\r\n (_, index) => ((step.asMilliseconds() / subdivisions) * index) / width\r\n );\r\n};\r\n"],"file":"utils.js"}
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>guestbell-forms [2 Oct 2021 at 15:50]</title>
6
+ <title>guestbell-forms [2 Oct 2021 at 15:58]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.249",
2
+ "version": "2.0.250",
3
3
  "description": "React forms with validation as used in GuestBell",
4
4
  "keywords": [
5
5
  "react",