UNPKG

big-scheduler

Version:

Big scheduler is a powerful and intuitive scheduler and resource planning solution built with React. Seamlessly integrate this modern browser-compatible component into your applications to effectively manage time, appointments, and resources. With drag-a

111 lines (110 loc) 6.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useDndSource = void 0; var _reactDnd = require("react-dnd"); var _default = require("../config/default"); function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // useDndSource.js var useDndSource = exports.useDndSource = function useDndSource(resolveDragObjFunc) { var dndType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _default.DnDTypes.EVENT; var _useDrag = (0, _reactDnd.useDrag)(function () { return { type: dndType, item: function item(props) { var item = resolveDragObjFunc(props); if (!item) { console.error('beginDrag returned null or undefined.'); } return item; }, end: function end(item, monitor) { if (!monitor.didDrop()) return; var _monitor$getItem = monitor.getItem(), moveEvent = _monitor$getItem.moveEvent, newEvent = _monitor$getItem.newEvent, schedulerData = _monitor$getItem.schedulerData; var events = schedulerData.events, config = schedulerData.config, viewType = schedulerData.viewType, localeDayjs = schedulerData.localeDayjs; var dropResult = monitor.getDropResult(); var slotId = dropResult.slotId, slotName = dropResult.slotName, newStart = dropResult.start, newEnd = dropResult.end, initialStart = dropResult.initialStart; var action = 'New'; var isEvent = monitor.getItemType() === _default.DnDTypes.EVENT; if (isEvent) { var event = item; if (config.relativeMove) { newStart = localeDayjs(event.start).add(localeDayjs(newStart).diff(localeDayjs(new Date(initialStart))), 'ms').format(_default.DATETIME_FORMAT); } else if (viewType !== _default.ViewType.Day) { var tmpDayjs = localeDayjs(newStart); newStart = localeDayjs(event.start).year(tmpDayjs.year()).month(tmpDayjs.month()).date(tmpDayjs.date()).format(_default.DATETIME_FORMAT); } newEnd = localeDayjs(newStart).add(localeDayjs(event.end).diff(localeDayjs(event.start)), 'ms').format(_default.DATETIME_FORMAT); if (config.crossResourceMove === false) { slotId = schedulerData._getEventSlotId(item); slotName = undefined; var slot = schedulerData.getSlotById(slotId); if (slot) slotName = slot.name; } action = 'Move'; } var hasConflict = false; if (config.checkConflict) { var start = localeDayjs(newStart); var _end = localeDayjs(newEnd); events.forEach(function (e) { if (schedulerData._getEventSlotId(e) === slotId && (!isEvent || e.id !== item.id)) { var eStart = localeDayjs(e.start); var eEnd = localeDayjs(e.end); if (start >= eStart && start < eEnd || _end > eStart && _end <= eEnd || eStart >= start && eStart < _end || eEnd > start && eEnd <= _end) hasConflict = true; } }); } if (hasConflict) { var _monitor$getItem2 = monitor.getItem(), conflictOccurred = _monitor$getItem2.conflictOccurred; if (conflictOccurred !== undefined) { conflictOccurred(schedulerData, action, item, monitor.getItemType(), slotId, slotName, newStart, newEnd); } else { console.log('Conflict occurred, set conflictOccurred func in Scheduler to handle it'); } } else if (isEvent) { if (moveEvent !== undefined) { moveEvent(schedulerData, item, slotId, slotName, newStart, newEnd); } } else if (newEvent !== undefined) newEvent(schedulerData, slotId, slotName, newStart, newEnd, monitor.getItemType(), item); }, canDrag: function canDrag(props) { var schedulerData = props.schedulerData, resourceEvents = props.resourceEvents; var item = resolveDragObjFunc(props); if (schedulerData._isResizing()) return false; var config = schedulerData.config; return config.movable && (resourceEvents === undefined || !resourceEvents.groupOnly) && (item.movable === undefined || item.movable !== false); }, collect: function collect(monitor) { return { isDragging: monitor.isDragging() }; } }; }, [resolveDragObjFunc, dndType]), _useDrag2 = _slicedToArray(_useDrag, 2), isDragging = _useDrag2[0].isDragging, dragRef = _useDrag2[1]; return { isDragging: isDragging, dragRef: dragRef }; }; //# sourceMappingURL=DndSouceFunctional.js.map