@r365/react-calendar-timeline
Version:
react-calendar-timeline
1 lines • 71.9 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./styles.css');const d=require("react/jsx-runtime"),z=require("@js-temporal/polyfill"),T=require("react"),V=require("./react-calendar-timeline.resize-detector.cjs.js"),B=require("classnames"),X=require("interactjs");;/* empty css */const Je=typeof Element<"u",Qe=typeof Map=="function",et=typeof Set=="function",tt=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function H(r,e){if(r===e)return!0;if(r&&e&&typeof r=="object"&&typeof e=="object"){if(r.constructor!==e.constructor)return!1;let t,i;if(Array.isArray(r)){if(t=r.length,t!=e.length)return!1;for(i=t;i--!==0;)if(!H(r[i],e[i]))return!1;return!0}let s;if(Qe&&r instanceof Map&&e instanceof Map){if(r.size!==e.size)return!1;for(s=r.entries();!(i=s.next()).done;)if(!e.has(i.value[0]))return!1;for(s=r.entries();!(i=s.next()).done;)if(!H(i.value[1],e.get(i.value[0])))return!1;return!0}if(et&&r instanceof Set&&e instanceof Set){if(r.size!==e.size)return!1;for(s=r.entries();!(i=s.next()).done;)if(!e.has(i.value[0]))return!1;return!0}if(tt&&ArrayBuffer.isView(r)&&ArrayBuffer.isView(e)){if(t=r.length,t!=e.length)return!1;for(i=t;i--!==0;)if(r[i]!==e[i])return!1;return!0}if(r.constructor===RegExp)return r.source===e.source&&r.flags===e.flags;if(r.constructor===z.Temporal.ZonedDateTime)return r.equals(e);if(r.valueOf!==Object.prototype.valueOf&&typeof r.valueOf=="function"&&typeof e.valueOf=="function")return r.valueOf()===e.valueOf();if(r.toString!==Object.prototype.toString&&typeof r.toString=="function"&&typeof e.toString=="function")return r.toString()===e.toString();const n=Object.keys(r);if(t=n.length,t!==Object.keys(e).length)return!1;for(i=t;i--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[i]))return!1;if(Je&&r instanceof Element)return!1;for(i=t;i--!==0;)if(!((n[i]==="_owner"||n[i]==="__v"||n[i]==="__o")&&r.$$typeof)&&!H(r[n[i]],e[n[i]]))return!1;return!0}return r!==r&&e!==e}function _(r,e){try{return H(r,e)}catch(t){if(typeof t=="object"&&t!==null&&"message"in t&&typeof t.message=="string"&&(t.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw t}}function v(r,e){return typeof r.get=="function"?r.get(e):r[e]}function ge(r){return typeof r.count=="function"?r.count():r.length}function P(r,e){return ge(r)===ge(e)&&r.every((t,i)=>t===v(e,i.toString()))}function rt(r,e){const t={};return r.forEach(i=>{t[i[e]]=i}),t}function U(){}function F(r,e){return z.Temporal.Instant.fromEpochMilliseconds(r).toZonedDateTimeISO(e)}function se(r,e,t){const i=`${t}s`;return r.add({[i]:e})}function D(r,e){const t={millisecond:0,microsecond:0,nanosecond:0};switch(e){case"year":return r.with({...t,second:0,minute:0,hour:0,day:1,month:1});case"month":return r.with({...t,second:0,minute:0,hour:0,day:1});case"day":return r.with({...t,second:0,minute:0,hour:0});case"hour":return r.with({...t,second:0,minute:0});case"minute":return r.with({...t,second:0});case"second":return r.with(t);default:return r}}function we(r,e){return D(se(r,1,e),e).subtract({milliseconds:1})}function it(r,e,t){if(t<=1)return r;const i=r[e]%t;return i===0?r:D(se(r,-i,e),e)}function M(r){if(typeof r=="number")return r;if(r instanceof z.Temporal.ZonedDateTime||r instanceof z.Temporal.Instant)return r.epochMilliseconds;if(r instanceof Date)return r.valueOf();if(typeof r=="object"&&r!==null&&"valueOf"in r&&typeof r.valueOf=="function"){const e=r.valueOf();if(typeof e=="number")return e}throw new Error("Unable to convert value to epoch milliseconds")}function Re(r){try{return z.Temporal.Now.instant().toZonedDateTimeISO(r).offsetNanoseconds/1e6}catch{return 0}}function Y(r,e,t){return(e-r)/t}function K(r,e,t,i){const s=t/(e-r);return(i-r)*s}function ne(r,e,t,i){return(e-r)/t*i+r}function oe(r,e,t,i,s,n){const a=i[t]||1;let l=it(D(F(r,s),t),t,a);for(;l.epochMilliseconds<e;){const h=D(se(l,a,t),t);n(l,h),l=h}}const q=17;function N(r,e,t){const i={second:1e3,minute:60,hour:60,day:24,month:30,year:12};let s="year",n=r;return Object.keys(i).some(a=>{const l=a;n=n/i[l];const h=n/t[l],m=t[l]&&t[l]>1?3*q:q,p=e/m;if(h<p)return s=a,!0}),s}const J={second:"minute",minute:"hour",hour:"day",day:"month",month:"year",year:"year"};function ae(r){if(!J[r])throw new Error(`unit ${r} is not acceptable`);return J[r]}function Ie({itemTimeStart:r,itemTimeEnd:e,dragTime:t,isDragging:i,isResizing:s,resizingEdge:n,resizeTime:a}){const l=e-r;return[i&&t?t:s&&n==="left"&&a?a:r,i&&t?t+l:s&&n==="right"&&a?a:e]}function ze({itemTimeStart:r,itemTimeEnd:e,canvasTimeStart:t,canvasTimeEnd:i,canvasWidth:s}){const n=e-r,a=Math.max(r,t),l=Math.min(e,i),h=K(t,i,s,a),p=K(t,i,s,l)-h;return{left:h,width:Math.max(p,3),collisionLeft:r,collisionWidth:n}}function le(r,e){const{groupIdKey:t}=e,i={};for(let s=0;s<r.length;s++)i[v(r[s],t)]={index:s,group:r[s]};return i}function Me(r,e){var s,n;const t={},i=Object.keys(e);for(let a=0;a<i.length;a++){const l=e[i[a]];t[a]={index:l.index,group:l.group,items:[]}}for(let a=0;a<r.length;a++)if(r[a].dimensions!==void 0&&((s=r[a].dimensions)==null?void 0:s.order)!==void 0){const l=t[((n=r[a].dimensions)==null?void 0:n.order.index)??0];l&&l.items.push(r[a])}return t}function ue(r,e,t,i){const{itemTimeStartKey:s,itemTimeEndKey:n}=i;return r.filter(a=>{const l=M(v(a,s)),h=M(v(a,n));return l<=t&&h>=e})}const st=.001;function je(r,e,t,i=st){return r.collisionLeft+i<e.collisionLeft+e.collisionWidth&&r.collisionLeft+r.collisionWidth-i>e.collisionLeft&&r.top-t+i<e.top+e.height&&r.top+r.height+t-i>e.top}function Oe(r,e,t,i,s,n,a){let l=i;const h=a??(r-e.dimensions.height)/2;if(e.dimensions.stack&&e.dimensions.top===null){e.dimensions.top=s+h,l=Math.max(l,r,e.dimensions.height+h*2);do{var m=null;for(let p=n-1,b=0;p>=b;p--){const o=t[p];if(o.dimensions.top!==null&&o.dimensions.stack&&je(e.dimensions,o.dimensions,h)){m=o;break}}m!=null&&(e.dimensions.top=m.dimensions.top+m.dimensions.height+h*(a!==void 0?1:2),l=Math.max(l,e.dimensions.top+e.dimensions.height+h-s))}while(m)}return{groupHeight:l,verticalMargin:h,itemTop:e.dimensions.top}}function ke(r,e,t,i,s){var a,l;const n=s??(r-(((a=e.dimensions)==null?void 0:a.height)??1))/2;return e.dimensions&&e.dimensions.top===null&&(e.dimensions.top=i+n,t=Math.max(t,r,e.dimensions.height+n)),{groupHeight:t,verticalMargin:0,itemTop:((l=e.dimensions)==null?void 0:l.top)??0}}function be(r=[]){return r.reduce((e,t)=>e+t,0)}function xe(r,e,t,i,s){const n=[],a=[],l=Me(r,e);for(const h in l){const m=l[h],{items:p,group:b}=m,o=be(n),c=b.stackItems!==void 0?b.stackItems:i,{groupHeight:u}=De(p,c,t,o,s);a.push(o),b.height?n.push(b.height):n.push(Math.max(u,t))}return{height:be(n),groupHeights:n,groupTops:a}}function De(r,e,t,i,s){let n=0,a=0;for(let l=0;l<r.length;l++){const h=e?Oe(t,r[l],r,n,i,l,s):ke(t,r[l],n,i,s);n=h.groupHeight,a=h.verticalMargin}return{groupHeight:n,verticalMargin:a}}function x(r,e,t,i,s,n,a,l,h,m,p,b,o,c,u,f){const y=ue(r,i,s,n).map(R=>Ee({item:R,keys:n,draggingItem:m,resizingItem:p,dragTime:b,resizingEdge:o,resizeTime:c,groups:e,newGroupOrder:u}));if(e.length===0)return{dimensionItems:[],height:0,groupHeights:[],groupTops:[]};const S=le(e,n),w=y.map(R=>Pe({item:R,keys:n,canvasTimeStart:i,canvasTimeEnd:s,canvasWidth:t,groupOrders:S,lineHeight:a,itemHeightRatio:l,itemVerticalGap:f})).filter(R=>!!R),{height:C,groupHeights:I,groupTops:L}=xe(w,S,a,h,f);return{dimensionItems:w,height:C,groupHeights:I,groupTops:L}}function Q(r=!0){return r?3:1}function j(r,e){return r*e}function Pe({item:r,keys:e,canvasTimeStart:t,canvasTimeEnd:i,canvasWidth:s,groupOrders:n,lineHeight:a,itemHeightRatio:l,itemVerticalGap:h}){const m=v(r,e.itemIdKey),p=ze({itemTimeStart:M(v(r,e.itemTimeStartKey)),itemTimeEnd:M(v(r,e.itemTimeEndKey)),canvasTimeStart:t,canvasTimeEnd:i,canvasWidth:s});if(p)return p.top=null,p.order=n[v(r,e.itemGroupKey)],p.stack=!r.isOverlay,p.height=(r.height||a)*(typeof h>"u"?l:1),{id:m,dimensions:p}}function Ee({item:r,keys:e,draggingItem:t,resizingItem:i,dragTime:s,resizingEdge:n,resizeTime:a,groups:l,newGroupOrder:h}){if(!i&&!t)return r;const m=v(r,e.itemIdKey),p=m===t,b=m===i,o=v(r,e.itemTimeStartKey),c=v(r,e.itemTimeEndKey),[u,f]=Ie({itemTimeStart:M(o),itemTimeEnd:M(c),isDragging:p,isResizing:b,dragTime:s,resizingEdge:n,resizeTime:a});return{...r,[e.itemTimeStartKey]:o instanceof z.Temporal.ZonedDateTime?F(u,o.timeZoneId):u,[e.itemTimeEndKey]:c instanceof z.Temporal.ZonedDateTime?F(f,c.timeZoneId):f,[e.itemGroupKey]:p?v(l[h],e.groupIdKey):v(r,e.itemGroupKey)}}function ce(r,e,t,i=!0){if(!i)return[r,e];const s=e-r,n=r-s*(t-1)/2,a=n+s*t;return[n,a]}function ee(r,e,t,i,s,n,a){const l=n.buffer,h=a.canvasTimeStart,m=a.canvasTimeEnd,p=a.visibleTimeEnd-a.visibleTimeStart,b=e-r,o={...a,visibleTimeStart:r,visibleTimeEnd:e};if(!(b===p&&r>=h+p*.5&&r<=m-p*1.5&&e>=h+p*1.5&&e<=m-p*.5)||t){const[u,f]=ce(r,e,l,n.resizableCanvas);o.canvasTimeStart=u,o.canvasTimeEnd=f;const g={...a,...o},y=j(g.width,a.canvasWidthFactor);Object.assign(o,x(i,s,y,g.canvasTimeStart,g.canvasTimeEnd,n.keys,n.lineHeight,n.itemHeightRatio,n.stackItems,g.draggingItem,g.resizingItem,g.dragTime,g.resizingEdge,g.resizeTime,g.newGroupOrder,n.itemVerticalGap))}return o}const nt=Object.freeze(Object.defineProperty({__proto__:null,NEXT_UNITS:J,calculateDimensions:ze,calculateInteractionNewTimes:Ie,calculateScrollCanvas:ee,calculateTimeForXPosition:ne,calculateXPositionForTime:K,collision:je,coordinateToTimeRatio:Y,getCanvasBoundariesFromVisibleTime:ce,getCanvasWidth:j,getCanvasWidthFactor:Q,getEndOfUnit:we,getGroupOrders:le,getGroupedItems:Me,getItemDimensions:Pe,getItemWithInteractions:Ee,getMinUnit:N,getNextUnit:ae,getStartOfUnit:D,getTimezoneOffsetMs:Re,getVisibleItems:ue,groupNoStack:ke,groupStack:Oe,iterateTimes:oe,minCellWidth:q,stackAll:xe,stackGroup:De,stackTimelineItems:x,toEpochMilliseconds:M,toTimelineDate:F},Symbol.toStringTag,{value:"Module"})),ot={getTimelineState:()=>(console.warn('"getTimelineState" default func is being used'),{}),getLeftOffsetFromDate:()=>(console.warn('"getLeftOffsetFromDate" default func is being used'),0),getDateFromLeftOffsetPosition:()=>(console.warn('"getDateFromLeftOffsetPosition" default func is being used'),0),showPeriod:()=>{console.warn('"showPeriod" default func is being used')}},$=T.createContext(ot),{Consumer:at,Provider:lt}=$;class ut extends T.Component{constructor(e){super(e),Object.defineProperty(this,"getTimelineState",{enumerable:!0,configurable:!0,writable:!0,value:()=>{const{visibleTimeStart:t,visibleTimeEnd:i,canvasTimeStart:s,canvasTimeEnd:n,canvasWidth:a,timelineUnit:l,timelineWidth:h,timezone:m}=this.props;return{visibleTimeStart:t,visibleTimeEnd:i,canvasTimeStart:s,canvasTimeEnd:n,canvasWidth:a,timelineUnit:l,timelineWidth:h,timezone:m}}}),Object.defineProperty(this,"getLeftOffsetFromDate",{enumerable:!0,configurable:!0,writable:!0,value:t=>{const{canvasTimeStart:i,canvasTimeEnd:s,canvasWidth:n}=this.props;return K(i,s,n,t)}}),Object.defineProperty(this,"getDateFromLeftOffsetPosition",{enumerable:!0,configurable:!0,writable:!0,value:t=>{const{canvasTimeStart:i,canvasTimeEnd:s,canvasWidth:n}=this.props;return ne(i,s,n,t)}}),this.state={timelineContext:{getTimelineState:this.getTimelineState,getLeftOffsetFromDate:this.getLeftOffsetFromDate,getDateFromLeftOffsetPosition:this.getDateFromLeftOffsetPosition,showPeriod:this.props.showPeriod}}}render(){return d.jsx(lt,{value:this.state.timelineContext,children:this.props.children})}}const A=at,ct=()=>T.useContext($);class ht extends T.Component{shouldComponentUpdate(e){return!(e.canvasTimeStart===this.props.canvasTimeStart&&e.canvasTimeEnd===this.props.canvasTimeEnd&&e.canvasWidth===this.props.canvasWidth&&e.lineCount===this.props.lineCount&&e.minUnit===this.props.minUnit&&e.timeSteps===this.props.timeSteps&&e.height===this.props.height&&e.timezone===this.props.timezone&&e.verticalLineClassNamesForTime===this.props.verticalLineClassNamesForTime)}render(){const{canvasTimeStart:e,canvasTimeEnd:t,timezone:i,minUnit:s,timeSteps:n,height:a,verticalLineClassNamesForTime:l,getLeftOffsetFromDate:h}=this.props,m=[];return oe(e,t,s,n,i,(p,b)=>{const c=p[s==="day"?"day":s]===(s==="day"?1:0);let u=[];l&&(u=l(p.epochMilliseconds,b.epochMilliseconds-1));const f=B("rct-vl",{"rct-vl-first":c,[`rct-day-${p.dayOfWeek}`]:s==="day"||s==="hour"||s==="minute"},u),g=h(p.epochMilliseconds),y=h(b.epochMilliseconds);m.push(d.jsx("div",{className:f,style:{pointerEvents:"none",top:"0px",left:`${g}px`,width:`${y-g}px`,height:`${a}px`}},`line-${p.epochMilliseconds}`))}),d.jsx("div",{className:"rct-vertical-lines",children:m})}}const dt=({...r})=>d.jsx(A,{children:({getLeftOffsetFromDate:e,getTimelineState:t})=>{const i=t();return d.jsx(ht,{getLeftOffsetFromDate:e,timezone:i.timezone,...r})}}),Le={groupIdKey:"id",groupTitleKey:"title",groupRightTitleKey:"rightTitle",groupLabelKey:"title",itemIdKey:"id",itemTitleKey:"title",itemDivTitleKey:"title",itemGroupKey:"group",itemTimeStartKey:"start_time",itemTimeEndKey:"end_time"},We={second:1,minute:1,hour:1,day:1,month:1,year:1},He={year:{long:{year:"numeric"},mediumLong:{year:"numeric"},medium:{year:"numeric"},short:{year:"2-digit"}},month:{long:{month:"long",year:"numeric"},mediumLong:{month:"long"},medium:{month:"short"},short:{month:"numeric",year:"2-digit"}},week:{long:{month:"short",day:"numeric"},mediumLong:{month:"short",day:"numeric"},medium:{month:"short",day:"numeric"},short:{month:"short",day:"numeric"}},day:{long:{weekday:"long",month:"long",day:"numeric"},mediumLong:{weekday:"long",month:"long",day:"numeric"},medium:{day:"numeric",weekday:"short"},short:{day:"numeric"}},hour:{long:{weekday:"long",month:"long",day:"numeric",hour:"numeric",minute:"numeric"},mediumLong:{month:"numeric",day:"numeric",hour:"numeric",minute:"numeric"},medium:{hour:"numeric",minute:"numeric"},short:{hour:"numeric"}},minute:{long:{hour:"numeric",minute:"numeric"},mediumLong:{hour:"numeric",minute:"numeric"},medium:{hour:"numeric",minute:"numeric"},short:{minute:"numeric"}},second:{long:{minute:"numeric",second:"numeric"},mediumLong:{minute:"numeric",second:"numeric"},medium:{minute:"numeric",second:"numeric"},short:{second:"numeric"}}},pt={registerScroll:()=>(console.warn("default registerScroll header used"),U),rightSidebarWidth:0,leftSidebarWidth:150,timeSteps:{}},Ue=T.createContext(pt);class mt extends T.Component{render(){const e={rightSidebarWidth:this.props.rightSidebarWidth,leftSidebarWidth:this.props.leftSidebarWidth,timeSteps:this.props.timeSteps,registerScroll:this.props.registerScroll};return d.jsx(Ue.Provider,{value:e,children:this.props.children})}}const ft=Ue,he=()=>T.useContext(ft);class Ne extends T.Component{constructor(e){super(e),Object.defineProperty(this,"getHeaderIntervals",{enumerable:!0,configurable:!0,writable:!0,value:({canvasTimeStart:m,canvasTimeEnd:p,unit:b,timezone:o,timeSteps:c,getLeftOffsetFromDate:u})=>{const f=[];return oe(m,p,b,c,o,(g,y)=>{const S=u(g.epochMilliseconds),C=u(y.epochMilliseconds)-S;f.push({startTime:g,endTime:y,labelWidth:C,left:S})}),f}}),Object.defineProperty(this,"getRootProps",{enumerable:!0,configurable:!0,writable:!0,value:(m={})=>{const{style:p}=m;return{style:Object.assign({},p||{},{position:"relative",width:this.props.canvasWidth,height:this.props.height})}}}),Object.defineProperty(this,"getIntervalProps",{enumerable:!0,configurable:!0,writable:!0,value:(m={})=>{const{interval:p,style:b}=m;if(!p)throw new Error("you should provide interval to the prop getter");const{startTime:o,labelWidth:c,left:u}=p;return{style:{...b,left:u,width:c,position:"absolute"},key:`label-${o.epochMilliseconds}`}}}),Object.defineProperty(this,"getStateAndHelpers",{enumerable:!0,configurable:!0,writable:!0,value:()=>{const{canvasTimeStart:m,canvasTimeEnd:p,timelineWidth:b,visibleTimeStart:o,visibleTimeEnd:c,unit:u,showPeriod:f,headerData:g,timezone:y}=this.props;return{timelineContext:{timelineWidth:b,visibleTimeStart:o,visibleTimeEnd:c,canvasTimeStart:m,canvasTimeEnd:p,timezone:y},headerContext:{unit:u,intervals:this.state.intervals},getRootProps:this.getRootProps,getIntervalProps:this.getIntervalProps,showPeriod:f,data:g}}});const{canvasTimeStart:t,canvasTimeEnd:i,unit:s,timeSteps:n,getLeftOffsetFromDate:a,timezone:l}=e,h=this.getHeaderIntervals({canvasTimeStart:t,canvasTimeEnd:i,timeSteps:n,timezone:l,unit:s,getLeftOffsetFromDate:a});this.state={intervals:h}}componentDidUpdate(e){if(!_(e,this.props)){const{canvasTimeStart:t,canvasTimeEnd:i,unit:s,timeSteps:n,getLeftOffsetFromDate:a,timezone:l}=this.props,h=this.getHeaderIntervals({canvasTimeStart:t,canvasTimeEnd:i,timeSteps:n,timezone:l,unit:s,getLeftOffsetFromDate:a});this.setState({intervals:h})}}render(){const e=this.getStateAndHelpers();return this.props.children(e)}}Object.defineProperty(Ne,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{height:30}});function Fe({children:r,unit:e,headerData:t,height:i}){const{getTimelineState:s,showPeriod:n,getLeftOffsetFromDate:a}=ct(),l=s(),{timeSteps:h}=he();return d.jsx(Ne,{children:r,timeSteps:h,showPeriod:n,unit:e||l.timelineUnit,...l,headerData:t,getLeftOffsetFromDate:a,height:i})}var ve=Number.isNaN||function(e){return typeof e=="number"&&e!==e};function gt(r,e){return!!(r===e||ve(r)&&ve(e))}function bt(r,e){if(r.length!==e.length)return!1;for(var t=0;t<r.length;t++)if(!gt(r[t],e[t]))return!1;return!0}function Te(r,e){e===void 0&&(e=bt);var t=null;function i(){for(var s=[],n=0;n<arguments.length;n++)s[n]=arguments[n];if(t&&t.lastThis===this&&e(s,t.lastArgs))return t.lastResult;var a=r.apply(this,s);return t={lastResult:a,lastArgs:s,lastThis:this},a}return i.clear=function(){t=null},i}function k(...r){return(e,...t)=>{e.preventDefault(),r.forEach(i=>i&&i(e,...t))}}class vt extends T.PureComponent{constructor(){super(...arguments),Object.defineProperty(this,"onIntervalClick",{enumerable:!0,configurable:!0,writable:!0,value:()=>{const{primaryHeader:e,interval:t,unit:i,showPeriod:s}=this.props;if(e){const n=ae(i),a=D(t.startTime,n),l=we(t.startTime,n);s(a,l)}else s(t.startTime,t.endTime)}}),Object.defineProperty(this,"getIntervalProps",{enumerable:!0,configurable:!0,writable:!0,value:(e={})=>({...this.props.getIntervalProps({interval:this.props.interval,...e}),onClick:k(this.onIntervalClick,e.onClick)})})}render(){const{intervalText:e,interval:t,intervalRenderer:i,headerData:s}=this.props,n=i;if(n)return n({getIntervalProps:this.getIntervalProps,intervalContext:{interval:t,intervalText:e},data:s});const{key:a,...l}=this.getIntervalProps();return T.createElement("div",{"data-testid":"dateHeaderInterval",...l,key:a,className:`rct-dateHeader ${this.props.primaryHeader?"rct-dateHeader-primary":""}`},d.jsx("span",{children:e}))}}function Tt({headerContext:{intervals:r,unit:e},getRootProps:t,getIntervalProps:i,showPeriod:s,data:{style:n,intervalRenderer:a,className:l,getLabelFormat:h,unitProp:m,headerData:p}}){return d.jsx("div",{"data-testid":"dateHeader",className:l,...t({style:n}),children:r.map(b=>{const o=h([b.startTime,b.endTime],e,b.labelWidth);return d.jsx(vt,{unit:e,interval:b,showPeriod:s,intervalText:o,primaryHeader:m==="primaryHeader",getIntervalProps:i,intervalRenderer:a,headerData:p},`label-${b.startTime.epochMilliseconds}`)})})}class yt extends T.Component{constructor(){super(...arguments),Object.defineProperty(this,"getHeaderUnit",{enumerable:!0,configurable:!0,writable:!0,value:()=>this.props.unit==="primaryHeader"?ae(this.props.timelineUnit):this.props.unit?this.props.unit:this.props.timelineUnit}),Object.defineProperty(this,"getRootStyle",{enumerable:!0,configurable:!0,writable:!0,value:Te(e=>({height:30,...e}))}),Object.defineProperty(this,"getLabelFormat",{enumerable:!0,configurable:!0,writable:!0,value:(e,t,i)=>{const{labelFormat:s}=this.props;if(typeof s=="function")return s(e,t,i);throw new Error("labelFormat should be function or string")}}),Object.defineProperty(this,"getHeaderData",{enumerable:!0,configurable:!0,writable:!0,value:Te((e,t,i,s,n,a)=>({intervalRenderer:e,style:t,className:i,getLabelFormat:s,unitProp:n,headerData:a}))})}render(){const e=this.getHeaderUnit(),{height:t}=this.props;return d.jsx(Fe,{children:Tt,unit:e,height:t,headerData:this.getHeaderData(this.props.intervalRenderer,this.getRootStyle(this.props.style),this.props.className,this.getLabelFormat,this.props.unit,this.props.headerData)})}}function te({labelFormat:r,unit:e,style:t,className:i,intervalRenderer:s,headerData:n,height:a}){return d.jsx(A,{children:({getTimelineState:l})=>{const h=l();return d.jsx(yt,{timelineUnit:h.timelineUnit,unit:e,labelFormat:r||St,style:t,className:i,intervalRenderer:s,headerData:n,height:a})}})}function St([r],e,t,i=He){let s;return t>=150?s=i[e].long:t>=100?s=i[e].mediumLong:t>=50?s=i[e].medium:s=i[e].short,r.toLocaleString("en-US",s)}const Ct="left",Ke="right";class wt extends T.PureComponent{constructor(){super(...arguments),Object.defineProperty(this,"getRootProps",{enumerable:!0,configurable:!0,writable:!0,value:(e={})=>{const{style:t}=e,i=this.props.variant===Ke?this.props.rightSidebarWidth:this.props.leftSidebarWidth;return{style:{...t,width:i}}}}),Object.defineProperty(this,"getStateAndHelpers",{enumerable:!0,configurable:!0,writable:!0,value:()=>({getRootProps:this.getRootProps,data:this.props.headerData})})}render(){const e=this.getStateAndHelpers();return this.props.children(e)}}const Rt=({getRootProps:r})=>d.jsx("div",{"data-testid":"sidebarHeader",...r()}),E=r=>{const{children:e,variant:t=Ct,headerData:i}=r,{leftSidebarWidth:s,rightSidebarWidth:n}=he();return d.jsx(wt,{leftSidebarWidth:s,rightSidebarWidth:n,variant:t,headerData:i,children:e||Rt})};E.secretKey="SidebarHeader";class It extends T.Component{constructor(){super(...arguments),Object.defineProperty(this,"getRootStyle",{enumerable:!0,configurable:!0,writable:!0,value:()=>({...this.props.style,display:"flex",width:"100%"})}),Object.defineProperty(this,"getCalendarHeaderStyle",{enumerable:!0,configurable:!0,writable:!0,value:()=>{const{leftSidebarWidth:e,rightSidebarWidth:t,calendarHeaderStyle:i}=this.props;return{...i,overflow:"hidden",width:`calc(100% - ${e+t}px)`}}}),Object.defineProperty(this,"isSidebarHeader",{enumerable:!0,configurable:!0,writable:!0,value:e=>e.type===void 0?!1:e.type.secretKey===E.secretKey})}render(){let e,t;const i=[],s=Array.isArray(this.props.children)?this.props.children.filter(n=>n):[this.props.children];return T.Children.map(s,n=>{var a;this.isSidebarHeader(n)?((a=n==null?void 0:n.props)==null?void 0:a.variant)===Ke?e=n:t=n:i.push(n)}),t||(t=d.jsx(E,{})),!e&&this.props.rightSidebarWidth&&(e=d.jsx(E,{variant:"right"})),d.jsxs("div",{"data-testid":"headerRootDiv",style:this.getRootStyle(),className:B("rct-header-root",this.props.className),children:[t,d.jsx("div",{ref:this.props.registerScroll,style:this.getCalendarHeaderStyle(),className:B("rct-calendar-header",this.props.calendarHeaderClassName),"data-testid":"headerContainer",children:i}),e]})}}const G=({children:r,style:e,className:t,calendarHeaderStyle:i,calendarHeaderClassName:s})=>{const{leftSidebarWidth:n,rightSidebarWidth:a,registerScroll:l}=he();return d.jsx(It,{leftSidebarWidth:n,rightSidebarWidth:a,registerScroll:l,style:e,className:t,calendarHeaderStyle:i,calendarHeaderClassName:s,children:r})};G.secretKey="TimelineHeaders";function zt({item:r,itemContext:e,getItemProps:t,getResizeProps:i}){const{left:s,right:n}=i();return d.jsxs("div",{...t(r.itemProps),children:[e.useResizeHandle?d.jsx("div",{...s}):"",d.jsx("div",{className:"rct-item-content",style:{maxHeight:`${e.dimensions.height}`},children:e.title}),e.useResizeHandle?d.jsx("div",{...n}):""]})}function ye(r){let e=0,t=0,i=!0;for(;r;)!r.offsetParent&&r.tagName==="BODY"&&r.scrollLeft===0&&r.scrollTop===0&&(r=document.scrollingElement||r),e+=r.offsetLeft-(i?0:r.scrollLeft)+r.clientLeft,t+=r.offsetTop-(i?0:r.scrollTop)+r.clientTop,r=r.offsetParent,i=!1;return{x:e,y:t}}function re(r){if(r===document.body)return{scrollLeft:0,scrollTop:0};{const e=re(r.parentNode);return{scrollLeft:r.scrollLeft+e.scrollLeft,scrollTop:r.scrollTop+e.scrollTop}}}function ie(r){if(r===document.body||!r.offsetParent)return{offsetLeft:0,offsetTop:0};{const e=ie(r.offsetParent);return{offsetLeft:r.offsetLeft+e.offsetLeft,offsetTop:r.offsetTop+e.offsetTop}}}const Mt={fontSize:12,color:"white",cursor:"pointer",background:"#2196f3",border:"1px solid #1a6fb3",zIndex:80},jt={background:"#ffc107",border:"1px solid #ff9800",zIndex:82},Ot={willChange:"left, top, width",cursor:"move"},kt={borderLeftWidth:3},xt={cursor:"w-resize"},Dt={borderRightWidth:3},Pt={cursor:"e-resize"},Et={position:"absolute",width:24,maxWidth:"20%",minWidth:2,height:"100%",top:0,left:0,cursor:"pointer",zIndex:88},Lt={position:"absolute",width:24,maxWidth:"20%",minWidth:2,height:"100%",top:0,right:0,cursor:"pointer",zIndex:88};class de extends T.Component{constructor(e){super(e),Object.defineProperty(this,"state",{enumerable:!0,configurable:!0,writable:!0,value:{interactMounted:!1,dragging:!1,dragStart:null,preDragPosition:null,dragTime:null,dragGroupDelta:null,resizing:!1,resizeEdge:null,resizeStart:null,resizeTime:null}}),Object.defineProperty(this,"itemId",{enumerable:!0,configurable:!0,writable:!0,value:""}),Object.defineProperty(this,"itemTitle",{enumerable:!0,configurable:!0,writable:!0,value:""}),Object.defineProperty(this,"itemDivTitle",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"itemTimeStart",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"itemTimeEnd",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"item",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"dragLeft",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"dragRight",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"startedClicking",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"startedTouching",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"dragInProgress",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"fireInteractEvent",{enumerable:!0,configurable:!0,writable:!0,value:t=>{if(this.item){const i=new CustomEvent("itemInteraction",{bubbles:!0,detail:{itemInteraction:t}});this.item.dispatchEvent(i)}}}),Object.defineProperty(this,"onMouseDown",{enumerable:!0,configurable:!0,writable:!0,value:t=>{this.state.interactMounted||(t.preventDefault(),this.startedClicking=!0)}}),Object.defineProperty(this,"onMouseUp",{enumerable:!0,configurable:!0,writable:!0,value:t=>{!this.state.interactMounted&&this.startedClicking&&(this.startedClicking=!1,this.actualClick(t,"click"))}}),Object.defineProperty(this,"onTouchStart",{enumerable:!0,configurable:!0,writable:!0,value:t=>{this.state.interactMounted||(t.preventDefault(),this.startedTouching=!0)}}),Object.defineProperty(this,"onTouchEnd",{enumerable:!0,configurable:!0,writable:!0,value:t=>{!this.state.interactMounted&&this.startedTouching&&(this.startedTouching=!1,this.actualClick(t,"touch"))}}),Object.defineProperty(this,"handleDoubleClick",{enumerable:!0,configurable:!0,writable:!0,value:t=>{t.stopPropagation(),this.props.onItemDoubleClick&&this.props.onItemDoubleClick(this.itemId,t)}}),Object.defineProperty(this,"handleContextMenu",{enumerable:!0,configurable:!0,writable:!0,value:t=>{this.props.onContextMenu&&(t.preventDefault(),t.stopPropagation(),this.props.onContextMenu(this.itemId,t))}}),Object.defineProperty(this,"getItemRef",{enumerable:!0,configurable:!0,writable:!0,value:t=>this.item=t}),Object.defineProperty(this,"getDragLeftRef",{enumerable:!0,configurable:!0,writable:!0,value:t=>this.dragLeft=t}),Object.defineProperty(this,"getDragRightRef",{enumerable:!0,configurable:!0,writable:!0,value:t=>this.dragRight=t}),Object.defineProperty(this,"getItemProps",{enumerable:!0,configurable:!0,writable:!0,value:(t={})=>{const i="rct-item"+(this.props.item.className?` ${this.props.item.className}`:"");return{key:this.itemId,ref:this.getItemRef,title:this.itemDivTitle,className:i+` ${t.className?t.className:""}`,onMouseDown:k(this.onMouseDown,t.onMouseDown),onMouseUp:k(this.onMouseUp,t.onMouseUp),onTouchStart:k(this.onTouchStart,t.onTouchStart),onTouchEnd:k(this.onTouchEnd,t.onTouchEnd),onDoubleClick:k(this.handleDoubleClick,t.onDoubleClick),onContextMenu:k(this.handleContextMenu,t.onContextMenu),style:Object.assign({},this.getItemStyle(t))}}}),Object.defineProperty(this,"getResizeProps",{enumerable:!0,configurable:!0,writable:!0,value:(t={})=>{let i="rct-item-handler rct-item-handler-left rct-item-handler-resize-left";t.leftClassName&&(i+=` ${t.leftClassName}`);let s="rct-item-handler rct-item-handler-right rct-item-handler-resize-right";return t.rightClassName&&(s+=` ${t.rightClassName}`),{left:{ref:this.getDragLeftRef,className:i,style:Object.assign({},Et,t.leftStyle)},right:{ref:this.getDragRightRef,className:s,style:Object.assign({},Lt,t.rightStyle)}}}}),this.cacheDataFromProps(e)}shouldComponentUpdate(e,t){return!_(this.props,e)||!_(this.state,t)}cacheDataFromProps(e){this.itemId=v(e.item,e.keys.itemIdKey),this.itemTitle=v(e.item,e.keys.itemTitleKey),this.itemDivTitle=e.keys.itemDivTitleKey?v(e.item,e.keys.itemDivTitleKey):this.itemTitle;const t=v(e.item,e.keys.itemTimeStartKey),i=v(e.item,e.keys.itemTimeEndKey);this.itemTimeStart=t!==null?M(t):void 0,this.itemTimeEnd=i!==null?M(i):void 0}getTimeRatio(){const{canvasTimeStart:e,canvasTimeEnd:t,canvasWidth:i}=this.props;return Y(e,t,i)}dragTimeSnap(e,t){const{dragSnap:i,timezone:s}=this.props;if(i){const n=t?Re(s):0;return Math.round(e/i)*i-n%i}else return e}resizeTimeSnap(e){const{dragSnap:t}=this.props;if(t){const i=this.itemTimeEnd%t;return Math.round((e-i)/t)*t+i}else return e}dragTime(e){if(this.state.dragging)return this.dragTimeSnap(this.timeFor(e)+this.state.dragStart.offset,!0);{const{timezone:t}=this.props;return z.Temporal.Instant.fromEpochMilliseconds(this.itemTimeStart).toZonedDateTimeISO(t).epochMilliseconds}}timeFor(e){const t=Y(this.props.canvasTimeStart,this.props.canvasTimeEnd,this.props.canvasWidth),i=ie(this.props.scrollRef).offsetLeft,s=re(this.props.scrollRef);return(e.pageX-i+s.scrollLeft)*t+this.props.canvasTimeStart}dragGroupDelta(e){const{groupTops:t,order:i}=this.props;if(this.state.dragging){if(!this.props.canChangeGroup)return 0;let s=0;const n=ie(this.props.scrollRef).offsetTop,a=re(this.props.scrollRef);for(const l of Object.keys(t)){const h=t[l];if(e.pageY-n+a.scrollTop>h)s=parseInt(l,10)-i.index;else break}return this.props.order.index+s<0?0-this.props.order.index:s}else return 0}resizeTimeDelta(e,t){const i=this.itemTimeEnd-this.itemTimeStart,s=this.dragTimeSnap((e.pageX-this.state.resizeStart)*this.getTimeRatio());return i+(t==="left"?-s:s)<(this.props.dragSnap||1e3)?t==="left"?i-(this.props.dragSnap||1e3):(this.props.dragSnap||1e3)-i:s}mountInteract(){const e=this.props.useResizeHandle?".rct-item-handler-resize-left":!0,t=this.props.useResizeHandle?".rct-item-handler-resize-right":!0;X(this.item).resizable({edges:{left:this.canResizeLeft()&&e,right:this.canResizeRight()&&t,top:!1,bottom:!1},enabled:this.props.selected&&(this.canResizeLeft()||this.canResizeRight())}).draggable({enabled:this.props.selected&&this.canMove()}).styleCursor(!1).on("dragstart",i=>{if(this.props.selected){this.dragInProgress=!0,this.fireInteractEvent(!0);const s=this.timeFor(i);this.setState({dragging:!0,dragStart:{x:i.pageX,y:i.pageY,offset:this.itemTimeStart-s},preDragPosition:{x:i.target.offsetLeft,y:i.target.offsetTop},dragTime:this.itemTimeStart,dragGroupDelta:0})}else return!1}).on("dragmove",i=>{this.state.dragging&&this.setState(s=>{if(!this.dragInProgress)return{...s};let n=this.dragTime(i);const a=this.dragGroupDelta(i);return this.props.moveResizeValidator&&(n=this.props.moveResizeValidator("move",this.props.item,n)),this.props.onDrag&&this.props.onDrag(this.itemId,n,this.props.order.index+a),{dragTime:n,dragGroupDelta:a}})}).on("dragend",i=>{if(this.state.dragging){if(this.props.onDrop){this.dragInProgress=!1,this.fireInteractEvent(!1);let s=this.dragTime(i);this.props.moveResizeValidator&&(s=this.props.moveResizeValidator("move",this.props.item,s)),this.props.onDrop(this.itemId,s,this.props.order.index+this.dragGroupDelta(i))}this.setState({dragging:!1,dragStart:null,preDragPosition:null,dragTime:null,dragGroupDelta:null})}}).on("resizestart",i=>{if(this.props.selected)this.fireInteractEvent(!0),this.setState({resizing:!0,resizeEdge:null,resizeStart:i.pageX,resizeTime:0});else return!1}).on("resizemove",i=>{if(this.state.resizing){let s=this.state.resizeEdge;s||(s=i.deltaRect.left!==0?"left":"right",this.setState({resizeEdge:s}));let n=this.resizeTimeSnap(this.timeFor(i));this.props.moveResizeValidator&&(n=this.props.moveResizeValidator("resize",this.props.item,n,s)),this.props.onResizing&&this.props.onResizing(this.itemId,n,s),this.setState({resizeTime:n})}}).on("resizeend",i=>{if(this.state.resizing){this.fireInteractEvent(!1);const{resizeEdge:s}=this.state;let n=this.resizeTimeSnap(this.timeFor(i));this.props.moveResizeValidator&&(n=this.props.moveResizeValidator("resize",this.props.item,n,s)),this.props.onResized&&this.props.onResized(this.itemId,n,s,this.resizeTimeDelta(i,s)),this.setState({resizing:!1,resizeStart:null,resizeEdge:null,resizeTime:null})}}).on("tap",i=>{this.actualClick(i,i.pointerType==="mouse"?"click":"touch")}),this.setState({interactMounted:!0})}canResizeLeft(e=this.props){var i;return!e.canResizeLeft||e.minResizeWidth===void 0?!1:parseInt((i=e.dimensions.width)==null?void 0:i.toString(),10)>=e.minResizeWidth}canResizeRight(e=this.props){var i;return!e.canResizeRight||e.minResizeWidth===void 0?!1:parseInt((i=e.dimensions.width)==null?void 0:i.toString(),10)>=e.minResizeWidth}canMove(e=this.props){return!!e.canMove}componentDidUpdate(e){this.cacheDataFromProps(this.props);let{interactMounted:t}=this.state;const i=e.selected&&this.canMove(e),s=e.selected&&this.canResizeLeft(e),n=e.selected&&this.canResizeRight(e),a=this.props.selected&&this.canMove(this.props),l=this.props.selected&&this.canResizeLeft(this.props),h=this.props.selected&&this.canResizeRight(this.props);if(this.item){if(this.props.selected&&!t&&(this.mountInteract(),t=!0),t&&(s!==l||n!==h)){const m=this.props.useResizeHandle?this.dragLeft:!0,p=this.props.useResizeHandle?this.dragRight:!0;X(this.item).resizable({enabled:l||h,edges:{top:!1,bottom:!1,left:l&&m,right:h&&p}})}t&&i!==a&&X(this.item).draggable({enabled:a})}else t=!1;t!==this.state.interactMounted&&this.setState({interactMounted:t})}actualClick(e,t){this.props.canSelect&&this.props.onSelect&&this.props.onSelect(this.itemId,t,e)}getItemStyle(e){const t=this.props.dimensions,i={position:"absolute",boxSizing:"border-box",left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,lineHeight:`${t.height}px`};return Object.assign({},Mt,this.props.selected?jt:{},this.props.selected&&this.canMove(this.props)?Ot:{},this.props.selected&&this.canResizeLeft(this.props)?kt:{},this.props.selected&&this.canResizeLeft(this.props)&&this.state.dragging?xt:{},this.props.selected&&this.canResizeRight(this.props)?Dt:{},this.props.selected&&this.canResizeRight(this.props)&&this.state.dragging?Pt:{},e.style,i)}render(){var i,s;if(typeof this.props.order>"u"||this.props.order===null)return null;const e=this.context,t={dimensions:this.props.dimensions,useResizeHandle:!!this.props.useResizeHandle,title:this.itemTitle,canMove:this.canMove(this.props),canResizeLeft:this.canResizeLeft(this.props),canResizeRight:this.canResizeRight(this.props),selected:this.props.selected,dragging:this.state.dragging,dragStart:this.state.dragStart,dragTime:this.state.dragTime,dragGroupDelta:this.state.dragGroupDelta,resizing:this.state.resizing,resizeEdge:this.state.resizeEdge,resizeStart:this.state.resizeStart,resizeTime:this.state.resizeTime};return(s=(i=this.props)==null?void 0:i.itemRenderer)==null?void 0:s.call(i,{item:this.props.item,timelineContext:e,itemContext:t,getItemProps:this.getItemProps,getResizeProps:this.getResizeProps})}}Object.defineProperty(de,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{selected:!1,itemRenderer:zt}});Object.defineProperty(de,"contextType",{enumerable:!0,configurable:!0,writable:!0,value:$});function Wt(r,e){const t=v(r,"canResize")!==void 0?v(r,"canResize"):e;return t==="left"||t==="both"}function Ht(r,e){const t=v(r,"canResize")!==void 0?v(r,"canResize"):e;return t==="right"||t==="both"||t===!0}class Ge extends T.Component{shouldComponentUpdate(e){return!(P(e.groups,this.props.groups)&&P(e.items,this.props.items)&&P(e.dimensionItems,this.props.dimensionItems)&&e.keys===this.props.keys&&e.canvasTimeStart===this.props.canvasTimeStart&&e.canvasTimeEnd===this.props.canvasTimeEnd&&e.canvasWidth===this.props.canvasWidth&&e.selectedItem===this.props.selectedItem&&e.selected===this.props.selected&&e.dragSnap===this.props.dragSnap&&e.minResizeWidth===this.props.minResizeWidth&&e.canChangeGroup===this.props.canChangeGroup&&e.canMove===this.props.canMove&&e.canResize===this.props.canResize&&e.canSelect===this.props.canSelect&&e.timezone===this.props.timezone)}isSelected(e,t){if(this.props.selected){const i=v(e,t);return this.props.selected.includes(i)}else return this.props.selectedItem===v(e,t)}getVisibleItems(e,t){const{keys:i,items:s}=this.props;return ue(s,e,t,i)}render(){const{canvasTimeStart:e,canvasTimeEnd:t,dimensionItems:i,keys:s,groups:n,timezone:a}=this.props,{itemIdKey:l,itemGroupKey:h}=s,m=le(n,s),p=this.getVisibleItems(e,t),b=rt(i,"id");return d.jsx("div",{className:"rct-items",children:p.filter(o=>b[v(o,l)]).map(o=>d.jsx(de,{itemProps:o.itemProps,timezone:a,item:o,keys:this.props.keys,order:m[v(o,h)],dimensions:b[v(o,l)].dimensions,selected:this.isSelected(o,l),canChangeGroup:v(o,"canChangeGroup")!==void 0?v(o,"canChangeGroup"):this.props.canChangeGroup,canMove:v(o,"canMove")!==void 0?v(o,"canMove"):this.props.canMove,canResizeLeft:Wt(o,this.props.canResize),canResizeRight:Ht(o,this.props.canResize),canSelect:v(o,"canSelect")!==void 0?v(o,"canSelect"):this.props.canSelect,useResizeHandle:this.props.useResizeHandle,groupTops:this.props.groupTops,canvasTimeStart:this.props.canvasTimeStart,canvasTimeEnd:this.props.canvasTimeEnd,canvasWidth:this.props.canvasWidth,dragSnap:this.props.dragSnap,minResizeWidth:this.props.minResizeWidth,onResizing:this.props.itemResizing,onResized:this.props.itemResized,moveResizeValidator:this.props.moveResizeValidator,onDrag:this.props.itemDrag,onDrop:this.props.itemDrop,onItemDoubleClick:this.props.onItemDoubleClick,onContextMenu:this.props.onItemContextMenu,onSelect:this.props.itemSelect,itemRenderer:this.props.itemRenderer,scrollRef:this.props.scrollRef},v(o,l)))})}}class Se extends T.Component{shouldComponentUpdate(e){return!(e.keys===this.props.keys&&e.width===this.props.width&&e.height===this.props.height&&P(e.groups,this.props.groups)&&P(e.groupHeights,this.props.groupHeights))}renderGroupContent(e,t=!1,i,s){return this.props.groupRenderer?T.createElement(this.props.groupRenderer,{group:e,isRightSidebar:t}):v(e,t?s:i)}render(){const{width:e,groupHeights:t,height:i,isRightSidebar:s}=this.props,{groupIdKey:n,groupTitleKey:a,groupRightTitleKey:l}=this.props.keys,h={width:`${e}px`,height:`${i}px`},m={width:`${e}px`},p=this.props.groups.map((b,o)=>{const c={height:`${t[o]}px`,lineHeight:`${t[o]}px`};return d.jsx("div",{className:"rct-sidebar-row rct-sidebar-row-"+(o%2===0?"even":"odd"),style:c,children:this.renderGroupContent(b,s,a,l)},v(b,n))});return d.jsx("div",{className:"rct-sidebar"+(s?" rct-sidebar-right":""),style:h,children:d.jsx("div",{style:m,children:p})})}}const Ut={subscribeToMouseOver:()=>(console.warn('"subscribeToMouseOver" default func is being used'),()=>{})},{Consumer:Nt,Provider:Ft}=T.createContext(Ut),Kt=Ft,Gt=Nt,$t={markers:[],subscribeMarker:()=>(console.warn("default subscribe marker used"),{unsubscribe:U,getMarker:U}),updateMarker:()=>(console.warn("default subscribe marker used"),U)},{Consumer:At,Provider:Zt}=T.createContext($t);let Ce=0;const Xt=()=>(Ce+=1,Ce+1);class Vt extends T.Component{constructor(e){super(e),Object.defineProperty(this,"handleSubscribeToMarker",{enumerable:!0,configurable:!0,writable:!0,value:t=>(t={...t,id:Xt()},this.setState(i=>({markers:[...i.markers,t]})),{unsubscribe:()=>{this.setState(i=>({markers:i.markers.filter(s=>s.id!==t.id)}))},getMarker:()=>t})}),Object.defineProperty(this,"handleUpdateMarker",{enumerable:!0,configurable:!0,writable:!0,value:t=>{const i=this.state.markers.findIndex(s=>s.id===t.id);i<0||this.setState(s=>({markers:[...s.markers.slice(0,i),t,...s.markers.slice(i+1)]}))}}),this.state={markers:[],subscribeMarker:this.handleSubscribeToMarker,updateMarker:this.handleUpdateMarker}}render(){return d.jsx(Zt,{value:this.state,children:this.props.children})}}const Z=At;var O;(function(r){r.Today="Today",r.Custom="Custom",r.Cursor="Cursor"})(O||(O={}));const Bt={position:"absolute",top:0,bottom:0,width:"2px",backgroundColor:"black",pointerEvents:"none"},pe=r=>({...Bt,left:r}),me=r=>function({styles:t}){return d.jsx("div",{style:t,"data-testid":r})},_t=me("default-today-line");let $e=class extends T.Component{constructor(){super(...arguments),Object.defineProperty(this,"state",{enumerable:!0,configurable:!0,writable:!0,value:{date:Date.now()}}),Object.defineProperty(this,"intervalToken",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}componentDidMount(){this.intervalToken=this.createIntervalUpdater(this.props.interval)}componentDidUpdate(e){e.interval!==this.props.interval&&(clearInterval(this.intervalToken),this.intervalToken=this.createIntervalUpdater(this.props.interval))}createIntervalUpdater(e){return setInterval(()=>{this.setState({date:Date.now()})},e)}componentWillUnmount(){clearInterval(this.intervalToken)}render(){const{date:e}=this.state,t=this.props.getLeftOffsetFromDate(e),i=pe(t);return this.props.renderer({styles:i,date:e})}};Object.defineProperty($e,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{renderer:_t}});const Yt=me("default-customer-marker-id");let Ae=class extends T.Component{render(){const{date:e}=this.props,t=this.props.getLeftOffsetFromDate(e),i=pe(t);return this.props.renderer({styles:i,date:e})}};Object.defineProperty(Ae,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{renderer:Yt}});const qt=me("default-cursor-marker");let Ze=class extends T.Component{constructor(e){super(e),Object.defineProperty(this,"handleCanvasMouseOver",{enumerable:!0,configurable:!0,writable:!0,value:({leftOffset:t,date:i,isCursorOverCanvas:s})=>{this.setState({leftOffset:t,date:i,isShowingCursor:s})}}),Object.defineProperty(this,"unsubscribe",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.state={leftOffset:0,date:0,isShowingCursor:!1}}componentDidMount(){this.unsubscribe=this.props.subscribeToCanvasMouseOver(this.handleCanvasMouseOver)}componentWillUnmount(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}render(){const{isShowingCursor:e,leftOffset:t,date:i}=this.state;if(!e)return null;const s=pe(t);return this.props.renderer?this.props.renderer({styles:s,date:i}):null}};Object.defineProperty(Ze,"defaultProps",{enumerable:!0,configurable:!0,writable:!0,value:{renderer:qt}});const Xe=r=>d.jsx(Gt,{children:({subscribeToMouseOver:e})=>d.jsx(Ze,{subscribeToCanvasMouseOver:e,...r})});Xe.displayName="CursorMarkerWrapper";const Jt=()=>d.jsx(A,{children:({getLeftOffsetFromDate:r,getTimelineState:e})=>d.jsx(Z,{children:({markers:t})=>{const i=e();return t.map(s=>{switch(s.type){case O.Today:return new Date().valueOf()>=i.canvasTimeStart&&new Date().valueOf()<=i.canvasTimeEnd?d.jsx($e,{getLeftOffsetFromDate:r,renderer:s.renderer,interval:s.interval},s.id):null;case O.Custom:return s.date>=i.canvasTimeStart&&s.date<=i.canvasTimeEnd?d.jsx(Ae,{renderer:s.renderer,date:s.date,getLeftOffsetFromDate:r},s.id):null;case O.Cursor:return d.jsx(Xe,{renderer:s.renderer,getLeftOffsetFromDate:r},s.id);default:return null}})}})}),Qt={position:"absolute",left:0,right:0,top:0,bottom:0};class er extends T.Component{constructor(){super(...arguments),Object.defineProperty(this,"handleMouseMove",{enumerable:!0,configurable:!0,writable:!0,value:e=>{var t;if(this.subscription!==null){const{pageX:i}=e,{left:s}=((t=this.containerEl.current)==null?void 0:t.getBoundingClientRect())??{left:0},n=i-s,a=this.props.getDateFromLeftOffsetPosition(n);this.subscription({leftOffset:n,date:a,isCursorOverCanvas:!0})}}}),Object.defineProperty(this,"handleMouseLeave",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.subscription!==null&&this.subscription({leftOffset:0,date:0,isCursorOverCanvas:!1})}}),Object.defineProperty(this,"handleMouseMoveSubscribe",{enumerable:!0,configurable:!0,writable:!0,value:e=>(this.subscription=e,()=>{this.subscription=null})}),Object.defineProperty(this,"state",{enumerable:!0,configurable:!0,writable:!0,value:{subscribeToMouseOver:this.handleMouseMoveSubscribe}}),Object.defineProperty(this,"containerEl",{enumerable:!0,configurable:!0,writable:!0,value:T.createRef()}),Object.defineProperty(this,"subscription",{enumerable:!0,configurable:!0,writable:!0,value:null})}render(){return d.jsx(Kt,{value:this.state,children:d.jsxs("div",{style:Qt,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,ref:this.containerEl,children:[d.jsx(Jt,{}),this.props.children]})})}}const tr=r=>d.jsx(A,{children:({getDateFromLeftOffsetPosition:e})=>d.jsx(er,{getDateFromLeftOffsetPosition:e,...r})});class rr extends T.Component{constructor(){super(...arguments),Object.defineProperty(this,"handleMouseDown",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this.originClickX=e.clientX}}),Object.defineProperty(this,"handleMouseUp",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this.props.clickTolerance!==void 0&&Math.abs(this.originClickX-e.clientX)>this.props.clickTolerance&&(this.cancelClick=!0)}}),Object.defineProperty(this,"handleClick",{enumerable:!0,configurable:!0,writable:!0,value:e=>{this.cancelClick||this.props.onClick(e),this.cancelClick=!1,this.originClickX=null}}),Object.defineProperty(this,"originClickX",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cancelClick",{enumerable:!0,configurable:!0,writable:!0,value:!1})}render(){const e=T.Children.only(this.props.children);return T.cloneElement(e,{onMouseDown:this.handleMouseDown,onMouseUp:this.handleMouseUp,onClick:this.handleClick})}}class Ve extends T.Component{render(){const{onContextMenu:e,onDoubleClick:t,isEvenRow:i,style:s,onClick:n,clickTolerance:a,horizontalLineClassNamesForGroup:l,group:h}=this.props;let m=[];return l&&(m=l(h)),d.jsx(rr,{clickTolerance:a,onClick:n,children:d.jsx("div",{onContextMenu:e,onDoubleClick:t,className:(i?"rct-hl-even ":"rct-hl-odd ")+(m?m.join(" "):""),style:s})})}}class ir extends T.Component{shouldComponentUpdate(e){return!(e.canvasWidth===this.props.canvasWidth&&e.lineCount===this.props.lineCount&&e.groupHeights===this.props.groupHeights&&e.groups===this.props.groups)}render(){const{canvasWidth:e,lineCount:t,groupHeights:i,onRowClick:s,onRowDoubleClick:n,clickTolerance:a,groups:l,horizontalLineClassNamesForGroup:h,onRowContextClick:m}=this.props,p=[];for(let b=0;b<t;b++)p.push(d.jsx(Ve,{clickTolerance:a,onContextMenu:o=>m(o,b),onClick:o=>s(o,b),onDoubleClick:o=>n(o,b),isEvenRow:b%2===0,group:l[b],horizontalLineClassNamesForGroup:h,style:{width:`${e}px`,height:`${i[b]}px`}},`horizontal-line-${b}`));return d.jsx("div",{className:"rct-horizontal-lines",children:p})}}class sr extends T.Component{constructor(e){super(e),Object.defineProperty(this,"scrollComponent",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"dragLastPosition",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"lastTouchDistance",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"singleTouchStart",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"lastSingleTouch",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"isItemInteraction",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"handleScroll",{enumerable:!0,configurable:!0,writable:!0,value:()=>{const t=this.scrollComponent.scrollLeft;this.props.onScroll(t)}}),Object.defineProperty(this,"refHandler",{enumerable:!0,configurable:!0,writable:!0,value:t=>{this.scrollComponent=t,this.props.scrollRef(t),t&&(t.addEventListener("wheel",this.handleWheel,{passive:!1}),t.addEventListener("itemInteraction",this.handleItemInteract))}}),Object.defineProperty(this,"handleWheel",{enumerable:!0,configurable:!0,writable:!0,value:t=>{if(t.ctrlKey||t.metaKey||t.altKey){t.preventDefault();const i=ye(t.currentTarget),s=t.clientX-i.x,n=t.ctrlKey?10:t.metaKey?3:1;this.props.onWheelZoom(n,s,t.deltaY)}else t.shiftKey&&(t.preventDefault(),this.props.onScroll(this.scrollComponent.scrollLeft+(t.deltaY||t.deltaX)))}}),Object.defineProperty(this,"handleMouseDown",{enumerable:!0,configurable:!0,writable:!0,value:t=>{t.button===0&&(this.dragLastPosition=t.pageX,this.setState({isDragging:!0}))}}),Object.defineProperty(this,"handleMouseMove",{enumerable:!0,configurable:!0,writable:!0,value:t=>{this.state.isDragging&&!this.isItemInteraction&&(this.props.onScroll(this.scrollComponent.scrollLeft+this.dragLastPosition-t.pageX),this.dragLastPosition=t.pageX)}}),Object.defineProperty(this,"handleMouseUp",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.dragLastPosition=null,this.setState({isDragging:!1})}}),Object.defineProperty(this,"handleMouseLeave",{enumerable:!0,configurable:!0,writable:!0,value:()=>{this.dragLastPosition=null,this.setState({isDragging:!1})}}),Object.defineProperty(this,"handleTouchStart",{enumerable:!0,configurable:!0,writable:!0,v