@progress/kendo-react-scheduler
Version:
React Scheduler brings the functionality of Outlook's Calendar to a single UI component. KendoReact Scheduler package
9 lines (8 loc) • 4.36 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("@progress/kendo-react-common"),M=require("react"),F=require("../../hooks/useControlledState.js"),t=require("../../utils/index.js"),b=require("../../constants/index.js"),C=require("../../context/SchedulerViewContext.js"),k=require("../../context/SchedulerContext.js");function P(e){const D=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const c in e)if(c!=="default"){const l=Object.getOwnPropertyDescriptor(e,c);Object.defineProperty(D,c,l.get?l:{enumerable:!0,get:()=>e[c]})}}return D.default=e,Object.freeze(D)}const Z=P(M);var g=(e=>(e.set="RESIZE_ITEM_SET",e.start="RESIZE_ITEM_START",e.startDrag="RESIZE_ITEM_START_DRAG",e.startDragSelected="RESIZE_ITEM_START_DRAG_SELECTED",e.endDrag="RESIZE_ITEM_END_DRAG",e.endDragSelected="RESIZE_ITEM_END_DRAG_SELECTED",e.complete="RESIZE_ITEM_COMPLETE",e.completeOccurrence="RESIZE_ITEM_COMPLETE_OCCURRENCE",e.completeSeries="RESIZE_ITEM_COMPLETE_SERIES",e.reset="RESIZE_ITEM_RESET",e))(g||{});const x=(e,D)=>{const c=Z.useRef(null),[l,A]=F.useControlledState(...D),[y]=C.useSchedulerViewSelectedItemsContext(),n=k.useSchedulerFieldsContext();return[l,A,(u,R)=>{let d=l;switch(u.type){case"RESIZE_ITEM_SET":d=u.payload;break;case"RESIZE_ITEM_RESET":d=null;break;case"RESIZE_ITEM_START":{if(R.stopPropagation(),!d)return;const o=u.payload.x,a=u.payload.y,r=t.slotDive(o,a,7);if(!r||r===c.current)return;const i=r.getAttribute("data-slot-start"),E=new Date(Number(i)),s=m.clone(e.dataItem);if(E>=t.getField(s,n.end))return;t.setField(s,n.start,E),c.current=r,d=s;break}case"RESIZE_ITEM_START_DRAG_SELECTED":{R.stopPropagation();const o=u.payload.x,a=u.payload.y,r=m.clone(e.dataItem),i=t.slotDive(o,a,7);if(!i||i===c.current)return;const E=i.getAttribute("data-slot-start"),s=new Date(t.getField(r,n.start)),T=new Date(Number(E)).getTime()-s.getTime();let _=!1;const f=y.map(S=>{if(!S.current)return null;const I=m.clone(S.current.props.dataItem),p=new Date(S.current.props.start.getTime()+T);if(p>=t.getField(I,n.end)){_=!0;return}return t.setField(I,n.start,p),I}).filter(Boolean);_||(d=[...f]);break}case"RESIZE_ITEM_START_DRAG":{const o=u.payload.x,a=u.payload.y,r=t.slotDive(o,a,7);if(!r||r===c.current)return;const i=r.getAttribute("data-slot-start"),E=new Date(Number(i)),s=m.clone(e.dataItem);if(E>=s.end)return;t.setField(s,n.start,E),c.current=r,d=s;break}case"RESIZE_ITEM_END_DRAG":{const o=u.payload.x,a=u.payload.y,r=t.slotDive(o,a,7);if(!r||r===c.current)return;const i=r.getAttribute("data-slot-end"),E=new Date(Number(i)),s=m.clone(e.dataItem);if(E<=s.start)return;t.setField(s,n.end,E),c.current=r,d=s;break}case"RESIZE_ITEM_END_DRAG_SELECTED":{R.stopPropagation();const o=u.payload.x,a=u.payload.y,r=m.clone(e.dataItem),i=t.slotDive(o,a,7);if(!i||i===c.current)return;const E=i.getAttribute("data-slot-start"),s=new Date(t.getField(r,n.end)),T=new Date(Number(E)).getTime()-s.getTime();let _;const f=y.map(S=>{if(!S.current)return null;const I=m.clone(S.current.props.dataItem),p=new Date(S.current.props.end.getTime()+T);if(p<=t.getField(I,n.start)){_=!0;return}return t.setField(I,n.end,p),I}).filter(Boolean);_||(d=[...f]);break}case"RESIZE_ITEM_COMPLETE":{d=null,e.onDataAction&&l&&e.onDataAction.call(void 0,{type:b.DATA_ACTION.update,series:!1,dataItem:l});break}case"RESIZE_ITEM_COMPLETE_OCCURRENCE":{d=null,e.onDataAction&&l&&e.onDataAction.call(void 0,{type:b.DATA_ACTION.update,series:!1,dataItem:l});break}case"RESIZE_ITEM_COMPLETE_SERIES":{d=null;let o;if(Array.isArray(l))o=l.map(a=>{const r=m.clone(a);return t.setField(r,n.start,t.getField(a,n.start)),t.setField(r,n.end,t.getField(a,n.end)),r});else{const a=m.clone(l);t.setField(a,n.start,t.getField(l,n.start)),t.setField(a,n.end,t.getField(l,n.end)),o=a}e.onDataAction&&o&&e.onDataAction.call(void 0,{type:b.DATA_ACTION.update,series:!0,dataItem:o});break}default:d=null;break}A(d)}]};exports.RESIZE_ITEM_ACTION=g;exports.useResizeItem=x;