guestbell-forms 2.0.269 → 2.0.273

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.
@@ -116,8 +116,8 @@ function BookingCalendar(props) {
116
116
  return;
117
117
  }
118
118
 
119
- var screenSpaceStartX = data.origin[0];
120
- var screenSpaceEndX = data.target[0];
119
+ var screenSpaceStartX = Math.min(data.origin[0], data.target[0]);
120
+ var screenSpaceEndX = Math.max(data.origin[0], data.target[0]);
121
121
  var durationMs = till.valueOf() - from.valueOf();
122
122
 
123
123
  var toTimeSpace = function toTimeSpace(num) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/components/bookingCalendar/BookingCalendar.tsx"],"names":["defaultStep","BookingCalendar","props","bookings","className","laneContainerClassName","laneHeaderContainerClassName","lanesHeaderContainerClassName","lanesHeaderHeaderContainerClassName","controlsClasses","tableClassName","from","till","onRangeChange","step","showGrid","showSelection","gridAvailableSteps","defaultGridAvailableSteps","getMomentFormatFunction","defaultGetMomentFormatFunction","goalGridWidthPx","minSelectionSize","minLanesCount","lanesSource","filterBookingsToZoom","zoomLevels","BookingCalendarControls","DefaultBookingCalendarControls","BookingCalendarItem","BookingCalendarLane","DefaultBookingCalendarLane","BookingCalendarRenderItem","BookingCalendarGrid","DefaultBookingCalendarGrid","BookingCalendarLaneHeader","DefaultBookingCalendarLaneHeader","BookingCalendarLanesHeader","DefaultBookingCalendarLanesHeader","BookingCalendarDatePicker","DefaultBookingCalendarDatePicker","lanes","React","useMemo","observe","width","clone","startOf","gridItems","items","bestStep","onSelected","useCallback","data","screenSpaceStartX","origin","screenSpaceEndX","target","durationMs","valueOf","toTimeSpace","num","timeSpaceStart","timeSpaceEnd","bookingCalendarDefaultClasses","length","map","lane","laneIndex","LaneBookingCalendarLaneHeader","LaneBookingCalendarLane","rowClassName","laneKey"],"mappings":"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","sourcesContent":["import * as React from 'react';\r\nimport {\r\n BookingCalendarClasses,\r\n bookingCalendarDefaultClasses,\r\n} from './classes';\r\nimport classNames from 'classnames';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n defaultGetMomentFormatFunction,\r\n} from './common';\r\nimport {\r\n BookingCalendarControls as DefaultBookingCalendarControls,\r\n BookingCalendarControlsProps,\r\n} from './bookingCalendarControls/BookingCalendarControls';\r\nimport {\r\n generateGridItems,\r\n LaneSourceData,\r\n splitBookingsToLanes,\r\n} from './utils';\r\nimport {\r\n BookingCalendarLane as DefaultBookingCalendarLane,\r\n BookingCalendarLaneProps,\r\n} from './bookingCalendarLane/BookingCalendarLane';\r\nimport { Moment, Duration, duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarGrid as DefaultBookingCalendarGrid,\r\n BookingCalendarGridProps,\r\n} from './bookingCalendarGrid/BookingCalendarGrid';\r\nimport {\r\n BookingCalendarLaneHeader as DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLaneHeaderProps,\r\n} from './bookingCalendarLaneHeader';\r\nimport {\r\n BookingCalendarLanesHeader as DefaultBookingCalendarLanesHeader,\r\n BookingCalendarLanesHeaderProps,\r\n} from './bookingCalendarLanesHeader';\r\nimport {\r\n BookingCalendarDatePicker as DefaultBookingCalendarDatePicker,\r\n BookingCalendarDatePickerProps,\r\n} from './bookingCalendarDatePicker';\r\nimport moment from 'moment';\r\nimport {\r\n defaultGridAvailableSteps,\r\n GetMomentFormatFunctionType,\r\n ZoomLevel,\r\n} from '.';\r\nimport { BookingCalendarTimeAxis } from './bookingCalendarTimeAxis/BookingCalendarTimeAxis';\r\nimport useDimensions from 'react-cool-dimensions';\r\nimport BookingCalendarSelection, {\r\n BookingCalendarSelectionData,\r\n} from './bookingCalendarSelection/BookingCalendarSelection';\r\n\r\nexport interface BookingCalendarProps<\r\n T extends BookingCalendarItemT,\r\n TLaneData\r\n> extends BookingCalendarClasses {\r\n bookings: T[];\r\n from: Moment;\r\n till: Moment;\r\n getMomentFormatFunction?: GetMomentFormatFunctionType;\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n step?: Duration;\r\n showGrid?: boolean;\r\n showSelection?: boolean;\r\n minSelectionSize?: number;\r\n gridAvailableSteps?: Duration[];\r\n goalGridWidthPx?: number;\r\n minLanesCount?: number;\r\n lanesSource?: LaneSourceData<T, TLaneData>[];\r\n\r\n zoomLevels?: ZoomLevel[];\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n BookingCalendarControls?: React.ComponentType<\r\n BookingCalendarControlsProps<T>\r\n >;\r\n BookingCalendarGrid?: React.ComponentType<BookingCalendarGridProps>;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLanesHeader?: React.ComponentType<\r\n BookingCalendarLanesHeaderProps<T>\r\n >;\r\n BookingCalendarDatePicker?:\r\n | React.ComponentType<BookingCalendarDatePickerProps<T>>\r\n | React.ReactNode;\r\n}\r\n\r\nconst defaultStep = duration(1, 'day');\r\n\r\nexport function BookingCalendar<T extends BookingCalendarItemT, TLaneData>(\r\n props: BookingCalendarProps<T, TLaneData>\r\n) {\r\n const {\r\n bookings,\r\n className,\r\n laneContainerClassName,\r\n laneHeaderContainerClassName,\r\n lanesHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName,\r\n controlsClasses,\r\n tableClassName,\r\n from,\r\n till,\r\n onRangeChange,\r\n step = defaultStep,\r\n showGrid = true,\r\n showSelection = true,\r\n gridAvailableSteps = defaultGridAvailableSteps,\r\n getMomentFormatFunction = defaultGetMomentFormatFunction,\r\n goalGridWidthPx = 60,\r\n minSelectionSize = 10,\r\n minLanesCount,\r\n lanesSource,\r\n filterBookingsToZoom,\r\n zoomLevels,\r\n BookingCalendarControls = DefaultBookingCalendarControls,\r\n BookingCalendarItem,\r\n BookingCalendarLane = DefaultBookingCalendarLane,\r\n BookingCalendarRenderItem,\r\n BookingCalendarGrid = DefaultBookingCalendarGrid,\r\n BookingCalendarLaneHeader = DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLanesHeader = DefaultBookingCalendarLanesHeader,\r\n BookingCalendarDatePicker = DefaultBookingCalendarDatePicker,\r\n } = props;\r\n const lanes = React.useMemo(\r\n () =>\r\n splitBookingsToLanes<T, TLaneData>(\r\n bookings,\r\n from,\r\n minLanesCount,\r\n lanesSource\r\n ),\r\n [bookings, from, minLanesCount, lanesSource]\r\n );\r\n const { observe, width } = useDimensions();\r\n const { items: gridItems, bestStep } = React.useMemo(\r\n () =>\r\n generateGridItems(\r\n from,\r\n till,\r\n step,\r\n width,\r\n gridAvailableSteps,\r\n goalGridWidthPx,\r\n from?.clone()?.startOf('day')\r\n ),\r\n [from, till, step, width, gridAvailableSteps, goalGridWidthPx]\r\n );\r\n const onSelected = React.useCallback(\r\n (data: BookingCalendarSelectionData) => {\r\n if (!from || !till || !width || !onRangeChange) {\r\n return;\r\n }\r\n const screenSpaceStartX = data.origin[0];\r\n const screenSpaceEndX = data.target[0];\r\n const durationMs = till.valueOf() - from.valueOf();\r\n const toTimeSpace = (num: number) => (num / (width || 1)) * durationMs;\r\n const timeSpaceStart = moment(\r\n from.valueOf() + toTimeSpace(screenSpaceStartX)\r\n );\r\n const timeSpaceEnd = moment(\r\n from.valueOf() + toTimeSpace(screenSpaceEndX)\r\n );\r\n onRangeChange({ from: timeSpaceStart, till: timeSpaceEnd });\r\n },\r\n [from, till, width, onRangeChange]\r\n );\r\n return (\r\n <div\r\n className={classNames(bookingCalendarDefaultClasses.className, className)}\r\n >\r\n <BookingCalendarControls<T>\r\n {...controlsClasses}\r\n items={bookings}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n filterBookingsToZoom={filterBookingsToZoom}\r\n zoomLevels={zoomLevels}\r\n />\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.tableClassName,\r\n tableClassName\r\n )}\r\n >\r\n {showGrid && (\r\n <BookingCalendarGrid\r\n containerRef={observe}\r\n items={gridItems}\r\n dataRowsCount={lanes.length}\r\n />\r\n )}\r\n {showSelection && (\r\n <BookingCalendarSelection\r\n dataRowsCount={lanes.length}\r\n onSelected={onSelected}\r\n minSelectionSize={minSelectionSize}\r\n />\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName\r\n )}\r\n >\r\n {typeof BookingCalendarDatePicker === 'function' ? (\r\n <BookingCalendarDatePicker\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n />\r\n ) : (\r\n BookingCalendarDatePicker\r\n )}\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderContainerClassName,\r\n lanesHeaderContainerClassName\r\n )}\r\n >\r\n <BookingCalendarLanesHeader<T>\r\n {...controlsClasses}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n />\r\n </div>\r\n\r\n {lanes.map((lane, laneIndex) => {\r\n const LaneBookingCalendarLaneHeader =\r\n lane.BookingCalendarLaneHeader ?? BookingCalendarLaneHeader;\r\n const LaneBookingCalendarLane =\r\n lane.BookingCalendarLane ?? BookingCalendarLane;\r\n return (\r\n <React.Fragment key={laneIndex}>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneHeaderContainerClassName,\r\n laneHeaderContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLaneHeader<TLaneData>\r\n laneKey={lane.laneKey ?? laneIndex}\r\n data={lane.data}\r\n />\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneContainerClassName,\r\n laneContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLane\r\n laneIndex={laneIndex}\r\n items={lane.items}\r\n from={from}\r\n till={till}\r\n BookingCalendarItem={\r\n lane.BookingCalendarItem ?? BookingCalendarItem\r\n }\r\n BookingCalendarRenderItem={\r\n lane.BookingCalendarRenderItem ?? BookingCalendarRenderItem\r\n }\r\n step={step}\r\n />\r\n </div>\r\n </React.Fragment>\r\n );\r\n })}\r\n <div />\r\n <div>\r\n <BookingCalendarTimeAxis\r\n items={gridItems}\r\n bestStep={bestStep}\r\n getMomentFormatFunction={getMomentFormatFunction}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"file":"BookingCalendar.js"}
1
+ {"version":3,"sources":["../../../src/lib/components/bookingCalendar/BookingCalendar.tsx"],"names":["defaultStep","BookingCalendar","props","bookings","className","laneContainerClassName","laneHeaderContainerClassName","lanesHeaderContainerClassName","lanesHeaderHeaderContainerClassName","controlsClasses","tableClassName","from","till","onRangeChange","step","showGrid","showSelection","gridAvailableSteps","defaultGridAvailableSteps","getMomentFormatFunction","defaultGetMomentFormatFunction","goalGridWidthPx","minSelectionSize","minLanesCount","lanesSource","filterBookingsToZoom","zoomLevels","BookingCalendarControls","DefaultBookingCalendarControls","BookingCalendarItem","BookingCalendarLane","DefaultBookingCalendarLane","BookingCalendarRenderItem","BookingCalendarGrid","DefaultBookingCalendarGrid","BookingCalendarLaneHeader","DefaultBookingCalendarLaneHeader","BookingCalendarLanesHeader","DefaultBookingCalendarLanesHeader","BookingCalendarDatePicker","DefaultBookingCalendarDatePicker","lanes","React","useMemo","observe","width","clone","startOf","gridItems","items","bestStep","onSelected","useCallback","data","screenSpaceStartX","Math","min","origin","target","screenSpaceEndX","max","durationMs","valueOf","toTimeSpace","num","timeSpaceStart","timeSpaceEnd","bookingCalendarDefaultClasses","length","map","lane","laneIndex","LaneBookingCalendarLaneHeader","LaneBookingCalendarLane","rowClassName","laneKey"],"mappings":";;;;;;;;;AAAA;;AACA;;AAIA;;AACA;;AAKA;;AAIA;;AAKA;;AAIA;;AAGA;;AAIA;;AAIA;;AAIA;;AAKA;;AAKA;;AACA;;AACA;;;;;;;;;;;;AA6CA,IAAMA,WAAW,GAAG,sBAAS,CAAT,EAAY,KAAZ,CAApB;;AAEO,SAASC,eAAT,CACLC,KADK,EAEL;AACA,MACEC,QADF,GA+BID,KA/BJ,CACEC,QADF;AAAA,MAEEC,SAFF,GA+BIF,KA/BJ,CAEEE,SAFF;AAAA,MAGEC,sBAHF,GA+BIH,KA/BJ,CAGEG,sBAHF;AAAA,MAIEC,4BAJF,GA+BIJ,KA/BJ,CAIEI,4BAJF;AAAA,MAKEC,6BALF,GA+BIL,KA/BJ,CAKEK,6BALF;AAAA,MAMEC,mCANF,GA+BIN,KA/BJ,CAMEM,mCANF;AAAA,MAOEC,eAPF,GA+BIP,KA/BJ,CAOEO,eAPF;AAAA,MAQEC,cARF,GA+BIR,KA/BJ,CAQEQ,cARF;AAAA,MASEC,IATF,GA+BIT,KA/BJ,CASES,IATF;AAAA,MAUEC,IAVF,GA+BIV,KA/BJ,CAUEU,IAVF;AAAA,MAWEC,aAXF,GA+BIX,KA/BJ,CAWEW,aAXF;AAAA,oBA+BIX,KA/BJ,CAYEY,IAZF;AAAA,MAYEA,IAZF,4BAYSd,WAZT;AAAA,wBA+BIE,KA/BJ,CAaEa,QAbF;AAAA,MAaEA,QAbF,gCAaa,IAbb;AAAA,6BA+BIb,KA/BJ,CAcEc,aAdF;AAAA,MAcEA,aAdF,qCAckB,IAdlB;AAAA,8BA+BId,KA/BJ,CAeEe,kBAfF;AAAA,MAeEA,kBAfF,sCAeuBC,2BAfvB;AAAA,8BA+BIhB,KA/BJ,CAgBEiB,uBAhBF;AAAA,MAgBEA,uBAhBF,sCAgB4BC,sCAhB5B;AAAA,8BA+BIlB,KA/BJ,CAiBEmB,eAjBF;AAAA,MAiBEA,eAjBF,sCAiBoB,EAjBpB;AAAA,8BA+BInB,KA/BJ,CAkBEoB,gBAlBF;AAAA,MAkBEA,gBAlBF,sCAkBqB,EAlBrB;AAAA,MAmBEC,aAnBF,GA+BIrB,KA/BJ,CAmBEqB,aAnBF;AAAA,MAoBEC,WApBF,GA+BItB,KA/BJ,CAoBEsB,WApBF;AAAA,MAqBEC,oBArBF,GA+BIvB,KA/BJ,CAqBEuB,oBArBF;AAAA,MAsBEC,UAtBF,GA+BIxB,KA/BJ,CAsBEwB,UAtBF;AAAA,8BA+BIxB,KA/BJ,CAuBEyB,uBAvBF;AAAA,MAuBEA,uBAvBF,sCAuB4BC,gDAvB5B;AAAA,MAwBEC,mBAxBF,GA+BI3B,KA/BJ,CAwBE2B,mBAxBF;AAAA,+BA+BI3B,KA/BJ,CAyBE4B,mBAzBF;AAAA,MAyBEA,mBAzBF,uCAyBwBC,wCAzBxB;AAAA,MA0BEC,yBA1BF,GA+BI9B,KA/BJ,CA0BE8B,yBA1BF;AAAA,+BA+BI9B,KA/BJ,CA2BE+B,mBA3BF;AAAA,MA2BEA,mBA3BF,uCA2BwBC,wCA3BxB;AAAA,+BA+BIhC,KA/BJ,CA4BEiC,yBA5BF;AAAA,MA4BEA,yBA5BF,uCA4B8BC,oDA5B9B;AAAA,+BA+BIlC,KA/BJ,CA6BEmC,0BA7BF;AAAA,MA6BEA,0BA7BF,uCA6B+BC,sDA7B/B;AAAA,+BA+BIpC,KA/BJ,CA8BEqC,yBA9BF;AAAA,MA8BEA,yBA9BF,uCA8B8BC,oDA9B9B;AAgCA,MAAMC,KAAK,GAAGC,KAAK,CAACC,OAAN,CACZ;AAAA,WACE,iCACExC,QADF,EAEEQ,IAFF,EAGEY,aAHF,EAIEC,WAJF,CADF;AAAA,GADY,EAQZ,CAACrB,QAAD,EAAWQ,IAAX,EAAiBY,aAAjB,EAAgCC,WAAhC,CARY,CAAd;;AAUA,uBAA2B,mCAA3B;AAAA,MAAQoB,OAAR,kBAAQA,OAAR;AAAA,MAAiBC,KAAjB,kBAAiBA,KAAjB;;AACA,uBAAuCH,KAAK,CAACC,OAAN,CACrC;AAAA;;AAAA,WACE,8BACEhC,IADF,EAEEC,IAFF,EAGEE,IAHF,EAIE+B,KAJF,EAKE5B,kBALF,EAMEI,eANF,EAOEV,IAPF,aAOEA,IAPF,sCAOEA,IAAI,CAAEmC,KAAN,EAPF,gDAOE,YAAeC,OAAf,CAAuB,KAAvB,CAPF,CADF;AAAA,GADqC,EAWrC,CAACpC,IAAD,EAAOC,IAAP,EAAaE,IAAb,EAAmB+B,KAAnB,EAA0B5B,kBAA1B,EAA8CI,eAA9C,CAXqC,CAAvC;AAAA,MAAe2B,SAAf,kBAAQC,KAAR;AAAA,MAA0BC,QAA1B,kBAA0BA,QAA1B;;AAaA,MAAMC,UAAU,GAAGT,KAAK,CAACU,WAAN,CACjB,UAACC,IAAD,EAAwC;AACtC,QAAI,CAAC1C,IAAD,IAAS,CAACC,IAAV,IAAkB,CAACiC,KAAnB,IAA4B,CAAChC,aAAjC,EAAgD;AAC9C;AACD;;AACD,QAAMyC,iBAAiB,GAAGC,IAAI,CAACC,GAAL,CAASH,IAAI,CAACI,MAAL,CAAY,CAAZ,CAAT,EAAyBJ,IAAI,CAACK,MAAL,CAAY,CAAZ,CAAzB,CAA1B;AACA,QAAMC,eAAe,GAAGJ,IAAI,CAACK,GAAL,CAASP,IAAI,CAACI,MAAL,CAAY,CAAZ,CAAT,EAAyBJ,IAAI,CAACK,MAAL,CAAY,CAAZ,CAAzB,CAAxB;AACA,QAAMG,UAAU,GAAGjD,IAAI,CAACkD,OAAL,KAAiBnD,IAAI,CAACmD,OAAL,EAApC;;AACA,QAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD;AAAA,aAAkBA,GAAG,IAAInB,KAAK,IAAI,CAAb,CAAJ,GAAuBgB,UAAxC;AAAA,KAApB;;AACA,QAAMI,cAAc,GAAG,qBACrBtD,IAAI,CAACmD,OAAL,KAAiBC,WAAW,CAACT,iBAAD,CADP,CAAvB;AAGA,QAAMY,YAAY,GAAG,qBACnBvD,IAAI,CAACmD,OAAL,KAAiBC,WAAW,CAACJ,eAAD,CADT,CAArB;AAGA9C,IAAAA,aAAa,CAAC;AAAEF,MAAAA,IAAI,EAAEsD,cAAR;AAAwBrD,MAAAA,IAAI,EAAEsD;AAA9B,KAAD,CAAb;AACD,GAhBgB,EAiBjB,CAACvD,IAAD,EAAOC,IAAP,EAAaiC,KAAb,EAAoBhC,aAApB,CAjBiB,CAAnB;AAmBA,sBACE;AACE,IAAA,SAAS,EAAE,yBAAWsD,uCAA8B/D,SAAzC,EAAoDA,SAApD;AADb,kBAGE,oBAAC,uBAAD,eACMK,eADN;AAEE,IAAA,KAAK,EAAEN,QAFT;AAGE,IAAA,IAAI,EAAEQ,IAHR;AAIE,IAAA,IAAI,EAAEC,IAJR;AAKE,IAAA,aAAa,EAAEC,aALjB;AAME,IAAA,IAAI,EAAEC,IANR;AAOE,IAAA,oBAAoB,EAAEW,oBAPxB;AAQE,IAAA,UAAU,EAAEC;AARd,KAHF,eAaE;AACE,IAAA,SAAS,EAAE,yBACTyC,uCAA8BzD,cADrB,EAETA,cAFS;AADb,KAMGK,QAAQ,iBACP,oBAAC,mBAAD;AACE,IAAA,YAAY,EAAE6B,OADhB;AAEE,IAAA,KAAK,EAAEI,SAFT;AAGE,IAAA,aAAa,EAAEP,KAAK,CAAC2B;AAHvB,IAPJ,EAaGpD,aAAa,iBACZ,oBAAC,iCAAD;AACE,IAAA,aAAa,EAAEyB,KAAK,CAAC2B,MADvB;AAEE,IAAA,UAAU,EAAEjB,UAFd;AAGE,IAAA,gBAAgB,EAAE7B;AAHpB,IAdJ,eAoBE;AACE,IAAA,SAAS,EAAE,yBACT6C,uCAA8B3D,mCADrB,EAETA,mCAFS;AADb,KAMG,OAAO+B,yBAAP,KAAqC,UAArC,gBACC,oBAAC,yBAAD;AACE,IAAA,IAAI,EAAE5B,IADR;AAEE,IAAA,IAAI,EAAEC,IAFR;AAGE,IAAA,aAAa,EAAEC;AAHjB,IADD,GAOC0B,yBAbJ,CApBF,eAoCE;AACE,IAAA,SAAS,EAAE,yBACT4B,uCAA8B5D,6BADrB,EAETA,6BAFS;AADb,kBAME,oBAAC,0BAAD,eACME,eADN;AAEE,IAAA,IAAI,EAAEE,IAFR;AAGE,IAAA,IAAI,EAAEC,IAHR;AAIE,IAAA,aAAa,EAAEC,aAJjB;AAKE,IAAA,IAAI,EAAEC;AALR,KANF,CApCF,EAmDG2B,KAAK,CAAC4B,GAAN,CAAU,UAACC,IAAD,EAAOC,SAAP,EAAqB;AAAA;;AAC9B,QAAMC,6BAA6B,4BACjCF,IAAI,CAACnC,yBAD4B,yEACCA,yBADpC;AAEA,QAAMsC,uBAAuB,6BAC3BH,IAAI,CAACxC,mBADsB,2EACCA,mBAD9B;AAEA,wBACE,oBAAC,KAAD,CAAO,QAAP;AAAgB,MAAA,GAAG,EAAEyC;AAArB,oBACE;AACE,MAAA,SAAS,EAAE,yBACTJ,uCAA8B7D,4BADrB,EAETA,4BAFS,EAGTgE,IAAI,CAACI,YAHI,4DAKHP,uCAA8B7D,4BAL3B,aAMLiE,SAAS,KAAK9B,KAAK,CAAC2B,MAAN,GAAe,CANxB,0CAOHD,uCAA8B7D,4BAP3B,cAQLiE,SAAS,KAAK,CART;AADb,oBAaE,oBAAC,6BAAD;AACE,MAAA,OAAO,mBAAED,IAAI,CAACK,OAAP,yDAAkBJ,SAD3B;AAEE,MAAA,IAAI,EAAED,IAAI,CAACjB;AAFb,MAbF,CADF,eAmBE;AACE,MAAA,SAAS,EAAE,yBACTc,uCAA8B9D,sBADrB,EAETA,sBAFS,EAGTiE,IAAI,CAACI,YAHI,8DAKHP,uCAA8B9D,sBAL3B,aAMLkE,SAAS,KAAK9B,KAAK,CAAC2B,MAAN,GAAe,CANxB,2CAOHD,uCAA8B9D,sBAP3B,cAQLkE,SAAS,KAAK,CART;AADb,oBAaE,oBAAC,uBAAD;AACE,MAAA,SAAS,EAAEA,SADb;AAEE,MAAA,KAAK,EAAED,IAAI,CAACrB,KAFd;AAGE,MAAA,IAAI,EAAEtC,IAHR;AAIE,MAAA,IAAI,EAAEC,IAJR;AAKE,MAAA,mBAAmB,4BACjB0D,IAAI,CAACzC,mBADY,2EACWA,mBANhC;AAQE,MAAA,yBAAyB,4BACvByC,IAAI,CAACtC,yBADkB,2EACWA,yBATtC;AAWE,MAAA,IAAI,EAAElB;AAXR,MAbF,CAnBF,CADF;AAiDD,GAtDA,CAnDH,eA0GE,gCA1GF,eA2GE,8CACE,oBAAC,gDAAD;AACE,IAAA,KAAK,EAAEkC,SADT;AAEE,IAAA,QAAQ,EAAEE,QAFZ;AAGE,IAAA,uBAAuB,EAAE/B;AAH3B,IADF,CA3GF,CAbF,CADF;AAmID","sourcesContent":["import * as React from 'react';\r\nimport {\r\n BookingCalendarClasses,\r\n bookingCalendarDefaultClasses,\r\n} from './classes';\r\nimport classNames from 'classnames';\r\nimport {\r\n BookingCalendarDateRange,\r\n BookingCalendarItemT,\r\n defaultGetMomentFormatFunction,\r\n} from './common';\r\nimport {\r\n BookingCalendarControls as DefaultBookingCalendarControls,\r\n BookingCalendarControlsProps,\r\n} from './bookingCalendarControls/BookingCalendarControls';\r\nimport {\r\n generateGridItems,\r\n LaneSourceData,\r\n splitBookingsToLanes,\r\n} from './utils';\r\nimport {\r\n BookingCalendarLane as DefaultBookingCalendarLane,\r\n BookingCalendarLaneProps,\r\n} from './bookingCalendarLane/BookingCalendarLane';\r\nimport { Moment, Duration, duration } from 'moment';\r\nimport { BookingCalendarItemProps } from './bookingCalendarItem';\r\nimport { BookingCalendarRenderItemProps } from './bookingCalendarRenderItem';\r\nimport {\r\n BookingCalendarGrid as DefaultBookingCalendarGrid,\r\n BookingCalendarGridProps,\r\n} from './bookingCalendarGrid/BookingCalendarGrid';\r\nimport {\r\n BookingCalendarLaneHeader as DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLaneHeaderProps,\r\n} from './bookingCalendarLaneHeader';\r\nimport {\r\n BookingCalendarLanesHeader as DefaultBookingCalendarLanesHeader,\r\n BookingCalendarLanesHeaderProps,\r\n} from './bookingCalendarLanesHeader';\r\nimport {\r\n BookingCalendarDatePicker as DefaultBookingCalendarDatePicker,\r\n BookingCalendarDatePickerProps,\r\n} from './bookingCalendarDatePicker';\r\nimport moment from 'moment';\r\nimport {\r\n defaultGridAvailableSteps,\r\n GetMomentFormatFunctionType,\r\n ZoomLevel,\r\n} from '.';\r\nimport { BookingCalendarTimeAxis } from './bookingCalendarTimeAxis/BookingCalendarTimeAxis';\r\nimport useDimensions from 'react-cool-dimensions';\r\nimport BookingCalendarSelection, {\r\n BookingCalendarSelectionData,\r\n} from './bookingCalendarSelection/BookingCalendarSelection';\r\n\r\nexport interface BookingCalendarProps<\r\n T extends BookingCalendarItemT,\r\n TLaneData\r\n> extends BookingCalendarClasses {\r\n bookings: T[];\r\n from: Moment;\r\n till: Moment;\r\n getMomentFormatFunction?: GetMomentFormatFunctionType;\r\n onRangeChange?: (range: BookingCalendarDateRange) => void;\r\n step?: Duration;\r\n showGrid?: boolean;\r\n showSelection?: boolean;\r\n minSelectionSize?: number;\r\n gridAvailableSteps?: Duration[];\r\n goalGridWidthPx?: number;\r\n minLanesCount?: number;\r\n lanesSource?: LaneSourceData<T, TLaneData>[];\r\n\r\n zoomLevels?: ZoomLevel[];\r\n filterBookingsToZoom?: (booking: T) => boolean;\r\n\r\n BookingCalendarItem?: React.ComponentType<BookingCalendarItemProps<T>>;\r\n BookingCalendarRenderItem?: React.ComponentType<\r\n BookingCalendarRenderItemProps<T>\r\n >;\r\n BookingCalendarLane?: React.ComponentType<BookingCalendarLaneProps<T>>;\r\n BookingCalendarControls?: React.ComponentType<\r\n BookingCalendarControlsProps<T>\r\n >;\r\n BookingCalendarGrid?: React.ComponentType<BookingCalendarGridProps>;\r\n BookingCalendarLaneHeader?: React.ComponentType<\r\n BookingCalendarLaneHeaderProps<TLaneData>\r\n >;\r\n BookingCalendarLanesHeader?: React.ComponentType<\r\n BookingCalendarLanesHeaderProps<T>\r\n >;\r\n BookingCalendarDatePicker?:\r\n | React.ComponentType<BookingCalendarDatePickerProps<T>>\r\n | React.ReactNode;\r\n}\r\n\r\nconst defaultStep = duration(1, 'day');\r\n\r\nexport function BookingCalendar<T extends BookingCalendarItemT, TLaneData>(\r\n props: BookingCalendarProps<T, TLaneData>\r\n) {\r\n const {\r\n bookings,\r\n className,\r\n laneContainerClassName,\r\n laneHeaderContainerClassName,\r\n lanesHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName,\r\n controlsClasses,\r\n tableClassName,\r\n from,\r\n till,\r\n onRangeChange,\r\n step = defaultStep,\r\n showGrid = true,\r\n showSelection = true,\r\n gridAvailableSteps = defaultGridAvailableSteps,\r\n getMomentFormatFunction = defaultGetMomentFormatFunction,\r\n goalGridWidthPx = 60,\r\n minSelectionSize = 10,\r\n minLanesCount,\r\n lanesSource,\r\n filterBookingsToZoom,\r\n zoomLevels,\r\n BookingCalendarControls = DefaultBookingCalendarControls,\r\n BookingCalendarItem,\r\n BookingCalendarLane = DefaultBookingCalendarLane,\r\n BookingCalendarRenderItem,\r\n BookingCalendarGrid = DefaultBookingCalendarGrid,\r\n BookingCalendarLaneHeader = DefaultBookingCalendarLaneHeader,\r\n BookingCalendarLanesHeader = DefaultBookingCalendarLanesHeader,\r\n BookingCalendarDatePicker = DefaultBookingCalendarDatePicker,\r\n } = props;\r\n const lanes = React.useMemo(\r\n () =>\r\n splitBookingsToLanes<T, TLaneData>(\r\n bookings,\r\n from,\r\n minLanesCount,\r\n lanesSource\r\n ),\r\n [bookings, from, minLanesCount, lanesSource]\r\n );\r\n const { observe, width } = useDimensions();\r\n const { items: gridItems, bestStep } = React.useMemo(\r\n () =>\r\n generateGridItems(\r\n from,\r\n till,\r\n step,\r\n width,\r\n gridAvailableSteps,\r\n goalGridWidthPx,\r\n from?.clone()?.startOf('day')\r\n ),\r\n [from, till, step, width, gridAvailableSteps, goalGridWidthPx]\r\n );\r\n const onSelected = React.useCallback(\r\n (data: BookingCalendarSelectionData) => {\r\n if (!from || !till || !width || !onRangeChange) {\r\n return;\r\n }\r\n const screenSpaceStartX = Math.min(data.origin[0], data.target[0]);\r\n const screenSpaceEndX = Math.max(data.origin[0], data.target[0]);\r\n const durationMs = till.valueOf() - from.valueOf();\r\n const toTimeSpace = (num: number) => (num / (width || 1)) * durationMs;\r\n const timeSpaceStart = moment(\r\n from.valueOf() + toTimeSpace(screenSpaceStartX)\r\n );\r\n const timeSpaceEnd = moment(\r\n from.valueOf() + toTimeSpace(screenSpaceEndX)\r\n );\r\n onRangeChange({ from: timeSpaceStart, till: timeSpaceEnd });\r\n },\r\n [from, till, width, onRangeChange]\r\n );\r\n return (\r\n <div\r\n className={classNames(bookingCalendarDefaultClasses.className, className)}\r\n >\r\n <BookingCalendarControls<T>\r\n {...controlsClasses}\r\n items={bookings}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n filterBookingsToZoom={filterBookingsToZoom}\r\n zoomLevels={zoomLevels}\r\n />\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.tableClassName,\r\n tableClassName\r\n )}\r\n >\r\n {showGrid && (\r\n <BookingCalendarGrid\r\n containerRef={observe}\r\n items={gridItems}\r\n dataRowsCount={lanes.length}\r\n />\r\n )}\r\n {showSelection && (\r\n <BookingCalendarSelection\r\n dataRowsCount={lanes.length}\r\n onSelected={onSelected}\r\n minSelectionSize={minSelectionSize}\r\n />\r\n )}\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderHeaderContainerClassName,\r\n lanesHeaderHeaderContainerClassName\r\n )}\r\n >\r\n {typeof BookingCalendarDatePicker === 'function' ? (\r\n <BookingCalendarDatePicker\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n />\r\n ) : (\r\n BookingCalendarDatePicker\r\n )}\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.lanesHeaderContainerClassName,\r\n lanesHeaderContainerClassName\r\n )}\r\n >\r\n <BookingCalendarLanesHeader<T>\r\n {...controlsClasses}\r\n from={from}\r\n till={till}\r\n onRangeChange={onRangeChange}\r\n step={step}\r\n />\r\n </div>\r\n\r\n {lanes.map((lane, laneIndex) => {\r\n const LaneBookingCalendarLaneHeader =\r\n lane.BookingCalendarLaneHeader ?? BookingCalendarLaneHeader;\r\n const LaneBookingCalendarLane =\r\n lane.BookingCalendarLane ?? BookingCalendarLane;\r\n return (\r\n <React.Fragment key={laneIndex}>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneHeaderContainerClassName,\r\n laneHeaderContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneHeaderContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLaneHeader<TLaneData>\r\n laneKey={lane.laneKey ?? laneIndex}\r\n data={lane.data}\r\n />\r\n </div>\r\n <div\r\n className={classNames(\r\n bookingCalendarDefaultClasses.laneContainerClassName,\r\n laneContainerClassName,\r\n lane.rowClassName,\r\n {\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--last`]:\r\n laneIndex === lanes.length - 1,\r\n [`${bookingCalendarDefaultClasses.laneContainerClassName}--first`]:\r\n laneIndex === 0,\r\n }\r\n )}\r\n >\r\n <LaneBookingCalendarLane\r\n laneIndex={laneIndex}\r\n items={lane.items}\r\n from={from}\r\n till={till}\r\n BookingCalendarItem={\r\n lane.BookingCalendarItem ?? BookingCalendarItem\r\n }\r\n BookingCalendarRenderItem={\r\n lane.BookingCalendarRenderItem ?? BookingCalendarRenderItem\r\n }\r\n step={step}\r\n />\r\n </div>\r\n </React.Fragment>\r\n );\r\n })}\r\n <div />\r\n <div>\r\n <BookingCalendarTimeAxis\r\n items={gridItems}\r\n bestStep={bestStep}\r\n getMomentFormatFunction={getMomentFormatFunction}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"file":"BookingCalendar.js"}
@@ -29,6 +29,7 @@ export default class BookingCalendarSelection extends React.Component<BookingCal
29
29
  private containerRef;
30
30
  constructor(props: any);
31
31
  handleTransformBox(): "scaleY(-1) scaleX(-1)" | "scaleY(-1)" | "scaleX(-1)";
32
+ handleMouseLeave(evt: React.MouseEvent<HTMLElement>): void;
32
33
  handleMouseUp(evt: React.MouseEvent<HTMLElement>): void;
33
34
  handleMouseDown(e: React.MouseEvent<HTMLDivElement>): void;
34
35
  private handleMouseMove;
@@ -63,6 +63,7 @@ var BookingCalendarSelection = /*#__PURE__*/function (_React$Component) {
63
63
  _this.handleMouseUp = _this.handleMouseUp.bind(_assertThisInitialized(_this));
64
64
  _this.handleMouseDown = _this.handleMouseDown.bind(_assertThisInitialized(_this));
65
65
  _this.handleMouseMove = _this.handleMouseMove.bind(_assertThisInitialized(_this));
66
+ _this.handleMouseLeave = _this.handleMouseLeave.bind(_assertThisInitialized(_this));
66
67
  return _this;
67
68
  }
68
69
 
@@ -87,37 +88,58 @@ var BookingCalendarSelection = /*#__PURE__*/function (_React$Component) {
87
88
 
88
89
  return null;
89
90
  }
91
+ }, {
92
+ key: "handleMouseLeave",
93
+ value: function handleMouseLeave(evt) {
94
+ /*if (this.state.hold) {
95
+ this.setState({
96
+ hold: false,
97
+ animation: 'bookingCalendar__selection--fadeout',
98
+ });
99
+ this.animationInProgress = (setTimeout(() => {
100
+ this.setState({
101
+ selectionBox: false,
102
+ animation: '',
103
+ selectionBoxOrigin: [0, 0],
104
+ selectionBoxTarget: [0, 0],
105
+ });
106
+ this.animationInProgress = null;
107
+ }, 300) as unknown) as number;
108
+ }*/
109
+ }
90
110
  }, {
91
111
  key: "handleMouseUp",
92
112
  value: function handleMouseUp(evt) {
93
- var _this$props$onSelecte,
94
- _this$props,
95
- _this2 = this;
113
+ var _this2 = this;
96
114
 
97
- var distance = Math.sqrt(Math.pow(this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1], 2) + Math.pow(this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0], 2));
115
+ if (this.state.hold) {
116
+ var _this$props$onSelecte, _this$props;
98
117
 
99
- if (distance < this.props.minSelectionSize) {
100
- return;
101
- }
102
-
103
- (_this$props$onSelecte = (_this$props = this.props).onSelected) === null || _this$props$onSelecte === void 0 ? void 0 : _this$props$onSelecte.call(_this$props, {
104
- origin: this.state.selectionBoxOrigin,
105
- target: this.state.selectionBoxTarget
106
- });
107
- this.setState({
108
- hold: false,
109
- animation: 'bookingCalendar__selection--fadeout'
110
- });
111
- this.animationInProgress = setTimeout(function () {
112
- _this2.setState({
113
- selectionBox: false,
114
- animation: '',
115
- selectionBoxOrigin: [0, 0],
116
- selectionBoxTarget: [0, 0]
118
+ var distance = Math.sqrt(Math.pow(this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1], 2) + Math.pow(this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0], 2));
119
+ this.setState({
120
+ hold: false,
121
+ animation: 'bookingCalendar__selection--fadeout'
117
122
  });
118
-
119
- _this2.animationInProgress = null;
120
- }, 300);
123
+ this.animationInProgress = setTimeout(function () {
124
+ _this2.setState({
125
+ selectionBox: false,
126
+ animation: '',
127
+ selectionBoxOrigin: [0, 0],
128
+ selectionBoxTarget: [0, 0]
129
+ });
130
+
131
+ _this2.animationInProgress = null;
132
+ }, 300);
133
+
134
+ if (distance < this.props.minSelectionSize) {
135
+ return;
136
+ }
137
+
138
+ (_this$props$onSelecte = (_this$props = this.props).onSelected) === null || _this$props$onSelecte === void 0 ? void 0 : _this$props$onSelecte.call(_this$props, {
139
+ origin: this.state.selectionBoxOrigin,
140
+ target: this.state.selectionBoxTarget
141
+ });
142
+ }
121
143
  }
122
144
  }, {
123
145
  key: "handleMouseDown",
@@ -181,13 +203,13 @@ var BookingCalendarSelection = /*#__PURE__*/function (_React$Component) {
181
203
  ref: this.containerRef,
182
204
  className: "bookingCalendar__selection__container",
183
205
  style: {
184
- pointerEvents: 'auto',
185
- zIndex: boxVisible ? 99999 : undefined,
206
+ zIndex: this.state.selectionBox ? 99999 : undefined,
186
207
  gridRowEnd: "span ".concat(this.props.dataRowsCount)
187
208
  },
188
209
  onMouseDown: this.handleMouseDown,
189
210
  onMouseUp: this.handleMouseUp,
190
- onMouseMove: this.handleMouseMove
211
+ onMouseMove: this.handleMouseMove,
212
+ onMouseLeave: this.handleMouseLeave
191
213
  }, boxVisible && this.state.selectionBox && /*#__PURE__*/React.createElement("div", {
192
214
  className: "bookingCalendar__selection ".concat(this.state.animation),
193
215
  style: baseStyle
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx"],"names":["BookingCalendarSelection","props","animationInProgress","containerRef","React","createRef","state","hold","selectionBox","selectionBoxOrigin","selectionBoxTarget","animation","handleMouseUp","bind","handleMouseDown","handleMouseMove","evt","distance","Math","sqrt","pow","minSelectionSize","onSelected","origin","target","setState","setTimeout","e","disabled","nativeEvent","button","clearTimeout","bb","current","getBoundingClientRect","pageX","x","pageY","y","onSelecting","baseStyle","zIndex","left","top","height","abs","width","userSelect","transformOrigin","transform","handleTransformBox","boxVisible","pointerEvents","undefined","gridRowEnd","dataRowsCount","children","Component"],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nexport type BookingCalendarSelectionCoordinates = [number, number];\nexport interface BookingCalendarSelectionData {\n origin: BookingCalendarSelectionCoordinates;\n target: BookingCalendarSelectionCoordinates;\n}\nexport interface BookingCalendarSelectionProps {\n disabled?: boolean;\n onSelecting?: (data: {\n origin: BookingCalendarSelectionCoordinates;\n target: BookingCalendarSelectionCoordinates;\n }) => void;\n onSelected?: (data: {\n origin: BookingCalendarSelectionCoordinates;\n target: BookingCalendarSelectionCoordinates;\n }) => void;\n dataRowsCount: number;\n minSelectionSize: number;\n}\n\nexport interface BookingCalendarSelectionState {\n selectionBoxOrigin: BookingCalendarSelectionCoordinates;\n selectionBoxTarget: BookingCalendarSelectionCoordinates;\n hold: boolean;\n animation: string;\n selectionBox: boolean;\n}\n\nexport default class BookingCalendarSelection extends React.Component<\n BookingCalendarSelectionProps,\n BookingCalendarSelectionState\n> {\n private animationInProgress: number;\n private containerRef: React.RefObject<HTMLDivElement>;\n\n constructor(props) {\n super(props);\n this.animationInProgress = null;\n this.containerRef = React.createRef();\n this.state = {\n hold: false,\n selectionBox: false,\n selectionBoxOrigin: [0, 0],\n selectionBoxTarget: [0, 0],\n animation: '',\n };\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n }\n\n handleTransformBox() {\n const { selectionBoxOrigin, selectionBoxTarget } = this.state;\n if (\n selectionBoxOrigin[1] > selectionBoxTarget[1] &&\n selectionBoxOrigin[0] > selectionBoxTarget[0]\n ) {\n return 'scaleY(-1) scaleX(-1)';\n }\n\n if (selectionBoxOrigin[1] > selectionBoxTarget[1]) {\n return 'scaleY(-1)';\n }\n if (selectionBoxOrigin[0] > selectionBoxTarget[0]) {\n return 'scaleX(-1)';\n }\n return null;\n }\n\n handleMouseUp(evt: React.MouseEvent<HTMLElement>) {\n const distance = Math.sqrt(\n Math.pow(\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\n 2\n ) +\n Math.pow(\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\n 2\n )\n );\n if (distance < this.props.minSelectionSize) {\n return;\n }\n this.props.onSelected?.({\n origin: this.state.selectionBoxOrigin,\n target: this.state.selectionBoxTarget,\n });\n this.setState({\n hold: false,\n animation: 'bookingCalendar__selection--fadeout',\n });\n this.animationInProgress = (setTimeout(() => {\n this.setState({\n selectionBox: false,\n animation: '',\n selectionBoxOrigin: [0, 0],\n selectionBoxTarget: [0, 0],\n });\n this.animationInProgress = null;\n }, 300) as unknown) as number;\n }\n\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\n if (this.props.disabled || e.nativeEvent.button !== 0) {\n return;\n }\n clearTimeout(this.animationInProgress);\n this.animationInProgress = null;\n this.setState({ selectionBox: false, animation: '' });\n\n const bb = this.containerRef.current?.getBoundingClientRect();\n this.setState({\n hold: true,\n selectionBoxOrigin: [\n e.nativeEvent.pageX - bb.x,\n e.nativeEvent.pageY - bb.y,\n ],\n selectionBoxTarget: [\n e.nativeEvent.pageX - bb.x,\n e.nativeEvent.pageY - bb.y,\n ],\n });\n }\n\n private handleMouseMove(evt: React.MouseEvent<HTMLDivElement>) {\n if (this.state.hold && !this.state.selectionBox) {\n this.setState({ selectionBox: true });\n }\n if (this.state.selectionBox && !this.animationInProgress) {\n const bb = this.containerRef.current?.getBoundingClientRect();\n this.setState({\n selectionBoxTarget: [\n evt.nativeEvent.pageX - bb?.x,\n evt.nativeEvent.pageY - bb?.y,\n ],\n });\n\n this.props.onSelecting?.({\n origin: this.state.selectionBoxOrigin,\n target: this.state.selectionBoxTarget,\n });\n }\n }\n\n render() {\n const baseStyle: React.CSSProperties = {\n zIndex: 10,\n left: this.state.selectionBoxOrigin[0],\n top: this.state.selectionBoxOrigin[1],\n height: Math.abs(\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1\n ),\n width: Math.abs(\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1\n ),\n userSelect: 'none',\n transformOrigin: 'top left',\n transform: this.handleTransformBox(),\n };\n const boxVisible =\n Math.sqrt(\n Math.pow(\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\n 2\n ) +\n Math.pow(\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\n 2\n )\n ) > this.props.minSelectionSize;\n return (\n <div\n ref={this.containerRef}\n className=\"bookingCalendar__selection__container\"\n style={{\n pointerEvents: 'auto',\n zIndex: boxVisible ? 99999 : undefined,\n gridRowEnd: `span ${this.props.dataRowsCount}`,\n }}\n onMouseDown={this.handleMouseDown}\n onMouseUp={this.handleMouseUp}\n onMouseMove={this.handleMouseMove}\n >\n {boxVisible && this.state.selectionBox && (\n <div\n className={`bookingCalendar__selection ${this.state.animation}`}\n style={baseStyle}\n />\n )}\n {this.props.children}\n </div>\n );\n }\n}\n"],"file":"BookingCalendarSelection.js"}
1
+ {"version":3,"sources":["../../../../src/lib/components/bookingCalendar/bookingCalendarSelection/BookingCalendarSelection.tsx"],"names":["BookingCalendarSelection","props","animationInProgress","containerRef","React","createRef","state","hold","selectionBox","selectionBoxOrigin","selectionBoxTarget","animation","handleMouseUp","bind","handleMouseDown","handleMouseMove","handleMouseLeave","evt","distance","Math","sqrt","pow","setState","setTimeout","minSelectionSize","onSelected","origin","target","e","disabled","nativeEvent","button","clearTimeout","bb","current","getBoundingClientRect","pageX","x","pageY","y","onSelecting","baseStyle","zIndex","left","top","height","abs","width","userSelect","transformOrigin","transform","handleTransformBox","boxVisible","undefined","gridRowEnd","dataRowsCount","children","Component"],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BqBA,wB;;;;;AAOnB,oCAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;;AADiB;;AAAA;;AAEjB,UAAKC,mBAAL,GAA2B,IAA3B;AACA,UAAKC,YAAL,gBAAoBC,KAAK,CAACC,SAAN,EAApB;AACA,UAAKC,KAAL,GAAa;AACXC,MAAAA,IAAI,EAAE,KADK;AAEXC,MAAAA,YAAY,EAAE,KAFH;AAGXC,MAAAA,kBAAkB,EAAE,CAAC,CAAD,EAAI,CAAJ,CAHT;AAIXC,MAAAA,kBAAkB,EAAE,CAAC,CAAD,EAAI,CAAJ,CAJT;AAKXC,MAAAA,SAAS,EAAE;AALA,KAAb;AAOA,UAAKC,aAAL,GAAqB,MAAKA,aAAL,CAAmBC,IAAnB,+BAArB;AACA,UAAKC,eAAL,GAAuB,MAAKA,eAAL,CAAqBD,IAArB,+BAAvB;AACA,UAAKE,eAAL,GAAuB,MAAKA,eAAL,CAAqBF,IAArB,+BAAvB;AACA,UAAKG,gBAAL,GAAwB,MAAKA,gBAAL,CAAsBH,IAAtB,+BAAxB;AAdiB;AAelB;;;;WAED,8BAAqB;AACnB,wBAAmD,KAAKP,KAAxD;AAAA,UAAQG,kBAAR,eAAQA,kBAAR;AAAA,UAA4BC,kBAA5B,eAA4BA,kBAA5B;;AACA,UACED,kBAAkB,CAAC,CAAD,CAAlB,GAAwBC,kBAAkB,CAAC,CAAD,CAA1C,IACAD,kBAAkB,CAAC,CAAD,CAAlB,GAAwBC,kBAAkB,CAAC,CAAD,CAF5C,EAGE;AACA,eAAO,uBAAP;AACD;;AAED,UAAID,kBAAkB,CAAC,CAAD,CAAlB,GAAwBC,kBAAkB,CAAC,CAAD,CAA9C,EAAmD;AACjD,eAAO,YAAP;AACD;;AACD,UAAID,kBAAkB,CAAC,CAAD,CAAlB,GAAwBC,kBAAkB,CAAC,CAAD,CAA9C,EAAmD;AACjD,eAAO,YAAP;AACD;;AACD,aAAO,IAAP;AACD;;;WAED,0BAAiBO,GAAjB,EAAqD;AACnD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG;;;WAED,uBAAcA,GAAd,EAAkD;AAAA;;AAChD,UAAI,KAAKX,KAAL,CAAWC,IAAf,EAAqB;AAAA;;AACnB,YAAMW,QAAQ,GAAGC,IAAI,CAACC,IAAL,CACfD,IAAI,CAACE,GAAL,CACE,KAAKf,KAAL,CAAWI,kBAAX,CAA8B,CAA9B,IAAmC,KAAKJ,KAAL,CAAWG,kBAAX,CAA8B,CAA9B,CADrC,EAEE,CAFF,IAIEU,IAAI,CAACE,GAAL,CACE,KAAKf,KAAL,CAAWI,kBAAX,CAA8B,CAA9B,IAAmC,KAAKJ,KAAL,CAAWG,kBAAX,CAA8B,CAA9B,CADrC,EAEE,CAFF,CALa,CAAjB;AAUA,aAAKa,QAAL,CAAc;AACZf,UAAAA,IAAI,EAAE,KADM;AAEZI,UAAAA,SAAS,EAAE;AAFC,SAAd;AAIA,aAAKT,mBAAL,GAA4BqB,UAAU,CAAC,YAAM;AAC3C,UAAA,MAAI,CAACD,QAAL,CAAc;AACZd,YAAAA,YAAY,EAAE,KADF;AAEZG,YAAAA,SAAS,EAAE,EAFC;AAGZF,YAAAA,kBAAkB,EAAE,CAAC,CAAD,EAAI,CAAJ,CAHR;AAIZC,YAAAA,kBAAkB,EAAE,CAAC,CAAD,EAAI,CAAJ;AAJR,WAAd;;AAMA,UAAA,MAAI,CAACR,mBAAL,GAA2B,IAA3B;AACD,SARqC,EAQnC,GARmC,CAAtC;;AASA,YAAIgB,QAAQ,GAAG,KAAKjB,KAAL,CAAWuB,gBAA1B,EAA4C;AAC1C;AACD;;AACD,qDAAKvB,KAAL,EAAWwB,UAAX,kGAAwB;AACtBC,UAAAA,MAAM,EAAE,KAAKpB,KAAL,CAAWG,kBADG;AAEtBkB,UAAAA,MAAM,EAAE,KAAKrB,KAAL,CAAWI;AAFG,SAAxB;AAID;AACF;;;WAED,yBAAgBkB,CAAhB,EAAqD;AAAA;;AACnD,UAAI,KAAK3B,KAAL,CAAW4B,QAAX,IAAuBD,CAAC,CAACE,WAAF,CAAcC,MAAd,KAAyB,CAApD,EAAuD;AACrD;AACD;;AACDC,MAAAA,YAAY,CAAC,KAAK9B,mBAAN,CAAZ;AACA,WAAKA,mBAAL,GAA2B,IAA3B;AACA,WAAKoB,QAAL,CAAc;AAAEd,QAAAA,YAAY,EAAE,KAAhB;AAAuBG,QAAAA,SAAS,EAAE;AAAlC,OAAd;AAEA,UAAMsB,EAAE,4BAAG,KAAK9B,YAAL,CAAkB+B,OAArB,0DAAG,sBAA2BC,qBAA3B,EAAX;AACA,WAAKb,QAAL,CAAc;AACZf,QAAAA,IAAI,EAAE,IADM;AAEZE,QAAAA,kBAAkB,EAAE,CAClBmB,CAAC,CAACE,WAAF,CAAcM,KAAd,GAAsBH,EAAE,CAACI,CADP,EAElBT,CAAC,CAACE,WAAF,CAAcQ,KAAd,GAAsBL,EAAE,CAACM,CAFP,CAFR;AAMZ7B,QAAAA,kBAAkB,EAAE,CAClBkB,CAAC,CAACE,WAAF,CAAcM,KAAd,GAAsBH,EAAE,CAACI,CADP,EAElBT,CAAC,CAACE,WAAF,CAAcQ,KAAd,GAAsBL,EAAE,CAACM,CAFP;AANR,OAAd;AAWD;;;WAED,yBAAwBtB,GAAxB,EAA+D;AAC7D,UAAI,KAAKX,KAAL,CAAWC,IAAX,IAAmB,CAAC,KAAKD,KAAL,CAAWE,YAAnC,EAAiD;AAC/C,aAAKc,QAAL,CAAc;AAAEd,UAAAA,YAAY,EAAE;AAAhB,SAAd;AACD;;AACD,UAAI,KAAKF,KAAL,CAAWE,YAAX,IAA2B,CAAC,KAAKN,mBAArC,EAA0D;AAAA;;AACxD,YAAM+B,EAAE,6BAAG,KAAK9B,YAAL,CAAkB+B,OAArB,2DAAG,uBAA2BC,qBAA3B,EAAX;AACA,aAAKb,QAAL,CAAc;AACZZ,UAAAA,kBAAkB,EAAE,CAClBO,GAAG,CAACa,WAAJ,CAAgBM,KAAhB,IAAwBH,EAAxB,aAAwBA,EAAxB,uBAAwBA,EAAE,CAAEI,CAA5B,CADkB,EAElBpB,GAAG,CAACa,WAAJ,CAAgBQ,KAAhB,IAAwBL,EAAxB,aAAwBA,EAAxB,uBAAwBA,EAAE,CAAEM,CAA5B,CAFkB;AADR,SAAd;AAOA,sDAAKtC,KAAL,EAAWuC,WAAX,mGAAyB;AACvBd,UAAAA,MAAM,EAAE,KAAKpB,KAAL,CAAWG,kBADI;AAEvBkB,UAAAA,MAAM,EAAE,KAAKrB,KAAL,CAAWI;AAFI,SAAzB;AAID;AACF;;;WAED,kBAAS;AACP,UAAM+B,SAA8B,GAAG;AACrCC,QAAAA,MAAM,EAAE,EAD6B;AAErCC,QAAAA,IAAI,EAAE,KAAKrC,KAAL,CAAWG,kBAAX,CAA8B,CAA9B,CAF+B;AAGrCmC,QAAAA,GAAG,EAAE,KAAKtC,KAAL,CAAWG,kBAAX,CAA8B,CAA9B,CAHgC;AAIrCoC,QAAAA,MAAM,EAAE1B,IAAI,CAAC2B,GAAL,CACN,KAAKxC,KAAL,CAAWI,kBAAX,CAA8B,CAA9B,IAAmC,KAAKJ,KAAL,CAAWG,kBAAX,CAA8B,CAA9B,CAAnC,GAAsE,CADhE,CAJ6B;AAOrCsC,QAAAA,KAAK,EAAE5B,IAAI,CAAC2B,GAAL,CACL,KAAKxC,KAAL,CAAWI,kBAAX,CAA8B,CAA9B,IAAmC,KAAKJ,KAAL,CAAWG,kBAAX,CAA8B,CAA9B,CAAnC,GAAsE,CADjE,CAP8B;AAUrCuC,QAAAA,UAAU,EAAE,MAVyB;AAWrCC,QAAAA,eAAe,EAAE,UAXoB;AAYrCC,QAAAA,SAAS,EAAE,KAAKC,kBAAL;AAZ0B,OAAvC;AAcA,UAAMC,UAAU,GACdjC,IAAI,CAACC,IAAL,CACED,IAAI,CAACE,GAAL,CACE,KAAKf,KAAL,CAAWI,kBAAX,CAA8B,CAA9B,IAAmC,KAAKJ,KAAL,CAAWG,kBAAX,CAA8B,CAA9B,CADrC,EAEE,CAFF,IAIEU,IAAI,CAACE,GAAL,CACE,KAAKf,KAAL,CAAWI,kBAAX,CAA8B,CAA9B,IAAmC,KAAKJ,KAAL,CAAWG,kBAAX,CAA8B,CAA9B,CADrC,EAEE,CAFF,CALJ,IASI,KAAKR,KAAL,CAAWuB,gBAVjB;AAWA,0BACE;AACE,QAAA,GAAG,EAAE,KAAKrB,YADZ;AAEE,QAAA,SAAS,EAAC,uCAFZ;AAGE,QAAA,KAAK,EAAE;AACLuC,UAAAA,MAAM,EAAE,KAAKpC,KAAL,CAAWE,YAAX,GAA0B,KAA1B,GAAkC6C,SADrC;AAELC,UAAAA,UAAU,iBAAU,KAAKrD,KAAL,CAAWsD,aAArB;AAFL,SAHT;AAOE,QAAA,WAAW,EAAE,KAAKzC,eAPpB;AAQE,QAAA,SAAS,EAAE,KAAKF,aARlB;AASE,QAAA,WAAW,EAAE,KAAKG,eATpB;AAUE,QAAA,YAAY,EAAE,KAAKC;AAVrB,SAYGoC,UAAU,IAAI,KAAK9C,KAAL,CAAWE,YAAzB,iBACC;AACE,QAAA,SAAS,uCAAgC,KAAKF,KAAL,CAAWK,SAA3C,CADX;AAEE,QAAA,KAAK,EAAE8B;AAFT,QAbJ,EAkBG,KAAKxC,KAAL,CAAWuD,QAlBd,CADF;AAsBD;;;;EAzLmDpD,KAAK,CAACqD,S","sourcesContent":["import * as React from 'react';\n\nexport type BookingCalendarSelectionCoordinates = [number, number];\nexport interface BookingCalendarSelectionData {\n origin: BookingCalendarSelectionCoordinates;\n target: BookingCalendarSelectionCoordinates;\n}\nexport interface BookingCalendarSelectionProps {\n disabled?: boolean;\n onSelecting?: (data: {\n origin: BookingCalendarSelectionCoordinates;\n target: BookingCalendarSelectionCoordinates;\n }) => void;\n onSelected?: (data: {\n origin: BookingCalendarSelectionCoordinates;\n target: BookingCalendarSelectionCoordinates;\n }) => void;\n dataRowsCount: number;\n minSelectionSize: number;\n}\n\nexport interface BookingCalendarSelectionState {\n selectionBoxOrigin: BookingCalendarSelectionCoordinates;\n selectionBoxTarget: BookingCalendarSelectionCoordinates;\n hold: boolean;\n animation: string;\n selectionBox: boolean;\n}\n\nexport default class BookingCalendarSelection extends React.Component<\n BookingCalendarSelectionProps,\n BookingCalendarSelectionState\n> {\n private animationInProgress: number;\n private containerRef: React.RefObject<HTMLDivElement>;\n\n constructor(props) {\n super(props);\n this.animationInProgress = null;\n this.containerRef = React.createRef();\n this.state = {\n hold: false,\n selectionBox: false,\n selectionBoxOrigin: [0, 0],\n selectionBoxTarget: [0, 0],\n animation: '',\n };\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n }\n\n handleTransformBox() {\n const { selectionBoxOrigin, selectionBoxTarget } = this.state;\n if (\n selectionBoxOrigin[1] > selectionBoxTarget[1] &&\n selectionBoxOrigin[0] > selectionBoxTarget[0]\n ) {\n return 'scaleY(-1) scaleX(-1)';\n }\n\n if (selectionBoxOrigin[1] > selectionBoxTarget[1]) {\n return 'scaleY(-1)';\n }\n if (selectionBoxOrigin[0] > selectionBoxTarget[0]) {\n return 'scaleX(-1)';\n }\n return null;\n }\n\n handleMouseLeave(evt: React.MouseEvent<HTMLElement>) {\n /*if (this.state.hold) {\n this.setState({\n hold: false,\n animation: 'bookingCalendar__selection--fadeout',\n });\n this.animationInProgress = (setTimeout(() => {\n this.setState({\n selectionBox: false,\n animation: '',\n selectionBoxOrigin: [0, 0],\n selectionBoxTarget: [0, 0],\n });\n this.animationInProgress = null;\n }, 300) as unknown) as number;\n }*/\n }\n\n handleMouseUp(evt: React.MouseEvent<HTMLElement>) {\n if (this.state.hold) {\n const distance = Math.sqrt(\n Math.pow(\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\n 2\n ) +\n Math.pow(\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\n 2\n )\n );\n this.setState({\n hold: false,\n animation: 'bookingCalendar__selection--fadeout',\n });\n this.animationInProgress = (setTimeout(() => {\n this.setState({\n selectionBox: false,\n animation: '',\n selectionBoxOrigin: [0, 0],\n selectionBoxTarget: [0, 0],\n });\n this.animationInProgress = null;\n }, 300) as unknown) as number;\n if (distance < this.props.minSelectionSize) {\n return;\n }\n this.props.onSelected?.({\n origin: this.state.selectionBoxOrigin,\n target: this.state.selectionBoxTarget,\n });\n }\n }\n\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\n if (this.props.disabled || e.nativeEvent.button !== 0) {\n return;\n }\n clearTimeout(this.animationInProgress);\n this.animationInProgress = null;\n this.setState({ selectionBox: false, animation: '' });\n\n const bb = this.containerRef.current?.getBoundingClientRect();\n this.setState({\n hold: true,\n selectionBoxOrigin: [\n e.nativeEvent.pageX - bb.x,\n e.nativeEvent.pageY - bb.y,\n ],\n selectionBoxTarget: [\n e.nativeEvent.pageX - bb.x,\n e.nativeEvent.pageY - bb.y,\n ],\n });\n }\n\n private handleMouseMove(evt: React.MouseEvent<HTMLDivElement>) {\n if (this.state.hold && !this.state.selectionBox) {\n this.setState({ selectionBox: true });\n }\n if (this.state.selectionBox && !this.animationInProgress) {\n const bb = this.containerRef.current?.getBoundingClientRect();\n this.setState({\n selectionBoxTarget: [\n evt.nativeEvent.pageX - bb?.x,\n evt.nativeEvent.pageY - bb?.y,\n ],\n });\n\n this.props.onSelecting?.({\n origin: this.state.selectionBoxOrigin,\n target: this.state.selectionBoxTarget,\n });\n }\n }\n\n render() {\n const baseStyle: React.CSSProperties = {\n zIndex: 10,\n left: this.state.selectionBoxOrigin[0],\n top: this.state.selectionBoxOrigin[1],\n height: Math.abs(\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1] - 1\n ),\n width: Math.abs(\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0] - 1\n ),\n userSelect: 'none',\n transformOrigin: 'top left',\n transform: this.handleTransformBox(),\n };\n const boxVisible =\n Math.sqrt(\n Math.pow(\n this.state.selectionBoxTarget[1] - this.state.selectionBoxOrigin[1],\n 2\n ) +\n Math.pow(\n this.state.selectionBoxTarget[0] - this.state.selectionBoxOrigin[0],\n 2\n )\n ) > this.props.minSelectionSize;\n return (\n <div\n ref={this.containerRef}\n className=\"bookingCalendar__selection__container\"\n style={{\n zIndex: this.state.selectionBox ? 99999 : undefined,\n gridRowEnd: `span ${this.props.dataRowsCount}`,\n }}\n onMouseDown={this.handleMouseDown}\n onMouseUp={this.handleMouseUp}\n onMouseMove={this.handleMouseMove}\n onMouseLeave={this.handleMouseLeave}\n >\n {boxVisible && this.state.selectionBox && (\n <div\n className={`bookingCalendar__selection ${this.state.animation}`}\n style={baseStyle}\n />\n )}\n {this.props.children}\n </div>\n );\n }\n}\n"],"file":"BookingCalendarSelection.js"}
@@ -306,7 +306,7 @@ var generateGridItems = function generateGridItems(from, till, step, containerWi
306
306
  var steps = [];
307
307
 
308
308
  while (startMs <= tillMs) {
309
- steps = steps.concat((0, _moment.default)(startMs));
309
+ steps = steps.concat(from.clone().add(startMs - fromMs, 'ms'));
310
310
  startMs += bestStep.asMilliseconds();
311
311
  }
312
312
 
@@ -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","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: 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 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(moment(startMs));\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,"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","add","generateGridItems","containerWidthPx","availableSteps","goalGridWidthPx","bestStep","stepMs","fromMs","tillMs","timeLengthMs","approximateStepsCount","approximateStepMs","availableStepsDistancesMs","smallestDistance","bestStepIndex","findIndex","utcOffset","clone","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: 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 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"}
@@ -19,6 +19,7 @@ export interface MoneyProps extends BaseInputProps<never, MoneyTranslations> {
19
19
  allowMultiple?: boolean;
20
20
  currencies: SelectValue[];
21
21
  prices: MoneyWithCurrency[];
22
+ disableDelete?: boolean;
22
23
  }
23
24
  export interface MoneyState extends BaseInputState {
24
25
  }
@@ -230,7 +230,7 @@ var MoneyRaw = /*#__PURE__*/function (_BaseInput) {
230
230
  className: 'input__base money-input ' + this.getValidationClass() + (this.props.className ? ' ' + this.props.className : ''),
231
231
  ref: this.containerRef
232
232
  }), this.props.prices && this.props.prices.map(function (item, index) {
233
- var _Button$defaultProps;
233
+ var _currentCurrencies$, _Button$defaultProps;
234
234
 
235
235
  var currentCurrencies = _this2.props.currencies.filter(function (c) {
236
236
  return _this2.props.prices.filter(function (priceCurrency, priceIndex) {
@@ -244,7 +244,7 @@ var MoneyRaw = /*#__PURE__*/function (_BaseInput) {
244
244
 
245
245
  var retComponents = currentCurrencies.length ? /*#__PURE__*/React.createElement("div", {
246
246
  key: index
247
- }, /*#__PURE__*/React.createElement(_Select.Select, _extends({}, _this2.props.id && {
247
+ }, currentCurrencies.length > 1 ? /*#__PURE__*/React.createElement(_Select.Select, _extends({}, _this2.props.id && {
248
248
  id: _this2.props.id + '-currency-select-' + index.toString()
249
249
  }, {
250
250
  onFocus: _this2.onFocus,
@@ -253,7 +253,7 @@ var MoneyRaw = /*#__PURE__*/function (_BaseInput) {
253
253
  values: currentCurrencies,
254
254
  onChange: _this2.onCurrencyChanged(index, currentCurrencies),
255
255
  value: item.currency.value.toString()
256
- })), /*#__PURE__*/React.createElement(_Text.Text, _extends({}, _this2.props.id && {
256
+ })) : currentCurrencies === null || currentCurrencies === void 0 ? void 0 : (_currentCurrencies$ = currentCurrencies[0]) === null || _currentCurrencies$ === void 0 ? void 0 : _currentCurrencies$.label, /*#__PURE__*/React.createElement(_Text.Text, _extends({}, _this2.props.id && {
257
257
  id: _this2.props.id + '-amount-input-' + index.toString()
258
258
  }, {
259
259
  onFocus: _this2.onFocus,
@@ -265,7 +265,7 @@ var MoneyRaw = /*#__PURE__*/function (_BaseInput) {
265
265
  value: item.value ? item.value.toString() : '',
266
266
  onChange: _this2.onPriceChanged(index),
267
267
  type: "number"
268
- })), _this2.props.prices.length > 0 && /*#__PURE__*/React.createElement(_Button.Button, _extends({}, _this2.props.id && {
268
+ })), !_this2.props.disableDelete && _this2.props.prices.length > 0 && /*#__PURE__*/React.createElement(_Button.Button, _extends({}, _this2.props.id && {
269
269
  id: _this2.props.id + '-remove-button-' + index.toString()
270
270
  }, {
271
271
  blank: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/components/money/Money.tsx"],"names":["PlusIcon","defaultMoneyTranslations","defaultBaseTranslations","cannotRemoveDefaultCurrency","removePrice","addPrice","addNewCurrency","MoneyRaw","props","index","currentCurrencies","e","newPrices","concat","prices","currency","filter","cc","value","toString","target","onPricesChange","num","Number","parts","split","length","isNaN","str","state","touched","touch","price","itemIndex","required","setInvalid","getTranslations","unusedCurrencies","setValid","setState","focused","currencies","Error","Object","assign","isValid","errors","handleValueChangeEnabled","forcedCurrencies","c","forceSelected","missingForced","find","p","map","undefined","subscribeSelf","translations","title","id","getValidationClass","className","containerRef","item","priceCurrency","priceIndex","retComponents","onFocus","onBlur","onCurrencyChanged","onTheFlightValidate","onPriceChanged","removePriceClick","Button","defaultProps","buttonProps","allowMultiple","addPriceClick","renderDefaultValidation","label","renderLabel","BaseInput","type","onChange","Money"],"mappings":"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","sourcesContent":["import * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport { Select, SelectValue } from '../select/Select';\r\nimport { Text } from '../text/Text';\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n defaultBaseTranslations,\r\n} from '../base/input/BaseInput';\r\nimport { Button } from '../button/Button';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface MoneyWithCurrency {\r\n value: number;\r\n currency: SelectValue;\r\n}\r\n\r\nexport const defaultMoneyTranslations = {\r\n ...defaultBaseTranslations,\r\n cannotRemoveDefaultCurrency: 'Cannot remove default currency',\r\n removePrice: 'Remove price',\r\n addPrice: 'Add price',\r\n addNewCurrency: 'Add new currency',\r\n};\r\n\r\nexport type MoneyTranslations = Partial<typeof defaultMoneyTranslations>;\r\n\r\nexport interface MoneyProps extends BaseInputProps<never, MoneyTranslations> {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onPricesChange: (prices: MoneyWithCurrency[]) => void;\r\n allowMultiple?: boolean;\r\n currencies: SelectValue[];\r\n prices: MoneyWithCurrency[];\r\n}\r\n\r\nexport interface MoneyState extends BaseInputState {}\r\n\r\nexport class MoneyRaw extends BaseInput<\r\n MoneyProps,\r\n MoneyState,\r\n never,\r\n MoneyTranslations\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n type: 'money',\r\n allowMultiple: false,\r\n onChange: undefined,\r\n });\r\n\r\n constructor(props: MoneyProps) {\r\n super(props, false);\r\n if (!props.currencies || !props.currencies.length) {\r\n throw Error('No currencies supplied to money input');\r\n }\r\n this.state = Object.assign(this.state, {\r\n isValid: props.required ? props.prices.length > 0 : true,\r\n errors:\r\n props.required && props.prices.length === 0\r\n ? [this.getTranslations(defaultMoneyTranslations).required]\r\n : [],\r\n handleValueChangeEnabled: false,\r\n });\r\n const forcedCurrencies = props.currencies.filter(c => c.forceSelected);\r\n const missingForced = forcedCurrencies.filter(\r\n c => !props.prices.find(p => p.currency.value === c.value)\r\n );\r\n if (missingForced.length > 0) {\r\n props.onPricesChange(\r\n props.prices.concat(\r\n missingForced.map(c => ({ currency: c, value: undefined }))\r\n )\r\n );\r\n }\r\n this.subscribeSelf(props);\r\n }\r\n\r\n public render() {\r\n let unusedCurrencies = this.props.currencies;\r\n const translations = this.getTranslations(defaultMoneyTranslations);\r\n return (\r\n <InputGroup title={this.props.title}>\r\n <div\r\n {...(this.props.id && { id: this.props.id })}\r\n className={\r\n 'input__base money-input ' +\r\n this.getValidationClass() +\r\n (this.props.className ? ' ' + this.props.className : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n {this.props.prices &&\r\n this.props.prices.map((item, index) => {\r\n let currentCurrencies = this.props.currencies.filter(\r\n c =>\r\n this.props.prices.filter(\r\n (priceCurrency, priceIndex) =>\r\n priceIndex !== index &&\r\n priceCurrency.currency.value === c.value\r\n ).length === 0\r\n );\r\n const currency = this.props.currencies.find(\r\n c => c.value === item.currency.value\r\n );\r\n let retComponents = currentCurrencies.length ? (\r\n <div key={index}>\r\n <Select\r\n {...(this.props.id && {\r\n id:\r\n this.props.id + '-currency-select-' + index.toString(),\r\n })}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n className={'money-input__select m-0'}\r\n values={currentCurrencies}\r\n onChange={this.onCurrencyChanged(index, currentCurrencies)}\r\n value={item.currency.value.toString()}\r\n />\r\n <Text\r\n {...(this.props.id && {\r\n id: this.props.id + '-amount-input-' + index.toString(),\r\n })}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n onTheFlightValidate={this.onTheFlightValidate}\r\n placeholder={'0.00'}\r\n className={'money-input__text m-0'}\r\n validators={['number']}\r\n value={item.value ? item.value.toString() : ''}\r\n onChange={this.onPriceChanged(index)}\r\n type=\"number\"\r\n />\r\n {this.props.prices.length > 0 && (\r\n <Button\r\n {...(this.props.id && {\r\n id:\r\n this.props.id + '-remove-button-' + index.toString(),\r\n })}\r\n blank={true}\r\n type=\"error\"\r\n onClick={this.removePriceClick(index)}\r\n className=\"transform-rotate--45 line-height--0\"\r\n buttonProps={{\r\n ...Button.defaultProps?.buttonProps,\r\n title:\r\n currency && currency.forceSelected\r\n ? translations.cannotRemoveDefaultCurrency\r\n : translations.removePrice,\r\n }}\r\n circular={true}\r\n disabled={currency && currency.forceSelected}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </div>\r\n ) : null;\r\n unusedCurrencies = unusedCurrencies.filter(\r\n c => c.value !== item.currency.value\r\n );\r\n return retComponents;\r\n })}\r\n {(this.props.allowMultiple ||\r\n (this.props.prices && !this.props.prices.length)) &&\r\n unusedCurrencies.length ? (\r\n <Button\r\n blank={true}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-button',\r\n })}\r\n type=\"primary\"\r\n className=\"line-height--0 align-self-start\"\r\n onClick={this.addPriceClick(unusedCurrencies)}\r\n circular={true}\r\n buttonProps={{\r\n ...Button.defaultProps?.buttonProps,\r\n title:\r\n this.props.prices && this.props.prices.length === 0\r\n ? translations.addPrice\r\n : translations.addNewCurrency,\r\n }}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n ) : null}\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label\r\n className={\r\n this.props.prices && this.props.prices ? 'label--focused' : ''\r\n }\r\n >\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private onCurrencyChanged = (\r\n index: number,\r\n currentCurrencies: SelectValue[]\r\n ) => e => {\r\n let newPrices: MoneyWithCurrency[] = [].concat(this.props.prices);\r\n newPrices[index].currency = currentCurrencies.filter(\r\n cc => cc.value.toString() === e.target.value\r\n )[0];\r\n this.props.onPricesChange(newPrices);\r\n };\r\n\r\n private onTheFlightValidate = value => {\r\n let num = Number(value);\r\n const parts = value.split('.');\r\n if (parts && parts.length > 1 && parts[parts.length - 1].length > 2) {\r\n return false;\r\n }\r\n if (!isNaN(num)) {\r\n return true;\r\n }\r\n if (num) {\r\n return false;\r\n }\r\n };\r\n\r\n private onPriceChanged = (index: number) => (\r\n e: React.ChangeEvent<HTMLInputElement>\r\n ) => {\r\n let newPrices: MoneyWithCurrency[] = [].concat(this.props.prices);\r\n let str = e.target.value;\r\n let num = Number(str);\r\n if (!isNaN(num)) {\r\n newPrices[index].value = num;\r\n }\r\n this.props.onPricesChange(newPrices);\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private removePriceClick = (index: number) => () => {\r\n const newPrices = this.props.prices.filter(\r\n (price, itemIndex) => itemIndex !== index\r\n );\r\n this.props.onPricesChange(newPrices);\r\n if (newPrices.length === 0 && this.props.required) {\r\n this.setInvalid([\r\n this.getTranslations(defaultMoneyTranslations).required,\r\n ]);\r\n }\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private addPriceClick = (unusedCurrencies: SelectValue[]) => () => {\r\n this.props.onPricesChange(\r\n this.props.prices.concat([{ value: 0, currency: unusedCurrencies[0] }])\r\n );\r\n this.setValid();\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private onFocus = () => this.setState({ focused: true });\r\n\r\n private onBlur = () => this.setState({ focused: false });\r\n}\r\n\r\nexport const Money = withThemeContext<\r\n MoneyProps,\r\n InstanceType<typeof MoneyRaw>\r\n>(withFormContext<MoneyProps>(MoneyRaw), 'money');\r\n\r\nexport default Money;\r\n"],"file":"Money.js"}
1
+ {"version":3,"sources":["../../../src/lib/components/money/Money.tsx"],"names":["PlusIcon","defaultMoneyTranslations","defaultBaseTranslations","cannotRemoveDefaultCurrency","removePrice","addPrice","addNewCurrency","MoneyRaw","props","index","currentCurrencies","e","newPrices","concat","prices","currency","filter","cc","value","toString","target","onPricesChange","num","Number","parts","split","length","isNaN","str","state","touched","touch","price","itemIndex","required","setInvalid","getTranslations","unusedCurrencies","setValid","setState","focused","currencies","Error","Object","assign","isValid","errors","handleValueChangeEnabled","forcedCurrencies","c","forceSelected","missingForced","find","p","map","undefined","subscribeSelf","translations","title","id","getValidationClass","className","containerRef","item","priceCurrency","priceIndex","retComponents","onFocus","onBlur","onCurrencyChanged","label","onTheFlightValidate","onPriceChanged","disableDelete","removePriceClick","Button","defaultProps","buttonProps","allowMultiple","addPriceClick","renderDefaultValidation","renderLabel","BaseInput","type","onChange","Money"],"mappings":"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","sourcesContent":["import * as PlusIcon from 'material-design-icons/content/svg/production/ic_add_24px.svg';\r\n\r\n// Libs\r\nimport * as React from 'react';\r\n\r\n// Misc\r\nimport { Select, SelectValue } from '../select/Select';\r\nimport { Text } from '../text/Text';\r\nimport InputGroup from '../inputGroup/InputGroup';\r\nimport {\r\n BaseInputProps,\r\n BaseInputState,\r\n BaseInput,\r\n defaultBaseTranslations,\r\n} from '../base/input/BaseInput';\r\nimport { Button } from '../button/Button';\r\nimport { withFormContext } from '../form/withFormContext';\r\nimport { withThemeContext } from '../themeProvider/withThemeContext';\r\n\r\nexport interface MoneyWithCurrency {\r\n value: number;\r\n currency: SelectValue;\r\n}\r\n\r\nexport const defaultMoneyTranslations = {\r\n ...defaultBaseTranslations,\r\n cannotRemoveDefaultCurrency: 'Cannot remove default currency',\r\n removePrice: 'Remove price',\r\n addPrice: 'Add price',\r\n addNewCurrency: 'Add new currency',\r\n};\r\n\r\nexport type MoneyTranslations = Partial<typeof defaultMoneyTranslations>;\r\n\r\nexport interface MoneyProps extends BaseInputProps<never, MoneyTranslations> {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onPricesChange: (prices: MoneyWithCurrency[]) => void;\r\n allowMultiple?: boolean;\r\n currencies: SelectValue[];\r\n prices: MoneyWithCurrency[];\r\n disableDelete?: boolean;\r\n}\r\n\r\nexport interface MoneyState extends BaseInputState {}\r\n\r\nexport class MoneyRaw extends BaseInput<\r\n MoneyProps,\r\n MoneyState,\r\n never,\r\n MoneyTranslations\r\n> {\r\n public static defaultProps = Object.assign({}, BaseInput.defaultProps, {\r\n type: 'money',\r\n allowMultiple: false,\r\n onChange: undefined,\r\n });\r\n\r\n constructor(props: MoneyProps) {\r\n super(props, false);\r\n if (!props.currencies || !props.currencies.length) {\r\n throw Error('No currencies supplied to money input');\r\n }\r\n this.state = Object.assign(this.state, {\r\n isValid: props.required ? props.prices.length > 0 : true,\r\n errors:\r\n props.required && props.prices.length === 0\r\n ? [this.getTranslations(defaultMoneyTranslations).required]\r\n : [],\r\n handleValueChangeEnabled: false,\r\n });\r\n const forcedCurrencies = props.currencies.filter(c => c.forceSelected);\r\n const missingForced = forcedCurrencies.filter(\r\n c => !props.prices.find(p => p.currency.value === c.value)\r\n );\r\n if (missingForced.length > 0) {\r\n props.onPricesChange(\r\n props.prices.concat(\r\n missingForced.map(c => ({ currency: c, value: undefined }))\r\n )\r\n );\r\n }\r\n this.subscribeSelf(props);\r\n }\r\n\r\n public render() {\r\n let unusedCurrencies = this.props.currencies;\r\n const translations = this.getTranslations(defaultMoneyTranslations);\r\n return (\r\n <InputGroup title={this.props.title}>\r\n <div\r\n {...(this.props.id && { id: this.props.id })}\r\n className={\r\n 'input__base money-input ' +\r\n this.getValidationClass() +\r\n (this.props.className ? ' ' + this.props.className : '')\r\n }\r\n ref={this.containerRef}\r\n >\r\n {this.props.prices &&\r\n this.props.prices.map((item, index) => {\r\n let currentCurrencies = this.props.currencies.filter(\r\n c =>\r\n this.props.prices.filter(\r\n (priceCurrency, priceIndex) =>\r\n priceIndex !== index &&\r\n priceCurrency.currency.value === c.value\r\n ).length === 0\r\n );\r\n const currency = this.props.currencies.find(\r\n c => c.value === item.currency.value\r\n );\r\n let retComponents = currentCurrencies.length ? (\r\n <div key={index}>\r\n {currentCurrencies.length > 1 ? (\r\n <Select\r\n {...(this.props.id && {\r\n id:\r\n this.props.id +\r\n '-currency-select-' +\r\n index.toString(),\r\n })}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n className={'money-input__select m-0'}\r\n values={currentCurrencies}\r\n onChange={this.onCurrencyChanged(\r\n index,\r\n currentCurrencies\r\n )}\r\n value={item.currency.value.toString()}\r\n />\r\n ) : (\r\n currentCurrencies?.[0]?.label\r\n )}\r\n <Text\r\n {...(this.props.id && {\r\n id: this.props.id + '-amount-input-' + index.toString(),\r\n })}\r\n onFocus={this.onFocus}\r\n onBlur={this.onBlur}\r\n onTheFlightValidate={this.onTheFlightValidate}\r\n placeholder={'0.00'}\r\n className={'money-input__text m-0'}\r\n validators={['number']}\r\n value={item.value ? item.value.toString() : ''}\r\n onChange={this.onPriceChanged(index)}\r\n type=\"number\"\r\n />\r\n {!this.props.disableDelete && this.props.prices.length > 0 && (\r\n <Button\r\n {...(this.props.id && {\r\n id:\r\n this.props.id + '-remove-button-' + index.toString(),\r\n })}\r\n blank={true}\r\n type=\"error\"\r\n onClick={this.removePriceClick(index)}\r\n className=\"transform-rotate--45 line-height--0\"\r\n buttonProps={{\r\n ...Button.defaultProps?.buttonProps,\r\n title:\r\n currency && currency.forceSelected\r\n ? translations.cannotRemoveDefaultCurrency\r\n : translations.removePrice,\r\n }}\r\n circular={true}\r\n disabled={currency && currency.forceSelected}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n )}\r\n </div>\r\n ) : null;\r\n unusedCurrencies = unusedCurrencies.filter(\r\n c => c.value !== item.currency.value\r\n );\r\n return retComponents;\r\n })}\r\n {(this.props.allowMultiple ||\r\n (this.props.prices && !this.props.prices.length)) &&\r\n unusedCurrencies.length ? (\r\n <Button\r\n blank={true}\r\n {...(this.props.id && {\r\n id: this.props.id + '-add-button',\r\n })}\r\n type=\"primary\"\r\n className=\"line-height--0 align-self-start\"\r\n onClick={this.addPriceClick(unusedCurrencies)}\r\n circular={true}\r\n buttonProps={{\r\n ...Button.defaultProps?.buttonProps,\r\n title:\r\n this.props.prices && this.props.prices.length === 0\r\n ? translations.addPrice\r\n : translations.addNewCurrency,\r\n }}\r\n >\r\n <PlusIcon />\r\n </Button>\r\n ) : null}\r\n <span className=\"highlight\" />\r\n <span className={'bar ' + (this.state.focused ? 'focused' : '')} />\r\n {this.renderDefaultValidation()}\r\n {this.props.label && (\r\n <label\r\n className={\r\n this.props.prices && this.props.prices ? 'label--focused' : ''\r\n }\r\n >\r\n {this.renderLabel()}\r\n </label>\r\n )}\r\n </div>\r\n </InputGroup>\r\n );\r\n }\r\n\r\n private onCurrencyChanged = (\r\n index: number,\r\n currentCurrencies: SelectValue[]\r\n ) => e => {\r\n let newPrices: MoneyWithCurrency[] = [].concat(this.props.prices);\r\n newPrices[index].currency = currentCurrencies.filter(\r\n cc => cc.value.toString() === e.target.value\r\n )[0];\r\n this.props.onPricesChange(newPrices);\r\n };\r\n\r\n private onTheFlightValidate = value => {\r\n let num = Number(value);\r\n const parts = value.split('.');\r\n if (parts && parts.length > 1 && parts[parts.length - 1].length > 2) {\r\n return false;\r\n }\r\n if (!isNaN(num)) {\r\n return true;\r\n }\r\n if (num) {\r\n return false;\r\n }\r\n };\r\n\r\n private onPriceChanged = (index: number) => (\r\n e: React.ChangeEvent<HTMLInputElement>\r\n ) => {\r\n let newPrices: MoneyWithCurrency[] = [].concat(this.props.prices);\r\n let str = e.target.value;\r\n let num = Number(str);\r\n if (!isNaN(num)) {\r\n newPrices[index].value = num;\r\n }\r\n this.props.onPricesChange(newPrices);\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private removePriceClick = (index: number) => () => {\r\n const newPrices = this.props.prices.filter(\r\n (price, itemIndex) => itemIndex !== index\r\n );\r\n this.props.onPricesChange(newPrices);\r\n if (newPrices.length === 0 && this.props.required) {\r\n this.setInvalid([\r\n this.getTranslations(defaultMoneyTranslations).required,\r\n ]);\r\n }\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private addPriceClick = (unusedCurrencies: SelectValue[]) => () => {\r\n this.props.onPricesChange(\r\n this.props.prices.concat([{ value: 0, currency: unusedCurrencies[0] }])\r\n );\r\n this.setValid();\r\n if (!this.state.touched) {\r\n this.touch();\r\n }\r\n };\r\n\r\n private onFocus = () => this.setState({ focused: true });\r\n\r\n private onBlur = () => this.setState({ focused: false });\r\n}\r\n\r\nexport const Money = withThemeContext<\r\n MoneyProps,\r\n InstanceType<typeof MoneyRaw>\r\n>(withFormContext<MoneyProps>(MoneyRaw), 'money');\r\n\r\nexport default Money;\r\n"],"file":"Money.js"}